From f30bf6beb69f392e61fd50fe05e860ab3241c033 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Thu, 30 Jun 2016 22:57:43 +0900 Subject: [PATCH 01/51] added kernel_nvme --- common/bdbm_main.c | 2 +- common/utils/umemory.c | 1 + frontend/kernel_nvme/Makefile | 114 +++++ frontend/kernel_nvme/blkdev.c | 248 ++++++++++ frontend/kernel_nvme/blkdev.h | 31 ++ frontend/kernel_nvme/blkdev_ioctl.h | 48 ++ frontend/kernel_nvme/blkio.c | 694 ++++++++++++++++++++++++++++ frontend/kernel_nvme/blkio.h | 36 ++ frontend/kernel_nvme/kmain.c | 81 ++++ frontend/kernel_nvme/log | 79 ++++ frontend/kernel_nvme/mount_ext4.sh | 14 + frontend/kernel_nvme/umount.sh | 4 + ftl/algo/block_ftl.c | 6 +- ftl/algo/page_ftl.c | 1 - ftl/ftl_params.c | 4 +- include/bdbm_drv.h | 2 +- 16 files changed, 1357 insertions(+), 8 deletions(-) create mode 100644 frontend/kernel_nvme/Makefile create mode 100644 frontend/kernel_nvme/blkdev.c create mode 100644 frontend/kernel_nvme/blkdev.h create mode 100644 frontend/kernel_nvme/blkdev_ioctl.h create mode 100644 frontend/kernel_nvme/blkio.c create mode 100644 frontend/kernel_nvme/blkio.h create mode 100644 frontend/kernel_nvme/kmain.c create mode 100644 frontend/kernel_nvme/log create mode 100755 frontend/kernel_nvme/mount_ext4.sh create mode 100755 frontend/kernel_nvme/umount.sh diff --git a/common/bdbm_main.c b/common/bdbm_main.c index 303d3af..0c05844 100644 --- a/common/bdbm_main.c +++ b/common/bdbm_main.c @@ -202,7 +202,7 @@ int bdbm_drv_run (bdbm_drv_info_t* bdi) if (bdi->ptr_llm_inf) { llm = bdi->ptr_llm_inf; if (llm->create == NULL || llm->create (bdi) != 0) { - bdbm_error ("[bdbm_drv_main] failed to create llm"); + bdbm_error ("[bdbm_drv_main] failed to create llm (%p)", llm->create); goto fail; } } diff --git a/common/utils/umemory.c b/common/utils/umemory.c index ab30c19..db764ab 100644 --- a/common/utils/umemory.c +++ b/common/utils/umemory.c @@ -26,6 +26,7 @@ THE SOFTWARE. #include #include +#include void* bdbm_malloc (size_t size) { return vzalloc (size); } void* bdbm_malloc_phy (size_t size) { return vzalloc (size); } /* for compatibility */ diff --git a/frontend/kernel_nvme/Makefile b/frontend/kernel_nvme/Makefile new file mode 100644 index 0000000..ef9bde8 --- /dev/null +++ b/frontend/kernel_nvme/Makefile @@ -0,0 +1,114 @@ +# Makefile for a RISA Device Driver +# + +FTL := ../../ftl +INCLUDE := ../../include +COMMON := ../../common +DM_COMMON := ../../devices/common + +KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers +#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers +#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/bluedbm/Module.symvers + +EXTRA_CFLAGS := \ + -I$(PWD)/$(INCLUDE) \ + -I$(PWD)/$(COMMON)/utils \ + -I$(PWD)/$(COMMON)/3rd \ + -I$(PWD)/$(FTL) \ + -I$(PWD)/$(DM_COMMON) \ + +EXTRA_CFLAGS += -D HASH_BLOOM=20 # for HASH (8KB) +EXTRA_CFLAGS += -D CONFIG_ENABLE_MSG +EXTRA_CFLAGS += -D CONFIG_ENABLE_DEBUG +EXTRA_CFLAGS += -D USE_PMU +EXTRA_CFLAGS += -D KERNEL_MODE +EXTRA_CFLAGS += -D USE_NEW_RMW + +#EXTRA_CFLAGS += -D USE_KTIMER +#EXTRA_CFLAGS += -D EMULATE_BAD_BLOCKS +#EXTRA_CFLAGS += -D USE_COMPLETION + +#bdbm_drv-y := \ + kmain.o \ + blkdev.o \ + blkio.o \ + $(FTL)/ftl_params.o \ + $(FTL)/pmu.o \ + $(FTL)/hlm_nobuf.o \ + $(FTL)/hlm_buf.o \ + $(FTL)/hlm_dftl.o \ + $(FTL)/hlm_rsd.o \ + $(FTL)/llm_noq.o \ + $(FTL)/llm_mq.o \ + $(FTL)/algo/abm.o \ + $(FTL)/algo/no_ftl.o \ + $(FTL)/algo/block_ftl.o \ + $(FTL)/algo/page_ftl.o \ + $(FTL)/algo/dftl.o \ + $(FTL)/algo/dftl_map.o \ + $(FTL)/queue/queue.o \ + $(FTL)/queue/prior_queue.o \ + $(FTL)/queue/rd_prior_queue.o \ + $(DM_COMMON)/dev_params.o \ + $(COMMON)/utils/utime.o \ + $(COMMON)/utils/ufile.o \ + $(COMMON)/utils/uthread.o \ + $(COMMON)/bdbm_main.o \ + +bdbm_drv-y := \ + kmain.o \ + blkdev.o \ + blkio.o \ + $(FTL)/ftl_params.o \ + $(FTL)/pmu.o \ + $(FTL)/hlm_nobuf.o \ + $(FTL)/llm_mq.o \ + $(FTL)/algo/abm.o \ + $(FTL)/algo/page_ftl.o \ + $(FTL)/algo/block_ftl.o \ + $(FTL)/queue/queue.o \ + $(FTL)/queue/prior_queue.o \ + $(FTL)/queue/rd_prior_queue.o \ + $(FTL)/hlm_reqs_pool.o \ + $(DM_COMMON)/dev_params.o \ + $(COMMON)/utils/utime.o \ + $(COMMON)/utils/ufile.o \ + $(COMMON)/utils/uthread.o \ + $(COMMON)/utils/umemory.o \ + $(COMMON)/bdbm_main.o \ + + +obj-m := bdbm_drv.o + +ccflags-y := -I$(src) + +export KROOT=/lib/modules/$(shell uname -r)/build + +.PHONY: default +default: modules + +.PHONY: modules +modules: + @$(MAKE) -C $(KROOT) M=$(PWD) modules + +.PHONY: modules_check +modules_check: + @$(MAKE) -C $(KROOT) C=2 M=$(PWD) modules + +.PHONY: modules_install +modules_install: + @$(MAKE) -C $(KROOT) M=$(PWD) modules_install + +.PHONY: kernel_clean +kernel_clean: + @$(MAKE) -C $(KROOT) M=$(PWD) clean + +.PHONY: clean +clean: kernel_clean + @rm -rf Module.markers modules.order + @cd ../../ftl; rm -rf *.o .*.cmd; rm -rf */*.o */.*.cmd; cd -; + @cd $(FTL); rm *.o; cd -; + @cd $(COMMON)/utils; rm *.o; cd -; + @cd $(COMMON)/3rd; rm *.o; cd -; + @cd $(DM_COMMON); rm *.o; cd -; + diff --git a/frontend/kernel_nvme/blkdev.c b/frontend/kernel_nvme/blkdev.c new file mode 100644 index 0000000..21c44f0 --- /dev/null +++ b/frontend/kernel_nvme/blkdev.c @@ -0,0 +1,248 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include +#include /* bio */ +#include +#include +#include /* mdelay */ + +#include "bdbm_drv.h" +#include "debug.h" +#include "blkdev.h" +#include "blkdev_ioctl.h" +#include "umemory.h" + + +int bdbm_blk_ioctl (struct block_device *bdev, fmode_t mode, unsigned cmd, unsigned long arg); +int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo); + +static struct bdbm_device_t { + struct gendisk *gd; + struct request_queue *queue; +} bdbm_device; + +static uint32_t bdbm_device_major_num = 0; +static struct block_device_operations bdops = { + .owner = THIS_MODULE, + .ioctl = bdbm_blk_ioctl, + .getgeo = bdbm_blk_getgeo, +}; + +extern bdbm_drv_info_t* _bdi; + +DECLARE_COMPLETION (task_completion); +static struct task_struct *task = NULL; + + +int badblock_scan_thread_fn (void* arg) +{ + bdbm_ftl_inf_t* ftl = NULL; + uint32_t ret; + + /* get the ftl */ + if ((ftl = _bdi->ptr_ftl_inf) == NULL) { + bdbm_warning ("ftl is not created"); + goto exit; + } + + /* run the bad-block scan */ + if ((ret = ftl->scan_badblocks (_bdi))) { + bdbm_msg ("scan_badblocks failed (%u)", ret); + } + +exit: + complete (&task_completion); + return 0; +} + +int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo) +{ + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (_bdi); + int nr_sectors = np->device_capacity_in_byte >> 9; + + /* NOTE: Heads * Cylinders * Sectors = # of sectors (512B) in SSDs */ + geo->heads = 16; + geo->cylinders = 1024; + geo->sectors = nr_sectors / (geo->heads * geo->cylinders); + if (geo->heads * geo->cylinders * geo->sectors != nr_sectors) { + bdbm_warning ("bdbm_blk_getgeo: heads=%d, cylinders=%d, sectors=%d (total sectors=%d)", + geo->heads, + geo->cylinders, + geo->sectors, + nr_sectors); + return 1; + } + return 0; +} + +int bdbm_blk_ioctl ( + struct block_device *bdev, + fmode_t mode, + unsigned cmd, + unsigned long arg) +{ + struct hd_geometry geo; + struct gendisk *disk = bdev->bd_disk; + int ret; + + switch (cmd) { + case HDIO_GETGEO: + case HDIO_GETGEO_BIG: + case HDIO_GETGEO_BIG_RAW: + if (!arg) { + bdbm_warning ("invalid argument"); + return -EINVAL; + } + if (!disk->fops->getgeo) { + bdbm_warning ("disk->fops->getgeo is NULL"); + return -ENOTTY; + } + + bdbm_memset(&geo, 0, sizeof(geo)); + geo.start = get_start_sect(bdev); + ret = disk->fops->getgeo(bdev, &geo); + if (ret) { + bdbm_warning ("disk->fops->getgeo returns (%d)", ret); + return ret; + } + if (copy_to_user((struct hd_geometry __user *)arg, &geo, sizeof(geo))) { + bdbm_warning ("copy_to_user failed"); + return -EFAULT; + } + break; + + case BDBM_BADBLOCK_SCAN: + bdbm_msg ("Get a BDBM_BADBLOCK_SCAN command: %u (%X)", cmd, cmd); + + if (task != NULL) { + bdbm_msg ("badblock_scan_thread is running"); + } else { + /* create thread */ + if ((task = kthread_create (badblock_scan_thread_fn, NULL, "badblock_scan_thread")) == NULL) { + bdbm_msg ("badblock_scan_thread failed to create"); + } else { + wake_up_process (task); + } + } + break; + + case BDBM_BADBLOCK_SCAN_CHECK: + /* check the status of the thread */ + if (task == NULL) { + bdbm_msg ("badblock_scan_thread is not created..."); + ret = 1; /* done */ + copy_to_user ((int*)arg, &ret, sizeof (int)); + break; + } + + /* is it still running? */ + if (!bdbm_try_wait_for_completion (task_completion)) { + ret = 0; /* still running */ + copy_to_user ((int*)arg, &ret, sizeof (int)); + break; + } + ret = 1; /* done */ + + /* reinit some variables */ + task = NULL; + copy_to_user ((int*)arg, &ret, sizeof (int)); + bdbm_reinit_completion (task_completion); + break; + +#if 0 + case BDBM_GET_PHYADDR: + break; +#endif + + default: + /*bdbm_msg ("unknown bdm_blk_ioctl: %u (%X)", cmd, cmd);*/ + break; + } + + return 0; +} + +uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) +{ + /* create a blk queue */ + if (!(bdbm_device.queue = blk_alloc_queue (GFP_KERNEL))) { + bdbm_error ("blk_alloc_queue failed"); + return -ENOMEM; + } + blk_queue_make_request (bdbm_device.queue, fn); + blk_queue_logical_block_size (bdbm_device.queue, bdi->parm_ftl.kernel_sector_size); + blk_queue_io_min (bdbm_device.queue, bdi->parm_dev.page_main_size); + blk_queue_io_opt (bdbm_device.queue, bdi->parm_dev.page_main_size); + /*blk_limits_max_hw_sectors (&bdbm_device.queue->limits, 16);*/ + + /* see if a TRIM command is used or not */ + if (bdi->parm_ftl.trim == TRIM_ENABLE) { + bdbm_device.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; + bdbm_device.queue->limits.max_discard_sectors = UINT_MAX; + /*bdbm_device.queue->limits.discard_zeroes_data = 1;*/ + queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, bdbm_device.queue); + bdbm_msg ("TRIM is enabled"); + } else { + bdbm_msg ("TRIM is disabled"); + } + + /* register a blk device */ + if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, "blueDBM")) < 0) { + bdbm_msg ("register_blkdev failed (%d)", bdbm_device_major_num); + return bdbm_device_major_num; + } + if (!(bdbm_device.gd = alloc_disk (1))) { + bdbm_msg ("alloc_disk failed"); + unregister_blkdev (bdbm_device_major_num, "blueDBM"); + return -ENOMEM; + } + bdbm_device.gd->major = bdbm_device_major_num; + bdbm_device.gd->first_minor = 0; + bdbm_device.gd->fops = &bdops; + bdbm_device.gd->queue = bdbm_device.queue; + bdbm_device.gd->private_data = NULL; + strcpy (bdbm_device.gd->disk_name, "blueDBM"); + + { + uint64_t capacity; + //capacity = bdi->parm_dev.device_capacity_in_byte * 0.9; + capacity = bdi->parm_dev.device_capacity_in_byte; + capacity = (capacity / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); + } + add_disk (bdbm_device.gd); + + return 0; +} + +void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) +{ + /* unregister a BlueDBM device driver */ + del_gendisk (bdbm_device.gd); + put_disk (bdbm_device.gd); + unregister_blkdev (bdbm_device_major_num, "blueDBM"); + blk_cleanup_queue (bdbm_device.queue); +} + diff --git a/frontend/kernel_nvme/blkdev.h b/frontend/kernel_nvme/blkdev.h new file mode 100644 index 0000000..b700b72 --- /dev/null +++ b/frontend/kernel_nvme/blkdev.h @@ -0,0 +1,31 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#ifndef _BLUEDBM_HOST_BLKDEV_H +#define _BLUEDBM_HOST_BLKDEV_H + +uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn); +void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi); + +#endif diff --git a/frontend/kernel_nvme/blkdev_ioctl.h b/frontend/kernel_nvme/blkdev_ioctl.h new file mode 100644 index 0000000..eafc7fd --- /dev/null +++ b/frontend/kernel_nvme/blkdev_ioctl.h @@ -0,0 +1,48 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#ifndef _BLUEDBM_IOCTL_H +#define _BLUEDBM_IOCTL_H + +#define BDBM_BADBLOCK_SCAN _IOR(0, 0, int) +#define BDBM_BADBLOCK_SCAN_CHECK _IOR(0, 1, int) +/*#define BDBM_GET_PHYADDR _IOR(0, 2, struct phyaddr)*/ + +#ifdef MODULE +/* kernel module */ + +#ifndef HDIO_GETGEO_BIG /* for backward-compatibility */ +#define HDIO_GETGEO_BIG 0x330 +#endif + +#ifndef HDIO_GETGEO_BIG_RAW +#define HDIO_GETGEO_BIG_RAW 0x331 +#endif + +int bdbm_blk_ioctl (struct block_device *bdev, fmode_t mode, unsigned cmd, unsigned long arg); +int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo); + +#endif /* MODULE */ + +#endif /* _BLUEDBM_IOCTL_H */ diff --git a/frontend/kernel_nvme/blkio.c b/frontend/kernel_nvme/blkio.c new file mode 100644 index 0000000..a604b10 --- /dev/null +++ b/frontend/kernel_nvme/blkio.c @@ -0,0 +1,694 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include +#include /* bio */ + +#include "bdbm_drv.h" +#include "debug.h" +#include "umemory.h" +#include "params.h" +#include "utime.h" +#include "uthread.h" + +#include "blkio.h" +#include "blkdev.h" +#include "blkdev_ioctl.h" + +#include "hlm_reqs_pool.h" + +/*#define ENABLE_DISPLAY*/ + +extern bdbm_drv_info_t* _bdi; + +bdbm_host_inf_t _blkio_inf = { + .ptr_private = NULL, + .open = blkio_open, + .close = blkio_close, + .make_req = blkio_make_req, + .end_req = blkio_end_req, +}; + +typedef struct { + bdbm_sema_t host_lock; + atomic_t nr_host_reqs; + bdbm_hlm_reqs_pool_t* hlm_reqs_pool; +} bdbm_blkio_private_t; + + +/* This is a call-back function invoked by a block-device layer */ +static bdbm_blkio_req_t* __get_blkio_req (struct bio *bio) +{ + struct bio_vec bvec; + struct bvec_iter iter; + bdbm_blkio_req_t* br = (bdbm_blkio_req_t*)bdbm_malloc_atomic (sizeof (bdbm_blkio_req_t)); + + /* check the pointer */ + if (br == NULL) + goto fail; + + /* get the type of the bio request */ + if (bio->bi_rw & REQ_DISCARD) + br->bi_rw = REQTYPE_TRIM; + else if (bio_data_dir (bio) == READ || bio_data_dir (bio) == READA) + br->bi_rw = REQTYPE_READ; + else if (bio_data_dir (bio) == WRITE) + br->bi_rw = REQTYPE_WRITE; + else { + bdbm_error ("oops! invalid request type (bi->bi_rw = %lx)", bio->bi_rw); + goto fail; + } + + /* get the offset and the length of the bio */ + br->bi_offset = bio->bi_iter.bi_sector; + br->bi_size = bio_sectors (bio); + br->bi_bvec_cnt = 0; + br->bio = (void*)bio; + + /* get the data from the bio */ + if (br->bi_rw != REQTYPE_TRIM) { + bio_for_each_segment (bvec, bio, iter) { + br->bi_bvec_ptr[br->bi_bvec_cnt] = (uint8_t*)page_address (bvec.bv_page); + br->bi_bvec_cnt++; + + if (br->bi_bvec_cnt >= BDBM_BLKIO_MAX_VECS) { + /* NOTE: this is an impossible case unless kernel parameters are changed */ + bdbm_error ("oops! # of vectors in bio is larger than %u %llu", + BDBM_BLKIO_MAX_VECS, br->bi_bvec_cnt); + goto fail; + } + } + } + + return br; + +fail: + if (br) + bdbm_free_atomic (br); + return NULL; +} + +static void __free_blkio_req (bdbm_blkio_req_t* br) +{ + if (br) + bdbm_free_atomic (br); +} + +//static void __host_blkio_make_request_fn ( +static blk_qc_t __host_blkio_make_request_fn ( + struct request_queue *q, + struct bio *bio) +{ + blkio_make_req (_bdi, (void*)bio); + return BLK_QC_T_NONE; /* for no polling */ +} + + +uint32_t blkio_open (bdbm_drv_info_t* bdi) +{ + uint32_t ret; + bdbm_blkio_private_t* p; + int mapping_unit_size; + + /* create a private data structure */ + if ((p = (bdbm_blkio_private_t*)bdbm_malloc (sizeof (bdbm_blkio_private_t))) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + return 1; + } + bdbm_sema_init (&p->host_lock); + atomic_set (&p->nr_host_reqs, 0); + bdi->ptr_host_inf->ptr_private = (void*)p; + + /* create hlm_reqs pool */ + if (bdi->parm_dev.nr_subpages_per_page == 1) + mapping_unit_size = bdi->parm_dev.page_main_size; + else + mapping_unit_size = KERNEL_PAGE_SIZE; + + if ((p->hlm_reqs_pool = bdbm_hlm_reqs_pool_create ( + mapping_unit_size, /* mapping unit */ + bdi->parm_dev.page_main_size /* io unit */ + )) == NULL) { + bdbm_warning ("bdbm_hlm_reqs_pool_create () failed"); + return 1; + } + + /* register blueDBM */ + if ((ret = host_blkdev_register_device + (bdi, __host_blkio_make_request_fn)) != 0) { + bdbm_error ("failed to register blueDBM"); + bdbm_free (p); + return 1; + } + + return 0; +} + +void blkio_close (bdbm_drv_info_t* bdi) +{ + bdbm_blkio_private_t* p = BDBM_HOST_PRIV (bdi); + + /* wait until requests to finish */ + if (atomic_read (&p->nr_host_reqs) > 0) { + bdbm_thread_yield (); + } + + /* close hlm_reqs pool */ + if (p->hlm_reqs_pool) { + bdbm_hlm_reqs_pool_destroy (p->hlm_reqs_pool); + } + + /* unregister a block device */ + host_blkdev_unregister_block_device (bdi); + + /* free private */ + bdbm_free (p); +} + +void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) +{ + bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); + bdbm_blkio_req_t* br = NULL; + bdbm_hlm_req_t* hr = NULL; + + /* get blkio */ + if ((br = __get_blkio_req ((struct bio*)bio)) == NULL) { + bdbm_error ("__get_blkio_req () failed"); + goto fail; + } + + /* get a free hlm_req from the hlm_reqs_pool */ + if ((hr = bdbm_hlm_reqs_pool_get_item (p->hlm_reqs_pool)) == NULL) { + bdbm_error ("bdbm_hlm_reqs_pool_get_item () failed"); + goto fail; + } + + /* build hlm_req with bio */ + if (bdbm_hlm_reqs_pool_build_req (p->hlm_reqs_pool, hr, br) != 0) { + bdbm_error ("bdbm_hlm_reqs_pool_build_req () failed"); + goto fail; + } + + /* lock a global mutex -- this function must be finished as soon as possible */ + bdbm_sema_lock (&p->host_lock); + + /* if success, increase # of host reqs */ + atomic_inc (&p->nr_host_reqs); + + /* NOTE: it would be possible that 'hlm_req' becomes NULL + * if 'bdi->ptr_hlm_inf->make_req' is success. */ + if (bdi->ptr_hlm_inf->make_req (bdi, hr) != 0) { + /* oops! something wrong */ + bdbm_error ("'bdi->ptr_hlm_inf->make_req' failed"); + + /* cancel the request */ + atomic_dec (&p->nr_host_reqs); + } + + /* ulock a global mutex */ + bdbm_sema_unlock (&p->host_lock); + + return; + +fail: + if (hr) + bdbm_hlm_reqs_pool_free_item (p->hlm_reqs_pool, hr); + if (br) + __free_blkio_req (br); +} + +void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) +{ + bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); + bdbm_blkio_req_t* br = (bdbm_blkio_req_t*)hr->blkio_req; + + /* end bio */ + if (hr->ret == 0) + bio_endio ((struct bio*)br->bio); + else { + bdbm_warning ("oops! make_req () failed with %d", hr->ret); + bio_io_error ((struct bio*)br->bio); + } + + /* free blkio_req */ + __free_blkio_req (br); + + /* destroy hlm_req */ + bdbm_hlm_reqs_pool_free_item (p->hlm_reqs_pool, hr); + + /* decreate # of reqs */ + atomic_dec (&p->nr_host_reqs); +} + + +#if 0 + +bdbm_host_inf_t _blkio_inf = { + .ptr_private = NULL, + .open = blkio_open, + .close = blkio_close, + .make_req = blkio_make_req, + .end_req = blkio_end_req, +}; + +typedef struct { + bdbm_sema_t host_lock; + atomic64_t nr_reqs; +} bdbm_blkio_private_t; + + + +/* This is a call-back function invoked by a block-device layer */ +static void __host_blkio_make_request_fn ( + struct request_queue *q, + struct bio *bio) +{ + blkio_make_req (_bdi, (void*)bio); +} + +static bdbm_hlm_req_t* __blkio_create_hlm_trim_req ( + bdbm_drv_info_t* bdi, + struct bio* bio) +{ + bdbm_hlm_req_t* hlm_req = NULL; + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + bdbm_ftl_params* dp = BDBM_GET_DRIVER_PARAMS (bdi); + uint64_t nr_secs_per_fp = 0; + + nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; + + /* create bdbm_hm_req_t */ + if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic + (sizeof (bdbm_hlm_req_t))) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + return NULL; + } + + /* make a high-level request for TRIM */ + hlm_req->req_type = REQTYPE_TRIM; + + if (dp->mapping_type == MAPPING_POLICY_SEGMENT) { + hlm_req->lpa = bio->bi_sector / nr_secs_per_fp; + hlm_req->len = bio_sectors (bio) / nr_secs_per_fp; + if (hlm_req->len == 0) + hlm_req->len = 1; + } else { + hlm_req->lpa = (bio->bi_sector + nr_secs_per_fp - 1) / nr_secs_per_fp; + if ((hlm_req->lpa * nr_secs_per_fp - bio->bi_sector) > bio_sectors (bio)) { + bdbm_error ("'hlm_req->lpa (%llu) * nr_secs_per_fp (%llu) - bio->bi_sector (%lu)' (%llu) > bio_sectors (bio) (%u)", + hlm_req->lpa, nr_secs_per_fp, bio->bi_sector, + hlm_req->lpa * nr_secs_per_fp - bio->bi_sector, + bio_sectors (bio)); + hlm_req->len = 0; + } else { + hlm_req->len = + (bio_sectors (bio) - (hlm_req->lpa * nr_secs_per_fp - bio->bi_sector)) / nr_secs_per_fp; + } + } + hlm_req->nr_done_reqs = 0; + hlm_req->kpg_flags = NULL; + hlm_req->pptr_kpgs = NULL; /* no data */ + hlm_req->ptr_host_req = (void*)bio; + hlm_req->ret = 0; + + return hlm_req; +} + +static bdbm_hlm_req_t* __blkio_create_hlm_rw_req ( + bdbm_drv_info_t* bdi, + struct bio* bio) +{ + struct bio_vec *bvec = NULL; + bdbm_hlm_req_t* hlm_req = NULL; + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + + uint32_t loop = 0; + uint32_t kpg_loop = 0; + uint32_t bvec_offset = 0; + uint64_t nr_secs_per_fp = 0; + uint64_t nr_secs_per_kp = 0; + uint32_t nr_kp_per_fp = 0; + + /* get # of sectors per flash page */ + nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; + nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; + nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ + + /* create bdbm_hm_req_t */ + if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic + (sizeof (bdbm_hlm_req_t))) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + return NULL; + } + + /* get a bio direction */ + if (bio_data_dir (bio) == READ || bio_data_dir (bio) == READA) { + hlm_req->req_type = REQTYPE_READ; + } else if (bio_data_dir (bio) == WRITE) { + hlm_req->req_type = REQTYPE_WRITE; + } else { + bdbm_error ("the direction of a bio is invalid (%lu)", bio_data_dir (bio)); + goto fail_req; + } + + /* make a high-level request for READ or WRITE */ + hlm_req->lpa = (bio->bi_sector / nr_secs_per_fp); + hlm_req->len = (bio->bi_sector + bio_sectors (bio) + nr_secs_per_fp - 1) / nr_secs_per_fp - hlm_req->lpa; + hlm_req->nr_done_reqs = 0; + hlm_req->ptr_host_req = (void*)bio; + hlm_req->ret = 0; + /*bdbm_spin_lock_init (&hlm_req->lock);*/ + if ((hlm_req->pptr_kpgs = (uint8_t**)bdbm_malloc_atomic + (sizeof(uint8_t*) * hlm_req->len * nr_kp_per_fp)) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + goto fail_req; + } + if ((hlm_req->kpg_flags = (uint8_t*)bdbm_malloc_atomic + (sizeof(uint8_t) * hlm_req->len * nr_kp_per_fp)) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + goto fail_flags; + } + /* kpg_flags is set to MEMFLAG_NOT_SET (0) */ + + /* get or alloc pages */ + bio_for_each_segment (bvec, bio, loop) { + /* check some error cases */ + if (bvec->bv_offset != 0) { + bdbm_warning ("'bv_offset' is not 0 (%d)", bvec->bv_offset); + /*goto fail_grab_pages;*/ + } + +next_kpg: + /* assign a new page */ + if ((hlm_req->lpa * nr_kp_per_fp + kpg_loop) != (bio->bi_sector + bvec_offset) / nr_secs_per_kp) { + hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); + hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; + kpg_loop++; + goto next_kpg; + } + + if ((hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)page_address (bvec->bv_page)) != NULL) { + hlm_req->kpg_flags[kpg_loop] = MEMFLAG_KMAP_PAGE; + } else { + bdbm_error ("kmap failed"); + goto fail_grab_pages; + } + + bvec_offset += nr_secs_per_kp; + kpg_loop++; + } + + /* get additional free pages if necessary */ + while (kpg_loop < hlm_req->len * nr_kp_per_fp) { + hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); + hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; + kpg_loop++; + } + + return hlm_req; + +fail_grab_pages: + /* release grabbed pages */ + for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { + if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE) { + bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); + } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE) { + } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { + bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); + } + } + bdbm_free_atomic (hlm_req->kpg_flags); + +fail_flags: + bdbm_free_atomic (hlm_req->pptr_kpgs); + +fail_req: + bdbm_free_atomic (hlm_req); + + return NULL; +} + +static bdbm_hlm_req_t* __blkio_create_hlm_req ( + bdbm_drv_info_t* bdi, + struct bio* bio) +{ + bdbm_hlm_req_t* hlm_req = NULL; + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + uint64_t nr_secs_per_kp = 0; + + /* get # of sectors per flash page */ + nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; + + /* see if some error cases */ + if (bio->bi_sector % nr_secs_per_kp != 0) { + bdbm_warning ("kernel pages are not aligned with disk sectors (%lu mod %llu != 0)", + bio->bi_sector , nr_secs_per_kp); + /* go ahead */ + } + if (KERNEL_PAGE_SIZE > np->page_main_size) { + bdbm_error ("kernel page (%lu) is larger than flash page (%llu)", + KERNEL_PAGE_SIZE, np->page_main_size); + return NULL; + } + + /* create 'hlm_req' */ + if (bio->bi_rw & REQ_DISCARD) { + /* make a high-level request for TRIM */ + hlm_req = __blkio_create_hlm_trim_req (bdi, bio); + } else { + /* make a high-level request for READ or WRITE */ + hlm_req = __blkio_create_hlm_rw_req (bdi, bio); + } + + /* start a stopwatch */ + if (hlm_req) { + bdbm_stopwatch_start (&hlm_req->sw); + } + + return hlm_req; +} + +static void __blkio_delete_hlm_req ( + bdbm_drv_info_t* bdi, + bdbm_hlm_req_t* hlm_req) +{ + bdbm_device_params_t* np = NULL; + uint32_t kpg_loop = 0; + uint32_t nr_kp_per_fp = 0; + + np = BDBM_GET_DEVICE_PARAMS (bdi); + nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ + + /* temp */ + if (hlm_req->org_pptr_kpgs) { + hlm_req->pptr_kpgs = hlm_req->org_pptr_kpgs; + hlm_req->kpg_flags = hlm_req->org_kpg_flags; + hlm_req->lpa--; + hlm_req->len++; + } + /* end */ + + /* free or unmap pages */ + if (hlm_req->kpg_flags != NULL && hlm_req->pptr_kpgs != NULL) { + for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { + if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE_DONE) { + bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); + } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE_DONE) { + } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { + bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); + } + } + } + + /* release other stuff */ + if (hlm_req->kpg_flags != NULL) + bdbm_free_atomic (hlm_req->kpg_flags); + if (hlm_req->pptr_kpgs != NULL) + bdbm_free_atomic (hlm_req->pptr_kpgs); + bdbm_free_atomic (hlm_req); +} + +#ifdef ENABLE_DISPLAY +static void __blkio_display_req ( + bdbm_drv_info_t* bdi, + bdbm_hlm_req_t* hlm_req) +{ + bdbm_ftl_inf_t* ftl = (bdbm_ftl_inf_t*)BDBM_GET_FTL_INF(bdi); + uint64_t seg_no = 0; + + if (ftl->get_segno) { + seg_no = ftl->get_segno (bdi, hlm_req->lpa); + } + + switch (hlm_req->req_type) { + case REQTYPE_TRIM: + bdbm_msg ("[%llu] TRIM\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); + break; + case REQTYPE_READ: + bdbm_msg ("[%llu] READ\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); + break; + case REQTYPE_WRITE: + bdbm_msg ("[%llu] WRITE\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); + break; + default: + bdbm_error ("invalid REQTYPE (%u)", hlm_req->req_type); + break; + } +} +#endif + +uint32_t blkio_open (bdbm_drv_info_t* bdi) +{ + uint32_t ret; + bdbm_blkio_private_t* p; + + /* create a private data structure */ + if ((p = (bdbm_blkio_private_t*)bdbm_malloc_atomic + (sizeof (bdbm_blkio_private_t))) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + return 1; + } + bdbm_sema_init (&p->host_lock); + atomic64_set (&p->nr_reqs, 0); + bdi->ptr_host_inf->ptr_private = (void*)p; + + /* register blueDBM */ + if ((ret = host_blkdev_register_device + (bdi, __host_blkio_make_request_fn)) != 0) { + bdbm_error ("failed to register blueDBM"); + bdbm_free_atomic (p); + return 1; + } + + return 0; +} + +void blkio_close (bdbm_drv_info_t* bdi) +{ + bdbm_blkio_private_t* p = NULL; + + p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); + + /* wait for host reqs to finish */ + bdbm_msg ("wait for host reqs to finish"); + while (1) { + if (atomic64_read (&p->nr_reqs) == 0) + break; + schedule (); /* sleep */ + } + + /* unregister a block device */ + host_blkdev_unregister_block_device (bdi); + + /* free private */ + bdbm_free_atomic (p); +} + +void blkio_make_req (bdbm_drv_info_t* bdi, void* req) +{ + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); + bdbm_hlm_req_t* hlm_req = NULL; + struct bio* bio = (struct bio*)req; + + /* lock a global mutex -- this function must be finished as soon as possible */ + bdbm_sema_lock (&p->host_lock); + + /* see if the address range of bio is beyond storage space */ + if (bio->bi_sector + bio_sectors (bio) > np->device_capacity_in_byte / KERNEL_SECTOR_SIZE) { + bdbm_sema_unlock (&p->host_lock); + bdbm_error ("bio is beyond storage space (%lu > %llu)", + bio->bi_sector + bio_sectors (bio), + np->device_capacity_in_byte / KERNEL_SECTOR_SIZE); + bio_io_error (bio); + return; + } + + /* create a hlm_req using a bio */ + if ((hlm_req = __blkio_create_hlm_req (bdi, bio)) == NULL) { + bdbm_sema_unlock (&p->host_lock); + bdbm_error ("the creation of hlm_req failed"); + bio_io_error (bio); + return; + } + +#ifdef ENABLE_DISPLAY + /* display req info */ + __blkio_display_req (bdi, hlm_req); +#endif + + /* if success, increase # of host reqs before sending the request to hlm */ + atomic64_inc (&p->nr_reqs); + + /* NOTE: it would be possible that 'hlm_req' becomes NULL + * if 'bdi->ptr_hlm_inf->make_req' is success. */ + if (bdi->ptr_hlm_inf->make_req (bdi, hlm_req) != 0) { + bdbm_error ("'bdi->ptr_hlm_inf->make_req' failed"); + + /* decreate # of reqs */ + atomic64_dec (&p->nr_reqs); + if (atomic64_read (&p->nr_reqs) < 0) { + bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); + } + + /* finish a bio */ + __blkio_delete_hlm_req (bdi, hlm_req); + bio_io_error (bio); + } + + bdbm_sema_unlock (&p->host_lock); +} + +void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hlm_req) +{ + uint32_t ret; + struct bio* bio = NULL; + bdbm_blkio_private_t* p = NULL; + + /* unlock hlm_req's lock if it is available */ + if (hlm_req->done) + bdbm_sema_unlock (hlm_req->done); + + /* get a bio from hlm_req */ + bio = (struct bio*)hlm_req->ptr_host_req; + p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); + ret = hlm_req->ret; + + /* destroy hlm_req */ + __blkio_delete_hlm_req (bdi, hlm_req); + + /* get the result and end a bio */ + if (bio != NULL) { + if (ret == 0) bio_endio (bio, 0); + else bio_io_error (bio); + } + + /* decreate # of reqs */ + atomic64_dec (&p->nr_reqs); + if (atomic64_read (&p->nr_reqs) < 0) { + bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); + } +} + +#endif diff --git a/frontend/kernel_nvme/blkio.h b/frontend/kernel_nvme/blkio.h new file mode 100644 index 0000000..1e896f9 --- /dev/null +++ b/frontend/kernel_nvme/blkio.h @@ -0,0 +1,36 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#ifndef _BLUEDBM_HOST_BLOCKIO_H +#define _BLUEDBM_HOST_BLOCKIO_H + +extern bdbm_host_inf_t _blkio_inf; + +uint32_t blkio_open (bdbm_drv_info_t* bdi); +void blkio_close (bdbm_drv_info_t* bdi); +void blkio_make_req (bdbm_drv_info_t* bdi, void* req); +void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req); + +#endif + diff --git a/frontend/kernel_nvme/kmain.c b/frontend/kernel_nvme/kmain.c new file mode 100644 index 0000000..5fd7e40 --- /dev/null +++ b/frontend/kernel_nvme/kmain.c @@ -0,0 +1,81 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include +#include + +#include "bdbm_drv.h" +#include "debug.h" +#include "blkio.h" +#include "devices.h" + +bdbm_drv_info_t* _bdi = NULL; + +static int __init bdbm_drv_init (void) +{ + /* create bdi with default parameters */ + if ((_bdi = bdbm_drv_create ()) == NULL) { + bdbm_error ("[kmain] bdbm_drv_create () failed"); + return -ENXIO; + } + + /* open the device */ + if (bdbm_dm_init (_bdi) != 0) { + bdbm_error ("[kmain] bdbm_dm_init () failed"); + return -ENXIO; + } + + /* attach the host & the device interface to the bdbm */ + if (bdbm_drv_setup (_bdi, &_blkio_inf, bdbm_dm_get_inf (_bdi)) != 0) { + bdbm_error ("[kmain] bdbm_drv_setup () failed"); + return -ENXIO; + } + + /* run it */ + if (bdbm_drv_run (_bdi) != 0) { + bdbm_error ("[kmain] bdbm_drv_run () failed"); + return -ENXIO; + } + + return 0; +} + +static void __exit bdbm_drv_exit(void) +{ + /* stop running layers */ + bdbm_drv_close (_bdi); + + /* close the device */ + bdbm_dm_exit (_bdi); + + /* remove bdbm_drv */ + bdbm_drv_destroy (_bdi); +} + +MODULE_AUTHOR ("Sungjin Lee "); +MODULE_DESCRIPTION ("BlueDBM Device Driver"); +MODULE_LICENSE ("GPL"); + +module_init (bdbm_drv_init); +module_exit (bdbm_drv_exit); diff --git a/frontend/kernel_nvme/log b/frontend/kernel_nvme/log new file mode 100644 index 0000000..04a65ab --- /dev/null +++ b/frontend/kernel_nvme/log @@ -0,0 +1,79 @@ +make[1]: Entering directory '/usr/src/linux-headers-4.5.3-040503-generic' + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/kmain.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/blkdev.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/blkio.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/ftl_params.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/pmu.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/hlm_nobuf.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/llm_mq.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/abm.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.o +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c: In function ‘bdbm_page_ftl_create’: +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c:209:18: warning: unused variable ‘j’ [-Wunused-variable] + uint32_t i = 0, j = 0; + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c:209:11: warning: unused variable ‘i’ [-Wunused-variable] + uint32_t i = 0, j = 0; + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c: At top level: +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c:1165:13: warning: ‘__bdbm_page_mark_it_dead’ defined but not used [-Wunused-function] + static void __bdbm_page_mark_it_dead ( + ^ + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.o +In file included from include/linux/printk.h:6:0, + from include/linux/kernel.h:13, + from include/linux/list.h:8, + from include/linux/module.h:9, + from /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:26: +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: In function ‘__bdbm_block_ftl_is_allocated’: +include/linux/kern_levels.h:4:18: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘uint64_t {aka long long unsigned int}’ [-Wformat=] + #define KERN_SOH "\001" /* ASCII Start Of Header */ + ^ +include/linux/kern_levels.h:13:19: note: in expansion of macro ‘KERN_SOH’ + #define KERN_INFO KERN_SOH "6" /* informational */ + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../include/debug.h:32:11: note: in expansion of macro ‘KERN_INFO’ + printk(KERN_INFO "bdbm: " fmt "\n", ##__VA_ARGS__); \ + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:342:3: note: in expansion of macro ‘bdbm_msg’ + bdbm_msg ("oops! # of allocated blocks per segment must be 0 or %d (%d)", + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: In function ‘bdbm_block_ftl_get_free_ppa’: +include/linux/kern_levels.h:4:18: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int64_t {aka long long int}’ [-Wformat=] + #define KERN_SOH "\001" /* ASCII Start Of Header */ + ^ +include/linux/kern_levels.h:13:19: note: in expansion of macro ‘KERN_SOH’ + #define KERN_INFO KERN_SOH "6" /* informational */ + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../include/debug.h:32:11: note: in expansion of macro ‘KERN_INFO’ + printk(KERN_INFO "bdbm: " fmt "\n", ##__VA_ARGS__); \ + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:466:4: note: in expansion of macro ‘bdbm_msg’ + bdbm_msg ("[%llu] [OVERWRITE] this should not occur (rw_pg_ofs:%d page_ofs:%llu)", + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: In function ‘__bdbm_block_ftl_do_gc_block_merge’: +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:885:14: warning: unused variable ‘k’ [-Wunused-variable] + uint64_t j, k, nr_valid_pgs = 0, nr_trim_pgs = 0; + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: At top level: +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:1149:13: warning: ‘__bdbm_block_mark_it_dead’ defined but not used [-Wunused-function] + static void __bdbm_block_mark_it_dead ( + ^ + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/queue/queue.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/queue/prior_queue.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/queue/rd_prior_queue.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/hlm_reqs_pool.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../devices/common/dev_params.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/utime.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/ufile.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/uthread.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/umemory.o + LD [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.o + Building modules, stage 2. + MODPOST 1 modules +WARNING: "bdbm_dm_init" [/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko] undefined! +WARNING: "bdbm_dm_exit" [/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko] undefined! +WARNING: "bdbm_dm_get_inf" [/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko] undefined! + CC /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.mod.o + LD [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko +make[1]: Leaving directory '/usr/src/linux-headers-4.5.3-040503-generic' diff --git a/frontend/kernel_nvme/mount_ext4.sh b/frontend/kernel_nvme/mount_ext4.sh new file mode 100755 index 0000000..2aa2bc6 --- /dev/null +++ b/frontend/kernel_nvme/mount_ext4.sh @@ -0,0 +1,14 @@ +sudo mkdir -p /usr/share/bdbm_drv +sudo touch /usr/share/bdbm_drv/ftl.dat +sudo touch /usr/share/bdbm_drv/dm.dat + +sudo insmod risa_dev_ramdrive.ko +#sudo insmod risa_dev_ramdrive_timing.ko +#sudo insmod risa_dev_ramdrive_intr.ko +#sudo insmod risa_dev_bluedbm.ko +#sudo insmod bdbm_drv_page.ko +sudo insmod bdbm_drv.ko +sudo ./bdbm_format /dev/blueDBM +sudo mkfs -t ext4 -b 4096 /dev/blueDBM +sudo mount \-t ext4 \-o discard /dev/blueDBM /media/blueDBM +#sudo mount \-t ext4 /dev/blueDBM /media/blueDBM diff --git a/frontend/kernel_nvme/umount.sh b/frontend/kernel_nvme/umount.sh new file mode 100755 index 0000000..14f0fc4 --- /dev/null +++ b/frontend/kernel_nvme/umount.sh @@ -0,0 +1,4 @@ +sudo umount /media/blueDBM +sudo rmmod bdbm_drv +sudo rmmod risa_dev_* +sudo rmmod f2fs diff --git a/ftl/algo/block_ftl.c b/ftl/algo/block_ftl.c index e26803d..7229424 100644 --- a/ftl/algo/block_ftl.c +++ b/ftl/algo/block_ftl.c @@ -339,7 +339,7 @@ uint32_t __bdbm_block_ftl_is_allocated ( if (nr_alloc_blks != 0 && nr_alloc_blks != p->nr_blks_per_seg) { - bdbm_msg ("oops! # of allocated blocks per segment must be 0 or %d (%d)", + bdbm_msg ("oops! # of allocated blocks per segment must be 0 or %llu (%d)", p->nr_blks_per_seg, nr_alloc_blks); bdbm_bug_on (1); } @@ -463,7 +463,7 @@ uint32_t bdbm_block_ftl_get_free_ppa ( bdbm_msg("[%llu] [OVERWRITE] %llu %llu", segment_no, p->nr_trim_pgs[segment_no], p->nr_valid_pgs[segment_no]); - bdbm_msg ("[%llu] [OVERWRITE] this should not occur (rw_pg_ofs:%d page_ofs:%llu)", + bdbm_msg ("[%llu] [OVERWRITE] this should not occur (rw_pg_ofs:%llu page_ofs:%llu)", segment_no, e->rw_pg_ofs, page_ofs); bdbm_msg ("[%llu] [# of trimmed pages = %llu, lpa = %llu", @@ -882,7 +882,7 @@ uint32_t __bdbm_block_ftl_do_gc_block_merge ( bdbm_block_mapping_entry_t* e = &p->mt[seg_no][blk_no]; bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); bdbm_hlm_req_gc_t* hlm_gc = &p->gc_hlm; - uint64_t j, k, nr_valid_pgs = 0, nr_trim_pgs = 0; + uint64_t j, nr_valid_pgs = 0, nr_trim_pgs = 0; if (e->status == BFTL_NOT_ALLOCATED) return 0; /* if it is, ignore it */ diff --git a/ftl/algo/page_ftl.c b/ftl/algo/page_ftl.c index e3a8c40..76f2629 100644 --- a/ftl/algo/page_ftl.c +++ b/ftl/algo/page_ftl.c @@ -206,7 +206,6 @@ void __bdbm_page_ftl_destroy_active_blocks ( uint32_t bdbm_page_ftl_create (bdbm_drv_info_t* bdi) { - uint32_t i = 0, j = 0; bdbm_page_ftl_private_t* p = NULL; bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); diff --git a/ftl/ftl_params.c b/ftl/ftl_params.c index abfad00..c662138 100644 --- a/ftl/ftl_params.c +++ b/ftl/ftl_params.c @@ -53,8 +53,8 @@ int _param_snapshot = SNAPSHOT_DISABLE; int _param_mapping_type = MAPPING_POLICY_PAGE; /*int _param_mapping_type = MAPPING_POLICY_RSD;*/ /*int _param_mapping_type = MAPPING_POLICY_RSD;*/ -/*int _param_llm_type = LLM_MULTI_QUEUE;*/ -int _param_llm_type = LLM_NO_QUEUE; +int _param_llm_type = LLM_MULTI_QUEUE; +/*int _param_llm_type = LLM_NO_QUEUE;*/ int _param_hlm_type = HLM_NO_BUFFER; bdbm_ftl_params get_default_ftl_params (void) diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 03148b2..a1f586b 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -136,7 +136,7 @@ typedef struct { #define BDBM_MAX_PAGES 1 /* a bluedbm blockio request */ -#define BDBM_BLKIO_MAX_VECS 256 +#define BDBM_BLKIO_MAX_VECS 512 typedef struct { uint64_t bi_rw; /* REQTYPE_WRITE or REQTYPE_READ */ From 5e0cbce7baeffc2ef12977a3a1f2751c754de8f0 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Tue, 19 Jul 2016 02:00:23 +0900 Subject: [PATCH 02/51] support basic I/Os except for block erasure --- common/bdbm_main.c | 2 +- devices/common/dev_params.c | 20 +- devices/ramdrive/dm_ramdrive.c | 2 + frontend/kernel_nvme/Makefile | 1 + frontend/kernel_nvme/blkdev.c | 66 ++++-- frontend/kernel_nvme/kmain.c | 324 ++++++++++++++++++++++++++++- frontend/kernel_nvme/log | 79 ------- frontend/kernel_nvme/mount_ext4.sh | 7 +- frontend/nvme/libftl | Bin 250264 -> 256032 bytes frontend/user/Makefile | 3 +- frontend/user/userio.c | 4 +- ftl/hlm_nobuf.c | 21 ++ ftl/hlm_reqs_pool.c | 2 +- ftl/llm_noq.c | 16 +- ftl/llm_noq_lock.c | 3 + include/bdbm_drv.h | 9 +- run/bonnie++/run_bonnie++.sh | 8 +- run/postmark/postmark-config-1.cfg | 2 +- run/postmark/postmark-config-2.cfg | 2 +- run/postmark/postmark-config-3.cfg | 2 +- 20 files changed, 441 insertions(+), 132 deletions(-) delete mode 100644 frontend/kernel_nvme/log diff --git a/common/bdbm_main.c b/common/bdbm_main.c index 0c05844..5ab4763 100644 --- a/common/bdbm_main.c +++ b/common/bdbm_main.c @@ -61,7 +61,7 @@ THE SOFTWARE. //bdbm_ftl_inf_t _ftl_block_ftl, _ftl_dftl, _ftl_no_ftl; bdbm_ftl_inf_t _ftl_dftl, _ftl_no_ftl; bdbm_hlm_inf_t _hlm_dftl_inf, _hlm_buf_inf; -bdbm_llm_inf_t _llm_noq_inf; +/*bdbm_llm_inf_t _llm_noq_inf;*/ /* TEMP */ /* It creates bdi and setups bdi with default parameters. Users changes the diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index 87cd5bf..63d4b08 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -44,13 +44,26 @@ THE SOFTWARE. enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, - //NAND_PAGE_OOB_SIZE = 64, /* for bdbm hardware */ + NAND_PAGE_OOB_SIZE = 8*BDBM_MAX_PAGES, + NR_PAGES_PER_BLOCK = 1, + /*NR_BLOCKS_PER_CHIP = (128*128*16)/BDBM_MAX_PAGES,*/ + NR_BLOCKS_PER_CHIP = (128*32*32)/BDBM_MAX_PAGES, + NR_CHIPS_PER_CHANNEL = 1, + NR_CHANNELS = 1, + NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ + NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ + NAND_PAGE_PROG_TIME_US = 500, /* 1.3ms */ + NAND_PAGE_READ_TIME_US = 100, /* 100us */ + NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ +}; + +#if 0 +enum BDBM_DEFAULT_NAND_PARAMS { + NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, NAND_PAGE_OOB_SIZE = 8*BDBM_MAX_PAGES, NR_PAGES_PER_BLOCK = 128, NR_BLOCKS_PER_CHIP = 192/BDBM_MAX_PAGES, - //NR_BLOCKS_PER_CHIP = 8/BDBM_MAX_PAGES, NR_CHIPS_PER_CHANNEL = 4, - //NR_CHIPS_PER_CHANNEL = 8, NR_CHANNELS = 8, NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ @@ -58,6 +71,7 @@ enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_READ_TIME_US = 100, /* 100us */ NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ }; +#endif int _param_nr_channels = NR_CHANNELS; int _param_nr_chips_per_channel = NR_CHIPS_PER_CHANNEL; diff --git a/devices/ramdrive/dm_ramdrive.c b/devices/ramdrive/dm_ramdrive.c index b1d5363..a83ef7c 100644 --- a/devices/ramdrive/dm_ramdrive.c +++ b/devices/ramdrive/dm_ramdrive.c @@ -150,6 +150,7 @@ uint32_t dm_ramdrive_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) { #include "../../ftl/hlm_reqs_pool.h" + /* uint32_t i, ret = 1; bdbm_llm_req_t* lr = NULL; dm_ramssd_private_t* p = BDBM_DM_PRIV (bdi); @@ -160,6 +161,7 @@ uint32_t dm_ramdrive_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) break; } } + */ return ret; } diff --git a/frontend/kernel_nvme/Makefile b/frontend/kernel_nvme/Makefile index ef9bde8..abefcd9 100644 --- a/frontend/kernel_nvme/Makefile +++ b/frontend/kernel_nvme/Makefile @@ -63,6 +63,7 @@ bdbm_drv-y := \ $(FTL)/pmu.o \ $(FTL)/hlm_nobuf.o \ $(FTL)/llm_mq.o \ + $(FTL)/llm_noq_lock.o \ $(FTL)/algo/abm.o \ $(FTL)/algo/page_ftl.o \ $(FTL)/algo/block_ftl.o \ diff --git a/frontend/kernel_nvme/blkdev.c b/frontend/kernel_nvme/blkdev.c index 21c44f0..c86b53b 100644 --- a/frontend/kernel_nvme/blkdev.c +++ b/frontend/kernel_nvme/blkdev.c @@ -186,11 +186,20 @@ int bdbm_blk_ioctl ( uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) { + uint64_t capacity = 0; + /* create a blk queue */ - if (!(bdbm_device.queue = blk_alloc_queue (GFP_KERNEL))) { + if (bdi->q == NULL) { + bdbm_device.queue = blk_alloc_queue (GFP_KERNEL); + } else { + bdbm_device.queue = blk_alloc_queue_node (GFP_KERNEL, bdi->q->node); + bdbm_msg ("host_blkdev_register_device -> blk_alloc_queue_node"); + } + if (!bdbm_device.queue) { bdbm_error ("blk_alloc_queue failed"); return -ENOMEM; } + blk_queue_make_request (bdbm_device.queue, fn); blk_queue_logical_block_size (bdbm_device.queue, bdi->parm_ftl.kernel_sector_size); blk_queue_io_min (bdbm_device.queue, bdi->parm_dev.page_main_size); @@ -208,30 +217,40 @@ uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) bdbm_msg ("TRIM is disabled"); } - /* register a blk device */ - if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, "blueDBM")) < 0) { - bdbm_msg ("register_blkdev failed (%d)", bdbm_device_major_num); - return bdbm_device_major_num; - } - if (!(bdbm_device.gd = alloc_disk (1))) { - bdbm_msg ("alloc_disk failed"); - unregister_blkdev (bdbm_device_major_num, "blueDBM"); - return -ENOMEM; + /* alloc & register a blk device */ + if (bdi->q == NULL) { + if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, bdi->disk_name)) < 0) { + bdbm_msg ("register_blkdev failed (%d)", bdbm_device_major_num); + return bdbm_device_major_num; + } + if (!(bdbm_device.gd = alloc_disk (1))) { + bdbm_msg ("alloc_disk failed"); + unregister_blkdev (bdbm_device_major_num, bdi->disk_name); + return -ENOMEM; + } + } else { + bdbm_msg ("host_blkdev_register_device -> alloc_disk"); + if (!(bdbm_device.gd = alloc_disk (0))) { + bdbm_msg ("alloc_disk failed"); + return -ENOMEM; + } + bdbm_device.gd->flags = GENHD_FL_EXT_DEVT; } + + bdi->gd = bdbm_device.gd; + bdbm_device.gd->major = bdbm_device_major_num; bdbm_device.gd->first_minor = 0; bdbm_device.gd->fops = &bdops; bdbm_device.gd->queue = bdbm_device.queue; bdbm_device.gd->private_data = NULL; - strcpy (bdbm_device.gd->disk_name, "blueDBM"); - - { - uint64_t capacity; - //capacity = bdi->parm_dev.device_capacity_in_byte * 0.9; - capacity = bdi->parm_dev.device_capacity_in_byte; - capacity = (capacity / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; - set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); - } + strcpy (bdbm_device.gd->disk_name, bdi->disk_name); + + /* setup disk capacity */ + capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); + + /* add disk */ add_disk (bdbm_device.gd); return 0; @@ -241,8 +260,13 @@ void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) { /* unregister a BlueDBM device driver */ del_gendisk (bdbm_device.gd); - put_disk (bdbm_device.gd); - unregister_blkdev (bdbm_device_major_num, "blueDBM"); blk_cleanup_queue (bdbm_device.queue); + put_disk (bdbm_device.gd); + if (bdi->q == NULL) + unregister_blkdev (bdbm_device_major_num, bdi->disk_name); + + /* clean up */ + bdbm_device.queue = NULL; + bdbm_device.gd = NULL; } diff --git a/frontend/kernel_nvme/kmain.c b/frontend/kernel_nvme/kmain.c index 5fd7e40..85c90b4 100644 --- a/frontend/kernel_nvme/kmain.c +++ b/frontend/kernel_nvme/kmain.c @@ -24,16 +24,251 @@ THE SOFTWARE. #include #include +#include +#include +#include +#include #include "bdbm_drv.h" #include "debug.h" #include "blkio.h" #include "devices.h" +#include "umemory.h" bdbm_drv_info_t* _bdi = NULL; -static int __init bdbm_drv_init (void) +int ridx = 0; +int widx = 0; + + +#include +#include + +struct request *nvme_alloc_request(struct request_queue *q, + struct nvme_command *cmd, unsigned int flags) +{ + bool write = cmd->common.opcode & 1; + struct request *req; + + req = blk_mq_alloc_request(q, write, flags); + if (IS_ERR(req)) + return req; + + req->cmd_type = REQ_TYPE_DRV_PRIV; + //req->cmd_flags |= REQ_FAILFAST_DRIVER; + req->__data_len = 0; + req->__sector = (sector_t) -1; + req->bio = req->biotail = NULL; + + req->cmd = (unsigned char *)cmd; + req->cmd_len = sizeof(struct nvme_command); + req->special = (void *)0; + + return req; +} + +int simple_read (bdbm_drv_info_t* bdi) +{ + int ret; + struct request *rq; + unsigned bufflen = 256 * 512; + struct nvme_command cmd; + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + + int req_ofs = (ridx * 256) + 2048, req_len = 255; + + if (_bdi == NULL) + return 0; + + rq = blk_mq_alloc_request(bdi->q, 0, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) + goto out; + + /*bdbm_msg ("rq->__data_len = %d", rq->__data_len);*/ + /*bdbm_msg ("rq->bio = %p rq->biotail = %p", rq->bio, rq->biotail);*/ + /*bdbm_msg ("rq->nr_phys_segments = %d", rq->nr_phys_segments);*/ + + cmd.rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ + cmd.rw.flags = 0; + cmd.rw.nsid = 1; + cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd.rw.length = req_len; /* it must be the unit of 255 */ + cmd.rw.control = 0; + cmd.rw.dsmgmt = 0; + cmd.rw.reftag = 0; + cmd.rw.apptag = 0; + cmd.rw.appmask = 0; + + rq->cmd = (unsigned char *)&cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) + bdbm_msg ("ret = %u", ret); + + { + char* tmp = (char*)ubuffer; + bdbm_msg ("data: %x %x %x %x", tmp[0], tmp[1], tmp[2], tmp[3]); + } + +out: + kfree (ubuffer); + blk_mq_free_request(rq); + + ridx++; + return 0; +} + +int simple_write (bdbm_drv_info_t* bdi) +{ +#if 0 + int ret; + + struct nvme_command c; + unsigned length, meta_len; + void *metadata; + + struct request *req; + unsigned bufflen = 256 * 512; + char* ubuffer = bdbm_malloc (bufflen); + + int req_ofs = 2048, req_len = 255; + + if (_bdi == NULL) + return 0; + + /* setup the length of the request */ + length = (req_len + 1) << 9; + meta_len = (req_len + 1) * 0; + metadata = NULL; + + /* setup the command */ + memset (&c, 0, sizeof(c)); + c.rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ + c.rw.flags = 0; + c.rw.nsid = 1; + c.rw.slba = req_ofs; /* it must be the unit of 255 */ + c.rw.length = req_len; /* it must be the unit of 255 */ + c.rw.control = 0; + c.rw.dsmgmt = 0; + c.rw.reftag = 0; + c.rw.apptag = 0; + c.rw.appmask = 0; + + /* create a request */ + req = nvme_alloc_request(bdi->q, &c, 0); + if (IS_ERR(req)) + return PTR_ERR(req); + + req->timeout = 0; + + ubuffer[0] = 0x0A; + ubuffer[1] = 0x0B; + ubuffer[2] = 0x0C; + ubuffer[3] = 0x0D; + + if (ubuffer && bufflen) { + ret = blk_rq_map_kern(bdi->q, req, ubuffer, bufflen, GFP_KERNEL); + if (ret) + goto out; + } + + blk_execute_rq (req->q, bdi->gd, req, 0); + ret = req->errors; + if (ret != 0) + bdbm_msg ("ret = %u", ret); + + /*bdbm_msg ("data: %x %x %x %x", ubuffer[0], ubuffer[1], ubuffer[2], ubuffer[3]);*/ + +out: + blk_mq_free_request(req); + bdbm_free (ubuffer); + + return ret; +#endif + + int ret; + struct request *rq; + unsigned bufflen = 256 * 512; + struct nvme_command cmd; + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + char* ubuffer_char = (char*)ubuffer; + + int req_ofs = (widx * 256) + 2048, req_len = 255; + + if (_bdi == NULL) + return 0; + + ubuffer_char[0] = widx; + ubuffer_char[1] = widx+1; + ubuffer_char[2] = widx+2; + ubuffer_char[3] = widx+3; + + rq = blk_mq_alloc_request(bdi->q, 1, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) + goto out; + + /*bdbm_msg ("rq->__data_len = %d", rq->__data_len);*/ + /*bdbm_msg ("rq->bio = %p rq->biotail = %p", rq->bio, rq->biotail);*/ + /*bdbm_msg ("rq->nr_phys_segments = %d", rq->nr_phys_segments);*/ + + cmd.rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ + cmd.rw.flags = 0; + cmd.rw.nsid = 1; + cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd.rw.length = req_len; /* it must be the unit of 255 */ + cmd.rw.control = 0; + cmd.rw.dsmgmt = 0; + cmd.rw.reftag = 0; + cmd.rw.apptag = 0; + cmd.rw.appmask = 0; + + rq->cmd = (unsigned char *)&cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) + bdbm_msg ("ret = %u", ret); + + /*{*/ + /*char* tmp = (char*)ubuffer;*/ + /*bdbm_msg ("data: %x %x %x %x", tmp[0], tmp[1], tmp[2], tmp[3]);*/ + /*}*/ + +out: + kfree (ubuffer); + blk_mq_free_request(rq); + + widx++; + + return 0; + +} + +int bdbm_register (struct request_queue* q, char* disk_name) { + bdbm_msg ("bdbm_register (%s)", disk_name); + /* create bdi with default parameters */ if ((_bdi = bdbm_drv_create ()) == NULL) { bdbm_error ("[kmain] bdbm_drv_create () failed"); @@ -52,16 +287,38 @@ static int __init bdbm_drv_init (void) return -ENXIO; } + /* for nvme */ + _bdi->q = q; + if (disk_name) + strcpy (_bdi->disk_name, disk_name); + else + strcpy (_bdi->disk_name, "blueDBM"); + /* end */ + /* run it */ if (bdbm_drv_run (_bdi) != 0) { bdbm_error ("[kmain] bdbm_drv_run () failed"); return -ENXIO; } +#if 0 + /* send simple read request */ + bdbm_msg ("begin - simple_read\n"); + { + int i = 0; + for (i = 0; i < 1000; i++) { + simple_read (_bdi); + } + } + bdbm_msg ("done - simple_read\n"); + /* end */ +#endif + return 0; } +EXPORT_SYMBOL(bdbm_register); -static void __exit bdbm_drv_exit(void) +void bdbm_unregister (char* disk_name) { /* stop running layers */ bdbm_drv_close (_bdi); @@ -71,6 +328,69 @@ static void __exit bdbm_drv_exit(void) /* remove bdbm_drv */ bdbm_drv_destroy (_bdi); + + _bdi = NULL; + + bdbm_msg ("bdbm_register (%s)", disk_name); +} +EXPORT_SYMBOL(bdbm_unregister); + + +static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) +{ + if (_bdi == NULL) + return 0; + + switch (cmd) { + case 0: + bdbm_msg ("simple_read - %d", ridx); + simple_read (_bdi); + break; + case 1: + bdbm_msg ("simple_write - %d", widx); + simple_write (_bdi); + break; + default: + bdbm_msg ("default"); + break; + } + + return 0; +} + +static const struct file_operations _ctl_fops = { + .open = nonseekable_open, + .unlocked_ioctl = nvm_ctl_ioctl, + .owner = THIS_MODULE, +}; + +static struct miscdevice _nvm_misc = { + .minor = MISC_DYNAMIC_MINOR, + .name = "kernel_nvme", + .nodename = "kernel_nvme/control", + .fops = &_ctl_fops, +}; + +MODULE_ALIAS_MISCDEV(MISC_DYNAMIC_MINOR); + +static int __init bdbm_drv_init (void) +{ + int ret; + + ret = misc_register(&_nvm_misc); + if (ret) + pr_err("nvm: misc_register failed for control device"); + + /*bdbm_register (NULL, NULL);*/ + + return 0; +} + +static void __exit bdbm_drv_exit(void) +{ + misc_deregister(&_nvm_misc); + + /*bdbm_unregister(NULL);*/ } MODULE_AUTHOR ("Sungjin Lee "); diff --git a/frontend/kernel_nvme/log b/frontend/kernel_nvme/log deleted file mode 100644 index 04a65ab..0000000 --- a/frontend/kernel_nvme/log +++ /dev/null @@ -1,79 +0,0 @@ -make[1]: Entering directory '/usr/src/linux-headers-4.5.3-040503-generic' - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/kmain.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/blkdev.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/blkio.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/ftl_params.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/pmu.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/hlm_nobuf.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/llm_mq.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/abm.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.o -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c: In function ‘bdbm_page_ftl_create’: -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c:209:18: warning: unused variable ‘j’ [-Wunused-variable] - uint32_t i = 0, j = 0; - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c:209:11: warning: unused variable ‘i’ [-Wunused-variable] - uint32_t i = 0, j = 0; - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c: At top level: -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c:1165:13: warning: ‘__bdbm_page_mark_it_dead’ defined but not used [-Wunused-function] - static void __bdbm_page_mark_it_dead ( - ^ - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.o -In file included from include/linux/printk.h:6:0, - from include/linux/kernel.h:13, - from include/linux/list.h:8, - from include/linux/module.h:9, - from /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:26: -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: In function ‘__bdbm_block_ftl_is_allocated’: -include/linux/kern_levels.h:4:18: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘uint64_t {aka long long unsigned int}’ [-Wformat=] - #define KERN_SOH "\001" /* ASCII Start Of Header */ - ^ -include/linux/kern_levels.h:13:19: note: in expansion of macro ‘KERN_SOH’ - #define KERN_INFO KERN_SOH "6" /* informational */ - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../include/debug.h:32:11: note: in expansion of macro ‘KERN_INFO’ - printk(KERN_INFO "bdbm: " fmt "\n", ##__VA_ARGS__); \ - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:342:3: note: in expansion of macro ‘bdbm_msg’ - bdbm_msg ("oops! # of allocated blocks per segment must be 0 or %d (%d)", - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: In function ‘bdbm_block_ftl_get_free_ppa’: -include/linux/kern_levels.h:4:18: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int64_t {aka long long int}’ [-Wformat=] - #define KERN_SOH "\001" /* ASCII Start Of Header */ - ^ -include/linux/kern_levels.h:13:19: note: in expansion of macro ‘KERN_SOH’ - #define KERN_INFO KERN_SOH "6" /* informational */ - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../include/debug.h:32:11: note: in expansion of macro ‘KERN_INFO’ - printk(KERN_INFO "bdbm: " fmt "\n", ##__VA_ARGS__); \ - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:466:4: note: in expansion of macro ‘bdbm_msg’ - bdbm_msg ("[%llu] [OVERWRITE] this should not occur (rw_pg_ofs:%d page_ofs:%llu)", - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: In function ‘__bdbm_block_ftl_do_gc_block_merge’: -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:885:14: warning: unused variable ‘k’ [-Wunused-variable] - uint64_t j, k, nr_valid_pgs = 0, nr_trim_pgs = 0; - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: At top level: -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:1149:13: warning: ‘__bdbm_block_mark_it_dead’ defined but not used [-Wunused-function] - static void __bdbm_block_mark_it_dead ( - ^ - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/queue/queue.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/queue/prior_queue.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/queue/rd_prior_queue.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/hlm_reqs_pool.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../devices/common/dev_params.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/utime.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/ufile.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/uthread.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/umemory.o - LD [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.o - Building modules, stage 2. - MODPOST 1 modules -WARNING: "bdbm_dm_init" [/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko] undefined! -WARNING: "bdbm_dm_exit" [/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko] undefined! -WARNING: "bdbm_dm_get_inf" [/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko] undefined! - CC /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.mod.o - LD [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko -make[1]: Leaving directory '/usr/src/linux-headers-4.5.3-040503-generic' diff --git a/frontend/kernel_nvme/mount_ext4.sh b/frontend/kernel_nvme/mount_ext4.sh index 2aa2bc6..854bc27 100755 --- a/frontend/kernel_nvme/mount_ext4.sh +++ b/frontend/kernel_nvme/mount_ext4.sh @@ -3,12 +3,7 @@ sudo touch /usr/share/bdbm_drv/ftl.dat sudo touch /usr/share/bdbm_drv/dm.dat sudo insmod risa_dev_ramdrive.ko -#sudo insmod risa_dev_ramdrive_timing.ko -#sudo insmod risa_dev_ramdrive_intr.ko -#sudo insmod risa_dev_bluedbm.ko -#sudo insmod bdbm_drv_page.ko sudo insmod bdbm_drv.ko -sudo ./bdbm_format /dev/blueDBM +#sudo ./bdbm_format /dev/blueDBM sudo mkfs -t ext4 -b 4096 /dev/blueDBM sudo mount \-t ext4 \-o discard /dev/blueDBM /media/blueDBM -#sudo mount \-t ext4 /dev/blueDBM /media/blueDBM diff --git a/frontend/nvme/libftl b/frontend/nvme/libftl index 55deaf820af10c231e00c60d579d4a7e260775b4..a950e3b004a0117bc59c49a3e16ef7fae71aeddc 100755 GIT binary patch literal 256032 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
M<8ZOFnn@=Z7s$hfD!^7=KDhq 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
5n<9D-)6yS}Xda>=IrVua`$=*2kQ86wBe?x;_ zU0{o87WNRKl8Z43K`l3Fh7Fo!;yckC_S#-eeBbSXw2;sws3*k!JKq+Bve%Z=0vd@l zhAoR#Fzu!RG0>ar#Lx;Ub2CMTV1=F{VCLaTM<~RZEIMo>MdI2MNlcR&=6Oy|J1)N# zB%&fSUL5Mb4fq^iBY5c6gr0dyVFVGymTCZkGL!Ck8H6QK8+k5t(BGimRDV6yibiDa z@`#Lym@SBAXB_?Jl+1}}%tQxY?Zo0`^n0YsN&{F^x=kit17zS{x_InL68j^q8qi1! zB=Cs@t6;=z)I<+4S#Savhi4M&5oABaWVrt70wk3vwX`<3z>?B9Z6}ti9OUstjDf}L z_hZeAyre;0f~8to#3}5q+PPczUS*K5rH)e&7LBE0I5XbTNVhaL#6`wnL?9C`Iz#lR z7%;86+Ap$eY`+!tjkh#$39`s~4MG?+3@FQOY#N^ZX}KkikyoxPMn#ARS@Z$|U=zuf z82fD!AN}gV7&5p*WaG%Gm49!sjEQa^E1Bmet&wpfP0~srlT}8^3YEd6F+JpNXK$o? zm*1YI?%r@V6Ay0ci+eoH`O*@^>~yRMyEmg(01>LHsg;@4u#5&1f(>3-O{xIq2ew;D(^tA{s(4iqPRLo}ip)u?6~Dn9jqjfq4TLLS5Wc5+SHwXMqKGk}bTK zEV`oPi8c&jU{wpR6v0eVGSTf#hvdhUbuZ!U(dT1MKZHKjZ7C02>7nz|2m7z~-(txL6NM44ylMo+jgjUgQ@25f+t&6SfzHD*K-+7XX{ zFiFD|lE-8^_}s2%vuqSSvF6~Ds!1#qY>;M=^rmP5qSRzTfT;jRl+wXh2U`+LB=P*cn&8}98M@ZMR>x5GGR22q}K*akXK`JaXLDA zZ~+T|c-g!+t8Oo($8xB{IZ(h}I7efi(wD_zb4O)g3Mw;-`exJ9+eo;1z@jV`v)9qQ*TTUO-y7s(5WN z7KWbhs!^e-c@^9NbhhQxlGMzRVQ!KKNnvzkVVjKNbEzSH)fLrnfYc-0wR`8*cum!g z$~eYf8NBJ5s$CeS-V?9cT~Uo+`yD4CXW@f)$0@;{_^wL2tEjH7-0p0yyuNBvC69n( zfy8x{SRiG_x4AQoDmH7|2uo=rS5|L!s(0%}6^3Nhu0UE^F3B?mP#=5+S)y>=FJ$`; zl797g0vQygWKu;P`SZFmuOd(mvArzDW-U6Cx`yX6vREP|;41O@QZ5$>s2P_JabK^) z3AKq`|LgXEi!@)eyXyK%9qDea+){x_q`1@xFZURJAPAQMp&%Cx0je8jY62Yg-c?oC z?6w%SbLU1Kwb;cm$X13_S>1u*?hmyV359Mfy%@%33(sMiW|0@XDy=?^b;`-Q4*bHm zlgG3(We)Z~fm}3-tY6GxYUia{ahmeN25s@jUAodDkprDb8k-gXy?(K@R)P&m~tol7sVGTZXTBluAHyrgpYOBj?aZZ&e@d{KHhnB zaxVM{&a*k;6P;(L<-(uj{4ytevQx85Z#r?Tzo;|Cxj83%s`Jysx$vhsyWWut4v~4N z&Z4Yuqt0|k<%G|0rsRZQ;LOSipXvPe;av1*InJkZ!Dl;zpUDNk&>8$(F8G|RvJ)Wc z%*_M8C=dMNJn&2Mzzg%hi?ZMmKt?&gdO7@J0ss*wo1e1*cb!R2VL^Ey3DuO~H;3TG z0v`;)Hv=AVe7;dR=x-1HkK}0ILx2PXSK#HJ_rM&Qu)d#k1g>ugMzx zKjgt51BU0ycPiji{zs*p_+kP7U6=>|QoyO4=1Xi9g1=heUyv`fksQ$9CV~IEz!zz- zQz`I*Ys(p;e;ub<;Gfu~A#@@G{dEX@xTc(+pA<&FSKxQoYWO?E8$AqouKEt;ftz}n zj|Ek5E{75Kjhyrf=JSSauj zf!7GUOyE(}o7&~5z*_}A2k=~cSS0x76B5$|f1|)(y1kqs1|ApqUw%x(|5NY}ag**YgDbqXIuEa8ute34HS3YWfELEZ`AmwlgIppT7|NfBKHbkAg4s*A~rPU(>!5 zo-Sv+3jTHYELP&%4uLNdxM}x80uQ(QCj=gD_iqYZ=YnmTC=cn^S3>1)I!igtQIp|v z{)Zev87}9dpXeOJ<*X5SxSWRsZpt|ua}U+|M<9 zo(M|AS?XmD9}CxOoYIhRy{-^=xLyf?hwJrDf$LH^j;Ytz1Rk!}e@@i-hU@j~85(Zt zmC94Ew*pS>`)z4oWB=cu2mix);2+Bae<%<9@AAOEln4IJJn*Lhr*=1crz>^yI={$+ zAHn-v_T>KpKjKVtmV8R{O~^Roz>r*V1-;Kj=K^M6K~}uCnCWE4b;|`m95-%acy|1G zJ=2+$74NkHJ`H^M*_+F`=nwO+9mT@v5I?C{?Q1-?l9+KmGLn84rFTh5Sm;0yhI zLEx7zDCg%Q{&k#h3H+w3G~Y~w_j7?ixJct475v`;J{9)x?vT7qg1%DuAG%EAkEe#h z-$erdVtF|~|4!hSF`PkxpEALJn|!5yue_}Wobv4o<=c{nPQTE}Y%FIAzY;p{6Syn& z-6!ye1l}iy6K)as*9E@D)%>A2fc{Pi{FW;;yjg>tUjR?VkTjza7*l<> zm1+1b0>4<`$scR@7J;t;d>?NfFGGSq z`iJHG{3&_)ZNNz$o(Rdq^NcS@)@Af~&Ch!)b$RF%ANrdv@Dpn^{4Nc43K=dB)@766 z|7U$UL#yOnE#Oq1!y!AW_13$dFY=O{9=i(t`j=bAR;8s z&x(GTb}R&(RoA-(>%z)uMMWrF`d0VlaVe4>saO9cLe;Qw^3=D+ce-xK(k zMV^iA`ia1s)@l3)gwC%79$!+<5EF<0f#HH=U8bXe(5gPY?K=7ZOuknkRn&Uho z@U+mmMd<%T;1@}|%o6;cFPHp@;kwQc4q}c6Y_36m`3t* z;+ArT{F~63%Wy%mE^G3@uN69l_h>rXg-%l7`zv(5%cQ+-6L|A88h@wY-vc<=;ctiH zoMVE2g~;KhQl^Il|BIrh#*WQHK2u=d?*4q8ReHqvOeX;1haU<3J<^Y!DJU-p{GY#D z&X7w*A4kDZ5Z~S}a2n;Lq7!!6o^)lxINT@02)U zy}&a9|IRv1|DeF1Vz@k5m!AVp?Ry|p&d7Al&yUU5bc!U+G=ZO%IPF~m$Cu)m&KE;+ zf{&#${Cgqz7NPUIkbYe!@b>$3zJ=1hEdu{T$R4Hz{>{Z2|EQGbPJ#bK;{V?W{9eFG z4#WLlHBs01u?sbw&r7}^6*^b8Yj|Nq6M6!0;#*6IZzl!6WRJ!lEBG%7y#JdT{$WkV z89zhk+jy0RoAHpPfD?U3_-6EIt-!w?;^%gu6FZ^lyif9N5&Xk~zgF^13%pRue~rNJ z5ITouYC1;V-Yf9VyENR`lfM!8w?vPOKm82Dg{XCTG7tP&q4WDoG5#dy)6$RonIzpI@QW@hXNZxXn*{#T`5Im%_$>nes~-jN-(u+O z*6?Y<|Gx&D%2OWV|HlRYuGJMxxkczdDezx)Xgbdc{CTDWdlHHdPcyzCS(iyLn1$A} zxt#|%*~!d1${Dm;3H(06zx7My3^8`#1mn+k+CqBwea4r>*5%)Y&L{5HblxKG z6aDL7epX40ATG#7&!N=#@a^f!rKE>_#O1^^btQ0z>JIWdKN#R?yz~@wH_;^Y1 zX21*O-oEq*{)Fk}3_dL{?-2N&Yc>2QB8MLaoaD`sIOJ}@|AgRwQ{wg_fj=&A^C=1w zhksY#V`bcIg5aML_+Kp5{4xFd2(l!3`^q6*o-d1kpDgfykvM#d&{@uKd9W_q1b?>7 z2mPbGYZ3V9)#VJ?FYr6^(D~~;@XrXHt$(ZO>=8TsWFGwI0VjTbFC<=b`@$$Di5j-~LVLtb3-MDO@IW zUKaT8CEhC%__(>6pBp#me3yzm&lY%>wEJn1t5SwbV(apzJn)pz`9XC#V|PS!qPqqD zB`MFtTUURwT&uvov%>w_`)f)eQ3%=8kOm(NyO>}g4Jbvw_-SO>JI1nX{ zbMumkW*mftqoh+fCD$!Vc#p<=I zb0fv+MB8{>GFf*J>+tFDoF=S_PQ>L1C!EdTJz=FhHnZEP`m|A$P>xrnL-gd94oAjf z_cYGL!C4wWX)Rt^y7o%GT)C3Y?emh!DTTBZpAWvn3tCLyeyiNz04Utypwi-%Yp*N~ zp0I-#*1|ywxJlzV+}sb94nCsvz4{W$C$nOaUE7K-)8zvrNO=r^-29N{Wq3MV?y(3I-7^OVSwocw>X!d-bX`dh^qQj(u z3BunFG~1=}ZM)K+PHMn$`}$)+xTE@jQ)agf^Gi0x@HPPXEQHxNk$+5+rU=LCfYtHb=Jxg+>F9J4()O@)vBu5f!!d+ zA=K>HMDC!5kL=JJjI51Qta@apBr((VHz8`7VW5W@I{AQK%3--yi2s3$o=SMOES zj0kR8*4yF(ri${_ds6vqJ}9J?G-jc<)rd(3Ys2)Z2w5jm$XUpAJhApVT9RpRR`A?c zZ57$H8A*#L_=tFqjdau~opS2uy|Q?P_8PW4ibS9RAuk7T@)d8l3pKHPGr)Ko7FF6e zrjwXvmtA;-mE)8xo1{5;H+UAW#}}#>?}XGk;hm`^?Du3;v@>+z38l`xiAoxX4{XD( zSDYW}Gly(PR>RwSqjg!R(T!2?q81NAb(9l`^N5n!#BFf{QcZ@<-}=eLus3SbZrUbG zT}oF$JfO7j)(tK2*f@UCugEH04ZpaSeWt@e^rlg=Z^836trA(^GqFX5H*|Zg&ifaw z3bQclyv1jm!z6_51htN*GlEJd!?FYOtKhYTzj>5-(xjPcQtDGur8R=7Ej`x)&Sz*z zLGtYS(yb2QmF7Yct#;jw>^rrw>;#u zY(=s~%2p-+=uqsjCkw#mfO1Bj#)o8?G|*4R(qW%&O5sO{6*{P4hX=FK8ZrQAn}+tT zU=l6>q@K7y`-S;Am@%s^`Fs76OB*=+2V1ti(}i)?5gp2GX>3lr960TOThK7U%7mZFlg7Z#I3R89I<&Esjw@lBi{IQ9k-}1}>^H~n|Hyma2fwKqDbqQ9Iats{vfIb$! zNTjQU*qTe|TS;nOZGvGVL+|8tx5n;HoWa7!CmY4{&#uo34FUpSo&Kabs8yTft;@0^ zFzlhMLtz*Tf>&rS)Rqqch!7z7Bw4Yy+Q#wm2>v1+eOaW@cirJ;#aV+KdxT1neXNp* zg>n75*de74h;Zn85-dR`KnrelmTxiWquhdRDq?F&ZDfFtRVU%{u|1s%mC5+uPz9;= z`Rq122-N5*%1EE+ArSPRg_rQ`gBvW#HD631|IfAKgxVE~Vwv)4$CXQHtxlJ(EM#Vl zk{J?ou7O`$(hwax24P{36h0--oFu2~h@&68V;gk2O=m>}i`dV*p&4I0vcTuNOzBuD zb2?^DX&n#Z$+GuBFg``nbo2CK-{3yRlQ`fwTa9#cX}vPtkZgNwsiRcQJE_)cQG5jg zQKFoWU?jaetIJHj%AAZHj@of#mwc{)zM<2F&sl{U$m%lq#{k&Y#TO+JOF6nk%IzN> zECBLM+(uSK=o>=Jc;iA)UUMD{c*|#GSm+2yQFXishWEtI?rw1lOwRNN*ly~UG^dM7 zX<&-HV+Mjg6GII-j>q=JK_7%>^E3N<6YOzx7m1Jc(9AT4&H0k*Q-w)F?aUFP#)D;@ z2@?2xO^|a&5w%QeGfr(AG(V(}{MDr7!E9eftoFXEVvG%S*RnK*tQd)XPNB(h0yY;_ ztFAG0!FIJj+@eK7V}mbzwpFl=yk0voisG!mX9qa5{86GNpF>2<*}IgNcW{ic9Jh3a zW3u?QJ@MT#?7ayeW$VV6cd$vaU3b8G@iBF}xpb@)az)aqK%>~PtR1Bq?qJXX$DV}` z5Y*1moc3o6e)ymWSQDJ$A8gEERRZ!U-p*JaFW~Y3oHpd(Kp`+z;i{BI7}#+7A? zPaNe2fI-VLMr_kkNj?KLM=rj6grXe|2D0OGk%v4dx-bho*`?}w;h7AQnSKBnQ$3WI zt(sW_Y=KkCM3``T7@x`&tdlgZZn+TmjXmH(=C^=!GL2~)9r9&62_|7IHtYkwnWRmX z-}E#Hf*1p5jAb<#&Woky3TBec>fn1!^kt)PIf8;hOy^FmE|3>=i`2{4#yDY!KmN&o zzEBV~*hqhJDA2gUArhuZ@~tJ3omqw>l#A(!&f#>58xMAXp1vYVL`KSb>VwT#T?%kdNqkqNt;1hmnMixk&Jd|6UXpuSCmPQaUPdcfd zjMXX3{VfeZLpF6d*A8XqOc8lN=+mLah~1oG^1XC8a&cp#KHZFTbscnew>%;a>NNLt z_4V{EDtUvW{ct3mP6VErTS;!_tzYF8%L^Qu8kgyG?;N7F0>E^9;7_K}J=lEQjlusW zeT`d=CkN*i@x>|B7w=b=BY4lWPQXr|a?AN$O42XjC;um$eluRZ^zzG{CjWcgaz?&a z0H*x1Y{fC_$ruSgw0?)y6q)poy5)Fsa9$E$oM$D&7#^waCjBh^+PNNAT7qKIoAZ?J zrAp!NN%KNKG7Y)q%U|I4Wvl$=+@+hxX{;7OHsv?u%$3&l{J~0Z&S(0Hr0e0#i8Owb>+X5^z~)**8em48ps2-Xbh2&3pquR!-t#9Vy=gylzSYf= z{?6qdD&K_b^O;b3a}L%|59|CJLkYtC|3WCeIWKG1J9PRV6`eW%VZ5fbTBJk#_fVZ& zb^1{Dp8N>5^Av8VsZDxw{+4>^+|vJVq$Ny~-kj4l+yCr|1@t;X&uD=D8P)zyFezw8S=!B<@ zVCm#epa-79^(tqd$&A1w~5Kb}-r>FCK!Z1Sp_gR{w zKiY0es;^<(3P~U4-*7^wUmAL0(wi%-+c)=iPA`5yr@z|<;y#Q!6)@BGHtKCZ)=;w! y+`J2?r{|D}G3s3()aeJ8>XZv`>BIjABk74{Fi)DLvO%(Kl?A7|NjRz3?_E~ literal 250264 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%0D% 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 JvhlU({{eH7bzuMi diff --git a/frontend/user/Makefile b/frontend/user/Makefile index 6d2cd54..964dd7a 100644 --- a/frontend/user/Makefile +++ b/frontend/user/Makefile @@ -23,7 +23,8 @@ CFLAGS += -D HASH_BLOOM=20 \ -D USE_PMU \ # -D USE_NEW_RMW \ -DMLIB := ../../devices/libramdrive/libramdrive.a +#DMLIB := ../../devices/libramdrive/libramdrive.a +DMLIB := ../../devices/libdummy/libdummy.a LIBFTL := libftl.a SRCS := \ diff --git a/frontend/user/userio.c b/frontend/user/userio.c index f1b4ed1..6297145 100644 --- a/frontend/user/userio.c +++ b/frontend/user/userio.c @@ -202,11 +202,11 @@ void userio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req) bdbm_blkio_req_t* r = (bdbm_blkio_req_t*)req->blkio_req; /* remove blkio_req */ - /* { int i = 0; for (i = 0; i < r->bi_bvec_cnt; i++) { if (bdbm_is_read (r->bi_rw)) { + /* if (r->bi_bvec_ptr[i][0] != 0x0A || r->bi_bvec_ptr[i][1] != 0x0B || r->bi_bvec_ptr[i][2] != 0x0C) { @@ -216,12 +216,12 @@ void userio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req) r->bi_bvec_ptr[i][1], r->bi_bvec_ptr[i][2]); } + */ } bdbm_free (r->bi_bvec_ptr[i]); } bdbm_free (r); } - */ /* destroy hlm_req */ bdbm_hlm_reqs_pool_free_item (p->hlm_reqs_pool, req); diff --git a/ftl/hlm_nobuf.c b/ftl/hlm_nobuf.c index f4ac982..3f01550 100644 --- a/ftl/hlm_nobuf.c +++ b/ftl/hlm_nobuf.c @@ -169,6 +169,7 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) } /* (3) send llm_req to llm */ +#if 1 if (bdi->ptr_llm_inf->make_reqs == NULL) { /* send individual llm-reqs to llm */ bdbm_hlm_for_each_llm_req (lr, hr, i) { @@ -184,6 +185,26 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) bdbm_bug_on (1); } } +#else + /* This is just for a test with Dumb NVME devices */ + /* send a bulk of llm-reqs to llm if make_reqs is supported */ + /* + if (bdi->ptr_llm_inf->make_reqs (bdi, hr) != 0) { + bdbm_error ("oops! make_reqs () failed"); + bdbm_bug_on (1); + } + */ + + if (bdi->ptr_llm_inf->make_reqs == NULL) { + /* send individual llm-reqs to llm */ + bdbm_hlm_for_each_llm_req (lr, hr, i) { + if (bdi->ptr_llm_inf->make_req (bdi, lr) != 0) { + bdbm_error ("oops! make_req () failed"); + bdbm_bug_on (1); + } + } + } +#endif bdbm_bug_on (hr->nr_llm_reqs != i); diff --git a/ftl/hlm_reqs_pool.c b/ftl/hlm_reqs_pool.c index c601334..3df2d05 100644 --- a/ftl/hlm_reqs_pool.c +++ b/ftl/hlm_reqs_pool.c @@ -41,7 +41,7 @@ THE SOFTWARE. #include "umemory.h" -#define DEFAULT_POOL_SIZE 128 +#define DEFAULT_POOL_SIZE 16 #define DEFAULT_POOL_INC_SIZE DEFAULT_POOL_SIZE / 5 bdbm_hlm_reqs_pool_t* bdbm_hlm_reqs_pool_create ( diff --git a/ftl/llm_noq.c b/ftl/llm_noq.c index 9646591..7e43c5a 100644 --- a/ftl/llm_noq.c +++ b/ftl/llm_noq.c @@ -91,7 +91,7 @@ void llm_noq_destroy (bdbm_drv_info_t* bdi) bdbm_free (p); } -uint32_t llm_noq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req) +uint32_t llm_noq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) { uint32_t ret; static uint64_t cnt = 0; @@ -101,11 +101,11 @@ uint32_t llm_noq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req) cnt++; /* update pmu */ - pmu_update_sw (bdi, llm_req); - pmu_update_q (bdi, llm_req); + pmu_update_sw (bdi, r); + pmu_update_q (bdi, r); /* send a request to a device manager */ - if ((ret = bdi->ptr_dm_inf->make_req (bdi, llm_req)) != 0) { + if ((ret = bdi->ptr_dm_inf->make_req (bdi, r)) != 0) { /* handle error cases */ bdbm_error ("llm_make_req failed"); } @@ -131,13 +131,13 @@ void llm_noq_flush (bdbm_drv_info_t* bdi) //struct bdbm_llm_noq_private* p = (struct bdbm_llm_noq_private*)BDBM_LLM_PRIV(bdi); } -void llm_noq_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req) +void llm_noq_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) { /* update pmu */ - pmu_update_tot (bdi, llm_req); - pmu_inc (bdi, llm_req); + pmu_update_tot (bdi, r); + pmu_inc (bdi, r); /* finish a request */ - bdi->ptr_hlm_inf->end_req (bdi, llm_req); + bdi->ptr_hlm_inf->end_req (bdi, r); } diff --git a/ftl/llm_noq_lock.c b/ftl/llm_noq_lock.c index ace07de..b3c803c 100644 --- a/ftl/llm_noq_lock.c +++ b/ftl/llm_noq_lock.c @@ -43,7 +43,10 @@ THE SOFTWARE. /* llm interface */ +#if 0 bdbm_llm_inf_t _llm_noq_lock_inf = { +#endif +bdbm_llm_inf_t _llm_noq_inf = { .ptr_private = NULL, .create = llm_noq_lock_create, .destroy = llm_noq_lock_destroy, diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index a1f586b..557a81e 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -133,7 +133,8 @@ typedef struct { } bdbm_phyaddr_t; /* max kernel pages per physical flash page */ -#define BDBM_MAX_PAGES 1 +/*#define BDBM_MAX_PAGES 1*/ +#define BDBM_MAX_PAGES 32 /* a bluedbm blockio request */ #define BDBM_BLKIO_MAX_VECS 512 @@ -380,6 +381,12 @@ struct _bdbm_drv_info_t { bdbm_llm_inf_t* ptr_llm_inf; bdbm_ftl_inf_t* ptr_ftl_inf; bdbm_perf_monitor_t pm; + + /* for nvme */ + struct request_queue* q; + struct gendisk *gd; + char disk_name[256]; + /* end */ }; /* functions for bdi creation, setup, run, and remove */ diff --git a/run/bonnie++/run_bonnie++.sh b/run/bonnie++/run_bonnie++.sh index 7c42751..0c68393 100755 --- a/run/bonnie++/run_bonnie++.sh +++ b/run/bonnie++/run_bonnie++.sh @@ -3,10 +3,10 @@ # for 2 GB sudo mkdir /media/blueDBM/1 sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/1 & -sudo mkdir /media/blueDBM/2 -sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/2 & -sudo mkdir /media/blueDBM/3 -sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/3 & +#sudo mkdir /media/blueDBM/2 +#sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/2 & +#sudo mkdir /media/blueDBM/3 +#sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/3 & # for 16 GB #sudo mkdir /media/blueDBM/1 diff --git a/run/postmark/postmark-config-1.cfg b/run/postmark/postmark-config-1.cfg index c380319..78f4829 100644 --- a/run/postmark/postmark-config-1.cfg +++ b/run/postmark/postmark-config-1.cfg @@ -1,5 +1,5 @@ set transactions 20000 -set number 10000 +set number 1000 set location /media/blueDBM/1 set buffering true set size 5120 524288 diff --git a/run/postmark/postmark-config-2.cfg b/run/postmark/postmark-config-2.cfg index e233b7f..74091ce 100644 --- a/run/postmark/postmark-config-2.cfg +++ b/run/postmark/postmark-config-2.cfg @@ -1,5 +1,5 @@ set transactions 20000 -set number 10000 +set number 1000 set location /media/blueDBM/2 set buffering true set size 5120 524288 diff --git a/run/postmark/postmark-config-3.cfg b/run/postmark/postmark-config-3.cfg index 3cdc9fe..a8f8980 100644 --- a/run/postmark/postmark-config-3.cfg +++ b/run/postmark/postmark-config-3.cfg @@ -1,5 +1,5 @@ set transactions 20000 -set number 10000 +set number 1000 set location /media/blueDBM/3 set buffering true set size 5120 524288 From 3cdc9c8b1b99b908c755a3c8a0e03099ab9ca9d8 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Tue, 19 Jul 2016 03:06:24 +0900 Subject: [PATCH 03/51] added missing files --- devices/dumb_nvme/Makefile | 59 +++++++++++++ devices/dumb_nvme/dumb_nvme.c | 133 +++++++++++++++++++++++++++++ devices/dumb_nvme/dumb_nvme.h | 41 +++++++++ examples/test/Makefile | 16 ++++ examples/test/test | Bin 0 -> 11384 bytes examples/test/test.c | 66 ++++++++++++++ frontend/kernel_nvme/register.sh | 9 ++ frontend/kernel_nvme/unregister.sh | 5 ++ 8 files changed, 329 insertions(+) create mode 100644 devices/dumb_nvme/Makefile create mode 100644 devices/dumb_nvme/dumb_nvme.c create mode 100644 devices/dumb_nvme/dumb_nvme.h create mode 100644 examples/test/Makefile create mode 100755 examples/test/test create mode 100644 examples/test/test.c create mode 100755 frontend/kernel_nvme/register.sh create mode 100755 frontend/kernel_nvme/unregister.sh diff --git a/devices/dumb_nvme/Makefile b/devices/dumb_nvme/Makefile new file mode 100644 index 0000000..3dd2b47 --- /dev/null +++ b/devices/dumb_nvme/Makefile @@ -0,0 +1,59 @@ +# Makefile for BlueDBM +# +CONFIG_MODULE_SIG=n + +INCLUDE = ../../include +COMMON = ../../common +DEV_COMMON = ../common + +EXTRA_CFLAGS := \ + -I$(PWD)/$(INCLUDE) \ + -I$(PWD)/$(COMMON)/utils \ + -I$(PWD)/$(COMMON)/3rd \ + -I$(PWD)/$(DEV_COMMON) \ + +EXTRA_CFLAGS += \ + -D CONFIG_ENABLE_MSG \ + -D CONFIG_ENABLE_DEBUG \ + -D CONFIG_DEVICE_TYPE_RAMDRIVE \ + -D KERNEL_MODE + +dm_dumb_nvme-y := \ + $(COMMON)/utils/ufile.o \ + $(COMMON)/utils/utime.o \ + $(COMMON)/utils/uthread.o \ + $(COMMON)/utils/umemory.o \ + $(DEV_COMMON)/dev_main.o \ + $(DEV_COMMON)/dev_params.o \ + $(DEV_COMMON)/dev_stub.o \ + dumb_nvme.o \ + +obj-m := dm_dumb_nvme.o + +export KROOT=/lib/modules/$(shell uname -r)/build + +.PHONY: default +default: modules + +.PHONY: modules +modules: + @$(MAKE) -C $(KROOT) M=$(PWD) modules + @chmod +x dm_dumb_nvme.ko + +.PHONY: modules_check +modules_check: + @$(MAKE) -C $(KROOT) C=2 M=$(PWD) modules + +.PHONY: modules_install +modules_install: + @$(MAKE) -C $(KROOT) M=$(PWD) modules_install + +.PHONY: kernel_clean +kernel_clean: + @$(MAKE) -C $(KROOT) M=$(PWD) clean + +.PHONY: clean +clean: kernel_clean + @$(RM) -rf Module.markers modules.order + @cd ../common; $(RM) *.o + diff --git a/devices/dumb_nvme/dumb_nvme.c b/devices/dumb_nvme/dumb_nvme.c new file mode 100644 index 0000000..4276be2 --- /dev/null +++ b/devices/dumb_nvme/dumb_nvme.c @@ -0,0 +1,133 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#if defined (KERNEL_MODE) +#include +#else +#error Invalid Platform (KERNEL_MODE or USER_MODE) +#endif + +#include "debug.h" +#include "dumb_nvme.h" +#include "dev_params.h" +#include "utime.h" +#include "umemory.h" + + +/* interface for dm */ +bdbm_dm_inf_t _bdbm_dm_inf = { + .ptr_private = NULL, + .probe = dm_nvme_probe, + .open = dm_nvme_open, + .close = dm_nvme_close, + .make_req = dm_nvme_make_req, + .make_reqs = dm_nvme_make_reqs, + .end_req = dm_nvme_end_req, +}; + +/* private data structure for dm */ +typedef struct { + +} dm_nvme_private_t; + +/* global data structure */ +extern bdbm_drv_info_t* _bdi_dm; + + +uint32_t dm_nvme_probe ( + bdbm_drv_info_t* bdi, + bdbm_device_params_t* params) +{ + dm_nvme_private_t* p = NULL; + + /* setup NAND parameters according to users' inputs */ + *params = get_default_device_params (); + display_device_params (params); + + /* create a private structure for ramdrive */ + if ((p = (dm_nvme_private_t*)bdbm_malloc_atomic ( + sizeof (dm_nvme_private_t))) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + goto fail; + } + +#if 0 + /* create RAMSSD based on user-specified NAND parameters */ + if ((p->ramssd = dev_ramssd_create ( + params, __dm_ramdrive_ih)) == NULL) { + bdbm_error ("dev_ramssd_create failed"); + bdbm_free_atomic (p); + goto fail; + } +#endif + + /* OK! keep private info */ + bdi->ptr_dm_inf->ptr_private = (void*)p; + + bdbm_msg ("[dm_nvme_probe] probe done!"); + + return 0; + +fail: + return -1; +} + +uint32_t dm_nvme_open ( + bdbm_drv_info_t* bdi) +{ + dm_nvme_private_t * p = BDBM_DM_PRIV (bdi); + bdbm_msg ("[dm_nvme_open] open done!"); + return 0; +} + +void dm_nvme_close ( + bdbm_drv_info_t* bdi) +{ + dm_nvme_private_t* p = BDBM_DM_PRIV (bdi); + bdbm_msg ("[dm_nvme_close] closed!"); + bdbm_free_atomic (p); +} + +uint32_t dm_nvme_make_req ( + bdbm_drv_info_t* bdi, + bdbm_llm_req_t* r) +{ + bdbm_msg ("[dm_nvme_make_req]"); + return -1; +} + +uint32_t dm_nvme_make_reqs ( + bdbm_drv_info_t* bdi, + bdbm_hlm_req_t* hr) +{ + bdbm_msg ("[dm_nvme_make_reqs]"); + return -1; +} + +void dm_nvme_end_req ( + bdbm_drv_info_t* bdi, + bdbm_llm_req_t* r) +{ + bdi->ptr_llm_inf->end_req (bdi, r); +} diff --git a/devices/dumb_nvme/dumb_nvme.h b/devices/dumb_nvme/dumb_nvme.h new file mode 100644 index 0000000..0a5026e --- /dev/null +++ b/devices/dumb_nvme/dumb_nvme.h @@ -0,0 +1,41 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#ifndef _BLUEDBM_DM_NVME_H +#define _BLUEDBM_DM_NVME_H_ + +#include "bdbm_drv.h" +#include "params.h" + +extern bdbm_dm_inf_t _dm_ramdrive_inf; + +uint32_t dm_nvme_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* param); +uint32_t dm_nvme_open (bdbm_drv_info_t* bdi); +void dm_nvme_close (bdbm_drv_info_t* bdi); +uint32_t dm_nvme_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req); +uint32_t dm_nvme_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* ptr_hlm_req); +void dm_nvme_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req); + +#endif + diff --git a/examples/test/Makefile b/examples/test/Makefile new file mode 100644 index 0000000..1fe430b --- /dev/null +++ b/examples/test/Makefile @@ -0,0 +1,16 @@ +CFLAGS=-g -Wall +CC=gcc +LIBS=-lm -lpthread +INCLUDES= +OBJS_FORMAT=test.o +SRCS_FORMAT=test.c + +#The variable $@ has the value of the target. In this case $@ = psort +test: ${OBJS_FORMAT} + ${CC} ${CFLAGS} ${INCLUDES} -o $@ ${OBJS_FORMAT} ${LIBS} + +.c.o: + ${CC} ${CFLAGS} ${INCLUDES} -c $< + +clean: + rm *.o test diff --git a/examples/test/test b/examples/test/test new file mode 100755 index 0000000000000000000000000000000000000000..a4fe7302c92661e6a838e2bc63f942715ba79d88 GIT binary patch literal 11384 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 literal 0 HcmV?d00001 diff --git a/examples/test/test.c b/examples/test/test.c new file mode 100644 index 0000000..a40b798 --- /dev/null +++ b/examples/test/test.c @@ -0,0 +1,66 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +int main (int argc, char** argv) +{ + int32_t dev_h = -1; + char* dev_name = "/dev/kernel_nvme/control"; + int i = 0; + + fprintf (stderr, "BlueDBM format tools (Ver 0.1)\n\n"); + + /* Open the BDBM device */ + if ((dev_h = open (dev_name, O_RDWR)) == -1) { + fprintf (stderr, "Failed to open '%s'\n", dev_name); + exit (-1); + } + fprintf (stderr, "Open '%s' successfully\n", dev_name); + + /* Send a BDBM format command using IOCTL + * Everything will be done by bdbm_drv.ko */ + for (i = 0; i < 500; i++) { + ioctl (dev_h, 1, 0); + ioctl (dev_h, 0, 0); + } + + /* close the device */ + if (dev_h != -1) { + close (dev_h); + } + + return 0; +} + diff --git a/frontend/kernel_nvme/register.sh b/frontend/kernel_nvme/register.sh new file mode 100755 index 0000000..3cecf04 --- /dev/null +++ b/frontend/kernel_nvme/register.sh @@ -0,0 +1,9 @@ +sudo mkdir -p /usr/share/bdbm_drv +sudo touch /usr/share/bdbm_drv/ftl.dat +sudo touch /usr/share/bdbm_drv/dm.dat + +sudo insmod risa_dev_ramdrive.ko +sudo insmod bdbm_drv.ko +sudo insmod nvme.ko +#sudo mkfs -t ext4 -b 4096 /dev/blueDBM +#sudo mount \-t ext4 \-o discard /dev/blueDBM /media/blueDBM diff --git a/frontend/kernel_nvme/unregister.sh b/frontend/kernel_nvme/unregister.sh new file mode 100755 index 0000000..5989aab --- /dev/null +++ b/frontend/kernel_nvme/unregister.sh @@ -0,0 +1,5 @@ +#sudo umount /media/nvme0n1 +sudo rmmod nvme +sudo rmmod bdbm_drv +sudo rmmod risa_dev_* +#sudo rmmod f2fs From ad7a93a315933d9688486e9c34b9417d34cb999b Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Tue, 19 Jul 2016 11:01:51 -0700 Subject: [PATCH 04/51] added block erasure --- devices/ramdrive/dm_ramdrive.c | 3 +- examples/test/test | Bin 11384 -> 12040 bytes examples/test/test.c | 62 +++++++++- frontend/kernel_nvme/kmain.c | 204 ++++++++++++++++++--------------- 4 files changed, 172 insertions(+), 97 deletions(-) diff --git a/devices/ramdrive/dm_ramdrive.c b/devices/ramdrive/dm_ramdrive.c index a83ef7c..886741f 100644 --- a/devices/ramdrive/dm_ramdrive.c +++ b/devices/ramdrive/dm_ramdrive.c @@ -161,9 +161,10 @@ uint32_t dm_ramdrive_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) break; } } - */ return ret; + */ + return 0; } void dm_ramdrive_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req) diff --git a/examples/test/test b/examples/test/test index a4fe7302c92661e6a838e2bc63f942715ba79d88..05674435571a5151127cd3925d497e5850477352 100755 GIT binary patch literal 12040 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 biA#=Pu*f?0JWCXZ-&Ic!XMI delta 3808 zcmai1eQ;D)6~FiG*LzE{ANgQ+lR$P!Lv~}bTWClqShK-~ZWJMHp+ylkyU8Y5$j7oD z0ToDS5Lr`7;#FiSbb`(xblMqOl)D?|j{J&%5`%n|+(6*ALorhV_1eL#BjmFBvL7X1rkJN^-$C^pRI;5@Zx(R{A~H zAxTDuBsoUqRkE5?v0u@59ixxEUz~aS-1UE~3SYLY-+TDttIyjpO%^*M*u*T59=$nG z#4gbyHYwQY4(8JM=nzmFO>_D)wp$aV&#|i-pOgZ3D=8pN%%R=GPHP*?IF~>)@WZ4U zHc#g&(U8|s4THj8D{u=(gro|hP_#f^XIpi-4!xp9)?{hoNCy;3)7hxNeyIzx3Vl|# zU$Gg$Cb3Grtyk#^j|lXCA_fL@I-`>WzB`)KWf-Uf{TIaZ+&oKWmfVz_WTtcqsJYk= z65@8WPh6RSQTi9e6!AF6*AU~fCPq2_2(bom@5D*2xQq%dIt+9C4q{xv#309SBF0rt z^l=;p+&T!Dk41lNNMG6%NM8%||7o&uZNu281)gMJ?A)-3Z0w-HPcqveaH`c@{5T2q&DJQ=|ro(+IK^Yc64JWxM9f^7_>$9T1wt)NZUPxbGdnn{(x zvkPJHz`E&?C^kU#S`J=kakk8py*!O>nd-OeUcWprDuvvr9;lys1E!K|P&2)GduC?V zfL7IT0u252lXUma$-hIYlB8rY=2Gx2|sOs{N&_ zbxvsJ{z~LeH>CgBkpAN;&vm{V&)wE!Y`0l(&c#YRjJPAV-_+M&NgVA4d%9 zdmH$6;1;$ut4ug~i@liT)lGg50qkN{$%573s>7DnnJjySFK6pDgk~8;0$YN#z;Edt z7SCQGy#itrv_fD<%|Uk3-1vWgV7;G{ejRs~kRp(@MGR)>mLh>Z`lxdS|S|h8~ z6FVx%SUra$?2@UL9%oi_vDL4nz|)Gu!s^UE*SOZt5iGMC1>6rfCKY^|y;hLRE51Ur zeqgaLTB!GPhiZkdRQNLrZ&i4Y!uPVe!d!NRYFW%uYs9mILr3AwHn-OTr&h}qB7F;5 znY9Bz5`?>c+{%gI0VaI76sSftyo!v97m*2uKO@r`@cpKt`af``&I^mtYIV`BBn0U2 zX$xVr^hZ(rF}yE`W)I4c?iVnrPSlG(LP+)R12a4f!X&7`dsS-gJ2T5r;0uzma zWxLe-G@=~35>TIX1VJuc3*b3vF3y@qHv;RIoKz}T1m)P$r)(~gM7TYQR%msdl5~5#|2{4BRXjK z7(DFS!?;Xw3962uNW>WCc?lORiUpL-&8_VPH4$C`AKis8i11wTEN8nxLrYO}|GuJ! z1=xb7HIPJh5Qe^K+6Ioa6b-^qqxowXT=sqN5QbXJ#faSaWQ3u1OO#L#rWJ;oh+aH^ zTg>_>%gz7E1~093XiUrIET2>6XvnqF9E0C}aD{{B!fZMsTN-i&J0a$(|AH2PBF4#9 z>s@QDrj%Y!_4kPHiXVu-9u`N4pw$c^fnA5R4=B}tMSrmE=+^~- zP}JF$~392M6|6d(&7Z8TtsImz9kZ8PKUjhyYT{GIUU{2TQG}kPmo}&J3(3^ zJ;AO}XM}V@Y7%Vi2(=}k(5}dK@a*nr!O0U5kTIHjw?iGNc(A#PjUdEsI&5qD%nV24BfJixA* z9U5XF_)^c;h-92|2|fi^0UL>*Sqp76!%-G~AOH;l&8H?-TWDKlhVPDlHj^r7;2P3~@~-aFJl`aB5HnFP}we$dURn{8MTI9Gq4clB #include #include +#include #include #include #include #include +struct user_cmd { + int die; + int block; + int wu; +}; + +#define TEST_IOCTL_READ _IO('N', 0x01) +#define TEST_IOCTL_WRITE _IO('N', 0x02) +#define TEST_IOCTL_ERASE _IO('N', 0x03) + + +void test_read (int32_t dev_h, int die, int block, int wu) +{ + struct user_cmd c; + c.die = die; + c.block = block; + c.wu = wu; + ioctl (dev_h, TEST_IOCTL_READ, &c); +} + +void test_write (int32_t dev_h, int die, int block, int wu) +{ + struct user_cmd c; + c.die = die; + c.block = block; + c.wu = wu; + ioctl (dev_h, TEST_IOCTL_WRITE, &c); +} + +void test_erase (int32_t dev_h, int die, int block) +{ + struct user_cmd c; + c.die = die; + c.block = block; + ioctl (dev_h, TEST_IOCTL_ERASE, &c); +} + int main (int argc, char** argv) { int32_t dev_h = -1; char* dev_name = "/dev/kernel_nvme/control"; - int i = 0; fprintf (stderr, "BlueDBM format tools (Ver 0.1)\n\n"); @@ -51,10 +88,25 @@ int main (int argc, char** argv) /* Send a BDBM format command using IOCTL * Everything will be done by bdbm_drv.ko */ - for (i = 0; i < 500; i++) { - ioctl (dev_h, 1, 0); - ioctl (dev_h, 0, 0); - } + + test_erase (dev_h, 0, 0); + test_read (dev_h, 0, 0, 0); + test_write (dev_h, 0, 0, 0); + test_read (dev_h, 1, 1, 0); + printf ("\n"); + + + test_erase (dev_h, 1, 1); + test_write (dev_h, 1, 1, 0); + test_read (dev_h, 1, 1, 0); + test_erase (dev_h, 1, 1); + test_read (dev_h, 1, 1, 0); + printf ("\n"); + + test_read (dev_h, 0, 0, 0); + printf ("\n"); + + /* close the device */ if (dev_h != -1) { diff --git a/frontend/kernel_nvme/kmain.c b/frontend/kernel_nvme/kmain.c index 85c90b4..ba0a1ed 100644 --- a/frontend/kernel_nvme/kmain.c +++ b/frontend/kernel_nvme/kmain.c @@ -37,8 +37,12 @@ THE SOFTWARE. bdbm_drv_info_t* _bdi = NULL; -int ridx = 0; -int widx = 0; +/*int ridx = 0;*/ +/*int widx = 0;*/ + +#define BITS_PER_SLICE 6 +#define BITS_PER_WU 7 +#define BITS_PER_DIE 6 #include @@ -55,7 +59,6 @@ struct request *nvme_alloc_request(struct request_queue *q, return req; req->cmd_type = REQ_TYPE_DRV_PRIV; - //req->cmd_flags |= REQ_FAILFAST_DRIVER; req->__data_len = 0; req->__sector = (sector_t) -1; req->bio = req->biotail = NULL; @@ -67,15 +70,18 @@ struct request *nvme_alloc_request(struct request_queue *q, return req; } -int simple_read (bdbm_drv_info_t* bdi) +int simple_read (bdbm_drv_info_t* bdi, int die, int block, int wu) { int ret; struct request *rq; - unsigned bufflen = 256 * 512; + unsigned bufflen = 64 * 4096; struct nvme_command cmd; void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - int req_ofs = (ridx * 256) + 2048, req_len = 255; + int req_len = 63; + int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + die << (BITS_PER_WU + BITS_PER_SLICE) | + wu << (BITS_PER_SLICE); if (_bdi == NULL) return 0; @@ -90,10 +96,6 @@ int simple_read (bdbm_drv_info_t* bdi) if (ret) goto out; - /*bdbm_msg ("rq->__data_len = %d", rq->__data_len);*/ - /*bdbm_msg ("rq->bio = %p rq->biotail = %p", rq->bio, rq->biotail);*/ - /*bdbm_msg ("rq->nr_phys_segments = %d", rq->nr_phys_segments);*/ - cmd.rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ cmd.rw.flags = 0; cmd.rw.nsid = 1; @@ -125,94 +127,97 @@ int simple_read (bdbm_drv_info_t* bdi) kfree (ubuffer); blk_mq_free_request(rq); - ridx++; return 0; } -int simple_write (bdbm_drv_info_t* bdi) +int simple_write (bdbm_drv_info_t* bdi, int die, int block, int wu) { -#if 0 int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command cmd; + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + char* ubuffer_char = (char*)ubuffer; - struct nvme_command c; - unsigned length, meta_len; - void *metadata; - - struct request *req; - unsigned bufflen = 256 * 512; - char* ubuffer = bdbm_malloc (bufflen); - - int req_ofs = 2048, req_len = 255; + int req_len = 63; + int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + die << (BITS_PER_WU + BITS_PER_SLICE) | + wu << (BITS_PER_SLICE); if (_bdi == NULL) return 0; - /* setup the length of the request */ - length = (req_len + 1) << 9; - meta_len = (req_len + 1) * 0; - metadata = NULL; - - /* setup the command */ - memset (&c, 0, sizeof(c)); - c.rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ - c.rw.flags = 0; - c.rw.nsid = 1; - c.rw.slba = req_ofs; /* it must be the unit of 255 */ - c.rw.length = req_len; /* it must be the unit of 255 */ - c.rw.control = 0; - c.rw.dsmgmt = 0; - c.rw.reftag = 0; - c.rw.apptag = 0; - c.rw.appmask = 0; - - /* create a request */ - req = nvme_alloc_request(bdi->q, &c, 0); - if (IS_ERR(req)) - return PTR_ERR(req); + ubuffer_char[0] = die+1; + ubuffer_char[1] = block+1; + ubuffer_char[2] = wu+1; + ubuffer_char[3] = 0; - req->timeout = 0; + rq = blk_mq_alloc_request(bdi->q, 1, 0); + if (IS_ERR(rq)) + return -ENOMEM; - ubuffer[0] = 0x0A; - ubuffer[1] = 0x0B; - ubuffer[2] = 0x0C; - ubuffer[3] = 0x0D; + rq->cmd_type = REQ_TYPE_DRV_PRIV; - if (ubuffer && bufflen) { - ret = blk_rq_map_kern(bdi->q, req, ubuffer, bufflen, GFP_KERNEL); - if (ret) - goto out; - } + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) + goto out; + + cmd.rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ + cmd.rw.flags = 0; + cmd.rw.nsid = 1; + cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd.rw.length = req_len; /* it must be the unit of 255 */ + cmd.rw.control = 0; + cmd.rw.dsmgmt = 0; + cmd.rw.reftag = 0; + cmd.rw.apptag = 0; + cmd.rw.appmask = 0; + + rq->cmd = (unsigned char *)&cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; - blk_execute_rq (req->q, bdi->gd, req, 0); - ret = req->errors; - if (ret != 0) + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) bdbm_msg ("ret = %u", ret); - /*bdbm_msg ("data: %x %x %x %x", ubuffer[0], ubuffer[1], ubuffer[2], ubuffer[3]);*/ + /*{*/ + /*char* tmp = (char*)ubuffer;*/ + /*bdbm_msg ("data: %x %x %x %x", tmp[0], tmp[1], tmp[2], tmp[3]);*/ + /*}*/ out: - blk_mq_free_request(req); - bdbm_free (ubuffer); + kfree (ubuffer); + blk_mq_free_request(rq); - return ret; -#endif + return 0; +} +int simple_erase (bdbm_drv_info_t* bdi, int die, int block) +{ int ret; struct request *rq; - unsigned bufflen = 256 * 512; + unsigned bufflen = 64 * 4096; struct nvme_command cmd; void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - char* ubuffer_char = (char*)ubuffer; + __le32* ubuffer_char = (__le32*)ubuffer; - int req_ofs = (widx * 256) + 2048, req_len = 255; + __u32 req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + die << (BITS_PER_WU + BITS_PER_SLICE); if (_bdi == NULL) return 0; - ubuffer_char[0] = widx; - ubuffer_char[1] = widx+1; - ubuffer_char[2] = widx+2; - ubuffer_char[3] = widx+3; + ubuffer_char[0] = + (req_ofs >> 24 & 0x000000FF) | + (req_ofs >> 8 & 0x0000FF00) | + (req_ofs << 8 & 0x00FF0000) | + (req_ofs << 24 & 0xFF000000) ; + + bdbm_msg ("%x %x", ubuffer_char[0], req_ofs); rq = blk_mq_alloc_request(bdi->q, 1, 0); if (IS_ERR(rq)) @@ -224,20 +229,19 @@ int simple_write (bdbm_drv_info_t* bdi) if (ret) goto out; - /*bdbm_msg ("rq->__data_len = %d", rq->__data_len);*/ - /*bdbm_msg ("rq->bio = %p rq->biotail = %p", rq->bio, rq->biotail);*/ - /*bdbm_msg ("rq->nr_phys_segments = %d", rq->nr_phys_segments);*/ + memset(&cmd, 0, sizeof(cmd)); + cmd.common.opcode = 9; + cmd.common.flags = 0; + cmd.common.nsid = 1; + cmd.common.cdw2[0] = 0; + cmd.common.cdw2[1] = 0; + cmd.common.cdw10[0] = 0; + cmd.common.cdw10[1] = 4; + cmd.common.cdw10[2] = 0; + cmd.common.cdw10[3] = 0; + cmd.common.cdw10[4] = 0; + cmd.common.cdw10[5] = 0; - cmd.rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ - cmd.rw.flags = 0; - cmd.rw.nsid = 1; - cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd.rw.length = req_len; /* it must be the unit of 255 */ - cmd.rw.control = 0; - cmd.rw.dsmgmt = 0; - cmd.rw.reftag = 0; - cmd.rw.apptag = 0; - cmd.rw.appmask = 0; rq->cmd = (unsigned char *)&cmd; rq->cmd_len = sizeof(struct nvme_command); @@ -259,8 +263,6 @@ int simple_write (bdbm_drv_info_t* bdi) kfree (ubuffer); blk_mq_free_request(rq); - widx++; - return 0; } @@ -336,19 +338,39 @@ void bdbm_unregister (char* disk_name) EXPORT_SYMBOL(bdbm_unregister); +struct user_cmd { + int die; + int block; + int wu; +}; + +#define TEST_IOCTL_READ _IO('N', 0x01) +#define TEST_IOCTL_WRITE _IO('N', 0x02) +#define TEST_IOCTL_ERASE _IO('N', 0x03) + static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) { - if (_bdi == NULL) + struct user_cmd c; + + if (_bdi == NULL) { return 0; + } switch (cmd) { - case 0: - bdbm_msg ("simple_read - %d", ridx); - simple_read (_bdi); + case TEST_IOCTL_READ: + copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); + bdbm_msg ("simple_read: %d %d %d", c.die, c.block, c.wu); + simple_read (_bdi, c.die, c.block, c.wu); + break; + case TEST_IOCTL_WRITE: + copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); + bdbm_msg ("simple_write: %d %d %d", c.die, c.block, c.wu); + simple_write (_bdi, c.die, c.block, c.wu); break; - case 1: - bdbm_msg ("simple_write - %d", widx); - simple_write (_bdi); + case TEST_IOCTL_ERASE: + copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); + bdbm_msg ("simple_erase: %d %d", c.die, c.block); + simple_erase (_bdi, c.die, c.block); break; default: bdbm_msg ("default"); From 53a4704d4077694aff6322aff03f9f2a22260c9f Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Tue, 19 Jul 2016 15:50:40 -0700 Subject: [PATCH 05/51] added hynix-dumbssd dm --- devices/common/dev_params.c | 11 +- devices/ramdrive/Makefile | 1 + devices/ramdrive/hynix_dumbssd.c | 307 +++++++++++++++++++++++++++++ devices/ramdrive/hynix_dumbssd.h | 33 ++++ frontend/kernel_nvme/kmain.c | 4 +- frontend/kernel_nvme/register.sh | 6 +- frontend/kernel_nvme/unregister.sh | 2 +- include/bdbm_drv.h | 4 +- 8 files changed, 354 insertions(+), 14 deletions(-) create mode 100644 devices/ramdrive/hynix_dumbssd.c create mode 100644 devices/ramdrive/hynix_dumbssd.h diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index 63d4b08..a23f844 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -44,12 +44,11 @@ THE SOFTWARE. enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, - NAND_PAGE_OOB_SIZE = 8*BDBM_MAX_PAGES, - NR_PAGES_PER_BLOCK = 1, - /*NR_BLOCKS_PER_CHIP = (128*128*16)/BDBM_MAX_PAGES,*/ - NR_BLOCKS_PER_CHIP = (128*32*32)/BDBM_MAX_PAGES, - NR_CHIPS_PER_CHANNEL = 1, - NR_CHANNELS = 1, + NAND_PAGE_OOB_SIZE = 0, /* P2L mapping is not supported yet */ + NR_PAGES_PER_BLOCK = 128, /* 7-bit (BITS_FOR_WU) */ + NR_BLOCKS_PER_CHIP = 64, /* 8-bit (BITS_FOR_VBLK) */ + NR_CHIPS_PER_CHANNEL = 1, /* set to 1 by default */ + NR_CHANNELS = 64, /* 6-bit (BITS_FOR_DIE) */ NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ NAND_PAGE_PROG_TIME_US = 500, /* 1.3ms */ diff --git a/devices/ramdrive/Makefile b/devices/ramdrive/Makefile index e33370b..3cb5a41 100644 --- a/devices/ramdrive/Makefile +++ b/devices/ramdrive/Makefile @@ -27,6 +27,7 @@ risa_dev_ramdrive-y := \ $(DEV_COMMON)/dev_stub.o \ dev_ramssd.o \ dm_ramdrive.o \ + hynix_dumbssd.o \ obj-m := risa_dev_ramdrive.o diff --git a/devices/ramdrive/hynix_dumbssd.c b/devices/ramdrive/hynix_dumbssd.c new file mode 100644 index 0000000..c495e77 --- /dev/null +++ b/devices/ramdrive/hynix_dumbssd.c @@ -0,0 +1,307 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#if defined (KERNEL_MODE) +#include +#include + +#include /* workqueue */ + +#else +#error Invalid Platform (KERNEL_MODE or USER_MODE) +#endif + +#include +#include +#include "hynix_dumbssd.h" + + +#define BITS_PER_SLICE 6 +#define BITS_PER_WU 7 +#define BITS_PER_DIE 6 + + +struct request *nvme_alloc_request(struct request_queue *q, + struct nvme_command *cmd, unsigned int flags) +{ + bool write = cmd->common.opcode & 1; + struct request *req; + + req = blk_mq_alloc_request(q, write, flags); + if (IS_ERR(req)) + return req; + + req->cmd_type = REQ_TYPE_DRV_PRIV; + req->__data_len = 0; + req->__sector = (sector_t) -1; + req->bio = req->biotail = NULL; + + req->cmd = (unsigned char *)cmd; + req->cmd_len = sizeof(struct nvme_command); + req->special = (void *)0; + + return req; +} + +int simple_read ( + bdbm_drv_info_t* bdi, + int die, + int block, + int wu, + kp_stt_t* kp_stt, + uint8_t** kp_ptr) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command cmd; + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + + int req_len = 63; + int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + die << (BITS_PER_WU + BITS_PER_SLICE) | + wu << (BITS_PER_SLICE); + + rq = blk_mq_alloc_request(bdi->q, 0, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) + goto out; + + cmd.rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ + cmd.rw.flags = 0; + cmd.rw.nsid = 1; + cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd.rw.length = req_len; /* it must be the unit of 255 */ + cmd.rw.control = 0; + cmd.rw.dsmgmt = 0; + cmd.rw.reftag = 0; + cmd.rw.apptag = 0; + cmd.rw.appmask = 0; + + rq->cmd = (unsigned char *)&cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) + bdbm_msg ("ret = %u", ret); + + { + char* tmp = (char*)ubuffer; + bdbm_msg ("data: %x %x %x %x", tmp[0], tmp[1], tmp[2], tmp[3]); + } + +out: + kfree (ubuffer); + blk_mq_free_request(rq); + + return 0; +} + +int simple_write ( + bdbm_drv_info_t* bdi, + int die, + int block, + int wu, + kp_stt_t* kp_stt, + uint8_t** kp_ptr) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command cmd; + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + char* ubuffer_char = (char*)ubuffer; + + int req_len = 63; + int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + die << (BITS_PER_WU + BITS_PER_SLICE) | + wu << (BITS_PER_SLICE); + + ubuffer_char[0] = die+1; + ubuffer_char[1] = block+1; + ubuffer_char[2] = wu+1; + ubuffer_char[3] = 0; + + rq = blk_mq_alloc_request(bdi->q, 1, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) + goto out; + + cmd.rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ + cmd.rw.flags = 0; + cmd.rw.nsid = 1; + cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd.rw.length = req_len; /* it must be the unit of 255 */ + cmd.rw.control = 0; + cmd.rw.dsmgmt = 0; + cmd.rw.reftag = 0; + cmd.rw.apptag = 0; + cmd.rw.appmask = 0; + + rq->cmd = (unsigned char *)&cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) + bdbm_msg ("ret = %u", ret); + + /*{*/ + /*char* tmp = (char*)ubuffer;*/ + /*bdbm_msg ("data: %x %x %x %x", tmp[0], tmp[1], tmp[2], tmp[3]);*/ + /*}*/ + +out: + kfree (ubuffer); + blk_mq_free_request(rq); + + return 0; +} + +int simple_erase (bdbm_drv_info_t* bdi, int die, int block) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command cmd; + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + __le32* ubuffer_char = (__le32*)ubuffer; + + __u32 req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + die << (BITS_PER_WU + BITS_PER_SLICE); + + ubuffer_char[0] = + (req_ofs >> 24 & 0x000000FF) | + (req_ofs >> 8 & 0x0000FF00) | + (req_ofs << 8 & 0x00FF0000) | + (req_ofs << 24 & 0xFF000000) ; + + /*bdbm_msg ("%x %x", ubuffer_char[0], req_ofs);*/ + + rq = blk_mq_alloc_request(bdi->q, 1, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) + goto out; + + memset(&cmd, 0, sizeof(cmd)); + cmd.common.opcode = 9; + cmd.common.flags = 0; + cmd.common.nsid = 1; + cmd.common.cdw2[0] = 0; + cmd.common.cdw2[1] = 0; + cmd.common.cdw10[0] = 0; + cmd.common.cdw10[1] = 4; + cmd.common.cdw10[2] = 0; + cmd.common.cdw10[3] = 0; + cmd.common.cdw10[4] = 0; + cmd.common.cdw10[5] = 0; + + rq->cmd = (unsigned char *)&cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) + bdbm_msg ("ret = %u", ret); + +out: + kfree (ubuffer); + blk_mq_free_request(rq); + + return 0; +} + +uint32_t hynix_dumbssd_send_cmd ( + bdbm_drv_info_t* bdi, + bdbm_llm_req_t* r) +{ + uint32_t ret = -1; + + switch (r->req_type) { + case REQTYPE_READ_DUMMY: + /* do nothing */ + break; + case REQTYPE_WRITE: + case REQTYPE_GC_WRITE: + case REQTYPE_RMW_WRITE: + case REQTYPE_META_WRITE: + ret = simple_write (bdi, + r->phyaddr.channel_no, + r->phyaddr.block_no, + r->phyaddr.page_no, + r->fmain.kp_stt, + r->fmain.kp_ptr); + break; + + case REQTYPE_READ: + case REQTYPE_GC_READ: + case REQTYPE_RMW_READ: + case REQTYPE_META_READ: + ret = simple_read (bdi, + r->phyaddr.channel_no, + r->phyaddr.block_no, + r->phyaddr.page_no, + r->fmain.kp_stt, + r->fmain.kp_ptr); + break; + + case REQTYPE_GC_ERASE: + ret = simple_erase (bdi, + r->phyaddr.channel_no, + r->phyaddr.block_no); + break; + + default: + bdbm_error ("invalid REQTYPE (%u)", r->req_type); + bdbm_bug_on (1); + break; + } + return 0; +} + diff --git a/devices/ramdrive/hynix_dumbssd.h b/devices/ramdrive/hynix_dumbssd.h new file mode 100644 index 0000000..e3271e7 --- /dev/null +++ b/devices/ramdrive/hynix_dumbssd.h @@ -0,0 +1,33 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#ifndef _HYNIX_DUMBSSD_H +#define _HYNIX_DUMBSSD_H + +#include "bdbm_drv.h" +#include "debug.h" + +uint32_t hynix_dumbssd_send_cmd (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r); + +#endif diff --git a/frontend/kernel_nvme/kmain.c b/frontend/kernel_nvme/kmain.c index ba0a1ed..1d3f68f 100644 --- a/frontend/kernel_nvme/kmain.c +++ b/frontend/kernel_nvme/kmain.c @@ -403,7 +403,7 @@ static int __init bdbm_drv_init (void) if (ret) pr_err("nvm: misc_register failed for control device"); - /*bdbm_register (NULL, NULL);*/ + bdbm_register (NULL, NULL); return 0; } @@ -412,7 +412,7 @@ static void __exit bdbm_drv_exit(void) { misc_deregister(&_nvm_misc); - /*bdbm_unregister(NULL);*/ + bdbm_unregister(NULL); } MODULE_AUTHOR ("Sungjin Lee "); diff --git a/frontend/kernel_nvme/register.sh b/frontend/kernel_nvme/register.sh index 3cecf04..8f35b31 100755 --- a/frontend/kernel_nvme/register.sh +++ b/frontend/kernel_nvme/register.sh @@ -4,6 +4,6 @@ sudo touch /usr/share/bdbm_drv/dm.dat sudo insmod risa_dev_ramdrive.ko sudo insmod bdbm_drv.ko -sudo insmod nvme.ko -#sudo mkfs -t ext4 -b 4096 /dev/blueDBM -#sudo mount \-t ext4 \-o discard /dev/blueDBM /media/blueDBM +#sudo insmod nvme.ko +sudo mkfs -t ext4 -b 4096 /dev/blueDBM +sudo mount \-t ext4 \-o discard /dev/blueDBM /media/blueDBM diff --git a/frontend/kernel_nvme/unregister.sh b/frontend/kernel_nvme/unregister.sh index 5989aab..ed5256e 100755 --- a/frontend/kernel_nvme/unregister.sh +++ b/frontend/kernel_nvme/unregister.sh @@ -1,4 +1,4 @@ -#sudo umount /media/nvme0n1 +sudo umount /media/blueDBM sudo rmmod nvme sudo rmmod bdbm_drv sudo rmmod risa_dev_* diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 557a81e..4779e67 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -133,8 +133,8 @@ typedef struct { } bdbm_phyaddr_t; /* max kernel pages per physical flash page */ -/*#define BDBM_MAX_PAGES 1*/ -#define BDBM_MAX_PAGES 32 +#define BDBM_MAX_PAGES 1 +/*#define BDBM_MAX_PAGES 32*/ /* a bluedbm blockio request */ #define BDBM_BLKIO_MAX_VECS 512 From 0611c7c5d1111d3f991c99f8c515831e48fda0a4 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Sat, 23 Jul 2016 10:06:28 -0700 Subject: [PATCH 06/51] adding bio --- common/utils/usync.h | 6 +- devices/common/dev_params.c | 16 +- devices/dragonfire/libdf.a | Bin 29106 -> 32370 bytes devices/ramdrive/dev_ramssd.c | 3 + devices/ramdrive/dm_ramdrive.c | 15 +- devices/ramdrive/hynix_dumbssd.c | 391 +++++++++++++++++++------------ devices/ramdrive/hynix_dumbssd.h | 6 +- examples/test/test | Bin 12040 -> 12040 bytes examples/test/test.c | 11 +- frontend/kernel_nvme/blkdev.c | 10 +- frontend/kernel_nvme/kmain.c | 17 +- frontend/kernel_nvme/register.sh | 7 +- ftl/hlm_reqs_pool.c | 7 +- ftl/llm_mq.c | 6 +- 14 files changed, 303 insertions(+), 192 deletions(-) diff --git a/common/utils/usync.h b/common/utils/usync.h index ec6e0e5..f055e0e 100644 --- a/common/utils/usync.h +++ b/common/utils/usync.h @@ -69,9 +69,11 @@ THE SOFTWARE. #define bdbm_spinlock_t spinlock_t #define bdbm_spin_lock_init(a) spin_lock_init(a) #define bdbm_spin_lock(a) spin_lock(a) -#define bdbm_spin_lock_irqsave(a,flag) spin_lock_irqsave(a,flag) +/*#define bdbm_spin_lock_irqsave(a,flag) spin_lock_irqsave(a,flag)*/ +#define bdbm_spin_lock_irqsave(a,flag) spin_lock(a) #define bdbm_spin_unlock(a) spin_unlock(a) -#define bdbm_spin_unlock_irqrestore(a,flag) spin_unlock_irqrestore(a,flag) +/*#define bdbm_spin_unlock_irqrestore(a,flag) spin_unlock_irqrestore(a,flag)*/ +#define bdbm_spin_unlock_irqrestore(a,flag) spin_unlock(a) #define bdbm_spin_lock_destory(a) diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index a23f844..87ed03d 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -42,11 +42,12 @@ THE SOFTWARE. #include "umemory.h" #include "debug.h" +#if 0 enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, NAND_PAGE_OOB_SIZE = 0, /* P2L mapping is not supported yet */ - NR_PAGES_PER_BLOCK = 128, /* 7-bit (BITS_FOR_WU) */ - NR_BLOCKS_PER_CHIP = 64, /* 8-bit (BITS_FOR_VBLK) */ + NR_PAGES_PER_BLOCK = 64, /* 7-bit (BITS_FOR_WU) */ + NR_BLOCKS_PER_CHIP = 128, /* 8-bit (BITS_FOR_VBLK) */ NR_CHIPS_PER_CHANNEL = 1, /* set to 1 by default */ NR_CHANNELS = 64, /* 6-bit (BITS_FOR_DIE) */ NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ @@ -55,22 +56,21 @@ enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_READ_TIME_US = 100, /* 100us */ NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ }; +#endif -#if 0 enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, NAND_PAGE_OOB_SIZE = 8*BDBM_MAX_PAGES, - NR_PAGES_PER_BLOCK = 128, - NR_BLOCKS_PER_CHIP = 192/BDBM_MAX_PAGES, - NR_CHIPS_PER_CHANNEL = 4, - NR_CHANNELS = 8, + NR_PAGES_PER_BLOCK = 64, + NR_BLOCKS_PER_CHIP = 128, + NR_CHIPS_PER_CHANNEL = 1, + NR_CHANNELS = 64, NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ NAND_PAGE_PROG_TIME_US = 500, /* 1.3ms */ NAND_PAGE_READ_TIME_US = 100, /* 100us */ NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ }; -#endif int _param_nr_channels = NR_CHANNELS; int _param_nr_chips_per_channel = NR_CHIPS_PER_CHANNEL; diff --git a/devices/dragonfire/libdf.a b/devices/dragonfire/libdf.a index b2bcd371ce767180316ed45baef570f2cd6e3aaf..304f460c1628f03a1813d942eeea23e14bd22ccc 100644 GIT binary patch literal 32370 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 literal 29106 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 H{PsTqx$sPi diff --git a/devices/ramdrive/dev_ramssd.c b/devices/ramdrive/dev_ramssd.c index 8960e3a..923a8c0 100644 --- a/devices/ramdrive/dev_ramssd.c +++ b/devices/ramdrive/dev_ramssd.c @@ -462,7 +462,10 @@ void __ramssd_cmd_done (dev_ramssd_info_t* ri) bdbm_spin_unlock (&ri->ramssd_lock); /* call the interrupt handler */ + /*bdbm_msg ("ramdrive -- callback");*/ +#if 0 ri->intr_handler (ptr_req); +#endif } else { bdbm_spin_unlock (&ri->ramssd_lock); } diff --git a/devices/ramdrive/dm_ramdrive.c b/devices/ramdrive/dm_ramdrive.c index 886741f..86e29fb 100644 --- a/devices/ramdrive/dm_ramdrive.c +++ b/devices/ramdrive/dm_ramdrive.c @@ -41,6 +41,8 @@ THE SOFTWARE. #include "utime.h" #include "umemory.h" +#include "hynix_dumbssd.h" + /* interface for dm */ bdbm_dm_inf_t _bdbm_dm_inf = { @@ -136,13 +138,23 @@ void dm_ramdrive_close (bdbm_drv_info_t* bdi) uint32_t dm_ramdrive_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req) { uint32_t ret; + dm_ramssd_private_t* p = BDBM_DM_PRIV (bdi); +#if 0 + if ((ret = hynix_dumbssd_send_cmd (bdi, ptr_llm_req, __dm_ramdrive_ih)) != 0) { + bdbm_error ("hynix_dumbssd_send_cmd"); + } +#else if ((ret = dev_ramssd_send_cmd (p->ramssd, ptr_llm_req)) != 0) { bdbm_error ("dev_ramssd_send_cmd failed"); - /* there is nothing to do */ } + if ((ret = hynix_dumbssd_send_cmd (bdi, ptr_llm_req, __dm_ramdrive_ih)) != 0) { + bdbm_error ("hynix_dumbssd_send_cmd"); + } +#endif + return ret; } @@ -164,6 +176,7 @@ uint32_t dm_ramdrive_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) return ret; */ + return 0; } diff --git a/devices/ramdrive/hynix_dumbssd.c b/devices/ramdrive/hynix_dumbssd.c index c495e77..655cfc9 100644 --- a/devices/ramdrive/hynix_dumbssd.c +++ b/devices/ramdrive/hynix_dumbssd.c @@ -41,6 +41,88 @@ THE SOFTWARE. #define BITS_PER_WU 7 #define BITS_PER_DIE 6 +/*#define USE_ASYNC*/ + + +struct hd_req { + bdbm_drv_info_t* bdi; + bdbm_llm_req_t* r; + uint64_t die; + uint64_t block; + uint64_t wu; + uint8_t* kp_ptr; + void* ubuffer; + void (*intr_handler)(void*); +}; + +static struct bio* hynix_add_bio_to_req ( + struct request_queue *q, + int rw, + uint32_t addr, + uint8_t* buffer) +{ + struct bio *bio = NULL; + struct page *page = NULL; + + page = alloc_pages (GFP_NOFS | __GFP_ZERO, 6); + if (IS_ERR (page)) { + bdbm_error ("alloc_page() failed"); + return NULL; + } + lock_page (page); + + bio = bio_alloc(GFP_NOIO, 64); + if (!bio) { + bdbm_error ("bio_alloc() failed"); + return NULL; + } + + bio->bi_iter.bi_sector = addr * 8; + bio->bi_rw = rw; /* READ or WRITE */ + bio->bi_private = page; + bio->bi_end_io = NULL; + + if (rw == WRITE) + memcpy ((uint8_t*)page_address (page), buffer, 4096); + + bio_add_pc_page(q, bio, page, 4096, 0); + + return bio; +} + +static void hynix_del_bio_from_req (struct bio* bio, uint8_t* buffer) +{ + struct page* page = bio->bi_private; + + if (page) { + if (buffer) + memcpy ((uint8_t*)buffer, (uint8_t*)page_address (page), 4096); + + ClearPageUptodate (page); + unlock_page (page); + __free_pages (page, 6); + } + + bio_reset (bio); + bio_put (bio); +} + +static void nvme_nvm_end_io (struct request *rq, int error) +{ + struct hd_req* hdr = rq->end_io_data; + + bdbm_bug_on (hdr == NULL); + bdbm_bug_on (hdr->r == NULL); + hdr->intr_handler (hdr->r); + + bdbm_bug_on (rq == NULL); + bdbm_bug_on (rq->cmd == NULL); + kfree (rq->cmd); + if (hdr->ubuffer) + kfree (hdr->ubuffer); + kfree (hdr); + blk_mq_free_request(rq); +} struct request *nvme_alloc_request(struct request_queue *q, struct nvme_command *cmd, unsigned int flags) @@ -66,235 +148,231 @@ struct request *nvme_alloc_request(struct request_queue *q, int simple_read ( bdbm_drv_info_t* bdi, - int die, - int block, - int wu, - kp_stt_t* kp_stt, - uint8_t** kp_ptr) + struct hd_req* hdr) { - int ret; + struct bio* bio = NULL; struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command cmd; - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | + hdr->wu << (BITS_PER_SLICE); + + bdbm_msg ("READ: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); - int req_len = 63; - int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - die << (BITS_PER_WU + BITS_PER_SLICE) | - wu << (BITS_PER_SLICE); + /* setup bio */ + bio = hynix_add_bio_to_req (bdi->q, READ, req_ofs, NULL); + + /* alloc request */ rq = blk_mq_alloc_request(bdi->q, 0, 0); - if (IS_ERR(rq)) + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); return -ENOMEM; - + } rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->ioprio = bio_prio(bio); - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) - goto out; - - cmd.rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ - cmd.rw.flags = 0; - cmd.rw.nsid = 1; - cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd.rw.length = req_len; /* it must be the unit of 255 */ - cmd.rw.control = 0; - cmd.rw.dsmgmt = 0; - cmd.rw.reftag = 0; - cmd.rw.apptag = 0; - cmd.rw.appmask = 0; - - rq->cmd = (unsigned char *)&cmd; + if (bio_has_data(bio)) + rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); + rq->__data_len = bio->bi_iter.bi_size; + rq->bio = rq->biotail = bio; + + rq->cmd = (unsigned char *)cmd; rq->cmd_len = sizeof(struct nvme_command); rq->special = (void *)0; - rq->end_io_data = NULL; - + rq->end_io_data = hdr; + + /* setup cmd */ + cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = 63; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + +#ifdef USE_ASYNC + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) - bdbm_msg ("ret = %u", ret); - - { - char* tmp = (char*)ubuffer; - bdbm_msg ("data: %x %x %x %x", tmp[0], tmp[1], tmp[2], tmp[3]); - } - -out: - kfree (ubuffer); - blk_mq_free_request(rq); + hynix_del_bio_from_req (bio, hdr->kp_ptr); + rq->end_io_data = hdr; + nvme_nvm_end_io (rq, 0); +#endif return 0; } int simple_write ( bdbm_drv_info_t* bdi, - int die, - int block, - int wu, - kp_stt_t* kp_stt, - uint8_t** kp_ptr) + struct hd_req* hdr) { - int ret; + struct bio* bio = NULL; struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command cmd; - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - char* ubuffer_char = (char*)ubuffer; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | + hdr->wu << (BITS_PER_SLICE); - int req_len = 63; - int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - die << (BITS_PER_WU + BITS_PER_SLICE) | - wu << (BITS_PER_SLICE); + bdbm_msg ("WRITE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); - ubuffer_char[0] = die+1; - ubuffer_char[1] = block+1; - ubuffer_char[2] = wu+1; - ubuffer_char[3] = 0; + /* setup bio */ + bio = hynix_add_bio_to_req (bdi->q, WRITE, req_ofs, hdr->kp_ptr); - rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) + /* allocate request */ + rq = blk_mq_alloc_request (bdi->q, 1, 0); + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); return -ENOMEM; + } rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->ioprio = bio_prio(bio); + if (bio_has_data(bio)) + rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); + rq->__data_len = bio->bi_iter.bi_size; + rq->bio = rq->biotail = bio; - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) - goto out; - - cmd.rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ - cmd.rw.flags = 0; - cmd.rw.nsid = 1; - cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd.rw.length = req_len; /* it must be the unit of 255 */ - cmd.rw.control = 0; - cmd.rw.dsmgmt = 0; - cmd.rw.reftag = 0; - cmd.rw.apptag = 0; - cmd.rw.appmask = 0; - - rq->cmd = (unsigned char *)&cmd; + rq->cmd = (unsigned char *)cmd; rq->cmd_len = sizeof(struct nvme_command); rq->special = (void *)0; - rq->end_io_data = NULL; - + rq->end_io_data = hdr; + + /* setup cmd */ + cmd->rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = 63; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + +#ifdef USE_ASYNC + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) - bdbm_msg ("ret = %u", ret); - - /*{*/ - /*char* tmp = (char*)ubuffer;*/ - /*bdbm_msg ("data: %x %x %x %x", tmp[0], tmp[1], tmp[2], tmp[3]);*/ - /*}*/ - -out: - kfree (ubuffer); - blk_mq_free_request(rq); + hynix_del_bio_from_req (bio, NULL); + rq->end_io_data = hdr; + nvme_nvm_end_io (rq, 0); +#endif return 0; } -int simple_erase (bdbm_drv_info_t* bdi, int die, int block) +int simple_erase ( + bdbm_drv_info_t* bdi, + struct hd_req* hdr) { - int ret; struct request *rq; + struct bio* bio = NULL; unsigned bufflen = 64 * 4096; - struct nvme_command cmd; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - __le32* ubuffer_char = (__le32*)ubuffer; + __u32 req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE); + __le64* ubuffer_64 = (__le64*)ubuffer; + + bdbm_msg ("ERASE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); - __u32 req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - die << (BITS_PER_WU + BITS_PER_SLICE); + hdr->ubuffer = ubuffer; + ubuffer_64[1] = req_ofs; - ubuffer_char[0] = - (req_ofs >> 24 & 0x000000FF) | - (req_ofs >> 8 & 0x0000FF00) | - (req_ofs << 8 & 0x00FF0000) | - (req_ofs << 24 & 0xFF000000) ; - - /*bdbm_msg ("%x %x", ubuffer_char[0], req_ofs);*/ + /* setup bio */ + bio = hynix_add_bio_to_req (bdi->q, WRITE, req_ofs, ubuffer); + /* alloc request */ rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); return -ENOMEM; + } rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->ioprio = bio_prio(bio); + if (bio_has_data(bio)) + rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); + rq->__data_len = bio->bi_iter.bi_size; + rq->bio = rq->biotail = bio; - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) - goto out; - - memset(&cmd, 0, sizeof(cmd)); - cmd.common.opcode = 9; - cmd.common.flags = 0; - cmd.common.nsid = 1; - cmd.common.cdw2[0] = 0; - cmd.common.cdw2[1] = 0; - cmd.common.cdw10[0] = 0; - cmd.common.cdw10[1] = 4; - cmd.common.cdw10[2] = 0; - cmd.common.cdw10[3] = 0; - cmd.common.cdw10[4] = 0; - cmd.common.cdw10[5] = 0; - - rq->cmd = (unsigned char *)&cmd; + rq->cmd = (unsigned char *)cmd; rq->cmd_len = sizeof(struct nvme_command); rq->special = (void *)0; - rq->end_io_data = NULL; - + rq->end_io_data = hdr; + + /* setup cmd */ + cmd->common.opcode = 9; + cmd->common.flags = 0; + cmd->common.nsid = 1; + cmd->common.cdw2[0] = 0; + cmd->common.cdw2[1] = 0; + cmd->common.cdw10[0] = 0; + cmd->common.cdw10[1] = 4; + cmd->common.cdw10[2] = 0; + cmd->common.cdw10[3] = 0; + cmd->common.cdw10[4] = 0; + cmd->common.cdw10[5] = 0; + +#ifdef USE_ASYNC + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) - bdbm_msg ("ret = %u", ret); - -out: - kfree (ubuffer); - blk_mq_free_request(rq); + hynix_del_bio_from_req (bio, NULL); + rq->end_io_data = hdr; + nvme_nvm_end_io (rq, 0); +#endif return 0; } uint32_t hynix_dumbssd_send_cmd ( bdbm_drv_info_t* bdi, - bdbm_llm_req_t* r) + bdbm_llm_req_t* r, + void (*intr_handler)(void*)) { uint32_t ret = -1; + struct hd_req* hdr = kzalloc (sizeof (struct hd_req), GFP_KERNEL); + + hdr->bdi = bdi; + hdr->r = r; + hdr->die = r->phyaddr.channel_no; + hdr->block = r->phyaddr.block_no; + hdr->wu = r->phyaddr.page_no; + hdr->intr_handler = intr_handler; + hdr->ubuffer = NULL; + hdr->kp_ptr = NULL; switch (r->req_type) { case REQTYPE_READ_DUMMY: - /* do nothing */ + intr_handler (r); break; + case REQTYPE_WRITE: case REQTYPE_GC_WRITE: case REQTYPE_RMW_WRITE: case REQTYPE_META_WRITE: - ret = simple_write (bdi, - r->phyaddr.channel_no, - r->phyaddr.block_no, - r->phyaddr.page_no, - r->fmain.kp_stt, - r->fmain.kp_ptr); + hdr->kp_ptr = r->fmain.kp_ptr[0]; + ret = simple_write (bdi, hdr); break; case REQTYPE_READ: case REQTYPE_GC_READ: case REQTYPE_RMW_READ: case REQTYPE_META_READ: - ret = simple_read (bdi, - r->phyaddr.channel_no, - r->phyaddr.block_no, - r->phyaddr.page_no, - r->fmain.kp_stt, - r->fmain.kp_ptr); + hdr->kp_ptr = r->fmain.kp_ptr[0]; + ret = simple_read (bdi, hdr); break; case REQTYPE_GC_ERASE: - ret = simple_erase (bdi, - r->phyaddr.channel_no, - r->phyaddr.block_no); + ret = simple_erase (bdi, hdr); break; default: @@ -302,6 +380,7 @@ uint32_t hynix_dumbssd_send_cmd ( bdbm_bug_on (1); break; } + return 0; } diff --git a/devices/ramdrive/hynix_dumbssd.h b/devices/ramdrive/hynix_dumbssd.h index e3271e7..b3e3d8a 100644 --- a/devices/ramdrive/hynix_dumbssd.h +++ b/devices/ramdrive/hynix_dumbssd.h @@ -28,6 +28,10 @@ THE SOFTWARE. #include "bdbm_drv.h" #include "debug.h" -uint32_t hynix_dumbssd_send_cmd (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r); +uint32_t hynix_dumbssd_send_cmd ( + bdbm_drv_info_t* bdi, + bdbm_llm_req_t* r, + void (*intr_handler)(void*) + ); #endif diff --git a/examples/test/test b/examples/test/test index 05674435571a5151127cd3925d497e5850477352..2f2994e1276dd2988eb2bd3de29bbd9eea4cb3a2 100755 GIT binary patch delta 755 zcmeB(>xi3hfpZTp0~qX?cyqs?1P_EG!Q%jCNK9VIcw40Fr$MmB2HhL8I|EGRQnk(* z?>pPNc?Q!d7LEzr4h$a04=QZVVwYr+S^?s9vwmVzVDRWXxJv;qd0Gz!HIWQiYt>yd0nmZ^r?jx45+Y&)`qAKdnJzyJSluKn`AgbU~=pv~ui z{2d?ZAG8qxlVo z$HBkMFZ3tJabMHy`1Sw)44_^MplKOES`X;Q13-EbkbVH9zX53mpo0P@$MRS+o|rt7 zN1yS<jG&-iY#A+Nl!CQ$7LkmDWs1lpLKdD)m(Pfq5YJNW^l zz$Cr^#wnWv`O=t}E;CKO$S5}XynrI(<;@=jE;BQ3*nCu^nvqd!v!j?8Bfl+2^8yYa z0fazu;pTMlvrLPdWNf}DozKL$W3r=MKS)qc zpK-!uM)`iAeG}!`86_70Qw#{OfJp`hBPIq0AqGAMg~=Ng(t&nMD)w_QI!#`wsn0nD ws&vZahnnV`FpUc)D{7f@B9dz&ke2~XycwGpYPmBr>P>#BYtEQASyAsf0Hf>)#sB~S delta 657 zcmeB(>xi3hf%6P60~nl{cyqs?1`mXz!Q%jCXiQ$ocw1z@^0i5~PMr>7kuH4e-P*o> z>9jMwn`bbcV&Pc8?ZDu1{Gh?+EOtpIsU09*H|r-h1qP4KgS!-fM(kq*68mpVp37;> z_;d0_PBkVzp2MG4X&Yv3{UhbQR8EDV`*_F^7InPT&%cwucMM|NZ}ebM2S^C0szgKr{CP`8$Ai zFq}NhFW&-UFgS)ghBd~tUqJupLZf9(l%DlNovC8ShP2device_capacity_in_byte >> 9; @@ -92,8 +93,13 @@ int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo) geo->cylinders, geo->sectors, nr_sectors); - return 1; + return 0; } +#else + geo->heads = 16; + geo->cylinders = 1024; + geo->sectors = 256; +#endif return 0; } @@ -247,7 +253,9 @@ uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) strcpy (bdbm_device.gd->disk_name, bdi->disk_name); /* setup disk capacity */ + blk_queue_max_hw_sectors (bdbm_device.queue, 8); capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + capacity = (capacity) - capacity/10; set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); /* add disk */ diff --git a/frontend/kernel_nvme/kmain.c b/frontend/kernel_nvme/kmain.c index 1d3f68f..d893da9 100644 --- a/frontend/kernel_nvme/kmain.c +++ b/frontend/kernel_nvme/kmain.c @@ -120,7 +120,7 @@ int simple_read (bdbm_drv_info_t* bdi, int die, int block, int wu) { char* tmp = (char*)ubuffer; - bdbm_msg ("data: %x %x %x %x", tmp[0], tmp[1], tmp[2], tmp[3]); + bdbm_msg (" => data: %x %x %x %x", tmp[0], tmp[1], tmp[2], tmp[3]); } out: @@ -203,7 +203,8 @@ int simple_erase (bdbm_drv_info_t* bdi, int die, int block) unsigned bufflen = 64 * 4096; struct nvme_command cmd; void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - __le32* ubuffer_char = (__le32*)ubuffer; + __le64* ubuffer_64 = (__le64*)ubuffer; + /*__le32* ubuffer_32 = (__le32*)ubuffer;*/ __u32 req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | die << (BITS_PER_WU + BITS_PER_SLICE); @@ -211,13 +212,9 @@ int simple_erase (bdbm_drv_info_t* bdi, int die, int block) if (_bdi == NULL) return 0; - ubuffer_char[0] = - (req_ofs >> 24 & 0x000000FF) | - (req_ofs >> 8 & 0x0000FF00) | - (req_ofs << 8 & 0x00FF0000) | - (req_ofs << 24 & 0xFF000000) ; + ubuffer_64[1] = req_ofs; - bdbm_msg ("%x %x", ubuffer_char[0], req_ofs); + /*bdbm_msg ("%x %x %llx", ubuffer_32[0], ubuffer_32[1], ubuffer_64[1]);*/ rq = blk_mq_alloc_request(bdi->q, 1, 0); if (IS_ERR(rq)) @@ -403,7 +400,7 @@ static int __init bdbm_drv_init (void) if (ret) pr_err("nvm: misc_register failed for control device"); - bdbm_register (NULL, NULL); + /*bdbm_register (NULL, NULL);*/ return 0; } @@ -412,7 +409,7 @@ static void __exit bdbm_drv_exit(void) { misc_deregister(&_nvm_misc); - bdbm_unregister(NULL); + /*bdbm_unregister(NULL);*/ } MODULE_AUTHOR ("Sungjin Lee "); diff --git a/frontend/kernel_nvme/register.sh b/frontend/kernel_nvme/register.sh index 8f35b31..c3cfb3f 100755 --- a/frontend/kernel_nvme/register.sh +++ b/frontend/kernel_nvme/register.sh @@ -4,6 +4,7 @@ sudo touch /usr/share/bdbm_drv/dm.dat sudo insmod risa_dev_ramdrive.ko sudo insmod bdbm_drv.ko -#sudo insmod nvme.ko -sudo mkfs -t ext4 -b 4096 /dev/blueDBM -sudo mount \-t ext4 \-o discard /dev/blueDBM /media/blueDBM +sudo rmmod nvme +sudo insmod ../../../kernel_4.5.3/nvme/nvme.ko +#sudo mkfs -t ext4 -b 4096 /dev/nvme0n1 +#sudo mount \-t ext4 \-o discard /dev/nvme0n1 /media/blueDBM diff --git a/ftl/hlm_reqs_pool.c b/ftl/hlm_reqs_pool.c index 3df2d05..b1dcbdf 100644 --- a/ftl/hlm_reqs_pool.c +++ b/ftl/hlm_reqs_pool.c @@ -419,6 +419,7 @@ static int __hlm_reqs_pool_create_read_req ( ptr_lr = &hr->llm_reqs[0]; for (i = 0; i < nr_llm_reqs; i++) { + /*for (i = 0; i < br->bi_bvec_cnt; i++) {*/ offset = pg_start % NR_KPAGES_IN(pool->map_unit); if (pool->in_place_rmw == 0) @@ -442,7 +443,11 @@ static int __hlm_reqs_pool_create_read_req ( ptr_lr++; } - bdbm_bug_on (bvec_cnt != br->bi_bvec_cnt); + //bdbm_bug_on (bvec_cnt != br->bi_bvec_cnt); + if (bvec_cnt != br->bi_bvec_cnt) { + bdbm_msg ("bvec_cnt: %llu, br->bi_bvec_cnt: %llu", + bvec_cnt, br->bi_bvec_cnt); + } /* intialize hlm_req */ hr->req_type = br->bi_rw; diff --git a/ftl/llm_mq.c b/ftl/llm_mq.c index 5dd9fd8..cb7c519 100644 --- a/ftl/llm_mq.c +++ b/ftl/llm_mq.c @@ -134,6 +134,10 @@ int __llm_mq_thread (void* arg) bdbm_warning ("oops! make_req failed"); } + if (cnt % 50000 == 0) { + bdbm_msg ("llm_make_req: %llu, %llu - done", cnt, bdbm_prior_queue_get_nr_items (p->q)); + } + cnt++; } } @@ -244,7 +248,7 @@ uint32_t llm_mq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) pmu_update_sw (bdi, r); /* wait until there are enough free slots in Q */ - while (bdbm_prior_queue_get_nr_items (p->q) >= 96) { + while (bdbm_prior_queue_get_nr_items (p->q) > 1) { bdbm_thread_yield (); } From 5fdf1bed0f1cef222b1f7bf715892bfe65c749a5 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Sat, 23 Jul 2016 10:12:03 -0700 Subject: [PATCH 07/51] adding bio --- devices/ramdrive/hynix_dumbssd.async.c | 627 ++++++++++++++++++++++ devices/ramdrive/hynix_dumbssd.sync.c | 374 +++++++++++++ devices/ramdrive/hynix_dumbssd.sync.old.c | 314 +++++++++++ 3 files changed, 1315 insertions(+) create mode 100644 devices/ramdrive/hynix_dumbssd.async.c create mode 100644 devices/ramdrive/hynix_dumbssd.sync.c create mode 100644 devices/ramdrive/hynix_dumbssd.sync.old.c diff --git a/devices/ramdrive/hynix_dumbssd.async.c b/devices/ramdrive/hynix_dumbssd.async.c new file mode 100644 index 0000000..d23c159 --- /dev/null +++ b/devices/ramdrive/hynix_dumbssd.async.c @@ -0,0 +1,627 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#if defined (KERNEL_MODE) +#include +#include + +#include /* workqueue */ + +#else +#error Invalid Platform (KERNEL_MODE or USER_MODE) +#endif + +#include +#include +#include "hynix_dumbssd.h" + + +#define BITS_PER_SLICE 6 +#define BITS_PER_WU 7 +#define BITS_PER_DIE 6 + + +#define USE_ASYNC + +struct hd_req { + bdbm_drv_info_t* bdi; + bdbm_llm_req_t* r; + uint64_t die; + uint64_t block; + uint64_t wu; + uint8_t* kp_ptr; + void* ubuffer; + void (*intr_handler)(void*); +}; + +#ifdef USE_ASYNC +static void nvme_nvm_end_io (struct request *rq, int error) +{ + /* + struct nvm_rq *rqd = rq->end_io_data; + + printk (KERN_INFO "nvme_nvm_end_io\n"); + + nvm_end_io(rqd, error); + + kfree(rq->cmd); + blk_mq_free_request(rq); + */ + + struct hd_req* hdr = rq->end_io_data; + + bdbm_msg ("call-back"); + + switch (hdr->r->req_type) { + case REQTYPE_READ: + case REQTYPE_GC_READ: + case REQTYPE_RMW_READ: + case REQTYPE_META_READ: + memcpy (hdr->kp_ptr, (uint8_t*)hdr->ubuffer, 4096); + break; + } + + /* call handler */ + hdr->intr_handler (hdr->r); + /* end */ + + kfree (rq->cmd); + kfree (hdr->ubuffer); + kfree (hdr); + blk_mq_free_request(rq); +} +#endif + +struct request *nvme_alloc_request(struct request_queue *q, + struct nvme_command *cmd, unsigned int flags) +{ + bool write = cmd->common.opcode & 1; + struct request *req; + + req = blk_mq_alloc_request(q, write, flags); + if (IS_ERR(req)) + return req; + + req->cmd_type = REQ_TYPE_DRV_PRIV; + req->__data_len = 0; + req->__sector = (sector_t) -1; + req->bio = req->biotail = NULL; + + req->cmd = (unsigned char *)cmd; + req->cmd_len = sizeof(struct nvme_command); + req->special = (void *)0; + + return req; +} + +#if 0 +int simple_read ( + bdbm_drv_info_t* bdi, + int die, + int block, + int wu, + kp_stt_t* kp_stt, + uint8_t** kp_ptr) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + + int req_len = 63; + int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + die << (BITS_PER_WU + BITS_PER_SLICE) | + wu << (BITS_PER_SLICE); + + rq = blk_mq_alloc_request(bdi->q, 0, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) { + bdbm_error ("blk_rq_map_kern failed"); + kfree (cmd); + kfree (ubuffer); + blk_mq_free_request(rq); + return -1; + } + + cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = req_len; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + +#ifdef USE_ASYNC + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) { + bdbm_msg ("ret = %u", ret); + } + + /* copy data to bio */ + memcpy (kp_ptr[0], (uint8_t*)ubuffer, 4096); + /* end */ + + kfree (cmd); + kfree (ubuffer); + blk_mq_free_request(rq); +#endif + + return 0; +} + +int simple_write ( + bdbm_drv_info_t* bdi, + int die, + int block, + int wu, + kp_stt_t* kp_stt, + uint8_t** kp_ptr) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + /*char* ubuffer_char = (char*)ubuffer;*/ + + int req_len = 63; + int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + die << (BITS_PER_WU + BITS_PER_SLICE) | + wu << (BITS_PER_SLICE); + + /* copy data to bio */ + memcpy ((uint8_t*)ubuffer, kp_ptr[0], 4096); + /* end */ + + rq = blk_mq_alloc_request(bdi->q, 1, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) { + bdbm_error ("blk_rq_map_kern failed"); + kfree (cmd); + kfree (ubuffer); + blk_mq_free_request(rq); + return -1; + } + + cmd->rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = req_len; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + +#ifdef USE_ASYNC + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) { + bdbm_msg ("ret = %u", ret); + } + + kfree (cmd); + kfree (ubuffer); + blk_mq_free_request(rq); +#endif + + return 0; +} + +int simple_erase (bdbm_drv_info_t* bdi, int die, int block) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + __le64* ubuffer_64 = (__le64*)ubuffer; + + __u32 req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + die << (BITS_PER_WU + BITS_PER_SLICE); + + ubuffer_64[1] = req_ofs; + + rq = blk_mq_alloc_request(bdi->q, 1, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) { + kfree (cmd); + kfree (ubuffer); + blk_mq_free_request(rq); + return -ENOMEM; + } + + cmd->common.opcode = 9; + cmd->common.flags = 0; + cmd->common.nsid = 1; + cmd->common.cdw2[0] = 0; + cmd->common.cdw2[1] = 0; + cmd->common.cdw10[0] = 0; + cmd->common.cdw10[1] = 4; + cmd->common.cdw10[2] = 0; + cmd->common.cdw10[3] = 0; + cmd->common.cdw10[4] = 0; + cmd->common.cdw10[5] = 0; + +#ifdef USE_ASYNC + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) + bdbm_msg ("ret = %u", ret); +#endif + + return 0; +} +#endif + +int simple_read ( + bdbm_drv_info_t* bdi, + struct hd_req* hdr) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + + int req_len = 63; + int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | + hdr->wu << (BITS_PER_SLICE); + + hdr->ubuffer = ubuffer; + + rq = blk_mq_alloc_request(bdi->q, 0, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) { + bdbm_error ("blk_rq_map_kern failed"); + kfree (cmd); + kfree (ubuffer); + /*kfree (hdr);*/ + blk_mq_free_request(rq); + return -1; + } + + cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = req_len; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + +#ifdef USE_ASYNC + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = hdr; + + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) { + bdbm_msg ("ret = %u", ret); + } + + /* copy data to bio */ + memcpy (hdr->kp_ptr, (uint8_t*)ubuffer, 4096); + /* end */ + + kfree (cmd); + kfree (ubuffer); + /*kfree (hdr);*/ + blk_mq_free_request(rq); +#endif + + return 0; +} + +int simple_write ( + bdbm_drv_info_t* bdi, + struct hd_req* hdr) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + /*char* ubuffer_char = (char*)ubuffer;*/ + + int req_len = 63; + int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | + hdr->wu << (BITS_PER_SLICE); + + hdr->ubuffer = ubuffer; + + /* copy data to bio */ + memcpy ((uint8_t*)ubuffer, hdr->kp_ptr, 4096); + /* end */ + + rq = blk_mq_alloc_request(bdi->q, 1, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) { + bdbm_error ("blk_rq_map_kern failed"); + kfree (cmd); + kfree (ubuffer); + /*kfree (hdr);*/ + blk_mq_free_request(rq); + return -1; + } + + cmd->rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = req_len; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + +#ifdef USE_ASYNC + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = hdr; + + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) { + bdbm_msg ("ret = %u", ret); + } + + /*kfree (hdr);*/ + kfree (cmd); + kfree (ubuffer); + blk_mq_free_request(rq); +#endif + + return 0; +} + +int simple_erase ( + bdbm_drv_info_t* bdi, + struct hd_req* hdr) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + __le64* ubuffer_64 = (__le64*)ubuffer; + + __u32 req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE); + + hdr->ubuffer = ubuffer; + + ubuffer_64[1] = req_ofs; + + rq = blk_mq_alloc_request(bdi->q, 1, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) { + /*kfree (hdr);*/ + kfree (cmd); + kfree (ubuffer); + blk_mq_free_request(rq); + return -ENOMEM; + } + + cmd->common.opcode = 9; + cmd->common.flags = 0; + cmd->common.nsid = 1; + cmd->common.cdw2[0] = 0; + cmd->common.cdw2[1] = 0; + cmd->common.cdw10[0] = 0; + cmd->common.cdw10[1] = 4; + cmd->common.cdw10[2] = 0; + cmd->common.cdw10[3] = 0; + cmd->common.cdw10[4] = 0; + cmd->common.cdw10[5] = 0; + +#ifdef USE_ASYNC + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = hdr; + + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) + bdbm_msg ("ret = %u", ret); + + /*kfree (hdr);*/ + kfree (cmd); + kfree (ubuffer); + blk_mq_free_request(rq); +#endif + + return 0; +} + +uint32_t hynix_dumbssd_send_cmd ( + bdbm_drv_info_t* bdi, + bdbm_llm_req_t* r, + void (*intr_handler)(void*)) +{ + uint32_t ret = -1; + struct hd_req* hdr = kzalloc (sizeof (struct hd_req), GFP_KERNEL); + + hdr->bdi = bdi; + hdr->r = r; + hdr->die = r->phyaddr.channel_no; + hdr->block = r->phyaddr.block_no; + hdr->wu = r->phyaddr.page_no; + hdr->intr_handler = intr_handler; + hdr->kp_ptr = NULL; + + switch (r->req_type) { + case REQTYPE_READ_DUMMY: + /* do nothing */ + break; + case REQTYPE_WRITE: + case REQTYPE_GC_WRITE: + case REQTYPE_RMW_WRITE: + case REQTYPE_META_WRITE: + hdr->kp_ptr = r->fmain.kp_ptr[0]; +#if 0 + bdbm_msg ("simple_write: %llu => %llu %llu %llu", + r->logaddr.lpa[0], + r->phyaddr.channel_no, + r->phyaddr.block_no, + r->phyaddr.page_no); + ret = simple_write (bdi, + r->phyaddr.channel_no, + r->phyaddr.block_no, + r->phyaddr.page_no, + r->fmain.kp_stt, + r->fmain.kp_ptr); +#endif + ret = simple_write (bdi, hdr); + break; + + case REQTYPE_READ: + case REQTYPE_GC_READ: + case REQTYPE_RMW_READ: + case REQTYPE_META_READ: + hdr->kp_ptr = r->fmain.kp_ptr[0]; + ret = simple_read (bdi, hdr); + break; + + case REQTYPE_GC_ERASE: + ret = simple_erase (bdi, hdr); + break; + + default: + bdbm_error ("invalid REQTYPE (%u)", r->req_type); + bdbm_bug_on (1); + break; + } + + return 0; +} + diff --git a/devices/ramdrive/hynix_dumbssd.sync.c b/devices/ramdrive/hynix_dumbssd.sync.c new file mode 100644 index 0000000..678cbbd --- /dev/null +++ b/devices/ramdrive/hynix_dumbssd.sync.c @@ -0,0 +1,374 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#if defined (KERNEL_MODE) +#include +#include + +#include /* workqueue */ + +#else +#error Invalid Platform (KERNEL_MODE or USER_MODE) +#endif + +#include +#include +#include "hynix_dumbssd.h" + + +#define BITS_PER_SLICE 6 +#define BITS_PER_WU 7 +#define BITS_PER_DIE 6 + +#define USE_ASYNC + + +struct hd_req { + bdbm_drv_info_t* bdi; + bdbm_llm_req_t* r; + uint64_t die; + uint64_t block; + uint64_t wu; + uint8_t* kp_ptr; + void* ubuffer; + void (*intr_handler)(void*); +}; + +#include +static void nvme_nvm_end_io (struct request *rq, int error) +{ + struct hd_req* hdr = rq->end_io_data; + + /*bdbm_msg ("hynix -- callback - 1");*/ + /*udelay(1000);*/ + + bdbm_bug_on (hdr == NULL); + bdbm_bug_on (hdr->r == NULL); + + switch (hdr->r->req_type) { + case REQTYPE_READ: + case REQTYPE_GC_READ: + case REQTYPE_RMW_READ: + case REQTYPE_META_READ: + bdbm_bug_on (hdr->kp_ptr == NULL); + bdbm_bug_on (hdr->ubuffer== NULL); + memcpy (hdr->kp_ptr, (uint8_t*)hdr->ubuffer, 4096); + break; + } + + /*bdbm_msg ("hynix -- callback - 2");*/ + /*udelay(1000);*/ + + /* call handler */ + hdr->intr_handler (hdr->r); + /* end */ + + /*bdbm_msg ("hynix -- callback - 3");*/ + /*udelay(1000);*/ + + bdbm_bug_on (rq == NULL); + bdbm_bug_on (rq->cmd == NULL); + kfree (rq->cmd); + if (hdr->ubuffer) + kfree (hdr->ubuffer); + kfree (hdr); + blk_mq_free_request(rq); + + /*bdbm_msg ("hynix -- callback - 4");*/ + /*udelay(1000);*/ +} + +struct request *nvme_alloc_request(struct request_queue *q, + struct nvme_command *cmd, unsigned int flags) +{ + bool write = cmd->common.opcode & 1; + struct request *req; + + req = blk_mq_alloc_request(q, write, flags); + if (IS_ERR(req)) + return req; + + req->cmd_type = REQ_TYPE_DRV_PRIV; + req->__data_len = 0; + req->__sector = (sector_t) -1; + req->bio = req->biotail = NULL; + + req->cmd = (unsigned char *)cmd; + req->cmd_len = sizeof(struct nvme_command); + req->special = (void *)0; + + return req; +} + +int simple_read ( + bdbm_drv_info_t* bdi, + struct hd_req* hdr) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | + hdr->wu << (BITS_PER_SLICE); + + bdbm_msg ("READ: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); + + hdr->ubuffer = ubuffer; + + rq = blk_mq_alloc_request(bdi->q, 0, 0); + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); + return -ENOMEM; + } + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + bdbm_bug_on (ubuffer == NULL); + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) { + bdbm_error ("blk_rq_map_kern failed: %x", ret); + bdbm_bug_on (1); + /*kfree (cmd);*/ + /*kfree (ubuffer);*/ + /*kfree (hdr);*/ + blk_mq_free_request(rq); + return -1; + } + + cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = 63; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = hdr; + +#ifdef USE_ASYNC + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + rq->end_io_data = hdr; + nvme_nvm_end_io (rq, 0); +#endif + + return 0; +} + +int simple_write ( + bdbm_drv_info_t* bdi, + struct hd_req* hdr) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + + int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | + hdr->wu << (BITS_PER_SLICE); + + hdr->ubuffer = ubuffer; + + bdbm_msg ("WRITE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); + + memcpy ((uint8_t*)ubuffer, hdr->kp_ptr, 4096); + + rq = blk_mq_alloc_request(bdi->q, 1, 0); + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); + return -ENOMEM; + } + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + bdbm_bug_on (ubuffer == NULL); + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) { + bdbm_error ("blk_rq_map_kern failed: %x", ret); + bdbm_bug_on (1); + /*kfree (cmd);*/ + /*kfree (ubuffer);*/ + /*kfree (hdr);*/ + blk_mq_free_request(rq); + return -1; + } + + cmd->rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = 63; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = hdr; + +#ifdef USE_ASYNC + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + rq->end_io_data = hdr; + nvme_nvm_end_io (rq, 0); +#endif + + return 0; +} + +int simple_erase ( + bdbm_drv_info_t* bdi, + struct hd_req* hdr) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + __u32 req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE); + __le64* ubuffer_64 = (__le64*)ubuffer; + + bdbm_msg ("ERASE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); + + hdr->ubuffer = ubuffer; + ubuffer_64[1] = req_ofs; + + rq = blk_mq_alloc_request(bdi->q, 1, 0); + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); + return -ENOMEM; + } + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + bdbm_bug_on (ubuffer == NULL); + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) { + bdbm_error ("blk_rq_map_kern failed: %x", ret); + bdbm_bug_on (1); + /*kfree (hdr);*/ + /*kfree (cmd);*/ + /*kfree (ubuffer);*/ + blk_mq_free_request(rq); + return -ENOMEM; + } + + cmd->common.opcode = 9; + cmd->common.flags = 0; + cmd->common.nsid = 1; + cmd->common.cdw2[0] = 0; + cmd->common.cdw2[1] = 0; + cmd->common.cdw10[0] = 0; + cmd->common.cdw10[1] = 4; + cmd->common.cdw10[2] = 0; + cmd->common.cdw10[3] = 0; + cmd->common.cdw10[4] = 0; + cmd->common.cdw10[5] = 0; + + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = hdr; + +#ifdef USE_ASYNC + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + rq->end_io_data = hdr; + nvme_nvm_end_io (rq, 0); +#endif + + return 0; +} + +uint32_t hynix_dumbssd_send_cmd ( + bdbm_drv_info_t* bdi, + bdbm_llm_req_t* r, + void (*intr_handler)(void*)) +{ + uint32_t ret = -1; + struct hd_req* hdr = kzalloc (sizeof (struct hd_req), GFP_KERNEL); + + hdr->bdi = bdi; + hdr->r = r; + hdr->die = r->phyaddr.channel_no; + hdr->block = r->phyaddr.block_no; + hdr->wu = r->phyaddr.page_no; + hdr->intr_handler = intr_handler; + hdr->ubuffer = NULL; + hdr->kp_ptr = NULL; + + switch (r->req_type) { + case REQTYPE_READ_DUMMY: + intr_handler (r); + break; + + case REQTYPE_WRITE: + case REQTYPE_GC_WRITE: + case REQTYPE_RMW_WRITE: + case REQTYPE_META_WRITE: + hdr->kp_ptr = r->fmain.kp_ptr[0]; + ret = simple_write (bdi, hdr); + break; + + case REQTYPE_READ: + case REQTYPE_GC_READ: + case REQTYPE_RMW_READ: + case REQTYPE_META_READ: + hdr->kp_ptr = r->fmain.kp_ptr[0]; + ret = simple_read (bdi, hdr); + break; + + case REQTYPE_GC_ERASE: + ret = simple_erase (bdi, hdr); + break; + + default: + bdbm_error ("invalid REQTYPE (%u)", r->req_type); + bdbm_bug_on (1); + break; + } + + return 0; +} + diff --git a/devices/ramdrive/hynix_dumbssd.sync.old.c b/devices/ramdrive/hynix_dumbssd.sync.old.c new file mode 100644 index 0000000..d0e5fe1 --- /dev/null +++ b/devices/ramdrive/hynix_dumbssd.sync.old.c @@ -0,0 +1,314 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#if defined (KERNEL_MODE) +#include +#include + +#include /* workqueue */ + +#else +#error Invalid Platform (KERNEL_MODE or USER_MODE) +#endif + +#include +#include +#include "hynix_dumbssd.h" + + +#define BITS_PER_SLICE 6 +#define BITS_PER_WU 7 +#define BITS_PER_DIE 6 + + +struct request *nvme_alloc_request(struct request_queue *q, + struct nvme_command *cmd, unsigned int flags) +{ + bool write = cmd->common.opcode & 1; + struct request *req; + + req = blk_mq_alloc_request(q, write, flags); + if (IS_ERR(req)) + return req; + + req->cmd_type = REQ_TYPE_DRV_PRIV; + req->__data_len = 0; + req->__sector = (sector_t) -1; + req->bio = req->biotail = NULL; + + req->cmd = (unsigned char *)cmd; + req->cmd_len = sizeof(struct nvme_command); + req->special = (void *)0; + + return req; +} + +int simple_read ( + bdbm_drv_info_t* bdi, + int die, + int block, + int wu, + kp_stt_t* kp_stt, + uint8_t** kp_ptr) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + /*struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL);*/ + struct nvme_command cmd; + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + + int req_len = 63; + int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + die << (BITS_PER_WU + BITS_PER_SLICE) | + wu << (BITS_PER_SLICE); + + rq = blk_mq_alloc_request(bdi->q, 0, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) { + bdbm_error ("blk_rq_map_kern failed"); + kfree (ubuffer); + blk_mq_free_request(rq); + return -1; + } + + cmd.rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ + cmd.rw.flags = 0; + cmd.rw.nsid = 1; + cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd.rw.length = req_len; /* it must be the unit of 255 */ + cmd.rw.control = 0; + cmd.rw.dsmgmt = 0; + cmd.rw.reftag = 0; + cmd.rw.apptag = 0; + cmd.rw.appmask = 0; + + rq->cmd = (unsigned char *)&cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) { + bdbm_msg ("ret = %u", ret); + } + + /* copy data to bio */ + memcpy (kp_ptr[0], (uint8_t*)ubuffer, 4096); + /* end */ + + kfree (ubuffer); + blk_mq_free_request(rq); + + return 0; +} + +int simple_write ( + bdbm_drv_info_t* bdi, + int die, + int block, + int wu, + kp_stt_t* kp_stt, + uint8_t** kp_ptr) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command cmd; + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + + int req_len = 63; + int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + die << (BITS_PER_WU + BITS_PER_SLICE) | + wu << (BITS_PER_SLICE); + + /* copy data to bio */ + memcpy ((uint8_t*)ubuffer, kp_ptr[0], 4096); + /* end */ + + rq = blk_mq_alloc_request(bdi->q, 1, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) { + bdbm_error ("blk_rq_map_kern failed"); + kfree (ubuffer); + blk_mq_free_request(rq); + return -1; + } + + cmd.rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ + cmd.rw.flags = 0; + cmd.rw.nsid = 1; + cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd.rw.length = req_len; /* it must be the unit of 255 */ + cmd.rw.control = 0; + cmd.rw.dsmgmt = 0; + cmd.rw.reftag = 0; + cmd.rw.apptag = 0; + cmd.rw.appmask = 0; + + rq->cmd = (unsigned char *)&cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) { + bdbm_msg ("ret = %u", ret); + } + + kfree (ubuffer); + blk_mq_free_request(rq); + + return 0; +} + +int simple_erase (bdbm_drv_info_t* bdi, int die, int block) +{ + int ret; + struct request *rq; + unsigned bufflen = 64 * 4096; + struct nvme_command cmd; + void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + __le64* ubuffer_64 = (__le64*)ubuffer; + + __u32 req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + die << (BITS_PER_WU + BITS_PER_SLICE); + + ubuffer_64[1] = req_ofs; + + rq = blk_mq_alloc_request(bdi->q, 1, 0); + if (IS_ERR(rq)) + return -ENOMEM; + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + + ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); + if (ret) { + kfree (ubuffer); + blk_mq_free_request(rq); + return -ENOMEM; + } + + cmd.common.opcode = 9; + cmd.common.flags = 0; + cmd.common.nsid = 1; + cmd.common.cdw2[0] = 0; + cmd.common.cdw2[1] = 0; + cmd.common.cdw10[0] = 0; + cmd.common.cdw10[1] = 4; + cmd.common.cdw10[2] = 0; + cmd.common.cdw10[3] = 0; + cmd.common.cdw10[4] = 0; + cmd.common.cdw10[5] = 0; + + rq->cmd = (unsigned char *)&cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = NULL; + + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + + ret = rq->errors; + if (ret != 0) + bdbm_msg ("ret = %u", ret); + + return 0; +} + +uint32_t hynix_dumbssd_send_cmd ( + bdbm_drv_info_t* bdi, + bdbm_llm_req_t* r, + void (*intr_handler)(void*)) +{ + uint32_t ret = -1; + + switch (r->req_type) { + case REQTYPE_READ_DUMMY: + /* do nothing */ + break; + case REQTYPE_WRITE: + case REQTYPE_GC_WRITE: + case REQTYPE_RMW_WRITE: + case REQTYPE_META_WRITE: + bdbm_msg ("simple_write: %llu => %llu %llu %llu", + r->logaddr.lpa[0], + r->phyaddr.channel_no, + r->phyaddr.block_no, + r->phyaddr.page_no); + ret = simple_write (bdi, + r->phyaddr.channel_no, + r->phyaddr.block_no, + r->phyaddr.page_no, + r->fmain.kp_stt, + r->fmain.kp_ptr); + break; + + case REQTYPE_READ: + case REQTYPE_GC_READ: + case REQTYPE_RMW_READ: + case REQTYPE_META_READ: + bdbm_msg ("simple_read: %llu <= %llu %llu %llu", + r->logaddr.lpa[0], + r->phyaddr.channel_no, + r->phyaddr.block_no, + r->phyaddr.page_no); + ret = simple_read (bdi, + r->phyaddr.channel_no, + r->phyaddr.block_no, + r->phyaddr.page_no, + r->fmain.kp_stt, + r->fmain.kp_ptr); + break; + + case REQTYPE_GC_ERASE: + bdbm_msg ("simple_erase"); + ret = simple_erase (bdi, + r->phyaddr.channel_no, + r->phyaddr.block_no); + break; + + default: + bdbm_error ("invalid REQTYPE (%u)", r->req_type); + bdbm_bug_on (1); + break; + } + + /*intr_handler (r);*/ + return 0; +} + From 1c358112ba65e23d40e342917cb80979bb096858 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Sat, 23 Jul 2016 17:11:33 -0700 Subject: [PATCH 08/51] ioctl for dumbssd works well --- devices/ramdrive/dm_ramdrive.c | 2 +- devices/ramdrive/hynix_dumbssd.c | 177 ++++++-------- examples/test/test | Bin 12040 -> 12192 bytes examples/test/test.c | 41 +++- frontend/kernel_nvme/kmain.c | 380 ++++++++++++++++------------- frontend/kernel_nvme/unregister.sh | 3 + ftl/ftl_params.c | 4 +- ftl/llm_mq.c | 4 +- ftl/llm_noq_lock.c | 4 + 9 files changed, 333 insertions(+), 282 deletions(-) diff --git a/devices/ramdrive/dm_ramdrive.c b/devices/ramdrive/dm_ramdrive.c index 86e29fb..3899833 100644 --- a/devices/ramdrive/dm_ramdrive.c +++ b/devices/ramdrive/dm_ramdrive.c @@ -141,7 +141,7 @@ uint32_t dm_ramdrive_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req dm_ramssd_private_t* p = BDBM_DM_PRIV (bdi); -#if 0 +#if 1 if ((ret = hynix_dumbssd_send_cmd (bdi, ptr_llm_req, __dm_ramdrive_ih)) != 0) { bdbm_error ("hynix_dumbssd_send_cmd"); } diff --git a/devices/ramdrive/hynix_dumbssd.c b/devices/ramdrive/hynix_dumbssd.c index 655cfc9..8c038a5 100644 --- a/devices/ramdrive/hynix_dumbssd.c +++ b/devices/ramdrive/hynix_dumbssd.c @@ -41,109 +41,56 @@ THE SOFTWARE. #define BITS_PER_WU 7 #define BITS_PER_DIE 6 -/*#define USE_ASYNC*/ - +#define USE_ASYNC struct hd_req { bdbm_drv_info_t* bdi; bdbm_llm_req_t* r; + int rw; uint64_t die; uint64_t block; uint64_t wu; uint8_t* kp_ptr; - void* ubuffer; + uint8_t* buffer; void (*intr_handler)(void*); }; -static struct bio* hynix_add_bio_to_req ( - struct request_queue *q, - int rw, - uint32_t addr, - uint8_t* buffer) +void print_bio (struct bio* bio) { - struct bio *bio = NULL; - struct page *page = NULL; - - page = alloc_pages (GFP_NOFS | __GFP_ZERO, 6); - if (IS_ERR (page)) { - bdbm_error ("alloc_page() failed"); - return NULL; - } - lock_page (page); - - bio = bio_alloc(GFP_NOIO, 64); - if (!bio) { - bdbm_error ("bio_alloc() failed"); - return NULL; - } - - bio->bi_iter.bi_sector = addr * 8; - bio->bi_rw = rw; /* READ or WRITE */ - bio->bi_private = page; - bio->bi_end_io = NULL; - - if (rw == WRITE) - memcpy ((uint8_t*)page_address (page), buffer, 4096); - - bio_add_pc_page(q, bio, page, 4096, 0); - - return bio; -} - -static void hynix_del_bio_from_req (struct bio* bio, uint8_t* buffer) -{ - struct page* page = bio->bi_private; - - if (page) { - if (buffer) - memcpy ((uint8_t*)buffer, (uint8_t*)page_address (page), 4096); - - ClearPageUptodate (page); - unlock_page (page); - __free_pages (page, 6); - } - - bio_reset (bio); - bio_put (bio); + bdbm_msg ("bio->bi_iter.bi_sector = %d", (int)bio->bi_iter.bi_sector); + bdbm_msg ("bio->bi_iter.bi_size = %d", (int)bio->bi_iter.bi_size); + bdbm_msg ("bio->bi_rw = %d", (int)bio->bi_rw); + bdbm_msg ("bio->bi_private = %p", bio->bi_private); + bdbm_msg ("bio->bi_end_io = %p", bio->bi_end_io); } static void nvme_nvm_end_io (struct request *rq, int error) { struct hd_req* hdr = rq->end_io_data; - bdbm_bug_on (hdr == NULL); - bdbm_bug_on (hdr->r == NULL); - hdr->intr_handler (hdr->r); - - bdbm_bug_on (rq == NULL); - bdbm_bug_on (rq->cmd == NULL); - kfree (rq->cmd); - if (hdr->ubuffer) - kfree (hdr->ubuffer); - kfree (hdr); - blk_mq_free_request(rq); -} - -struct request *nvme_alloc_request(struct request_queue *q, - struct nvme_command *cmd, unsigned int flags) -{ - bool write = cmd->common.opcode & 1; - struct request *req; + /* + if (hdr->rw == READ) { + bdbm_msg (" ==> %u %u %u %u", hdr->kp_ptr[0], hdr->kp_ptr[1], hdr->kp_ptr[2], hdr->kp_ptr[3]); + } + */ - req = blk_mq_alloc_request(q, write, flags); - if (IS_ERR(req)) - return req; + bdbm_msg ("nvme_nvm_end_io -- callback"); - req->cmd_type = REQ_TYPE_DRV_PRIV; - req->__data_len = 0; - req->__sector = (sector_t) -1; - req->bio = req->biotail = NULL; + if (hdr->rw == READ) + memcpy (hdr->kp_ptr, hdr->buffer, 4096); - req->cmd = (unsigned char *)cmd; - req->cmd_len = sizeof(struct nvme_command); - req->special = (void *)0; + hdr->intr_handler (hdr->r); - return req; + if (rq->bio) + bio_put (rq->bio); + if (rq->cmd) + kfree (rq->cmd); + if (hdr->buffer) + kfree(hdr->buffer); + if (hdr) + kfree (hdr); + if (rq) + blk_mq_free_request(rq); } int simple_read ( @@ -157,13 +104,17 @@ int simple_read ( hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | hdr->wu << (BITS_PER_SLICE); - bdbm_msg ("READ: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); - - /* setup bio */ - bio = hynix_add_bio_to_req (bdi->q, READ, req_ofs, NULL); + bdbm_msg ("READ: %llu %llu %llu => %u (%x)", + hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); + /* [STEP1] setup bio */ + /*bio = bio_map_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL);*/ + bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL, 1); + /*bio_get (bio);*/ + bio->bi_rw = READ; + /*print_bio (bio);*/ - /* alloc request */ + /* [STEP2] alloc request */ rq = blk_mq_alloc_request(bdi->q, 0, 0); if (IS_ERR(rq)) { bdbm_error ("blk_mq_alloc_request"); @@ -173,8 +124,9 @@ int simple_read ( rq->cmd_type = REQ_TYPE_DRV_PRIV; rq->ioprio = bio_prio(bio); - if (bio_has_data(bio)) + if (bio_has_data(bio)) { rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); + } rq->__data_len = bio->bi_iter.bi_size; rq->bio = rq->biotail = bio; @@ -183,7 +135,7 @@ int simple_read ( rq->special = (void *)0; rq->end_io_data = hdr; - /* setup cmd */ + /* [STEP3] setup cmd */ cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ cmd->rw.flags = 0; cmd->rw.nsid = 1; @@ -196,10 +148,11 @@ int simple_read ( cmd->rw.appmask = 0; #ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); + blk_execute_rq_nowait (bdi->q, NULL, rq, 0, nvme_nvm_end_io); #else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - hynix_del_bio_from_req (bio, hdr->kp_ptr); + blk_execute_rq (bdi->q, NULL, rq, 0); + /*bdbm_msg (" ==> %u %u %u %u", hdr->kp_ptr[0], hdr->kp_ptr[1], hdr->kp_ptr[2], hdr->kp_ptr[3]);*/ + /*bio->bi_end_io (bio);*/ rq->end_io_data = hdr; nvme_nvm_end_io (rq, 0); #endif @@ -221,7 +174,11 @@ int simple_write ( bdbm_msg ("WRITE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); /* setup bio */ - bio = hynix_add_bio_to_req (bdi->q, WRITE, req_ofs, hdr->kp_ptr); + memcpy (hdr->buffer, hdr->kp_ptr, 4096); + /*bio = bio_map_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL);*/ + bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_NOIO, 0); + bio->bi_rw = WRITE; + /*print_bio (bio);*/ /* allocate request */ rq = blk_mq_alloc_request (bdi->q, 1, 0); @@ -256,10 +213,10 @@ int simple_write ( cmd->rw.appmask = 0; #ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); + blk_execute_rq_nowait (bdi->q, NULL, rq, 0, nvme_nvm_end_io); #else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - hynix_del_bio_from_req (bio, NULL); + blk_execute_rq (bdi->q, NULL, rq, 0); + /*bio->bi_end_io (bio);*/ rq->end_io_data = hdr; nvme_nvm_end_io (rq, 0); #endif @@ -273,20 +230,21 @@ int simple_erase ( { struct request *rq; struct bio* bio = NULL; - unsigned bufflen = 64 * 4096; struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); __u32 req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | hdr->die << (BITS_PER_WU + BITS_PER_SLICE); - __le64* ubuffer_64 = (__le64*)ubuffer; + __le64* ubuffer_64 = (__le64*)hdr->buffer; - bdbm_msg ("ERASE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); + bdbm_msg ("ERASE: %llu %llu => %u (%x)", hdr->block, hdr->die, req_ofs, req_ofs); - hdr->ubuffer = ubuffer; ubuffer_64[1] = req_ofs; /* setup bio */ - bio = hynix_add_bio_to_req (bdi->q, WRITE, req_ofs, ubuffer); + /*bio = bio_map_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL);*/ + bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL, 0); + /*bio_get (bio);*/ + bio->bi_rw = WRITE; + /*print_bio (bio);*/ /* alloc request */ rq = blk_mq_alloc_request(bdi->q, 1, 0); @@ -322,10 +280,10 @@ int simple_erase ( cmd->common.cdw10[5] = 0; #ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); + blk_execute_rq_nowait (bdi->q, NULL, rq, 0, nvme_nvm_end_io); #else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - hynix_del_bio_from_req (bio, NULL); + blk_execute_rq (bdi->q, NULL, rq, 0); + /*bio->bi_end_io (bio);*/ rq->end_io_data = hdr; nvme_nvm_end_io (rq, 0); #endif @@ -347,11 +305,12 @@ uint32_t hynix_dumbssd_send_cmd ( hdr->block = r->phyaddr.block_no; hdr->wu = r->phyaddr.page_no; hdr->intr_handler = intr_handler; - hdr->ubuffer = NULL; - hdr->kp_ptr = NULL; + hdr->buffer = kzalloc (4096*64, GFP_KERNEL); + hdr->kp_ptr = r->fmain.kp_ptr[0]; switch (r->req_type) { case REQTYPE_READ_DUMMY: + kfree (hdr); intr_handler (r); break; @@ -359,7 +318,7 @@ uint32_t hynix_dumbssd_send_cmd ( case REQTYPE_GC_WRITE: case REQTYPE_RMW_WRITE: case REQTYPE_META_WRITE: - hdr->kp_ptr = r->fmain.kp_ptr[0]; + hdr->rw = WRITE; ret = simple_write (bdi, hdr); break; @@ -367,11 +326,12 @@ uint32_t hynix_dumbssd_send_cmd ( case REQTYPE_GC_READ: case REQTYPE_RMW_READ: case REQTYPE_META_READ: - hdr->kp_ptr = r->fmain.kp_ptr[0]; + hdr->rw = READ; ret = simple_read (bdi, hdr); break; case REQTYPE_GC_ERASE: + hdr->rw = 0xFF; ret = simple_erase (bdi, hdr); break; @@ -384,3 +344,4 @@ uint32_t hynix_dumbssd_send_cmd ( return 0; } + diff --git a/examples/test/test b/examples/test/test index 2f2994e1276dd2988eb2bd3de29bbd9eea4cb3a2..28501826d6f9ee28b6c609e424bb8ed99d28578e 100755 GIT binary patch delta 1914 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 diff --git a/examples/test/test.c b/examples/test/test.c index 0adf542..24aaea0 100644 --- a/examples/test/test.c +++ b/examples/test/test.c @@ -89,19 +89,50 @@ int main (int argc, char** argv) /* Send a BDBM format command using IOCTL * Everything will be done by bdbm_drv.ko */ - test_erase (dev_h, 0, 0); - test_write (dev_h, 0, 0, 0); - test_read (dev_h, 0, 0, 0); - test_erase (dev_h, 0, 0); - test_read (dev_h, 0, 0, 0); + /* + test_erase (dev_h, 8, 8); + sleep (1); + test_write (dev_h, 8, 8, 0); + sleep (1); + test_read (dev_h, 8, 8, 0); + sleep (1); + test_erase (dev_h, 8, 8); + sleep (1); + test_read (dev_h, 8, 8, 0); printf ("\n"); + sleep (1); test_erase (dev_h, 1, 1); + sleep (1); test_write (dev_h, 1, 1, 0); + sleep (1); test_read (dev_h, 1, 1, 0); + sleep (1); test_erase (dev_h, 1, 1); + sleep (1); test_read (dev_h, 1, 1, 0); printf ("\n"); + */ + { + int die = 0, block = 0, wu = 0; + + printf ("erase..."); + for (block = 0; block < 10; block++) + for (die = 0; die < 64; die++) + test_erase (dev_h, die, block); + + printf ("write..."); + for (block = 0; block < 10; block++) + for (wu = 0; wu < 64; wu++) + for (die = 0; die < 64; die++) + test_write (dev_h, die, block, wu); + + printf ("read..."); + for (block = 0; block < 10; block++) + for (wu = 0; wu < 64; wu++) + for (die = 0; die < 64; die++) + test_read (dev_h, die, block, wu); + } /* close the device */ if (dev_h != -1) { diff --git a/frontend/kernel_nvme/kmain.c b/frontend/kernel_nvme/kmain.c index d893da9..ad242d6 100644 --- a/frontend/kernel_nvme/kmain.c +++ b/frontend/kernel_nvme/kmain.c @@ -35,18 +35,59 @@ THE SOFTWARE. #include "devices.h" #include "umemory.h" -bdbm_drv_info_t* _bdi = NULL; - -/*int ridx = 0;*/ -/*int widx = 0;*/ +#include +#include #define BITS_PER_SLICE 6 #define BITS_PER_WU 7 #define BITS_PER_DIE 6 +#define USE_ASYNC -#include -#include +bdbm_drv_info_t* _bdi = NULL; + +struct hd_req { + bdbm_drv_info_t* bdi; + bdbm_llm_req_t* r; + int rw; + uint64_t die; + uint64_t block; + uint64_t wu; + uint8_t* kp_ptr; + void (*intr_handler)(void*); +}; + +void print_bio (struct bio* bio) +{ + /* + bdbm_msg ("bio->bi_iter.bi_sector = %d", (int)bio->bi_iter.bi_sector); + bdbm_msg ("bio->bi_iter.bi_size = %d", (int)bio->bi_iter.bi_size); + bdbm_msg ("bio->bi_rw = %d", (int)bio->bi_rw); + bdbm_msg ("bio->bi_private = %p", bio->bi_private); + bdbm_msg ("bio->bi_end_io = %p", bio->bi_end_io); + */ +} + +static void nvme_nvm_end_io (struct request *rq, int error) +{ + struct hd_req* hdr = rq->end_io_data; + + if (hdr->rw == READ) { + bdbm_msg (" ==> %u %u %u %u", hdr->kp_ptr[0], hdr->kp_ptr[1], hdr->kp_ptr[2], hdr->kp_ptr[3]); + } + + if (rq->bio && rq->bio->bi_end_io) { + rq->bio->bi_end_io (rq->bio); + } + if (rq->cmd) + kfree (rq->cmd); + if (hdr) + kfree (hdr); + if (hdr->kp_ptr) + kfree (hdr->kp_ptr); + if (rq) + blk_mq_free_request(rq); +} struct request *nvme_alloc_request(struct request_queue *q, struct nvme_command *cmd, unsigned int flags) @@ -70,198 +111,202 @@ struct request *nvme_alloc_request(struct request_queue *q, return req; } -int simple_read (bdbm_drv_info_t* bdi, int die, int block, int wu) +int simple_read ( + bdbm_drv_info_t* bdi, + struct hd_req* hdr) { - int ret; + struct bio* bio = NULL; struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command cmd; - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | + hdr->wu << (BITS_PER_SLICE); - int req_len = 63; - int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - die << (BITS_PER_WU + BITS_PER_SLICE) | - wu << (BITS_PER_SLICE); + bdbm_msg ("READ: %llu %llu %llu => %u (%x)", + hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); - if (_bdi == NULL) - return 0; + /* [STEP1] setup bio */ + /*bio = bio_map_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO);*/ + bio = bio_copy_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO, 1); + bio->bi_rw = READ; + print_bio (bio); + /* [STEP2] alloc request */ rq = blk_mq_alloc_request(bdi->q, 0, 0); - if (IS_ERR(rq)) + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); return -ENOMEM; - + } rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->ioprio = bio_prio(bio); - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) - goto out; - - cmd.rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ - cmd.rw.flags = 0; - cmd.rw.nsid = 1; - cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd.rw.length = req_len; /* it must be the unit of 255 */ - cmd.rw.control = 0; - cmd.rw.dsmgmt = 0; - cmd.rw.reftag = 0; - cmd.rw.apptag = 0; - cmd.rw.appmask = 0; - - rq->cmd = (unsigned char *)&cmd; + if (bio_has_data(bio)) { + rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); + } + rq->__data_len = bio->bi_iter.bi_size; + rq->bio = rq->biotail = bio; + + rq->cmd = (unsigned char *)cmd; rq->cmd_len = sizeof(struct nvme_command); rq->special = (void *)0; - rq->end_io_data = NULL; - + rq->end_io_data = hdr; + + /* [STEP3] setup cmd */ + cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = 63; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + +#ifdef USE_ASYNC + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) - bdbm_msg ("ret = %u", ret); - - { - char* tmp = (char*)ubuffer; - bdbm_msg (" => data: %x %x %x %x", tmp[0], tmp[1], tmp[2], tmp[3]); - } - -out: - kfree (ubuffer); - blk_mq_free_request(rq); + bdbm_msg (" ==> %u %u %u %u", hdr->kp_ptr[0], hdr->kp_ptr[1], hdr->kp_ptr[2], hdr->kp_ptr[3]); + bio->bi_end_io (bio); + rq->end_io_data = hdr; + nvme_nvm_end_io (rq, 0); +#endif return 0; } -int simple_write (bdbm_drv_info_t* bdi, int die, int block, int wu) +int simple_write ( + bdbm_drv_info_t* bdi, + struct hd_req* hdr) { - int ret; + struct bio* bio = NULL; struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command cmd; - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - char* ubuffer_char = (char*)ubuffer; - - int req_len = 63; - int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - die << (BITS_PER_WU + BITS_PER_SLICE) | - wu << (BITS_PER_SLICE); - - if (_bdi == NULL) - return 0; - - ubuffer_char[0] = die+1; - ubuffer_char[1] = block+1; - ubuffer_char[2] = wu+1; - ubuffer_char[3] = 0; - - rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | + hdr->wu << (BITS_PER_SLICE); + + hdr->kp_ptr[0] = hdr->block; + hdr->kp_ptr[1] = hdr->die; + hdr->kp_ptr[2] = hdr->wu; + bdbm_msg ("WRITE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); + + /* setup bio */ + /*bio = bio_map_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO);*/ + bio = bio_copy_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO, 0); + bio->bi_rw = WRITE; + print_bio (bio); + + /* allocate request */ + rq = blk_mq_alloc_request (bdi->q, 1, 0); + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); return -ENOMEM; + } rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->ioprio = bio_prio(bio); + if (bio_has_data(bio)) + rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); + rq->__data_len = bio->bi_iter.bi_size; + rq->bio = rq->biotail = bio; - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) - goto out; - - cmd.rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ - cmd.rw.flags = 0; - cmd.rw.nsid = 1; - cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd.rw.length = req_len; /* it must be the unit of 255 */ - cmd.rw.control = 0; - cmd.rw.dsmgmt = 0; - cmd.rw.reftag = 0; - cmd.rw.apptag = 0; - cmd.rw.appmask = 0; - - rq->cmd = (unsigned char *)&cmd; + rq->cmd = (unsigned char *)cmd; rq->cmd_len = sizeof(struct nvme_command); rq->special = (void *)0; - rq->end_io_data = NULL; - + rq->end_io_data = hdr; + + /* setup cmd */ + cmd->rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = 63; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + +#ifdef USE_ASYNC + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) - bdbm_msg ("ret = %u", ret); - - /*{*/ - /*char* tmp = (char*)ubuffer;*/ - /*bdbm_msg ("data: %x %x %x %x", tmp[0], tmp[1], tmp[2], tmp[3]);*/ - /*}*/ - -out: - kfree (ubuffer); - blk_mq_free_request(rq); + bio->bi_end_io (bio); + rq->end_io_data = hdr; + nvme_nvm_end_io (rq, 0); +#endif return 0; } -int simple_erase (bdbm_drv_info_t* bdi, int die, int block) +int simple_erase ( + bdbm_drv_info_t* bdi, + struct hd_req* hdr) { - int ret; struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command cmd; - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - __le64* ubuffer_64 = (__le64*)ubuffer; - /*__le32* ubuffer_32 = (__le32*)ubuffer;*/ - - __u32 req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - die << (BITS_PER_WU + BITS_PER_SLICE); - - if (_bdi == NULL) - return 0; + struct bio* bio = NULL; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + __u32 req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE); + __le64* ubuffer_64 = (__le64*)hdr->kp_ptr; + + bdbm_msg ("ERASE: %llu %llu => %u (%x)", hdr->block, hdr->die, req_ofs, req_ofs); ubuffer_64[1] = req_ofs; - /*bdbm_msg ("%x %x %llx", ubuffer_32[0], ubuffer_32[1], ubuffer_64[1]);*/ + /* setup bio */ + /*bio = bio_map_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO);*/ + bio = bio_copy_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO, 0); + bio->bi_rw = WRITE; + print_bio (bio); + /* alloc request */ rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); return -ENOMEM; + } rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->ioprio = bio_prio(bio); + if (bio_has_data(bio)) + rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); + rq->__data_len = bio->bi_iter.bi_size; + rq->bio = rq->biotail = bio; - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) - goto out; - - memset(&cmd, 0, sizeof(cmd)); - cmd.common.opcode = 9; - cmd.common.flags = 0; - cmd.common.nsid = 1; - cmd.common.cdw2[0] = 0; - cmd.common.cdw2[1] = 0; - cmd.common.cdw10[0] = 0; - cmd.common.cdw10[1] = 4; - cmd.common.cdw10[2] = 0; - cmd.common.cdw10[3] = 0; - cmd.common.cdw10[4] = 0; - cmd.common.cdw10[5] = 0; - - - rq->cmd = (unsigned char *)&cmd; + rq->cmd = (unsigned char *)cmd; rq->cmd_len = sizeof(struct nvme_command); rq->special = (void *)0; - rq->end_io_data = NULL; - + rq->end_io_data = hdr; + + /* setup cmd */ + cmd->common.opcode = 9; + cmd->common.flags = 0; + cmd->common.nsid = 1; + cmd->common.cdw2[0] = 0; + cmd->common.cdw2[1] = 0; + cmd->common.cdw10[0] = 0; + cmd->common.cdw10[1] = 4; + cmd->common.cdw10[2] = 0; + cmd->common.cdw10[3] = 0; + cmd->common.cdw10[4] = 0; + cmd->common.cdw10[5] = 0; + +#ifdef USE_ASYNC + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) - bdbm_msg ("ret = %u", ret); - - /*{*/ - /*char* tmp = (char*)ubuffer;*/ - /*bdbm_msg ("data: %x %x %x %x", tmp[0], tmp[1], tmp[2], tmp[3]);*/ - /*}*/ - -out: - kfree (ubuffer); - blk_mq_free_request(rq); + bio->bi_end_io (bio); + rq->end_io_data = hdr; + nvme_nvm_end_io (rq, 0); +#endif return 0; - } int bdbm_register (struct request_queue* q, char* disk_name) @@ -348,26 +393,33 @@ struct user_cmd { static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) { struct user_cmd c; + struct hd_req* hc = kzalloc (sizeof (struct hd_req), GFP_KERNEL); - if (_bdi == NULL) { + if (_bdi == NULL) return 0; - } + + copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); + + hc->bdi = _bdi; + hc->r = NULL; + hc->die = c.die; + hc->block = c.block; + hc->wu = c.wu; + hc->kp_ptr = kzalloc (4096*64, GFP_KERNEL); + hc->intr_handler = NULL; switch (cmd) { case TEST_IOCTL_READ: - copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); - bdbm_msg ("simple_read: %d %d %d", c.die, c.block, c.wu); - simple_read (_bdi, c.die, c.block, c.wu); + hc->rw = READ; + simple_read (_bdi, hc); break; case TEST_IOCTL_WRITE: - copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); - bdbm_msg ("simple_write: %d %d %d", c.die, c.block, c.wu); - simple_write (_bdi, c.die, c.block, c.wu); + hc->rw = WRITE; + simple_write (_bdi, hc); break; case TEST_IOCTL_ERASE: - copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); - bdbm_msg ("simple_erase: %d %d", c.die, c.block); - simple_erase (_bdi, c.die, c.block); + hc->rw = 0xff; + simple_erase (_bdi, hc); break; default: bdbm_msg ("default"); diff --git a/frontend/kernel_nvme/unregister.sh b/frontend/kernel_nvme/unregister.sh index ed5256e..4506aa9 100755 --- a/frontend/kernel_nvme/unregister.sh +++ b/frontend/kernel_nvme/unregister.sh @@ -1,5 +1,8 @@ sudo umount /media/blueDBM +sleep 1 sudo rmmod nvme +sleep 1 sudo rmmod bdbm_drv +sleep 1 sudo rmmod risa_dev_* #sudo rmmod f2fs diff --git a/ftl/ftl_params.c b/ftl/ftl_params.c index c662138..abfad00 100644 --- a/ftl/ftl_params.c +++ b/ftl/ftl_params.c @@ -53,8 +53,8 @@ int _param_snapshot = SNAPSHOT_DISABLE; int _param_mapping_type = MAPPING_POLICY_PAGE; /*int _param_mapping_type = MAPPING_POLICY_RSD;*/ /*int _param_mapping_type = MAPPING_POLICY_RSD;*/ -int _param_llm_type = LLM_MULTI_QUEUE; -/*int _param_llm_type = LLM_NO_QUEUE;*/ +/*int _param_llm_type = LLM_MULTI_QUEUE;*/ +int _param_llm_type = LLM_NO_QUEUE; int _param_hlm_type = HLM_NO_BUFFER; bdbm_ftl_params get_default_ftl_params (void) diff --git a/ftl/llm_mq.c b/ftl/llm_mq.c index cb7c519..d100e8b 100644 --- a/ftl/llm_mq.c +++ b/ftl/llm_mq.c @@ -49,7 +49,7 @@ THE SOFTWARE. /* NOTE: This serializes all of the requests from the host file system; * it is useful for debugging */ -/*#define ENABLE_SEQ_DBG*/ +#define ENABLE_SEQ_DBG /* llm interface */ @@ -248,7 +248,7 @@ uint32_t llm_mq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) pmu_update_sw (bdi, r); /* wait until there are enough free slots in Q */ - while (bdbm_prior_queue_get_nr_items (p->q) > 1) { + while (bdbm_prior_queue_get_nr_items (p->q) > 96) { bdbm_thread_yield (); } diff --git a/ftl/llm_noq_lock.c b/ftl/llm_noq_lock.c index b3c803c..a9b0c36 100644 --- a/ftl/llm_noq_lock.c +++ b/ftl/llm_noq_lock.c @@ -136,9 +136,13 @@ uint32_t llm_noq_lock_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req) pmu_update_sw (bdi, llm_req); + bdbm_msg ("test"); + /* send a request to a device manager */ ret = bdi->ptr_dm_inf->make_req (bdi, llm_req); + bdbm_msg ("test-done"); + /* handle error cases */ if (ret != 0) { /* complete a lock */ From 6e27c615fe49af3664333a00c855bb255923d0fa Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Sun, 24 Jul 2016 19:13:33 -0700 Subject: [PATCH 09/51] serializing acks --- devices/common/dev_params.c | 6 +- devices/ramdrive/dev_ramssd.c | 4 +- devices/ramdrive/dm_ramdrive.c | 29 +- devices/ramdrive/hynix_dumbssd.c | 87 +++--- devices/ramdrive_timing/Makefile | 1 + examples/test/test | Bin 12192 -> 12192 bytes examples/test/test.c | 8 +- frontend/kernel_nvme/Makefile | 5 +- frontend/kernel_nvme/blkdev.c | 5 +- frontend/kernel_nvme/blkio.c | 432 ----------------------------- frontend/kernel_nvme/kmain.c | 47 ++++ frontend/kernel_nvme/register.sh | 5 +- frontend/kernel_nvme/unregister.sh | 3 - ftl/ftl_params.c | 4 +- ftl/hlm_nobuf.c | 54 ++++ ftl/hlm_reqs_pool.c | 1 + ftl/llm_mq.c | 2 +- ftl/llm_noq.c | 33 ++- ftl/llm_noq_lock.c | 4 - include/bdbm_drv.h | 2 +- 20 files changed, 236 insertions(+), 496 deletions(-) diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index 87ed03d..bfe002b 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -64,11 +64,11 @@ enum BDBM_DEFAULT_NAND_PARAMS { NR_PAGES_PER_BLOCK = 64, NR_BLOCKS_PER_CHIP = 128, NR_CHIPS_PER_CHANNEL = 1, - NR_CHANNELS = 64, + NR_CHANNELS = 4, NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ - NAND_PAGE_PROG_TIME_US = 500, /* 1.3ms */ - NAND_PAGE_READ_TIME_US = 100, /* 100us */ + NAND_PAGE_PROG_TIME_US = 100000, /* 1.3ms */ + NAND_PAGE_READ_TIME_US = 1000, /* 100us */ NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ }; diff --git a/devices/ramdrive/dev_ramssd.c b/devices/ramdrive/dev_ramssd.c index 923a8c0..acde3b5 100644 --- a/devices/ramdrive/dev_ramssd.c +++ b/devices/ramdrive/dev_ramssd.c @@ -462,8 +462,8 @@ void __ramssd_cmd_done (dev_ramssd_info_t* ri) bdbm_spin_unlock (&ri->ramssd_lock); /* call the interrupt handler */ - /*bdbm_msg ("ramdrive -- callback");*/ -#if 0 +#if 1 + bdbm_msg ("ramdrive -- callback"); ri->intr_handler (ptr_req); #endif } else { diff --git a/devices/ramdrive/dm_ramdrive.c b/devices/ramdrive/dm_ramdrive.c index 3899833..1021b67 100644 --- a/devices/ramdrive/dm_ramdrive.c +++ b/devices/ramdrive/dm_ramdrive.c @@ -57,9 +57,14 @@ bdbm_dm_inf_t _bdbm_dm_inf = { .store = dm_ramdrive_store, }; +#define ENABLE_SEQ_DBG + /* private data structure for dm */ typedef struct { dev_ramssd_info_t *ramssd; +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_t dbg_seq; +#endif } dm_ramssd_private_t; /* global data structure */ @@ -102,6 +107,10 @@ uint32_t dm_ramdrive_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* params) goto fail; } +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_init (&p->dbg_seq); +#endif + /* OK! keep private info */ bdi->ptr_dm_inf->ptr_private = (void*)p; @@ -142,17 +151,31 @@ uint32_t dm_ramdrive_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req dm_ramssd_private_t* p = BDBM_DM_PRIV (bdi); #if 1 + /*if ((ret = dev_ramssd_send_cmd (p->ramssd, ptr_llm_req)) != 0) {*/ + /*bdbm_error ("dev_ramssd_send_cmd failed");*/ + /*}*/ + +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_lock (&p->dbg_seq); +#endif + if ((ret = hynix_dumbssd_send_cmd (bdi, ptr_llm_req, __dm_ramdrive_ih)) != 0) { bdbm_error ("hynix_dumbssd_send_cmd"); } + +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_unlock (&p->dbg_seq); +#endif + #else + bdbm_msg ("hynix_dumbssd_send_cmd"); if ((ret = dev_ramssd_send_cmd (p->ramssd, ptr_llm_req)) != 0) { bdbm_error ("dev_ramssd_send_cmd failed"); } - if ((ret = hynix_dumbssd_send_cmd (bdi, ptr_llm_req, __dm_ramdrive_ih)) != 0) { - bdbm_error ("hynix_dumbssd_send_cmd"); - } + /*if ((ret = hynix_dumbssd_send_cmd (bdi, ptr_llm_req, __dm_ramdrive_ih)) != 0) {*/ + /*bdbm_error ("hynix_dumbssd_send_cmd");*/ + /*}*/ #endif return ret; diff --git a/devices/ramdrive/hynix_dumbssd.c b/devices/ramdrive/hynix_dumbssd.c index 8c038a5..220af23 100644 --- a/devices/ramdrive/hynix_dumbssd.c +++ b/devices/ramdrive/hynix_dumbssd.c @@ -64,33 +64,50 @@ void print_bio (struct bio* bio) bdbm_msg ("bio->bi_end_io = %p", bio->bi_end_io); } +bdbm_sema_t dbg_seq; + static void nvme_nvm_end_io (struct request *rq, int error) { struct hd_req* hdr = rq->end_io_data; + bdbm_llm_req_t* r = hdr->r; + void (*fn) (void*); + + /*bdbm_msg ("nvme_nvm_end_io -- callback");*/ - /* - if (hdr->rw == READ) { - bdbm_msg (" ==> %u %u %u %u", hdr->kp_ptr[0], hdr->kp_ptr[1], hdr->kp_ptr[2], hdr->kp_ptr[3]); + static int init = 0, parallel = 0;; + if (init == 0) { + bdbm_sema_init (&dbg_seq); + init = 1; } - */ - bdbm_msg ("nvme_nvm_end_io -- callback"); + bdbm_sema_lock (&dbg_seq); - if (hdr->rw == READ) - memcpy (hdr->kp_ptr, hdr->buffer, 4096); + if (parallel > 1) + bdbm_msg ("what???"); + parallel++; - hdr->intr_handler (hdr->r); + fn = hdr->intr_handler; - if (rq->bio) - bio_put (rq->bio); + if (rq->bio && rq->bio->bi_end_io) + rq->bio->bi_end_io (rq->bio); + if (hdr->rw == READ) + memcpy (hdr->kp_ptr, hdr->buffer, 4096); if (rq->cmd) kfree (rq->cmd); - if (hdr->buffer) - kfree(hdr->buffer); if (hdr) kfree (hdr); + if (hdr->buffer) + kfree(hdr->buffer); if (rq) blk_mq_free_request(rq); + + fn (r); + + parallel--; + + bdbm_sema_unlock (&dbg_seq); + + /*bdbm_msg ("nvme_nvm_end_io -- callback - done");*/ } int simple_read ( @@ -104,15 +121,14 @@ int simple_read ( hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | hdr->wu << (BITS_PER_SLICE); - bdbm_msg ("READ: %llu %llu %llu => %u (%x)", - hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); + bdbm_bug_on (cmd == NULL); + + /*bdbm_msg ("READ: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs);*/ /* [STEP1] setup bio */ /*bio = bio_map_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL);*/ - bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL, 1); - /*bio_get (bio);*/ + bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_NOIO, 1); bio->bi_rw = READ; - /*print_bio (bio);*/ /* [STEP2] alloc request */ rq = blk_mq_alloc_request(bdi->q, 0, 0); @@ -122,6 +138,7 @@ int simple_read ( return -ENOMEM; } rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->cmd_flags |= REQ_FAILFAST_DRIVER; rq->ioprio = bio_prio(bio); if (bio_has_data(bio)) { @@ -149,10 +166,9 @@ int simple_read ( #ifdef USE_ASYNC blk_execute_rq_nowait (bdi->q, NULL, rq, 0, nvme_nvm_end_io); + /*nvme_nvm_end_io (rq, 0);*/ #else - blk_execute_rq (bdi->q, NULL, rq, 0); - /*bdbm_msg (" ==> %u %u %u %u", hdr->kp_ptr[0], hdr->kp_ptr[1], hdr->kp_ptr[2], hdr->kp_ptr[3]);*/ - /*bio->bi_end_io (bio);*/ + blk_execute_rq (bdi->q, bdi->gd, rq, 0); rq->end_io_data = hdr; nvme_nvm_end_io (rq, 0); #endif @@ -171,14 +187,16 @@ int simple_write ( hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | hdr->wu << (BITS_PER_SLICE); - bdbm_msg ("WRITE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); + bdbm_bug_on (cmd == NULL); + + /*bdbm_msg ("WRITE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs);*/ /* setup bio */ memcpy (hdr->buffer, hdr->kp_ptr, 4096); - /*bio = bio_map_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL);*/ + /*bio = bio_map_kern (bdi->q, hdr->buffer, 64*4096, GFP_NOIO);*/ bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_NOIO, 0); + bdbm_bug_on (bio == NULL); bio->bi_rw = WRITE; - /*print_bio (bio);*/ /* allocate request */ rq = blk_mq_alloc_request (bdi->q, 1, 0); @@ -189,6 +207,7 @@ int simple_write ( } rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->cmd_flags |= REQ_FAILFAST_DRIVER; rq->ioprio = bio_prio(bio); if (bio_has_data(bio)) rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); @@ -214,9 +233,9 @@ int simple_write ( #ifdef USE_ASYNC blk_execute_rq_nowait (bdi->q, NULL, rq, 0, nvme_nvm_end_io); + /*nvme_nvm_end_io (rq, 0);*/ #else - blk_execute_rq (bdi->q, NULL, rq, 0); - /*bio->bi_end_io (bio);*/ + blk_execute_rq (bdi->q, bdi->gd, rq, 0); rq->end_io_data = hdr; nvme_nvm_end_io (rq, 0); #endif @@ -234,17 +253,17 @@ int simple_erase ( __u32 req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | hdr->die << (BITS_PER_WU + BITS_PER_SLICE); __le64* ubuffer_64 = (__le64*)hdr->buffer; + + bdbm_bug_on (cmd == NULL); - bdbm_msg ("ERASE: %llu %llu => %u (%x)", hdr->block, hdr->die, req_ofs, req_ofs); + /*bdbm_msg ("ERASE: %llu %llu => %u (%x)", hdr->block, hdr->die, req_ofs, req_ofs);*/ ubuffer_64[1] = req_ofs; /* setup bio */ /*bio = bio_map_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL);*/ - bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL, 0); - /*bio_get (bio);*/ + bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_NOIO, 0); bio->bi_rw = WRITE; - /*print_bio (bio);*/ /* alloc request */ rq = blk_mq_alloc_request(bdi->q, 1, 0); @@ -255,6 +274,7 @@ int simple_erase ( } rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->cmd_flags |= REQ_FAILFAST_DRIVER; rq->ioprio = bio_prio(bio); if (bio_has_data(bio)) rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); @@ -281,9 +301,9 @@ int simple_erase ( #ifdef USE_ASYNC blk_execute_rq_nowait (bdi->q, NULL, rq, 0, nvme_nvm_end_io); + /*nvme_nvm_end_io (rq, 0);*/ #else - blk_execute_rq (bdi->q, NULL, rq, 0); - /*bio->bi_end_io (bio);*/ + blk_execute_rq (bdi->q, bdi->gd, rq, 0); rq->end_io_data = hdr; nvme_nvm_end_io (rq, 0); #endif @@ -299,6 +319,8 @@ uint32_t hynix_dumbssd_send_cmd ( uint32_t ret = -1; struct hd_req* hdr = kzalloc (sizeof (struct hd_req), GFP_KERNEL); + bdbm_bug_on (hdr == NULL); + hdr->bdi = bdi; hdr->r = r; hdr->die = r->phyaddr.channel_no; @@ -308,6 +330,8 @@ uint32_t hynix_dumbssd_send_cmd ( hdr->buffer = kzalloc (4096*64, GFP_KERNEL); hdr->kp_ptr = r->fmain.kp_ptr[0]; + bdbm_bug_on (hdr->buffer == NULL); + switch (r->req_type) { case REQTYPE_READ_DUMMY: kfree (hdr); @@ -343,5 +367,6 @@ uint32_t hynix_dumbssd_send_cmd ( return 0; } +EXPORT_SYMBOL (hynix_dumbssd_send_cmd); diff --git a/devices/ramdrive_timing/Makefile b/devices/ramdrive_timing/Makefile index e92c402..f049e38 100644 --- a/devices/ramdrive_timing/Makefile +++ b/devices/ramdrive_timing/Makefile @@ -28,6 +28,7 @@ risa_dev_ramdrive_timing-y := \ $(DEV_COMMON)/dev_stub.o \ ../ramdrive/dev_ramssd.o \ ../ramdrive/dm_ramdrive.o \ + ../ramdrive/hynix_dumbssd.o \ obj-m := risa_dev_ramdrive_timing.o diff --git a/examples/test/test b/examples/test/test index 28501826d6f9ee28b6c609e424bb8ed99d28578e..0f602fce594db516f682180ce6a8474ba5ead7b8 100755 GIT binary patch delta 62 zcmV-E0KxyDU!Y&GgaQ;ii4$2e&T_JdB>h8_Bm`@Y%(vIGm;%2C3jluPgGKBCgMI81 UlVS=+0RWS!3R(dGvjhvABsu69HUIzs delta 62 zcmV-E0KxyDU!Y&GgaQ=C^|hw9Ey=G6iYNEsx3^uuqzsU=m;%2C3qOA3gGKBCgMI7? UlVS=+0Y8(e3R(d_vjhvAB*mK>XaE2J diff --git a/examples/test/test.c b/examples/test/test.c index 24aaea0..b45e2d4 100644 --- a/examples/test/test.c +++ b/examples/test/test.c @@ -117,20 +117,20 @@ int main (int argc, char** argv) int die = 0, block = 0, wu = 0; printf ("erase..."); - for (block = 0; block < 10; block++) - for (die = 0; die < 64; die++) + for (block = 0; block < 20; block++) + for (die = 0; die < 1; die++) test_erase (dev_h, die, block); printf ("write..."); for (block = 0; block < 10; block++) for (wu = 0; wu < 64; wu++) - for (die = 0; die < 64; die++) + for (die = 0; die < 1; die++) test_write (dev_h, die, block, wu); printf ("read..."); for (block = 0; block < 10; block++) for (wu = 0; wu < 64; wu++) - for (die = 0; die < 64; die++) + for (die = 0; die < 1; die++) test_read (dev_h, die, block, wu); } diff --git a/frontend/kernel_nvme/Makefile b/frontend/kernel_nvme/Makefile index abefcd9..d74bf7b 100644 --- a/frontend/kernel_nvme/Makefile +++ b/frontend/kernel_nvme/Makefile @@ -6,7 +6,8 @@ INCLUDE := ../../include COMMON := ../../common DM_COMMON := ../../devices/common -KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers +#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers +KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/bluedbm/Module.symvers @@ -63,7 +64,7 @@ bdbm_drv-y := \ $(FTL)/pmu.o \ $(FTL)/hlm_nobuf.o \ $(FTL)/llm_mq.o \ - $(FTL)/llm_noq_lock.o \ + $(FTL)/llm_noq.o \ $(FTL)/algo/abm.o \ $(FTL)/algo/page_ftl.o \ $(FTL)/algo/block_ftl.o \ diff --git a/frontend/kernel_nvme/blkdev.c b/frontend/kernel_nvme/blkdev.c index 3d55aed..19505cf 100644 --- a/frontend/kernel_nvme/blkdev.c +++ b/frontend/kernel_nvme/blkdev.c @@ -241,6 +241,7 @@ uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) return -ENOMEM; } bdbm_device.gd->flags = GENHD_FL_EXT_DEVT; + bdbm_msg ("host_blkdev_register_device -> alloc_disk - done"); } bdi->gd = bdbm_device.gd; @@ -253,13 +254,15 @@ uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) strcpy (bdbm_device.gd->disk_name, bdi->disk_name); /* setup disk capacity */ - blk_queue_max_hw_sectors (bdbm_device.queue, 8); + /*blk_queue_max_hw_sectors (bdbm_device.queue, 8);*/ capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; capacity = (capacity) - capacity/10; set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); /* add disk */ + bdbm_msg ("add_disk"); add_disk (bdbm_device.gd); + bdbm_msg ("add_disk - done"); return 0; } diff --git a/frontend/kernel_nvme/blkio.c b/frontend/kernel_nvme/blkio.c index a604b10..a4f0f98 100644 --- a/frontend/kernel_nvme/blkio.c +++ b/frontend/kernel_nvme/blkio.c @@ -260,435 +260,3 @@ void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) /* decreate # of reqs */ atomic_dec (&p->nr_host_reqs); } - - -#if 0 - -bdbm_host_inf_t _blkio_inf = { - .ptr_private = NULL, - .open = blkio_open, - .close = blkio_close, - .make_req = blkio_make_req, - .end_req = blkio_end_req, -}; - -typedef struct { - bdbm_sema_t host_lock; - atomic64_t nr_reqs; -} bdbm_blkio_private_t; - - - -/* This is a call-back function invoked by a block-device layer */ -static void __host_blkio_make_request_fn ( - struct request_queue *q, - struct bio *bio) -{ - blkio_make_req (_bdi, (void*)bio); -} - -static bdbm_hlm_req_t* __blkio_create_hlm_trim_req ( - bdbm_drv_info_t* bdi, - struct bio* bio) -{ - bdbm_hlm_req_t* hlm_req = NULL; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - bdbm_ftl_params* dp = BDBM_GET_DRIVER_PARAMS (bdi); - uint64_t nr_secs_per_fp = 0; - - nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; - - /* create bdbm_hm_req_t */ - if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic - (sizeof (bdbm_hlm_req_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - return NULL; - } - - /* make a high-level request for TRIM */ - hlm_req->req_type = REQTYPE_TRIM; - - if (dp->mapping_type == MAPPING_POLICY_SEGMENT) { - hlm_req->lpa = bio->bi_sector / nr_secs_per_fp; - hlm_req->len = bio_sectors (bio) / nr_secs_per_fp; - if (hlm_req->len == 0) - hlm_req->len = 1; - } else { - hlm_req->lpa = (bio->bi_sector + nr_secs_per_fp - 1) / nr_secs_per_fp; - if ((hlm_req->lpa * nr_secs_per_fp - bio->bi_sector) > bio_sectors (bio)) { - bdbm_error ("'hlm_req->lpa (%llu) * nr_secs_per_fp (%llu) - bio->bi_sector (%lu)' (%llu) > bio_sectors (bio) (%u)", - hlm_req->lpa, nr_secs_per_fp, bio->bi_sector, - hlm_req->lpa * nr_secs_per_fp - bio->bi_sector, - bio_sectors (bio)); - hlm_req->len = 0; - } else { - hlm_req->len = - (bio_sectors (bio) - (hlm_req->lpa * nr_secs_per_fp - bio->bi_sector)) / nr_secs_per_fp; - } - } - hlm_req->nr_done_reqs = 0; - hlm_req->kpg_flags = NULL; - hlm_req->pptr_kpgs = NULL; /* no data */ - hlm_req->ptr_host_req = (void*)bio; - hlm_req->ret = 0; - - return hlm_req; -} - -static bdbm_hlm_req_t* __blkio_create_hlm_rw_req ( - bdbm_drv_info_t* bdi, - struct bio* bio) -{ - struct bio_vec *bvec = NULL; - bdbm_hlm_req_t* hlm_req = NULL; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - - uint32_t loop = 0; - uint32_t kpg_loop = 0; - uint32_t bvec_offset = 0; - uint64_t nr_secs_per_fp = 0; - uint64_t nr_secs_per_kp = 0; - uint32_t nr_kp_per_fp = 0; - - /* get # of sectors per flash page */ - nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; - nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; - nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ - - /* create bdbm_hm_req_t */ - if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic - (sizeof (bdbm_hlm_req_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - return NULL; - } - - /* get a bio direction */ - if (bio_data_dir (bio) == READ || bio_data_dir (bio) == READA) { - hlm_req->req_type = REQTYPE_READ; - } else if (bio_data_dir (bio) == WRITE) { - hlm_req->req_type = REQTYPE_WRITE; - } else { - bdbm_error ("the direction of a bio is invalid (%lu)", bio_data_dir (bio)); - goto fail_req; - } - - /* make a high-level request for READ or WRITE */ - hlm_req->lpa = (bio->bi_sector / nr_secs_per_fp); - hlm_req->len = (bio->bi_sector + bio_sectors (bio) + nr_secs_per_fp - 1) / nr_secs_per_fp - hlm_req->lpa; - hlm_req->nr_done_reqs = 0; - hlm_req->ptr_host_req = (void*)bio; - hlm_req->ret = 0; - /*bdbm_spin_lock_init (&hlm_req->lock);*/ - if ((hlm_req->pptr_kpgs = (uint8_t**)bdbm_malloc_atomic - (sizeof(uint8_t*) * hlm_req->len * nr_kp_per_fp)) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - goto fail_req; - } - if ((hlm_req->kpg_flags = (uint8_t*)bdbm_malloc_atomic - (sizeof(uint8_t) * hlm_req->len * nr_kp_per_fp)) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - goto fail_flags; - } - /* kpg_flags is set to MEMFLAG_NOT_SET (0) */ - - /* get or alloc pages */ - bio_for_each_segment (bvec, bio, loop) { - /* check some error cases */ - if (bvec->bv_offset != 0) { - bdbm_warning ("'bv_offset' is not 0 (%d)", bvec->bv_offset); - /*goto fail_grab_pages;*/ - } - -next_kpg: - /* assign a new page */ - if ((hlm_req->lpa * nr_kp_per_fp + kpg_loop) != (bio->bi_sector + bvec_offset) / nr_secs_per_kp) { - hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); - hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; - kpg_loop++; - goto next_kpg; - } - - if ((hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)page_address (bvec->bv_page)) != NULL) { - hlm_req->kpg_flags[kpg_loop] = MEMFLAG_KMAP_PAGE; - } else { - bdbm_error ("kmap failed"); - goto fail_grab_pages; - } - - bvec_offset += nr_secs_per_kp; - kpg_loop++; - } - - /* get additional free pages if necessary */ - while (kpg_loop < hlm_req->len * nr_kp_per_fp) { - hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); - hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; - kpg_loop++; - } - - return hlm_req; - -fail_grab_pages: - /* release grabbed pages */ - for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { - if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE) { - bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); - } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE) { - } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { - bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); - } - } - bdbm_free_atomic (hlm_req->kpg_flags); - -fail_flags: - bdbm_free_atomic (hlm_req->pptr_kpgs); - -fail_req: - bdbm_free_atomic (hlm_req); - - return NULL; -} - -static bdbm_hlm_req_t* __blkio_create_hlm_req ( - bdbm_drv_info_t* bdi, - struct bio* bio) -{ - bdbm_hlm_req_t* hlm_req = NULL; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - uint64_t nr_secs_per_kp = 0; - - /* get # of sectors per flash page */ - nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; - - /* see if some error cases */ - if (bio->bi_sector % nr_secs_per_kp != 0) { - bdbm_warning ("kernel pages are not aligned with disk sectors (%lu mod %llu != 0)", - bio->bi_sector , nr_secs_per_kp); - /* go ahead */ - } - if (KERNEL_PAGE_SIZE > np->page_main_size) { - bdbm_error ("kernel page (%lu) is larger than flash page (%llu)", - KERNEL_PAGE_SIZE, np->page_main_size); - return NULL; - } - - /* create 'hlm_req' */ - if (bio->bi_rw & REQ_DISCARD) { - /* make a high-level request for TRIM */ - hlm_req = __blkio_create_hlm_trim_req (bdi, bio); - } else { - /* make a high-level request for READ or WRITE */ - hlm_req = __blkio_create_hlm_rw_req (bdi, bio); - } - - /* start a stopwatch */ - if (hlm_req) { - bdbm_stopwatch_start (&hlm_req->sw); - } - - return hlm_req; -} - -static void __blkio_delete_hlm_req ( - bdbm_drv_info_t* bdi, - bdbm_hlm_req_t* hlm_req) -{ - bdbm_device_params_t* np = NULL; - uint32_t kpg_loop = 0; - uint32_t nr_kp_per_fp = 0; - - np = BDBM_GET_DEVICE_PARAMS (bdi); - nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ - - /* temp */ - if (hlm_req->org_pptr_kpgs) { - hlm_req->pptr_kpgs = hlm_req->org_pptr_kpgs; - hlm_req->kpg_flags = hlm_req->org_kpg_flags; - hlm_req->lpa--; - hlm_req->len++; - } - /* end */ - - /* free or unmap pages */ - if (hlm_req->kpg_flags != NULL && hlm_req->pptr_kpgs != NULL) { - for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { - if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE_DONE) { - bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); - } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE_DONE) { - } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { - bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); - } - } - } - - /* release other stuff */ - if (hlm_req->kpg_flags != NULL) - bdbm_free_atomic (hlm_req->kpg_flags); - if (hlm_req->pptr_kpgs != NULL) - bdbm_free_atomic (hlm_req->pptr_kpgs); - bdbm_free_atomic (hlm_req); -} - -#ifdef ENABLE_DISPLAY -static void __blkio_display_req ( - bdbm_drv_info_t* bdi, - bdbm_hlm_req_t* hlm_req) -{ - bdbm_ftl_inf_t* ftl = (bdbm_ftl_inf_t*)BDBM_GET_FTL_INF(bdi); - uint64_t seg_no = 0; - - if (ftl->get_segno) { - seg_no = ftl->get_segno (bdi, hlm_req->lpa); - } - - switch (hlm_req->req_type) { - case REQTYPE_TRIM: - bdbm_msg ("[%llu] TRIM\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); - break; - case REQTYPE_READ: - bdbm_msg ("[%llu] READ\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); - break; - case REQTYPE_WRITE: - bdbm_msg ("[%llu] WRITE\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); - break; - default: - bdbm_error ("invalid REQTYPE (%u)", hlm_req->req_type); - break; - } -} -#endif - -uint32_t blkio_open (bdbm_drv_info_t* bdi) -{ - uint32_t ret; - bdbm_blkio_private_t* p; - - /* create a private data structure */ - if ((p = (bdbm_blkio_private_t*)bdbm_malloc_atomic - (sizeof (bdbm_blkio_private_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - return 1; - } - bdbm_sema_init (&p->host_lock); - atomic64_set (&p->nr_reqs, 0); - bdi->ptr_host_inf->ptr_private = (void*)p; - - /* register blueDBM */ - if ((ret = host_blkdev_register_device - (bdi, __host_blkio_make_request_fn)) != 0) { - bdbm_error ("failed to register blueDBM"); - bdbm_free_atomic (p); - return 1; - } - - return 0; -} - -void blkio_close (bdbm_drv_info_t* bdi) -{ - bdbm_blkio_private_t* p = NULL; - - p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - - /* wait for host reqs to finish */ - bdbm_msg ("wait for host reqs to finish"); - while (1) { - if (atomic64_read (&p->nr_reqs) == 0) - break; - schedule (); /* sleep */ - } - - /* unregister a block device */ - host_blkdev_unregister_block_device (bdi); - - /* free private */ - bdbm_free_atomic (p); -} - -void blkio_make_req (bdbm_drv_info_t* bdi, void* req) -{ - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - bdbm_hlm_req_t* hlm_req = NULL; - struct bio* bio = (struct bio*)req; - - /* lock a global mutex -- this function must be finished as soon as possible */ - bdbm_sema_lock (&p->host_lock); - - /* see if the address range of bio is beyond storage space */ - if (bio->bi_sector + bio_sectors (bio) > np->device_capacity_in_byte / KERNEL_SECTOR_SIZE) { - bdbm_sema_unlock (&p->host_lock); - bdbm_error ("bio is beyond storage space (%lu > %llu)", - bio->bi_sector + bio_sectors (bio), - np->device_capacity_in_byte / KERNEL_SECTOR_SIZE); - bio_io_error (bio); - return; - } - - /* create a hlm_req using a bio */ - if ((hlm_req = __blkio_create_hlm_req (bdi, bio)) == NULL) { - bdbm_sema_unlock (&p->host_lock); - bdbm_error ("the creation of hlm_req failed"); - bio_io_error (bio); - return; - } - -#ifdef ENABLE_DISPLAY - /* display req info */ - __blkio_display_req (bdi, hlm_req); -#endif - - /* if success, increase # of host reqs before sending the request to hlm */ - atomic64_inc (&p->nr_reqs); - - /* NOTE: it would be possible that 'hlm_req' becomes NULL - * if 'bdi->ptr_hlm_inf->make_req' is success. */ - if (bdi->ptr_hlm_inf->make_req (bdi, hlm_req) != 0) { - bdbm_error ("'bdi->ptr_hlm_inf->make_req' failed"); - - /* decreate # of reqs */ - atomic64_dec (&p->nr_reqs); - if (atomic64_read (&p->nr_reqs) < 0) { - bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); - } - - /* finish a bio */ - __blkio_delete_hlm_req (bdi, hlm_req); - bio_io_error (bio); - } - - bdbm_sema_unlock (&p->host_lock); -} - -void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hlm_req) -{ - uint32_t ret; - struct bio* bio = NULL; - bdbm_blkio_private_t* p = NULL; - - /* unlock hlm_req's lock if it is available */ - if (hlm_req->done) - bdbm_sema_unlock (hlm_req->done); - - /* get a bio from hlm_req */ - bio = (struct bio*)hlm_req->ptr_host_req; - p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - ret = hlm_req->ret; - - /* destroy hlm_req */ - __blkio_delete_hlm_req (bdi, hlm_req); - - /* get the result and end a bio */ - if (bio != NULL) { - if (ret == 0) bio_endio (bio, 0); - else bio_io_error (bio); - } - - /* decreate # of reqs */ - atomic64_dec (&p->nr_reqs); - if (atomic64_read (&p->nr_reqs) < 0) { - bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); - } -} - -#endif diff --git a/frontend/kernel_nvme/kmain.c b/frontend/kernel_nvme/kmain.c index ad242d6..d86925a 100644 --- a/frontend/kernel_nvme/kmain.c +++ b/frontend/kernel_nvme/kmain.c @@ -390,6 +390,7 @@ struct user_cmd { #define TEST_IOCTL_WRITE _IO('N', 0x02) #define TEST_IOCTL_ERASE _IO('N', 0x03) +#if 0 static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) { struct user_cmd c; @@ -428,6 +429,52 @@ static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) return 0; } +#endif + +static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) +{ + struct user_cmd c; + struct hd_req* hc = NULL; + int die = 0; + + if (_bdi == NULL) + return 0; + + copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); + + for (die = 0; die < 64; die++) { + struct hd_req* hc = kzalloc (sizeof (struct hd_req), GFP_KERNEL); + + hc->bdi = _bdi; + hc->r = NULL; + hc->die = die; + hc->block = c.block; + hc->wu = c.wu; + hc->kp_ptr = kzalloc (4096*64, GFP_KERNEL); + hc->intr_handler = NULL; + + switch (cmd) { + case TEST_IOCTL_READ: + hc->rw = READ; + simple_read (_bdi, hc); + break; + case TEST_IOCTL_WRITE: + hc->rw = WRITE; + simple_write (_bdi, hc); + break; + case TEST_IOCTL_ERASE: + hc->rw = 0xff; + simple_erase (_bdi, hc); + break; + default: + bdbm_msg ("default"); + break; + } + } + + return 0; +} + static const struct file_operations _ctl_fops = { .open = nonseekable_open, diff --git a/frontend/kernel_nvme/register.sh b/frontend/kernel_nvme/register.sh index c3cfb3f..f74a1a9 100755 --- a/frontend/kernel_nvme/register.sh +++ b/frontend/kernel_nvme/register.sh @@ -2,9 +2,10 @@ sudo mkdir -p /usr/share/bdbm_drv sudo touch /usr/share/bdbm_drv/ftl.dat sudo touch /usr/share/bdbm_drv/dm.dat -sudo insmod risa_dev_ramdrive.ko -sudo insmod bdbm_drv.ko sudo rmmod nvme +#sudo insmod risa_dev_ramdrive.ko +sudo insmod risa_dev_ramdrive_timing.ko +sudo insmod bdbm_drv.ko sudo insmod ../../../kernel_4.5.3/nvme/nvme.ko #sudo mkfs -t ext4 -b 4096 /dev/nvme0n1 #sudo mount \-t ext4 \-o discard /dev/nvme0n1 /media/blueDBM diff --git a/frontend/kernel_nvme/unregister.sh b/frontend/kernel_nvme/unregister.sh index 4506aa9..ed5256e 100755 --- a/frontend/kernel_nvme/unregister.sh +++ b/frontend/kernel_nvme/unregister.sh @@ -1,8 +1,5 @@ sudo umount /media/blueDBM -sleep 1 sudo rmmod nvme -sleep 1 sudo rmmod bdbm_drv -sleep 1 sudo rmmod risa_dev_* #sudo rmmod f2fs diff --git a/ftl/ftl_params.c b/ftl/ftl_params.c index abfad00..c662138 100644 --- a/ftl/ftl_params.c +++ b/ftl/ftl_params.c @@ -53,8 +53,8 @@ int _param_snapshot = SNAPSHOT_DISABLE; int _param_mapping_type = MAPPING_POLICY_PAGE; /*int _param_mapping_type = MAPPING_POLICY_RSD;*/ /*int _param_mapping_type = MAPPING_POLICY_RSD;*/ -/*int _param_llm_type = LLM_MULTI_QUEUE;*/ -int _param_llm_type = LLM_NO_QUEUE; +int _param_llm_type = LLM_MULTI_QUEUE; +/*int _param_llm_type = LLM_NO_QUEUE;*/ int _param_hlm_type = HLM_NO_BUFFER; bdbm_ftl_params get_default_ftl_params (void) diff --git a/ftl/hlm_nobuf.c b/ftl/hlm_nobuf.c index 3f01550..8541a77 100644 --- a/ftl/hlm_nobuf.c +++ b/ftl/hlm_nobuf.c @@ -61,8 +61,10 @@ bdbm_hlm_inf_t _hlm_nobuf_inf = { /* data structures for hlm_nobuf */ typedef struct { bdbm_hlm_req_t tmp_hr; + bdbm_sema_t die_lock[64]; } bdbm_hlm_nobuf_private_t; +extern bdbm_drv_info_t* _bdi; /* functions for hlm_nobuf */ uint32_t hlm_nobuf_create (bdbm_drv_info_t* bdi) @@ -79,6 +81,16 @@ uint32_t hlm_nobuf_create (bdbm_drv_info_t* bdi) /* keep the private structure */ bdi->ptr_hlm_inf->ptr_private = (void*)p; + + { + int i = 0; + for (i = 0; i < 64; i++) { + bdbm_sema_init (&p->die_lock[i]); + } + } + + _bdi = bdi; + return 0; } @@ -102,8 +114,19 @@ uint32_t __hlm_nobuf_make_trim_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* ptr_hl return 0; } +uint32_t hynix_dumbssd_send_cmd ( + bdbm_drv_info_t* bdi, + bdbm_llm_req_t* r, + void (*intr_handler)(void*)); + +void intr_handler(void* arg) +{ + _bdi->ptr_hlm_inf->end_req (_bdi, arg); +} + uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) { + bdbm_hlm_nobuf_private_t* p = BDBM_HLM_PRIV(bdi); bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS(bdi); bdbm_ftl_inf_t* ftl = BDBM_GET_FTL_INF(bdi); bdbm_llm_req_t* lr = NULL; @@ -173,10 +196,26 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) if (bdi->ptr_llm_inf->make_reqs == NULL) { /* send individual llm-reqs to llm */ bdbm_hlm_for_each_llm_req (lr, hr, i) { + +#if 0 if (bdi->ptr_llm_inf->make_req (bdi, lr) != 0) { bdbm_error ("oops! make_req () failed"); bdbm_bug_on (1); } +#else + + /*bdbm_sema_lock (&lr->done);*/ + bdbm_sema_lock (&p->die_lock[lr->phyaddr.channel_no]); + bdbm_msg ("submit to %llu (%llu %llu %llu %llu)", + lr->phyaddr.channel_no, + lr->phyaddr.channel_no, + lr->phyaddr.chip_no, + lr->phyaddr.block_no, + lr->phyaddr.page_no); + hynix_dumbssd_send_cmd (bdi, lr, intr_handler); + /*bdbm_sema_lock (&lr->done);*/ + /*bdbm_sema_unlock (&lr->done);*/ +#endif } } else { /* send a bulk of llm-reqs to llm if make_reqs is supported */ @@ -305,6 +344,8 @@ void __hlm_nobuf_end_blkio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) atomic64_inc (&hr->nr_llm_reqs_done); lr->req_type |= REQTYPE_DONE; + /*bdbm_msg (" -- %ld/%llu", atomic64_read (&hr->nr_llm_reqs_done), hr->nr_llm_reqs);*/ + if (atomic64_read (&hr->nr_llm_reqs_done) == hr->nr_llm_reqs) { /* finish the host request */ bdi->ptr_host_inf->end_req (bdi, hr); @@ -328,7 +369,20 @@ void hlm_nobuf_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) if (bdbm_is_gc (lr->req_type)) { __hlm_nobuf_end_gcio_req (bdi, lr); } else { + bdbm_hlm_nobuf_private_t* p = BDBM_HLM_PRIV(bdi); + /*bdbm_sema_unlock (&lr->done);*/ + /* + bdbm_msg ("done - 1: %llu (%llu %llu %llu %llu)", + lr->phyaddr.channel_no, + lr->phyaddr.channel_no, + lr->phyaddr.chip_no, + lr->phyaddr.block_no, + lr->phyaddr.page_no); + */ + bdbm_sema_unlock (&p->die_lock[lr->phyaddr.channel_no]); + /*bdbm_msg ("done - 2:");*/ __hlm_nobuf_end_blkio_req (bdi, lr); + /*bdbm_msg ("done - 3:");*/ } } diff --git a/ftl/hlm_reqs_pool.c b/ftl/hlm_reqs_pool.c index b1dcbdf..33e212b 100644 --- a/ftl/hlm_reqs_pool.c +++ b/ftl/hlm_reqs_pool.c @@ -267,6 +267,7 @@ void hlm_reqs_pool_allocate_llm_reqs ( fo->data = (uint8_t*)bdbm_malloc_phy (8*BDBM_MAX_PAGES); else fo->data = (uint8_t*)bdbm_malloc (8*BDBM_MAX_PAGES); + bdbm_sema_init (&llm_reqs[i].done); } } diff --git a/ftl/llm_mq.c b/ftl/llm_mq.c index d100e8b..9564036 100644 --- a/ftl/llm_mq.c +++ b/ftl/llm_mq.c @@ -49,7 +49,7 @@ THE SOFTWARE. /* NOTE: This serializes all of the requests from the host file system; * it is useful for debugging */ -#define ENABLE_SEQ_DBG +/*#define ENABLE_SEQ_DBG*/ /* llm interface */ diff --git a/ftl/llm_noq.c b/ftl/llm_noq.c index 7e43c5a..69395c3 100644 --- a/ftl/llm_noq.c +++ b/ftl/llm_noq.c @@ -41,6 +41,7 @@ THE SOFTWARE. #include "llm_noq.h" #include "pmu.h" +/*#define ENABLE_SEQ_DBG*/ /* llm interface */ bdbm_llm_inf_t _llm_noq_inf = { @@ -48,13 +49,17 @@ bdbm_llm_inf_t _llm_noq_inf = { .create = llm_noq_create, .destroy = llm_noq_destroy, .make_req = llm_noq_make_req, - .make_reqs = llm_noq_make_reqs, + /*.make_reqs = llm_noq_make_reqs,*/ + .make_reqs = NULL, .flush = llm_noq_flush, .end_req = llm_noq_end_req, }; struct bdbm_llm_noq_private { uint32_t dummy; +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_t dbg_seq; +#endif }; uint32_t llm_noq_create (bdbm_drv_info_t* bdi) @@ -75,6 +80,10 @@ uint32_t llm_noq_create (bdbm_drv_info_t* bdi) /* keep the private structures for llm_nt */ bdi->ptr_llm_inf->ptr_private = (void*)p; +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_init (&p->dbg_seq); +#endif + return 0; } @@ -96,13 +105,20 @@ uint32_t llm_noq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) uint32_t ret; static uint64_t cnt = 0; +#if defined(ENABLE_SEQ_DBG) + struct bdbm_llm_noq_private* p = BDBM_LLM_PRIV(bdi); + bdbm_sema_lock (&p->dbg_seq); +#endif + /* just for display */ if (cnt % 50000 == 0) bdbm_msg ("llm_noq_make_req: %llu", cnt); cnt++; /* update pmu */ - pmu_update_sw (bdi, r); - pmu_update_q (bdi, r); + /*pmu_update_sw (bdi, r);*/ + /*pmu_update_q (bdi, r);*/ + + bdbm_msg ("llm_noq_make_req"); /* send a request to a device manager */ if ((ret = bdi->ptr_dm_inf->make_req (bdi, r)) != 0) { @@ -110,6 +126,8 @@ uint32_t llm_noq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) bdbm_error ("llm_make_req failed"); } + bdbm_msg ("llm_noq_make_req - done"); + return ret; } @@ -134,8 +152,13 @@ void llm_noq_flush (bdbm_drv_info_t* bdi) void llm_noq_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) { /* update pmu */ - pmu_update_tot (bdi, r); - pmu_inc (bdi, r); + /*pmu_update_tot (bdi, r);*/ + /*pmu_inc (bdi, r);*/ + +#if defined(ENABLE_SEQ_DBG) + struct bdbm_llm_noq_private* p = BDBM_LLM_PRIV(bdi); + bdbm_sema_unlock (&p->dbg_seq); +#endif /* finish a request */ bdi->ptr_hlm_inf->end_req (bdi, r); diff --git a/ftl/llm_noq_lock.c b/ftl/llm_noq_lock.c index a9b0c36..b3c803c 100644 --- a/ftl/llm_noq_lock.c +++ b/ftl/llm_noq_lock.c @@ -136,13 +136,9 @@ uint32_t llm_noq_lock_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req) pmu_update_sw (bdi, llm_req); - bdbm_msg ("test"); - /* send a request to a device manager */ ret = bdi->ptr_dm_inf->make_req (bdi, llm_req); - bdbm_msg ("test-done"); - /* handle error cases */ if (ret != 0) { /* complete a lock */ diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 4779e67..833d6c7 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -184,7 +184,7 @@ typedef struct { uint8_t ret; /* old for GC */ void* ptr_hlm_req; void* ptr_qitem; - bdbm_sema_t* done; /* maybe used by applications that require direct notifications from an interrupt handler */ + bdbm_sema_t done; /* maybe used by applications that require direct notifications from an interrupt handler */ /* logical / physical info */ bdbm_logaddr_t logaddr; From 351f7b07ebdf74825e222e7c990636b42c48cd95 Mon Sep 17 00:00:00 2001 From: chamdoo Date: Thu, 28 Jul 2016 14:53:42 -0400 Subject: [PATCH 10/51] added dm_dumbssd --- devices/dumb_nvme/Makefile | 59 ------------ devices/dumb_nvme/dumb_nvme.c | 133 --------------------------- devices/dumb_nvme/dumb_nvme.h | 41 --------- devices/ramdrive/hynix_dumbssd.c | 137 +++++++++++++++++++--------- examples/test/test | Bin 12192 -> 12288 bytes examples/test/test.c | 27 +++--- frontend/kernel_nvme/blkdev.c | 138 ++++++++++++++++++++++++++++- frontend/kernel_nvme/blkio.c | 8 +- frontend/kernel_nvme/mount_ext4.sh | 8 +- ftl/hlm_nobuf.c | 9 +- ftl/hlm_reqs_pool.c | 4 + include/bdbm_drv.h | 2 +- 12 files changed, 262 insertions(+), 304 deletions(-) delete mode 100644 devices/dumb_nvme/Makefile delete mode 100644 devices/dumb_nvme/dumb_nvme.c delete mode 100644 devices/dumb_nvme/dumb_nvme.h diff --git a/devices/dumb_nvme/Makefile b/devices/dumb_nvme/Makefile deleted file mode 100644 index 3dd2b47..0000000 --- a/devices/dumb_nvme/Makefile +++ /dev/null @@ -1,59 +0,0 @@ -# Makefile for BlueDBM -# -CONFIG_MODULE_SIG=n - -INCLUDE = ../../include -COMMON = ../../common -DEV_COMMON = ../common - -EXTRA_CFLAGS := \ - -I$(PWD)/$(INCLUDE) \ - -I$(PWD)/$(COMMON)/utils \ - -I$(PWD)/$(COMMON)/3rd \ - -I$(PWD)/$(DEV_COMMON) \ - -EXTRA_CFLAGS += \ - -D CONFIG_ENABLE_MSG \ - -D CONFIG_ENABLE_DEBUG \ - -D CONFIG_DEVICE_TYPE_RAMDRIVE \ - -D KERNEL_MODE - -dm_dumb_nvme-y := \ - $(COMMON)/utils/ufile.o \ - $(COMMON)/utils/utime.o \ - $(COMMON)/utils/uthread.o \ - $(COMMON)/utils/umemory.o \ - $(DEV_COMMON)/dev_main.o \ - $(DEV_COMMON)/dev_params.o \ - $(DEV_COMMON)/dev_stub.o \ - dumb_nvme.o \ - -obj-m := dm_dumb_nvme.o - -export KROOT=/lib/modules/$(shell uname -r)/build - -.PHONY: default -default: modules - -.PHONY: modules -modules: - @$(MAKE) -C $(KROOT) M=$(PWD) modules - @chmod +x dm_dumb_nvme.ko - -.PHONY: modules_check -modules_check: - @$(MAKE) -C $(KROOT) C=2 M=$(PWD) modules - -.PHONY: modules_install -modules_install: - @$(MAKE) -C $(KROOT) M=$(PWD) modules_install - -.PHONY: kernel_clean -kernel_clean: - @$(MAKE) -C $(KROOT) M=$(PWD) clean - -.PHONY: clean -clean: kernel_clean - @$(RM) -rf Module.markers modules.order - @cd ../common; $(RM) *.o - diff --git a/devices/dumb_nvme/dumb_nvme.c b/devices/dumb_nvme/dumb_nvme.c deleted file mode 100644 index 4276be2..0000000 --- a/devices/dumb_nvme/dumb_nvme.c +++ /dev/null @@ -1,133 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#if defined (KERNEL_MODE) -#include -#else -#error Invalid Platform (KERNEL_MODE or USER_MODE) -#endif - -#include "debug.h" -#include "dumb_nvme.h" -#include "dev_params.h" -#include "utime.h" -#include "umemory.h" - - -/* interface for dm */ -bdbm_dm_inf_t _bdbm_dm_inf = { - .ptr_private = NULL, - .probe = dm_nvme_probe, - .open = dm_nvme_open, - .close = dm_nvme_close, - .make_req = dm_nvme_make_req, - .make_reqs = dm_nvme_make_reqs, - .end_req = dm_nvme_end_req, -}; - -/* private data structure for dm */ -typedef struct { - -} dm_nvme_private_t; - -/* global data structure */ -extern bdbm_drv_info_t* _bdi_dm; - - -uint32_t dm_nvme_probe ( - bdbm_drv_info_t* bdi, - bdbm_device_params_t* params) -{ - dm_nvme_private_t* p = NULL; - - /* setup NAND parameters according to users' inputs */ - *params = get_default_device_params (); - display_device_params (params); - - /* create a private structure for ramdrive */ - if ((p = (dm_nvme_private_t*)bdbm_malloc_atomic ( - sizeof (dm_nvme_private_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - goto fail; - } - -#if 0 - /* create RAMSSD based on user-specified NAND parameters */ - if ((p->ramssd = dev_ramssd_create ( - params, __dm_ramdrive_ih)) == NULL) { - bdbm_error ("dev_ramssd_create failed"); - bdbm_free_atomic (p); - goto fail; - } -#endif - - /* OK! keep private info */ - bdi->ptr_dm_inf->ptr_private = (void*)p; - - bdbm_msg ("[dm_nvme_probe] probe done!"); - - return 0; - -fail: - return -1; -} - -uint32_t dm_nvme_open ( - bdbm_drv_info_t* bdi) -{ - dm_nvme_private_t * p = BDBM_DM_PRIV (bdi); - bdbm_msg ("[dm_nvme_open] open done!"); - return 0; -} - -void dm_nvme_close ( - bdbm_drv_info_t* bdi) -{ - dm_nvme_private_t* p = BDBM_DM_PRIV (bdi); - bdbm_msg ("[dm_nvme_close] closed!"); - bdbm_free_atomic (p); -} - -uint32_t dm_nvme_make_req ( - bdbm_drv_info_t* bdi, - bdbm_llm_req_t* r) -{ - bdbm_msg ("[dm_nvme_make_req]"); - return -1; -} - -uint32_t dm_nvme_make_reqs ( - bdbm_drv_info_t* bdi, - bdbm_hlm_req_t* hr) -{ - bdbm_msg ("[dm_nvme_make_reqs]"); - return -1; -} - -void dm_nvme_end_req ( - bdbm_drv_info_t* bdi, - bdbm_llm_req_t* r) -{ - bdi->ptr_llm_inf->end_req (bdi, r); -} diff --git a/devices/dumb_nvme/dumb_nvme.h b/devices/dumb_nvme/dumb_nvme.h deleted file mode 100644 index 0a5026e..0000000 --- a/devices/dumb_nvme/dumb_nvme.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#ifndef _BLUEDBM_DM_NVME_H -#define _BLUEDBM_DM_NVME_H_ - -#include "bdbm_drv.h" -#include "params.h" - -extern bdbm_dm_inf_t _dm_ramdrive_inf; - -uint32_t dm_nvme_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* param); -uint32_t dm_nvme_open (bdbm_drv_info_t* bdi); -void dm_nvme_close (bdbm_drv_info_t* bdi); -uint32_t dm_nvme_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req); -uint32_t dm_nvme_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* ptr_hlm_req); -void dm_nvme_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req); - -#endif - diff --git a/devices/ramdrive/hynix_dumbssd.c b/devices/ramdrive/hynix_dumbssd.c index 220af23..3ea7e52 100644 --- a/devices/ramdrive/hynix_dumbssd.c +++ b/devices/ramdrive/hynix_dumbssd.c @@ -66,14 +66,13 @@ void print_bio (struct bio* bio) bdbm_sema_t dbg_seq; + static void nvme_nvm_end_io (struct request *rq, int error) { struct hd_req* hdr = rq->end_io_data; bdbm_llm_req_t* r = hdr->r; void (*fn) (void*); - /*bdbm_msg ("nvme_nvm_end_io -- callback");*/ - static int init = 0, parallel = 0;; if (init == 0) { bdbm_sema_init (&dbg_seq); @@ -88,32 +87,49 @@ static void nvme_nvm_end_io (struct request *rq, int error) fn = hdr->intr_handler; - if (rq->bio && rq->bio->bi_end_io) - rq->bio->bi_end_io (rq->bio); - if (hdr->rw == READ) - memcpy (hdr->kp_ptr, hdr->buffer, 4096); - if (rq->cmd) - kfree (rq->cmd); - if (hdr) - kfree (hdr); - if (hdr->buffer) - kfree(hdr->buffer); + /*bio_put (rq->bio);*/ + + /*if (rq->bio && rq->bio->bi_end_io)*/ + /*rq->bio->bi_end_io (rq->bio);*/ + /*if (hdr->rw == READ)*/ + /*memcpy (hdr->kp_ptr, hdr->buffer, 4096);*/ + /*if (rq->cmd)*/ + /*kfree (rq->cmd);*/ + /*if (hdr->buffer)*/ + /*kfree (hdr->buffer);*/ + /*if (hdr)*/ + /*kfree (hdr);*/ if (rq) - blk_mq_free_request(rq); + blk_mq_free_request (rq); fn (r); parallel--; + bdbm_msg ("done from %llu (%llu %llu %llu %llu)", + r->phyaddr.channel_no, + r->phyaddr.channel_no, + r->phyaddr.chip_no, + r->phyaddr.block_no, + r->phyaddr.page_no); + bdbm_sema_unlock (&dbg_seq); /*bdbm_msg ("nvme_nvm_end_io -- callback - done");*/ } +static void blk_end_sync_rq (struct request* rq, int error) +{ + struct completion* waiting = rq->end_io_data; + rq->end_io_data = NULL; + complete (waiting); +} + int simple_read ( bdbm_drv_info_t* bdi, struct hd_req* hdr) { + DECLARE_COMPLETION_ONSTACK(wait); struct bio* bio = NULL; struct request *rq; struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); @@ -125,10 +141,14 @@ int simple_read ( /*bdbm_msg ("READ: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs);*/ +#if 0 /* [STEP1] setup bio */ /*bio = bio_map_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL);*/ bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_NOIO, 1); + bdbm_bug_on (bio == NULL); bio->bi_rw = READ; + bio_get (bio); +#endif /* [STEP2] alloc request */ rq = blk_mq_alloc_request(bdi->q, 0, 0); @@ -137,15 +157,15 @@ int simple_read ( bdbm_bug_on (1); return -ENOMEM; } - rq->cmd_type = REQ_TYPE_DRV_PRIV; - rq->cmd_flags |= REQ_FAILFAST_DRIVER; - rq->ioprio = bio_prio(bio); - if (bio_has_data(bio)) { - rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); - } - rq->__data_len = bio->bi_iter.bi_size; - rq->bio = rq->biotail = bio; + /*rq->cmd_type = REQ_TYPE_DRV_PRIV;*/ + /*rq->cmd_flags |= REQ_FAILFAST_DRIVER;*/ + /*rq->ioprio = bio_prio(bio);*/ + /*if (bio_has_data(bio)) {*/ + /*rq->nr_phys_segments = bio_phys_segments(bdi->q, bio);*/ + /*}*/ + /*rq->__data_len = bio->bi_iter.bi_size;*/ + /*rq->bio = rq->biotail = bio;*/ rq->cmd = (unsigned char *)cmd; rq->cmd_len = sizeof(struct nvme_command); @@ -164,8 +184,17 @@ int simple_read ( cmd->rw.apptag = 0; cmd->rw.appmask = 0; + if (blk_rq_map_kern (bdi->q, rq, hdr->buffer, 64*4096, GFP_KERNEL)) { + bdbm_msg ("blk_rq_map_kern() failed"); + bdbm_bug_on (1); + } + #ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, NULL, rq, 0, nvme_nvm_end_io); + /*rq->end_io_data = &wait;*/ + blk_execute_rq_nowait (bdi->q, NULL, rq, 1, nvme_nvm_end_io); + /*blk_execute_rq_nowait (bdi->q, NULL, rq, 1, blk_end_sync_rq);*/ + /*wait_for_completion_io(&wait);*/ + /*rq->end_io_data = hdr;*/ /*nvme_nvm_end_io (rq, 0);*/ #else blk_execute_rq (bdi->q, bdi->gd, rq, 0); @@ -180,6 +209,7 @@ int simple_write ( bdbm_drv_info_t* bdi, struct hd_req* hdr) { + DECLARE_COMPLETION_ONSTACK(wait); struct bio* bio = NULL; struct request *rq; struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); @@ -193,10 +223,13 @@ int simple_write ( /* setup bio */ memcpy (hdr->buffer, hdr->kp_ptr, 4096); +#if 0 /*bio = bio_map_kern (bdi->q, hdr->buffer, 64*4096, GFP_NOIO);*/ bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_NOIO, 0); bdbm_bug_on (bio == NULL); bio->bi_rw = WRITE; + bio_get (bio); +#endif /* allocate request */ rq = blk_mq_alloc_request (bdi->q, 1, 0); @@ -207,12 +240,12 @@ int simple_write ( } rq->cmd_type = REQ_TYPE_DRV_PRIV; - rq->cmd_flags |= REQ_FAILFAST_DRIVER; - rq->ioprio = bio_prio(bio); - if (bio_has_data(bio)) - rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); - rq->__data_len = bio->bi_iter.bi_size; - rq->bio = rq->biotail = bio; + /*rq->cmd_flags |= REQ_FAILFAST_DRIVER;*/ + /*rq->ioprio = bio_prio(bio);*/ + /*if (bio_has_data(bio))*/ + /*rq->nr_phys_segments = bio_phys_segments(bdi->q, bio);*/ + /*rq->__data_len = bio->bi_iter.bi_size;*/ + /*rq->bio = rq->biotail = bio;*/ rq->cmd = (unsigned char *)cmd; rq->cmd_len = sizeof(struct nvme_command); @@ -231,8 +264,17 @@ int simple_write ( cmd->rw.apptag = 0; cmd->rw.appmask = 0; + if (blk_rq_map_kern (bdi->q, rq, hdr->buffer, 64*4096, GFP_KERNEL)) { + bdbm_msg ("blk_rq_map_kern() failed"); + bdbm_bug_on (1); + } + #ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, NULL, rq, 0, nvme_nvm_end_io); + /*rq->end_io_data = &wait;*/ + blk_execute_rq_nowait (bdi->q, NULL, rq, 1, nvme_nvm_end_io); + /*blk_execute_rq_nowait (bdi->q, NULL, rq, 1, blk_end_sync_rq);*/ + /*wait_for_completion_io(&wait);*/ + /*rq->end_io_data = hdr;*/ /*nvme_nvm_end_io (rq, 0);*/ #else blk_execute_rq (bdi->q, bdi->gd, rq, 0); @@ -247,11 +289,12 @@ int simple_erase ( bdbm_drv_info_t* bdi, struct hd_req* hdr) { + DECLARE_COMPLETION_ONSTACK(wait); struct request *rq; struct bio* bio = NULL; struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); __u32 req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE); + hdr->die << (BITS_PER_WU + BITS_PER_SLICE); __le64* ubuffer_64 = (__le64*)hdr->buffer; bdbm_bug_on (cmd == NULL); @@ -261,9 +304,13 @@ int simple_erase ( ubuffer_64[1] = req_ofs; /* setup bio */ +#if 0 /*bio = bio_map_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL);*/ bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_NOIO, 0); + bdbm_bug_on (bio == NULL); bio->bi_rw = WRITE; + bio_get (bio); +#endif /* alloc request */ rq = blk_mq_alloc_request(bdi->q, 1, 0); @@ -273,13 +320,13 @@ int simple_erase ( return -ENOMEM; } - rq->cmd_type = REQ_TYPE_DRV_PRIV; - rq->cmd_flags |= REQ_FAILFAST_DRIVER; - rq->ioprio = bio_prio(bio); - if (bio_has_data(bio)) - rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); - rq->__data_len = bio->bi_iter.bi_size; - rq->bio = rq->biotail = bio; + /*rq->cmd_type = REQ_TYPE_DRV_PRIV;*/ + /*rq->cmd_flags |= REQ_FAILFAST_DRIVER;*/ + /*rq->ioprio = bio_prio(bio);*/ + /*if (bio_has_data(bio))*/ + /*rq->nr_phys_segments = bio_phys_segments(bdi->q, bio);*/ + /*rq->__data_len = bio->bi_iter.bi_size;*/ + /*rq->bio = rq->biotail = bio;*/ rq->cmd = (unsigned char *)cmd; rq->cmd_len = sizeof(struct nvme_command); @@ -299,8 +346,18 @@ int simple_erase ( cmd->common.cdw10[4] = 0; cmd->common.cdw10[5] = 0; + /*if (blk_rq_map_kern (bdi->q, rq, hdr->buffer, 64*4096, GFP_KERNEL)) {*/ + if (blk_rq_map_kern (bdi->q, rq, hdr->buffer, 64*4096, GFP_KERNEL)) { + bdbm_msg ("blk_rq_map_kern() failed"); + bdbm_bug_on (1); + } + #ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, NULL, rq, 0, nvme_nvm_end_io); + /*rq->end_io_data = &wait;*/ + blk_execute_rq_nowait (bdi->q, NULL, rq, 1, nvme_nvm_end_io); + /*blk_execute_rq_nowait (bdi->q, NULL, rq, 1, blk_end_sync_rq);*/ + /*wait_for_completion_io(&wait);*/ + /*rq->end_io_data = hdr;*/ /*nvme_nvm_end_io (rq, 0);*/ #else blk_execute_rq (bdi->q, bdi->gd, rq, 0); @@ -327,7 +384,7 @@ uint32_t hynix_dumbssd_send_cmd ( hdr->block = r->phyaddr.block_no; hdr->wu = r->phyaddr.page_no; hdr->intr_handler = intr_handler; - hdr->buffer = kzalloc (4096*64, GFP_KERNEL); + hdr->buffer = kmalloc (4096*64, GFP_KERNEL); hdr->kp_ptr = r->fmain.kp_ptr[0]; bdbm_bug_on (hdr->buffer == NULL); @@ -368,5 +425,3 @@ uint32_t hynix_dumbssd_send_cmd ( return 0; } EXPORT_SYMBOL (hynix_dumbssd_send_cmd); - - diff --git a/examples/test/test b/examples/test/test index 0f602fce594db516f682180ce6a8474ba5ead7b8..fb622c0d2eaf30bdfb0ef5f03a0cb8d6d6852ae4 100755 GIT binary patch delta 2462 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 S2M>7empk$kt}{5~ar_5tpc9+` diff --git a/examples/test/test.c b/examples/test/test.c index b45e2d4..9a3432f 100644 --- a/examples/test/test.c +++ b/examples/test/test.c @@ -35,6 +35,9 @@ THE SOFTWARE. #include #include +#include "../../devices/dumbssd/dm_dumbssd.h" + +/* struct user_cmd { int die; int block; @@ -44,11 +47,13 @@ struct user_cmd { #define TEST_IOCTL_READ _IO('N', 0x01) #define TEST_IOCTL_WRITE _IO('N', 0x02) #define TEST_IOCTL_ERASE _IO('N', 0x03) +*/ + void test_read (int32_t dev_h, int die, int block, int wu) { - struct user_cmd c; + dumbssd_user_cmd_t c; c.die = die; c.block = block; c.wu = wu; @@ -57,7 +62,7 @@ void test_read (int32_t dev_h, int die, int block, int wu) void test_write (int32_t dev_h, int die, int block, int wu) { - struct user_cmd c; + dumbssd_user_cmd_t c; c.die = die; c.block = block; c.wu = wu; @@ -66,7 +71,7 @@ void test_write (int32_t dev_h, int die, int block, int wu) void test_erase (int32_t dev_h, int die, int block) { - struct user_cmd c; + dumbssd_user_cmd_t c; c.die = die; c.block = block; ioctl (dev_h, TEST_IOCTL_ERASE, &c); @@ -89,7 +94,7 @@ int main (int argc, char** argv) /* Send a BDBM format command using IOCTL * Everything will be done by bdbm_drv.ko */ - /* +#if 0 test_erase (dev_h, 8, 8); sleep (1); test_write (dev_h, 8, 8, 0); @@ -112,25 +117,25 @@ int main (int argc, char** argv) sleep (1); test_read (dev_h, 1, 1, 0); printf ("\n"); - */ +#endif { int die = 0, block = 0, wu = 0; - printf ("erase..."); + printf ("erase...\n"); for (block = 0; block < 20; block++) - for (die = 0; die < 1; die++) + for (die = 0; die < 64; die++) test_erase (dev_h, die, block); - printf ("write..."); + printf ("write...\n"); for (block = 0; block < 10; block++) for (wu = 0; wu < 64; wu++) - for (die = 0; die < 1; die++) + for (die = 0; die < 64; die++) test_write (dev_h, die, block, wu); - printf ("read..."); + printf ("read...\n"); for (block = 0; block < 10; block++) for (wu = 0; wu < 64; wu++) - for (die = 0; die < 1; die++) + for (die = 0; die < 64; die++) test_read (dev_h, die, block, wu); } diff --git a/frontend/kernel_nvme/blkdev.c b/frontend/kernel_nvme/blkdev.c index 19505cf..a1756e2 100644 --- a/frontend/kernel_nvme/blkdev.c +++ b/frontend/kernel_nvme/blkdev.c @@ -41,7 +41,8 @@ int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo); static struct bdbm_device_t { struct gendisk *gd; struct request_queue *queue; -} bdbm_device; +} _bdbm_device_dummy, bdbm_device; + static uint32_t bdbm_device_major_num = 0; static struct block_device_operations bdops = { @@ -190,6 +191,139 @@ int bdbm_blk_ioctl ( return 0; } +static blk_qc_t dummy_fn ( + struct request_queue *q, + struct bio *bio) +{ + bio_endio (bio); + return BLK_QC_T_NONE; /* for no polling */ +} + +uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) +{ + uint64_t capacity = 0; + + _bdbm_device_dummy.queue = blk_alloc_queue_node (GFP_KERNEL, bdi->q->node); + bdbm_msg ("host_blkdev_register_device -> blk_alloc_queue_node"); + if (!_bdbm_device_dummy.queue) { + bdbm_error ("blk_alloc_queue failed"); + return -ENOMEM; + } + + blk_queue_make_request (_bdbm_device_dummy.queue, dummy_fn); + blk_queue_logical_block_size (_bdbm_device_dummy.queue, bdi->parm_ftl.kernel_sector_size); + blk_queue_io_min (_bdbm_device_dummy.queue, bdi->parm_dev.page_main_size); + blk_queue_io_opt (_bdbm_device_dummy.queue, bdi->parm_dev.page_main_size); + + /* see if a TRIM command is used or not */ + if (bdi->parm_ftl.trim == TRIM_ENABLE) { + _bdbm_device_dummy.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; + _bdbm_device_dummy.queue->limits.max_discard_sectors = UINT_MAX; + queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, _bdbm_device_dummy.queue); + bdbm_msg ("TRIM is enabled"); + } else { + bdbm_msg ("TRIM is disabled"); + } + + bdbm_msg ("host_blkdev_register_device -> alloc_disk"); + if (!(_bdbm_device_dummy.gd = alloc_disk (0))) { + bdbm_msg ("alloc_disk failed"); + return -ENOMEM; + } + _bdbm_device_dummy.gd->flags = GENHD_FL_EXT_DEVT; + bdbm_msg ("host_blkdev_register_device -> alloc_disk - done"); + + bdi->gd = _bdbm_device_dummy.gd; + + _bdbm_device_dummy.gd->major = 0; + _bdbm_device_dummy.gd->first_minor = 0; + _bdbm_device_dummy.gd->fops = &bdops; + _bdbm_device_dummy.gd->queue = _bdbm_device_dummy.queue; + _bdbm_device_dummy.gd->private_data = NULL; + strcpy (_bdbm_device_dummy.gd->disk_name, bdi->disk_name); + + /* setup disk capacity */ + capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + capacity = (capacity) - capacity/10; + set_capacity (_bdbm_device_dummy.gd, capacity / KERNEL_SECTOR_SIZE); + + /* add disk */ + bdbm_msg ("add_disk"); + add_disk (_bdbm_device_dummy.gd); + bdbm_msg ("add_disk - done"); + + /************************************************************************/ + /* create a blk queue */ + bdbm_device.queue = blk_alloc_queue (GFP_KERNEL); + if (!bdbm_device.queue) { + bdbm_error ("blk_alloc_queue failed"); + return -ENOMEM; + } + + blk_queue_make_request (bdbm_device.queue, fn); + blk_queue_logical_block_size (bdbm_device.queue, bdi->parm_ftl.kernel_sector_size); + blk_queue_io_min (bdbm_device.queue, bdi->parm_dev.page_main_size); + blk_queue_io_opt (bdbm_device.queue, bdi->parm_dev.page_main_size); + + /* see if a TRIM command is used or not */ + if (bdi->parm_ftl.trim == TRIM_ENABLE) { + bdbm_device.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; + bdbm_device.queue->limits.max_discard_sectors = UINT_MAX; + queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, bdbm_device.queue); + bdbm_msg ("TRIM is enabled"); + } else { + bdbm_msg ("TRIM is disabled"); + } + + /* alloc & register a blk device */ + if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, "blueDBM")) < 0) { + bdbm_msg ("register_blkdev failed (%d)", bdbm_device_major_num); + return bdbm_device_major_num; + } + if (!(bdbm_device.gd = alloc_disk (1))) { + bdbm_msg ("alloc_disk failed"); + unregister_blkdev (bdbm_device_major_num, "blueDBM"); + return -ENOMEM; + } + + bdbm_device.gd->major = bdbm_device_major_num; + bdbm_device.gd->first_minor = 0; + bdbm_device.gd->fops = &bdops; + bdbm_device.gd->queue = bdbm_device.queue; + bdbm_device.gd->private_data = NULL; + strcpy (bdbm_device.gd->disk_name, "blueDBM"); + + /* setup disk capacity */ + /*blk_queue_max_hw_sectors (bdbm_device.queue, 8);*/ + capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + capacity = (capacity) - capacity/10; + set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); + + /* add disk */ + bdbm_msg ("add_disk"); + add_disk (bdbm_device.gd); + bdbm_msg ("add_disk - done"); + + return 0; +} + +void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) +{ + del_gendisk (bdbm_device.gd); + blk_cleanup_queue (bdbm_device.queue); + put_disk (bdbm_device.gd); + unregister_blkdev (bdbm_device_major_num, "blueDBM"); + + + /*********************************************************/ + /* unregister a BlueDBM device driver */ + del_gendisk (_bdbm_device_dummy.gd); + blk_cleanup_queue (_bdbm_device_dummy.queue); + put_disk (_bdbm_device_dummy.gd); +} + + +#if 0 uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) { uint64_t capacity = 0; @@ -280,4 +414,4 @@ void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) bdbm_device.queue = NULL; bdbm_device.gd = NULL; } - +#endif diff --git a/frontend/kernel_nvme/blkio.c b/frontend/kernel_nvme/blkio.c index a4f0f98..160204c 100644 --- a/frontend/kernel_nvme/blkio.c +++ b/frontend/kernel_nvme/blkio.c @@ -192,6 +192,11 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) bdbm_blkio_req_t* br = NULL; bdbm_hlm_req_t* hr = NULL; + bdbm_msg ("blkio_make_req WHAT!!!! (%s)", bdi->gd->disk_name); + + /* lock a global mutex -- this function must be finished as soon as possible */ + bdbm_sema_lock (&p->host_lock); + /* get blkio */ if ((br = __get_blkio_req ((struct bio*)bio)) == NULL) { bdbm_error ("__get_blkio_req () failed"); @@ -210,9 +215,6 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) goto fail; } - /* lock a global mutex -- this function must be finished as soon as possible */ - bdbm_sema_lock (&p->host_lock); - /* if success, increase # of host reqs */ atomic_inc (&p->nr_host_reqs); diff --git a/frontend/kernel_nvme/mount_ext4.sh b/frontend/kernel_nvme/mount_ext4.sh index 854bc27..43cabc7 100755 --- a/frontend/kernel_nvme/mount_ext4.sh +++ b/frontend/kernel_nvme/mount_ext4.sh @@ -1,9 +1,5 @@ -sudo mkdir -p /usr/share/bdbm_drv -sudo touch /usr/share/bdbm_drv/ftl.dat -sudo touch /usr/share/bdbm_drv/dm.dat +#sudo mkfs -t ext4 -b 4096 /dev/nvme0n1 +#sudo mount \-t ext4 \-o discard /dev/nvme0n1 /media/blueDBM -sudo insmod risa_dev_ramdrive.ko -sudo insmod bdbm_drv.ko -#sudo ./bdbm_format /dev/blueDBM sudo mkfs -t ext4 -b 4096 /dev/blueDBM sudo mount \-t ext4 \-o discard /dev/blueDBM /media/blueDBM diff --git a/ftl/hlm_nobuf.c b/ftl/hlm_nobuf.c index 8541a77..eaae86e 100644 --- a/ftl/hlm_nobuf.c +++ b/ftl/hlm_nobuf.c @@ -196,14 +196,12 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) if (bdi->ptr_llm_inf->make_reqs == NULL) { /* send individual llm-reqs to llm */ bdbm_hlm_for_each_llm_req (lr, hr, i) { - #if 0 if (bdi->ptr_llm_inf->make_req (bdi, lr) != 0) { bdbm_error ("oops! make_req () failed"); bdbm_bug_on (1); } #else - /*bdbm_sema_lock (&lr->done);*/ bdbm_sema_lock (&p->die_lock[lr->phyaddr.channel_no]); bdbm_msg ("submit to %llu (%llu %llu %llu %llu)", @@ -342,6 +340,7 @@ void __hlm_nobuf_end_blkio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) /* increase # of reqs finished */ atomic64_inc (&hr->nr_llm_reqs_done); + lr->req_type |= REQTYPE_DONE; /*bdbm_msg (" -- %ld/%llu", atomic64_read (&hr->nr_llm_reqs_done), hr->nr_llm_reqs);*/ @@ -371,18 +370,14 @@ void hlm_nobuf_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) } else { bdbm_hlm_nobuf_private_t* p = BDBM_HLM_PRIV(bdi); /*bdbm_sema_unlock (&lr->done);*/ - /* bdbm_msg ("done - 1: %llu (%llu %llu %llu %llu)", lr->phyaddr.channel_no, lr->phyaddr.channel_no, lr->phyaddr.chip_no, lr->phyaddr.block_no, lr->phyaddr.page_no); - */ - bdbm_sema_unlock (&p->die_lock[lr->phyaddr.channel_no]); - /*bdbm_msg ("done - 2:");*/ __hlm_nobuf_end_blkio_req (bdi, lr); - /*bdbm_msg ("done - 3:");*/ + bdbm_sema_unlock (&p->die_lock[lr->phyaddr.channel_no]); } } diff --git a/ftl/hlm_reqs_pool.c b/ftl/hlm_reqs_pool.c index 33e212b..cd8e053 100644 --- a/ftl/hlm_reqs_pool.c +++ b/ftl/hlm_reqs_pool.c @@ -160,6 +160,7 @@ bdbm_hlm_req_t* bdbm_hlm_reqs_pool_get_item ( struct list_head* pos = NULL; bdbm_hlm_req_t* item = NULL; + bdbm_msg ("bdbm_hlm_reqs_pool_get_item - start"); bdbm_spin_lock (&pool->lock); again: @@ -198,11 +199,14 @@ bdbm_hlm_req_t* bdbm_hlm_reqs_pool_get_item ( list_add_tail (&item->list, &pool->used_list); bdbm_spin_unlock (&pool->lock); + + bdbm_msg ("bdbm_hlm_reqs_pool_get_item - end"); return item; fail: bdbm_spin_unlock (&pool->lock); + bdbm_msg ("bdbm_hlm_reqs_pool_get_item - end (fail)"); return NULL; } diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 833d6c7..24d60e6 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -137,7 +137,7 @@ typedef struct { /*#define BDBM_MAX_PAGES 32*/ /* a bluedbm blockio request */ -#define BDBM_BLKIO_MAX_VECS 512 +#define BDBM_BLKIO_MAX_VECS 128 typedef struct { uint64_t bi_rw; /* REQTYPE_WRITE or REQTYPE_READ */ From 472c857c1dc46634a09299e7357e51f699ee8e4c Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Thu, 28 Jul 2016 15:12:28 -0400 Subject: [PATCH 11/51] reverting to f30bf6beb69f392e61fd50fe05e860ab3241c033 --- common/bdbm_main.c | 2 +- common/utils/usync.h | 6 +- devices/common/dev_params.c | 29 +- devices/dragonfire/libdf.a | Bin 32370 -> 29106 bytes devices/ramdrive/Makefile | 1 - devices/ramdrive/dev_ramssd.c | 3 - devices/ramdrive/dm_ramdrive.c | 41 +- devices/ramdrive/hynix_dumbssd.async.c | 627 ---------------------- devices/ramdrive/hynix_dumbssd.c | 427 --------------- devices/ramdrive/hynix_dumbssd.h | 37 -- devices/ramdrive/hynix_dumbssd.sync.c | 374 ------------- devices/ramdrive/hynix_dumbssd.sync.old.c | 314 ----------- devices/ramdrive_timing/Makefile | 1 - examples/test/Makefile | 16 - examples/test/test | Bin 12288 -> 0 bytes examples/test/test.c | 149 ----- frontend/kernel_nvme/Makefile | 4 +- frontend/kernel_nvme/blkdev.c | 199 +------ frontend/kernel_nvme/blkio.c | 440 ++++++++++++++- frontend/kernel_nvme/kmain.c | 442 +-------------- frontend/kernel_nvme/log | 79 +++ frontend/kernel_nvme/mount_ext4.sh | 13 +- frontend/kernel_nvme/register.sh | 11 - frontend/kernel_nvme/unregister.sh | 5 - frontend/nvme/libftl | Bin 256032 -> 250264 bytes frontend/user/Makefile | 3 +- frontend/user/userio.c | 4 +- ftl/hlm_nobuf.c | 70 --- ftl/hlm_reqs_pool.c | 14 +- ftl/llm_mq.c | 6 +- ftl/llm_noq.c | 41 +- ftl/llm_noq_lock.c | 3 - include/bdbm_drv.h | 11 +- run/bonnie++/run_bonnie++.sh | 8 +- run/postmark/postmark-config-1.cfg | 2 +- run/postmark/postmark-config-2.cfg | 2 +- run/postmark/postmark-config-3.cfg | 2 +- 37 files changed, 579 insertions(+), 2807 deletions(-) delete mode 100644 devices/ramdrive/hynix_dumbssd.async.c delete mode 100644 devices/ramdrive/hynix_dumbssd.c delete mode 100644 devices/ramdrive/hynix_dumbssd.h delete mode 100644 devices/ramdrive/hynix_dumbssd.sync.c delete mode 100644 devices/ramdrive/hynix_dumbssd.sync.old.c delete mode 100644 examples/test/Makefile delete mode 100755 examples/test/test delete mode 100644 examples/test/test.c create mode 100644 frontend/kernel_nvme/log delete mode 100755 frontend/kernel_nvme/register.sh delete mode 100755 frontend/kernel_nvme/unregister.sh diff --git a/common/bdbm_main.c b/common/bdbm_main.c index 5ab4763..0c05844 100644 --- a/common/bdbm_main.c +++ b/common/bdbm_main.c @@ -61,7 +61,7 @@ THE SOFTWARE. //bdbm_ftl_inf_t _ftl_block_ftl, _ftl_dftl, _ftl_no_ftl; bdbm_ftl_inf_t _ftl_dftl, _ftl_no_ftl; bdbm_hlm_inf_t _hlm_dftl_inf, _hlm_buf_inf; -/*bdbm_llm_inf_t _llm_noq_inf;*/ +bdbm_llm_inf_t _llm_noq_inf; /* TEMP */ /* It creates bdi and setups bdi with default parameters. Users changes the diff --git a/common/utils/usync.h b/common/utils/usync.h index f055e0e..ec6e0e5 100644 --- a/common/utils/usync.h +++ b/common/utils/usync.h @@ -69,11 +69,9 @@ THE SOFTWARE. #define bdbm_spinlock_t spinlock_t #define bdbm_spin_lock_init(a) spin_lock_init(a) #define bdbm_spin_lock(a) spin_lock(a) -/*#define bdbm_spin_lock_irqsave(a,flag) spin_lock_irqsave(a,flag)*/ -#define bdbm_spin_lock_irqsave(a,flag) spin_lock(a) +#define bdbm_spin_lock_irqsave(a,flag) spin_lock_irqsave(a,flag) #define bdbm_spin_unlock(a) spin_unlock(a) -/*#define bdbm_spin_unlock_irqrestore(a,flag) spin_unlock_irqrestore(a,flag)*/ -#define bdbm_spin_unlock_irqrestore(a,flag) spin_unlock(a) +#define bdbm_spin_unlock_irqrestore(a,flag) spin_unlock_irqrestore(a,flag) #define bdbm_spin_lock_destory(a) diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index bfe002b..87cd5bf 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -42,35 +42,22 @@ THE SOFTWARE. #include "umemory.h" #include "debug.h" -#if 0 enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, - NAND_PAGE_OOB_SIZE = 0, /* P2L mapping is not supported yet */ - NR_PAGES_PER_BLOCK = 64, /* 7-bit (BITS_FOR_WU) */ - NR_BLOCKS_PER_CHIP = 128, /* 8-bit (BITS_FOR_VBLK) */ - NR_CHIPS_PER_CHANNEL = 1, /* set to 1 by default */ - NR_CHANNELS = 64, /* 6-bit (BITS_FOR_DIE) */ + //NAND_PAGE_OOB_SIZE = 64, /* for bdbm hardware */ + NAND_PAGE_OOB_SIZE = 8*BDBM_MAX_PAGES, + NR_PAGES_PER_BLOCK = 128, + NR_BLOCKS_PER_CHIP = 192/BDBM_MAX_PAGES, + //NR_BLOCKS_PER_CHIP = 8/BDBM_MAX_PAGES, + NR_CHIPS_PER_CHANNEL = 4, + //NR_CHIPS_PER_CHANNEL = 8, + NR_CHANNELS = 8, NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ NAND_PAGE_PROG_TIME_US = 500, /* 1.3ms */ NAND_PAGE_READ_TIME_US = 100, /* 100us */ NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ }; -#endif - -enum BDBM_DEFAULT_NAND_PARAMS { - NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, - NAND_PAGE_OOB_SIZE = 8*BDBM_MAX_PAGES, - NR_PAGES_PER_BLOCK = 64, - NR_BLOCKS_PER_CHIP = 128, - NR_CHIPS_PER_CHANNEL = 1, - NR_CHANNELS = 4, - NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ - NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ - NAND_PAGE_PROG_TIME_US = 100000, /* 1.3ms */ - NAND_PAGE_READ_TIME_US = 1000, /* 100us */ - NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ -}; int _param_nr_channels = NR_CHANNELS; int _param_nr_chips_per_channel = NR_CHIPS_PER_CHANNEL; diff --git a/devices/dragonfire/libdf.a b/devices/dragonfire/libdf.a index 304f460c1628f03a1813d942eeea23e14bd22ccc..b2bcd371ce767180316ed45baef570f2cd6e3aaf 100644 GIT binary patch literal 29106 zcmeHvdz@6omH)jn!_d$J3?lLnwULK|!p!gx5fz6=OONuHFrfHInx2`SnGQYOO?S`m z(8wsL@B_1u#Ar77Of+gt)aXVwYQm~NANfS(XR_)qCRsK{WsOPn2P)asu;*KK&h6W0 zdQ41q|M`8kVEUf=)~QpcPMxY-_g2*%e|9X}+Bt7_;InHs)T0Z&jf}xJ{>HpfgqHXQbOg7yTcPyRG#8XVRCet~AyJBnO z(QJGjC&g23zL+HDI5nA$wK18?r?YVn3gBp0ERl-l5}Uk&4Vq536oH-TTt3>;or~tPu@wC#y5iAp zPqEg{M5g~#BaqD2p|hEUY&_Pc6O5M8cs7=c>!h}LPokC3jhVR95zj~4;_b2SB(4TG zwjCd7ecMG`+r_+{*i%J$n|#=A1r@E)>=b-W*lS1_8w!RuSB;0)1k-={X;RO`nuZb`LJngGVbLrzwtkFj^&2 z9idog(Te#?L%CEelj}_9YinyQm(&+SSwDQI4tJai!yPdFr%xw3p>0(l({BrWnec&2X2+*@`;TeIr$=w ztnu=f*U$3MnF~DfjA=xQs#XD0T*be>M+pH)8iYbBsb+)YM4aRVhZ9|OHPKFG0Qiu= zfWTC`(yfU!90ZcG{tNvWQ3D2#B4ilA>dJB~V!EPVy&CQDxl zdbOoDgI;6lUeKMEz6x~4(pQ7tVCgNOdo8^c^fs>RHE&T}ZLy_Zp%PIzwuLn@5sLrm{g}Os0)7Z9@l*F>ON! zjWKOQ2aPe=ae~*N5+fTbg4h4OC-95UqcT?b-+^X@>85L+!&(k=!)Pi zzozRLK*P*$wfPO1-;>O59q0Jwqr^$ZxoaqmNMn2i3V!=SO0jjn4sIb)Xp{ocVIob{WLp=?Umf`zPAbqSc=p)7;7T*gKa%21>XjbS4$jXiJ zIBFKM{6B<~L@fOy&>2hb1AUXFpM=KyY!f{N9jjex1@sD|Wbl9A4*lwP24A?s)9*!} zgY2IUXScHc4_K~A58#lB;-vc>%lb!D6X9_(!MKcKE5G8^h@ z&GzoeluWL8=y6Z#Vd%h8-+zf(y!I_j~j?2Z9nRwbX(VtecJxXr|nUr ztsR>j_bTEaZ6mIGBSlzW;6)`ua1aa@h4Dy(>r4(JgJteyqQ}n(4seGKl99C1KdcUP zjTW}Bfa_CZkb5#^VKoLDokEr^XxM6Oq{=8*Zw-nZMXI3G5NYBBhq(7Zl}NDKeaKT~ zxL=iH+~+BQNB9v&uWDPyv8F&)Wu(!IRXNV+#j1?5s@OcE-M2{E92*&9A`Mo_X9%}S zf+Bn2UQ!u=R>muk&!+Ey=9Ph;5)c9z9P7>^di<{7T=#eMh;D_S<*&rqetVwdx92>! zD(KnsTz57_xDpNSr4->x%y&0Ygl}yN+^I(=o}7>XFqRUW6ISR6)Ln)wM6tl=xujBJ&Gm?XnKg=EUu zixdn+Fji5@-y;S2VG^6d(jJyPuuoCS3rIn?g0V~r6>(5N*r|y9V@e582~M!t{Ubc( z)!;?$<{{!KtKBz|Xf1oOi}5sIBbT@s1V`J*r6v-xk;_bko#V46!p`wI6Jh6wnn;7q zv&KZ&IbtTl&e38b>>RBovc~3Vb72g2j<|`ibF`ZXJ4c6!^x8a~CbG>&5+<_CMm}#M zH`&Nq6S>Vsk|uJujdYpF12&Q}k-avOHj#Zck})=X)<)Ku$bM=Em@EW?2D9!2YKqFh z@ifGcE0X0a12-GG#?YfE^<;3mHTXpc+l%Awd5zj<0%C3r286QRtDT7^It}*-3FDb? z_l%*Td{RqW!f~hJ-ch!@)8?LLbFbmtGySrXJAZ0Qp*U$D2`s*^z5TWwY7cH*qDJmW!6we-oL>n%Out3=PTH_WPu ze<1J_0-UPJ>!>LFRe{<3P@AHB(}Go}Y(p9tI71E8yx9XS*OZ3@s519xEBn-oDA!9x zDOIREi=KKANidl$){2_;r&4I$Fv?f8u8_Gt1OVe1OPf9$fRScK8!K(bXMnEve&9OJ z6mqFXv`yLWwkb(6{rR@tI;rLlm_Zh^%E~|&sb+mxkC063ovVv{V0Ez% zMEyQ6-phU1%N^z1liE{`8{I)1aG+Dc>BdWEw#CN%8RL@CafiE;hK>l94?TY9aQB#j zn9r6?bb`To1kpLDbopC{Y;A97v!0F~P$aNb>xD+2e zp5k@H7#!)IG6qQ10K+k4gc}S(7_gy3Jjrv2ci0HGd}txHdX$fKc!8CkO%3A!5;Fi| zMsV7I#t{&6EJXuIv(b@MB3Mm{$8j3zK8KoaR6#1DqbqzRj;SH##?eqT)|ZFGA3uVs z4tey7f;99*pD@H!@I+jo#!0BTwMK|7NE*>Ch%I1LKe?8w3}L5?K_fJb{^|l_tqB7> z%aqaZGqKh^cZ@JLjwoWCM69STRSB$<{j5cdr}$GEN1Sa6s_}ysnlh_M;HiENU)kh$ zQ{jYgKzg3>2mgCEKR%F{%bah!`;-?p(Gmk!nqLx5eu=%$XgXJ!@Jr zk?P(sts~W4*OJKR96yUw*O~5$*U>sgS6ez=mrdkib$IU>ZOiu5**EsNy0&brBb{nb zWaD+UwfNtf?&?aX>Sku!{<{3E-(Q!R3-8V+Xx+u?)1FT{ymZhCJ7Mi1SKA4L2#8yN@z96HZf7Mse%;Ez|Ev7)Vz9k31KH@Wtc)5yz99~soJ=;}<7B(mQ?ayK z(@O7I*Jh%*d_I~t>PL~3Pv^}`;^IXY;#i*~MU#ovjgDEuFXlsH*lt+I#H%* zG?q+sq?~TD@9bFwv?o%DTqiA8Wm=MJqh{62tU_f?!HHB4@wdhD@hIN3SnZsSRw+4Z zSF;Gu&~lqGCrV7D+DUXbxqLRg(N=MNlpf|UXo@zkTp5ilUlK-ZC8Jq; zS?`cuD4CRrW=H}1zTbQA4o%i)6Qmt%*OG{)+uL*WhDzEMilj-COg&T!QH{Ec(n;%*Tp`b}X2n#j;K2XInD7=)-@Yq^FvL0| zy+p|^-HD`KQf+OCn#Lo?%5}Fuj9uo0Z&~jk$E0?%&0*_aLSTC~9=CPjdgL4sW|2{g zMj=kIw`SwimgJHhv9`9XN~49IbgOYo?zGlKv_6tqAIrCPQrqbg>>90A*)9qDRgRJ? zk)xPZXoIuL1QxZN&2Lty(K`#?2i;B0*2c56x*W~LTj4{dnT^e;fOQ3*;}uovK;6Wd zPPNhMFH|lV+v@9?o0h#}`Ix_}L>Dbz7Ire78)2Vl8#w{38D;aKB7JFyp`x%JZ8|uX zbMuLG$|_Q9?^YUx@^Kn`v0Tnwa?$*i^KCh{;%0y_>(Z&Tlg}o)xJ>vuRHfmbEd1C8n|_>YTax+8OI{E=QgHA+LJLFsf<&b)pd9}jXK4Zuujts z1~s;MRc}vr=QoRwBG#bCJScuKNs&H&5OJdU7yQ{ z8b`GLAe%6B17V|sxto!0(8(AUwD^^AU2K$~f@r4%Z7ZPd2h^h+>JC{RWH7{#W6hl5 z?}TRbjYg?>8XdYb#kWPe=aBC?{@n~be~9KXi4%mrNG%vebT|y);IN#n+K|$ zvAz&BMx-YRWWwZ$Zwtn5-u@+L@xq03Lp7^fsC#tVv25CmZWEh+<@8y#^|Pi}6mw{V zW9`LpH?45o4b|@PRRaUNXmUP|aQq>J@iTvD^|fUShg3$kly4v&q@4|%!g%~h`el?z zQKVl6oPv3+CF!dR=~vif`zlM)n+xfCINiLulJs;T{V`7e7Os+Bc86gYN6;@g-MsdY z^qxZgk2t+Q{l}3V5K5&xwYiO5`B)2G^I3cC6pC(>vD!T5`n6_Au5HQD!&NqIBPO*i z-qPJ+T9SAS9cyX9Q%9{YnKs6yXo^>a(c@=avQT+WEuP@w)PHJIbSJ8%d)PE{XW~rp zP8!r=^hoo!h7bvWIn2YCPgn!f`stcY=W!lS6g~a*3H7xWI>H&~U4$t|p55g&C*EX% zg`Osh!c6Zuun0E1egtm?AoH)yKb`WTd|lie28OE&i~f|wgn9Izn$ON0qyfXC(kbH98&G~&ShWuB~uW`vI_+3N*Q)Y4wa{f6g zgVVdzb-rabZHUd*v_ zXMl(MiSj<9v`sDdtm5ZJxhSP?C^tQ!6izRoON4T}GptWax$%fTFqLaocZw2DrWpK3 zhqDPdhU_5qAI}UCx|ZT!%KYujCrfLq8Q;RV_-7mAUuWFRIf%|N-os5GODI<{{vz|6 zISA3{r=|3{iTNL7IimkJ7=KCO-W%9{AE`cJJGgJ>ex{pVQrl<3zis;}{-sUy^Vs6X3_#ApEd5g79M=hp@q3%=qQ!-^IA_ zpTY4P`r*G%@xvbw9<-M}@}KhIBZ(G04>B(0ihjTI@%!~Wf!kO3;SUI>Fb+G=VwWd> zt`GN@d!3T=O$ec|)5q^G_X)-StYvqe>4*Py#s4nzAMA%;+7$JYF&|l~I3IA_PyfV2 z6?8)od=U>ls3U^lT`bt_F(e$t!$uOOFadu2NvLN+w* z+Z6r`x9@!l|9AGEy$b&s%YRDYcXGS$SNK-;w_hs!-&xMP3O|MAe5COCY@h(^CGB!H z_upd`KAP(lQuq}tf2zVCX8Xu*)1;m@%hrYd|B<8u@~faNb#_!{=VWeVTJ{Ff>G5w>$e;U}=4 z^eFrbEPso_rT_0z_~*IYn-%^&w%ff5KbQF*QTRKo&;M2U9o#N&DExNje^22*;`aSm z;jgotL7WaXa9YS@z)hT)>hX!iR&$L z{+a7FL*a7You}}FtpE86-_P>bD||Y~|Chq0{ccqFODzA}3XicrJgM*(*gh{Rd?UBZ zYYKmp^?Xa=KV&(F6#g{hM-?vm1zBIQ=MuL2D24x$^G{GX9S1bw429py{pSLOU%>nq zDf~(9kF5%SkL{3F_?v8ppDBD9^B+*S*#BdNU&Q*1Wrxajk9g^NCKDg3wG zUk)q$O18ht^%J{^{!FYt#E0t6BI7(b*jQYVtbyU@C3KhB88vI_pi?= z{2unJ&nf&8mcLfvzvB9CQ23K9{~Cph-M*x7vD>W*-^2a=K862=_4!AIuVsCnR(J=u z*H0Bbi0yMg;XBw4qxr=Ik}?0emg_Z5;e%NIT!ph3XR*T9ak(oMj-z4-F@+DYu#-~w z)7&pES9mx3-!_GJGJb=?moR>Z!sWU5euW=l{U1~K!;C+t@bO%)mleL5`CnJ~EnMGs z6^^su2p=naChI?#4JGZ>%>9lwNt+6G z*i+<;RrsT9hlz}fKJ6^$e8rDba|lg}e~X2k9>sqy^YXhGE%5f_?H=+o%lz9FF8il%QMkM>cv#_E*v>yy_$>B^e^dA|JboTk_)^BJtF2;UXB_lL z7_achnEwogzsdH$QsGarpKoPc{8QF%?os^WKYJDaFx&G9B}dk8-dFsWv;IdFzsy@$ zE#p_*w5Gny-sk zf%IxHdN+9ADx%K}(Z_ur@1!NG9meG%H$}EzlPQjFD2j%A3!LF?K6;mrzRA+t!?*ds z2YmEiAH6TK;|7#LAM5Fj47>jc`ex9x1VM|)j%!THu>1G>Qi)cn$nz?F*=HMZ?PnSI zT9J95%ilNJ#yEYH$$anV0LPCI-`%ha;dfJkrd;}Z(e^OK48kg)5QaQOB`(4xzKexZ z{2Ev{vi%AA>Jvn(uRhu2;tvs-x9kU@QYp%Q(}=z!)%S}^_}EbceRHXw6#76?KPjX8 zOX=-}VfxEPzSEDun$jus4W>Rh3Uz$WJa%IU3ejIL{lQ^FbZMi%!_Se;&dH(-1R+uo*UIZ_YkG z+E8iPY#sevqMzMZ8^ShJ$m$N&OrIN~y>_%kb82V?lZl>qsD>8Kvs0#qX8JMOH%q%q z37s`Jv>@3XU$kK9)X?d3L&-!-TX$F2#;Kv%CSnAVlqvGrD(CZbr-5hCdaD^r&5w!m z&sQ+Ea*(eyxn`PC_Gv#T#UG9`#g)xmKte6aUw|?L<$#Lv@y}6;y~CMb*Zh{5-*WR? zVSWdg-%9g4&>6U^eBHgIy-}?^dnHu1bPjaD(s|I;mhJ{U+R{CsLzZ3-y2jEQu!Er9 z(i?%#vGgX;4VJzfbi~qEfNrw%m7rH!dNb%XmhJ`JY3Zv#XDod+=naq%cqu)MfX1x=w{{=^5zn=)giYmI*5wzhvI;$@lAQIAum7T zxCh^O<53E`AAR)kKwaRuz{MYKJ#=_WV0@tN(4oVDSHAq{t+(D9*b>-n{yl1bdu}yH zL6^;6wkX;(e{ne4v|{<<=*q^W;pnPn$G{6CjZM)7tD2)LSIl2VznsP=EzG$D?;NK+ z`bBqu!g;2G=oR7li@fa1RzxAVIocEkHGkQ%@Dj(~h@&enZVE>iELjz%+eFdlOpCrV z>OYs^&lp~|$RX(qmMmX*frxKxDw5+JATY-Xilkb@+rv%jBc)WJ+<47LTFpJ$+Q^u$ zx$%;4@tGK$;xQF9)oVs#kpvWP1sH9k;T7|n!=8x>r#4|w&(m6EkwP!hu-74pKY}+PG|Sf2UyKyv2vRVD2JY z*p@CSyK&jd6+RzWzI;K{_(6$7kfx5_vDi}5ioJ&`==^Ob^$G?nw5_d=`Bgq{kKOn` zw@YVljLt>pImxNv^0s>!-!1B2MF$Oas}??9+|PH1{gyF)v}o1Rr5Bet!susQwtQu@ zxhcG`@w~?HB2ng(KV9q}!AQxXo@ovmQeWu%1!d!T`p{d!$VCoJRV}VP#D21Zn#nX>F+)L^On<<=Nhm-H^3HOqje5VjETluG&M$!G*YW9;7v<9gxj3-E z->V9X{=z(u2*qNOe$NG^lwz8|>14A2687hC^l z@~@_JZBt}d9=*ANU>lsRHm-^2v2K;X?aa$H+@$KUjkIF2=O~ zhB!ak#~;N0g56F;Df`V~`$@fEKZun4VpqI=RW42lJwbE%513ftN7of`tvk3o`3%^8 zPQ)1?Ebr*@;Zvo`pTnEX^Qu4k2E5ine#56GFK5YY(0aZ3=q4j={KXkWq40!RTkWD33*AO+y~V!GhX04V^+7%g}d zAO+wU3I*>3NC7y8Si$oEDF7cue}eZCjQ|{dMewh)3*$EFzeV20IQY?rg#S*(zl72d zL--|8bTh{a5e^=Z`5lSRq1?{ww?|EbOHDD!80E zk$x@sM_le^#eXixcPd==Fnvwo-)H;Ws_-1^d8fiBG5&3Z%Ndsk6^{Ek!Xx(L*;CF6 zJg)FC*Xv1z@8kGO3V)d6cS6fpJ8cG?M)H7o!g+%2@{Cm-%W|$-kH5SMnA7ygkpzzfSQ_ku>^GN|SC^EW75 H{PsTqx$sPi literal 32370 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 diff --git a/devices/ramdrive/Makefile b/devices/ramdrive/Makefile index 3cb5a41..e33370b 100644 --- a/devices/ramdrive/Makefile +++ b/devices/ramdrive/Makefile @@ -27,7 +27,6 @@ risa_dev_ramdrive-y := \ $(DEV_COMMON)/dev_stub.o \ dev_ramssd.o \ dm_ramdrive.o \ - hynix_dumbssd.o \ obj-m := risa_dev_ramdrive.o diff --git a/devices/ramdrive/dev_ramssd.c b/devices/ramdrive/dev_ramssd.c index acde3b5..8960e3a 100644 --- a/devices/ramdrive/dev_ramssd.c +++ b/devices/ramdrive/dev_ramssd.c @@ -462,10 +462,7 @@ void __ramssd_cmd_done (dev_ramssd_info_t* ri) bdbm_spin_unlock (&ri->ramssd_lock); /* call the interrupt handler */ -#if 1 - bdbm_msg ("ramdrive -- callback"); ri->intr_handler (ptr_req); -#endif } else { bdbm_spin_unlock (&ri->ramssd_lock); } diff --git a/devices/ramdrive/dm_ramdrive.c b/devices/ramdrive/dm_ramdrive.c index 1021b67..b1d5363 100644 --- a/devices/ramdrive/dm_ramdrive.c +++ b/devices/ramdrive/dm_ramdrive.c @@ -41,8 +41,6 @@ THE SOFTWARE. #include "utime.h" #include "umemory.h" -#include "hynix_dumbssd.h" - /* interface for dm */ bdbm_dm_inf_t _bdbm_dm_inf = { @@ -57,14 +55,9 @@ bdbm_dm_inf_t _bdbm_dm_inf = { .store = dm_ramdrive_store, }; -#define ENABLE_SEQ_DBG - /* private data structure for dm */ typedef struct { dev_ramssd_info_t *ramssd; -#if defined(ENABLE_SEQ_DBG) - bdbm_sema_t dbg_seq; -#endif } dm_ramssd_private_t; /* global data structure */ @@ -107,10 +100,6 @@ uint32_t dm_ramdrive_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* params) goto fail; } -#if defined(ENABLE_SEQ_DBG) - bdbm_sema_init (&p->dbg_seq); -#endif - /* OK! keep private info */ bdi->ptr_dm_inf->ptr_private = (void*)p; @@ -147,37 +136,13 @@ void dm_ramdrive_close (bdbm_drv_info_t* bdi) uint32_t dm_ramdrive_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req) { uint32_t ret; - dm_ramssd_private_t* p = BDBM_DM_PRIV (bdi); -#if 1 - /*if ((ret = dev_ramssd_send_cmd (p->ramssd, ptr_llm_req)) != 0) {*/ - /*bdbm_error ("dev_ramssd_send_cmd failed");*/ - /*}*/ - -#if defined(ENABLE_SEQ_DBG) - bdbm_sema_lock (&p->dbg_seq); -#endif - - if ((ret = hynix_dumbssd_send_cmd (bdi, ptr_llm_req, __dm_ramdrive_ih)) != 0) { - bdbm_error ("hynix_dumbssd_send_cmd"); - } - -#if defined(ENABLE_SEQ_DBG) - bdbm_sema_unlock (&p->dbg_seq); -#endif - -#else - bdbm_msg ("hynix_dumbssd_send_cmd"); if ((ret = dev_ramssd_send_cmd (p->ramssd, ptr_llm_req)) != 0) { bdbm_error ("dev_ramssd_send_cmd failed"); + /* there is nothing to do */ } - /*if ((ret = hynix_dumbssd_send_cmd (bdi, ptr_llm_req, __dm_ramdrive_ih)) != 0) {*/ - /*bdbm_error ("hynix_dumbssd_send_cmd");*/ - /*}*/ -#endif - return ret; } @@ -185,7 +150,6 @@ uint32_t dm_ramdrive_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) { #include "../../ftl/hlm_reqs_pool.h" - /* uint32_t i, ret = 1; bdbm_llm_req_t* lr = NULL; dm_ramssd_private_t* p = BDBM_DM_PRIV (bdi); @@ -198,9 +162,6 @@ uint32_t dm_ramdrive_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) } return ret; - */ - - return 0; } void dm_ramdrive_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req) diff --git a/devices/ramdrive/hynix_dumbssd.async.c b/devices/ramdrive/hynix_dumbssd.async.c deleted file mode 100644 index d23c159..0000000 --- a/devices/ramdrive/hynix_dumbssd.async.c +++ /dev/null @@ -1,627 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#if defined (KERNEL_MODE) -#include -#include - -#include /* workqueue */ - -#else -#error Invalid Platform (KERNEL_MODE or USER_MODE) -#endif - -#include -#include -#include "hynix_dumbssd.h" - - -#define BITS_PER_SLICE 6 -#define BITS_PER_WU 7 -#define BITS_PER_DIE 6 - - -#define USE_ASYNC - -struct hd_req { - bdbm_drv_info_t* bdi; - bdbm_llm_req_t* r; - uint64_t die; - uint64_t block; - uint64_t wu; - uint8_t* kp_ptr; - void* ubuffer; - void (*intr_handler)(void*); -}; - -#ifdef USE_ASYNC -static void nvme_nvm_end_io (struct request *rq, int error) -{ - /* - struct nvm_rq *rqd = rq->end_io_data; - - printk (KERN_INFO "nvme_nvm_end_io\n"); - - nvm_end_io(rqd, error); - - kfree(rq->cmd); - blk_mq_free_request(rq); - */ - - struct hd_req* hdr = rq->end_io_data; - - bdbm_msg ("call-back"); - - switch (hdr->r->req_type) { - case REQTYPE_READ: - case REQTYPE_GC_READ: - case REQTYPE_RMW_READ: - case REQTYPE_META_READ: - memcpy (hdr->kp_ptr, (uint8_t*)hdr->ubuffer, 4096); - break; - } - - /* call handler */ - hdr->intr_handler (hdr->r); - /* end */ - - kfree (rq->cmd); - kfree (hdr->ubuffer); - kfree (hdr); - blk_mq_free_request(rq); -} -#endif - -struct request *nvme_alloc_request(struct request_queue *q, - struct nvme_command *cmd, unsigned int flags) -{ - bool write = cmd->common.opcode & 1; - struct request *req; - - req = blk_mq_alloc_request(q, write, flags); - if (IS_ERR(req)) - return req; - - req->cmd_type = REQ_TYPE_DRV_PRIV; - req->__data_len = 0; - req->__sector = (sector_t) -1; - req->bio = req->biotail = NULL; - - req->cmd = (unsigned char *)cmd; - req->cmd_len = sizeof(struct nvme_command); - req->special = (void *)0; - - return req; -} - -#if 0 -int simple_read ( - bdbm_drv_info_t* bdi, - int die, - int block, - int wu, - kp_stt_t* kp_stt, - uint8_t** kp_ptr) -{ - int ret; - struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - - int req_len = 63; - int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - die << (BITS_PER_WU + BITS_PER_SLICE) | - wu << (BITS_PER_SLICE); - - rq = blk_mq_alloc_request(bdi->q, 0, 0); - if (IS_ERR(rq)) - return -ENOMEM; - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) { - bdbm_error ("blk_rq_map_kern failed"); - kfree (cmd); - kfree (ubuffer); - blk_mq_free_request(rq); - return -1; - } - - cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ - cmd->rw.flags = 0; - cmd->rw.nsid = 1; - cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd->rw.length = req_len; /* it must be the unit of 255 */ - cmd->rw.control = 0; - cmd->rw.dsmgmt = 0; - cmd->rw.reftag = 0; - cmd->rw.apptag = 0; - cmd->rw.appmask = 0; - -#ifdef USE_ASYNC - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = NULL; - - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = NULL; - - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) { - bdbm_msg ("ret = %u", ret); - } - - /* copy data to bio */ - memcpy (kp_ptr[0], (uint8_t*)ubuffer, 4096); - /* end */ - - kfree (cmd); - kfree (ubuffer); - blk_mq_free_request(rq); -#endif - - return 0; -} - -int simple_write ( - bdbm_drv_info_t* bdi, - int die, - int block, - int wu, - kp_stt_t* kp_stt, - uint8_t** kp_ptr) -{ - int ret; - struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - /*char* ubuffer_char = (char*)ubuffer;*/ - - int req_len = 63; - int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - die << (BITS_PER_WU + BITS_PER_SLICE) | - wu << (BITS_PER_SLICE); - - /* copy data to bio */ - memcpy ((uint8_t*)ubuffer, kp_ptr[0], 4096); - /* end */ - - rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) - return -ENOMEM; - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) { - bdbm_error ("blk_rq_map_kern failed"); - kfree (cmd); - kfree (ubuffer); - blk_mq_free_request(rq); - return -1; - } - - cmd->rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ - cmd->rw.flags = 0; - cmd->rw.nsid = 1; - cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd->rw.length = req_len; /* it must be the unit of 255 */ - cmd->rw.control = 0; - cmd->rw.dsmgmt = 0; - cmd->rw.reftag = 0; - cmd->rw.apptag = 0; - cmd->rw.appmask = 0; - -#ifdef USE_ASYNC - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = NULL; - - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = NULL; - - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) { - bdbm_msg ("ret = %u", ret); - } - - kfree (cmd); - kfree (ubuffer); - blk_mq_free_request(rq); -#endif - - return 0; -} - -int simple_erase (bdbm_drv_info_t* bdi, int die, int block) -{ - int ret; - struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - __le64* ubuffer_64 = (__le64*)ubuffer; - - __u32 req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - die << (BITS_PER_WU + BITS_PER_SLICE); - - ubuffer_64[1] = req_ofs; - - rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) - return -ENOMEM; - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) { - kfree (cmd); - kfree (ubuffer); - blk_mq_free_request(rq); - return -ENOMEM; - } - - cmd->common.opcode = 9; - cmd->common.flags = 0; - cmd->common.nsid = 1; - cmd->common.cdw2[0] = 0; - cmd->common.cdw2[1] = 0; - cmd->common.cdw10[0] = 0; - cmd->common.cdw10[1] = 4; - cmd->common.cdw10[2] = 0; - cmd->common.cdw10[3] = 0; - cmd->common.cdw10[4] = 0; - cmd->common.cdw10[5] = 0; - -#ifdef USE_ASYNC - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = NULL; - - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = NULL; - - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) - bdbm_msg ("ret = %u", ret); -#endif - - return 0; -} -#endif - -int simple_read ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - int ret; - struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - - int req_len = 63; - int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | - hdr->wu << (BITS_PER_SLICE); - - hdr->ubuffer = ubuffer; - - rq = blk_mq_alloc_request(bdi->q, 0, 0); - if (IS_ERR(rq)) - return -ENOMEM; - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) { - bdbm_error ("blk_rq_map_kern failed"); - kfree (cmd); - kfree (ubuffer); - /*kfree (hdr);*/ - blk_mq_free_request(rq); - return -1; - } - - cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ - cmd->rw.flags = 0; - cmd->rw.nsid = 1; - cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd->rw.length = req_len; /* it must be the unit of 255 */ - cmd->rw.control = 0; - cmd->rw.dsmgmt = 0; - cmd->rw.reftag = 0; - cmd->rw.apptag = 0; - cmd->rw.appmask = 0; - -#ifdef USE_ASYNC - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = NULL; - - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) { - bdbm_msg ("ret = %u", ret); - } - - /* copy data to bio */ - memcpy (hdr->kp_ptr, (uint8_t*)ubuffer, 4096); - /* end */ - - kfree (cmd); - kfree (ubuffer); - /*kfree (hdr);*/ - blk_mq_free_request(rq); -#endif - - return 0; -} - -int simple_write ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - int ret; - struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - /*char* ubuffer_char = (char*)ubuffer;*/ - - int req_len = 63; - int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | - hdr->wu << (BITS_PER_SLICE); - - hdr->ubuffer = ubuffer; - - /* copy data to bio */ - memcpy ((uint8_t*)ubuffer, hdr->kp_ptr, 4096); - /* end */ - - rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) - return -ENOMEM; - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) { - bdbm_error ("blk_rq_map_kern failed"); - kfree (cmd); - kfree (ubuffer); - /*kfree (hdr);*/ - blk_mq_free_request(rq); - return -1; - } - - cmd->rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ - cmd->rw.flags = 0; - cmd->rw.nsid = 1; - cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd->rw.length = req_len; /* it must be the unit of 255 */ - cmd->rw.control = 0; - cmd->rw.dsmgmt = 0; - cmd->rw.reftag = 0; - cmd->rw.apptag = 0; - cmd->rw.appmask = 0; - -#ifdef USE_ASYNC - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = NULL; - - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) { - bdbm_msg ("ret = %u", ret); - } - - /*kfree (hdr);*/ - kfree (cmd); - kfree (ubuffer); - blk_mq_free_request(rq); -#endif - - return 0; -} - -int simple_erase ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - int ret; - struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - __le64* ubuffer_64 = (__le64*)ubuffer; - - __u32 req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE); - - hdr->ubuffer = ubuffer; - - ubuffer_64[1] = req_ofs; - - rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) - return -ENOMEM; - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) { - /*kfree (hdr);*/ - kfree (cmd); - kfree (ubuffer); - blk_mq_free_request(rq); - return -ENOMEM; - } - - cmd->common.opcode = 9; - cmd->common.flags = 0; - cmd->common.nsid = 1; - cmd->common.cdw2[0] = 0; - cmd->common.cdw2[1] = 0; - cmd->common.cdw10[0] = 0; - cmd->common.cdw10[1] = 4; - cmd->common.cdw10[2] = 0; - cmd->common.cdw10[3] = 0; - cmd->common.cdw10[4] = 0; - cmd->common.cdw10[5] = 0; - -#ifdef USE_ASYNC - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = NULL; - - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) - bdbm_msg ("ret = %u", ret); - - /*kfree (hdr);*/ - kfree (cmd); - kfree (ubuffer); - blk_mq_free_request(rq); -#endif - - return 0; -} - -uint32_t hynix_dumbssd_send_cmd ( - bdbm_drv_info_t* bdi, - bdbm_llm_req_t* r, - void (*intr_handler)(void*)) -{ - uint32_t ret = -1; - struct hd_req* hdr = kzalloc (sizeof (struct hd_req), GFP_KERNEL); - - hdr->bdi = bdi; - hdr->r = r; - hdr->die = r->phyaddr.channel_no; - hdr->block = r->phyaddr.block_no; - hdr->wu = r->phyaddr.page_no; - hdr->intr_handler = intr_handler; - hdr->kp_ptr = NULL; - - switch (r->req_type) { - case REQTYPE_READ_DUMMY: - /* do nothing */ - break; - case REQTYPE_WRITE: - case REQTYPE_GC_WRITE: - case REQTYPE_RMW_WRITE: - case REQTYPE_META_WRITE: - hdr->kp_ptr = r->fmain.kp_ptr[0]; -#if 0 - bdbm_msg ("simple_write: %llu => %llu %llu %llu", - r->logaddr.lpa[0], - r->phyaddr.channel_no, - r->phyaddr.block_no, - r->phyaddr.page_no); - ret = simple_write (bdi, - r->phyaddr.channel_no, - r->phyaddr.block_no, - r->phyaddr.page_no, - r->fmain.kp_stt, - r->fmain.kp_ptr); -#endif - ret = simple_write (bdi, hdr); - break; - - case REQTYPE_READ: - case REQTYPE_GC_READ: - case REQTYPE_RMW_READ: - case REQTYPE_META_READ: - hdr->kp_ptr = r->fmain.kp_ptr[0]; - ret = simple_read (bdi, hdr); - break; - - case REQTYPE_GC_ERASE: - ret = simple_erase (bdi, hdr); - break; - - default: - bdbm_error ("invalid REQTYPE (%u)", r->req_type); - bdbm_bug_on (1); - break; - } - - return 0; -} - diff --git a/devices/ramdrive/hynix_dumbssd.c b/devices/ramdrive/hynix_dumbssd.c deleted file mode 100644 index 3ea7e52..0000000 --- a/devices/ramdrive/hynix_dumbssd.c +++ /dev/null @@ -1,427 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#if defined (KERNEL_MODE) -#include -#include - -#include /* workqueue */ - -#else -#error Invalid Platform (KERNEL_MODE or USER_MODE) -#endif - -#include -#include -#include "hynix_dumbssd.h" - - -#define BITS_PER_SLICE 6 -#define BITS_PER_WU 7 -#define BITS_PER_DIE 6 - -#define USE_ASYNC - -struct hd_req { - bdbm_drv_info_t* bdi; - bdbm_llm_req_t* r; - int rw; - uint64_t die; - uint64_t block; - uint64_t wu; - uint8_t* kp_ptr; - uint8_t* buffer; - void (*intr_handler)(void*); -}; - -void print_bio (struct bio* bio) -{ - bdbm_msg ("bio->bi_iter.bi_sector = %d", (int)bio->bi_iter.bi_sector); - bdbm_msg ("bio->bi_iter.bi_size = %d", (int)bio->bi_iter.bi_size); - bdbm_msg ("bio->bi_rw = %d", (int)bio->bi_rw); - bdbm_msg ("bio->bi_private = %p", bio->bi_private); - bdbm_msg ("bio->bi_end_io = %p", bio->bi_end_io); -} - -bdbm_sema_t dbg_seq; - - -static void nvme_nvm_end_io (struct request *rq, int error) -{ - struct hd_req* hdr = rq->end_io_data; - bdbm_llm_req_t* r = hdr->r; - void (*fn) (void*); - - static int init = 0, parallel = 0;; - if (init == 0) { - bdbm_sema_init (&dbg_seq); - init = 1; - } - - bdbm_sema_lock (&dbg_seq); - - if (parallel > 1) - bdbm_msg ("what???"); - parallel++; - - fn = hdr->intr_handler; - - /*bio_put (rq->bio);*/ - - /*if (rq->bio && rq->bio->bi_end_io)*/ - /*rq->bio->bi_end_io (rq->bio);*/ - /*if (hdr->rw == READ)*/ - /*memcpy (hdr->kp_ptr, hdr->buffer, 4096);*/ - /*if (rq->cmd)*/ - /*kfree (rq->cmd);*/ - /*if (hdr->buffer)*/ - /*kfree (hdr->buffer);*/ - /*if (hdr)*/ - /*kfree (hdr);*/ - if (rq) - blk_mq_free_request (rq); - - fn (r); - - parallel--; - - bdbm_msg ("done from %llu (%llu %llu %llu %llu)", - r->phyaddr.channel_no, - r->phyaddr.channel_no, - r->phyaddr.chip_no, - r->phyaddr.block_no, - r->phyaddr.page_no); - - bdbm_sema_unlock (&dbg_seq); - - /*bdbm_msg ("nvme_nvm_end_io -- callback - done");*/ -} - -static void blk_end_sync_rq (struct request* rq, int error) -{ - struct completion* waiting = rq->end_io_data; - rq->end_io_data = NULL; - complete (waiting); -} - -int simple_read ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - DECLARE_COMPLETION_ONSTACK(wait); - struct bio* bio = NULL; - struct request *rq; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | - hdr->wu << (BITS_PER_SLICE); - - bdbm_bug_on (cmd == NULL); - - /*bdbm_msg ("READ: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs);*/ - -#if 0 - /* [STEP1] setup bio */ - /*bio = bio_map_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL);*/ - bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_NOIO, 1); - bdbm_bug_on (bio == NULL); - bio->bi_rw = READ; - bio_get (bio); -#endif - - /* [STEP2] alloc request */ - rq = blk_mq_alloc_request(bdi->q, 0, 0); - if (IS_ERR(rq)) { - bdbm_error ("blk_mq_alloc_request"); - bdbm_bug_on (1); - return -ENOMEM; - } - - /*rq->cmd_type = REQ_TYPE_DRV_PRIV;*/ - /*rq->cmd_flags |= REQ_FAILFAST_DRIVER;*/ - /*rq->ioprio = bio_prio(bio);*/ - /*if (bio_has_data(bio)) {*/ - /*rq->nr_phys_segments = bio_phys_segments(bdi->q, bio);*/ - /*}*/ - /*rq->__data_len = bio->bi_iter.bi_size;*/ - /*rq->bio = rq->biotail = bio;*/ - - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - - /* [STEP3] setup cmd */ - cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ - cmd->rw.flags = 0; - cmd->rw.nsid = 1; - cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd->rw.length = 63; /* it must be the unit of 255 */ - cmd->rw.control = 0; - cmd->rw.dsmgmt = 0; - cmd->rw.reftag = 0; - cmd->rw.apptag = 0; - cmd->rw.appmask = 0; - - if (blk_rq_map_kern (bdi->q, rq, hdr->buffer, 64*4096, GFP_KERNEL)) { - bdbm_msg ("blk_rq_map_kern() failed"); - bdbm_bug_on (1); - } - -#ifdef USE_ASYNC - /*rq->end_io_data = &wait;*/ - blk_execute_rq_nowait (bdi->q, NULL, rq, 1, nvme_nvm_end_io); - /*blk_execute_rq_nowait (bdi->q, NULL, rq, 1, blk_end_sync_rq);*/ - /*wait_for_completion_io(&wait);*/ - /*rq->end_io_data = hdr;*/ - /*nvme_nvm_end_io (rq, 0);*/ -#else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - rq->end_io_data = hdr; - nvme_nvm_end_io (rq, 0); -#endif - - return 0; -} - -int simple_write ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - DECLARE_COMPLETION_ONSTACK(wait); - struct bio* bio = NULL; - struct request *rq; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | - hdr->wu << (BITS_PER_SLICE); - - bdbm_bug_on (cmd == NULL); - - /*bdbm_msg ("WRITE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs);*/ - - /* setup bio */ - memcpy (hdr->buffer, hdr->kp_ptr, 4096); -#if 0 - /*bio = bio_map_kern (bdi->q, hdr->buffer, 64*4096, GFP_NOIO);*/ - bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_NOIO, 0); - bdbm_bug_on (bio == NULL); - bio->bi_rw = WRITE; - bio_get (bio); -#endif - - /* allocate request */ - rq = blk_mq_alloc_request (bdi->q, 1, 0); - if (IS_ERR(rq)) { - bdbm_error ("blk_mq_alloc_request"); - bdbm_bug_on (1); - return -ENOMEM; - } - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - /*rq->cmd_flags |= REQ_FAILFAST_DRIVER;*/ - /*rq->ioprio = bio_prio(bio);*/ - /*if (bio_has_data(bio))*/ - /*rq->nr_phys_segments = bio_phys_segments(bdi->q, bio);*/ - /*rq->__data_len = bio->bi_iter.bi_size;*/ - /*rq->bio = rq->biotail = bio;*/ - - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - - /* setup cmd */ - cmd->rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ - cmd->rw.flags = 0; - cmd->rw.nsid = 1; - cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd->rw.length = 63; /* it must be the unit of 255 */ - cmd->rw.control = 0; - cmd->rw.dsmgmt = 0; - cmd->rw.reftag = 0; - cmd->rw.apptag = 0; - cmd->rw.appmask = 0; - - if (blk_rq_map_kern (bdi->q, rq, hdr->buffer, 64*4096, GFP_KERNEL)) { - bdbm_msg ("blk_rq_map_kern() failed"); - bdbm_bug_on (1); - } - -#ifdef USE_ASYNC - /*rq->end_io_data = &wait;*/ - blk_execute_rq_nowait (bdi->q, NULL, rq, 1, nvme_nvm_end_io); - /*blk_execute_rq_nowait (bdi->q, NULL, rq, 1, blk_end_sync_rq);*/ - /*wait_for_completion_io(&wait);*/ - /*rq->end_io_data = hdr;*/ - /*nvme_nvm_end_io (rq, 0);*/ -#else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - rq->end_io_data = hdr; - nvme_nvm_end_io (rq, 0); -#endif - - return 0; -} - -int simple_erase ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - DECLARE_COMPLETION_ONSTACK(wait); - struct request *rq; - struct bio* bio = NULL; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - __u32 req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE); - __le64* ubuffer_64 = (__le64*)hdr->buffer; - - bdbm_bug_on (cmd == NULL); - - /*bdbm_msg ("ERASE: %llu %llu => %u (%x)", hdr->block, hdr->die, req_ofs, req_ofs);*/ - - ubuffer_64[1] = req_ofs; - - /* setup bio */ -#if 0 - /*bio = bio_map_kern (bdi->q, hdr->buffer, 64*4096, GFP_KERNEL);*/ - bio = bio_copy_kern (bdi->q, hdr->buffer, 64*4096, GFP_NOIO, 0); - bdbm_bug_on (bio == NULL); - bio->bi_rw = WRITE; - bio_get (bio); -#endif - - /* alloc request */ - rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) { - bdbm_error ("blk_mq_alloc_request"); - bdbm_bug_on (1); - return -ENOMEM; - } - - /*rq->cmd_type = REQ_TYPE_DRV_PRIV;*/ - /*rq->cmd_flags |= REQ_FAILFAST_DRIVER;*/ - /*rq->ioprio = bio_prio(bio);*/ - /*if (bio_has_data(bio))*/ - /*rq->nr_phys_segments = bio_phys_segments(bdi->q, bio);*/ - /*rq->__data_len = bio->bi_iter.bi_size;*/ - /*rq->bio = rq->biotail = bio;*/ - - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - - /* setup cmd */ - cmd->common.opcode = 9; - cmd->common.flags = 0; - cmd->common.nsid = 1; - cmd->common.cdw2[0] = 0; - cmd->common.cdw2[1] = 0; - cmd->common.cdw10[0] = 0; - cmd->common.cdw10[1] = 4; - cmd->common.cdw10[2] = 0; - cmd->common.cdw10[3] = 0; - cmd->common.cdw10[4] = 0; - cmd->common.cdw10[5] = 0; - - /*if (blk_rq_map_kern (bdi->q, rq, hdr->buffer, 64*4096, GFP_KERNEL)) {*/ - if (blk_rq_map_kern (bdi->q, rq, hdr->buffer, 64*4096, GFP_KERNEL)) { - bdbm_msg ("blk_rq_map_kern() failed"); - bdbm_bug_on (1); - } - -#ifdef USE_ASYNC - /*rq->end_io_data = &wait;*/ - blk_execute_rq_nowait (bdi->q, NULL, rq, 1, nvme_nvm_end_io); - /*blk_execute_rq_nowait (bdi->q, NULL, rq, 1, blk_end_sync_rq);*/ - /*wait_for_completion_io(&wait);*/ - /*rq->end_io_data = hdr;*/ - /*nvme_nvm_end_io (rq, 0);*/ -#else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - rq->end_io_data = hdr; - nvme_nvm_end_io (rq, 0); -#endif - - return 0; -} - -uint32_t hynix_dumbssd_send_cmd ( - bdbm_drv_info_t* bdi, - bdbm_llm_req_t* r, - void (*intr_handler)(void*)) -{ - uint32_t ret = -1; - struct hd_req* hdr = kzalloc (sizeof (struct hd_req), GFP_KERNEL); - - bdbm_bug_on (hdr == NULL); - - hdr->bdi = bdi; - hdr->r = r; - hdr->die = r->phyaddr.channel_no; - hdr->block = r->phyaddr.block_no; - hdr->wu = r->phyaddr.page_no; - hdr->intr_handler = intr_handler; - hdr->buffer = kmalloc (4096*64, GFP_KERNEL); - hdr->kp_ptr = r->fmain.kp_ptr[0]; - - bdbm_bug_on (hdr->buffer == NULL); - - switch (r->req_type) { - case REQTYPE_READ_DUMMY: - kfree (hdr); - intr_handler (r); - break; - - case REQTYPE_WRITE: - case REQTYPE_GC_WRITE: - case REQTYPE_RMW_WRITE: - case REQTYPE_META_WRITE: - hdr->rw = WRITE; - ret = simple_write (bdi, hdr); - break; - - case REQTYPE_READ: - case REQTYPE_GC_READ: - case REQTYPE_RMW_READ: - case REQTYPE_META_READ: - hdr->rw = READ; - ret = simple_read (bdi, hdr); - break; - - case REQTYPE_GC_ERASE: - hdr->rw = 0xFF; - ret = simple_erase (bdi, hdr); - break; - - default: - bdbm_error ("invalid REQTYPE (%u)", r->req_type); - bdbm_bug_on (1); - break; - } - - return 0; -} -EXPORT_SYMBOL (hynix_dumbssd_send_cmd); diff --git a/devices/ramdrive/hynix_dumbssd.h b/devices/ramdrive/hynix_dumbssd.h deleted file mode 100644 index b3e3d8a..0000000 --- a/devices/ramdrive/hynix_dumbssd.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#ifndef _HYNIX_DUMBSSD_H -#define _HYNIX_DUMBSSD_H - -#include "bdbm_drv.h" -#include "debug.h" - -uint32_t hynix_dumbssd_send_cmd ( - bdbm_drv_info_t* bdi, - bdbm_llm_req_t* r, - void (*intr_handler)(void*) - ); - -#endif diff --git a/devices/ramdrive/hynix_dumbssd.sync.c b/devices/ramdrive/hynix_dumbssd.sync.c deleted file mode 100644 index 678cbbd..0000000 --- a/devices/ramdrive/hynix_dumbssd.sync.c +++ /dev/null @@ -1,374 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#if defined (KERNEL_MODE) -#include -#include - -#include /* workqueue */ - -#else -#error Invalid Platform (KERNEL_MODE or USER_MODE) -#endif - -#include -#include -#include "hynix_dumbssd.h" - - -#define BITS_PER_SLICE 6 -#define BITS_PER_WU 7 -#define BITS_PER_DIE 6 - -#define USE_ASYNC - - -struct hd_req { - bdbm_drv_info_t* bdi; - bdbm_llm_req_t* r; - uint64_t die; - uint64_t block; - uint64_t wu; - uint8_t* kp_ptr; - void* ubuffer; - void (*intr_handler)(void*); -}; - -#include -static void nvme_nvm_end_io (struct request *rq, int error) -{ - struct hd_req* hdr = rq->end_io_data; - - /*bdbm_msg ("hynix -- callback - 1");*/ - /*udelay(1000);*/ - - bdbm_bug_on (hdr == NULL); - bdbm_bug_on (hdr->r == NULL); - - switch (hdr->r->req_type) { - case REQTYPE_READ: - case REQTYPE_GC_READ: - case REQTYPE_RMW_READ: - case REQTYPE_META_READ: - bdbm_bug_on (hdr->kp_ptr == NULL); - bdbm_bug_on (hdr->ubuffer== NULL); - memcpy (hdr->kp_ptr, (uint8_t*)hdr->ubuffer, 4096); - break; - } - - /*bdbm_msg ("hynix -- callback - 2");*/ - /*udelay(1000);*/ - - /* call handler */ - hdr->intr_handler (hdr->r); - /* end */ - - /*bdbm_msg ("hynix -- callback - 3");*/ - /*udelay(1000);*/ - - bdbm_bug_on (rq == NULL); - bdbm_bug_on (rq->cmd == NULL); - kfree (rq->cmd); - if (hdr->ubuffer) - kfree (hdr->ubuffer); - kfree (hdr); - blk_mq_free_request(rq); - - /*bdbm_msg ("hynix -- callback - 4");*/ - /*udelay(1000);*/ -} - -struct request *nvme_alloc_request(struct request_queue *q, - struct nvme_command *cmd, unsigned int flags) -{ - bool write = cmd->common.opcode & 1; - struct request *req; - - req = blk_mq_alloc_request(q, write, flags); - if (IS_ERR(req)) - return req; - - req->cmd_type = REQ_TYPE_DRV_PRIV; - req->__data_len = 0; - req->__sector = (sector_t) -1; - req->bio = req->biotail = NULL; - - req->cmd = (unsigned char *)cmd; - req->cmd_len = sizeof(struct nvme_command); - req->special = (void *)0; - - return req; -} - -int simple_read ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - int ret; - struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | - hdr->wu << (BITS_PER_SLICE); - - bdbm_msg ("READ: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); - - hdr->ubuffer = ubuffer; - - rq = blk_mq_alloc_request(bdi->q, 0, 0); - if (IS_ERR(rq)) { - bdbm_error ("blk_mq_alloc_request"); - bdbm_bug_on (1); - return -ENOMEM; - } - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - - bdbm_bug_on (ubuffer == NULL); - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) { - bdbm_error ("blk_rq_map_kern failed: %x", ret); - bdbm_bug_on (1); - /*kfree (cmd);*/ - /*kfree (ubuffer);*/ - /*kfree (hdr);*/ - blk_mq_free_request(rq); - return -1; - } - - cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ - cmd->rw.flags = 0; - cmd->rw.nsid = 1; - cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd->rw.length = 63; /* it must be the unit of 255 */ - cmd->rw.control = 0; - cmd->rw.dsmgmt = 0; - cmd->rw.reftag = 0; - cmd->rw.apptag = 0; - cmd->rw.appmask = 0; - - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - -#ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - rq->end_io_data = hdr; - nvme_nvm_end_io (rq, 0); -#endif - - return 0; -} - -int simple_write ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - int ret; - struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - - int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | - hdr->wu << (BITS_PER_SLICE); - - hdr->ubuffer = ubuffer; - - bdbm_msg ("WRITE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); - - memcpy ((uint8_t*)ubuffer, hdr->kp_ptr, 4096); - - rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) { - bdbm_error ("blk_mq_alloc_request"); - bdbm_bug_on (1); - return -ENOMEM; - } - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - - bdbm_bug_on (ubuffer == NULL); - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) { - bdbm_error ("blk_rq_map_kern failed: %x", ret); - bdbm_bug_on (1); - /*kfree (cmd);*/ - /*kfree (ubuffer);*/ - /*kfree (hdr);*/ - blk_mq_free_request(rq); - return -1; - } - - cmd->rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ - cmd->rw.flags = 0; - cmd->rw.nsid = 1; - cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd->rw.length = 63; /* it must be the unit of 255 */ - cmd->rw.control = 0; - cmd->rw.dsmgmt = 0; - cmd->rw.reftag = 0; - cmd->rw.apptag = 0; - cmd->rw.appmask = 0; - - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - -#ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - rq->end_io_data = hdr; - nvme_nvm_end_io (rq, 0); -#endif - - return 0; -} - -int simple_erase ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - int ret; - struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - __u32 req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE); - __le64* ubuffer_64 = (__le64*)ubuffer; - - bdbm_msg ("ERASE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); - - hdr->ubuffer = ubuffer; - ubuffer_64[1] = req_ofs; - - rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) { - bdbm_error ("blk_mq_alloc_request"); - bdbm_bug_on (1); - return -ENOMEM; - } - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - - bdbm_bug_on (ubuffer == NULL); - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) { - bdbm_error ("blk_rq_map_kern failed: %x", ret); - bdbm_bug_on (1); - /*kfree (hdr);*/ - /*kfree (cmd);*/ - /*kfree (ubuffer);*/ - blk_mq_free_request(rq); - return -ENOMEM; - } - - cmd->common.opcode = 9; - cmd->common.flags = 0; - cmd->common.nsid = 1; - cmd->common.cdw2[0] = 0; - cmd->common.cdw2[1] = 0; - cmd->common.cdw10[0] = 0; - cmd->common.cdw10[1] = 4; - cmd->common.cdw10[2] = 0; - cmd->common.cdw10[3] = 0; - cmd->common.cdw10[4] = 0; - cmd->common.cdw10[5] = 0; - - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - -#ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - rq->end_io_data = hdr; - nvme_nvm_end_io (rq, 0); -#endif - - return 0; -} - -uint32_t hynix_dumbssd_send_cmd ( - bdbm_drv_info_t* bdi, - bdbm_llm_req_t* r, - void (*intr_handler)(void*)) -{ - uint32_t ret = -1; - struct hd_req* hdr = kzalloc (sizeof (struct hd_req), GFP_KERNEL); - - hdr->bdi = bdi; - hdr->r = r; - hdr->die = r->phyaddr.channel_no; - hdr->block = r->phyaddr.block_no; - hdr->wu = r->phyaddr.page_no; - hdr->intr_handler = intr_handler; - hdr->ubuffer = NULL; - hdr->kp_ptr = NULL; - - switch (r->req_type) { - case REQTYPE_READ_DUMMY: - intr_handler (r); - break; - - case REQTYPE_WRITE: - case REQTYPE_GC_WRITE: - case REQTYPE_RMW_WRITE: - case REQTYPE_META_WRITE: - hdr->kp_ptr = r->fmain.kp_ptr[0]; - ret = simple_write (bdi, hdr); - break; - - case REQTYPE_READ: - case REQTYPE_GC_READ: - case REQTYPE_RMW_READ: - case REQTYPE_META_READ: - hdr->kp_ptr = r->fmain.kp_ptr[0]; - ret = simple_read (bdi, hdr); - break; - - case REQTYPE_GC_ERASE: - ret = simple_erase (bdi, hdr); - break; - - default: - bdbm_error ("invalid REQTYPE (%u)", r->req_type); - bdbm_bug_on (1); - break; - } - - return 0; -} - diff --git a/devices/ramdrive/hynix_dumbssd.sync.old.c b/devices/ramdrive/hynix_dumbssd.sync.old.c deleted file mode 100644 index d0e5fe1..0000000 --- a/devices/ramdrive/hynix_dumbssd.sync.old.c +++ /dev/null @@ -1,314 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#if defined (KERNEL_MODE) -#include -#include - -#include /* workqueue */ - -#else -#error Invalid Platform (KERNEL_MODE or USER_MODE) -#endif - -#include -#include -#include "hynix_dumbssd.h" - - -#define BITS_PER_SLICE 6 -#define BITS_PER_WU 7 -#define BITS_PER_DIE 6 - - -struct request *nvme_alloc_request(struct request_queue *q, - struct nvme_command *cmd, unsigned int flags) -{ - bool write = cmd->common.opcode & 1; - struct request *req; - - req = blk_mq_alloc_request(q, write, flags); - if (IS_ERR(req)) - return req; - - req->cmd_type = REQ_TYPE_DRV_PRIV; - req->__data_len = 0; - req->__sector = (sector_t) -1; - req->bio = req->biotail = NULL; - - req->cmd = (unsigned char *)cmd; - req->cmd_len = sizeof(struct nvme_command); - req->special = (void *)0; - - return req; -} - -int simple_read ( - bdbm_drv_info_t* bdi, - int die, - int block, - int wu, - kp_stt_t* kp_stt, - uint8_t** kp_ptr) -{ - int ret; - struct request *rq; - unsigned bufflen = 64 * 4096; - /*struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL);*/ - struct nvme_command cmd; - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - - int req_len = 63; - int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - die << (BITS_PER_WU + BITS_PER_SLICE) | - wu << (BITS_PER_SLICE); - - rq = blk_mq_alloc_request(bdi->q, 0, 0); - if (IS_ERR(rq)) - return -ENOMEM; - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) { - bdbm_error ("blk_rq_map_kern failed"); - kfree (ubuffer); - blk_mq_free_request(rq); - return -1; - } - - cmd.rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ - cmd.rw.flags = 0; - cmd.rw.nsid = 1; - cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd.rw.length = req_len; /* it must be the unit of 255 */ - cmd.rw.control = 0; - cmd.rw.dsmgmt = 0; - cmd.rw.reftag = 0; - cmd.rw.apptag = 0; - cmd.rw.appmask = 0; - - rq->cmd = (unsigned char *)&cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = NULL; - - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) { - bdbm_msg ("ret = %u", ret); - } - - /* copy data to bio */ - memcpy (kp_ptr[0], (uint8_t*)ubuffer, 4096); - /* end */ - - kfree (ubuffer); - blk_mq_free_request(rq); - - return 0; -} - -int simple_write ( - bdbm_drv_info_t* bdi, - int die, - int block, - int wu, - kp_stt_t* kp_stt, - uint8_t** kp_ptr) -{ - int ret; - struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command cmd; - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - - int req_len = 63; - int req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - die << (BITS_PER_WU + BITS_PER_SLICE) | - wu << (BITS_PER_SLICE); - - /* copy data to bio */ - memcpy ((uint8_t*)ubuffer, kp_ptr[0], 4096); - /* end */ - - rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) - return -ENOMEM; - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) { - bdbm_error ("blk_rq_map_kern failed"); - kfree (ubuffer); - blk_mq_free_request(rq); - return -1; - } - - cmd.rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ - cmd.rw.flags = 0; - cmd.rw.nsid = 1; - cmd.rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd.rw.length = req_len; /* it must be the unit of 255 */ - cmd.rw.control = 0; - cmd.rw.dsmgmt = 0; - cmd.rw.reftag = 0; - cmd.rw.apptag = 0; - cmd.rw.appmask = 0; - - rq->cmd = (unsigned char *)&cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = NULL; - - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) { - bdbm_msg ("ret = %u", ret); - } - - kfree (ubuffer); - blk_mq_free_request(rq); - - return 0; -} - -int simple_erase (bdbm_drv_info_t* bdi, int die, int block) -{ - int ret; - struct request *rq; - unsigned bufflen = 64 * 4096; - struct nvme_command cmd; - void* ubuffer = kzalloc (bufflen, GFP_KERNEL); - __le64* ubuffer_64 = (__le64*)ubuffer; - - __u32 req_ofs = block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - die << (BITS_PER_WU + BITS_PER_SLICE); - - ubuffer_64[1] = req_ofs; - - rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) - return -ENOMEM; - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - - ret = blk_rq_map_kern (bdi->q, rq, ubuffer, bufflen, GFP_KERNEL); - if (ret) { - kfree (ubuffer); - blk_mq_free_request(rq); - return -ENOMEM; - } - - cmd.common.opcode = 9; - cmd.common.flags = 0; - cmd.common.nsid = 1; - cmd.common.cdw2[0] = 0; - cmd.common.cdw2[1] = 0; - cmd.common.cdw10[0] = 0; - cmd.common.cdw10[1] = 4; - cmd.common.cdw10[2] = 0; - cmd.common.cdw10[3] = 0; - cmd.common.cdw10[4] = 0; - cmd.common.cdw10[5] = 0; - - rq->cmd = (unsigned char *)&cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = NULL; - - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - - ret = rq->errors; - if (ret != 0) - bdbm_msg ("ret = %u", ret); - - return 0; -} - -uint32_t hynix_dumbssd_send_cmd ( - bdbm_drv_info_t* bdi, - bdbm_llm_req_t* r, - void (*intr_handler)(void*)) -{ - uint32_t ret = -1; - - switch (r->req_type) { - case REQTYPE_READ_DUMMY: - /* do nothing */ - break; - case REQTYPE_WRITE: - case REQTYPE_GC_WRITE: - case REQTYPE_RMW_WRITE: - case REQTYPE_META_WRITE: - bdbm_msg ("simple_write: %llu => %llu %llu %llu", - r->logaddr.lpa[0], - r->phyaddr.channel_no, - r->phyaddr.block_no, - r->phyaddr.page_no); - ret = simple_write (bdi, - r->phyaddr.channel_no, - r->phyaddr.block_no, - r->phyaddr.page_no, - r->fmain.kp_stt, - r->fmain.kp_ptr); - break; - - case REQTYPE_READ: - case REQTYPE_GC_READ: - case REQTYPE_RMW_READ: - case REQTYPE_META_READ: - bdbm_msg ("simple_read: %llu <= %llu %llu %llu", - r->logaddr.lpa[0], - r->phyaddr.channel_no, - r->phyaddr.block_no, - r->phyaddr.page_no); - ret = simple_read (bdi, - r->phyaddr.channel_no, - r->phyaddr.block_no, - r->phyaddr.page_no, - r->fmain.kp_stt, - r->fmain.kp_ptr); - break; - - case REQTYPE_GC_ERASE: - bdbm_msg ("simple_erase"); - ret = simple_erase (bdi, - r->phyaddr.channel_no, - r->phyaddr.block_no); - break; - - default: - bdbm_error ("invalid REQTYPE (%u)", r->req_type); - bdbm_bug_on (1); - break; - } - - /*intr_handler (r);*/ - return 0; -} - diff --git a/devices/ramdrive_timing/Makefile b/devices/ramdrive_timing/Makefile index f049e38..e92c402 100644 --- a/devices/ramdrive_timing/Makefile +++ b/devices/ramdrive_timing/Makefile @@ -28,7 +28,6 @@ risa_dev_ramdrive_timing-y := \ $(DEV_COMMON)/dev_stub.o \ ../ramdrive/dev_ramssd.o \ ../ramdrive/dm_ramdrive.o \ - ../ramdrive/hynix_dumbssd.o \ obj-m := risa_dev_ramdrive_timing.o diff --git a/examples/test/Makefile b/examples/test/Makefile deleted file mode 100644 index 1fe430b..0000000 --- a/examples/test/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -CFLAGS=-g -Wall -CC=gcc -LIBS=-lm -lpthread -INCLUDES= -OBJS_FORMAT=test.o -SRCS_FORMAT=test.c - -#The variable $@ has the value of the target. In this case $@ = psort -test: ${OBJS_FORMAT} - ${CC} ${CFLAGS} ${INCLUDES} -o $@ ${OBJS_FORMAT} ${LIBS} - -.c.o: - ${CC} ${CFLAGS} ${INCLUDES} -c $< - -clean: - rm *.o test diff --git a/examples/test/test b/examples/test/test deleted file mode 100755 index fb622c0d2eaf30bdfb0ef5f03a0cb8d6d6852ae4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "../../devices/dumbssd/dm_dumbssd.h" - -/* -struct user_cmd { - int die; - int block; - int wu; -}; - -#define TEST_IOCTL_READ _IO('N', 0x01) -#define TEST_IOCTL_WRITE _IO('N', 0x02) -#define TEST_IOCTL_ERASE _IO('N', 0x03) -*/ - - - -void test_read (int32_t dev_h, int die, int block, int wu) -{ - dumbssd_user_cmd_t c; - c.die = die; - c.block = block; - c.wu = wu; - ioctl (dev_h, TEST_IOCTL_READ, &c); -} - -void test_write (int32_t dev_h, int die, int block, int wu) -{ - dumbssd_user_cmd_t c; - c.die = die; - c.block = block; - c.wu = wu; - ioctl (dev_h, TEST_IOCTL_WRITE, &c); -} - -void test_erase (int32_t dev_h, int die, int block) -{ - dumbssd_user_cmd_t c; - c.die = die; - c.block = block; - ioctl (dev_h, TEST_IOCTL_ERASE, &c); -} - -int main (int argc, char** argv) -{ - int32_t dev_h = -1; - char* dev_name = "/dev/kernel_nvme/control"; - - fprintf (stderr, "BlueDBM format tools (Ver 0.1)\n\n"); - - /* Open the BDBM device */ - if ((dev_h = open (dev_name, O_RDWR)) == -1) { - fprintf (stderr, "Failed to open '%s'\n", dev_name); - exit (-1); - } - fprintf (stderr, "Open '%s' successfully\n", dev_name); - - /* Send a BDBM format command using IOCTL - * Everything will be done by bdbm_drv.ko */ - -#if 0 - test_erase (dev_h, 8, 8); - sleep (1); - test_write (dev_h, 8, 8, 0); - sleep (1); - test_read (dev_h, 8, 8, 0); - sleep (1); - test_erase (dev_h, 8, 8); - sleep (1); - test_read (dev_h, 8, 8, 0); - printf ("\n"); - - sleep (1); - test_erase (dev_h, 1, 1); - sleep (1); - test_write (dev_h, 1, 1, 0); - sleep (1); - test_read (dev_h, 1, 1, 0); - sleep (1); - test_erase (dev_h, 1, 1); - sleep (1); - test_read (dev_h, 1, 1, 0); - printf ("\n"); -#endif - { - int die = 0, block = 0, wu = 0; - - printf ("erase...\n"); - for (block = 0; block < 20; block++) - for (die = 0; die < 64; die++) - test_erase (dev_h, die, block); - - printf ("write...\n"); - for (block = 0; block < 10; block++) - for (wu = 0; wu < 64; wu++) - for (die = 0; die < 64; die++) - test_write (dev_h, die, block, wu); - - printf ("read...\n"); - for (block = 0; block < 10; block++) - for (wu = 0; wu < 64; wu++) - for (die = 0; die < 64; die++) - test_read (dev_h, die, block, wu); - } - - /* close the device */ - if (dev_h != -1) { - close (dev_h); - } - - return 0; -} - diff --git a/frontend/kernel_nvme/Makefile b/frontend/kernel_nvme/Makefile index d74bf7b..ef9bde8 100644 --- a/frontend/kernel_nvme/Makefile +++ b/frontend/kernel_nvme/Makefile @@ -6,8 +6,7 @@ INCLUDE := ../../include COMMON := ../../common DM_COMMON := ../../devices/common -#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers -KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers +KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/bluedbm/Module.symvers @@ -64,7 +63,6 @@ bdbm_drv-y := \ $(FTL)/pmu.o \ $(FTL)/hlm_nobuf.o \ $(FTL)/llm_mq.o \ - $(FTL)/llm_noq.o \ $(FTL)/algo/abm.o \ $(FTL)/algo/page_ftl.o \ $(FTL)/algo/block_ftl.o \ diff --git a/frontend/kernel_nvme/blkdev.c b/frontend/kernel_nvme/blkdev.c index a1756e2..21c44f0 100644 --- a/frontend/kernel_nvme/blkdev.c +++ b/frontend/kernel_nvme/blkdev.c @@ -41,8 +41,7 @@ int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo); static struct bdbm_device_t { struct gendisk *gd; struct request_queue *queue; -} _bdbm_device_dummy, bdbm_device; - +} bdbm_device; static uint32_t bdbm_device_major_num = 0; static struct block_device_operations bdops = { @@ -80,7 +79,6 @@ int badblock_scan_thread_fn (void* arg) int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo) { -#if 0 bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (_bdi); int nr_sectors = np->device_capacity_in_byte >> 9; @@ -94,13 +92,8 @@ int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo) geo->cylinders, geo->sectors, nr_sectors); - return 0; + return 1; } -#else - geo->heads = 16; - geo->cylinders = 1024; - geo->sectors = 256; -#endif return 0; } @@ -191,91 +184,31 @@ int bdbm_blk_ioctl ( return 0; } -static blk_qc_t dummy_fn ( - struct request_queue *q, - struct bio *bio) -{ - bio_endio (bio); - return BLK_QC_T_NONE; /* for no polling */ -} - uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) { - uint64_t capacity = 0; - - _bdbm_device_dummy.queue = blk_alloc_queue_node (GFP_KERNEL, bdi->q->node); - bdbm_msg ("host_blkdev_register_device -> blk_alloc_queue_node"); - if (!_bdbm_device_dummy.queue) { - bdbm_error ("blk_alloc_queue failed"); - return -ENOMEM; - } - - blk_queue_make_request (_bdbm_device_dummy.queue, dummy_fn); - blk_queue_logical_block_size (_bdbm_device_dummy.queue, bdi->parm_ftl.kernel_sector_size); - blk_queue_io_min (_bdbm_device_dummy.queue, bdi->parm_dev.page_main_size); - blk_queue_io_opt (_bdbm_device_dummy.queue, bdi->parm_dev.page_main_size); - - /* see if a TRIM command is used or not */ - if (bdi->parm_ftl.trim == TRIM_ENABLE) { - _bdbm_device_dummy.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; - _bdbm_device_dummy.queue->limits.max_discard_sectors = UINT_MAX; - queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, _bdbm_device_dummy.queue); - bdbm_msg ("TRIM is enabled"); - } else { - bdbm_msg ("TRIM is disabled"); - } - - bdbm_msg ("host_blkdev_register_device -> alloc_disk"); - if (!(_bdbm_device_dummy.gd = alloc_disk (0))) { - bdbm_msg ("alloc_disk failed"); - return -ENOMEM; - } - _bdbm_device_dummy.gd->flags = GENHD_FL_EXT_DEVT; - bdbm_msg ("host_blkdev_register_device -> alloc_disk - done"); - - bdi->gd = _bdbm_device_dummy.gd; - - _bdbm_device_dummy.gd->major = 0; - _bdbm_device_dummy.gd->first_minor = 0; - _bdbm_device_dummy.gd->fops = &bdops; - _bdbm_device_dummy.gd->queue = _bdbm_device_dummy.queue; - _bdbm_device_dummy.gd->private_data = NULL; - strcpy (_bdbm_device_dummy.gd->disk_name, bdi->disk_name); - - /* setup disk capacity */ - capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; - capacity = (capacity) - capacity/10; - set_capacity (_bdbm_device_dummy.gd, capacity / KERNEL_SECTOR_SIZE); - - /* add disk */ - bdbm_msg ("add_disk"); - add_disk (_bdbm_device_dummy.gd); - bdbm_msg ("add_disk - done"); - - /************************************************************************/ /* create a blk queue */ - bdbm_device.queue = blk_alloc_queue (GFP_KERNEL); - if (!bdbm_device.queue) { + if (!(bdbm_device.queue = blk_alloc_queue (GFP_KERNEL))) { bdbm_error ("blk_alloc_queue failed"); return -ENOMEM; } - blk_queue_make_request (bdbm_device.queue, fn); blk_queue_logical_block_size (bdbm_device.queue, bdi->parm_ftl.kernel_sector_size); blk_queue_io_min (bdbm_device.queue, bdi->parm_dev.page_main_size); blk_queue_io_opt (bdbm_device.queue, bdi->parm_dev.page_main_size); + /*blk_limits_max_hw_sectors (&bdbm_device.queue->limits, 16);*/ /* see if a TRIM command is used or not */ if (bdi->parm_ftl.trim == TRIM_ENABLE) { bdbm_device.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; bdbm_device.queue->limits.max_discard_sectors = UINT_MAX; + /*bdbm_device.queue->limits.discard_zeroes_data = 1;*/ queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, bdbm_device.queue); bdbm_msg ("TRIM is enabled"); } else { bdbm_msg ("TRIM is disabled"); } - /* alloc & register a blk device */ + /* register a blk device */ if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, "blueDBM")) < 0) { bdbm_msg ("register_blkdev failed (%d)", bdbm_device_major_num); return bdbm_device_major_num; @@ -285,7 +218,6 @@ uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) unregister_blkdev (bdbm_device_major_num, "blueDBM"); return -ENOMEM; } - bdbm_device.gd->major = bdbm_device_major_num; bdbm_device.gd->first_minor = 0; bdbm_device.gd->fops = &bdops; @@ -293,110 +225,14 @@ uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) bdbm_device.gd->private_data = NULL; strcpy (bdbm_device.gd->disk_name, "blueDBM"); - /* setup disk capacity */ - /*blk_queue_max_hw_sectors (bdbm_device.queue, 8);*/ - capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; - capacity = (capacity) - capacity/10; - set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); - - /* add disk */ - bdbm_msg ("add_disk"); - add_disk (bdbm_device.gd); - bdbm_msg ("add_disk - done"); - - return 0; -} - -void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) -{ - del_gendisk (bdbm_device.gd); - blk_cleanup_queue (bdbm_device.queue); - put_disk (bdbm_device.gd); - unregister_blkdev (bdbm_device_major_num, "blueDBM"); - - - /*********************************************************/ - /* unregister a BlueDBM device driver */ - del_gendisk (_bdbm_device_dummy.gd); - blk_cleanup_queue (_bdbm_device_dummy.queue); - put_disk (_bdbm_device_dummy.gd); -} - - -#if 0 -uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) -{ - uint64_t capacity = 0; - - /* create a blk queue */ - if (bdi->q == NULL) { - bdbm_device.queue = blk_alloc_queue (GFP_KERNEL); - } else { - bdbm_device.queue = blk_alloc_queue_node (GFP_KERNEL, bdi->q->node); - bdbm_msg ("host_blkdev_register_device -> blk_alloc_queue_node"); - } - if (!bdbm_device.queue) { - bdbm_error ("blk_alloc_queue failed"); - return -ENOMEM; + { + uint64_t capacity; + //capacity = bdi->parm_dev.device_capacity_in_byte * 0.9; + capacity = bdi->parm_dev.device_capacity_in_byte; + capacity = (capacity / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); } - - blk_queue_make_request (bdbm_device.queue, fn); - blk_queue_logical_block_size (bdbm_device.queue, bdi->parm_ftl.kernel_sector_size); - blk_queue_io_min (bdbm_device.queue, bdi->parm_dev.page_main_size); - blk_queue_io_opt (bdbm_device.queue, bdi->parm_dev.page_main_size); - /*blk_limits_max_hw_sectors (&bdbm_device.queue->limits, 16);*/ - - /* see if a TRIM command is used or not */ - if (bdi->parm_ftl.trim == TRIM_ENABLE) { - bdbm_device.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; - bdbm_device.queue->limits.max_discard_sectors = UINT_MAX; - /*bdbm_device.queue->limits.discard_zeroes_data = 1;*/ - queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, bdbm_device.queue); - bdbm_msg ("TRIM is enabled"); - } else { - bdbm_msg ("TRIM is disabled"); - } - - /* alloc & register a blk device */ - if (bdi->q == NULL) { - if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, bdi->disk_name)) < 0) { - bdbm_msg ("register_blkdev failed (%d)", bdbm_device_major_num); - return bdbm_device_major_num; - } - if (!(bdbm_device.gd = alloc_disk (1))) { - bdbm_msg ("alloc_disk failed"); - unregister_blkdev (bdbm_device_major_num, bdi->disk_name); - return -ENOMEM; - } - } else { - bdbm_msg ("host_blkdev_register_device -> alloc_disk"); - if (!(bdbm_device.gd = alloc_disk (0))) { - bdbm_msg ("alloc_disk failed"); - return -ENOMEM; - } - bdbm_device.gd->flags = GENHD_FL_EXT_DEVT; - bdbm_msg ("host_blkdev_register_device -> alloc_disk - done"); - } - - bdi->gd = bdbm_device.gd; - - bdbm_device.gd->major = bdbm_device_major_num; - bdbm_device.gd->first_minor = 0; - bdbm_device.gd->fops = &bdops; - bdbm_device.gd->queue = bdbm_device.queue; - bdbm_device.gd->private_data = NULL; - strcpy (bdbm_device.gd->disk_name, bdi->disk_name); - - /* setup disk capacity */ - /*blk_queue_max_hw_sectors (bdbm_device.queue, 8);*/ - capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; - capacity = (capacity) - capacity/10; - set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); - - /* add disk */ - bdbm_msg ("add_disk"); add_disk (bdbm_device.gd); - bdbm_msg ("add_disk - done"); return 0; } @@ -405,13 +241,8 @@ void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) { /* unregister a BlueDBM device driver */ del_gendisk (bdbm_device.gd); - blk_cleanup_queue (bdbm_device.queue); put_disk (bdbm_device.gd); - if (bdi->q == NULL) - unregister_blkdev (bdbm_device_major_num, bdi->disk_name); - - /* clean up */ - bdbm_device.queue = NULL; - bdbm_device.gd = NULL; + unregister_blkdev (bdbm_device_major_num, "blueDBM"); + blk_cleanup_queue (bdbm_device.queue); } -#endif + diff --git a/frontend/kernel_nvme/blkio.c b/frontend/kernel_nvme/blkio.c index 160204c..a604b10 100644 --- a/frontend/kernel_nvme/blkio.c +++ b/frontend/kernel_nvme/blkio.c @@ -192,11 +192,6 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) bdbm_blkio_req_t* br = NULL; bdbm_hlm_req_t* hr = NULL; - bdbm_msg ("blkio_make_req WHAT!!!! (%s)", bdi->gd->disk_name); - - /* lock a global mutex -- this function must be finished as soon as possible */ - bdbm_sema_lock (&p->host_lock); - /* get blkio */ if ((br = __get_blkio_req ((struct bio*)bio)) == NULL) { bdbm_error ("__get_blkio_req () failed"); @@ -215,6 +210,9 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) goto fail; } + /* lock a global mutex -- this function must be finished as soon as possible */ + bdbm_sema_lock (&p->host_lock); + /* if success, increase # of host reqs */ atomic_inc (&p->nr_host_reqs); @@ -262,3 +260,435 @@ void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) /* decreate # of reqs */ atomic_dec (&p->nr_host_reqs); } + + +#if 0 + +bdbm_host_inf_t _blkio_inf = { + .ptr_private = NULL, + .open = blkio_open, + .close = blkio_close, + .make_req = blkio_make_req, + .end_req = blkio_end_req, +}; + +typedef struct { + bdbm_sema_t host_lock; + atomic64_t nr_reqs; +} bdbm_blkio_private_t; + + + +/* This is a call-back function invoked by a block-device layer */ +static void __host_blkio_make_request_fn ( + struct request_queue *q, + struct bio *bio) +{ + blkio_make_req (_bdi, (void*)bio); +} + +static bdbm_hlm_req_t* __blkio_create_hlm_trim_req ( + bdbm_drv_info_t* bdi, + struct bio* bio) +{ + bdbm_hlm_req_t* hlm_req = NULL; + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + bdbm_ftl_params* dp = BDBM_GET_DRIVER_PARAMS (bdi); + uint64_t nr_secs_per_fp = 0; + + nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; + + /* create bdbm_hm_req_t */ + if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic + (sizeof (bdbm_hlm_req_t))) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + return NULL; + } + + /* make a high-level request for TRIM */ + hlm_req->req_type = REQTYPE_TRIM; + + if (dp->mapping_type == MAPPING_POLICY_SEGMENT) { + hlm_req->lpa = bio->bi_sector / nr_secs_per_fp; + hlm_req->len = bio_sectors (bio) / nr_secs_per_fp; + if (hlm_req->len == 0) + hlm_req->len = 1; + } else { + hlm_req->lpa = (bio->bi_sector + nr_secs_per_fp - 1) / nr_secs_per_fp; + if ((hlm_req->lpa * nr_secs_per_fp - bio->bi_sector) > bio_sectors (bio)) { + bdbm_error ("'hlm_req->lpa (%llu) * nr_secs_per_fp (%llu) - bio->bi_sector (%lu)' (%llu) > bio_sectors (bio) (%u)", + hlm_req->lpa, nr_secs_per_fp, bio->bi_sector, + hlm_req->lpa * nr_secs_per_fp - bio->bi_sector, + bio_sectors (bio)); + hlm_req->len = 0; + } else { + hlm_req->len = + (bio_sectors (bio) - (hlm_req->lpa * nr_secs_per_fp - bio->bi_sector)) / nr_secs_per_fp; + } + } + hlm_req->nr_done_reqs = 0; + hlm_req->kpg_flags = NULL; + hlm_req->pptr_kpgs = NULL; /* no data */ + hlm_req->ptr_host_req = (void*)bio; + hlm_req->ret = 0; + + return hlm_req; +} + +static bdbm_hlm_req_t* __blkio_create_hlm_rw_req ( + bdbm_drv_info_t* bdi, + struct bio* bio) +{ + struct bio_vec *bvec = NULL; + bdbm_hlm_req_t* hlm_req = NULL; + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + + uint32_t loop = 0; + uint32_t kpg_loop = 0; + uint32_t bvec_offset = 0; + uint64_t nr_secs_per_fp = 0; + uint64_t nr_secs_per_kp = 0; + uint32_t nr_kp_per_fp = 0; + + /* get # of sectors per flash page */ + nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; + nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; + nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ + + /* create bdbm_hm_req_t */ + if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic + (sizeof (bdbm_hlm_req_t))) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + return NULL; + } + + /* get a bio direction */ + if (bio_data_dir (bio) == READ || bio_data_dir (bio) == READA) { + hlm_req->req_type = REQTYPE_READ; + } else if (bio_data_dir (bio) == WRITE) { + hlm_req->req_type = REQTYPE_WRITE; + } else { + bdbm_error ("the direction of a bio is invalid (%lu)", bio_data_dir (bio)); + goto fail_req; + } + + /* make a high-level request for READ or WRITE */ + hlm_req->lpa = (bio->bi_sector / nr_secs_per_fp); + hlm_req->len = (bio->bi_sector + bio_sectors (bio) + nr_secs_per_fp - 1) / nr_secs_per_fp - hlm_req->lpa; + hlm_req->nr_done_reqs = 0; + hlm_req->ptr_host_req = (void*)bio; + hlm_req->ret = 0; + /*bdbm_spin_lock_init (&hlm_req->lock);*/ + if ((hlm_req->pptr_kpgs = (uint8_t**)bdbm_malloc_atomic + (sizeof(uint8_t*) * hlm_req->len * nr_kp_per_fp)) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + goto fail_req; + } + if ((hlm_req->kpg_flags = (uint8_t*)bdbm_malloc_atomic + (sizeof(uint8_t) * hlm_req->len * nr_kp_per_fp)) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + goto fail_flags; + } + /* kpg_flags is set to MEMFLAG_NOT_SET (0) */ + + /* get or alloc pages */ + bio_for_each_segment (bvec, bio, loop) { + /* check some error cases */ + if (bvec->bv_offset != 0) { + bdbm_warning ("'bv_offset' is not 0 (%d)", bvec->bv_offset); + /*goto fail_grab_pages;*/ + } + +next_kpg: + /* assign a new page */ + if ((hlm_req->lpa * nr_kp_per_fp + kpg_loop) != (bio->bi_sector + bvec_offset) / nr_secs_per_kp) { + hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); + hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; + kpg_loop++; + goto next_kpg; + } + + if ((hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)page_address (bvec->bv_page)) != NULL) { + hlm_req->kpg_flags[kpg_loop] = MEMFLAG_KMAP_PAGE; + } else { + bdbm_error ("kmap failed"); + goto fail_grab_pages; + } + + bvec_offset += nr_secs_per_kp; + kpg_loop++; + } + + /* get additional free pages if necessary */ + while (kpg_loop < hlm_req->len * nr_kp_per_fp) { + hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); + hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; + kpg_loop++; + } + + return hlm_req; + +fail_grab_pages: + /* release grabbed pages */ + for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { + if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE) { + bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); + } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE) { + } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { + bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); + } + } + bdbm_free_atomic (hlm_req->kpg_flags); + +fail_flags: + bdbm_free_atomic (hlm_req->pptr_kpgs); + +fail_req: + bdbm_free_atomic (hlm_req); + + return NULL; +} + +static bdbm_hlm_req_t* __blkio_create_hlm_req ( + bdbm_drv_info_t* bdi, + struct bio* bio) +{ + bdbm_hlm_req_t* hlm_req = NULL; + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + uint64_t nr_secs_per_kp = 0; + + /* get # of sectors per flash page */ + nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; + + /* see if some error cases */ + if (bio->bi_sector % nr_secs_per_kp != 0) { + bdbm_warning ("kernel pages are not aligned with disk sectors (%lu mod %llu != 0)", + bio->bi_sector , nr_secs_per_kp); + /* go ahead */ + } + if (KERNEL_PAGE_SIZE > np->page_main_size) { + bdbm_error ("kernel page (%lu) is larger than flash page (%llu)", + KERNEL_PAGE_SIZE, np->page_main_size); + return NULL; + } + + /* create 'hlm_req' */ + if (bio->bi_rw & REQ_DISCARD) { + /* make a high-level request for TRIM */ + hlm_req = __blkio_create_hlm_trim_req (bdi, bio); + } else { + /* make a high-level request for READ or WRITE */ + hlm_req = __blkio_create_hlm_rw_req (bdi, bio); + } + + /* start a stopwatch */ + if (hlm_req) { + bdbm_stopwatch_start (&hlm_req->sw); + } + + return hlm_req; +} + +static void __blkio_delete_hlm_req ( + bdbm_drv_info_t* bdi, + bdbm_hlm_req_t* hlm_req) +{ + bdbm_device_params_t* np = NULL; + uint32_t kpg_loop = 0; + uint32_t nr_kp_per_fp = 0; + + np = BDBM_GET_DEVICE_PARAMS (bdi); + nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ + + /* temp */ + if (hlm_req->org_pptr_kpgs) { + hlm_req->pptr_kpgs = hlm_req->org_pptr_kpgs; + hlm_req->kpg_flags = hlm_req->org_kpg_flags; + hlm_req->lpa--; + hlm_req->len++; + } + /* end */ + + /* free or unmap pages */ + if (hlm_req->kpg_flags != NULL && hlm_req->pptr_kpgs != NULL) { + for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { + if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE_DONE) { + bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); + } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE_DONE) { + } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { + bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); + } + } + } + + /* release other stuff */ + if (hlm_req->kpg_flags != NULL) + bdbm_free_atomic (hlm_req->kpg_flags); + if (hlm_req->pptr_kpgs != NULL) + bdbm_free_atomic (hlm_req->pptr_kpgs); + bdbm_free_atomic (hlm_req); +} + +#ifdef ENABLE_DISPLAY +static void __blkio_display_req ( + bdbm_drv_info_t* bdi, + bdbm_hlm_req_t* hlm_req) +{ + bdbm_ftl_inf_t* ftl = (bdbm_ftl_inf_t*)BDBM_GET_FTL_INF(bdi); + uint64_t seg_no = 0; + + if (ftl->get_segno) { + seg_no = ftl->get_segno (bdi, hlm_req->lpa); + } + + switch (hlm_req->req_type) { + case REQTYPE_TRIM: + bdbm_msg ("[%llu] TRIM\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); + break; + case REQTYPE_READ: + bdbm_msg ("[%llu] READ\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); + break; + case REQTYPE_WRITE: + bdbm_msg ("[%llu] WRITE\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); + break; + default: + bdbm_error ("invalid REQTYPE (%u)", hlm_req->req_type); + break; + } +} +#endif + +uint32_t blkio_open (bdbm_drv_info_t* bdi) +{ + uint32_t ret; + bdbm_blkio_private_t* p; + + /* create a private data structure */ + if ((p = (bdbm_blkio_private_t*)bdbm_malloc_atomic + (sizeof (bdbm_blkio_private_t))) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + return 1; + } + bdbm_sema_init (&p->host_lock); + atomic64_set (&p->nr_reqs, 0); + bdi->ptr_host_inf->ptr_private = (void*)p; + + /* register blueDBM */ + if ((ret = host_blkdev_register_device + (bdi, __host_blkio_make_request_fn)) != 0) { + bdbm_error ("failed to register blueDBM"); + bdbm_free_atomic (p); + return 1; + } + + return 0; +} + +void blkio_close (bdbm_drv_info_t* bdi) +{ + bdbm_blkio_private_t* p = NULL; + + p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); + + /* wait for host reqs to finish */ + bdbm_msg ("wait for host reqs to finish"); + while (1) { + if (atomic64_read (&p->nr_reqs) == 0) + break; + schedule (); /* sleep */ + } + + /* unregister a block device */ + host_blkdev_unregister_block_device (bdi); + + /* free private */ + bdbm_free_atomic (p); +} + +void blkio_make_req (bdbm_drv_info_t* bdi, void* req) +{ + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); + bdbm_hlm_req_t* hlm_req = NULL; + struct bio* bio = (struct bio*)req; + + /* lock a global mutex -- this function must be finished as soon as possible */ + bdbm_sema_lock (&p->host_lock); + + /* see if the address range of bio is beyond storage space */ + if (bio->bi_sector + bio_sectors (bio) > np->device_capacity_in_byte / KERNEL_SECTOR_SIZE) { + bdbm_sema_unlock (&p->host_lock); + bdbm_error ("bio is beyond storage space (%lu > %llu)", + bio->bi_sector + bio_sectors (bio), + np->device_capacity_in_byte / KERNEL_SECTOR_SIZE); + bio_io_error (bio); + return; + } + + /* create a hlm_req using a bio */ + if ((hlm_req = __blkio_create_hlm_req (bdi, bio)) == NULL) { + bdbm_sema_unlock (&p->host_lock); + bdbm_error ("the creation of hlm_req failed"); + bio_io_error (bio); + return; + } + +#ifdef ENABLE_DISPLAY + /* display req info */ + __blkio_display_req (bdi, hlm_req); +#endif + + /* if success, increase # of host reqs before sending the request to hlm */ + atomic64_inc (&p->nr_reqs); + + /* NOTE: it would be possible that 'hlm_req' becomes NULL + * if 'bdi->ptr_hlm_inf->make_req' is success. */ + if (bdi->ptr_hlm_inf->make_req (bdi, hlm_req) != 0) { + bdbm_error ("'bdi->ptr_hlm_inf->make_req' failed"); + + /* decreate # of reqs */ + atomic64_dec (&p->nr_reqs); + if (atomic64_read (&p->nr_reqs) < 0) { + bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); + } + + /* finish a bio */ + __blkio_delete_hlm_req (bdi, hlm_req); + bio_io_error (bio); + } + + bdbm_sema_unlock (&p->host_lock); +} + +void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hlm_req) +{ + uint32_t ret; + struct bio* bio = NULL; + bdbm_blkio_private_t* p = NULL; + + /* unlock hlm_req's lock if it is available */ + if (hlm_req->done) + bdbm_sema_unlock (hlm_req->done); + + /* get a bio from hlm_req */ + bio = (struct bio*)hlm_req->ptr_host_req; + p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); + ret = hlm_req->ret; + + /* destroy hlm_req */ + __blkio_delete_hlm_req (bdi, hlm_req); + + /* get the result and end a bio */ + if (bio != NULL) { + if (ret == 0) bio_endio (bio, 0); + else bio_io_error (bio); + } + + /* decreate # of reqs */ + atomic64_dec (&p->nr_reqs); + if (atomic64_read (&p->nr_reqs) < 0) { + bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); + } +} + +#endif diff --git a/frontend/kernel_nvme/kmain.c b/frontend/kernel_nvme/kmain.c index d86925a..5fd7e40 100644 --- a/frontend/kernel_nvme/kmain.c +++ b/frontend/kernel_nvme/kmain.c @@ -24,295 +24,16 @@ THE SOFTWARE. #include #include -#include -#include -#include -#include #include "bdbm_drv.h" #include "debug.h" #include "blkio.h" #include "devices.h" -#include "umemory.h" - -#include -#include - -#define BITS_PER_SLICE 6 -#define BITS_PER_WU 7 -#define BITS_PER_DIE 6 - -#define USE_ASYNC bdbm_drv_info_t* _bdi = NULL; -struct hd_req { - bdbm_drv_info_t* bdi; - bdbm_llm_req_t* r; - int rw; - uint64_t die; - uint64_t block; - uint64_t wu; - uint8_t* kp_ptr; - void (*intr_handler)(void*); -}; - -void print_bio (struct bio* bio) -{ - /* - bdbm_msg ("bio->bi_iter.bi_sector = %d", (int)bio->bi_iter.bi_sector); - bdbm_msg ("bio->bi_iter.bi_size = %d", (int)bio->bi_iter.bi_size); - bdbm_msg ("bio->bi_rw = %d", (int)bio->bi_rw); - bdbm_msg ("bio->bi_private = %p", bio->bi_private); - bdbm_msg ("bio->bi_end_io = %p", bio->bi_end_io); - */ -} - -static void nvme_nvm_end_io (struct request *rq, int error) -{ - struct hd_req* hdr = rq->end_io_data; - - if (hdr->rw == READ) { - bdbm_msg (" ==> %u %u %u %u", hdr->kp_ptr[0], hdr->kp_ptr[1], hdr->kp_ptr[2], hdr->kp_ptr[3]); - } - - if (rq->bio && rq->bio->bi_end_io) { - rq->bio->bi_end_io (rq->bio); - } - if (rq->cmd) - kfree (rq->cmd); - if (hdr) - kfree (hdr); - if (hdr->kp_ptr) - kfree (hdr->kp_ptr); - if (rq) - blk_mq_free_request(rq); -} - -struct request *nvme_alloc_request(struct request_queue *q, - struct nvme_command *cmd, unsigned int flags) -{ - bool write = cmd->common.opcode & 1; - struct request *req; - - req = blk_mq_alloc_request(q, write, flags); - if (IS_ERR(req)) - return req; - - req->cmd_type = REQ_TYPE_DRV_PRIV; - req->__data_len = 0; - req->__sector = (sector_t) -1; - req->bio = req->biotail = NULL; - - req->cmd = (unsigned char *)cmd; - req->cmd_len = sizeof(struct nvme_command); - req->special = (void *)0; - - return req; -} - -int simple_read ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - struct bio* bio = NULL; - struct request *rq; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | - hdr->wu << (BITS_PER_SLICE); - - bdbm_msg ("READ: %llu %llu %llu => %u (%x)", - hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); - - /* [STEP1] setup bio */ - /*bio = bio_map_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO);*/ - bio = bio_copy_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO, 1); - bio->bi_rw = READ; - print_bio (bio); - - /* [STEP2] alloc request */ - rq = blk_mq_alloc_request(bdi->q, 0, 0); - if (IS_ERR(rq)) { - bdbm_error ("blk_mq_alloc_request"); - bdbm_bug_on (1); - return -ENOMEM; - } - rq->cmd_type = REQ_TYPE_DRV_PRIV; - rq->ioprio = bio_prio(bio); - - if (bio_has_data(bio)) { - rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); - } - rq->__data_len = bio->bi_iter.bi_size; - rq->bio = rq->biotail = bio; - - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - - /* [STEP3] setup cmd */ - cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ - cmd->rw.flags = 0; - cmd->rw.nsid = 1; - cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd->rw.length = 63; /* it must be the unit of 255 */ - cmd->rw.control = 0; - cmd->rw.dsmgmt = 0; - cmd->rw.reftag = 0; - cmd->rw.apptag = 0; - cmd->rw.appmask = 0; - -#ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - bdbm_msg (" ==> %u %u %u %u", hdr->kp_ptr[0], hdr->kp_ptr[1], hdr->kp_ptr[2], hdr->kp_ptr[3]); - bio->bi_end_io (bio); - rq->end_io_data = hdr; - nvme_nvm_end_io (rq, 0); -#endif - - return 0; -} - -int simple_write ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - struct bio* bio = NULL; - struct request *rq; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | - hdr->wu << (BITS_PER_SLICE); - - hdr->kp_ptr[0] = hdr->block; - hdr->kp_ptr[1] = hdr->die; - hdr->kp_ptr[2] = hdr->wu; - bdbm_msg ("WRITE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); - - /* setup bio */ - /*bio = bio_map_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO);*/ - bio = bio_copy_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO, 0); - bio->bi_rw = WRITE; - print_bio (bio); - - /* allocate request */ - rq = blk_mq_alloc_request (bdi->q, 1, 0); - if (IS_ERR(rq)) { - bdbm_error ("blk_mq_alloc_request"); - bdbm_bug_on (1); - return -ENOMEM; - } - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - rq->ioprio = bio_prio(bio); - if (bio_has_data(bio)) - rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); - rq->__data_len = bio->bi_iter.bi_size; - rq->bio = rq->biotail = bio; - - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - - /* setup cmd */ - cmd->rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ - cmd->rw.flags = 0; - cmd->rw.nsid = 1; - cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd->rw.length = 63; /* it must be the unit of 255 */ - cmd->rw.control = 0; - cmd->rw.dsmgmt = 0; - cmd->rw.reftag = 0; - cmd->rw.apptag = 0; - cmd->rw.appmask = 0; - -#ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - bio->bi_end_io (bio); - rq->end_io_data = hdr; - nvme_nvm_end_io (rq, 0); -#endif - - return 0; -} - -int simple_erase ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - struct request *rq; - struct bio* bio = NULL; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - __u32 req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE); - __le64* ubuffer_64 = (__le64*)hdr->kp_ptr; - - bdbm_msg ("ERASE: %llu %llu => %u (%x)", hdr->block, hdr->die, req_ofs, req_ofs); - - ubuffer_64[1] = req_ofs; - - /* setup bio */ - /*bio = bio_map_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO);*/ - bio = bio_copy_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO, 0); - bio->bi_rw = WRITE; - print_bio (bio); - - /* alloc request */ - rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) { - bdbm_error ("blk_mq_alloc_request"); - bdbm_bug_on (1); - return -ENOMEM; - } - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - rq->ioprio = bio_prio(bio); - if (bio_has_data(bio)) - rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); - rq->__data_len = bio->bi_iter.bi_size; - rq->bio = rq->biotail = bio; - - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - - /* setup cmd */ - cmd->common.opcode = 9; - cmd->common.flags = 0; - cmd->common.nsid = 1; - cmd->common.cdw2[0] = 0; - cmd->common.cdw2[1] = 0; - cmd->common.cdw10[0] = 0; - cmd->common.cdw10[1] = 4; - cmd->common.cdw10[2] = 0; - cmd->common.cdw10[3] = 0; - cmd->common.cdw10[4] = 0; - cmd->common.cdw10[5] = 0; - -#ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - bio->bi_end_io (bio); - rq->end_io_data = hdr; - nvme_nvm_end_io (rq, 0); -#endif - - return 0; -} - -int bdbm_register (struct request_queue* q, char* disk_name) +static int __init bdbm_drv_init (void) { - bdbm_msg ("bdbm_register (%s)", disk_name); - /* create bdi with default parameters */ if ((_bdi = bdbm_drv_create ()) == NULL) { bdbm_error ("[kmain] bdbm_drv_create () failed"); @@ -331,38 +52,16 @@ int bdbm_register (struct request_queue* q, char* disk_name) return -ENXIO; } - /* for nvme */ - _bdi->q = q; - if (disk_name) - strcpy (_bdi->disk_name, disk_name); - else - strcpy (_bdi->disk_name, "blueDBM"); - /* end */ - /* run it */ if (bdbm_drv_run (_bdi) != 0) { bdbm_error ("[kmain] bdbm_drv_run () failed"); return -ENXIO; } -#if 0 - /* send simple read request */ - bdbm_msg ("begin - simple_read\n"); - { - int i = 0; - for (i = 0; i < 1000; i++) { - simple_read (_bdi); - } - } - bdbm_msg ("done - simple_read\n"); - /* end */ -#endif - return 0; } -EXPORT_SYMBOL(bdbm_register); -void bdbm_unregister (char* disk_name) +static void __exit bdbm_drv_exit(void) { /* stop running layers */ bdbm_drv_close (_bdi); @@ -372,143 +71,6 @@ void bdbm_unregister (char* disk_name) /* remove bdbm_drv */ bdbm_drv_destroy (_bdi); - - _bdi = NULL; - - bdbm_msg ("bdbm_register (%s)", disk_name); -} -EXPORT_SYMBOL(bdbm_unregister); - - -struct user_cmd { - int die; - int block; - int wu; -}; - -#define TEST_IOCTL_READ _IO('N', 0x01) -#define TEST_IOCTL_WRITE _IO('N', 0x02) -#define TEST_IOCTL_ERASE _IO('N', 0x03) - -#if 0 -static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) -{ - struct user_cmd c; - struct hd_req* hc = kzalloc (sizeof (struct hd_req), GFP_KERNEL); - - if (_bdi == NULL) - return 0; - - copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); - - hc->bdi = _bdi; - hc->r = NULL; - hc->die = c.die; - hc->block = c.block; - hc->wu = c.wu; - hc->kp_ptr = kzalloc (4096*64, GFP_KERNEL); - hc->intr_handler = NULL; - - switch (cmd) { - case TEST_IOCTL_READ: - hc->rw = READ; - simple_read (_bdi, hc); - break; - case TEST_IOCTL_WRITE: - hc->rw = WRITE; - simple_write (_bdi, hc); - break; - case TEST_IOCTL_ERASE: - hc->rw = 0xff; - simple_erase (_bdi, hc); - break; - default: - bdbm_msg ("default"); - break; - } - - return 0; -} -#endif - -static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) -{ - struct user_cmd c; - struct hd_req* hc = NULL; - int die = 0; - - if (_bdi == NULL) - return 0; - - copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); - - for (die = 0; die < 64; die++) { - struct hd_req* hc = kzalloc (sizeof (struct hd_req), GFP_KERNEL); - - hc->bdi = _bdi; - hc->r = NULL; - hc->die = die; - hc->block = c.block; - hc->wu = c.wu; - hc->kp_ptr = kzalloc (4096*64, GFP_KERNEL); - hc->intr_handler = NULL; - - switch (cmd) { - case TEST_IOCTL_READ: - hc->rw = READ; - simple_read (_bdi, hc); - break; - case TEST_IOCTL_WRITE: - hc->rw = WRITE; - simple_write (_bdi, hc); - break; - case TEST_IOCTL_ERASE: - hc->rw = 0xff; - simple_erase (_bdi, hc); - break; - default: - bdbm_msg ("default"); - break; - } - } - - return 0; -} - - -static const struct file_operations _ctl_fops = { - .open = nonseekable_open, - .unlocked_ioctl = nvm_ctl_ioctl, - .owner = THIS_MODULE, -}; - -static struct miscdevice _nvm_misc = { - .minor = MISC_DYNAMIC_MINOR, - .name = "kernel_nvme", - .nodename = "kernel_nvme/control", - .fops = &_ctl_fops, -}; - -MODULE_ALIAS_MISCDEV(MISC_DYNAMIC_MINOR); - -static int __init bdbm_drv_init (void) -{ - int ret; - - ret = misc_register(&_nvm_misc); - if (ret) - pr_err("nvm: misc_register failed for control device"); - - /*bdbm_register (NULL, NULL);*/ - - return 0; -} - -static void __exit bdbm_drv_exit(void) -{ - misc_deregister(&_nvm_misc); - - /*bdbm_unregister(NULL);*/ } MODULE_AUTHOR ("Sungjin Lee "); diff --git a/frontend/kernel_nvme/log b/frontend/kernel_nvme/log new file mode 100644 index 0000000..04a65ab --- /dev/null +++ b/frontend/kernel_nvme/log @@ -0,0 +1,79 @@ +make[1]: Entering directory '/usr/src/linux-headers-4.5.3-040503-generic' + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/kmain.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/blkdev.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/blkio.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/ftl_params.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/pmu.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/hlm_nobuf.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/llm_mq.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/abm.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.o +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c: In function ‘bdbm_page_ftl_create’: +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c:209:18: warning: unused variable ‘j’ [-Wunused-variable] + uint32_t i = 0, j = 0; + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c:209:11: warning: unused variable ‘i’ [-Wunused-variable] + uint32_t i = 0, j = 0; + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c: At top level: +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c:1165:13: warning: ‘__bdbm_page_mark_it_dead’ defined but not used [-Wunused-function] + static void __bdbm_page_mark_it_dead ( + ^ + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.o +In file included from include/linux/printk.h:6:0, + from include/linux/kernel.h:13, + from include/linux/list.h:8, + from include/linux/module.h:9, + from /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:26: +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: In function ‘__bdbm_block_ftl_is_allocated’: +include/linux/kern_levels.h:4:18: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘uint64_t {aka long long unsigned int}’ [-Wformat=] + #define KERN_SOH "\001" /* ASCII Start Of Header */ + ^ +include/linux/kern_levels.h:13:19: note: in expansion of macro ‘KERN_SOH’ + #define KERN_INFO KERN_SOH "6" /* informational */ + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../include/debug.h:32:11: note: in expansion of macro ‘KERN_INFO’ + printk(KERN_INFO "bdbm: " fmt "\n", ##__VA_ARGS__); \ + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:342:3: note: in expansion of macro ‘bdbm_msg’ + bdbm_msg ("oops! # of allocated blocks per segment must be 0 or %d (%d)", + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: In function ‘bdbm_block_ftl_get_free_ppa’: +include/linux/kern_levels.h:4:18: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int64_t {aka long long int}’ [-Wformat=] + #define KERN_SOH "\001" /* ASCII Start Of Header */ + ^ +include/linux/kern_levels.h:13:19: note: in expansion of macro ‘KERN_SOH’ + #define KERN_INFO KERN_SOH "6" /* informational */ + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../include/debug.h:32:11: note: in expansion of macro ‘KERN_INFO’ + printk(KERN_INFO "bdbm: " fmt "\n", ##__VA_ARGS__); \ + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:466:4: note: in expansion of macro ‘bdbm_msg’ + bdbm_msg ("[%llu] [OVERWRITE] this should not occur (rw_pg_ofs:%d page_ofs:%llu)", + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: In function ‘__bdbm_block_ftl_do_gc_block_merge’: +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:885:14: warning: unused variable ‘k’ [-Wunused-variable] + uint64_t j, k, nr_valid_pgs = 0, nr_trim_pgs = 0; + ^ +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: At top level: +/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:1149:13: warning: ‘__bdbm_block_mark_it_dead’ defined but not used [-Wunused-function] + static void __bdbm_block_mark_it_dead ( + ^ + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/queue/queue.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/queue/prior_queue.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/queue/rd_prior_queue.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/hlm_reqs_pool.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../devices/common/dev_params.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/utime.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/ufile.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/uthread.o + CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/umemory.o + LD [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.o + Building modules, stage 2. + MODPOST 1 modules +WARNING: "bdbm_dm_init" [/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko] undefined! +WARNING: "bdbm_dm_exit" [/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko] undefined! +WARNING: "bdbm_dm_get_inf" [/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko] undefined! + CC /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.mod.o + LD [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko +make[1]: Leaving directory '/usr/src/linux-headers-4.5.3-040503-generic' diff --git a/frontend/kernel_nvme/mount_ext4.sh b/frontend/kernel_nvme/mount_ext4.sh index 43cabc7..2aa2bc6 100755 --- a/frontend/kernel_nvme/mount_ext4.sh +++ b/frontend/kernel_nvme/mount_ext4.sh @@ -1,5 +1,14 @@ -#sudo mkfs -t ext4 -b 4096 /dev/nvme0n1 -#sudo mount \-t ext4 \-o discard /dev/nvme0n1 /media/blueDBM +sudo mkdir -p /usr/share/bdbm_drv +sudo touch /usr/share/bdbm_drv/ftl.dat +sudo touch /usr/share/bdbm_drv/dm.dat +sudo insmod risa_dev_ramdrive.ko +#sudo insmod risa_dev_ramdrive_timing.ko +#sudo insmod risa_dev_ramdrive_intr.ko +#sudo insmod risa_dev_bluedbm.ko +#sudo insmod bdbm_drv_page.ko +sudo insmod bdbm_drv.ko +sudo ./bdbm_format /dev/blueDBM sudo mkfs -t ext4 -b 4096 /dev/blueDBM sudo mount \-t ext4 \-o discard /dev/blueDBM /media/blueDBM +#sudo mount \-t ext4 /dev/blueDBM /media/blueDBM diff --git a/frontend/kernel_nvme/register.sh b/frontend/kernel_nvme/register.sh deleted file mode 100755 index f74a1a9..0000000 --- a/frontend/kernel_nvme/register.sh +++ /dev/null @@ -1,11 +0,0 @@ -sudo mkdir -p /usr/share/bdbm_drv -sudo touch /usr/share/bdbm_drv/ftl.dat -sudo touch /usr/share/bdbm_drv/dm.dat - -sudo rmmod nvme -#sudo insmod risa_dev_ramdrive.ko -sudo insmod risa_dev_ramdrive_timing.ko -sudo insmod bdbm_drv.ko -sudo insmod ../../../kernel_4.5.3/nvme/nvme.ko -#sudo mkfs -t ext4 -b 4096 /dev/nvme0n1 -#sudo mount \-t ext4 \-o discard /dev/nvme0n1 /media/blueDBM diff --git a/frontend/kernel_nvme/unregister.sh b/frontend/kernel_nvme/unregister.sh deleted file mode 100755 index ed5256e..0000000 --- a/frontend/kernel_nvme/unregister.sh +++ /dev/null @@ -1,5 +0,0 @@ -sudo umount /media/blueDBM -sudo rmmod nvme -sudo rmmod bdbm_drv -sudo rmmod risa_dev_* -#sudo rmmod f2fs diff --git a/frontend/nvme/libftl b/frontend/nvme/libftl index a950e3b004a0117bc59c49a3e16ef7fae71aeddc..55deaf820af10c231e00c60d579d4a7e260775b4 100755 GIT binary patch literal 250264 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%0D% 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 JvhlU({{eH7bzuMi literal 256032 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
M<8ZOFnn@=Z7s$hfD!^7=KDhq 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
5n<9D-)6yS}Xda>=IrVua`$=*2kQ86wBe?x;_ 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 diff --git a/frontend/user/Makefile b/frontend/user/Makefile index 964dd7a..6d2cd54 100644 --- a/frontend/user/Makefile +++ b/frontend/user/Makefile @@ -23,8 +23,7 @@ CFLAGS += -D HASH_BLOOM=20 \ -D USE_PMU \ # -D USE_NEW_RMW \ -#DMLIB := ../../devices/libramdrive/libramdrive.a -DMLIB := ../../devices/libdummy/libdummy.a +DMLIB := ../../devices/libramdrive/libramdrive.a LIBFTL := libftl.a SRCS := \ diff --git a/frontend/user/userio.c b/frontend/user/userio.c index 6297145..f1b4ed1 100644 --- a/frontend/user/userio.c +++ b/frontend/user/userio.c @@ -202,11 +202,11 @@ void userio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req) bdbm_blkio_req_t* r = (bdbm_blkio_req_t*)req->blkio_req; /* remove blkio_req */ + /* { int i = 0; for (i = 0; i < r->bi_bvec_cnt; i++) { if (bdbm_is_read (r->bi_rw)) { - /* if (r->bi_bvec_ptr[i][0] != 0x0A || r->bi_bvec_ptr[i][1] != 0x0B || r->bi_bvec_ptr[i][2] != 0x0C) { @@ -216,12 +216,12 @@ void userio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req) r->bi_bvec_ptr[i][1], r->bi_bvec_ptr[i][2]); } - */ } bdbm_free (r->bi_bvec_ptr[i]); } bdbm_free (r); } + */ /* destroy hlm_req */ bdbm_hlm_reqs_pool_free_item (p->hlm_reqs_pool, req); diff --git a/ftl/hlm_nobuf.c b/ftl/hlm_nobuf.c index eaae86e..f4ac982 100644 --- a/ftl/hlm_nobuf.c +++ b/ftl/hlm_nobuf.c @@ -61,10 +61,8 @@ bdbm_hlm_inf_t _hlm_nobuf_inf = { /* data structures for hlm_nobuf */ typedef struct { bdbm_hlm_req_t tmp_hr; - bdbm_sema_t die_lock[64]; } bdbm_hlm_nobuf_private_t; -extern bdbm_drv_info_t* _bdi; /* functions for hlm_nobuf */ uint32_t hlm_nobuf_create (bdbm_drv_info_t* bdi) @@ -81,16 +79,6 @@ uint32_t hlm_nobuf_create (bdbm_drv_info_t* bdi) /* keep the private structure */ bdi->ptr_hlm_inf->ptr_private = (void*)p; - - { - int i = 0; - for (i = 0; i < 64; i++) { - bdbm_sema_init (&p->die_lock[i]); - } - } - - _bdi = bdi; - return 0; } @@ -114,19 +102,8 @@ uint32_t __hlm_nobuf_make_trim_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* ptr_hl return 0; } -uint32_t hynix_dumbssd_send_cmd ( - bdbm_drv_info_t* bdi, - bdbm_llm_req_t* r, - void (*intr_handler)(void*)); - -void intr_handler(void* arg) -{ - _bdi->ptr_hlm_inf->end_req (_bdi, arg); -} - uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) { - bdbm_hlm_nobuf_private_t* p = BDBM_HLM_PRIV(bdi); bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS(bdi); bdbm_ftl_inf_t* ftl = BDBM_GET_FTL_INF(bdi); bdbm_llm_req_t* lr = NULL; @@ -192,28 +169,13 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) } /* (3) send llm_req to llm */ -#if 1 if (bdi->ptr_llm_inf->make_reqs == NULL) { /* send individual llm-reqs to llm */ bdbm_hlm_for_each_llm_req (lr, hr, i) { -#if 0 if (bdi->ptr_llm_inf->make_req (bdi, lr) != 0) { bdbm_error ("oops! make_req () failed"); bdbm_bug_on (1); } -#else - /*bdbm_sema_lock (&lr->done);*/ - bdbm_sema_lock (&p->die_lock[lr->phyaddr.channel_no]); - bdbm_msg ("submit to %llu (%llu %llu %llu %llu)", - lr->phyaddr.channel_no, - lr->phyaddr.channel_no, - lr->phyaddr.chip_no, - lr->phyaddr.block_no, - lr->phyaddr.page_no); - hynix_dumbssd_send_cmd (bdi, lr, intr_handler); - /*bdbm_sema_lock (&lr->done);*/ - /*bdbm_sema_unlock (&lr->done);*/ -#endif } } else { /* send a bulk of llm-reqs to llm if make_reqs is supported */ @@ -222,26 +184,6 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) bdbm_bug_on (1); } } -#else - /* This is just for a test with Dumb NVME devices */ - /* send a bulk of llm-reqs to llm if make_reqs is supported */ - /* - if (bdi->ptr_llm_inf->make_reqs (bdi, hr) != 0) { - bdbm_error ("oops! make_reqs () failed"); - bdbm_bug_on (1); - } - */ - - if (bdi->ptr_llm_inf->make_reqs == NULL) { - /* send individual llm-reqs to llm */ - bdbm_hlm_for_each_llm_req (lr, hr, i) { - if (bdi->ptr_llm_inf->make_req (bdi, lr) != 0) { - bdbm_error ("oops! make_req () failed"); - bdbm_bug_on (1); - } - } - } -#endif bdbm_bug_on (hr->nr_llm_reqs != i); @@ -340,11 +282,8 @@ void __hlm_nobuf_end_blkio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) /* increase # of reqs finished */ atomic64_inc (&hr->nr_llm_reqs_done); - lr->req_type |= REQTYPE_DONE; - /*bdbm_msg (" -- %ld/%llu", atomic64_read (&hr->nr_llm_reqs_done), hr->nr_llm_reqs);*/ - if (atomic64_read (&hr->nr_llm_reqs_done) == hr->nr_llm_reqs) { /* finish the host request */ bdi->ptr_host_inf->end_req (bdi, hr); @@ -368,16 +307,7 @@ void hlm_nobuf_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) if (bdbm_is_gc (lr->req_type)) { __hlm_nobuf_end_gcio_req (bdi, lr); } else { - bdbm_hlm_nobuf_private_t* p = BDBM_HLM_PRIV(bdi); - /*bdbm_sema_unlock (&lr->done);*/ - bdbm_msg ("done - 1: %llu (%llu %llu %llu %llu)", - lr->phyaddr.channel_no, - lr->phyaddr.channel_no, - lr->phyaddr.chip_no, - lr->phyaddr.block_no, - lr->phyaddr.page_no); __hlm_nobuf_end_blkio_req (bdi, lr); - bdbm_sema_unlock (&p->die_lock[lr->phyaddr.channel_no]); } } diff --git a/ftl/hlm_reqs_pool.c b/ftl/hlm_reqs_pool.c index cd8e053..c601334 100644 --- a/ftl/hlm_reqs_pool.c +++ b/ftl/hlm_reqs_pool.c @@ -41,7 +41,7 @@ THE SOFTWARE. #include "umemory.h" -#define DEFAULT_POOL_SIZE 16 +#define DEFAULT_POOL_SIZE 128 #define DEFAULT_POOL_INC_SIZE DEFAULT_POOL_SIZE / 5 bdbm_hlm_reqs_pool_t* bdbm_hlm_reqs_pool_create ( @@ -160,7 +160,6 @@ bdbm_hlm_req_t* bdbm_hlm_reqs_pool_get_item ( struct list_head* pos = NULL; bdbm_hlm_req_t* item = NULL; - bdbm_msg ("bdbm_hlm_reqs_pool_get_item - start"); bdbm_spin_lock (&pool->lock); again: @@ -199,14 +198,11 @@ bdbm_hlm_req_t* bdbm_hlm_reqs_pool_get_item ( list_add_tail (&item->list, &pool->used_list); bdbm_spin_unlock (&pool->lock); - - bdbm_msg ("bdbm_hlm_reqs_pool_get_item - end"); return item; fail: bdbm_spin_unlock (&pool->lock); - bdbm_msg ("bdbm_hlm_reqs_pool_get_item - end (fail)"); return NULL; } @@ -271,7 +267,6 @@ void hlm_reqs_pool_allocate_llm_reqs ( fo->data = (uint8_t*)bdbm_malloc_phy (8*BDBM_MAX_PAGES); else fo->data = (uint8_t*)bdbm_malloc (8*BDBM_MAX_PAGES); - bdbm_sema_init (&llm_reqs[i].done); } } @@ -424,7 +419,6 @@ static int __hlm_reqs_pool_create_read_req ( ptr_lr = &hr->llm_reqs[0]; for (i = 0; i < nr_llm_reqs; i++) { - /*for (i = 0; i < br->bi_bvec_cnt; i++) {*/ offset = pg_start % NR_KPAGES_IN(pool->map_unit); if (pool->in_place_rmw == 0) @@ -448,11 +442,7 @@ static int __hlm_reqs_pool_create_read_req ( ptr_lr++; } - //bdbm_bug_on (bvec_cnt != br->bi_bvec_cnt); - if (bvec_cnt != br->bi_bvec_cnt) { - bdbm_msg ("bvec_cnt: %llu, br->bi_bvec_cnt: %llu", - bvec_cnt, br->bi_bvec_cnt); - } + bdbm_bug_on (bvec_cnt != br->bi_bvec_cnt); /* intialize hlm_req */ hr->req_type = br->bi_rw; diff --git a/ftl/llm_mq.c b/ftl/llm_mq.c index 9564036..5dd9fd8 100644 --- a/ftl/llm_mq.c +++ b/ftl/llm_mq.c @@ -134,10 +134,6 @@ int __llm_mq_thread (void* arg) bdbm_warning ("oops! make_req failed"); } - if (cnt % 50000 == 0) { - bdbm_msg ("llm_make_req: %llu, %llu - done", cnt, bdbm_prior_queue_get_nr_items (p->q)); - } - cnt++; } } @@ -248,7 +244,7 @@ uint32_t llm_mq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) pmu_update_sw (bdi, r); /* wait until there are enough free slots in Q */ - while (bdbm_prior_queue_get_nr_items (p->q) > 96) { + while (bdbm_prior_queue_get_nr_items (p->q) >= 96) { bdbm_thread_yield (); } diff --git a/ftl/llm_noq.c b/ftl/llm_noq.c index 69395c3..9646591 100644 --- a/ftl/llm_noq.c +++ b/ftl/llm_noq.c @@ -41,7 +41,6 @@ THE SOFTWARE. #include "llm_noq.h" #include "pmu.h" -/*#define ENABLE_SEQ_DBG*/ /* llm interface */ bdbm_llm_inf_t _llm_noq_inf = { @@ -49,17 +48,13 @@ bdbm_llm_inf_t _llm_noq_inf = { .create = llm_noq_create, .destroy = llm_noq_destroy, .make_req = llm_noq_make_req, - /*.make_reqs = llm_noq_make_reqs,*/ - .make_reqs = NULL, + .make_reqs = llm_noq_make_reqs, .flush = llm_noq_flush, .end_req = llm_noq_end_req, }; struct bdbm_llm_noq_private { uint32_t dummy; -#if defined(ENABLE_SEQ_DBG) - bdbm_sema_t dbg_seq; -#endif }; uint32_t llm_noq_create (bdbm_drv_info_t* bdi) @@ -80,10 +75,6 @@ uint32_t llm_noq_create (bdbm_drv_info_t* bdi) /* keep the private structures for llm_nt */ bdi->ptr_llm_inf->ptr_private = (void*)p; -#if defined(ENABLE_SEQ_DBG) - bdbm_sema_init (&p->dbg_seq); -#endif - return 0; } @@ -100,34 +91,25 @@ void llm_noq_destroy (bdbm_drv_info_t* bdi) bdbm_free (p); } -uint32_t llm_noq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) +uint32_t llm_noq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req) { uint32_t ret; static uint64_t cnt = 0; -#if defined(ENABLE_SEQ_DBG) - struct bdbm_llm_noq_private* p = BDBM_LLM_PRIV(bdi); - bdbm_sema_lock (&p->dbg_seq); -#endif - /* just for display */ if (cnt % 50000 == 0) bdbm_msg ("llm_noq_make_req: %llu", cnt); cnt++; /* update pmu */ - /*pmu_update_sw (bdi, r);*/ - /*pmu_update_q (bdi, r);*/ - - bdbm_msg ("llm_noq_make_req"); + pmu_update_sw (bdi, llm_req); + pmu_update_q (bdi, llm_req); /* send a request to a device manager */ - if ((ret = bdi->ptr_dm_inf->make_req (bdi, r)) != 0) { + if ((ret = bdi->ptr_dm_inf->make_req (bdi, llm_req)) != 0) { /* handle error cases */ bdbm_error ("llm_make_req failed"); } - bdbm_msg ("llm_noq_make_req - done"); - return ret; } @@ -149,18 +131,13 @@ void llm_noq_flush (bdbm_drv_info_t* bdi) //struct bdbm_llm_noq_private* p = (struct bdbm_llm_noq_private*)BDBM_LLM_PRIV(bdi); } -void llm_noq_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) +void llm_noq_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req) { /* update pmu */ - /*pmu_update_tot (bdi, r);*/ - /*pmu_inc (bdi, r);*/ - -#if defined(ENABLE_SEQ_DBG) - struct bdbm_llm_noq_private* p = BDBM_LLM_PRIV(bdi); - bdbm_sema_unlock (&p->dbg_seq); -#endif + pmu_update_tot (bdi, llm_req); + pmu_inc (bdi, llm_req); /* finish a request */ - bdi->ptr_hlm_inf->end_req (bdi, r); + bdi->ptr_hlm_inf->end_req (bdi, llm_req); } diff --git a/ftl/llm_noq_lock.c b/ftl/llm_noq_lock.c index b3c803c..ace07de 100644 --- a/ftl/llm_noq_lock.c +++ b/ftl/llm_noq_lock.c @@ -43,10 +43,7 @@ THE SOFTWARE. /* llm interface */ -#if 0 bdbm_llm_inf_t _llm_noq_lock_inf = { -#endif -bdbm_llm_inf_t _llm_noq_inf = { .ptr_private = NULL, .create = llm_noq_lock_create, .destroy = llm_noq_lock_destroy, diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 24d60e6..a1f586b 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -134,10 +134,9 @@ typedef struct { /* max kernel pages per physical flash page */ #define BDBM_MAX_PAGES 1 -/*#define BDBM_MAX_PAGES 32*/ /* a bluedbm blockio request */ -#define BDBM_BLKIO_MAX_VECS 128 +#define BDBM_BLKIO_MAX_VECS 512 typedef struct { uint64_t bi_rw; /* REQTYPE_WRITE or REQTYPE_READ */ @@ -184,7 +183,7 @@ typedef struct { uint8_t ret; /* old for GC */ void* ptr_hlm_req; void* ptr_qitem; - bdbm_sema_t done; /* maybe used by applications that require direct notifications from an interrupt handler */ + bdbm_sema_t* done; /* maybe used by applications that require direct notifications from an interrupt handler */ /* logical / physical info */ bdbm_logaddr_t logaddr; @@ -381,12 +380,6 @@ struct _bdbm_drv_info_t { bdbm_llm_inf_t* ptr_llm_inf; bdbm_ftl_inf_t* ptr_ftl_inf; bdbm_perf_monitor_t pm; - - /* for nvme */ - struct request_queue* q; - struct gendisk *gd; - char disk_name[256]; - /* end */ }; /* functions for bdi creation, setup, run, and remove */ diff --git a/run/bonnie++/run_bonnie++.sh b/run/bonnie++/run_bonnie++.sh index 0c68393..7c42751 100755 --- a/run/bonnie++/run_bonnie++.sh +++ b/run/bonnie++/run_bonnie++.sh @@ -3,10 +3,10 @@ # for 2 GB sudo mkdir /media/blueDBM/1 sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/1 & -#sudo mkdir /media/blueDBM/2 -#sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/2 & -#sudo mkdir /media/blueDBM/3 -#sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/3 & +sudo mkdir /media/blueDBM/2 +sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/2 & +sudo mkdir /media/blueDBM/3 +sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/3 & # for 16 GB #sudo mkdir /media/blueDBM/1 diff --git a/run/postmark/postmark-config-1.cfg b/run/postmark/postmark-config-1.cfg index 78f4829..c380319 100644 --- a/run/postmark/postmark-config-1.cfg +++ b/run/postmark/postmark-config-1.cfg @@ -1,5 +1,5 @@ set transactions 20000 -set number 1000 +set number 10000 set location /media/blueDBM/1 set buffering true set size 5120 524288 diff --git a/run/postmark/postmark-config-2.cfg b/run/postmark/postmark-config-2.cfg index 74091ce..e233b7f 100644 --- a/run/postmark/postmark-config-2.cfg +++ b/run/postmark/postmark-config-2.cfg @@ -1,5 +1,5 @@ set transactions 20000 -set number 1000 +set number 10000 set location /media/blueDBM/2 set buffering true set size 5120 524288 diff --git a/run/postmark/postmark-config-3.cfg b/run/postmark/postmark-config-3.cfg index a8f8980..3cdc9fe 100644 --- a/run/postmark/postmark-config-3.cfg +++ b/run/postmark/postmark-config-3.cfg @@ -1,5 +1,5 @@ set transactions 20000 -set number 1000 +set number 10000 set location /media/blueDBM/3 set buffering true set size 5120 524288 From 3d3fc6851254e3877dcfc08a5069fbde438434b7 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Thu, 28 Jul 2016 15:39:58 -0400 Subject: [PATCH 12/51] hmmm --- common/bdbm_main.c | 2 +- common/utils/usync.h | 6 +- devices/common/dev_params.c | 29 +- devices/dragonfire/libdf.a | Bin 29106 -> 32370 bytes devices/ramdrive/Makefile | 1 + devices/ramdrive/dev_ramssd.c | 3 + devices/ramdrive/dm_ramdrive.c | 41 ++- devices/ramdrive_timing/Makefile | 1 + frontend/kernel_nvme/Makefile | 4 +- frontend/kernel_nvme/blkdev.c | 199 ++++++++++++- frontend/kernel_nvme/blkio.c | 440 +--------------------------- frontend/kernel_nvme/kmain.c | 442 ++++++++++++++++++++++++++++- frontend/kernel_nvme/log | 79 ------ frontend/kernel_nvme/mount_ext4.sh | 13 +- frontend/nvme/libftl | Bin 250264 -> 256032 bytes frontend/user/Makefile | 3 +- frontend/user/userio.c | 4 +- ftl/hlm_nobuf.c | 70 +++++ ftl/hlm_reqs_pool.c | 14 +- ftl/llm_mq.c | 6 +- ftl/llm_noq.c | 41 ++- ftl/llm_noq_lock.c | 3 + include/bdbm_drv.h | 11 +- run/bonnie++/run_bonnie++.sh | 8 +- run/postmark/postmark-config-1.cfg | 2 +- run/postmark/postmark-config-2.cfg | 2 +- run/postmark/postmark-config-3.cfg | 2 +- 27 files changed, 847 insertions(+), 579 deletions(-) delete mode 100644 frontend/kernel_nvme/log diff --git a/common/bdbm_main.c b/common/bdbm_main.c index 0c05844..5ab4763 100644 --- a/common/bdbm_main.c +++ b/common/bdbm_main.c @@ -61,7 +61,7 @@ THE SOFTWARE. //bdbm_ftl_inf_t _ftl_block_ftl, _ftl_dftl, _ftl_no_ftl; bdbm_ftl_inf_t _ftl_dftl, _ftl_no_ftl; bdbm_hlm_inf_t _hlm_dftl_inf, _hlm_buf_inf; -bdbm_llm_inf_t _llm_noq_inf; +/*bdbm_llm_inf_t _llm_noq_inf;*/ /* TEMP */ /* It creates bdi and setups bdi with default parameters. Users changes the diff --git a/common/utils/usync.h b/common/utils/usync.h index ec6e0e5..f055e0e 100644 --- a/common/utils/usync.h +++ b/common/utils/usync.h @@ -69,9 +69,11 @@ THE SOFTWARE. #define bdbm_spinlock_t spinlock_t #define bdbm_spin_lock_init(a) spin_lock_init(a) #define bdbm_spin_lock(a) spin_lock(a) -#define bdbm_spin_lock_irqsave(a,flag) spin_lock_irqsave(a,flag) +/*#define bdbm_spin_lock_irqsave(a,flag) spin_lock_irqsave(a,flag)*/ +#define bdbm_spin_lock_irqsave(a,flag) spin_lock(a) #define bdbm_spin_unlock(a) spin_unlock(a) -#define bdbm_spin_unlock_irqrestore(a,flag) spin_unlock_irqrestore(a,flag) +/*#define bdbm_spin_unlock_irqrestore(a,flag) spin_unlock_irqrestore(a,flag)*/ +#define bdbm_spin_unlock_irqrestore(a,flag) spin_unlock(a) #define bdbm_spin_lock_destory(a) diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index 87cd5bf..bfe002b 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -42,22 +42,35 @@ THE SOFTWARE. #include "umemory.h" #include "debug.h" +#if 0 enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, - //NAND_PAGE_OOB_SIZE = 64, /* for bdbm hardware */ - NAND_PAGE_OOB_SIZE = 8*BDBM_MAX_PAGES, - NR_PAGES_PER_BLOCK = 128, - NR_BLOCKS_PER_CHIP = 192/BDBM_MAX_PAGES, - //NR_BLOCKS_PER_CHIP = 8/BDBM_MAX_PAGES, - NR_CHIPS_PER_CHANNEL = 4, - //NR_CHIPS_PER_CHANNEL = 8, - NR_CHANNELS = 8, + NAND_PAGE_OOB_SIZE = 0, /* P2L mapping is not supported yet */ + NR_PAGES_PER_BLOCK = 64, /* 7-bit (BITS_FOR_WU) */ + NR_BLOCKS_PER_CHIP = 128, /* 8-bit (BITS_FOR_VBLK) */ + NR_CHIPS_PER_CHANNEL = 1, /* set to 1 by default */ + NR_CHANNELS = 64, /* 6-bit (BITS_FOR_DIE) */ NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ NAND_PAGE_PROG_TIME_US = 500, /* 1.3ms */ NAND_PAGE_READ_TIME_US = 100, /* 100us */ NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ }; +#endif + +enum BDBM_DEFAULT_NAND_PARAMS { + NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, + NAND_PAGE_OOB_SIZE = 8*BDBM_MAX_PAGES, + NR_PAGES_PER_BLOCK = 64, + NR_BLOCKS_PER_CHIP = 128, + NR_CHIPS_PER_CHANNEL = 1, + NR_CHANNELS = 4, + NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ + NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ + NAND_PAGE_PROG_TIME_US = 100000, /* 1.3ms */ + NAND_PAGE_READ_TIME_US = 1000, /* 100us */ + NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ +}; int _param_nr_channels = NR_CHANNELS; int _param_nr_chips_per_channel = NR_CHIPS_PER_CHANNEL; diff --git a/devices/dragonfire/libdf.a b/devices/dragonfire/libdf.a index b2bcd371ce767180316ed45baef570f2cd6e3aaf..304f460c1628f03a1813d942eeea23e14bd22ccc 100644 GIT binary patch literal 32370 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 literal 29106 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 H{PsTqx$sPi diff --git a/devices/ramdrive/Makefile b/devices/ramdrive/Makefile index e33370b..3cb5a41 100644 --- a/devices/ramdrive/Makefile +++ b/devices/ramdrive/Makefile @@ -27,6 +27,7 @@ risa_dev_ramdrive-y := \ $(DEV_COMMON)/dev_stub.o \ dev_ramssd.o \ dm_ramdrive.o \ + hynix_dumbssd.o \ obj-m := risa_dev_ramdrive.o diff --git a/devices/ramdrive/dev_ramssd.c b/devices/ramdrive/dev_ramssd.c index 8960e3a..acde3b5 100644 --- a/devices/ramdrive/dev_ramssd.c +++ b/devices/ramdrive/dev_ramssd.c @@ -462,7 +462,10 @@ void __ramssd_cmd_done (dev_ramssd_info_t* ri) bdbm_spin_unlock (&ri->ramssd_lock); /* call the interrupt handler */ +#if 1 + bdbm_msg ("ramdrive -- callback"); ri->intr_handler (ptr_req); +#endif } else { bdbm_spin_unlock (&ri->ramssd_lock); } diff --git a/devices/ramdrive/dm_ramdrive.c b/devices/ramdrive/dm_ramdrive.c index b1d5363..1021b67 100644 --- a/devices/ramdrive/dm_ramdrive.c +++ b/devices/ramdrive/dm_ramdrive.c @@ -41,6 +41,8 @@ THE SOFTWARE. #include "utime.h" #include "umemory.h" +#include "hynix_dumbssd.h" + /* interface for dm */ bdbm_dm_inf_t _bdbm_dm_inf = { @@ -55,9 +57,14 @@ bdbm_dm_inf_t _bdbm_dm_inf = { .store = dm_ramdrive_store, }; +#define ENABLE_SEQ_DBG + /* private data structure for dm */ typedef struct { dev_ramssd_info_t *ramssd; +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_t dbg_seq; +#endif } dm_ramssd_private_t; /* global data structure */ @@ -100,6 +107,10 @@ uint32_t dm_ramdrive_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* params) goto fail; } +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_init (&p->dbg_seq); +#endif + /* OK! keep private info */ bdi->ptr_dm_inf->ptr_private = (void*)p; @@ -136,13 +147,37 @@ void dm_ramdrive_close (bdbm_drv_info_t* bdi) uint32_t dm_ramdrive_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req) { uint32_t ret; + dm_ramssd_private_t* p = BDBM_DM_PRIV (bdi); +#if 1 + /*if ((ret = dev_ramssd_send_cmd (p->ramssd, ptr_llm_req)) != 0) {*/ + /*bdbm_error ("dev_ramssd_send_cmd failed");*/ + /*}*/ + +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_lock (&p->dbg_seq); +#endif + + if ((ret = hynix_dumbssd_send_cmd (bdi, ptr_llm_req, __dm_ramdrive_ih)) != 0) { + bdbm_error ("hynix_dumbssd_send_cmd"); + } + +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_unlock (&p->dbg_seq); +#endif + +#else + bdbm_msg ("hynix_dumbssd_send_cmd"); if ((ret = dev_ramssd_send_cmd (p->ramssd, ptr_llm_req)) != 0) { bdbm_error ("dev_ramssd_send_cmd failed"); - /* there is nothing to do */ } + /*if ((ret = hynix_dumbssd_send_cmd (bdi, ptr_llm_req, __dm_ramdrive_ih)) != 0) {*/ + /*bdbm_error ("hynix_dumbssd_send_cmd");*/ + /*}*/ +#endif + return ret; } @@ -150,6 +185,7 @@ uint32_t dm_ramdrive_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) { #include "../../ftl/hlm_reqs_pool.h" + /* uint32_t i, ret = 1; bdbm_llm_req_t* lr = NULL; dm_ramssd_private_t* p = BDBM_DM_PRIV (bdi); @@ -162,6 +198,9 @@ uint32_t dm_ramdrive_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) } return ret; + */ + + return 0; } void dm_ramdrive_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req) diff --git a/devices/ramdrive_timing/Makefile b/devices/ramdrive_timing/Makefile index e92c402..f049e38 100644 --- a/devices/ramdrive_timing/Makefile +++ b/devices/ramdrive_timing/Makefile @@ -28,6 +28,7 @@ risa_dev_ramdrive_timing-y := \ $(DEV_COMMON)/dev_stub.o \ ../ramdrive/dev_ramssd.o \ ../ramdrive/dm_ramdrive.o \ + ../ramdrive/hynix_dumbssd.o \ obj-m := risa_dev_ramdrive_timing.o diff --git a/frontend/kernel_nvme/Makefile b/frontend/kernel_nvme/Makefile index ef9bde8..d74bf7b 100644 --- a/frontend/kernel_nvme/Makefile +++ b/frontend/kernel_nvme/Makefile @@ -6,7 +6,8 @@ INCLUDE := ../../include COMMON := ../../common DM_COMMON := ../../devices/common -KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers +#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers +KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/bluedbm/Module.symvers @@ -63,6 +64,7 @@ bdbm_drv-y := \ $(FTL)/pmu.o \ $(FTL)/hlm_nobuf.o \ $(FTL)/llm_mq.o \ + $(FTL)/llm_noq.o \ $(FTL)/algo/abm.o \ $(FTL)/algo/page_ftl.o \ $(FTL)/algo/block_ftl.o \ diff --git a/frontend/kernel_nvme/blkdev.c b/frontend/kernel_nvme/blkdev.c index 21c44f0..a1756e2 100644 --- a/frontend/kernel_nvme/blkdev.c +++ b/frontend/kernel_nvme/blkdev.c @@ -41,7 +41,8 @@ int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo); static struct bdbm_device_t { struct gendisk *gd; struct request_queue *queue; -} bdbm_device; +} _bdbm_device_dummy, bdbm_device; + static uint32_t bdbm_device_major_num = 0; static struct block_device_operations bdops = { @@ -79,6 +80,7 @@ int badblock_scan_thread_fn (void* arg) int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo) { +#if 0 bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (_bdi); int nr_sectors = np->device_capacity_in_byte >> 9; @@ -92,8 +94,13 @@ int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo) geo->cylinders, geo->sectors, nr_sectors); - return 1; + return 0; } +#else + geo->heads = 16; + geo->cylinders = 1024; + geo->sectors = 256; +#endif return 0; } @@ -184,31 +191,91 @@ int bdbm_blk_ioctl ( return 0; } +static blk_qc_t dummy_fn ( + struct request_queue *q, + struct bio *bio) +{ + bio_endio (bio); + return BLK_QC_T_NONE; /* for no polling */ +} + uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) { + uint64_t capacity = 0; + + _bdbm_device_dummy.queue = blk_alloc_queue_node (GFP_KERNEL, bdi->q->node); + bdbm_msg ("host_blkdev_register_device -> blk_alloc_queue_node"); + if (!_bdbm_device_dummy.queue) { + bdbm_error ("blk_alloc_queue failed"); + return -ENOMEM; + } + + blk_queue_make_request (_bdbm_device_dummy.queue, dummy_fn); + blk_queue_logical_block_size (_bdbm_device_dummy.queue, bdi->parm_ftl.kernel_sector_size); + blk_queue_io_min (_bdbm_device_dummy.queue, bdi->parm_dev.page_main_size); + blk_queue_io_opt (_bdbm_device_dummy.queue, bdi->parm_dev.page_main_size); + + /* see if a TRIM command is used or not */ + if (bdi->parm_ftl.trim == TRIM_ENABLE) { + _bdbm_device_dummy.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; + _bdbm_device_dummy.queue->limits.max_discard_sectors = UINT_MAX; + queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, _bdbm_device_dummy.queue); + bdbm_msg ("TRIM is enabled"); + } else { + bdbm_msg ("TRIM is disabled"); + } + + bdbm_msg ("host_blkdev_register_device -> alloc_disk"); + if (!(_bdbm_device_dummy.gd = alloc_disk (0))) { + bdbm_msg ("alloc_disk failed"); + return -ENOMEM; + } + _bdbm_device_dummy.gd->flags = GENHD_FL_EXT_DEVT; + bdbm_msg ("host_blkdev_register_device -> alloc_disk - done"); + + bdi->gd = _bdbm_device_dummy.gd; + + _bdbm_device_dummy.gd->major = 0; + _bdbm_device_dummy.gd->first_minor = 0; + _bdbm_device_dummy.gd->fops = &bdops; + _bdbm_device_dummy.gd->queue = _bdbm_device_dummy.queue; + _bdbm_device_dummy.gd->private_data = NULL; + strcpy (_bdbm_device_dummy.gd->disk_name, bdi->disk_name); + + /* setup disk capacity */ + capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + capacity = (capacity) - capacity/10; + set_capacity (_bdbm_device_dummy.gd, capacity / KERNEL_SECTOR_SIZE); + + /* add disk */ + bdbm_msg ("add_disk"); + add_disk (_bdbm_device_dummy.gd); + bdbm_msg ("add_disk - done"); + + /************************************************************************/ /* create a blk queue */ - if (!(bdbm_device.queue = blk_alloc_queue (GFP_KERNEL))) { + bdbm_device.queue = blk_alloc_queue (GFP_KERNEL); + if (!bdbm_device.queue) { bdbm_error ("blk_alloc_queue failed"); return -ENOMEM; } + blk_queue_make_request (bdbm_device.queue, fn); blk_queue_logical_block_size (bdbm_device.queue, bdi->parm_ftl.kernel_sector_size); blk_queue_io_min (bdbm_device.queue, bdi->parm_dev.page_main_size); blk_queue_io_opt (bdbm_device.queue, bdi->parm_dev.page_main_size); - /*blk_limits_max_hw_sectors (&bdbm_device.queue->limits, 16);*/ /* see if a TRIM command is used or not */ if (bdi->parm_ftl.trim == TRIM_ENABLE) { bdbm_device.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; bdbm_device.queue->limits.max_discard_sectors = UINT_MAX; - /*bdbm_device.queue->limits.discard_zeroes_data = 1;*/ queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, bdbm_device.queue); bdbm_msg ("TRIM is enabled"); } else { bdbm_msg ("TRIM is disabled"); } - /* register a blk device */ + /* alloc & register a blk device */ if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, "blueDBM")) < 0) { bdbm_msg ("register_blkdev failed (%d)", bdbm_device_major_num); return bdbm_device_major_num; @@ -218,6 +285,7 @@ uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) unregister_blkdev (bdbm_device_major_num, "blueDBM"); return -ENOMEM; } + bdbm_device.gd->major = bdbm_device_major_num; bdbm_device.gd->first_minor = 0; bdbm_device.gd->fops = &bdops; @@ -225,24 +293,125 @@ uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) bdbm_device.gd->private_data = NULL; strcpy (bdbm_device.gd->disk_name, "blueDBM"); - { - uint64_t capacity; - //capacity = bdi->parm_dev.device_capacity_in_byte * 0.9; - capacity = bdi->parm_dev.device_capacity_in_byte; - capacity = (capacity / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; - set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); - } + /* setup disk capacity */ + /*blk_queue_max_hw_sectors (bdbm_device.queue, 8);*/ + capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + capacity = (capacity) - capacity/10; + set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); + + /* add disk */ + bdbm_msg ("add_disk"); add_disk (bdbm_device.gd); + bdbm_msg ("add_disk - done"); return 0; } void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) { - /* unregister a BlueDBM device driver */ del_gendisk (bdbm_device.gd); + blk_cleanup_queue (bdbm_device.queue); put_disk (bdbm_device.gd); unregister_blkdev (bdbm_device_major_num, "blueDBM"); - blk_cleanup_queue (bdbm_device.queue); + + + /*********************************************************/ + /* unregister a BlueDBM device driver */ + del_gendisk (_bdbm_device_dummy.gd); + blk_cleanup_queue (_bdbm_device_dummy.queue); + put_disk (_bdbm_device_dummy.gd); +} + + +#if 0 +uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) +{ + uint64_t capacity = 0; + + /* create a blk queue */ + if (bdi->q == NULL) { + bdbm_device.queue = blk_alloc_queue (GFP_KERNEL); + } else { + bdbm_device.queue = blk_alloc_queue_node (GFP_KERNEL, bdi->q->node); + bdbm_msg ("host_blkdev_register_device -> blk_alloc_queue_node"); + } + if (!bdbm_device.queue) { + bdbm_error ("blk_alloc_queue failed"); + return -ENOMEM; + } + + blk_queue_make_request (bdbm_device.queue, fn); + blk_queue_logical_block_size (bdbm_device.queue, bdi->parm_ftl.kernel_sector_size); + blk_queue_io_min (bdbm_device.queue, bdi->parm_dev.page_main_size); + blk_queue_io_opt (bdbm_device.queue, bdi->parm_dev.page_main_size); + /*blk_limits_max_hw_sectors (&bdbm_device.queue->limits, 16);*/ + + /* see if a TRIM command is used or not */ + if (bdi->parm_ftl.trim == TRIM_ENABLE) { + bdbm_device.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; + bdbm_device.queue->limits.max_discard_sectors = UINT_MAX; + /*bdbm_device.queue->limits.discard_zeroes_data = 1;*/ + queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, bdbm_device.queue); + bdbm_msg ("TRIM is enabled"); + } else { + bdbm_msg ("TRIM is disabled"); + } + + /* alloc & register a blk device */ + if (bdi->q == NULL) { + if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, bdi->disk_name)) < 0) { + bdbm_msg ("register_blkdev failed (%d)", bdbm_device_major_num); + return bdbm_device_major_num; + } + if (!(bdbm_device.gd = alloc_disk (1))) { + bdbm_msg ("alloc_disk failed"); + unregister_blkdev (bdbm_device_major_num, bdi->disk_name); + return -ENOMEM; + } + } else { + bdbm_msg ("host_blkdev_register_device -> alloc_disk"); + if (!(bdbm_device.gd = alloc_disk (0))) { + bdbm_msg ("alloc_disk failed"); + return -ENOMEM; + } + bdbm_device.gd->flags = GENHD_FL_EXT_DEVT; + bdbm_msg ("host_blkdev_register_device -> alloc_disk - done"); + } + + bdi->gd = bdbm_device.gd; + + bdbm_device.gd->major = bdbm_device_major_num; + bdbm_device.gd->first_minor = 0; + bdbm_device.gd->fops = &bdops; + bdbm_device.gd->queue = bdbm_device.queue; + bdbm_device.gd->private_data = NULL; + strcpy (bdbm_device.gd->disk_name, bdi->disk_name); + + /* setup disk capacity */ + /*blk_queue_max_hw_sectors (bdbm_device.queue, 8);*/ + capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + capacity = (capacity) - capacity/10; + set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); + + /* add disk */ + bdbm_msg ("add_disk"); + add_disk (bdbm_device.gd); + bdbm_msg ("add_disk - done"); + + return 0; } +void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) +{ + /* unregister a BlueDBM device driver */ + del_gendisk (bdbm_device.gd); + blk_cleanup_queue (bdbm_device.queue); + put_disk (bdbm_device.gd); + if (bdi->q == NULL) + unregister_blkdev (bdbm_device_major_num, bdi->disk_name); + + /* clean up */ + bdbm_device.queue = NULL; + bdbm_device.gd = NULL; +} +#endif diff --git a/frontend/kernel_nvme/blkio.c b/frontend/kernel_nvme/blkio.c index a604b10..160204c 100644 --- a/frontend/kernel_nvme/blkio.c +++ b/frontend/kernel_nvme/blkio.c @@ -192,6 +192,11 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) bdbm_blkio_req_t* br = NULL; bdbm_hlm_req_t* hr = NULL; + bdbm_msg ("blkio_make_req WHAT!!!! (%s)", bdi->gd->disk_name); + + /* lock a global mutex -- this function must be finished as soon as possible */ + bdbm_sema_lock (&p->host_lock); + /* get blkio */ if ((br = __get_blkio_req ((struct bio*)bio)) == NULL) { bdbm_error ("__get_blkio_req () failed"); @@ -210,9 +215,6 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) goto fail; } - /* lock a global mutex -- this function must be finished as soon as possible */ - bdbm_sema_lock (&p->host_lock); - /* if success, increase # of host reqs */ atomic_inc (&p->nr_host_reqs); @@ -260,435 +262,3 @@ void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) /* decreate # of reqs */ atomic_dec (&p->nr_host_reqs); } - - -#if 0 - -bdbm_host_inf_t _blkio_inf = { - .ptr_private = NULL, - .open = blkio_open, - .close = blkio_close, - .make_req = blkio_make_req, - .end_req = blkio_end_req, -}; - -typedef struct { - bdbm_sema_t host_lock; - atomic64_t nr_reqs; -} bdbm_blkio_private_t; - - - -/* This is a call-back function invoked by a block-device layer */ -static void __host_blkio_make_request_fn ( - struct request_queue *q, - struct bio *bio) -{ - blkio_make_req (_bdi, (void*)bio); -} - -static bdbm_hlm_req_t* __blkio_create_hlm_trim_req ( - bdbm_drv_info_t* bdi, - struct bio* bio) -{ - bdbm_hlm_req_t* hlm_req = NULL; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - bdbm_ftl_params* dp = BDBM_GET_DRIVER_PARAMS (bdi); - uint64_t nr_secs_per_fp = 0; - - nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; - - /* create bdbm_hm_req_t */ - if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic - (sizeof (bdbm_hlm_req_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - return NULL; - } - - /* make a high-level request for TRIM */ - hlm_req->req_type = REQTYPE_TRIM; - - if (dp->mapping_type == MAPPING_POLICY_SEGMENT) { - hlm_req->lpa = bio->bi_sector / nr_secs_per_fp; - hlm_req->len = bio_sectors (bio) / nr_secs_per_fp; - if (hlm_req->len == 0) - hlm_req->len = 1; - } else { - hlm_req->lpa = (bio->bi_sector + nr_secs_per_fp - 1) / nr_secs_per_fp; - if ((hlm_req->lpa * nr_secs_per_fp - bio->bi_sector) > bio_sectors (bio)) { - bdbm_error ("'hlm_req->lpa (%llu) * nr_secs_per_fp (%llu) - bio->bi_sector (%lu)' (%llu) > bio_sectors (bio) (%u)", - hlm_req->lpa, nr_secs_per_fp, bio->bi_sector, - hlm_req->lpa * nr_secs_per_fp - bio->bi_sector, - bio_sectors (bio)); - hlm_req->len = 0; - } else { - hlm_req->len = - (bio_sectors (bio) - (hlm_req->lpa * nr_secs_per_fp - bio->bi_sector)) / nr_secs_per_fp; - } - } - hlm_req->nr_done_reqs = 0; - hlm_req->kpg_flags = NULL; - hlm_req->pptr_kpgs = NULL; /* no data */ - hlm_req->ptr_host_req = (void*)bio; - hlm_req->ret = 0; - - return hlm_req; -} - -static bdbm_hlm_req_t* __blkio_create_hlm_rw_req ( - bdbm_drv_info_t* bdi, - struct bio* bio) -{ - struct bio_vec *bvec = NULL; - bdbm_hlm_req_t* hlm_req = NULL; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - - uint32_t loop = 0; - uint32_t kpg_loop = 0; - uint32_t bvec_offset = 0; - uint64_t nr_secs_per_fp = 0; - uint64_t nr_secs_per_kp = 0; - uint32_t nr_kp_per_fp = 0; - - /* get # of sectors per flash page */ - nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; - nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; - nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ - - /* create bdbm_hm_req_t */ - if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic - (sizeof (bdbm_hlm_req_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - return NULL; - } - - /* get a bio direction */ - if (bio_data_dir (bio) == READ || bio_data_dir (bio) == READA) { - hlm_req->req_type = REQTYPE_READ; - } else if (bio_data_dir (bio) == WRITE) { - hlm_req->req_type = REQTYPE_WRITE; - } else { - bdbm_error ("the direction of a bio is invalid (%lu)", bio_data_dir (bio)); - goto fail_req; - } - - /* make a high-level request for READ or WRITE */ - hlm_req->lpa = (bio->bi_sector / nr_secs_per_fp); - hlm_req->len = (bio->bi_sector + bio_sectors (bio) + nr_secs_per_fp - 1) / nr_secs_per_fp - hlm_req->lpa; - hlm_req->nr_done_reqs = 0; - hlm_req->ptr_host_req = (void*)bio; - hlm_req->ret = 0; - /*bdbm_spin_lock_init (&hlm_req->lock);*/ - if ((hlm_req->pptr_kpgs = (uint8_t**)bdbm_malloc_atomic - (sizeof(uint8_t*) * hlm_req->len * nr_kp_per_fp)) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - goto fail_req; - } - if ((hlm_req->kpg_flags = (uint8_t*)bdbm_malloc_atomic - (sizeof(uint8_t) * hlm_req->len * nr_kp_per_fp)) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - goto fail_flags; - } - /* kpg_flags is set to MEMFLAG_NOT_SET (0) */ - - /* get or alloc pages */ - bio_for_each_segment (bvec, bio, loop) { - /* check some error cases */ - if (bvec->bv_offset != 0) { - bdbm_warning ("'bv_offset' is not 0 (%d)", bvec->bv_offset); - /*goto fail_grab_pages;*/ - } - -next_kpg: - /* assign a new page */ - if ((hlm_req->lpa * nr_kp_per_fp + kpg_loop) != (bio->bi_sector + bvec_offset) / nr_secs_per_kp) { - hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); - hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; - kpg_loop++; - goto next_kpg; - } - - if ((hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)page_address (bvec->bv_page)) != NULL) { - hlm_req->kpg_flags[kpg_loop] = MEMFLAG_KMAP_PAGE; - } else { - bdbm_error ("kmap failed"); - goto fail_grab_pages; - } - - bvec_offset += nr_secs_per_kp; - kpg_loop++; - } - - /* get additional free pages if necessary */ - while (kpg_loop < hlm_req->len * nr_kp_per_fp) { - hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); - hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; - kpg_loop++; - } - - return hlm_req; - -fail_grab_pages: - /* release grabbed pages */ - for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { - if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE) { - bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); - } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE) { - } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { - bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); - } - } - bdbm_free_atomic (hlm_req->kpg_flags); - -fail_flags: - bdbm_free_atomic (hlm_req->pptr_kpgs); - -fail_req: - bdbm_free_atomic (hlm_req); - - return NULL; -} - -static bdbm_hlm_req_t* __blkio_create_hlm_req ( - bdbm_drv_info_t* bdi, - struct bio* bio) -{ - bdbm_hlm_req_t* hlm_req = NULL; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - uint64_t nr_secs_per_kp = 0; - - /* get # of sectors per flash page */ - nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; - - /* see if some error cases */ - if (bio->bi_sector % nr_secs_per_kp != 0) { - bdbm_warning ("kernel pages are not aligned with disk sectors (%lu mod %llu != 0)", - bio->bi_sector , nr_secs_per_kp); - /* go ahead */ - } - if (KERNEL_PAGE_SIZE > np->page_main_size) { - bdbm_error ("kernel page (%lu) is larger than flash page (%llu)", - KERNEL_PAGE_SIZE, np->page_main_size); - return NULL; - } - - /* create 'hlm_req' */ - if (bio->bi_rw & REQ_DISCARD) { - /* make a high-level request for TRIM */ - hlm_req = __blkio_create_hlm_trim_req (bdi, bio); - } else { - /* make a high-level request for READ or WRITE */ - hlm_req = __blkio_create_hlm_rw_req (bdi, bio); - } - - /* start a stopwatch */ - if (hlm_req) { - bdbm_stopwatch_start (&hlm_req->sw); - } - - return hlm_req; -} - -static void __blkio_delete_hlm_req ( - bdbm_drv_info_t* bdi, - bdbm_hlm_req_t* hlm_req) -{ - bdbm_device_params_t* np = NULL; - uint32_t kpg_loop = 0; - uint32_t nr_kp_per_fp = 0; - - np = BDBM_GET_DEVICE_PARAMS (bdi); - nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ - - /* temp */ - if (hlm_req->org_pptr_kpgs) { - hlm_req->pptr_kpgs = hlm_req->org_pptr_kpgs; - hlm_req->kpg_flags = hlm_req->org_kpg_flags; - hlm_req->lpa--; - hlm_req->len++; - } - /* end */ - - /* free or unmap pages */ - if (hlm_req->kpg_flags != NULL && hlm_req->pptr_kpgs != NULL) { - for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { - if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE_DONE) { - bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); - } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE_DONE) { - } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { - bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); - } - } - } - - /* release other stuff */ - if (hlm_req->kpg_flags != NULL) - bdbm_free_atomic (hlm_req->kpg_flags); - if (hlm_req->pptr_kpgs != NULL) - bdbm_free_atomic (hlm_req->pptr_kpgs); - bdbm_free_atomic (hlm_req); -} - -#ifdef ENABLE_DISPLAY -static void __blkio_display_req ( - bdbm_drv_info_t* bdi, - bdbm_hlm_req_t* hlm_req) -{ - bdbm_ftl_inf_t* ftl = (bdbm_ftl_inf_t*)BDBM_GET_FTL_INF(bdi); - uint64_t seg_no = 0; - - if (ftl->get_segno) { - seg_no = ftl->get_segno (bdi, hlm_req->lpa); - } - - switch (hlm_req->req_type) { - case REQTYPE_TRIM: - bdbm_msg ("[%llu] TRIM\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); - break; - case REQTYPE_READ: - bdbm_msg ("[%llu] READ\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); - break; - case REQTYPE_WRITE: - bdbm_msg ("[%llu] WRITE\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); - break; - default: - bdbm_error ("invalid REQTYPE (%u)", hlm_req->req_type); - break; - } -} -#endif - -uint32_t blkio_open (bdbm_drv_info_t* bdi) -{ - uint32_t ret; - bdbm_blkio_private_t* p; - - /* create a private data structure */ - if ((p = (bdbm_blkio_private_t*)bdbm_malloc_atomic - (sizeof (bdbm_blkio_private_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - return 1; - } - bdbm_sema_init (&p->host_lock); - atomic64_set (&p->nr_reqs, 0); - bdi->ptr_host_inf->ptr_private = (void*)p; - - /* register blueDBM */ - if ((ret = host_blkdev_register_device - (bdi, __host_blkio_make_request_fn)) != 0) { - bdbm_error ("failed to register blueDBM"); - bdbm_free_atomic (p); - return 1; - } - - return 0; -} - -void blkio_close (bdbm_drv_info_t* bdi) -{ - bdbm_blkio_private_t* p = NULL; - - p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - - /* wait for host reqs to finish */ - bdbm_msg ("wait for host reqs to finish"); - while (1) { - if (atomic64_read (&p->nr_reqs) == 0) - break; - schedule (); /* sleep */ - } - - /* unregister a block device */ - host_blkdev_unregister_block_device (bdi); - - /* free private */ - bdbm_free_atomic (p); -} - -void blkio_make_req (bdbm_drv_info_t* bdi, void* req) -{ - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - bdbm_hlm_req_t* hlm_req = NULL; - struct bio* bio = (struct bio*)req; - - /* lock a global mutex -- this function must be finished as soon as possible */ - bdbm_sema_lock (&p->host_lock); - - /* see if the address range of bio is beyond storage space */ - if (bio->bi_sector + bio_sectors (bio) > np->device_capacity_in_byte / KERNEL_SECTOR_SIZE) { - bdbm_sema_unlock (&p->host_lock); - bdbm_error ("bio is beyond storage space (%lu > %llu)", - bio->bi_sector + bio_sectors (bio), - np->device_capacity_in_byte / KERNEL_SECTOR_SIZE); - bio_io_error (bio); - return; - } - - /* create a hlm_req using a bio */ - if ((hlm_req = __blkio_create_hlm_req (bdi, bio)) == NULL) { - bdbm_sema_unlock (&p->host_lock); - bdbm_error ("the creation of hlm_req failed"); - bio_io_error (bio); - return; - } - -#ifdef ENABLE_DISPLAY - /* display req info */ - __blkio_display_req (bdi, hlm_req); -#endif - - /* if success, increase # of host reqs before sending the request to hlm */ - atomic64_inc (&p->nr_reqs); - - /* NOTE: it would be possible that 'hlm_req' becomes NULL - * if 'bdi->ptr_hlm_inf->make_req' is success. */ - if (bdi->ptr_hlm_inf->make_req (bdi, hlm_req) != 0) { - bdbm_error ("'bdi->ptr_hlm_inf->make_req' failed"); - - /* decreate # of reqs */ - atomic64_dec (&p->nr_reqs); - if (atomic64_read (&p->nr_reqs) < 0) { - bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); - } - - /* finish a bio */ - __blkio_delete_hlm_req (bdi, hlm_req); - bio_io_error (bio); - } - - bdbm_sema_unlock (&p->host_lock); -} - -void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hlm_req) -{ - uint32_t ret; - struct bio* bio = NULL; - bdbm_blkio_private_t* p = NULL; - - /* unlock hlm_req's lock if it is available */ - if (hlm_req->done) - bdbm_sema_unlock (hlm_req->done); - - /* get a bio from hlm_req */ - bio = (struct bio*)hlm_req->ptr_host_req; - p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - ret = hlm_req->ret; - - /* destroy hlm_req */ - __blkio_delete_hlm_req (bdi, hlm_req); - - /* get the result and end a bio */ - if (bio != NULL) { - if (ret == 0) bio_endio (bio, 0); - else bio_io_error (bio); - } - - /* decreate # of reqs */ - atomic64_dec (&p->nr_reqs); - if (atomic64_read (&p->nr_reqs) < 0) { - bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); - } -} - -#endif diff --git a/frontend/kernel_nvme/kmain.c b/frontend/kernel_nvme/kmain.c index 5fd7e40..d86925a 100644 --- a/frontend/kernel_nvme/kmain.c +++ b/frontend/kernel_nvme/kmain.c @@ -24,16 +24,295 @@ THE SOFTWARE. #include #include +#include +#include +#include +#include #include "bdbm_drv.h" #include "debug.h" #include "blkio.h" #include "devices.h" +#include "umemory.h" + +#include +#include + +#define BITS_PER_SLICE 6 +#define BITS_PER_WU 7 +#define BITS_PER_DIE 6 + +#define USE_ASYNC bdbm_drv_info_t* _bdi = NULL; -static int __init bdbm_drv_init (void) +struct hd_req { + bdbm_drv_info_t* bdi; + bdbm_llm_req_t* r; + int rw; + uint64_t die; + uint64_t block; + uint64_t wu; + uint8_t* kp_ptr; + void (*intr_handler)(void*); +}; + +void print_bio (struct bio* bio) +{ + /* + bdbm_msg ("bio->bi_iter.bi_sector = %d", (int)bio->bi_iter.bi_sector); + bdbm_msg ("bio->bi_iter.bi_size = %d", (int)bio->bi_iter.bi_size); + bdbm_msg ("bio->bi_rw = %d", (int)bio->bi_rw); + bdbm_msg ("bio->bi_private = %p", bio->bi_private); + bdbm_msg ("bio->bi_end_io = %p", bio->bi_end_io); + */ +} + +static void nvme_nvm_end_io (struct request *rq, int error) +{ + struct hd_req* hdr = rq->end_io_data; + + if (hdr->rw == READ) { + bdbm_msg (" ==> %u %u %u %u", hdr->kp_ptr[0], hdr->kp_ptr[1], hdr->kp_ptr[2], hdr->kp_ptr[3]); + } + + if (rq->bio && rq->bio->bi_end_io) { + rq->bio->bi_end_io (rq->bio); + } + if (rq->cmd) + kfree (rq->cmd); + if (hdr) + kfree (hdr); + if (hdr->kp_ptr) + kfree (hdr->kp_ptr); + if (rq) + blk_mq_free_request(rq); +} + +struct request *nvme_alloc_request(struct request_queue *q, + struct nvme_command *cmd, unsigned int flags) +{ + bool write = cmd->common.opcode & 1; + struct request *req; + + req = blk_mq_alloc_request(q, write, flags); + if (IS_ERR(req)) + return req; + + req->cmd_type = REQ_TYPE_DRV_PRIV; + req->__data_len = 0; + req->__sector = (sector_t) -1; + req->bio = req->biotail = NULL; + + req->cmd = (unsigned char *)cmd; + req->cmd_len = sizeof(struct nvme_command); + req->special = (void *)0; + + return req; +} + +int simple_read ( + bdbm_drv_info_t* bdi, + struct hd_req* hdr) { + struct bio* bio = NULL; + struct request *rq; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | + hdr->wu << (BITS_PER_SLICE); + + bdbm_msg ("READ: %llu %llu %llu => %u (%x)", + hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); + + /* [STEP1] setup bio */ + /*bio = bio_map_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO);*/ + bio = bio_copy_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO, 1); + bio->bi_rw = READ; + print_bio (bio); + + /* [STEP2] alloc request */ + rq = blk_mq_alloc_request(bdi->q, 0, 0); + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); + return -ENOMEM; + } + rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->ioprio = bio_prio(bio); + + if (bio_has_data(bio)) { + rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); + } + rq->__data_len = bio->bi_iter.bi_size; + rq->bio = rq->biotail = bio; + + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = hdr; + + /* [STEP3] setup cmd */ + cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = 63; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + +#ifdef USE_ASYNC + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + bdbm_msg (" ==> %u %u %u %u", hdr->kp_ptr[0], hdr->kp_ptr[1], hdr->kp_ptr[2], hdr->kp_ptr[3]); + bio->bi_end_io (bio); + rq->end_io_data = hdr; + nvme_nvm_end_io (rq, 0); +#endif + + return 0; +} + +int simple_write ( + bdbm_drv_info_t* bdi, + struct hd_req* hdr) +{ + struct bio* bio = NULL; + struct request *rq; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | + hdr->wu << (BITS_PER_SLICE); + + hdr->kp_ptr[0] = hdr->block; + hdr->kp_ptr[1] = hdr->die; + hdr->kp_ptr[2] = hdr->wu; + bdbm_msg ("WRITE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); + + /* setup bio */ + /*bio = bio_map_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO);*/ + bio = bio_copy_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO, 0); + bio->bi_rw = WRITE; + print_bio (bio); + + /* allocate request */ + rq = blk_mq_alloc_request (bdi->q, 1, 0); + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); + return -ENOMEM; + } + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->ioprio = bio_prio(bio); + if (bio_has_data(bio)) + rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); + rq->__data_len = bio->bi_iter.bi_size; + rq->bio = rq->biotail = bio; + + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = hdr; + + /* setup cmd */ + cmd->rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = 63; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + +#ifdef USE_ASYNC + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + bio->bi_end_io (bio); + rq->end_io_data = hdr; + nvme_nvm_end_io (rq, 0); +#endif + + return 0; +} + +int simple_erase ( + bdbm_drv_info_t* bdi, + struct hd_req* hdr) +{ + struct request *rq; + struct bio* bio = NULL; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + __u32 req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hdr->die << (BITS_PER_WU + BITS_PER_SLICE); + __le64* ubuffer_64 = (__le64*)hdr->kp_ptr; + + bdbm_msg ("ERASE: %llu %llu => %u (%x)", hdr->block, hdr->die, req_ofs, req_ofs); + + ubuffer_64[1] = req_ofs; + + /* setup bio */ + /*bio = bio_map_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO);*/ + bio = bio_copy_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO, 0); + bio->bi_rw = WRITE; + print_bio (bio); + + /* alloc request */ + rq = blk_mq_alloc_request(bdi->q, 1, 0); + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); + return -ENOMEM; + } + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->ioprio = bio_prio(bio); + if (bio_has_data(bio)) + rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); + rq->__data_len = bio->bi_iter.bi_size; + rq->bio = rq->biotail = bio; + + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = hdr; + + /* setup cmd */ + cmd->common.opcode = 9; + cmd->common.flags = 0; + cmd->common.nsid = 1; + cmd->common.cdw2[0] = 0; + cmd->common.cdw2[1] = 0; + cmd->common.cdw10[0] = 0; + cmd->common.cdw10[1] = 4; + cmd->common.cdw10[2] = 0; + cmd->common.cdw10[3] = 0; + cmd->common.cdw10[4] = 0; + cmd->common.cdw10[5] = 0; + +#ifdef USE_ASYNC + blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); +#else + blk_execute_rq (bdi->q, bdi->gd, rq, 0); + bio->bi_end_io (bio); + rq->end_io_data = hdr; + nvme_nvm_end_io (rq, 0); +#endif + + return 0; +} + +int bdbm_register (struct request_queue* q, char* disk_name) +{ + bdbm_msg ("bdbm_register (%s)", disk_name); + /* create bdi with default parameters */ if ((_bdi = bdbm_drv_create ()) == NULL) { bdbm_error ("[kmain] bdbm_drv_create () failed"); @@ -52,16 +331,38 @@ static int __init bdbm_drv_init (void) return -ENXIO; } + /* for nvme */ + _bdi->q = q; + if (disk_name) + strcpy (_bdi->disk_name, disk_name); + else + strcpy (_bdi->disk_name, "blueDBM"); + /* end */ + /* run it */ if (bdbm_drv_run (_bdi) != 0) { bdbm_error ("[kmain] bdbm_drv_run () failed"); return -ENXIO; } +#if 0 + /* send simple read request */ + bdbm_msg ("begin - simple_read\n"); + { + int i = 0; + for (i = 0; i < 1000; i++) { + simple_read (_bdi); + } + } + bdbm_msg ("done - simple_read\n"); + /* end */ +#endif + return 0; } +EXPORT_SYMBOL(bdbm_register); -static void __exit bdbm_drv_exit(void) +void bdbm_unregister (char* disk_name) { /* stop running layers */ bdbm_drv_close (_bdi); @@ -71,6 +372,143 @@ static void __exit bdbm_drv_exit(void) /* remove bdbm_drv */ bdbm_drv_destroy (_bdi); + + _bdi = NULL; + + bdbm_msg ("bdbm_register (%s)", disk_name); +} +EXPORT_SYMBOL(bdbm_unregister); + + +struct user_cmd { + int die; + int block; + int wu; +}; + +#define TEST_IOCTL_READ _IO('N', 0x01) +#define TEST_IOCTL_WRITE _IO('N', 0x02) +#define TEST_IOCTL_ERASE _IO('N', 0x03) + +#if 0 +static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) +{ + struct user_cmd c; + struct hd_req* hc = kzalloc (sizeof (struct hd_req), GFP_KERNEL); + + if (_bdi == NULL) + return 0; + + copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); + + hc->bdi = _bdi; + hc->r = NULL; + hc->die = c.die; + hc->block = c.block; + hc->wu = c.wu; + hc->kp_ptr = kzalloc (4096*64, GFP_KERNEL); + hc->intr_handler = NULL; + + switch (cmd) { + case TEST_IOCTL_READ: + hc->rw = READ; + simple_read (_bdi, hc); + break; + case TEST_IOCTL_WRITE: + hc->rw = WRITE; + simple_write (_bdi, hc); + break; + case TEST_IOCTL_ERASE: + hc->rw = 0xff; + simple_erase (_bdi, hc); + break; + default: + bdbm_msg ("default"); + break; + } + + return 0; +} +#endif + +static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) +{ + struct user_cmd c; + struct hd_req* hc = NULL; + int die = 0; + + if (_bdi == NULL) + return 0; + + copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); + + for (die = 0; die < 64; die++) { + struct hd_req* hc = kzalloc (sizeof (struct hd_req), GFP_KERNEL); + + hc->bdi = _bdi; + hc->r = NULL; + hc->die = die; + hc->block = c.block; + hc->wu = c.wu; + hc->kp_ptr = kzalloc (4096*64, GFP_KERNEL); + hc->intr_handler = NULL; + + switch (cmd) { + case TEST_IOCTL_READ: + hc->rw = READ; + simple_read (_bdi, hc); + break; + case TEST_IOCTL_WRITE: + hc->rw = WRITE; + simple_write (_bdi, hc); + break; + case TEST_IOCTL_ERASE: + hc->rw = 0xff; + simple_erase (_bdi, hc); + break; + default: + bdbm_msg ("default"); + break; + } + } + + return 0; +} + + +static const struct file_operations _ctl_fops = { + .open = nonseekable_open, + .unlocked_ioctl = nvm_ctl_ioctl, + .owner = THIS_MODULE, +}; + +static struct miscdevice _nvm_misc = { + .minor = MISC_DYNAMIC_MINOR, + .name = "kernel_nvme", + .nodename = "kernel_nvme/control", + .fops = &_ctl_fops, +}; + +MODULE_ALIAS_MISCDEV(MISC_DYNAMIC_MINOR); + +static int __init bdbm_drv_init (void) +{ + int ret; + + ret = misc_register(&_nvm_misc); + if (ret) + pr_err("nvm: misc_register failed for control device"); + + /*bdbm_register (NULL, NULL);*/ + + return 0; +} + +static void __exit bdbm_drv_exit(void) +{ + misc_deregister(&_nvm_misc); + + /*bdbm_unregister(NULL);*/ } MODULE_AUTHOR ("Sungjin Lee "); diff --git a/frontend/kernel_nvme/log b/frontend/kernel_nvme/log deleted file mode 100644 index 04a65ab..0000000 --- a/frontend/kernel_nvme/log +++ /dev/null @@ -1,79 +0,0 @@ -make[1]: Entering directory '/usr/src/linux-headers-4.5.3-040503-generic' - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/kmain.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/blkdev.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/blkio.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/ftl_params.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/pmu.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/hlm_nobuf.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/llm_mq.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/abm.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.o -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c: In function ‘bdbm_page_ftl_create’: -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c:209:18: warning: unused variable ‘j’ [-Wunused-variable] - uint32_t i = 0, j = 0; - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c:209:11: warning: unused variable ‘i’ [-Wunused-variable] - uint32_t i = 0, j = 0; - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c: At top level: -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/page_ftl.c:1165:13: warning: ‘__bdbm_page_mark_it_dead’ defined but not used [-Wunused-function] - static void __bdbm_page_mark_it_dead ( - ^ - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.o -In file included from include/linux/printk.h:6:0, - from include/linux/kernel.h:13, - from include/linux/list.h:8, - from include/linux/module.h:9, - from /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:26: -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: In function ‘__bdbm_block_ftl_is_allocated’: -include/linux/kern_levels.h:4:18: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘uint64_t {aka long long unsigned int}’ [-Wformat=] - #define KERN_SOH "\001" /* ASCII Start Of Header */ - ^ -include/linux/kern_levels.h:13:19: note: in expansion of macro ‘KERN_SOH’ - #define KERN_INFO KERN_SOH "6" /* informational */ - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../include/debug.h:32:11: note: in expansion of macro ‘KERN_INFO’ - printk(KERN_INFO "bdbm: " fmt "\n", ##__VA_ARGS__); \ - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:342:3: note: in expansion of macro ‘bdbm_msg’ - bdbm_msg ("oops! # of allocated blocks per segment must be 0 or %d (%d)", - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: In function ‘bdbm_block_ftl_get_free_ppa’: -include/linux/kern_levels.h:4:18: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int64_t {aka long long int}’ [-Wformat=] - #define KERN_SOH "\001" /* ASCII Start Of Header */ - ^ -include/linux/kern_levels.h:13:19: note: in expansion of macro ‘KERN_SOH’ - #define KERN_INFO KERN_SOH "6" /* informational */ - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../include/debug.h:32:11: note: in expansion of macro ‘KERN_INFO’ - printk(KERN_INFO "bdbm: " fmt "\n", ##__VA_ARGS__); \ - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:466:4: note: in expansion of macro ‘bdbm_msg’ - bdbm_msg ("[%llu] [OVERWRITE] this should not occur (rw_pg_ofs:%d page_ofs:%llu)", - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: In function ‘__bdbm_block_ftl_do_gc_block_merge’: -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:885:14: warning: unused variable ‘k’ [-Wunused-variable] - uint64_t j, k, nr_valid_pgs = 0, nr_trim_pgs = 0; - ^ -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c: At top level: -/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/algo/block_ftl.c:1149:13: warning: ‘__bdbm_block_mark_it_dead’ defined but not used [-Wunused-function] - static void __bdbm_block_mark_it_dead ( - ^ - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/queue/queue.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/queue/prior_queue.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/queue/rd_prior_queue.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../ftl/hlm_reqs_pool.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../devices/common/dev_params.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/utime.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/ufile.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/uthread.o - CC [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/../../common/utils/umemory.o - LD [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.o - Building modules, stage 2. - MODPOST 1 modules -WARNING: "bdbm_dm_init" [/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko] undefined! -WARNING: "bdbm_dm_exit" [/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko] undefined! -WARNING: "bdbm_dm_get_inf" [/home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko] undefined! - CC /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.mod.o - LD [M] /home/chamdoo/src/bdbm_drv/frontend/kernel_nvme/bdbm_drv.ko -make[1]: Leaving directory '/usr/src/linux-headers-4.5.3-040503-generic' diff --git a/frontend/kernel_nvme/mount_ext4.sh b/frontend/kernel_nvme/mount_ext4.sh index 2aa2bc6..43cabc7 100755 --- a/frontend/kernel_nvme/mount_ext4.sh +++ b/frontend/kernel_nvme/mount_ext4.sh @@ -1,14 +1,5 @@ -sudo mkdir -p /usr/share/bdbm_drv -sudo touch /usr/share/bdbm_drv/ftl.dat -sudo touch /usr/share/bdbm_drv/dm.dat +#sudo mkfs -t ext4 -b 4096 /dev/nvme0n1 +#sudo mount \-t ext4 \-o discard /dev/nvme0n1 /media/blueDBM -sudo insmod risa_dev_ramdrive.ko -#sudo insmod risa_dev_ramdrive_timing.ko -#sudo insmod risa_dev_ramdrive_intr.ko -#sudo insmod risa_dev_bluedbm.ko -#sudo insmod bdbm_drv_page.ko -sudo insmod bdbm_drv.ko -sudo ./bdbm_format /dev/blueDBM sudo mkfs -t ext4 -b 4096 /dev/blueDBM sudo mount \-t ext4 \-o discard /dev/blueDBM /media/blueDBM -#sudo mount \-t ext4 /dev/blueDBM /media/blueDBM diff --git a/frontend/nvme/libftl b/frontend/nvme/libftl index 55deaf820af10c231e00c60d579d4a7e260775b4..a950e3b004a0117bc59c49a3e16ef7fae71aeddc 100755 GIT binary patch literal 256032 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
M<8ZOFnn@=Z7s$hfD!^7=KDhq zwZ{c%XTuLFI(p_KAnH)iSeSP|7+V*Z{g^kim3La41h7Ia|GTgUIb2_uSk|jF?L${- z#*#mPAk2Sm-SRAWpjomYjIPL=3^4=gYjriVO4nJ}PN(XmR<-bvzILXj)H}O&uBPHr z_SuD!>Pbq9RszN)m19fE^m;*Rc`oMW0a*d&3ZK6l{@#Wxz6$7Cwk^^=uCJBs_~=hW zV#=^ARos+4h!BmI#nKkS5?zr(pA=IgFbyvY@u0og>wo)x8ElmsL7$1XMVJexvfBHU zdcPye7Gn-VB>WU|T-lM&+~-7J1Z&P;IhkyGEy2cswqcq;``THErOsB@{WHjiSI;lHBRXUH=tj_5uB*3*Y zMky;kog6VIKC3j<%18Rz9!(kXStBVcJ|ISh7-mb{n+-5_Xr0-@#sd*TKYX>xX++Z& zaJ2)h)tNpSkx*x@m2;3#*16D3>2BI=DalmHPS)}U`{0;G3JqLSS<8e^R!%|Yrd1HD zzP0#AW$RA^#=LRa?|n%V=((6{0e&q(Ap#n#KmEdY^`LpyFMh-K=TF2C?6@m2A(^i4 zk~;9=9L>jpW)xh)0tC}1Q}r|WDr4@1;x^89;Vg5Uz^-{NM~IK9#4BCPUWs7!xxg{2 z;2O^6wr@`-UMb^4@D+!_3YDH(1M4Ro)~1iyA-E)j6&|+zSgLC)bjCW|A!m9Hj+4+i zh#)yGQhDqUv#4RdkN|??r#l2zTP;qBx8*cO5bF?7rXa*b1pJz9uryXBjEazK2&fSc z^af0r<;{u8gqi|=4=1K){a`GaHUx0Smd@QpUx+lpVAM5YsQDUih>VGOUyQV+mi;i* z(Tk}v4=&@g4Gsq$aLsAwet3MM_v*v2NrBfXy~iPMV-jP4iFvLYir@X%_Q`ys#lXm3Ww#uHI7V=At96~FE(egGA(S=P%6S4R~?2R!!ym=w$c_^0r3_}x&; zJRF8Rzj1pXGB*)pU&FapCeCsAUKRtD$U6_~11JIm5I}FNijI+=Ci|Ffl4r_1gLI7f zxp;FYTIOqd+7DB0^jYxMn`&#pS~?}G(^YMg4gZQa64q=n=+61=^ube*AFj$e-jVrm zm3~}*59B~P8ePG#nPIH?SR>miVOX2Efk~6G%dSERPE1>|DIazzzZrCx9fEv{Oe}(* z-j%o?Ujy9#$>{a7R6_E_pD3M!c#z&9^R%li=q0T-cJ8>_21h%U7#hA<5;{FW6)4eM z4dn_K$Zi1MD+uP@R{|vj6ZUgTrqmnO#m!JzL#TjJ&o*(j(UF!EDt;3@vhR1Yq7mS* z&5c7l2D}dCO~(p+<`NG}vTNA@Tu||TWSdJiA%=h)|Ff(4;Y%gqx=8IOM{|WGxL$A+-$lwzqD0mWU3hq)V?Co{dq@T%Kx*fZ@|DJf;X59BB+0f5YR6#e04;Y$^Y zp2GA7Xd^A8=*=EQ3$O$kogxl^p$NMz$0r_ce>75|4^Qc(s9W36>QwSa{X)(F zn|on%@V=eP5YJn-10@4v$CBt-@%kT`ipq#Wj})j#6x#Ph3QV=~m&hB{>E>5RW_Qv& ziq|0v*h?ID)yD}S1eJ9mg0&%6Zsm66)hw2D48%rD+?Xm;!+)nbvZRU{9&G!pb_7Eu zYB>C&`@p6tdi^D;h67;h>Nd>YFeGiw#c|A~wQGMjvLGh8LIdJwSsYj~!S*F!lWc&z zRT-Wi-b=ZJtSGX=YS9?XkYJlr#*4Hrh|CrCRl-FvKco0d#yBERnti*?2Kaw~MRw}a z4>vF*9UvOV1fob{b_?nFVXIedhe^X;OtQbfw0jqJM%N@)j~@dlDebYP_`GoU7lu$c z5i%fy3rvCqPq>z^U5B~>Si5H^8(V5gK=7ZRkU<-PP?wg8eI;$7)|0cb0NN(wz34^cBsPn5@FsMVRj)zmz2F;9PzQKgRt06anZ%T_?M^JUvBI7Zm2Zs+*fN#=wuLi(R z5WALbJ?QH7g73|J5fD+BBlyS`2xa5&J|^nlx)J`>Vo2dP&Ng7#r<##SkN`d(TE!-tGup>czRU^sGxn?|Yn9jO{H;uwz+ zSV`m(+}er^9|v@W^t4y-0by>eT%s9dAkw=fncinma;5_0UYzJPCR6(ibR}NF*t~Mk z)&16&^-#Xq!;l+`d5wKA@K3TV=RU)-wXfOQ17aYqt6(EKlc^h*q7tNZEplm|*O}*f z^AzKS{H#e2n&*H#)7?^CZNsVx3!^p!yicr2`kA+>iW@%%EG`j4WWDu z=f;1ZkU1SftFuR^n*y^LT4&o_L$WK6Z=MSHu8L~y(QY9cse@hF-8?|f?s+s(Koi`E zDR1IDX#(1NC@2vt0)ks=TUsd%^;NrLy4q4{2eJHAGYDIC4fe+|`8vfu8wRzd0e6tT~1H{6(rU5 zRY}>QYC=I4XFf|NWG<@Kf9!h( zDoIy%EOeBnZ!kR-uueyZ8_>gE&=bLi=9-4C#0_g#yx|mnT!{i^ISReiL zHf-GkK%{rs+W^1Lz{3zsTa{jP*v**vSh_Cy>6L)x{=XGjomL01?Co0CTi4OdhN2td zll3&zFe{Rj5}R*Zooip`72?UiefM ze$V>8$8RO7Q+NC+f=v{pT^?n#vhZiKB(>9d& z#}KUp|E*yvU>In~hRicB&vas4k|&&j0RSVICteN9s;K^m@C$5#>fc(W`xk7GAsm6~ z(@!b^e7#YTP23F zsxz1ep9|2rxtLyJ=rs@y85xG1q&hkQ2Iy3P_MgHj25@<+_g_#{V2E|y8cA0b;*~jS zn5^#QRoiX%)f5S`{#6IRzJf$3$dt31k8->Nu$^uJ>edeIScT^K)Hzs>_7*v4e(7;BdI^d4b73UTkS4*#vm;?CE2Zs#mh^U!Q;aVISR8Q%Vpai2QEfDM)2obBR6t>gAg&Rx z)8>lMT7RZ%>+~{1pq@!!5ULmgtMvARYeo)QyHO%9z&dQpVZV;=HcpoO?=@1Gw*f1G z&z>ucW7vX;e1#Ckn;1pQRZf1%Jz5u8x?dpJ$$X2w*g{s*fT)=J4bZe0gI4^rQpZsk z;wYrY_H>nE(e4Mz^Y`fiwgLuV5G zFd!iK63wK4+3WF`fc*^aJv4_^72@^{t}%W#rt~$RhvYYq>}%)Sm-r@mpTipmEgjzOj3nv%%@`WK(BMnh&wrW=_q zsHWwyJSmeYAwdE&0Gw=9lH&2CES*?C8N9XyuhSXSFB7SRk7qI5eM3$JQr`}gsOrsc z@ul?bKEkDs`aRH#_)?|W?fbu^E2EOzB>|&wUJ{O0SOg%WuV>-L&Q^d7q()XH?tz&Q zliW8GN>VsXn}W~6t^0#BOOd%rsE*9Ag8tCA>{-ZmyE!kBf@J>y=$nbJ7v3aJ0Uv?dw>pHmLo9N*6 z+|IW`^0{3kkq5Bly@~=SNXtNqSAQP!Xs#fOrqnKu2o;N}pvOojEGW7tB3Ko4j}R#O zTN^abWs4&qpcQh0kpUY%R6(07I>rg zXTFgzBV~J_SUAV_KQUJAAe#Z*A$NoBb^qf4fV7S=q?GqSRk3NNeW=h zh}7uMXh<9>c{j~eV0-9u z!t|WWvqGb=!wYm=+aMi@g49$(VcHdu{n)JrK%;1~xV{zDC30F$Xm))eLSnQCj5bS@ru)+85Cdhc!C`*i!R=S`T)a)t586E6`LUAKPB`3f;v zqjK(yuHZ#L+A4Gi+CCMGDG}B1!7iJNWOLUHJ^5VWCwEG3N_5WAX&@kHOG|$0ssQNg z1X7-gZLP#iEhxkM@z=oI#O6;AFpHtC#7v)Qdsrvog5DIOwu6QC2xTspc#;p)2VJ!35>;-$HKqF|MjwQu@kF6` z6M(xCPpTLy@$e`M=rb1D@Un5C>xyg#H&sTqLY@&y&0rd(4>&}KcE5+`EkNb? zqh7K3Mu82~VSDRnuv~qsz$-WHp=0D%Nhn0eCS;DQ0=z|uE3uzH!G(mbhV~QrZE=&= zYWm5%R=ak#Yt}Nl_(5bjT_4k?Ko{p-?Dy!`BOm#TZB_Q|Fg)S|>DYox959SHy&|!t zrlJ_nd!My+F$&U0IeIBuraZCMK%tLMxz=Rdw7)?glU^T_K_4lbu$xo}CklqPkouB;*?#}JG5hhw4d zskUVCcmR`5O8zb#7E_yI`u8fBwtm@RYV$C)6-{imu>ls7DF1}aC#zukYJiD4U}V#^TS}?aFy}bgR)oI(E)# z)ZJox2#T!L*aS&%vvFWGe(^#kpmT@S&jFB9I+bjwQ@ceRxZ-3oWy^3l3bObw`o|>9<6Sw=F3OgZVvNJ~L7xen55b~|zgv=NSXt`xw zwZn3FOsDkR_ipq{zbj8;&JUWObHm`0_ zJn(4ub(JORki!nY4I8c9hZq2HsoQ4~3tsUJ5S)_%I46U$eZXA>I4RpZvg(?^scLmo z%M+gm8@ldkG<8oH1FkkzAv;4jnG`6IPVjr(^>aHf_|2|voK8>sM}e4D*LXk^t57jn zsgQ~AIQdG|)Cl~Aq`^|5OW>KCyF_b{k>c4K+Qa~0JN~%MSL~m8XO(8}zOiz72v@fQ zfr`5H3TCar%ytaQCLj@&dk%*hsl=0A%bw(p`*9BULN@@jfLo4`ix=pQsO;Dm>HmQ? zxR^2v70kA|NL&XZ8=u?=fC!ZOmuMl0-+!nEEFTLfbb~^#8xa- z)|1j+NwpdGR76*P2jiW};)0SNw_bpCMqaUq$5#>|@jX7~c&;gfzTs-gvhYs5;ST+C z9v?)xt+jZSlenEndR~AuwBj!s3x(EX0lQO_HUvoR(vy@Xi-UFq(qeRW3h8&BFe90c zTMI#?ZSpN2$%K%|z5ve}f^|0AsKL-#0Y>ZV6XSIK9#}>Yb~sU((mNl6@4U`6&H~K% z436)r%iROqi4_4|I$fU&+w_^Fog=+*ea2gZb!Xn89t+g46%hEF@R6k~qeH$o2&EC* zYGkw|Pecu=5t~9jqwW!?n@Vg&cr%SycNHUcOOG{T+bBiG9F`lgk&qE9;rDK=5xW^J zK>NUD_DL+B16Cs@(8h>eIw~}cm=As8sL)Mi&={{#D2Z8UW0oGrC+fB7rV$fL4D@$L zfgat6IcBI4BT|gZY=f`dh(X=;n{eQ#Zp1F4_%zk41ET3QA!4ry(L6fDmUs)d!AH!YfU-k| z>tLm>>d`;&SlPkfxg6`5O+?5Dq$B$PGHwgUWo8qC5@6k_kffrJc? zga@&oUQ#8slCD;kwRS~YBg0Ly-jQn}M#%javD65Y-iXam71(w+Mh^kXAETITnEG9l z**Q__D?pwL-CV!8o*bO{6*4yoO{*MDhk+(_8l$?Qi0C^Pp1}7ORHABtN5VEd$+kgu z1CvveJcBuzQFgWrHjZvkw$W|b{Onp#Bo*uTK768}1{9ziKTO(49;JCrdGC0Cb<@&)x~ zP?tmjv&iljIiFf;<)DzrWqb2o8SZ^5qnj_ZBJ-n^bY1BEI#4R|FF51~Ml=HWGcHXW z>bP-wv zalA?0uI$|K_qP9L#~53D`h6284uMe{nR6xNi5XwfNJW@`}zMmf5`u zd6%vV`1(Oq67q%|Iz>brnf58=SVIhbi$#gCVC|$sh}uZs z5@4egxeIOLEc|3pNa=Njtt?zf719n-Z(Lym3%~QCEsU^?>mLv-UE2F`Qv|RB(SUEX z+F-N>;4Nlx%F~-n*N>YdJRL&y0bN~Sg0KgZ>czp6#?C`}92R}53MMM-i^##9Sf7Q?Kzy}Zc%~IG!vXC5PTm8sPdG4Hvao~lJD3wP z$tuuO6&e&{X{(zSd}oblcQ?7o?gSQ}g)I(HBO;I|-L*}1Tqu>4!6+ol@@D$)L!1R< zA(lDI5#!B&E6iLo%%CqeE0fFcK8nwy5T65tXG4gpcWlkdI@4ij>hFEK2oS@@OB4{Z zl~Vj7NC0MhO7tWH;nQOWaf#6OjyRSvr_au!1mm?drcXJQLt4fg&xH-hAAvMaP4%Ce zDpB0u2ydl$awX1`+4)h23%^J@Io#+*9-C!2*m7X+#{14LJM-?TNYNZG!Uz#u=8nRh zWkeN3Ts+wc89Dwc6Qqv-G0uL-rSC3>>X;oVbg9eaJ%8!&5Y(P3>a`^|~ zK#ex^+*S?`|9x)@4?l{5v1gSE_aG#F2|vCV-1rTD90uJuymPr7hdMV7(#t{h=Ewh- zLS^o!bNjQ(U4)Ua*Y?{4eQy+aeQ)yKW5GM$BB+|>jU@Pk$fE7Y@F$VS0pUPkoDH*; zsZ2AU<;q-TI@8St-ZH%b=^?1HwMGMYH`WMf1PetXx?vE2FvN{UXD}viRX>`_opW$G z&k-p?l5HH8Rfa1V{DI+ErNd#MR!<%Siw>gjRS^%pc|xj?-UH zD@#Pu(BzKLh;fK^e@u4^?B_DqY|T>cQg$n+j~6G?^@)Ro$DQ~nR^W7Y zUWHaW!SW>N;rQVDQn3U40zKC~9hgL>bKNuDYhtZrr4y*zh$?u91IJ(DT#NKtD7kP4 zO~vDGVY&acAkJI`d>~K&{alCBwS=wNT=zngKRg}Zwla}SuO_S|T^A{L$@(s_4h&xx zX+K1WM}w$BvUP|#o2`>CtE2^dW-Q3L0i$FeFX<&Wp@1!z0_;{uQtbtr6^zFx)-EcH^3fDr8C)G8J2Y7Vx*+)$A#?B55fLe0R*gWtQ>G`8diVU}2q7Z1`Ev#=Ar z6Ha)+riu07z&n?L~pM9Y~-2I>}+kPaDU!6BsF@&@2 zSGn>N3BC3s=dRJfIjw`kOM`(_x{jBu=*lDty6%=fM_1ft2*H=$*s?XJKK z6!Bi%XVR+NWT!F8k`>o15+_oc>Y;-#g=vFAbuF0Y0oy54Cl$NnMN*^7e+u0YgKOHichY0HZX_3yDcohA?7CZIEV|+a z-B`j^zJ?c&nHxo3)WPY2|73lp9#{*JinFg2sh~K5l@VTFU)CDx<*ukq(YM{zRzzudkgv)3g;^g=> zj&eO^?e?ew_OJrnI@ZgvF$0mqR5 zl5COkH5s!4rsK5&o|&M&#bFq5s9)#+>Myy10QGNCP)l$QphiI;%qUVcLTZ31(W${2 zD_v7bYcQA9Py=AvK{Z(Chz`_X5_@yID+qeiI7)Af8aP64BP{!5)Z%R*oHin$z4(+0 zYbPgetFxX+!ZWQo&6x}La*+nLri0*B%!nSUndO?ZtjuZzHaJ?=vNEg5WEsl}B%L&= z{F9PeW_2)RR*BS@RTMb0I%v!)EfyyFu*IxbnT8289RL%A9BY)T+Q2q2*<)ah!H1RE z!NJeDF%Aa*u*Des0ap+V{@y646y@pYNTm(@24OuL_>M5)MJ`>obf1N~WHkC-T>ypz zM>PwGCEHkBr?Q(Osf%v7o5%o;DzbHhr;IqB3mdeJ$Q0eTx%GkC9l01-WVeCmtN0<1 z$%iz9)b{#9{i3n}H(gDo>(AY1B9|rwv|(3LBlh~lTq2L!>>`RIo9Zr_0?=Gx&&R}+ z9Gv;1V{;5e(r)2fAGf;?-_|Jrmn7lEh5fwpd7hX*+_mgso|tcS7}^|$OB{wv6$2WF z%gjw8`%&b5O4X3Akb~1vuEXdmbmVby;l@@#f!v>?MVv(Eg}Y_@Pf|gH%Gwu?3ILys z0q@nDBnHHX>4LCU6TEYNzzd7awTat$ZDf*6XXK%D;2l_>7uqTR@vTjr=;7tVNIJ=#anONjw9ni5hnXW%! zFOd(5GS&{+7K}q4<4|A)Tua0Ul396TH4_exhypb{XIvx1!G1Grolc&?U@yDeii`N; zq5#-8t=JwP5Z-gsx4cL;8>lX=0Kp(bR5SpQF2P9U+SaVfhu@cFKyvN;fu23C}C4pXRe>>WJn@-hkhZ-i9md0t-0Ecgwdw=0ZvCCPUt9A91 z!HYz2x|W4|Z*^@LKQ9Jd%R;VkDvK>mNo<9awUvQD)B?y z6kJstza15E96&WIj)Qoo=}JO0K|ZJ5c#~aKGZCz+w_Jq*Fj8CORNv~&D&5}#W)MGhEd(+PivxgMVQ2vOsUUKd@ll!c-RQ1$YM-8u32KHb z2&7{X3Jm#iARP(Tqz7Q-@sB#@Mej|tVWY%mT1gs zGFirv021GkKnu41I`G5p!6MsRoUsw(MWBG6J89eMMc^k}(1ddH_(V3kvPYISmjGs5L3 zgnAxF&%v$wbM|n(c3u$7fbAtyXxNiumT$l#8xUcnMynO&~XaJpd=2XCoG^!{t z+xTTp%AkHiRHKkm4mydqHbm2FLIj4Os!xJenn%ZBLa_4GQgG0ka-0kttki*bR@0gx z$OF1lVi<;?AepQo=Ne;j*h?ae79CD-aLTac5#?Sm1zhnDF=c8kMN zct8AHJtJ7$w}ykT)jXz`ek~qTER%D%0*~osR8?Fx{iMF{vyBS~h%vQ(QuuzK z2C~SW=X(Ku!TmlV2tZSN8*w6HE8%qq>Wy+Q5O27d3xUSMyTUQ!I+nVO0h2Xt1Kz0@ zgSh^wtF%iy?|RkuG411o9mT(bS;)0N=a(yN=mnGE&S7>Fe@=dtasaI9E4Y#Q_8jZa zZ9w(D9&`L3rGM9jM8{jsi z*|5Cu^)NX=P1Kx%p;SdQmgc=jjq;ik!R64I5>6*tL;1u41oV zK_1BC*|_){=4O|b(k8w!*+rY_uhPsBZ01mHX1z4iS*;m3F^qDUwm#fQ-GEx9Fikaq zVLuv-{n+su)~@Y%4QuCiyoR-VJ5*!!{dm?3+R69pg}*U5%B15T%e@XAJ&i> zcCSSVd(2^qJMF%Sn0P<1=|iJ+Yk+Kh2w9tfkT10N%RF8M*=ayFe44;@Wv7Ru;jRY< z6oW*bfGn%$5eBO)bQIMCi5T!9?TFn*i3JS>&SJ=kF zn}R~xo#=|^*}hqsTjzs~LX=?&t>BVGbDU$2isijKzlC0OJym^NfVbzKWPIon}JWyO$(;1bp+M->KOkkRntz z8r7Ms(^(#yO1N!=8qrHri{YjI@ZBzf_}=8@$AWjh5q!Og$Pr<;Th@6H(jdWO6Eg3D z1gjzGb=vXNdBQh>H5xE3Aj`qB0a%j(JF*Jc%??ba@m@3G0=pX z@kXCFeiZNs8-gGZu;KnHY;e3}7e#WhyEVT`AJT}&01OewKnYlatJQR8bCNokYFpd6 z)n%a|2cmj?s?fNAfs=O0NCnK4NC(r6Y~M%}(@iF=&zx?K@RVEzBR{403edQb-YCbQ zd7gDhpZq9R$e;&C;{g7w5__%ma7d%e@4_rDIu#m>fgnbymNCKRI$Df?fGiLWnT~z) zIcHNSB)}v6Jq}(0=4Z@yLaxpJ8?qVtc~s`Jj>AhG>61Wu=5wwfQ0qn%NSmCAh|!8R znKpz0ksmz9{1s~KCwo*-d!SM~Qr3z0YIezBYYw&1fD{JCcWOm{%x0Onja-%m0mbKk zL=BPXSG3!lD(6LZczyS3I=N^LIXh!pU{}OwNZetssXG9yc5e%LzHPAwBGM4VmcO#c z=2tKjR+~re>V*(WK@ELI%->%qQCT-EpPddT=mW08e-FK&r2h7oVtc9QH;FkklcHueE;c#T* zqu@=30)U3sIIxcaEF%|Fl*z_PD8LEE4(i_^Z2b^zJqQ6Y&~^$9qwry5RN3A>;&jl@ zK2ozO?0)u{noULwqRTrb>|hSrEh|QTh-VGu#bYXG*9*>3Z8ft0Q>C4?IcU9Tlj=$< zTcz?LrZS*8n1rU?0`z57pkJ7#O#!;eKr^Bq&i2s98G4? zS2Qoy`VW6{0_10pX!b}M^q$WMbV(5Gr~pv{@xNoXs!ms_u6++g&bBXtZ~oTd4=Kv3 z{C}GKFGHeNt6>Z)6jz69c>fH~Z_C}kewMoY^)c)1=}t?FL7Rd@-`gtD*D>_S=gO`44XajJ`LR_o>g7`Crso*Kf6ZzzKM z@P1Q;6&ub}1v0w&1E;H;EK1v>E6f#IWK;}O$4GQJ?;2DB>^KE9aFNCzy1yS5F*3Xm zVD#l0WZelR(>=Qm4)dTHw4g5a1i6(+8&Qy-vatyAr}SEfXVBT%=RUN3yJ->LptGto z;bN}Sv*5%!pv?=}G@ob$|Lbo7ajBF=2^XMpm}p3AwC8Z7v&HRvkJC0_dIVZtW%m$td4V&VzDI$VgExvC(Cg?dj zL62I6z<>IdkvKW(<5vMys>BxPafym)hyFs}1wo8&FuTR+pf_Zo3SUZD7KH zGJ$KIeE2YMz;30;!DImd|N4i419dbTUBRIscgAoi_&nTNbYRFG|3O`NreNlPVBHH{ z%*HqhubvSI(r8D2*-?)E-r>ezp&Oh(eh`Dx>G9If z`1G}JN%R?&mqE=s$)-A$q@GT|Ah+_^uaC!meSiXF)nh*jOUwibUG?p9I+uq{ZA)lX ztP4d-4_NN$xVNg4PebfX_q&%(2vEZDXsu)3?NjX;z<+wGU2JrkRlcysC_}0%EG{|1 zmGug2SQ+mJS(s9|^qG)3(={Co&k<-^Ipj7j&Z+{oTL9K%u$^56EPuLUvsa=9``smO z!fLyzhOvps_f2wazbWC6~f-H zgaJ@yY_~^|qY0*n5k;rGV%W^g7AjoDLcJOai?WKT_?oTj#{wXA_goA#K9ZOzj~l1s zQSq%rx4?K()4hh!Y4hM<-zfFH8CEb=4te)lttl8qCcD>pxMZ&BUeBCd_bNQl2}~W` zJ@z#%2t;H$%(n;Q^xK0@15&(Jq|h`(H>#UO>WZI$yDs0O<Mp_^4(}h{r2bsoBeZ|Yl*#Hfxmg`)L7Gvy);;~WXmc#~&-v)8mg2teL8#_oT z_vi^LMX4SQ=rCm7C_S}d_a@Uu-V4j!0@xG=@f{Xnv$mxDzEQX&=2^-a>oJV0T`VDG z+#S;a)s?|wm_CWYLct7hoRRv>imp6gwBSY#DvE{WSPj-}ErIc|1Q0W$;lB{r55$|!8Zp8!eWmcec1gGQ|ikG(h(LzNe5 z@)f7h!F+Q?67$VhT|r>b&O?F6EWv)fFeSPi=YiyqP;bb6hT!3>OVNWZ-Jc{slB>H1 z$<}0EXfpD%B5Kg^XQce5>jSWe*qfYTN1xEZN<%bk$xs56^47HmtrqGi; zgU!gEqzun>{FozgM%r`NBQvfI5CW>lD8szr{lbrmkzH*XQ_=DUakCq%U=Z(k9|rM9 zt{@o1H7Ky{n}JGbgZ|iU)-1Ldga>on7#_?gP^^^)XMf9WS^>?aOKWYebpsZE%~g|0 zOhMf|W|L+rvq>|X*`%4!oThS4(=vZry9BGjfPkgtMjyvFqWX&`WFD@Q%-T9_5%!4-Fza0 z*_%`gO4+2*SNn~K0ZzsMGgnB5bmO}JqBwR(X>7ObxHZnVOP0ZtA>dC{A?Euiux*7K z(C<*Z2F}3R8=DkIWuA6;lCFWv*}$+X2sG#%HW17i!Z>RN*U5Y#+U+$+7UZeh zHxjRoT`y=WcBW++&t4KUlrtP)yyO<)usJiqSAb)kIJv=oXB={NdQjkw757AeLEIvP zAPza3#p-Je9z$xEuzK)}5{EMJufL~&6B)}+*-Q8|t%8Zs9n|Q7-ssBty21)}7{F!O z5`r|=-ep+x-e6cq+hrIn!1zKpAb~~bd=Exyjw=Yv-Nh)d#8VEqKT;N8JeD+Z$c#g= z!lw~C4KBc#L(Q8D?601LcN+fg0Ash)(DwKYSHXQHFk zLyi9}#DX}C4aTzUSeVL1<09RMVUTX(ImGVbndj3SKlY8FBZWtgN96JJ%kcI9-YjU* z+>Qo(vb%!sltLqJFqr_5^6eI}J$iNnN4aJxqfpQ%$lYil#+e)q#5kCvfyA^S?qpyW zrGK<0(c{#8Zg2SsSur8@8=NIKB*-|rayOw{a+U&_};Xx24Mzu|t_joeV2)uk9G1=e{K^lA9C8CYqWQkH#kckyQGO^wWRs^b92F$oQ znV&86#U8Y!O*WW9bb%O;fCeEz$TZYq*G{MVyL23|ffk9>HG+NU3&biiCKd^3ilIJw z+L7;T28#;|xPEe~y-#13Tzjb1_%y}mWEg}e9(ypSiA9&KIzVVseq8UK$H_>7mk~rZ z%C9Gmm6kXqlIbz!G;9p~mIJiebJ468=L+uvbT3g4FUH7^$lG*Rhir7eDTqeIR3Xdz z6+x3bI^apzHPKs8g;E?IE%_oFaYr;dg2HXI0aJLBtcBQxTp^A3fUzx>vHV4%Tw)tZ z1}-D^dAV3Bzwsl;&HN5bW(YtDPw8agfn)8y?#lo`ZTK`=8(d{uS!F1&=_YOa1jQ{g ztmYzgX7x8&&6v8rCL{{0xtMVSykBNEGB=TczUBqC^|R3W@FI2`0y?B>K%5vP*b$G> zU0Ew@`|5cDp&Dfek3Gf7aj4@cqWP;o{?Qn}5V?Za{%MU={X3Y)r0L+Tpdp>u<~YA& z?ED0JQ-z(&k9iGteq2RO8HYXZ9cJfyxE%1<$fs}+r%0)5@aym9rcC0g(8!mQng^SG z=ib#`hkhC|NN)7{Gy(rPByd-VI8sch9to9roy7`Yj z82{I>_J@-NCWtYFMOjwZl8`Umog(}a`~apvGMw9kG6F~ z&>iE@NZl}4A8zVU5CqoSwVk;Gxg07H5JVPt5RG~Ore9B@)k-wh3<>oH@+HFou^K8L zuHRo)+O6%i^Wp!`b9Ef@F#x5_dP=Lxt7}*dPJa?kcXBn>w_qqfr2F%xKfMYEf8&+M zei?2zLb0IefWT!*Tqi>zHLgWG8^oYQH|!PN@L>NF4HE4OZOx8Rfc|`=%i6_eHPsF3 z=l%p78^TmyiD_3`Ex@#!%@Ryck{+s42-EJBn8w*^0j51{mSB1eeVvp*uxnd$CIWyU{FSab&U7p*ttBzTy#Fj z^M)Z|2f-UHmxn=Be5h;T%&-R;o^;So%7}VGVzC78tgBFW zaN;rias@as07KWT|F^~cG)^Is(M{P+bn~zRd+3kJ)QDE>FYJOJT#@iay>ipxs9mQk zzgw#Rp{G-WUHLkGg7P4+`mJH^V%U5zd1IHjbrb+DEL^i7KbCx9$n2isB7f_S&jA!J zAe@dLis^{)9guCw)l;(>nj5nqT6MVWNuOlOlbAr-ag0gewj`dlnrX1jU^c0xjhe>W=E{UnkT(X)o4Qei# z6*iZH@Q@}Y9>%tw{wqdMlS5c9PfGA#F_)TDc>XJpmDOP`E33m?R#u0(tgH@mSy>(C zva&kNVNa#c}j21z9uX&&93J^vIUw@V+fnCO}A^+IdB)CQ>xB0Jn2ATHqNGa|zIzOr6v?%+W^P z&@s!KgMjGXJpmDS-2R91&8P+1+WKxK8f0+rR_3RG5yD{viLfh=5sHE;#iI9K30xB^V6E3k&H zz>swXLOg*haGhbK?+VyF-xaWV-Y~d9@J7q!`L2K+EawW?3{N_oZ1}E#l^5R?kUZ-O zfK&gQ2hUSUZ}D_pD)B8}Tg5)pAqW&0Sv8kK*OmJOJ6NsUEqI(JCETW%6c z)Ib>w>|$B5o5yh9%W#J^Q^S`+5POY(a4_FtA+elVO76wS{uc%=Nmc>WxIZ@4yWWeKXPF!g+_$f&!a>9F^gLg&O5`&h{RB5J>u{ zD+rA8I20f}Ow2DSvY(P6^pPuFp)wb5^4?pKt@*2E%aV242$zdbmt~~aAz1D1KZwg< zI*G$~nU8}$=j?BgnXKu}eQju<@D&o4I=Q)=KX7rz^=-#r;UKWJtTe-_?(p;K11kW~ zRh?4cZ**;j3&W`~AO=E;h|%2_FOxBNm;(Q3yii9k@AQoJr!&RwC-7O@?@Qs3UokKeaPt0Y=*ZL zR$OuWjJQ!bvW-xZ0TtA9)p1y>j>Fni;+9Duu z>HZe9#N5DfAf__MfdJlA#J)4jo3VgtEon~2aRUGx<*v<`;<*2dV{D}QF$v$EO3+aBIHyJ2i{BNi3}=Q`?^ zkv9@yNwFsd2B1v9q_@oTTEZR6ISHFcbH~1qsJb2o}Ave?h>P-Qd^aq0q`@#0zf5;`RV6bxyrHi;)j^)&R=qG){J>Ej-_!W+~UaKntFUMZ)z<1LUwiOG?4E#sgm;t|$U$yAA>IKt&uKYp8y6HOVecszA4t__cFXa(PDg4I%3c(hSE4lFfx zn=QI#@)J6s;c|KsDi3;)|+ox)~%^sq*CXalyXBH5H*jLrvW)IfiZASLa z>^6H?(8B1u&Cv8wcblu@DuMR0-DU?EOxN6PcG+UJtL-*dhu~n?-R7zgD(qxoY7E*b zfuetGx7oE)vD>`c{xZrVB8)sLb_c}12tvzo7Sg>$-DhG0X}Q9E`xz0z`zE|&KO_`| z2G#F?&eP;h9rS}Tg#k9C^DB_-47aTr(%JBFE8MTX!NwrI8P*JJD8OrNVzb*+GAZ^A z{6xM+@F4@dU;|2cMEb;N_3sOMoza?{xg90tdowH1Y=&W=S`h5bEId zGvSGsfg~MI&dt8xQ9C@5XGav6l5~w$jN;KwXP|&ttr@=_GY*U|kny@jRxNJvnek1Z~8UIUbvtfgicGxhk}j|McNNyRS1GciONxz z9M<-VD2WH;di2O1(xbf7qDJtf1T7+Im}`yvgL7axboFFpqez9#koB(L3JweqZfP9~ z-VbP!cMO_HmzgnT)6il5DB72)#Ss8KHw0)Pp#!~KiNMJ6!d0*jm(*x$g+S^>(noX{ zDCt&hzW6Ici|Nr5(dJFjRemgRt-HE={6t z7~xS0c5x%tuv3 z^QP|*6_G{P%xdj}bwtAB2tI^9lEBE2iI5IN{HvD+!6JzF?SwClC`E<;WglBAj4? z<8pk-uoWbDd}+)WO&L9%Anx?_fKafg{4fW8o8;mY#|u(*TlpH(9}0f_|2rTwvgq}I zPz3i5!lT!J|0SY%J*Bti^7VjFV=j}gzRGBilc4Buc>{Ba#3<(Se=s0)$t$ngMJ-J@ z|A*I_E6ga*N8Sf)-s=IO1BO@4ssaBm1%zJMfHj`oPTBc@&^2&z`!>35wQs!istE{{ zf+1IMJqlhA2=zXtdp#g@w1Cha>k7Oc5IRYsaQ`KudBX>W)*E;|AoO6&|JZPiR|^O| zorzu{<8_yk>VVKEwsNw^3BDf?dfA^ibBkNZ zU4tNilru&U5V~bJ0F(Z_9uVr-@Glh*dSbE4K%Mz|Kq&4>`ELjaog)hZ2B|D7MLPEB zYg>$f(EFZxRpUvD<28nh@daL}LEeNK)V>I@p&)~bdM+UJW$~h^q=-%keQn(l(`L^? zvs#=hyd8AOBCD9X+cPW+NFOaI`lK>+a_5%u0bohsJvU7 z!cO-NMu)!g2cZpzVzTY*ww|9X&&SsDpv@a)>)Asj5lUX#9ZkL-9V*PmoN41n|CORc zi_eNgAR>s-OFJ1I`Yo+I#M6tlc=w}28HfWr5JZQbl1kiPGeYz>NOy+PEx-He1pKkz zL$zU7BE^H%y13A%2UR*L`VFH*i2hnFLJ1EOA$scwI_x4ukIj4wC8}4!X3ZQloB6gY z7;-!4r=y_A3oT*fAnRb628rIj(?Oyo{G@NHO}@WC7Z}S}C0z7|9S;{>4$A(naM9G0 z&Ll8Y?dt!zaM8XeUS&*NaLr|#i{;XA(Lpet_I=1aCHxfWyrgvxpoy~hJum~K!xJO+ zDSG`Qtf(1ewTlhKl!Gr*81swoQ-bhNY68L@Kf)0<;h|IcjuXWuL8GId3c^DvhcOrO zT}a0d<8F`Cfm1qsth%KQHUrN=S^<6*Q-!SK6NAz2x%f~#EsHOW zDiMBs=?fY)x&!g0raRuR0zK0iR9MR3o1%?jGR>B72A2n2NuT+-EN_wvtL}5{S3{;k9sm$o4k04yyd7=g}mkXeg@>>wumr! zb%U<)utGfj$PP8$9BRD2dgJx_@y;OV!l;JZS?;&fNRyoE*p`|$f?)9U)NLFu;cqXe z(!yVTjx?s0y#mon<{X1t|Y~XczDsC;^D&Lc0@KFCfs6VVDcPN7L zQqY&FAQZ24{eV=Uj{u0q1=ABGiHyWgLjZ(em=_mi`Mn7eZhqN$IyU@z2k6)nKs!zc zcqFU~w83$$G~|siL{q)uT;dh78a*jwwsZQJg6l9i;eG@H4yEo|_DZCkpW)=0c^hyf z^>-*R6rx$keHoxSG9SX5?|f@BqPSomSqSi-le2tJclJorysqrCtN1EEA7Q|jqT{&T zR+52$!%}wZ=+ks2GNLXzkK-hzzL{v;zBq*CGnh`Ms5=bBA&u`y9B1gW6<;c;u8+Vr5QQQ&M^xFPU-MUq}o>Nhe zXx+!WnLweuOUYo!FM+eFGizoG!42YhMJh~H_YT`orQ6{HWq1BfboVYKa<+vqIG$oS z@#x%EUF8cf@>cW$TsW$%@AFu<^;jR$)+=Ex9M+K$1IBHtrvZ1OtVYh|dWz?Jid^U7 z#rHw+@pU2|bQP42@HH-OQghP?-S$=!C)i#rARf_mc?A4iWF zSZmO^UAFTtM#`ZZ@7$lEoTJmdCEbp?-A=`yNf&>J;%FQ7XB}`4hPi;X%M@??RUN(e z$Rmy1NrgLpU!)V=w@+)vi8tTGednX@;KE2qt#PN;QxFO7)So=Vs5={3Zl^^#qW0_< zto2v>_4O2L4~H5VouiE|aE(xUvCFIO%!{Wnr1u`#?6wsA8f>?9E3;Q$`D&vJKmOKx z$<8AQcsw2tC`@{9`wHy4R`2`v6KuLx?|c6ENn+Et9;?ftmZWmW(~nQnQ|}0`lM`0& ze2U#FE~(p4b5}Ye!u60X)hk`6?Zt@C zbG=c~j#WBR{ZSmN(5)8ZTXYaD#TvEuNcA7|6j*&F-mL!K{^KD&qVeAI#{(`CbQ#NK zB4GB8`*iwrzQ^WMyumy)?o(WBhYe%;OOeL=n!jn+j_Gei`WrMLX2kF&itqUci%~eP7$-(UgN$LnW!FYJog)w8|;N)u62*AT&vf(JVRNet_1UC@s?tRA_cmn>&Vea|)`U~-A?VauC!r-~Bi0zIybbw#l?_Nsg z=B}B^t>IRVx{t)m$;gl4UG_H62*+UySGkY zBG5gGXrL^W@koIo)+{%p?pb7bO?EP4*!CJ&$^d6;4~yRb__bIIinU-01Y-KE$?i&@ zy3waL^eO!)-z>t)7!`hW?aZj7J8tdF$Y#c{?F7Iof{9Q(v8Xt>Ijr8acGoC|zOO%VusCyI{Zp3s3S9vyq8Hc<+ zi;QQ4&%c69`n*m1d@6nZwHCyE?na-tL15_RAe*;881*7h?&t?SLM_lQ6+KR>{`4B$ z+J{Y>7!rIh>qk`eSTP}XyI!q6@7 zgdN+EI+n1thPi@_|zYSFx*^F8@vK?8)C{=}u%!n0N zzG>DBg?B7uD%+N>6O7Mnn7i>w-cg6tk^EQ1rG;K{*3)JRY;;<_H|UTz9x~zc@Ne3~ zt=hvHl>G4qmMM$dsfwTIP4mZf0T;+o#&9D;jWRVfx@`Yk7yqR${zMdiG+UG<{?_2$ zBj+Wny42qZdRV?@0z+)?k&CeF-;uQx4K91d-B*7?hxp5Wb$3-QVK0F*(1(Z|;rttT z;?EILiA~o^GU3JnN_euKN({bMk_nFzkVz_W{AeYa@F?LXl}el?;td`G`w$6_63`94 zJ3+MX66~M1^T$#-PKwb|u|ypC;$?Md(2GTc_v!E!Keu+@-a(se)F#isFfA@)X3E7(LJj(m- zILOX>_$9d!@=Ecvd3<2|P1%J$x7;c3x+T)hxTRLbX5A99HQ79R3AZvXgIk^BZfPmq z((93OO9@fC*DXZ24Ton1i+X*ZyK}@1vg|5G13F8wm)^0FIuAgn(Y=nqOvI>?D>~pe zEZ{rdp!yY1M~xV+7w565Ny(dGva~_2%gh|UP^!;rjh@S&JQDh$LB~M zS-02!gOv#2j(-pda^rUI*(yoA2wzNXr_8$2f*P%vM{3Wu9C2|g} zF~r}5sh-S4?wW16ayo(C%KJf?yDCewYcn;Q?Mztx-GtTHzU|qO1s~)*?h8l6-!c$I z2Ql{kZx+2u7yarU6rH@|O}2L`_(o$T>TR|hk=T;%I7;;%QXPvN$EbK4O((CqjBT?~ z+F@OZ0uH?>dIbxh*yUk~%f!|gVIr0zHy4dZy8gK#@zD}TEFRAG+p&y1*AE5m$ikP5 z*gsJ8Hbm7pI%5al3VWmz@1pdbma|>#x`a`MHrlC;`p7mVPG%*dd3$!O*Lv%zheF)} zfhBdD^H_nQp}H1Em0WkbZ0Bvaba=Bab1cd{$`xHq_v>&sCr2CaayCO>j?t{oNf9x<9Xg@T)mrC@!N@b-yK4oM~Zg)o1m7P9p6)!+k&v;RS*t< zP)~$-sace@gABdr9T5-03vaB{-@6k_mU}ClN81B0aIYr*f+yA^{Kf7xHtz<$MHrI^ zzx#*_`?%vrk>+w$3nSUrAz3S~8hVM#Lai%sgV}0HYo-&W#&E;QmD6@rZuYwwZ(2Rw z8xHrN%}dihc846RXek$SIaZsA%4V8=x2xG$^WJX98&o*hL;(ZnS^iqPCNVnCF^EHm zznQQmG2|v|g|uO=l#Z)glX%SKSFK6>+~wDbxq=am*2J~ z@gzYRQFh3C7u; z9UHaejJPC?l6_jzQ%maV7(fWW)WSq9%*NQ+vm>p}b>iqw*E>P+jC?^lNI%I%z-BSyE6^?aVE&bc)NXsvR0T)#c9IlCqMjVx>|s zXjEBcKINit=S-(}X=x2Ske?=g`@NV~RGnW^U9_-OKYZ<;T{ADgyv)1ByP#wt7KoaverQ^0 z;b8oC+vi4c=uGE=^6G+8XTp#vRVuTWQ$E+JD417-^#Xk&Y+bv!O!jC~;cP5w3!I|L zf~q2)aK_0qoyp~uSoK<{YvGbs>#KyknL1|-o9T=nBa8IJLHLRMlCs6+a|##?zca&U zI+Kd33!1lENJ*0bsDZ@39qEYj<9f|Gb_#l;w4kC2t2+C^KMr;2x_e4%oQ(5Fa_Myj zIOn;{SixXy zDtAoG7|}@eqJC&>e132ZE-Rm1GgmBpEZ#Ry&s!UB;X0 zFD$6YFRduZuP)E8XwE|Rh}W*XyrQZH#|&2OLZ^CZ1!hn0+J3%kl~Um; z=Sv?|BSpswKUFykWaC>h*P(E@lc~}>AepZ&A~M16e6L4EWx_Kxd{Hws+O*$1w;XRTH<@U18Z^=OmRi+}QQUvuhR_`*zVh5rQc;1; zY<>;4Dfw007L9UB$~{SJq>zQ(ly|~;+tE@vxP+ILS3574oB_=vGE(mDHriO!fQlh2+oe)_bW3nomNtm84# z!CK9+A=g|6&dC@$63%g#JTC1g|Oij z)7y@DbI?bnC3BW?a?8RO7FA-4gQ6=7$_mRDiZbV6$5*&i6gvkuM1y7*l@-k`sg7TN zmy|Xsrwp4+;bPU2f{MoVR#%oRbQYEu7RBo=Dl3>>DlH02s>ll?*-s0KD$9yWovNZa z)wpRBzRq5XowIwb^1y50YU7I@2BQdy2UB6rxlZNW`@5$?d~!9e}hk1J1; zJRKAnj~SzL#ts@iamtu;ok0%nBF-H*cBV61?mFj4qEZz@ibnPZ93bsxyK%t^g$=82 zyVx}J^JM6W;Psz;{#>jwxO;9q3cPym$|hUNeHa&j1%t3D!;}!46eissqAQKshaozM z%i2hXeJvU^P_P*ll|@(ri~6a&Ii*DfWr{B>sjObA_}Q>!O?n+U|H^DJP&O<2gQC-} zlKGnym2qPIRhYtX{J-Qt{CX?qJ#Pf^vCuVpy%llhEY(|P5lL)ZMBAGNA1(97U)bw) zp>a=%F!=PXRv>lE8l8_lTOL8Mp z&BeFbLK?-Rg>rtZi6T%<{BL}{m*MoqW8%~t!VU2wl)19ZD6XWHZmlgH0=fPunH1QTnS zoc~pG3d;J%0k0lTPH8E@9_|b0mKIbM%WF%Ov!n!q*+mk@DeTdshkG5ZsxGR)#;mdk zkfAVR1%pb97Gu+*_i&t6&BswJiOmO+?jk-YA6qi4TaKJv$|Kc051`j*J(LafEQsDX zictI;>xR((sq4{CSSPWQt<0|~n&;kH4rH49k9=&nDbSZS)7HN8Ejk zK&iyf4EUv>(Cu8*i4Eqwg+;h`Sy+P&96CDF!FH2#8tV(uZ2vrHW*n+56gK6JuPX6P zfoGLzt~|A>>YmGYJ!M3Mcg+lQH4r9DK6?sAOA&q=q1O_$AnUtd!hE1~rZZ#8h2y4O zG;P8K<7UcMGFx8S8Ovt%s*AA%W3JW!^WxoQ`J6d5l}<+G67*1h`CR-?!*GcS=B5}p ze|e$@coVRYH&~b}@gcxPTJC0=^l#rHcbg?H*Ng5 zL8HfwpD=l*44!JE+FQz$>Mu8bY_nW4v5>?!Pe2cw*5-|m-|k1QKk~BSjuYwUxXIXl zi=Jx1%jV{fsP#X*F2pC@f92w!)(g3Q`>qe7qGm4;zBs6LU-YkobwFHOgsuClguC>! z)s22ZEd@59I>-Y%3tVo9_~s_r+h2=tBZ0~7-e!p5>l?JHJ-%@vuLrIFUfUY3quTr1 z53&XKOGQ^JTBB%zqEi(;L(vRHqly}eetJljcTmyzbx{Vu16Cpo-YAG!-J^$Z*8Afm zMpz5inLmCg>wQ(xZHjJEbgiPx6kVX`MT(A5bcmu|6m6rZ*HhugkHr7*=hB~d6n#O_ zhZMb2(d!gltmte-Co4Kq(LRc%D*ElWviwgJeOu98iax05FBM&_XpN!;ie@W%lA;aA zWVvi(E8|-BoZhDwFI!3P0804xt>s_el&JkO+5m#oW}%`y9RFH^j#q z-=8uco(|^-y9X7$L(yv#tyHu?(MgJ)rf6?P+bjA*vMldoMH`RX%0e&B{^LW}+a57q zS{S#VL}a~xR`exBA6N7)Mb|2Ng`&lZUZ7~Uq5~C8Q?!X6KQeCrktY2)qUf87?o@P( zqIW8Kt)f+m<|}%xq9YXTrKr_YmjACFl76J<0Y!Hx`kem5QFHXr`j=6lHsV zY}}4?`uBJI9V+fZ#0i$d9+0Ya=l{j=Eyv%S@`Ve_%ZA|R^U^AOi&F`_dNi{xw%)HY zEM-MYFb(-Lx+Ad%9x{->z=?69+q;1Am^^*r#73)ekFWjZYYpGjY(kY15`m<1YZE@yobVP>m}16SKb@x&!#eJwwyDUuFn7Zs>&$08Obb z3jTL~*TM0j*84+U=iLniegTueTzJ-4*6rIrw6Gp|_1yBXPj0n5R}Z_?CVKm_u(%Cb^nE5)bQI7?h>&L7AQes(c%(7QJ&WN=SR!s2<*3|Vwyu{ z3KtHRzzqGweHuxAyoU+Q@OPuWQqMgW&}hCkwu-k)9in5vGkRBe_kcewF3O%Ap`+1U zGYCxlq;@F9ctidzKR6JzADkWkX1|D2f+b}*M=+OIqqnH$A3))(He{5bh9UlaoI6lNoAuc73nDuR?i~5SF$+)##ULhuExzlVpY9y*+ z)C$^o1nLMNZgWcUGfv@8*RL#ESiV>ruq6EE$x{jCwM+SpiON#3o>EE5f9$xKyU+{k z44fCM1OmsOAKgm;fT=n7*$qEV@<5pWJxFAiR7k{1DKwJHyEuV#%_%OaXe1TDgb)fn zuaqLOkc;2cn@GybXEzbZg(+YDVifmMwN3{~tU{g`G4_q(C_1HS9CZ=#Lo=Zn(`LFD zy~Kphz=43`rBwv&WrjeC^p}8p8rSD7@1jQKojK}9%9FmkR|T905D{pp3Z5rw(q5dp z6sK$BQ9&%_nDXp@^nOMD5R7Qxa4n-$P|8itQb$DAyKD$2eAhw$gbdLOkLmq4j&q!;2G-bd7fu*6&Y7A6&&FLaZrb@OU%-p* zVxb{U>8Fxm#c&8iD=n>rHhJ{q%ApiXD!f`gJ+X!eHDS@BURBNPxGFiXrmR=wa)arJ zb397HQD-n1a*rNXAgLx{T(6d^r*=x>C?T`}uM-_BScn~rI5Q$x{ATB5;Hq2MPaHyt z=V6zRix+Zn%w=?GO%cu^40Le91qaUyYZflVL6uWQ!nFYYEZu{jW|xH13oXM4n}%`x z#)jBd@Yc-@u{zKO(1W1uZ)u1f2Tcb}3mHb*tqrj((5;|(pdD{(h}DAL47wilwA=BZ z5a=!IVGp|h7qADtX#?!BtUU;t1^OCj9_Xi_wV-W&3473A=uy1P^n?U(;jZ=OLd(b_gwV?YSfIaB!EwBgu8uTD&{qJB8+TlUi;}s^$AB8>W zZJ>FeUxL_J0M!yfb#(6k8J`3&qqUjxkp?f5M0K@Z|Fm-V0r z@DR>6(A~RW54r^prX2@80-Dy|Fc#r~$t=*fK=VKYc&xJ)^v|H{L5JZ{)@`7pKo5f6 z26`Oy9nds9-j|3cjk7=pfaZZN0Ida`fT!WtgZ>?_1=t2U3onT{2)YyWIOr*OLrB^Q zhA|#b6=s1>Jpg;q-+i?yANRB0ri7sftG^if!+^V3!3^@*n`dh-3EFk z=t0o8K5mE^CmP1{c$>ZhdfulEv24&qpEbm0frdWEd;|RqbR%fLuNz`JK{p+1h#dkw z^d0Ow8pb^hum}C#h{du&+nTZ1EKmou4)j9&wWW=qmx1mCJqv#>_YmkmL5(!S=pKy4 z9MEgqz#jAf{ZPKJ@y9`>O1sjvrK*$wuf z_nZWK(BVB{5Bl@oum`=V59~o-%Yc1n!}tQ!0qxrl_MrKovp^pi9E+_2y)H8r+YDND zaxAtFbn>uR>21054vFz z>_M|8!@jFw%md8;y$m!L^ajvk&~ML!J?KBD!5%byI_yD$^*jCWVSI1&+fIhQ47W)#k zZbd8>aSY?u`dBOzw8P3+Y%1stpcSBJUjuv4J3+UCegOIgXwPe54>|=jf}6D~K{G*r z13DG-e?TihQ*VGhXv)uF4?5(&SnMF^;?1$xanRBSVzIQIc!qgPES3fO(C=cgJkW0* zjKyj}YaWWl)`NZqx()Q+t*{6E7wB=&oQGlG3*!ki3-r&Rd7xi_)`HG_6!xI?pxZ!u zJqCNwjiARtt;b=Xj`agH3v?1_9_U-3wV*SffIa8}&~2d0K@Wm{40;@NS_oPPdOzq!(3e4Xf_?;g2s8$2^uv1o3hY7u1ey)n;Z@j! zo(ftAdJ*VG(7(L~d(h**hdpTV>lm;75jT9We2R~G*)+qfjhJ2RHr86RO@#TFVn*HS zhL})^izX8?ufiFY>^m!BhAB23pPkxJ*??(RAH4U+OCK$K= zgxMw)Xnz?0Z@<1Fb~&h)2NrAlAng7Q`F%e5-CCXw`O+I2Vi$YMr!GD$e=PDJ#hz|d z3-Utb@4u-b_FMqU+P|j)u7CBAmtzlzB_uAtSX3{{-voJCEAritFKk7A81hocu|&tq zzc5~Y5Pr>TMV=1%Y{&_@6$P;Wf*9Z7pEtzzBTjMq zSM~Twhx{4rxqEo+FNxPb7V>9XkrzV#Tr2W=$al0N-vs&2R^+=Of4&v@VaRv2A`b=) z5%V+e5kkmrJnXf{#GmULdZXCrTluxKWat33GyS5^WG`mKS{cOc0+yu_d@Hu z{sper{d*YlvA9QSNghnZJxD9^bjbVQ-l`@0v5?;mc}xBkLcaWtmhI~y|GE|VCddo# zY}tM{w;~@4`3bm3Y{|Y5^7>Zf^^pGq@`dm- z-oM3(>_D;pLp~b!f-TN}$WMj*VqgDHkM}?16_B^Ieg)fL&jtAcpZ#2IpAPvx$iKlj ziu?CP(DiRDm@+i!w==;IBsLa%)wU)R4I z@*2on>fghVFNgeHpZ(j~J{U5LGoNUPUFegar{(F8S3wSFBi{dK$Ne7*`K6HOdF6rg zwS6Jvw?Urcm0uCJuZR3e$On7nC2{#C$X|rKk5^t0m+yxB709!_^2_7$!;l|^{4c)# z|6{!Wld(4ihH<|y{+o3C(;+_@m`0gTUZUk=A+LJ|_t@V012cpJ9G^S{x)bsmpM8b4 zuZO(Da}BXnpFBm&H$mP8m`TVd4{G^t$iIaAd|&-?1IqdjL*8pA_Ge!C(s+D==-3>{ z_xk4dE zY;XOZ@mC1>XOQ>w%4Z7qu%4fypyCJtBKhrC(jmr;1 z-VgE;uRKsF6gWPDzzi!PpWu^^)$(-6?}WTL|I=YJ7V=+0o`-c-UmwP;NJyC6Mmm9P z)>8_-*MOaU>Kn%&>2Z8L_S`(A&VKeD+kYD*xL+m2oJea2E!4}9L1I7o4GG6~A8DiG|D&+UJBL5Wf^^l+H zi{DTkKO5NXgP%0S*r&RE@-idZHxTkiAb-&-5A4+On+W+uM;l^K`{Yk(c`4+7hrFfo zuZR2?(#ai6YUI2Lwiw*GF%iBE>|0sS-dL8m9KKpaD{cy+| zMz$=!0P;a+#9|M4%MaYE<68~+HpoBm$^WM1w?e-B%vg)}(~m*^HRR)c_M^4^n~--N z6^otiljmspH;`vTp5v8!?nk2dEvx|Ymiliv zq5I(q$cynCQ`A>~J6-<<$S*03#jf_*%Z{S|&p`ex-qJWa1M<+^mdDX0koSkYrEzoxrI0jiYBE zKNs?Bum7HL^d963Aa7|LeGmC%3tApWUGbah^r{~pM`NKkWhLgLuOCP2ek_E1@ii@v zqk70Eu8zf)`Rp&#_M0Go;JTK_(QekiCf4G<>@eij*S9>5g81$CEy!!VaSX)AQ99&< z@Y~~4K6!i`jfH#<5&0B-XLrkbeewOZdQH$fvJsSssLw&qChT zTfPjxC_f$Y2O!6C5wCw*JU(L~zZ>#-UU@(UP_!RkA47hgS56)u%Iopf`Q}(`4>R;S z`Mi$LCdhX}-qL<)H{`EFe$;3Gp|(E^`5m{!Vl#Yl`2!e4Mz9;kKjba_{+15;n~=9O zKgL2n@YY!DdSCh1>iP>IUk~|*KKTb)UJv=DKaa(J5xBnTP*gTSB~px;B{FBvl+*U z(5t*X7VGD`UZ(5oWhvyB{{rJY2xYgQ6EfoW|B$cxCH76eb?{!j4sL<`gkQ&6#DQLg zJPq=$KKqW^{!_@K8)Gfrf7=)UX^@}F2D$z%ipOanalxc&8zhf)50UU}edp+Nt( zKz=jir+ej|--%y^{CBPR|0(1Twj#HC;LHrq};YyE80wIn_by9E2nK{PTP#p zZ5`-Ae{@?*oZq+=`Up+&(U`6unK+dlh{`(LIX3t>}k}9#b?aRn@O(A4N}9^lU{hRCKPQixs^_(c2WgSJ5XF z-J|H+ii%+W2VZtn`e}5KbiJan6IK3?lzG)~sdrG(uTGcg$Itv}_B*qs-qWKc-7>~+ zck4KrenU~C(dTF5rTke%KT-6>T$$fxf~0*E<)4+{95(UarJTB)Pt0rlNm`jLvdULU z`t)i^kKQ2Zmun=QbCaZ{w@A8qt)xrtlhpWs=rjJeviv(9lJtegC9Ql|(lJj-dehUA z*8g78q-Q1l>j6oPMjz+(=JOk==_J-A@zEKIDIT9AxcXd4H!J!VMccaH;VjzV2 zOX}A~T>Z;BW((O5bh4R`)NkLz)nC#rTWA%cea(HO{)S$z{=40?h1yMxFILJ}>c2A5 z)t|5C>d)PaO`}Sre&QroKc?pL#jWaB&UW?PIoVqVtx@T?=SEJzShdL2ze>%`5hpfL z6&X_h{N=9xI1A_tzkTm+uTR>S0`70;<>W?ug&JP-TvLt z-_<{BlGMMoh51sAm4s^`{5ScB`s}4B_z0Nh7NUUFCLiK}X}trRK%mWFcpV6~;bIan zll~|&6SpBVA()7#C5?cU$b%KIOMxu751o{-=2BD^d>vIJ+(0(bg6ScMldN?}wyCH1 zBWMQGCy-rFw$DXmFXmTX*`nM4hOx04+f`XSFsZ&UOV)qcRD*=Fu8mKvIj1*pwD^1)C&^NYz_p<}pfXj4Mo4z;DueDaY{ zHFXw{kA^-YUrIhL^n3CP$#)I)>j=J#yki7+1du4dfc39!v*>Z8LN5$PR^@Au8=-#= z0bfPl3Z0kRV zXNL-?b2<6k&_3p0L4Il|2@6r1tH|et+8~5&mXV(o8i4OMb>xdfGtm2Ot|ng*s$nyh zldla`u&x#4>q3v9VQuQkuQGyM%-gKw-(n8$!f16jU&Mb{fhiZF)Gk^EW@Ub6-ge@pCTs}1L2gN$Va#Fk%i=u9gvUl z%;!FWe?xuYPdFrc$CZh_Kux?Eokbs$g=y4Cwm^*z8ua* z@Jo1TXA~nlSb>P8oc>F&CzOMIBapJ#9FLl!rT9u&Vv16uRfuIut;um_MHBIzveaa! zXGXDh87Y^U2U38LN6%zomz#e?Vqf$C%1pV!d>@H7qFpJu()=3|2cvyZeacnlQ6vs^ zs90#EEHn3lKXT$CBW1aH4D3$x#Ce5A$_mrOc;9Ds+`}sC%{EBkk4Rb>Da)>hd!e56 zQFN;jdY3MWZnZ+Uv1-w+k9883r)ljP7&Se7{QC^(n_{9EjyBOV|&<#&S8N! zy~ZGgK4;6;lD9&OSpPcmklz%5jFewr3Z-rj zA){Tlmyi+Zb{Hy7xArLKq;4zmJw&doDfbM6W}0QD+;=^g?s%)Hk+PYr(Fw05HB#=s z3#?%pDO*4`AYTol;5hIpzb(OcT3sMz%iCZ=b>72I9f8y&I4G{ zP9~wb}bIzjXZXHsxY0C{_QAn&Bisg{xQdJsyX z3~Ii?v4Hg##wq)|!zU{=2gl7j>NCbv(7-e*T#O-n`lJfScNXxEzM-f^53R|kA%9DKRyzCTIfyk-(3jaG5XM#6sqtGCEpB(k}Q_nPFSk! zPLQ^vxzKahwf@Ydb2674jM?fWD;tU6eeg5opHCqJ-v00qvZS{S(%UQhK^zm_Mhkm^ zH%w7!RJd!JFTfxzD*O$Ye?&q#%zR&!EV&&OWbUJ=5H7rgjJ`i-0~5@7;4`vPlFX?X zlu;3~HfkXiURb8bjgZ%kWU~+^Y0&_~78X7^(a!8tTc~A72UCQDnKGiZ@VUZT`yOXU zwKb2@mE4r}=0CJ6smhgKu#OYVcF71>RP<$3_!WtY&g>v6Oq1a`QTXLZzd8!Plq+e{ zmFQHK*2&}>kF%nuG0|BhvZa$DXAzr+CBw6%I3=7&x`5K5J>41#B%Q28sx|oZh zm9aMEbaP19jprHOc%JEv=O`7=_T6E7mN^+FY0-AZJK#LBz4i*96{#`$toF{T+}Zk zvjwsUlL!x&tt5-_5aFwAsuW=!bhw5jSr@pPw`)zosp7a+CRtaxN{oi5PO&5(OO&19T>>SrONZ(H`y z1?K4(H5ms}^33N`Fj8J-n15!9)8J9;8;q2TO)i2~bR%Ov!{lO}7Cn`TOGLtnZi25V zGesgJdLMi6Qjy4v?&kWEFA`bNCz+Tf64}v}OcaPjZuA2dFk2+1Mo*?>j!5K1KW9CK zA~7ra8s}$`$zT*mpQL22NK`~?Sin4ysEzJmqF5yAqVrf~upKFPWSOALl0)RL_C1wS8^CRsm&v|kb`NwU5|Z}j6$WRmqg zSh0WYh`pTHFvJWit8Le6Btr|ZD`?wI^jD}8JZjrr+~I_#qv35&BA*tTgn`l4xeLw8 z2+bwmgZ#kIPU`n0pBZ`@!EM{?Ht@rZ;29uo(^;LB85qJN{Gpp54`luw0wct;?t!7a zJX@iMkr6nVDj9HcFsNVEa#nl{wzMRmFxue9R3WK{#MBL}UW%iebv4`}1iw z^Zf5l$QF8W{f=1Aseit!KX3voIdvEGTon5oVFUXOrPRiY?x4WyV_;q0AYQElSyUff zVFXU22C5xW#g>Tsi@>@lh&yeYhQoHp~%_LqZ&KNQgrY z3313FAr3htj2Og%ByeDfJJMkH7_!72Y0z^=8dP_r!K)CC#51H>{AM!o6P{BMFh!W2 z5Qwmgz?_6#T9S1(k^-wp3Xz580elINA}N`=mH;W*WM582f)s6X$V!kx@&qX^L|#g| zRdkGM1Szb!&$2iHQdslIOOV1UCNDt>tAxA+DXjVAB}ic{ATL1*tCYM1DXfL$B}ieF zk#{6WVU=Ia`qx^E{))a8Aca-A4{`}oSXJaDNMTizmmq~zLtcUu)?)G!q_CEdmmq~z z%X%b8VJ&681Szb`$V-sIx}3ZODXc5VOOV34io66VtYzdSNMY5Hmmr08HF*hASj)*v zkiuF)UV;=>J$VIESSw8qafLsmVg|Q@KYRw&w$w=h{%|sNCI0Xyl!qRX_(M13x68$s zy9+-Pe0wLHz7SNP3*kOJ5MO~Vggxj&IAbz21iE0Kz5=X57wp9*4_^s%!SE5S;1!CqmmLPDVncD;EcQrIP=onyiC(FlS)3<9(Br$`1m zpGKw5zXor0UIjkVO9q2NLsbH6PNUSbTfS6{N07$^>vJNUiv&*v}ct1)9 z$^u&;_`?U5`$htv0{*aX+6R{<{9&&pFX0b+9eD|V*f*1x z@P~a1O`UGMDA~6@f_x{^jh6&l!5`fTf7lBC=uY^%W2TEZ~pMFF_;HS->Bi1^m(31Ao}}Y=>r7%e3!10T=?JN0{*a{>V5}8D@9FANEcrrkdRef7s76QEPT5 z{9*5=(;Ln1gg@*T>8C^ZgHv6=ANHQj$P-9}{rVbuN%+HlLyi~1ANGF!k|p5}`wvu! z^dkIWA7CK@{s`wFcLV;rU7ixL-{wq^UGF9NdP?M?W@e(gQz^_j>o zme7Z0Mo+>Y_P!w&{2}~dzr+iUir~wPV5A4&5Bn9aacO;@hfPK=!XLJVKQcsw4>7`V z_{08ywIx~f7c=ggm8^jG^0o*5u#eq=YzcqZ-#!3d!XNhW=fO+(!~X8i;2onMeYuq? z{6fjKa45-Qx$T6d%HGHfnhQO5;eD97Tuo%ISXZ#?Mn;mg7vBQ@u>VOU1m6B|DxxmE z^}ru?On58c58E(BrQ-hHHqCQjAmI-?V9r89Im~=tl`Od(6=W`P8n{5rp+DgdJHh-M zSp%}{B=a3)3i!kJ!XLI}dfW(k-AFc%!bHL!c3Ai%;SbvuY7%p>Q-p(=GNQEbxx!le z6aKKpLjtajd{9$(x6-xNSK2i83;Sal`@JqRp zCS4JbfZfU5iqa(fVRsgZZ0Y1$XAzr+^C0X=J3=7&xIe(RcWCJq#6aKKfm_M)) zYwgp`CveLw8{vgN>@&Ub9Hrt(_`^QSd+o4d<~{@_!X(1OWh=>IJVf}uYpN7s9(4AJ z?{{6z?x;oALb3{VIA9kTgNch7pG8qgBf7o+HLc$;RJdu#_hg~cZ68^ADL_)$J_I#0$@Q1xX zBqaP{mx_dhKkS7fA>j|ZOe7@yVV8@9gg@*Gk&y6*y-37R!XI{}ND%&D$odohu&c~Z z5&0zRf6!AHiimuYH5W4#XovVd1nEEtf7GHk21@v21z2&j^(!!9!w@qD^@M>r!Mzvd zIOoUQ@K@*z=6$a@VL38z>p!H@FwbQ+@Apd#bK*rJpLhEYVM+`-3}?)O9%ig97g0lkkg)EVWtrVXl9GgVTbB*Ji0*HawM`t_hw-{M58r?< zhOVdVzG9J@ig?$f&@gYinI(D>X`1r5lu8dL8j;eKL*$e?>?6#xc#RJwY<{c&iuha$ z?}El4be#ewX22mHh-iFrYAsX(IS>X8X2C8&o{a$EQHKP1HXoMi;ubCInXw%@nv=wKmu{DT}doh{ZJzJE?D)})t?1Fx%u&P=qpzKgpMu%SSvGo7`Y9Ax7D`H=1O-5JvZQof(p4;}4@)XgC7q>9;+qAf zejlk{oQw(FmnDS~wz|V9{3MGQxKWv(uFa(r162TMI!Ky6=9(G zP;7iCj~C1T21fSN&gSsu@;^9`lb%>KnjJ~JDRJ(T41~a&66cYZcvE6Ad5JeAmXMct zQ{sH`5^qXeKwjcaiKXNv-jukIyu_Ol%g8$tZ%QnG4GC*);-bNboxqzCD|aDF;!TNF z{n7qWB5|@ydcvE66>yda<;!@^IyeaWA@)B=Kyqvtmn-Z@e zFY%_ttH?{dDRCKji8m$Ik(YQ=;??9O-jukUyu_OlSCE%@Q(`@Ng*PRxoP-z)0MW8c z>-+#3DNjIM43?ur9&VyQ;D%=MD6sC~CcXtl9d07)9&RE}+;Bcs1-#j&`*y1Gz)c$u zyxGQg;Kmy9K9zXj#_}AvvGjo(mSI!Jii8Hls7t^rbjr`c!ao9Dp^=~9+k4<9`IFO- zBYvm(7dP7(p@B<@tLP7(p@BoVMq5&`QZ5wK1Y z0qe90*T!I=lSIHeNd&BuM8G;p1gw)nz$_qOU%@ejfbBwzTm+1~i-3`L5is&D0!H3( z5im9|$=ZUf&I)Vd zcY!QGz8XFXYs#WEv8H>#gzBJU|BkGSH9ZdA#hL_(eMU`;f2u_m_7#hTbJ8f#)gV@*tG ztcgx*tciX)#F{v%6xKu}P8_wdUq3)ECDz2QlSggr{rLfQHILfZf1rvyYGWS|Gm}3Q zrL0CSJFiC(tN<@sz?u>*kJGno5z#Naax*U`=a~$V}x?8(>ZMAd!{Iqc*^rb|8_R%A+>Gni!v4+16aq zys5IS6GS2}l}BxWHT@Abvr_Ls6M;2-jYM%OkJKB=h6{EElL!x&Eu2zAJVf|%nkr>54?4TVcP}J_=3K2QI8_|i z$|P%&tHfw{>SPfR^X!f&gYk)rAz4Ss7AP@TKFI@=(4HZY5>?uZt_|bkle|yKazvWJ z5)xEF41fNaax*Voe}MDv#O#YvLkkrShl^uqH0nX{kJF z1FVS&Cv_8afi*Fak;{K4L0oKGsZt4dtV75q1 zP32J=U`>?drShl^uqGyErShl^u%=zmE>7i98(>XLRHX8#4X`FAYEySGQ7jU5sXS@} ztcj9UsXS@}tci)WsXS@}tci*BsXS@}tci(@shBzjuqGxprw(8}Wg@XPl}BxWHBquH zbqysIBC#`-M{R&LF^2n6dDI426BERm=)H?I4M*gYtN|FS7>cMU$$C)mrwKj-QiV0` zgt5Y!UI8n1t{;LC8wOxazd{}6c=w(T*G};o{X*SK@&=S2 zbHf~JiUTP_d2tD>%gw~$lwoWf5UQbnghy_wII|1~HHLE?0)%1=$-~GB6piYU&614i z;+sX@q>C()MWXsws9SN1(%p}!^J8v!N9$Hd-Mo_{1F6bk99TCsv!bLB2Ti0qC@08f z+*Q~sTiEvy-z+BqOTBEyUAoTRtn=QLO>~E7-Fvm}AeQ^Uy-jpyXx#_2?%6DN>)s~1 z*J|CZTK55#`}mP2x{qqz$F**hG+ECGQBR_&D#}7d zNh(on41bDF*yfpiv!RL~FvK?}PL;01_SIqg>uBq#qn)>oNW6{%tm8!U_f6_}N7r$p zuZ|P_b)ADVa$SmDd9h-%Y?PIzjFLhE29(y|0e-{yOgP)N!Y`jt%iT?qjU(HcJOLZpRv3$KAd$*obKql*qC7^nS#6XQXXm4p%wDP(+PRW%NnKIGA^s9=hO+P-2)%&s zgwSQk4~E9$JJCo6#=Zo~VGqV0=7XmSV-NGeQ-!gI`QWL-*u#AARAKC4K6t7y_Annj zRTz7i51uNFJ|s85sxbC2A3RkUdzcTNDvUk6ggO#q5A(rOg|UbE;Hkpc!+h{mVeDZ(c&ae=@BqY7 zVeDZ(c&ae=a19(+7<-rxo+^wz%m+^!VeHG1WnYAHl7X?WVuK~dE--TpErGGy6ex_n z3T%pcfOt3c|apTgRzJCP^*ivr(`2xStFvj!3%pZ_Ano6 zjbrRAqb+rkfw2##uEf}1Mn3$L82d@c_ham35Vxy`266I85tx(2DbqS6)hW~S$ess@ zA7iJ1!r1xHXZ)0DHiF&kDN_zveae*MN1rn7i#rQ_%5)GC`jqJ~B=jlM(~!`oOwU5X zJ!RSjygFri4p@E4bUG68Q>HVJ!n$O6F!m4NYnqF(hXlqR5*T|(VC*4*v4>V+t%>~a zVeHAk*!y54hxw4LEq*34!hFcqzIqqB!3s0p_Hy!(FdwqD#m_`(VLoJQi=T-c7h`7w z{TTaf6ciE|d*~&W5E2-BNMP(CAI3fcngV0zPv8n;C))^PZ+926HX>gQABC~=(jhSR zKYr~n;ntO{(|ahvO~UPvmL~cjSjBF zCDH!sNtO!Cej27{*n`=J1~0rP%a%NZONAo%ec!KZ}<2L9b|!8;P~D*&6p zFI2Jyl_gm$w;wIt?1jvrxyW!adjXa67c`km4#tdPlEp(O3bW_aH1PI^1Z;Jrw++jo zX@mt@9uwZW=R<|N?)lJ;Fwo~i2O*&xX1=dVmfVjDGMCYV3p{A!V)jqN2Z7mdLT0n) zLp^SUOphDM<~Eq<^P#L;pAQuw5|78?d?@Qzm_03guCP`Yvp);G!0abrm)7k0&^Zw3 z^P%)hpATh)`g|yB(dR=&Or$HgLxm*MJs)}{O4H{Qo`Op>Enm2ns)DzE9DxM0nzZ)j{eCVr4=<}gpA)(KQ@{vq^ zK9mO`_4&}TNa*vStVf>@rO*0&C=>d8=%ujH=R<3e(C0&MKti7nW#shv(EA|K=R+w` znEeL2DQ3-G2uuc(2oIORB#ZG7;oH+xDT8^?*(JU=yP8L}rr=a@TziwOKe$SahNn&z z0r9u4nDL2=AvqBl0<&kZe3DE`XwQ&Hi7M?J*M{-&NeU_9v|_M?1XWz+W-?Ab^;?kP zV)lgG1ZLj>n-KSW=-F6i^!ZROs``8=S3!L~lnH%4lnH%4lnH%4lnH%4lnH%4lnH%4 zlnH%4lnH%4lnH%4bQfIH=R=v$=R=v$=R=v$=R=v$=R=v$=R=v$=R=v$=R=v$=R=v$ z=R=v$=R=v$=R+AoeLj>4V)pdj#q6I#lW)^# zEH8ZS8xQ%SBYw;c-%wk?hhsUV0Ox1omicUE(-zGDH#7~me}U=ldlGRIBtGVbliRu0 z(>>M~xz47|el2i8qAPML6ewvgVVbVPICWpf#CwDvvO+B}X~-Zc&Rh^`)G z0q)B&KTx*jhDm_2<#}dIfMo}*n$M>wTxLsfyr!nL8Qz*)xW{aE5K&iYV-@koI*EdjI< zG`>Nx3OO2t&N+g0qw(7bd6?_JfgCmSFtUCOc^!NbFF~^|0>_~cT243r!>5vy(}P9l zVWkuMgQQ1EK<6#^3qE+=0rFrnZI@^u0e3f7ZX=PrXQFF}kICX{H+W`l_d zC5B4Ca?nUjhywLexk+GMOz2nCmzWS)7ZV~+OlT=p6(;l&ReuZ<`kYEFV?r#WEp>K!g!v|iUqb%G@FM2VpMv7kjCL8x7k>pVlFdS{yqN5@&`Q2aW(*Fk^4JT-K7aUWd-F}4L1?|YYpdEP^v?K3=cH|uwv||I4tf!GB z-$7^p`p?MuX%AsP0?lqb7#qfRLcG|_-b~gwNj`*q4_L!A+HVEvf_yQ^PBIi|cZAkF z7|R!sh3lYW|BkE++7*GXb8ck*LxM+1^o_hKsr?qDYvO4I+Vw#WLA#%WD$tIK7>*LO z<3l>#crbPtF8vC$+e5i{2c5l*(FpzsXh%~Qv}4;Ghg&{-2m2+%bmT+WOiVQ$`4Bb} zwWcEu}k{1hV%NPIo~&sziDU zIPrj(nLHTVp13kmp!ogUAc8?=1yXqZLn0N=BeUQBGA?!Dy*JmuhSVA9~89n4f z*nGHOfp)x#xS-u0u;Lwb_A6Zf)A~LIn~a{#K7`E(dk@C4wj_)G5@frQ6*L9eZbr5X zvi%0U3$i^0-UZp-0`C|WeYqZNh+il<2@y-OSZ+UBy4mZQL35EI_e4q7{mgw`=aPdl zTb*R>z_$X~vcM8#8;rY(WJzmWPCLnEBEXRV7RAM+KRCvUDUD z87|27A+iL>_Bt|~1=&1qgiMbc$>#sSM1yRsTZ3#=(+^>@{!AHBTKHUHtuDwmAG`qB zsM`es2kPdrDdcq)+XHJE6S?OP-?$kr8? zYYnoUj)Vr;rX!(2wsIsi$i{j!$VQ(v$i{>Q*;d0wgKWP+LW6AEkkB9-Bd0;OKR}{E zHcD2>$n1sBGBRASLrfw(T()oy5eX5#ubL`_mphzt_|bkliWnf$%r(AB_ycg zem9eG@~JReEj$RNTTQ)WgF39#g)^826aS_xY8y9O0vN54SHYPO4#)Jmhn9v{_ z6B=Y=LW68fXpoHw4YDzzK{f_MgKSJ_kc|lqvN54SHYPO4#)Jmhn9v{_6B=Y=LW68f zXpoHw4YDzzK{m!vgKSI?WTW>k$aWZ!PqN-cPhlt`@=4aE7`I8*$Kv}SqzYuKfUyGE zE(a@iuD5{^8-|#XygucukB|&MhkY*I4$1xsze|2J`Hb*e5T=abj(BRAPX?!q?SyWu z3-i2Z%J}6_Ull$?K9|L;g$uVKFZc*NNSVNj((b@lkX!t=UE866L3g6`Wk#?svfKTf zcM5?>kbhcja6JT($m)a(p%uLyUyrDJcIsbAz zVMqBuTV#`vM4}PkX_0%RQyq$n%Z1q#p7xA9BoYIolPGyoBr>Bs z_pB1bqrYW6PbKiOpA~(9HcyMh8PQ)e@k|2uf7#I@7VvCBJ=Aj1sy{%MWc>x-{TbKD zE21xwGu!u!p;=;!)4rG7;#`3W+NU$P5wUw}-`-8p4GnpWS~g0yaA#-S;j!x{a@_833yf2)jxdpy*Kxsd+)i2kOXoG0WT0B z$P~te`7%jV)Tk)2P5~K$f}oCS?fH! z&eq}k{npy&B-h%1->2={@BM#Y&-3JFt-aS;d+oLN*=NtIIQ={1r1M~rm!1v{I}Z_g zJ)4`I&O>j21cQx?Tt_k0umH7-acg+zF^2)nJOzbvX3B?5Oi7t;HwbKdEJe~`IxqQQ2aG>PFx5A8kIA)!#DwG z4q}fDvxUQ!;p#+EVZwGe=QPbMDuKHPhaGb~j%^>JSpA4ECgu^2?j8n@e1>lZV3s@x zR!-;+!(9r;vx&#_=?H&PUTA9N7t^w*Ipzc^7~OCSC^2;zpj%oHigA(ThP7d6ALeE~ zYuL7Y9>4H4Yg06B127d|BkHeL^&6@Fg{pqDs(+Cx+$2-SX4}FkdCI`tF}G%$owrZP z6La2`Uxc(R4TbKsLRHYiRuGfeWs`7*zJoF|uTj0tQ}ZI@l~BEVLrJe$Nj0#_YigAS z&G#E*#c_2?eKU|cx)kMT%FM;nRpfXPOy%fktX6VdW~|IQaCS8z>pHUbG=U?eb3$!q zhpasV)>^33(^!2dCuij}jgivqWmue?t{r<8tyRZ%KN-yjldUC4E9Sh060(!6XQ9M6 z*?QOvRlKjQc*_v}Z<}oW2WMAZ%&zi?u$*d-bvV@?TeubW*Hi7W4yW2<9Zt2!I-F{c z9Y=aS)gJ3`sy)`>RC}!BsrJ~?onUY=yE+8+l2h%m6SpHsPqoKRBCMy{V;xSl$K)7> zo@$SEIMp8OaH>7l;Z%FinknmJ{21t0Sy%b1zs=XVK;8gnu7%bRR?Nta4PqhyP(tfIa6fo|%!`v9J z@cmaD8s`aq-O$!GHU)LU`@y*gDVGgxf_{ z7#tcu2yk#{ycuwCXnYOeoKwY*!Z?6^`2)#%Xqa_+I5hq)7{Wv23G_6r!VFhMY?74Rj|3X} z91?^IA0bryGvI!tpoN0%L#z|&RYG(}7uThI$ z_*GSys`zKX1%=%JSM$(#A9O^&_R#nQM1+UNsaJStoC$`9#+gcZXq zCpbL+JT!hLV!}h?j9IIeIR%=jWj4YveTl+6Y_{Sq?IGs7>aU6V zG7L1^<#%;Jd2dK5kQK+a65pGEh}P(kCPg6nkszA(X^%$CJB(rbOk)+qq!3U=ewsvM zth6e|kcajuh?&S3zE(7r#2^VC?Ug{nQ9E+|}tQmEzyg>U1_{hveQ|J4QlZeV8-)%g3Q!@0}L`C=7W_+kK&!GgVBpGlUa)=3D(NEp}vC zS_i{h&C|Cmt>)=lnx`gbSZ{I;xg6!5jJ5`&;`=dFjyX#aWkSzC zBJ?SlNIigvgRAZ zK-Wp;p(Okq@(QE`xBn!^%oQT_b4WM_d6bbRO&op(zJvb>9tlg0$^k^-ar;kdEc0$J zp^T`X!+W5HcL6B2A}X^Cz#fjj9dM`f$d_^%UJO5nf5!jL-$szv?^=Qf670|F;zZQX z;SL0s$Z@Ov5STgqBIsHg9JeZy<5p#F@EtAVGIOj7rMf zbSTr+{*eiOz^ms^=X*s;L|X{<5q!B!^mu;kU5(f?3#y9!y{32iGA>6 zeHtd-q5;;kUb%@AU}5XiFww!MVM2Wxk~LS(CNc17Sgt+|Y5wZstok%0Qd6Ae3V7x+ zmJTlU_l^fE|GKf%xVb=l8b;Ko;S12MA|?g#gX=+5CS&HZ2S8d}CS&F@88esZm>D7= z`sx-?cBN0l-2l3C%$(Uo&?ztQY3OZ6&?^YH6(%yB2E6{~X_$DNDgT1DbQ9{+kZ^H=Bh$?7WX&ejry=u}%W}+|xr?=> z+GIIq&TJ#nV6q%DXYMAl(qz@AA(g($WI1Ne+)F)kd@K3ZMAWC@5`@W^IrDG>wX7!P zuAR`pNpL?&=8@M>Q``g(fn^>giH?~wk5Pym0`uYsorAxi$m8&7xEiJL>nRmYgm~yFZ%H;14seBdX8h>vL-hbF3Ooka3;fUa4Ud=O?S)>I{*ibE7@bowSpdg5KSqk!+GJf`jB zP|k^goGXxRW3eWu&wcEQw7h9K`-Pl0l2g)b2{k={|Yk(O-nLJxR_> zsn9yh>GZo5Xk_RPygCP4`lo4kJf@AIRpKVAW+MWk8#cF8O(6X+MK`td|0TjBBS?rY zTYnlnGIFla-qwOnNMw{EceD)Pwt~o<_x8;r7F}Wf90#`kpHko@v*Oc+=H>7()MLe={@RP;(F@JCB}e5mXJX%v$v`~5)K z>Saq$aw1o$dX1{yMpdt20PkOkTpc+eFKKDPJT$67(IGu-c%Vu#q^mlcLUqSjn!8k6 zhb4UjOByF72F|pRYi*>aev_uoVi^296?mlHrr2cZOxrnOMjq7~)m$aD<1yvMB}jin z&5rzuDQ&XcCx>QuJLG;^xf^SE*x?zQ?HYPldzM7F_o9C#?fLv>2*Pq^|Fb$^&8Q&D zQI7{7!@!Sw9F!ORO2TxO!ZKBC-6Nl{nS-<{egh((+5)dy&g}h#tqT@eX`0W~G>z3b z2V>zQsuwJAB41Dz6sTSRmvCR6EC|!*M=0g;>ocsJ33WC@4^}mjp&H!zGhEatF;=Kl>(n?HiJL9VQovT z6uIIk!P-Yyu>!QAb~IBDP*H7~WnJGw(*@Y&EhCO=$F6FrJ(Y~pE$yb3+HPzS1AI$M zt(1`BDEHdCnCxEGdih$1+%u#&+2jn|acCa;qT3dce@^X_Bxn??L^rHy8F;|#yu`e$ z@lNe+6nKo;37o6ESQTGKD_<-u>krEd-8ohqzCvhR)sUB1LvCsjLtbhPc~y%T@-l14 z%Uje^-?cfstwl|xIClo10t86D_FbxRh0vmLS7QWdz1ku`n>F*_vvs+_sT<9j|Bxu& z?Fd!;5mBEt;L%X=--zN6FM973z40v)wSOyWqkKoOcN5tq!Z2ImjC_z*dC|OP1>YD7 z_VE!O%_CDUT1}dV&!f>_v^K>Y!B5Ehmig|Hs#IlY&3nkpyYM4#8^YX-F`BpGN8YhG z%y~SHp}lJkmud=g_M@=(L^zAQb`=v-9IZ#~(DrC%1J(`V8fv+tB=UZsSM7RoerUCB zto@WV;iDiEXioM)lFoYcbz{y2Fs+@+I1wPHGJbxv=7t_S_)P5vcJ+b~v0f0=Ujo*1 zM}sD!lNu50OM&wX(GhdO7*R(G!R7#UxnK`a6?H+Q6%(q#H-k1V7w5#~;+(i#oD-Le zbK-JwPJ9Mhi6W zv9W|XV495RG->Qf8t-msVa789K}`$#2d3>Bgks=mCNdhe9y|V^kJ*1hQ=X!oU&}8- z+IE4U6Dap5zy>bmlBf6#(hp_gn0>UWkE28W> znZ&!tchZ@Ymz=+tlYh>r3S|0UHoa)45sTb4kRD%wp9m)mW9<`$vGxhWm`oVjsj`Hf z8hZjfu1<{+bX=VplVHqK-h`keZk@Ulwa3+4r+y%0dg~Nn*VS962p7AYVk|nDaMsmZ zrwHds(GT7M(^o?{bQ<=$nM=T~09;oldyH)mx_s zH@bT36yYX!AbyKl2{*f(Vk|n7@G@6#og%!_*JPonkCHo2MxgGQ$_I zeUtg+s}UbF7s2{!#K#gw^W^S8bc!@~2CvAafzqd=X30cPVsLMiy;qe5z4v|mVqm%m z{}RK`K}dQ7DuL3CJc4xfz#Z=os4~Vo6l4+aD8NzgbigspIwmIE3o>^y$PyDN!ErfH zmY78SU6=D@i9F$Am-A$a$%M1+JgAeHLObW&-AsKd;i}9seBKh%D6-n+R6}Af7IO{q zMXe(jlWhhSOEx9;J|4m|_~0e>!Mqkyd%g!^_hqQ-uBJjWmjf<#uYksh{Rn5>VutTe zIOi@Wd;sBU_dU`aMCEGSy{XW_gzMaThR-6LcmKlhLkQQqS5uQi2{*VSNi&;pBNTlI z+7-F1rIGJ2qVWl8z6|tk^<0GdI`$9VzR3vUW7;@T)Jezw!o8unlaBorYwDz9f5jRx z8G4v_SCUi5{+83}{0*2lGK6M%+|u_BQ{p6G3HvHTSafJ=JLO?3rA9x`>1@b6g3KRT z=DLvizXIkF1n-{hT@=NBm z0rP}_nU!6s!Q6?}J-`|}vBC#fgHv2X!P7Qap^HMHw@~QZIp};%BgpSgk$V~>mG)#l zj^NwyspZ-`f=tP!DPL^v<8p~x~X6Mz% z<`IkcuWEq;=OcT3x=zMB75S0!HaJd~^N2ror=@=bDe{3^cWNP`AG4x0*~gW&*(tr3 zoFDP+zix3}xYo-rxeq{Yl>1}L-AM}W6PvIW+^04RT5x|+EZG4u?vj#kthnw{M>+{gV^+#sN@t_5O=IQU#TfFHh*yfm9#U3Kmb%&Lc{9nkn9j@dqQEz8 zwZqUf8JOUvLPdU7sL0KQirf+?q6yzxnDEy2gioOPJ}~F5(1gc_347>{sqH^3O!%Y1 zgg-7!_>&;v?p$Jud@3mGPxrlv|Ha~4U=hp$g=)Rb$S*8!v(s%WtHkgKtJ99tRJD7< z!nq_=ZFt01-iigdhkAHq73k4(u3Ug-U{r*QL8y$CXt72|v|2Z6H4f0GY~~D=-UZDO zAF4Gg!k0#>=^k%TkyWC|c`bP%nQci;o7!hpffB0_|c#cz6IGC?QBuf4*&!h!RD$trg~r>avN z3AzimQ)-GML3bhHSc)S-x0$e;;z-b4MA%DlB75O?g^IwOR-Py>b8Lt`}D4E8%VKF@9MUJ6#Mk9ZW~Ck zPw(osffW1nu5KGhu}|-=WI8n|_UT>SHjrYU-qmdbDfa1I-8PV7pWfAN11a|DUEMa2 zVxQjCZ38Lx>0RA6kYb zRR}^w<9SmxU}!Rwi}U|3-D757JnH4UL29BIuxi}9FghQpWuO{>#&lasU|~Y z84To)TMW>8RP#?UT)!5NYW@my9@rf5sOGOUtXAq#%|BJ{fmV-d{%Pj(jAQqn``f9e}?G zyfp)R&()*aeo)Lmd@FSQU*}ORS?#xc2E|g`e&96#EdqRI}m~Kajpu zvuujr24AWfUMX%r@XuxjEki!JS&@sD24Z1s_ae*gNZ}{|9 z-9+qdul_w$+TQl+-%CAn+#JuBN*4P4`~HG3S#$Rvewtcx>fYCd{uCGb{YSolHg1Y* zF#e+?(c51A$K=fvk7{&?_BQ@{@wG+oJX!2NQ4Bd+RJzbF9@YHaJ1NZR?fB|Z&EGi` zbX7k9a}_02kxlQm^LNnULW-kr{{dMLQVZ%rKRv4X53za4_ALXQ-uCK;3;p6z&Hu_m zzyBOlOXmI8AEjt15MAikZ0kb5X8SE>yI8aRHp#PEAn!2SIoObymW6)*-Sa55+JCVo{mJHjAiCM!pJHAH zqMPmgsn`m|OwdD{Kh0DC(arY$3`s{f+xzvBJ>6{Y?=6UKw)bZmx~|gA_Wl88e;~Tq z-fu9+0MX6%{()jS-E8k4WX?d0ZnpOimKfaj%HpM8G_}lTVAVun9yWt}X!92cq8{4(g@UMuHosXA_0Z-o5=1?; z`Ns;P9@_ll1W^xd{$fGYLz}-u5cSaJA1{b{X!Dl}q8{4(WrC=OHva^%p>DSKPZWfk z?P)T(h{8X~TmZ|*-EX0_Lsf+3F|@&(ijRl5aOZe|mPyLR_8 zXourXP+KO;O=AKHbp0`ObL&77nej3ec?0d8lRX`Sd6T^tdPD}lf!{Cf<0R`M`U*s^txztZde+1#`RA0hJ60S*|PMV{5$3T|G18KY4$#Tv-jLjbzLMzqHc`o8W0T?Ei*3-P0e;$Sjp$n}B!?2ge!p%<28s_U7 zlJ#Gc7vZ;uNh}YNxV9jPO*V<)Qu^1c*ydr9;7>F`y(l8`s~uLRGvZKY<(}s)-k$5L zn1-<4tE|weh8B95*^ZyBIxXTS0gq{WRp@cqM&x1kN@;8u{t*Vly2DrskE*uKs3i{| zU!z8_5|x^zYx5#wW>{`}Vy$Sj+}vAgtgu?}cQGoh*{O??b%>!Vx1Xczqaq>&s{A@+ zA1dsecpS}*-;o--RcA}f=w-x*8Gg69HHGp=So!s})OMs%bsK6?UZafE>kW-#w$KKn zrGZDj#{8P*tF=|do3Hw@vhi!4VJ8A}mSd$Mm~Yj> z78q)>&}!01C7Z31O|`6&i;S(4wU~!L)^6#U<<#v>`&=Pvynddlu`)F83!xg{3)E2a zwAtNBR*fq|HO5Mt^nJtb5pSv%wXW)@*2V(0ei*7HdyRf1ieM7fsk@HV`aZ#rxj+@0 z9xApN^KELM`wJD@5hymA8^I$Fh`m{?qR2xX75PnpB0B>`#>leIZ*4(gN7W)K@|s~Y zyJ@{D@=d^eu(%m2@>-!HuLX**DBiG1HICsYCi12g-ZX|^8ElHOFQ7B-ELM_8gjJ{y zc69LhTz;7r_giSDqY+kiW^1gh!o(t!Kzon96z^H2$l_XC6A^tI8pH-}#5M)BsMbkI z3e}TUH)WB0t*qUo@!CMvhWhb$SXJ;U$}>h*XF5fwkW72y8Y+MZex}DA%?ec^qH-7J zg}(iLor5o?W}&;y!X}%AN~`i!HVZv0j?G>$;2t&$`oiUG78;m^URLWyW}$bOpHrMj zA3>z>B|}vQOJ5H%NX1_iN7--|aR zn?ZqsSVgVh7OlCjQY`=!Sb%A+0AbSBCp7!z+{trgJP4?m(J&msRW;u<_{zgHfNG zZMt}`!EuXla0}G?D7`4M48#bz&ry_C8bm3u16(q8iY zys+lNkHm{eQ%n1)Xz<#N=K9f7(Mv@tS~(Q<(@}lP8l|kCiRxRXjqkJ3pz-BO({oYw z#Iebp#rAwuU;cW1=>in(&Tf`XGDfA&yGoV1AXMsRbiGumWK5O1yhW5s##AX(3M7?| zsZ#phc(LF^#V=;26=im2#wvfLS>a3+AJcX%A~Y-eg;^OZ%cJ|-gfuS=l9#Y8KhS0-uP@U< zF}_SFRBCvzWkmZ24FhaT%fxjy^}}qPio)D)mEK5GY}&@#6wDt`5~;CAuc8L{RElt30g8w{DZ9LpKnUf6tM^D2`9z^D@}M zcO;aFIR-^wS26F(=_=;WuT#}#57KP3R)hOr;N9}S<)h#qy*6t$bWOT3_s{q*OP8_a zTcW<*0xA)5QGP7-C?a&}vMApNRZ*5MizXA)rAvjmbom8>JlOy|1yFqOQJ~4l2H=cr z0M5t;;LNXK+Gs{L0B2@ouwMe}o$>jPQ8w2*<9d&mtarv2vbySeXI$^`lJ(B`B8KaF zXI$^`lJ(BG-s2_fo$Q@ey)&-&c*%NaT<`Ic_0D)JX_{rdGkzvvUGI#qCcIMCJL6{&Zk6@U_!`3Y z9JQ=O)or#`rN03LZcP4U+K?8RH7_A51Ep@$9y<5t9r#psq#*y{Tukmh~wB9Xc zy)!xLLC8k2alJD+_OHELvVrcj20#A>@0P4q;YIl@)le;JFRz1S?~OBdAH2S!RE{ZDEH!w z9Bj_W!RAcCWnlk8@0O`nBxSu@%6jKN>)kSGy<5t9=l{vOr7W*~jdx2~@3h`6WxdmS zx0K~IPrX~pdgs5zyQM7rdAqj5N@#g8$L~Gz9zb31^d5E5vH1JmEtCH`@0K!w>OH`( zh%Qii53&XSXS`b`^XlDF3*-%o(`8=oO=jEGY`?{9>w2fB-YvC2{+4%3yes0}QdSVX z4_1rR>F5A>>fKV-J3aMoDeIk{dbgDIPVe9C-4fc0cT3gw3)S{N-YviW;{9VVr5awm zzYr4_;l=y^quwp~Vfv4EOY~sMj%GV_khvCp#PH(%|9H3jw|KW?D;Qq9Pb9o}pGbJ| zK9TU^eInt-`$WQv_lblT?-L0x-X{`XyiX*&c%N-@c=0}w@ZxiDJ-7>Za zlS`T5n;|-x&rEm*vm3IimYK*PU9QZ?Jz=_BnaNX6U9QYbCalYqnJN6->2hUeDq&r& z%uJ(5U9QaR#jh=wE0051jAwf?GkCc{vMICoT1=yHxiYg4ukCYWxiYgaLv^__GxL1F zx?GvrkFYLRX7(qn%axe}2viK*X?1T%Ab1I{eRzC4rpZBGoz9q(oQQUDWHy66;v{R#tkIZf)z#rc+Rbf56T3Prn%LFhMrxH!9R^Y6u#JFox+46I zVQ9v17kxj-HHR~~Vxl0^# z3|VuPOR(5H?=gVYvYu(?KLfZ%)-%llUb|G6I));f>C1Oz>U5^Qh;VCaUz*}rs<;;B zyBHe9-9Lak?lQ-5m&F?Un9RpbM!?`Z$SWh;V1@(w$z$3EVeN1Tma$JEfJyZsT!vC& zPCcQFD4`oulrin^?Hoy6DB*Z3;q(FtLQDyR|Cj@>jA=VvpBJun-s>&z>H=ONChySG z$$Jj#`wYu_Fbac@X`5dH&E+okbLPNYyeFVW47`p8<|JYb@^vmHbA^JwP|bO){hZ39 ze^GNjMPT}Nn3UssmKRqArSvu^RzGY@4vAf;7(IuYiwJW{y5`srxvFJ2Pv)4{SKpXN zEFO4-F>p)zB@Oq^6*hD?g7}y=-mtIAzf0vY4@YI+vu0p2?^|`4iiMk;ky}~Ci)B&h z#GCRW?A1`{{8Fr0ibXn$(@th|l$2+Q+%iEkjN-DQDYXk_IPuPfGu(C0nnjnfn0Ui= z_NqsH?R>|S8&)mM_|-kaYLu0gF_@{2Q>CVxMVspOq-GTsZFWXZCiOJY^zfTi(gE`^`cnv*``C>D6(K%q+AfX{h58nQ0E}$2={vdEzpdIo9yKm36I=jTC*RB=u`6 zzBQb<-WL;Vnv2z6Ddw}jQp{_@Vx~F2)v;K=U0AGZ1GThR&#|a2*6-L-X_g6Av(B1( znltiADtc&yZ|Kxts2yfTfZ)OIiLQa7vm^S7Vws!E$)+(v&$I3I@vw+4+{(hCIXt5E zFHajC5z+crul4W9h zLRxFzvzlY&Xd(0Zo}?JvAj>W0gFy2-E>@ZkBV@EM-$#}bD_>|81MIezaq+wIlFWP7 zP@TZTck1(qzEfOZF<(T~t#Tu))tA;LP0rXi?pEfdA_5;?9*Q$VqwF(8H{8h86;l%p zU(UG8uk*-Gy+Jfq7Whust^#sl&A&a&?6|0H-!-q}Ww8(69BEl5M)^HrBL+)OifXNw z)-E5_THnm(ZL(!*a7La(gDsX+H{7GCzK5#K$FzNcK9rhxiKH6cu=^BE_IQyH-LUJF z(L<>BQj706g(;sPDdPjWf|fZ^l16c?5FJkv9r3+ep#`!$$^yZsVg<|KWGm>MQ|hFL z65t=7Qg=)a2?coTig6d;o2Q!2cw0u?8OLI2iLzMm3axO)&EKIk$JuK0C(vkdY_`Sm z_9?X|g6W3nuQ0_O-LP#1McimbY+2!qed{3=5hTO-r)~UgD^PGVX@ID#ovrz;(zZb@ zKBnzhEEuT?V=-HB`r;SGHiCc!2ZQyFX;C$5o7BfHI5p`DRb^4U%iH-z3=%x|aGpuP zKaf7A?I&ScgKS#OnwB!i%3m!73=?G!umbSul*hEa9ts#13cvy}=+}Wl_&c+{j28a6 zf5kr#FPLU_bOHb9kbgqg9Qen@PPV+qhOhG;=r$O)?W3R~_v!RKuo`%S*v3(y?1{?wUh4{QB-7{=zMqxEm zmAc3lgsh&LOA6GuG*kntr{=O)ht}nCt9(7*=K#^ARP$X)6k7(Ix}#Z>rbxda87;P# zsZ5%{mudJrKKDxl_J)s%hj2E8I-ZikszwDT3`(4Z5 zfb1CVa)b20cS%ZoE~vh8Q_7zZWN%6#7~GU1!B}g(4MBQ)NKvhe$|1Lh6pf)Ey*;GJ z9wJP-FCZvInvRDA|uxPQ8S~aylhzdL#QoMntir{r5^K=YGLs+8A2QqKFLHhyZ-n zi&+?vA+3TnlrA{|8$3w`1D45lzhO$)gj&Ud>~dHiMD90!cOD!#-ypvfJr7J>$-bXu zcS>%cCI_>jUuek>fCN6K?d5>{U?p$tdcvZ4pw`qHx}G>6q7KH#5SrAN%BG1!E){HE z`7`KFL=LS3mi@>Iz8(mlQgAgT&BI@}zRw_26~EqV~xJdYoLK z$H@hHtSHc9rRcHOA60NiJywT$l>C+&Tt*Fwo>ao00Oo@(QJ}$PszJS4;xg4Buetp$ zQz@0bdRN$5!K{8ylW0@}wK0LnhS}NEY$7OHdCFv0;zp)q?GnSduiI^iEU9F9Ze|9z zSgzNU395Y;RAQXX1*&Z>Q0<0x)o$#d+7?x<0jfdKo794h*}+fcMSP)Zw}z^fJWo^I z%bZ+cNjHT0JQwJ5uPrRi_x+mhrE01j)W<2glyaV6%)me88RE>4Uz&UXT7Svc69sa1 z7s&a8${9-gyucivXyxn`$~hsB^MaLAHj&gXsePJNpO-~Wna7wxj7dg!1pW-}#8)Zi z>_!jDeulih`Wd>-rqy{*O>FsaaR2}GGn90tTgc-3T~aLRYS?^c`~2M{xVILR90f zN+|7CQ*7rZchB=ec>_hB%8*yC*!>+c>kbxq?sTRpAHZA*T)DbKd0!XA(Uq%Pvp2** zz2UD?9KV(B2(oFn#U0s7u!P+fcNAgmwz#9E+fu@Ai(AWPFz3>ht6N7g)i4aTi_n#; zJLYnLrP`4R-t)=e;A7gRpph;s=*WlzVKd9Nt>Qtry(7~_J2Icx_F}M#ft=GrIYCFJ ztgs`~MLRP6p3V!;kdX7%kTdAWC}-G_Dbb%mQzz^ zt}D^9mlbwox~}O1i%Bv4($e!LFFvO289?RiZ44#Ev0FK7OvK(RzNICLI4MGmF}po# z`9Ft#d@2sCg6NU^0gP-oqT-|u*vxLPTjGmRN_;AuzU{;f74Z((tcqhgV2u@*ilCRE zk$h%R>Tg3x(wzh`T^5ma?5i*2Db)Fk9baIg86OeJ%DBR;jAyOmG#;}uk<|#@weIG{ zJlUNfE4-^qvy<2CG-!4#mhVekz`Tmcz;v>0uCYl~*w zqH9_-=N4VtqFFzLS!W3#?^nK?7crCZ#pYA-FmrdbrhZjR_e0;$OL*35*c}dAn&fRQPPZR^suC{>tbJvN6o1@OF_rbnvR~d(ag)TV_45_K?|?N_ zTp^_V(x5Y4@qL!s(TX)f>B=z-Sipjaf1zoPMIrJrZBHW~Winz|$f7|NERzvKbE{wt zS-ynFk{5+uAtQ$4l(5O^aRvo{JO5=Kv^a}sGh*5fLma||uWd5Fk;L%1f<3NfO17uXuUzF})aq`2wSF8` zt?seprfo&a8e_XPhHCX|)g!NI-OIGH(*M8Deh8S*{hCmts<%V>NgHN&>lV{QY+ZFK zr2oH@DOs(~0Jz6(kXad_YELqo&6caosBRbxr>$yFQ8j60#bSS=ZhSGymqLlBNygVy zReiQy)#p^zMymR}s#*_KfxV!1ZRq~$S5)l_S*q?Us&12$YeH%jSF=XHrbfXOSkk4u z%4ezl=gjx%MVjX`0rN3!bg(A1>TL6P9IkD&c+JrBUaEAOMGAYAg$}%+9j1_6lW* zPSXQ9{bWotBUoQko$6JNLvO$_r)zI?YfKs5Z?CwY4qzUzQk(1mX5<(oI2lFuFY#pd zf7d+Pe+Do*n)$zT0JAr0bjJbAFyI)##P|hrdzYYjFERZAmwbVD-QZ{=;@!R+l$6%E z{dxbP4sxp5+}c6T02$wpJ0!VCXk`K6rAp`2jA)3tEGQ?3J^TFco!;CVUZ3Sdb=w2}3QEkHkPq_|w)>+Pc$T^dog#(^!`+(;mOW!`==@ds_Lk2vA z_$d~D*zE(J3Veiy)Aslvb$`L~2cv|_f&ouu!GNdxXO=h^AygI&cq$79Je36lo=P3? zbb&_FuRy8q0S$D(Q?3J^PcvFj?E@YUop;H~xWcT210H5Ysu6mdJxYA#53=$nB&ON1 zYob2U>>0?AYjOnjMSPYj!L)Q?rxT>@?v*x%yH~JLr2>77TbQzcS#-whwqd z=%S461D>CwA1#?~&`iIwO3N=C@G#Q{v;5eT>QUZR1q1`0Kfq?1Ydc11Ytd|5^s`mn zM_86%z@x=z<6B!a;}%`hqB*zd+7`|FA>Je7q5o*oN(YJ4!@*%ukq zB*OuZCK(QRG|6zlqe&jENn*g${pKo_7z}tS3kN)vg#(_-f&ouu!GNc-V8B!P)d5e> z-}OU8&GB4ldw_?^HO|~V> zOAft!N%jg&wy~RZT)(#w)L7!x8rY^-eK+ZtUug$CUHRRKe4pPP?yRYhj_Fl){F9T; z^G5cayT4>p{ev3NVLiT{3EPndKY%^2$9GF7^&cCoO5S71P1~)3lJ{BLsFL@qT6sR4#euyR#jDIR+{PPG?vRd5%uopj?J?GMX&oI}Q zS+3~@2p-c$2hL)@XQ`Srx?;fRs2kstZXEwSPcpu>s_KjFs=lPE=Bet-s%m}ZDkk{n zcEu6*iX9F0aEBHu&YM+K`8QShCa3#AOT!Amr&2~nZ&M|kIm+(+3nr72-v3jU<4mDv z#$JG2>E)-58oilg7|*CyO;u99z8!azuu}IBNk`VGek(&s%$lJq?7i4gh zvw|B{aBnO4dDe=dBKUDDxP5T6HV{123U2Hxb#PcPpix=Ft*p6Ja*D*AKTMTu9~}KI zkTs=H*0e%d(^Xc#fs}QSWZ(rWYp*cFVzz?5;Ap^b)$o20@adFCg8vhzxUHKcd(Jw>O$X6?kHT+}co>fL+y*$#W4SRsmK*1> z+*mKxN37$!iEkL7>g#z5+46{XA66QjO|AW+Oh-#9Tgg78!ySj3FEAEALw_7@sf(gQ(|UVaKT_mB_mm6Q50O2*_# zzQUTYoxC+5pAwLJ50iYxy_VEYK0i*tFw$Bpvg?9dDBshQ|`XHTFI;KJ4 zhEAtC=0Jt(i$Al>Cs>_hpzr(xvd*GxzK$j9MogC2<1LNGAExn(VF;J%mYz;S%$q(^ zi6KHB({?CCcEZghW*#9*Ot`dY>JLn2*?N#IwoE?=nSL2CEh7`#t&;OC(OgT^`DiA1 zs+uaFo`3wj5Nm++@r*r-($k| z4yB(GNWV0YuBu*cg_T@ySs+6m)%_}shV;(!D1G$(h)hOz-7-h1cEAuZX9HRs`!2o) zD&7nKjurPDjLK&+vir}zi|&aKWZ%7*i|J#hNJ8|ccKcezx$h@ZGZL|JzG0COQwSbL z)>;m0;>*fWc-5>aiLK02+syz2eM!N`w56cAJ7NIAQxSkV;|nyr%ct0un@to9eN(bg`8vg#oS1td!V~?OrCS(y=U=5=jgnJcZz)Jy$iuX6 zDM;JK*|cvhNPBCLcDfT&-F_ufonEUJ@&WTPZH-~7+d~Ugl70v254Q9uHF@AXCZyjH z(0fIs-+8R1T^Q23&s8%*OR&-Xtzc*$V4sE*Zk{m@2O^w1QCnh86F%^^F3*BY*5ya6 z)M+5#^C~j%&(`G~teWfi&4@jWBqHa@=L3!izJnlJ#}lkuSK-fHjUVg2KHBqMz;fq9 zw8NbbQTuU;t#To9JgYITiN>@-Y~K$^-v~IiA3-POVL>*wKVjbYu?zoWZ!zcqg2_~8 zOfjfLCwil?j6^vf5+Kyq08%W}&7E+T72^XinAk9UDv#FyQe(`F^&ZV|x z0ADf%aCPcM(p*Xy^F;dLPS?cN9Rwy-`m)9$n z*QTB&Tu(9UQM4Nn7W)};6W_Z9LFyAQQ5(m%K<)!cbhr;BVY?Y|_c@Rjlcw_;zEpPw z)t?#TgX_o;St8BQT}&3=^3vlRb2o$eDUG{NKt$OIGM(VeeTK9XIcSy`;y6Y$8Ei;j^%6NFlNdI2tU@SA1Q&x&_d@5wEBWtBO z(z5OmveLm9St~6oe983N6STdA_jF6&J`&h!>3bC>)u%nFTba~2^S)(0H%yAtXiREc zA?pOo+FUVUoMvp0WyzlAnCXFF%~F8Q!>juW6WY(TTCSJFgbud}?N^x40f8u|>yOB~ zz$_TA3H~T#y@sqyPGTf?dU8-UKQmU6mU6DA~@!piBFr&_xTXRe79IZ zf3|{d|L5}^bidY8(;{Z$tBIJlB6RE}3O8}Z=MHmB+-5gEcX)_2#pjL)k$LgCBSWM) zK6g}zAd_q+V$KWg*?Z4sZ^1;Z0+FQVZ;xsJe6jwG@3PIdHmQjinGOJ} zAQL^~5o* zkj%cGB*o<*&xm8(j5x;4sAF7D9ODY%QTLNj9OGuxF)ptM8;?r)|Hk!TREF1sRY#FN z-68#d_u^do50vhNH6u;PDIM}U=Jdycs{T_oX)v))vG{D*vCuv`z1m4D$@O>j~9Cf(;(?; zGQ^f8(7_t_CBV|90Cz>aQ_OV`T(%fL-U_oCY);upc-y>{hSe&(9*kuiUJv#Ibbhv# zO`x!EnyZ2AD0>X?-s$EiKz5Z?GUg0(6Oi3y{gAx3%4`MlY?ozA9IwS(1o)M%Cpg|} zvmM|z({j_7nAfqp_Y zTWiGI{6he#R?v7qC8*wpyc>Q7xV7?phTkYKBvCiQR#K-=puzTbJoXH2zJ;a5+qa&_ ze|!5D2~pao;-7cRPK0->j(NAXq98inz9sX}-fgr-?C;#ZMOO7TuWJ24BG?>cX)aq^`D^2B5r9keX(pQrlzO``$!Yj~X}) z@*dtrEqPDw-@bi|B*i^>1lfCxLW=2asMEI)`W*iDn2!v7NpC~m6A{SKqWb-Inxukb zcW*ag*U35Flf5L-oxMQUdjptzQ$laDIX#-G&yMAQ|JLnW6`1St9^%`Z?L${=)jhwD zI_o{N8tjeWmK`$Qv$Sv%b&Q>ke0t9@HF$qOO1v%WK_)=&K!vwuJ%eEN4&;6G4q){T zZ8)j+Jm z3|B>Ll9b$^1RB}`AyDBG1XN!F(2JT8fCtohaZ`z+FB6j`Y?CE-cDbg58p)1oq)ZK1 zvSksfkrthDWfkZFd7h9}tAZI(utqIPjsjJfYW2q~DBohBox#(q8$*L-44V2c+d;n>6Wn+j`2$EMNA4j+fDo%vz%6M0=H_hCEn0(nJYBEF8 zsn@*LOZFNxuX_v9SoR1;dfrU)1bCXtu806Rz`O&bxok4>>ou4n&%uRA9}+oGEEnFE zwFhFt+p<`_)~aR7z^<0r2*dOv3iGhpio3Ljm~Y}=6ZK;lXxN6t-5e01JSLe7%Odiz(e~K#5~0qzE(7r z#2|?egFxD;fIN+WYM6hUPjngQGji6h072CJN z&3lOW&uv+M>$WV~FuW~`2)zT*WYs-r%ahD7SYExmp(^4Xg})WlTiiw@a9_mk8ILgF zPB8EJ9+=|p4uH}zd;x%T7`}7{K7k>fna;05FsOS9$?!34rI-U7B$wOFAOR-<2HsEl zLphe3GHJ5V4L~}4OdF^21`GXcrEebc86z6m8N@c8A@>agb{Knu7)(0@D~Mi8S;uje z0?%N)TYOC0e}%HHr7W)b484hIU#G(A2Q@Fo%}&>|HwncCEhhF8b|)cv(1PWQ9kZGJ zNhCXH9-@A#sWuN~YiVxa_Yh~SYvc-{FE&rp|AM~B4y(Y)uUQ2Sri3|Y zDtaw#&}U&yOs~OD4wyF|z#dKpD+8l|Ce=kTK~R2zAGzQ=o+7RL2pYBGME+P3%1OJ) z1f8TD!4sGh{@jR>fp6lMNT$AtSr470`X(kEOR8^T!fsN16BG85>YJEwaZ-H~6D~`t zZ(_pPr1~Z%T$xng#DsHBj2C3OOP4Wy_$Gb?SWyj%5L(XZ0^T|0w0qb4eN%c+4@P?%NCMMjN zr2A91g>X|6RnT!;2{$LzH!r@z{=rn4YI28^?(c)AXqiEI#bt>$gYFIexRM<5UZGRM@*wVB@5z8(}LcO{Z}8 zw&Qk~Pe+p(4D(;Y|0Gw5yqigg>Zrqfdh~@;VeeMn7Lue7+poD~JNY;@`o(Jey2(wb znf8+HqztBSCu=sz8^yd|F>mTr*t?76Vx08Znf>Y3v( zpD&di=F`!zI2HCDevDdn80IJSlI^j4Tat7t>^(}7;F4{5GdYA#pMy}|klt%PGJ#=! z2E+U!P(C zP9m?_qzs!s=?gfgE6|qTD z@&FQ8^^hP`xEulE1Q^5o(SQeXn7;=)PU5uIv%~xnJIwE(MzW(CDKi2r>I4|We5S2V zfHBM$6P1WTGom1z0Q18}jsjJfsyG40F#nfSg~R-NLRIWAzr+snpGJf_0rtua^-?Fm zUKdGFodA1XMK5&%?3IgN>IB%!sw(0H7{mOJAx)hCW0+4QuS)I)s7exoz4#%CyVOcD zK~jxhhiJsShyZZ{jA8zCzymqV{~{IG(+>01o)biGSBrI`wWl5C_ej&8c9=f{h&lnr zFn=)+bpniG{yHG)1Q^5otAVH!U<~u`0-{cUG0dlZ)CsUxFWFNkz~0`1s1sle^Zx)I zbpniG{(C^w2{4BFE_%J{1Q^47Rw8u*j7zb5BSxJ7dk0GloB*?U%fYUe*$AwfD9poV z3qDz342%?E^$87lf1oS#fMDW304$10LF^Am$mytcIm&EQvu9p9F!lQvtb;0C570VSWk*8OUM& zdUP7Z2{4BF4x7UgbRjs*XCtUifHBNxW35hry(0usC&1p3f~XT3g>IB%ECrDGtP86UwUvAG*C&1nULDUJbrIr!39z?V5Oo6VEfGYW0DH#^qE3LlrGlsvU~icq>I4{< zV$+7|1lT)K5DxQcvfxr|I(Ck`15t}n74eS7-5UfRBXBihtrKAGoUu-Tc@2h)VqOLy z9fmKROw5e`3((}z133nqjp9Okei4yLBpW=B;1s?M!MLxIWs1kN9fhH|UYt9XpB0R+ zhrTrk5!2YvVC>CnboU|=wxHC=KDZf7AhKZ|^ku4p-=g%xDSb`-WD4!zN%i7T`r#_Q z*%|f>>E~>+w4;TCn*1iDontj&+Q-PtDR`RT%3gEMRjdDq7FQNH~{KHeFv>96gO z{@M=de9D)|W9Kt&C0e*gf zznS~0JvbA^=k2{=u7BHX!k^LjMyrsd^ABzwuq&(`=L}-cy$gA|t6&WvZlO!D!?}l( z?hM#l4Hz!~!!vG?I|%=MP9hW~34-+*{KzCiQK}pvon#Uro}WWPP9nr76Lfq|A}GvB zgz*T=R3+v=MKVqzBo;_}?{g9%v5;`g=OjX+nXv0~5+SjOu;+6UA#p6>VxN-;iQ@>D z`J6;ZEGC@wIf;;1Lb%fBBtqhN!a1EpNGx5*^w%d&*bzbcoJ2^RxD)Y?&q;*DNrYXW zlL(3Bgo}MnA|y^Gob@@0kT`{K&gUdTVg=!9pOXlQl}x9`=OjYnREF32oJ2^RMmX?q~>d-|K^ zN+7#RD;aaT`4N!arCfhcpJA>8@@(0%B~E&kIUDdR=;xth&wID%=#R0r^T44I2>`O&t@jNZE1=XmzZ72dOSujhLEPd4IG` z=}Y-8*2SFU^@!r1yrV66k;or=h&jIugHWvYr@#L^{&y2UTiqT&Y;ia7v(-)fY<274 zXDj{V+d&EAT;szQvU;4pmY`F?h5q!WjR12_ax?z%#G|Acbz}k{echYnZAky*P{jDH zAW3f~==dD}r+>NtaIt?r!*3v5<0PpUK`Te{!ohwZm#h5g8wVgH9i`P08*C8_th$e+H8@G_rk{ON6kFZa2`pZ+y9-d4_`fBGKki21X) z%eO*?{^@%+QoovW)4x5P`f=c&epo9A2ma|@!=R1pbKswTge1k~qSK=kQGBkG9F4GZ z@h4Vk!8@6LTy7KMK8*AeB1sna)4wO|I^CW0A1jgGZyp3wkIDQYdk-=>U7F8L-(LQ6?0)f{UBfZY|op(QC-f3{q)ncT;sV~N1vfdo6glm{q(a;CzDUV zwvb}Q{;!MuHLq`oR=(u*P3E;&^ZFLavugjhnb#c5#=OSP_K@H^y%CM7_}-nA%GrbT z`_#elIeU=)fDTS!HNqdh0Jzxa>_Pe?j`p)Y2fOKyyP)%ubM~Mzzd^9aA0#pbiD3l^ zNSd5MF#YJJ$u0rGckWe&a+*Lx34xgwjJsdrS7r~=pR5E3Z9iLrc-8iE)t2M-^cSiv zHwmP_6m3gITinbK`fRDFYs_UptiB8{NRfimB+yVA4;p-%9G3u0M@&D!z3S3MhDT#d z#bR;Wtcnr|BU+S-7Ov@_M$+^KOSY7I1kx$dDObup0_n7nRjY!YC|IKgB}aiOOf|PopsAU)OG03=_^Jp$>yB%ONA>kP?WgXXnfkj7H(5lHWAc7Ug; zlzRly`KrAM>vInZ?W&_^hp%Nlf$#H>}z#KEDK z*^D@kD9poVFYeMFV!oQcCh`~t8ou;#w*-h#9uiUtWW}+iMb9rFqBT0CNfC&i6GYQK z?a_#7Wel4l8ml1Y3dWG1Ceaux?UsOt_9=+@Eo1mv(O43LBwh&uX{Q46&k>X39)a}1 z<`dSG-Raq;C4-v6Jp$=Q^D@;h<>W#7FvIrLE#)48^fwF}!EEVhB8Ll-EB!HO(?n7m1-ZQR zPt^K2L9Qx=L7enrK{k~RWI9U(*;4v*k{vI|ZKdlNvs936rSzzkUM4o&QFKK*&qIiOaKtdApBQN72{~&p2kcd!4FuhE za(ACOS-7s1Uvl#XZ_U?q{(|ct zf-2$dK{)I0hXlRcMvzqd3kdfjJjmZh`rd?Ve0D3nK9>R>>BPq4pI7xZGSL54?vd=r z16=&`NGv}nQ>I@%f$K5-c{RUB0vyv~KsD98G7PMKo>B(f90YjsjqX31D=B-<2G^qn zF&;DJR3Af0gI-}2O{U3Kmy>Dm7heh8hY1YrL}Q#F%rBC;CdUA_XHNBl3>ZeASt?Ch zo9dr1bohY`T@n7smuLX4@ZXzdgW043i(&eGwA^^sX^S+n>{Z6yB~Y#3Z&|R7+ifY1 z0~a6DwiPn96dMcbKx0@3_95rdOy_gU-Aj1M&AT&{`)JGEmmVLEUIz+Rpgl*Bc|MtY z?l)Q3+L@Jcen-an0i$y)8oQWtd<|-f&XyDp(bpoTM`@}X+N1O zXCw4vuASE?ibZ=pfE44KhVnOyUlV^FIz{3S<2M>VVlWi`f7*K!z&NTaUAVg1ZeQ<< zY;0o#l6M1^EN>XFY{|B4gl*Ze#UeXQqouWAZM3>2+sOojWI|pxOqNGx5+qC}%LGI6 z66OIdCwUn%MA;_^n5@H_!H`L2UJ~Sx%;Y8f-#Pc(s$13FURW~u^N^vd>eRXC-h1xZ z?pm>*iGnz->9x&6dG`%zsQGg1?nWA4h{iC`vWHr5hf4+j*Yg+pxxvVlr*w| z48YiEn*mNni$%&cu*(3K5oU!3rVMZs(cGwk2Mq8*)FiS=1K(u=*d7qd(nlS$1HN_q6#A8#}iHj z4`U~K3DyF4+-gP{Ul55-@{uN7!O)43NL2wPnpA}65};3>5m`K&AX7#&#?+Y>>1jS` z1W8PBG_oB{_|xUx=&AzBb_O05z0;2uSdY+xnHDl0XQBK=h|7;d4>=_&NQ)CL6jXVf z!vzI=?kE(js=%bWXbEaP7a3n{CCB3>ARRMEg%&O7R#5@iNbeAPpqd`q{E1xk1$3dh zEVM`>*&LUUheBx?@ekm%XsdXXg@ct_$V?LpFei4oVrptu%U zsYv{6DTVlXB#{3CUrHC+Qo2Y>>0%?LODvK|w$zu>OKmB=%$Cy2jg&6SD>ubKIVE`` zy@u+syy2}SewL8Y+ZE$s=BB{|uC&RAq@` zw^fQQKHGbp6;#X!`&y{fVqc|}Xz$2MM&9q-R7}fS$Pt7UET=3{9@tK7N<&%^*0rE0 zuk@7&-8YZsXp_0P7VPpfEl4!iNGkScSNIR~ZmndGcl3Cr|5p2xtNiz`i-QSE(^w-! zay`iJ4UC3NGaB+*M*U%pK2yjQ^bZ%={vjOkTSgn6#r6SsEVBK>Jj+l=}RBz*d6SOX_V~|NoB|$nK@;2naz;-X1UBQIA*JmBOewmXP9+Iv-w7m0}^& z+kgOHYy|icKfo!p0~~Za$WlP=b$~-%4U-kpFYs;3LTyvHuS+6*Zav++UD$AMHz>N) z!If%2Av{40i)cyEuIK3MO5fTFjm}_t&%Fm>3*8ut3tCVrT1BA^+31L3#;CG`eUXpqG;F5b=Z ziIP~&HnI{9y{%NJ-x3tg3Y@yj3$O^ku4vg z5Mi+|NMwwb1jTHr?fEYqAGvNOHNa)YP+qPF)6UQp_G1K?X%ozcim*Inq`lIH&8mq~ zB%Y>#otPw#IYM?3?$wet=!LSz+@wt+9KYKo38j3cV?kljj2Vd>W2=m^BoE?nHeK<` zX@!7N_ldyiaY9_XlYZgWmEt%@WO|0J|^n`AdbG zX)D?+qhGVVJ3oAGzg z30UnN6#8=>f4BX>8zVC`(nv=7^&OdE6~r(lLJy;JMp{H^DD)5)MgkrPJq)TS%~`^7 zPb9<9O`bSC>^5>3dCP6A^~h)Im^ETUb+{_1V^`-&DYai`RJcqOdo=Z(*Zb~pgK?(i z!ohHxdQN8L8~l|O^J zox8u&>UEZA$2i3^M>-ht2u}J1!=A~$3Dz|gLBMph9rjq^O@JZOJXTr3qqJXvv=D|S zNFpe>u>z?x1UEt3KhsZ#PL*lO**YN18A!j*eD-2c9zdEPaR-7U>U)`}QXaA8hAWLn zbUnj1a0=T%v=C;2{78o8fW-F^MFfn-Nd{VIda#AS&mfw#!UaA&q+c_Ge4Z6-uGxmu z7yA6CW}M^e(A+aL{zdk?fXH0z)5CnNZpK3LXXwGoE9TZbk3zO<#ZD?)`4>phk&cRp zo~#Uv1XE%ufu8{({<%m`aIkio@vIm-_NB_q9m+&ambi%CUl5e4nZEP{8gZ5n4@ngk zKpN>K7L)W?ft*MW#yO-V#5i2!OO@Zf$Tlf{2O}KK75elbM_Q`RQ-a7ivE(h3GK)C* z10Z2>GQ%H&m{Xk2A;$6y3WwgYU`J+*G4o1yXwjSZ8+Du~>Djy*ALRUmV#gmX^x6^z zD;Eh7hDkwT2zT=RHk;~mpBjCdu^oZVu9qqK-}B&=VZdnJsxjNVkI7Yfv3x36`mr`@ zpe$!vU0|eJI5Ht8k@KpKU3{}-!c=jLKOl_Klg|hb-UNkXyxn^>o(L+1W;G+A{z@}j zaHeQsf?Lla6x2R6YGHZnurIgM85RlKX9NuZ{Eu&p18g_`N3_TIA9+0E=!KE5IU;wG zX09jWc7N!+T8CN!>;Ak#XX{lg$eA%g(a*i4<-CfJD{qJ&N)_a6EU4h;p;2cPL9J!} zIJ;$SLc$lcTNA?3&7VpSFX$a-Lk+wkdwc2!%}!H4Ci0@GAFIB2q)AY3CdgiQhB0=3 z-I+f|Uu2Kb^Ar%q;>}DD23WkTkba@B_=~jS^WqoM#3gnJxm1*xL(faiYO>36iHxY@ zE7-dRy#J6>Ywr!)OB9sZ+HpK2ZyR+2uvkcaPTrDe> z4^!&4sq@45aNl8ZkjOfoCthL$HE3zjlwzg1A3Rw>(0MugfGf7Stf%(C@abi|BIpNNaS~uCgL}OdxxG& zS~}YkB@Hcg?TwwCCEdw}lKRH__IP8mr=%&_*^$B*8cRBQfKpsc|21^Bw|91wtV}jK zCF$;DNoz+#Te>k(a$xP6_?lJA+FCo(2bMK=q)X~sQ{4d+=R9)~$^jbL*>oR7F0ZHx z=~Qdmd8efVi=A{`sdC6t1emBPARa@Db?DZz#Y=c9h4hoWFX>>u2f4hQP*f^k!Y{$YUxZ$D${J5 z8ctn~Sjz5mrIqh|=9YLW1mpq~Ig@A-4 z*z$nb0!8vA0)^Wg0u>aaZcAuDDJV1|%PlM-kd{L;%lS4s>_jqsJx5PD?x=|BqaqFL6@Yun}D%vW6>$9II|&hGToE;{_&HL5K0q0NG zba5BXpi8u^NxzCkXWn$0(V7K_Nb4}7VFmUSB^Mgd7Huju52FmbW zu+?>FH(YMTXlt!6X>Mr9Hg~Iy!F8O*rg*wN(cYOnsO1R4)0k+2s-sy+)q5{0ryD1F z5zf9Wk^fFTeoC!_+7_#pA$3X>EXQw#b+rK|$aOxA#MwnUKMk^UPx}lqntv9~BA|HS zR9AZ%yeDN9!w(JgbQt{fw2^esxB6n#f$W=iW9eb1L;6lMEv3byrL-VSZT-WG%jrg& z^`lUqmUTlz>K0XWO8>n80p$O1^MYzt!y_c=EXwLJmh2m2$8tjN-;fzmCHQaSOD{wh zx}}lmz8j+p)s6b{xOuwi#*8Z28~T4ao|k9zuPRxvA)|`U`2UC+hJzV4IOQXsk4|$J zMWP)yMyI?OP2R`_O~oL-&CB!MFW7K;XOP3@6GH=o>ZrPBaKPO< z%iTI#4Z)8O>3{cocNzwqhMD@m!GU2<2HZ^rbpOxHRARFm`#SxqGWv}kQtR{^e97V! zC4+S?92j6Tvk3C*I)C?unaLSe>zFibW+;~H=&VmS{b?ARTUG^)%@v=g;PC*5i)ub% z#1|kf+PJt&ri$eJptkhIQ<+nJzjiO1u9gqGB{QB^J*vRH48C};dpUmhsS)*6Rq}mz z-t>Xfs^kZF?AuE}^x{sRkvwHH~v{=TD18uU3Vs$6Zq3&Idhuk8hxpE2o!g zGeenDB=&Sn_4ndk6dpNtU?lVW2?|jns)&AXzX!)fA~j`7(yt8vZi#xyJR`!KfYUi#Sy@n{r;=%y?Kl%xiy_gCv=o? z4#Cr_=rK|!n0mhszGM?`zZEJ8TW0(}8q4$lXg<&XBNnh@b}Jmftpovn%#Yq){&0Y@ zu)+a6THyfYqk9Xw%g0>7Elx}D!b6-B1f06=7Qk^RQ5Slz$+(3`@x;qzqT=6nB9EWy zQ}g;+hEpWpUx^L7i>5!I%0|?B)x7UF!+l4zz%L+8bg3gSDiwR!T~we3_6jj`w@YTDjfweJgLMUJWa-C`*3P2KK->Ck`Rh$UHQEXg<2 ze76|ymjAYQcw~4aovB?lq~?9P#GP00VYTtJmqL9+GWZ4|McW>a&L}KBtrn}&k{i@b z{7x0e)O5GHz+G2xzgu4Lky3^}$G^jB5a0(+mz8GJyye%ca_ajIdC6wD^Da=O18(&U z)vD&JTikgw(77m8KW5z>gJyA^&*k!Rp2+^uLgGJB-DL&p=={^uAX0$Zt)c+yA}p5& z?uUC@^?5Zfv*9-^1MVugls>dP8l6o4k+Ra4G!i+f?7iG%4i78w@Nv&d)(&mxnJ)x&sZSWe6^63898 zV#W-^eujEwMAtIIc(lwghzEtiydI}%i$Q;ickIq^*q6VVl*JW@&c3nmt zJ)S|(aqPBrC;QU9eK2Z+EN^$jj;djOdv^@M);6-01?a+`IzBLPBGX5J==eh5y3yXR z&_z*1*UC$;_|Sc6U|5u!2k> z!P7AsRRg!zkvS?;r;$ks=g-k=EtjNAw+MV~fqIc4x7^360GX+tUZBI?Sc+af9#iw_ zdW?RkLEUK09k@hdKrW&7)R`T@r~uenq>6}vWql+481$X*mG#I_X4qXgode|<`t1F{ zEP;U>IR&O?n8zbToPuLlmvXy9k;CU`T5#hR`V=j0Y%IX2GrtW$vFJ6`k#H$$KhGsOEB1C`k{uNpU-3lnvUD2uQGH-{P3~npUq%#$2-VyQ}gP*?L zT{3G})si9N|1h33pzdjQmq|Z5n$mq>n1E^MV-M?pq#`tk6uEsb{X;e!M=Y99_eC!$ zTzNX(PqU!MhS9$0x7z=~C9NTHZnQ^tD4{!()wPh$%+RoE9#PLQKlf(+E@#McC?cnB z@&x}9b*)=Id$6|jJae7I=>`UC*{a`)Sk`q8zXtsgcp+`XJ^%O0ZF;sne%0#-tZAt8 zbXR{IhjE^T;*|&5L%<_<)io#L0A;(GJRKjqvqOC!nT^7&=ZoNN{D493AS|X2gmI(u z=>t*kN!%DxhPy);c%qQxx!c9F{R=+LbnFg9onQPEqDG26G3QKO5{~823!;ad7mUwR zcZb8%aq8M_D>FS$&0D3)hX=`f?d{P6!O;ULjf7t}W=wW;lA2b#@^n9ja0XT13R>4t z+KK_C6`6zISy-BZ?WI)_h;j$iakcGXcQM>y<`{x_zR);T=7HOJpel3hc6Tubr7|=X z^XuE)Wpv*I8?azHqSS{T8lgl*82DBrBd2NDYIr1bD%$>Zbb29z=i_k70~q;QRxpA; zcagU5*(OX~OO^}e*?>O4JY;|12WkUF-I*Se4)1@=Ezzb5hVjT}qlfN@ zj&-k$q=`7yKU(`ZGXq_jOV!=AFyBZ|!SgY9;mqS?p^hKFN0$VJ?k&?9r~&ud>Bk1# zg#|>>z4AgPl@`9TajPvIInDzjmls6Gr)t-X97n&gpKK$VqKxp#YrA^Z|G}7h`HThI zG!kJ=XRJY0+qXR3w_FuPd&oVy7vYC&a&(GY9N89qBvP#IICcC~=Hzh{x>XHlRQjth zmMkeknmQ70>}5^}V?9=_`(x4eLC2Tr4}x2gb{>Xj8V%IZcBD51+4XY{m1KlO5Sw)_3}7piq<$mRpLslw4s)o4vrijN*|%+7{|zW-j9A_DdiN=E?GUcU3bBwhcMgBso^=t!-tW;5A1^aMUd|>C}vY z`&CQXN=WbLk?HVoU!NMJ;cVTI+(_ykq>(`g;-u~=Gbdg9mpJLV%c*|SnQqgZly2rF zc)_OYLN$%pI^eE0`P?S2el&7=U>imX$R4^o=qGvrnqU%6P=ysE$4_9ChS#;wdqo5C zBuBa%Ez4^XoB}#OLEX3kLr;iG?;qgSePxzbQ47l&f@Mtm#@G+h`h5omxT&b6qU&zt zpySK%2Cnl&uC8RR;6WVl|ARq+Q{UFvuwOho*k!zVsAF$?b95(-H_zR(L|VU(X}mca zB;?I03u{CZkJgAL`l(**!D9)Z6vzD%R)(pv71ZbCpOw&-%$GkD{u_ ziMk$ax;FM7gh}2f@~OR8z;OgNNEMx+L9SY$lHuXbNk18*W^(7xz#A_n3egtrhoRmx z)VeprW2>S&d*B{vM5j-^ot9{>)&-r#WGFItUd_`bD(F$Q(FriO=JC^RB__CLxGQEM z1C%5BpH4B8e8{UVQ&Be(8GVb`MAwv}6#wqX5aJ$2*++P6n<8X7A|t^co?8R%&ncks z7>k~9aRebDWTZ%CR;s?s7P<3hsC(f9xQ4=gk_YYw_LId$9}Sc8^VIM?nIZR0GY*y! za^^H@1nERm{q!VyYWvXA=%QiG!9D8e0G2Azzf-W)nf_=KaT8PjZ*{r>PNp;W|_9v(ggd|s=8l9V8?w7Y%=);69xg$Cl{ zx(mGyxVwaIp{Z`=%#$OKKSrQ-=^sYlw*;B0e!k!ZtswQvSD@CNxoD;8`C4^Tbnc6& ze6wo7VAOVub|IcB%^=uj$*?^)MeUS_`mgcaA{x87nkl!$^W0O&bCZ6EeC?UQB7+pJsbXE1M9nZdZfH$xD=>H}kJp z!*DJ*r~CT0qsM~&NZGvf_S4%+0q7sWIHraihauYlXlBQVOgWLASKC^)Y2YwlkBnqa zZ(~sz0ux;4?SHPK^2)>=;a6L?w}i;VZQzl;4CfWgoVTurqPxJl9+ARFe|$btc>itd zMs(1@#(5M>I@t_&FiO|a)H|Q5=yw{=jlyo@emegm2*LdY{5z9>XK`n2Hs7P$innw4 zcP@?IT;zV&C7Ktr@4LiZOAm{QbRi8@%u{3z=M&}vmzNnWy5sIxQF}u|fXQw>U8d^lPop=&X}SfA zV`^LGzeNugBM8`dDfIG4g*qyY_aHDvxtCG;*QfFRNjIJ@+a>OL%E@XyEQJI>nr|`P zbMqaiPJ!x2cK{G9(!849MBSZq8AWYB+I=iS4>5WeokZ9dYFVAb@-&x!FXG>eS?Dg|-$MQ^V!@op_w)I80sk%}#x8P4SlE|n_APY} zQWlpn!ZLReJrq-ZC2l+2FQ>S11@-MWu*k0CJXgDo^zsUKC0*9K%z~>(q_5^(D`nI` z>#3Vw&V(!6PD0%HB7Qa#u}VhU`drNYRAjnZ-}k_|IESHaD^Adg4VtjP#ihZ3Q8!{4 z$sa`)|0i;b#i)*Bh(BYg8sn~weP$$j;OXdC>N~O1vV9h`1jDeynZ68-ACyJMrB0Wv z^qi8$OvQ%!E?+?2X%+b3xu<3f(f*+C(naaM%)_U*t)yY7W*R0vjlRSNtp39~n(3zz z8^U$bgeS@ZuE2fut8L`yGCR^eBVqq_lKt1a-|%1dzR$e=E7=&gJ;h)1|G za>w(kU_|Yc%eLd2M=%gpR)9gGy;vTDA+uq%4`ZT(7%|EmR5La_e(J4QM?2uIxd3|* zb(9lo`IN@=H8HWQksd5P4NWdf5QYkrkT||{2=}V3@fCtrFBClIx)rXE}$JAJ$SJKI%i^K z*~F3=d8zaSUhRX(9LH{#5rw29nbHSe$Uv5s(DLinZMD2SltjaIO3#t;PMQ{Q=)FT! zwHaknwM!z$`%k9Tk!{N<430wbZf3&xQ0iH9mG>m2TiZIDeX_R+*$WQ!VZG-E((j{x zy}jTRW)$#m?>0TE_X#lGb>57oIHNr{OZ(@Lm-AZ=YYhpW=jh6x?24W9tcSOxO3%H? zArYhrXFpj4T4KhNaOWu&q%yr70oE!Y3hA?%y4dV&vo&D&GU`Mutp(1-I%%3fd< z#;Qq7T<~lYt)N8M%J)3VfK{qT2ktpIqGyTdEf(h7q{{qfJrx;=JsxYu0Q*NROiUvN zo>q?hdT8)|&N3Anmc@bRaF-rZ{k5e-sO+1u@3V*gVG$wk`3GF-}2VxkV0joR@km%VQF{k4&j~5;{-p=uiUu%?rRL!m+g66%>RI@IHqI?69l-)5f(@vX z6`6ioW_aU{nwzLnfP0a%-to^2y`+ED~r%<8SSVoeq-F5!?P~dlKL!!H+F!!9}e>(Sd(_IJg*Q>l20 zom)KF-WyMKri9-tpt4m47#+!YLrZHH4#i3&3G~+FF}CoHP#bTC)m( zrq+(u?v^-C+p2HdA8+fdYm~e=C!If1b+;Z$IC$#9dv0zb+}hCu3REgOy(`|(kqS1x zrqmnn?sc~9itnkZiC?pGdnHU$GA`wEnj7N1$<|bY6W6!KJDZxi6Df_-*`1;+$lXJ{ z6FoX(gb|W4mjktJisRI_))aPnr<}IVj^;xCK?R-ehPsY;eO)8_?rtZp&wyg0K4Q9~ z8yrbA7E%fnfvf7Be5PgF)Rj~qt{XvUHMDhhC%C+~q8jbg4BhE^iVpmiXl(7?AMdDZ zPdJGK2_oS)Cs-qda26dMYUVWK2KbKNz=?V{H~^;;V1}MS-dcTK;il5k!qvqqi%Sbv zEH7QNd{ybn!e#BLbVs5L$#G^|10L&=4J~Cjx^CH;RfWr%3zs!@r|KH^FM|_FB^to3 zW!)*9f!D0L+MVj`>a9yPw19`0(mEl ze3Q6*^DSGaOptqz+NG zxBfvZ-)e{GsSt>Db-BXw1G|65gRPaI6%0Vd=%y?s6sxGT! zot^bsGMG_x_#Rt>RMIO9>SbDo8wNG$YO8Aid)u{)OM8D-{O`8~$RjaUP+|YiFaf)D^hR!q&a!hLKkUEfOUi$LLTt?rKCMVB;5(4z_-5 zZD>ORClfnmq!skZ0F(7xxdK4W$uoYUvPQBY*R7o_M-Y4#cGxErIo<+m2?eU_=t#7Y z91*#-pw^y9)mi2cwHAHrjyHC8B*_0DCW$xHb=5VrrVfHR@%n>kTM{WTi<*X4BFgm; zB^7z^>`HVvP02(;^A2)C`lxwFdKgxHsvp^Ck03Keh#7&A=3>dv?S&MHWL>wm>Ubc} zz$xKlz!GgiL~}i%fqKy*P4I#39O+(BjI){$TM!tL zqBTK&9Xc&iYc!X|SPt;Lu1lJUU*LF9O4Nyx#OoVdo!ymhs;S*o8Q;C*2Jilc-BmS} z-c!}ic;)VjJwAXnz@)3$UA4nQ-MT4+3P2XI-IW!aYmkYGxhB$#eoE??0 zP+7z@VB_YEJAlnKftT#;ifgU&5^vq)-J&{7*C=Mne#5m9jjc;IcYE)^o>1mYgvCPe zn>tvMyd+d$CxpOy>tR&y++AI<-9bhT9t<2~$^iB_bbM>Pp)K#m;#y0CM-1xsiFS%T_?~nmkP6Zw&x!ViF1cq-5_(n^K8d)O?2yhKl9+6-gW({v z?ZEVdf#e#}T`;=|HeUXd_Kox!23vE^!qs620UDs5WCjeP1Y|a0vRYPJqD&yK3sHiX z=s#E}9JU#fG*}*orIsA{(RdSBQt~I}9U98q`t~eH_*VN7=kxF*f*$ybgZ3*}4*ia* zj|VLphPp8_oPsd?*TT(PVKLj_%uEWZwU5*YM~wp}y|-LiGIVwk5Y54#pxQzbF{W@* z$`nq3QW*@B1i1#yLvXFde8+pna>us=T9O*RHDS zt?^wuw^wbdbu3h}cfq&ujoWu_+UB$*!9*>a)gr5s$QJ_{#b{-68Q@yh$zGqkE zrm8Jfm7BvaH&bbw>RQ|2mqS^nlC2!!hLh~7*jgFDCJuSt%;`wO&mjEo*31%fN8PQC z-a5QUb~_!Ni343IzSEF~5YFBH2;brX4@vNpz^<@pgo)2XO60Ae=^L6XF$*b4bPhmBj73nmC=P z6|YY>?1y=b$2)t`#c-;sw^UWb3C7=aUFCI^4)vkxQt4y@2nj?v6l6ML#P9fA%fu)RJJxIkQk8$LM$YwJS1PE zoUDXg_4uBuy(Am^ThX{y1GRP4u}q*;hJ~rR`Zjd_bhwKq(uL5^O&y?NT8qO(>CHBF zrYV)=Z{$55Z{nsSuqI&XpT>pq#dQrKh7_}PGb^}%Yck^YXTEXghZ`CN=iULiC~#6T zCbQDg66ZF+m19^$W#C+Wk9KF=zv=cWi}Y54@%8a*MZ(T^H*z3JYJu~utP%~ zB4cVU#Bv+}QX}?u?oV`xR0fOO?KGy_+YjpE;iN4N^QfqFFUr7;VPLk35suNZZssgO z3~NmaEn>cl6gb#wFboY3V5Fm~nMN{nVBU^;aC^cTIe39?c#;H_ED!WcpJFaWj(he8 z-8eX0u0as7Ie}3T8fie_F0{}I1@Ak%97?pm3$)v*Hr;=8V?4UX7g zbO>@lkqA|hO2^rtTKNjhJp(cm!BVoDg&}E2SA{#=!Pm)zWP{R%-yjAOSVshzXTfy+@PH?cI+^;NrTG|^;N9LHj3 zv8*joht8JQWI1ToWA;>!FR|geVY>+&wr}4N-*Mgcnkup5eyylSsmE+4Y+)`EJ=-M(Hx&J87 z`{6gyPlvkE5F=Ypzt~%MS5|JWb^JP4)1Z|9en;hQ3LLn6Fgbc?iK$a*HeR=7OXY6! zn#9P?7@?MQfF(T{2Zz#e0Hc{>hdJCBmDLp+G04jIo2&NlgQV|8gX$hN^MeR5Klq9J zbwnHtmvS-OX1ggV*=MVNZli>RfvgoyZm)x5w;PHndt3^z&#sUWgt)1QE}xAeRqO7k z>%#C~%JGs2A6mO<0N9Z+SsHC&?ZAdl<0WLIf`*awJ383`E|JSvfnM{T>o!vOhXL%0 zn(OxX>3K{7h;Ueqtx1f>ARd$ekjRrAOLcm$XlxO#j=n!aZ^;s)_Yv|6U{=Qryq}dm1nc>v5uI#1x6&kYj@?Yirtk| zR2{l&Vsa3%-k=gJZnAWQYM1Wb3D5NxER8E{Hc34Y4v=-bjXB#&%6=uE^}$Fo={2E=!Wegk=w zC0^I|m50j^DbutX$qP7Yl{p|5S(#CD2OG;~AJgBR3 z`^*xh(1ncm8kV$n=>n6D6#?{(d6s=MTrk0;dFG^?j=0VB-mi0D3{vAzQ_Ap25K09g z0%xmRycs&*cu)iwm4Vujwvt7r(RCw6x?jtU-<8H(6z8Vh6!F(&w~-9NW*V{PyIou3 zTC$jf8Wi@kK9QV_?7yZw^pkP%{yWwg6rEHA4TmAu90l~a$_4S&Pk7{0^SVf&)D8tQ zT=X%FqLa(dkrUEomocPBiDa@
5n<9D-)6yS}Xda>=IrVua`$=*2kQ86wBe?x;_ zU0{o87WNRKl8Z43K`l3Fh7Fo!;yckC_S#-eeBbSXw2;sws3*k!JKq+Bve%Z=0vd@l zhAoR#Fzu!RG0>ar#Lx;Ub2CMTV1=F{VCLaTM<~RZEIMo>MdI2MNlcR&=6Oy|J1)N# zB%&fSUL5Mb4fq^iBY5c6gr0dyVFVGymTCZkGL!Ck8H6QK8+k5t(BGimRDV6yibiDa z@`#Lym@SBAXB_?Jl+1}}%tQxY?Zo0`^n0YsN&{F^x=kit17zS{x_InL68j^q8qi1! zB=Cs@t6;=z)I<+4S#Savhi4M&5oABaWVrt70wk3vwX`<3z>?B9Z6}ti9OUstjDf}L z_hZeAyre;0f~8to#3}5q+PPczUS*K5rH)e&7LBE0I5XbTNVhaL#6`wnL?9C`Iz#lR z7%;86+Ap$eY`+!tjkh#$39`s~4MG?+3@FQOY#N^ZX}KkikyoxPMn#ARS@Z$|U=zuf z82fD!AN}gV7&5p*WaG%Gm49!sjEQa^E1Bmet&wpfP0~srlT}8^3YEd6F+JpNXK$o? zm*1YI?%r@V6Ay0ci+eoH`O*@^>~yRMyEmg(01>LHsg;@4u#5&1f(>3-O{xIq2ew;D(^tA{s(4iqPRLo}ip)u?6~Dn9jqjfq4TLLS5Wc5+SHwXMqKGk}bTK zEV`oPi8c&jU{wpR6v0eVGSTf#hvdhUbuZ!U(dT1MKZHKjZ7C02>7nz|2m7z~-(txL6NM44ylMo+jgjUgQ@25f+t&6SfzHD*K-+7XX{ zFiFD|lE-8^_}s2%vuqSSvF6~Ds!1#qY>;M=^rmP5qSRzTfT;jRl+wXh2U`+LB=P*cn&8}98M@ZMR>x5GGR22q}K*akXK`JaXLDA zZ~+T|c-g!+t8Oo($8xB{IZ(h}I7efi(wD_zb4O)g3Mw;-`exJ9+eo;1z@jV`v)9qQ*TTUO-y7s(5WN z7KWbhs!^e-c@^9NbhhQxlGMzRVQ!KKNnvzkVVjKNbEzSH)fLrnfYc-0wR`8*cum!g z$~eYf8NBJ5s$CeS-V?9cT~Uo+`yD4CXW@f)$0@;{_^wL2tEjH7-0p0yyuNBvC69n( zfy8x{SRiG_x4AQoDmH7|2uo=rS5|L!s(0%}6^3Nhu0UE^F3B?mP#=5+S)y>=FJ$`; zl797g0vQygWKu;P`SZFmuOd(mvArzDW-U6Cx`yX6vREP|;41O@QZ5$>s2P_JabK^) z3AKq`|LgXEi!@)eyXyK%9qDea+){x_q`1@xFZURJAPAQMp&%Cx0je8jY62Yg-c?oC z?6w%SbLU1Kwb;cm$X13_S>1u*?hmyV359Mfy%@%33(sMiW|0@XDy=?^b;`-Q4*bHm zlgG3(We)Z~fm}3-tY6GxYUia{ahmeN25s@jUAodDkprDb8k-gXy?(K@R)P&m~tol7sVGTZXTBluAHyrgpYOBj?aZZ&e@d{KHhnB zaxVM{&a*k;6P;(L<-(uj{4ytevQx85Z#r?Tzo;|Cxj83%s`Jysx$vhsyWWut4v~4N z&Z4Yuqt0|k<%G|0rsRZQ;LOSipXvPe;av1*InJkZ!Dl;zpUDNk&>8$(F8G|RvJ)Wc z%*_M8C=dMNJn&2Mzzg%hi?ZMmKt?&gdO7@J0ss*wo1e1*cb!R2VL^Ey3DuO~H;3TG z0v`;)Hv=AVe7;dR=x-1HkK}0ILx2PXSK#HJ_rM&Qu)d#k1g>ugMzx zKjgt51BU0ycPiji{zs*p_+kP7U6=>|QoyO4=1Xi9g1=heUyv`fksQ$9CV~IEz!zz- zQz`I*Ys(p;e;ub<;Gfu~A#@@G{dEX@xTc(+pA<&FSKxQoYWO?E8$AqouKEt;ftz}n zj|Ek5E{75Kjhyrf=JSSauj zf!7GUOyE(}o7&~5z*_}A2k=~cSS0x76B5$|f1|)(y1kqs1|ApqUw%x(|5NY}ag**YgDbqXIuEa8ute34HS3YWfELEZ`AmwlgIppT7|NfBKHbkAg4s*A~rPU(>!5 zo-Sv+3jTHYELP&%4uLNdxM}x80uQ(QCj=gD_iqYZ=YnmTC=cn^S3>1)I!igtQIp|v z{)Zev87}9dpXeOJ<*X5SxSWRsZpt|ua}U+|M<9 zo(M|AS?XmD9}CxOoYIhRy{-^=xLyf?hwJrDf$LH^j;Ytz1Rk!}e@@i-hU@j~85(Zt zmC94Ew*pS>`)z4oWB=cu2mix);2+Bae<%<9@AAOEln4IJJn*Lhr*=1crz>^yI={$+ zAHn-v_T>KpKjKVtmV8R{O~^Roz>r*V1-;Kj=K^M6K~}uCnCWE4b;|`m95-%acy|1G zJ=2+$74NkHJ`H^M*_+F`=nwO+9mT@v5I?C{?Q1-?l9+KmGLn84rFTh5Sm;0yhI zLEx7zDCg%Q{&k#h3H+w3G~Y~w_j7?ixJct475v`;J{9)x?vT7qg1%DuAG%EAkEe#h z-$erdVtF|~|4!hSF`PkxpEALJn|!5yue_}Wobv4o<=c{nPQTE}Y%FIAzY;p{6Syn& z-6!ye1l}iy6K)as*9E@D)%>A2fc{Pi{FW;;yjg>tUjR?VkTjza7*l<> zm1+1b0>4<`$scR@7J;t;d>?NfFGGSq z`iJHG{3&_)ZNNz$o(Rdq^NcS@)@Af~&Ch!)b$RF%ANrdv@Dpn^{4Nc43K=dB)@766 z|7U$UL#yOnE#Oq1!y!AW_13$dFY=O{9=i(t`j=bAR;8s z&x(GTb}R&(RoA-(>%z)uMMWrF`d0VlaVe4>saO9cLe;Qw^3=D+ce-xK(k zMV^iA`ia1s)@l3)gwC%79$!+<5EF<0f#HH=U8bXe(5gPY?K=7ZOuknkRn&Uho z@U+mmMd<%T;1@}|%o6;cFPHp@;kwQc4q}c6Y_36m`3t* z;+ArT{F~63%Wy%mE^G3@uN69l_h>rXg-%l7`zv(5%cQ+-6L|A88h@wY-vc<=;ctiH zoMVE2g~;KhQl^Il|BIrh#*WQHK2u=d?*4q8ReHqvOeX;1haU<3J<^Y!DJU-p{GY#D z&X7w*A4kDZ5Z~S}a2n;Lq7!!6o^)lxINT@02)U zy}&a9|IRv1|DeF1Vz@k5m!AVp?Ry|p&d7Al&yUU5bc!U+G=ZO%IPF~m$Cu)m&KE;+ zf{&#${Cgqz7NPUIkbYe!@b>$3zJ=1hEdu{T$R4Hz{>{Z2|EQGbPJ#bK;{V?W{9eFG z4#WLlHBs01u?sbw&r7}^6*^b8Yj|Nq6M6!0;#*6IZzl!6WRJ!lEBG%7y#JdT{$WkV z89zhk+jy0RoAHpPfD?U3_-6EIt-!w?;^%gu6FZ^lyif9N5&Xk~zgF^13%pRue~rNJ z5ITouYC1;V-Yf9VyENR`lfM!8w?vPOKm82Dg{XCTG7tP&q4WDoG5#dy)6$RonIzpI@QW@hXNZxXn*{#T`5Im%_$>nes~-jN-(u+O z*6?Y<|Gx&D%2OWV|HlRYuGJMxxkczdDezx)Xgbdc{CTDWdlHHdPcyzCS(iyLn1$A} zxt#|%*~!d1${Dm;3H(06zx7My3^8`#1mn+k+CqBwea4r>*5%)Y&L{5HblxKG z6aDL7epX40ATG#7&!N=#@a^f!rKE>_#O1^^btQ0z>JIWdKN#R?yz~@wH_;^Y1 zX21*O-oEq*{)Fk}3_dL{?-2N&Yc>2QB8MLaoaD`sIOJ}@|AgRwQ{wg_fj=&A^C=1w zhksY#V`bcIg5aML_+Kp5{4xFd2(l!3`^q6*o-d1kpDgfykvM#d&{@uKd9W_q1b?>7 z2mPbGYZ3V9)#VJ?FYr6^(D~~;@XrXHt$(ZO>=8TsWFGwI0VjTbFC<=b`@$$Di5j-~LVLtb3-MDO@IW zUKaT8CEhC%__(>6pBp#me3yzm&lY%>wEJn1t5SwbV(apzJn)pz`9XC#V|PS!qPqqD zB`MFtTUURwT&uvov%>w_`)f)eQ3%=8kOm(NyO>}g4Jbvw_-SO>JI1nX{ zbMumkW*mftqoh+fCD$!Vc#p<=I zb0fv+MB8{>GFf*J>+tFDoF=S_PQ>L1C!EdTJz=FhHnZEP`m|A$P>xrnL-gd94oAjf z_cYGL!C4wWX)Rt^y7o%GT)C3Y?emh!DTTBZpAWvn3tCLyeyiNz04Utypwi-%Yp*N~ zp0I-#*1|ywxJlzV+}sb94nCsvz4{W$C$nOaUE7K-)8zvrNO=r^-29N{Wq3MV?y(3I-7^OVSwocw>X!d-bX`dh^qQj(u z3BunFG~1=}ZM)K+PHMn$`}$)+xTE@jQ)agf^Gi0x@HPPXEQHxNk$+5+rU=LCfYtHb=Jxg+>F9J4()O@)vBu5f!!d+ zA=K>HMDC!5kL=JJjI51Qta@apBr((VHz8`7VW5W@I{AQK%3--yi2s3$o=SMOES zj0kR8*4yF(ri${_ds6vqJ}9J?G-jc<)rd(3Ys2)Z2w5jm$XUpAJhApVT9RpRR`A?c zZ57$H8A*#L_=tFqjdau~opS2uy|Q?P_8PW4ibS9RAuk7T@)d8l3pKHPGr)Ko7FF6e zrjwXvmtA;-mE)8xo1{5;H+UAW#}}#>?}XGk;hm`^?Du3;v@>+z38l`xiAoxX4{XD( zSDYW}Gly(PR>RwSqjg!R(T!2?q81NAb(9l`^N5n!#BFf{QcZ@<-}=eLus3SbZrUbG zT}oF$JfO7j)(tK2*f@UCugEH04ZpaSeWt@e^rlg=Z^836trA(^GqFX5H*|Zg&ifaw z3bQclyv1jm!z6_51htN*GlEJd!?FYOtKhYTzj>5-(xjPcQtDGur8R=7Ej`x)&Sz*z zLGtYS(yb2QmF7Yct#;jw>^rrw>;#u zY(=s~%2p-+=uqsjCkw#mfO1Bj#)o8?G|*4R(qW%&O5sO{6*{P4hX=FK8ZrQAn}+tT zU=l6>q@K7y`-S;Am@%s^`Fs76OB*=+2V1ti(}i)?5gp2GX>3lr960TOThK7U%7mZFlg7Z#I3R89I<&Esjw@lBi{IQ9k-}1}>^H~n|Hyma2fwKqDbqQ9Iats{vfIb$! zNTjQU*qTe|TS;nOZGvGVL+|8tx5n;HoWa7!CmY4{&#uo34FUpSo&Kabs8yTft;@0^ zFzlhMLtz*Tf>&rS)Rqqch!7z7Bw4Yy+Q#wm2>v1+eOaW@cirJ;#aV+KdxT1neXNp* zg>n75*de74h;Zn85-dR`KnrelmTxiWquhdRDq?F&ZDfFtRVU%{u|1s%mC5+uPz9;= z`Rq122-N5*%1EE+ArSPRg_rQ`gBvW#HD631|IfAKgxVE~Vwv)4$CXQHtxlJ(EM#Vl zk{J?ou7O`$(hwax24P{36h0--oFu2~h@&68V;gk2O=m>}i`dV*p&4I0vcTuNOzBuD zb2?^DX&n#Z$+GuBFg``nbo2CK-{3yRlQ`fwTa9#cX}vPtkZgNwsiRcQJE_)cQG5jg zQKFoWU?jaetIJHj%AAZHj@of#mwc{)zM<2F&sl{U$m%lq#{k&Y#TO+JOF6nk%IzN> zECBLM+(uSK=o>=Jc;iA)UUMD{c*|#GSm+2yQFXishWEtI?rw1lOwRNN*ly~UG^dM7 zX<&-HV+Mjg6GII-j>q=JK_7%>^E3N<6YOzx7m1Jc(9AT4&H0k*Q-w)F?aUFP#)D;@ z2@?2xO^|a&5w%QeGfr(AG(V(}{MDr7!E9eftoFXEVvG%S*RnK*tQd)XPNB(h0yY;_ ztFAG0!FIJj+@eK7V}mbzwpFl=yk0voisG!mX9qa5{86GNpF>2<*}IgNcW{ic9Jh3a zW3u?QJ@MT#?7ayeW$VV6cd$vaU3b8G@iBF}xpb@)az)aqK%>~PtR1Bq?qJXX$DV}` z5Y*1moc3o6e)ymWSQDJ$A8gEERRZ!U-p*JaFW~Y3oHpd(Kp`+z;i{BI7}#+7A? zPaNe2fI-VLMr_kkNj?KLM=rj6grXe|2D0OGk%v4dx-bho*`?}w;h7AQnSKBnQ$3WI zt(sW_Y=KkCM3``T7@x`&tdlgZZn+TmjXmH(=C^=!GL2~)9r9&62_|7IHtYkwnWRmX z-}E#Hf*1p5jAb<#&Woky3TBec>fn1!^kt)PIf8;hOy^FmE|3>=i`2{4#yDY!KmN&o zzEBV~*hqhJDA2gUArhuZ@~tJ3omqw>l#A(!&f#>58xMAXp1vYVL`KSb>VwT#T?%kdNqkqNt;1hmnMixk&Jd|6UXpuSCmPQaUPdcfd zjMXX3{VfeZLpF6d*A8XqOc8lN=+mLah~1oG^1XC8a&cp#KHZFTbscnew>%;a>NNLt z_4V{EDtUvW{ct3mP6VErTS;!_tzYF8%L^Qu8kgyG?;N7F0>E^9;7_K}J=lEQjlusW zeT`d=CkN*i@x>|B7w=b=BY4lWPQXr|a?AN$O42XjC;um$eluRZ^zzG{CjWcgaz?&a z0H*x1Y{fC_$ruSgw0?)y6q)poy5)Fsa9$E$oM$D&7#^waCjBh^+PNNAT7qKIoAZ?J zrAp!NN%KNKG7Y)q%U|I4Wvl$=+@+hxX{;7OHsv?u%$3&l{J~0Z&S(0Hr0e0#i8Owb>+X5^z~)**8em48ps2-Xbh2&3pquR!-t#9Vy=gylzSYf= z{?6qdD&K_b^O;b3a}L%|59|CJLkYtC|3WCeIWKG1J9PRV6`eW%VZ5fbTBJk#_fVZ& zb^1{Dp8N>5^Av8VsZDxw{+4>^+|vJVq$Ny~-kj4l+yCr|1@t;X&uD=D8P)zyFezw8S=!B<@ zVCm#epa-79^(tqd$&A1w~5Kb}-r>FCK!Z1Sp_gR{w zKiY0es;^<(3P~U4-*7^wUmAL0(wi%-+c)=iPA`5yr@z|<;y#Q!6)@BGHtKCZ)=;w! y+`J2?r{|D}G3s3()aeJ8>XZv`>BIjABk74{Fi)DLvO%(Kl?A7|NjRz3?_E~ literal 250264 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%0D% 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 JvhlU({{eH7bzuMi diff --git a/frontend/user/Makefile b/frontend/user/Makefile index 6d2cd54..964dd7a 100644 --- a/frontend/user/Makefile +++ b/frontend/user/Makefile @@ -23,7 +23,8 @@ CFLAGS += -D HASH_BLOOM=20 \ -D USE_PMU \ # -D USE_NEW_RMW \ -DMLIB := ../../devices/libramdrive/libramdrive.a +#DMLIB := ../../devices/libramdrive/libramdrive.a +DMLIB := ../../devices/libdummy/libdummy.a LIBFTL := libftl.a SRCS := \ diff --git a/frontend/user/userio.c b/frontend/user/userio.c index f1b4ed1..6297145 100644 --- a/frontend/user/userio.c +++ b/frontend/user/userio.c @@ -202,11 +202,11 @@ void userio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req) bdbm_blkio_req_t* r = (bdbm_blkio_req_t*)req->blkio_req; /* remove blkio_req */ - /* { int i = 0; for (i = 0; i < r->bi_bvec_cnt; i++) { if (bdbm_is_read (r->bi_rw)) { + /* if (r->bi_bvec_ptr[i][0] != 0x0A || r->bi_bvec_ptr[i][1] != 0x0B || r->bi_bvec_ptr[i][2] != 0x0C) { @@ -216,12 +216,12 @@ void userio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req) r->bi_bvec_ptr[i][1], r->bi_bvec_ptr[i][2]); } + */ } bdbm_free (r->bi_bvec_ptr[i]); } bdbm_free (r); } - */ /* destroy hlm_req */ bdbm_hlm_reqs_pool_free_item (p->hlm_reqs_pool, req); diff --git a/ftl/hlm_nobuf.c b/ftl/hlm_nobuf.c index f4ac982..eaae86e 100644 --- a/ftl/hlm_nobuf.c +++ b/ftl/hlm_nobuf.c @@ -61,8 +61,10 @@ bdbm_hlm_inf_t _hlm_nobuf_inf = { /* data structures for hlm_nobuf */ typedef struct { bdbm_hlm_req_t tmp_hr; + bdbm_sema_t die_lock[64]; } bdbm_hlm_nobuf_private_t; +extern bdbm_drv_info_t* _bdi; /* functions for hlm_nobuf */ uint32_t hlm_nobuf_create (bdbm_drv_info_t* bdi) @@ -79,6 +81,16 @@ uint32_t hlm_nobuf_create (bdbm_drv_info_t* bdi) /* keep the private structure */ bdi->ptr_hlm_inf->ptr_private = (void*)p; + + { + int i = 0; + for (i = 0; i < 64; i++) { + bdbm_sema_init (&p->die_lock[i]); + } + } + + _bdi = bdi; + return 0; } @@ -102,8 +114,19 @@ uint32_t __hlm_nobuf_make_trim_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* ptr_hl return 0; } +uint32_t hynix_dumbssd_send_cmd ( + bdbm_drv_info_t* bdi, + bdbm_llm_req_t* r, + void (*intr_handler)(void*)); + +void intr_handler(void* arg) +{ + _bdi->ptr_hlm_inf->end_req (_bdi, arg); +} + uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) { + bdbm_hlm_nobuf_private_t* p = BDBM_HLM_PRIV(bdi); bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS(bdi); bdbm_ftl_inf_t* ftl = BDBM_GET_FTL_INF(bdi); bdbm_llm_req_t* lr = NULL; @@ -169,13 +192,28 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) } /* (3) send llm_req to llm */ +#if 1 if (bdi->ptr_llm_inf->make_reqs == NULL) { /* send individual llm-reqs to llm */ bdbm_hlm_for_each_llm_req (lr, hr, i) { +#if 0 if (bdi->ptr_llm_inf->make_req (bdi, lr) != 0) { bdbm_error ("oops! make_req () failed"); bdbm_bug_on (1); } +#else + /*bdbm_sema_lock (&lr->done);*/ + bdbm_sema_lock (&p->die_lock[lr->phyaddr.channel_no]); + bdbm_msg ("submit to %llu (%llu %llu %llu %llu)", + lr->phyaddr.channel_no, + lr->phyaddr.channel_no, + lr->phyaddr.chip_no, + lr->phyaddr.block_no, + lr->phyaddr.page_no); + hynix_dumbssd_send_cmd (bdi, lr, intr_handler); + /*bdbm_sema_lock (&lr->done);*/ + /*bdbm_sema_unlock (&lr->done);*/ +#endif } } else { /* send a bulk of llm-reqs to llm if make_reqs is supported */ @@ -184,6 +222,26 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) bdbm_bug_on (1); } } +#else + /* This is just for a test with Dumb NVME devices */ + /* send a bulk of llm-reqs to llm if make_reqs is supported */ + /* + if (bdi->ptr_llm_inf->make_reqs (bdi, hr) != 0) { + bdbm_error ("oops! make_reqs () failed"); + bdbm_bug_on (1); + } + */ + + if (bdi->ptr_llm_inf->make_reqs == NULL) { + /* send individual llm-reqs to llm */ + bdbm_hlm_for_each_llm_req (lr, hr, i) { + if (bdi->ptr_llm_inf->make_req (bdi, lr) != 0) { + bdbm_error ("oops! make_req () failed"); + bdbm_bug_on (1); + } + } + } +#endif bdbm_bug_on (hr->nr_llm_reqs != i); @@ -282,8 +340,11 @@ void __hlm_nobuf_end_blkio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) /* increase # of reqs finished */ atomic64_inc (&hr->nr_llm_reqs_done); + lr->req_type |= REQTYPE_DONE; + /*bdbm_msg (" -- %ld/%llu", atomic64_read (&hr->nr_llm_reqs_done), hr->nr_llm_reqs);*/ + if (atomic64_read (&hr->nr_llm_reqs_done) == hr->nr_llm_reqs) { /* finish the host request */ bdi->ptr_host_inf->end_req (bdi, hr); @@ -307,7 +368,16 @@ void hlm_nobuf_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) if (bdbm_is_gc (lr->req_type)) { __hlm_nobuf_end_gcio_req (bdi, lr); } else { + bdbm_hlm_nobuf_private_t* p = BDBM_HLM_PRIV(bdi); + /*bdbm_sema_unlock (&lr->done);*/ + bdbm_msg ("done - 1: %llu (%llu %llu %llu %llu)", + lr->phyaddr.channel_no, + lr->phyaddr.channel_no, + lr->phyaddr.chip_no, + lr->phyaddr.block_no, + lr->phyaddr.page_no); __hlm_nobuf_end_blkio_req (bdi, lr); + bdbm_sema_unlock (&p->die_lock[lr->phyaddr.channel_no]); } } diff --git a/ftl/hlm_reqs_pool.c b/ftl/hlm_reqs_pool.c index c601334..cd8e053 100644 --- a/ftl/hlm_reqs_pool.c +++ b/ftl/hlm_reqs_pool.c @@ -41,7 +41,7 @@ THE SOFTWARE. #include "umemory.h" -#define DEFAULT_POOL_SIZE 128 +#define DEFAULT_POOL_SIZE 16 #define DEFAULT_POOL_INC_SIZE DEFAULT_POOL_SIZE / 5 bdbm_hlm_reqs_pool_t* bdbm_hlm_reqs_pool_create ( @@ -160,6 +160,7 @@ bdbm_hlm_req_t* bdbm_hlm_reqs_pool_get_item ( struct list_head* pos = NULL; bdbm_hlm_req_t* item = NULL; + bdbm_msg ("bdbm_hlm_reqs_pool_get_item - start"); bdbm_spin_lock (&pool->lock); again: @@ -198,11 +199,14 @@ bdbm_hlm_req_t* bdbm_hlm_reqs_pool_get_item ( list_add_tail (&item->list, &pool->used_list); bdbm_spin_unlock (&pool->lock); + + bdbm_msg ("bdbm_hlm_reqs_pool_get_item - end"); return item; fail: bdbm_spin_unlock (&pool->lock); + bdbm_msg ("bdbm_hlm_reqs_pool_get_item - end (fail)"); return NULL; } @@ -267,6 +271,7 @@ void hlm_reqs_pool_allocate_llm_reqs ( fo->data = (uint8_t*)bdbm_malloc_phy (8*BDBM_MAX_PAGES); else fo->data = (uint8_t*)bdbm_malloc (8*BDBM_MAX_PAGES); + bdbm_sema_init (&llm_reqs[i].done); } } @@ -419,6 +424,7 @@ static int __hlm_reqs_pool_create_read_req ( ptr_lr = &hr->llm_reqs[0]; for (i = 0; i < nr_llm_reqs; i++) { + /*for (i = 0; i < br->bi_bvec_cnt; i++) {*/ offset = pg_start % NR_KPAGES_IN(pool->map_unit); if (pool->in_place_rmw == 0) @@ -442,7 +448,11 @@ static int __hlm_reqs_pool_create_read_req ( ptr_lr++; } - bdbm_bug_on (bvec_cnt != br->bi_bvec_cnt); + //bdbm_bug_on (bvec_cnt != br->bi_bvec_cnt); + if (bvec_cnt != br->bi_bvec_cnt) { + bdbm_msg ("bvec_cnt: %llu, br->bi_bvec_cnt: %llu", + bvec_cnt, br->bi_bvec_cnt); + } /* intialize hlm_req */ hr->req_type = br->bi_rw; diff --git a/ftl/llm_mq.c b/ftl/llm_mq.c index 5dd9fd8..9564036 100644 --- a/ftl/llm_mq.c +++ b/ftl/llm_mq.c @@ -134,6 +134,10 @@ int __llm_mq_thread (void* arg) bdbm_warning ("oops! make_req failed"); } + if (cnt % 50000 == 0) { + bdbm_msg ("llm_make_req: %llu, %llu - done", cnt, bdbm_prior_queue_get_nr_items (p->q)); + } + cnt++; } } @@ -244,7 +248,7 @@ uint32_t llm_mq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) pmu_update_sw (bdi, r); /* wait until there are enough free slots in Q */ - while (bdbm_prior_queue_get_nr_items (p->q) >= 96) { + while (bdbm_prior_queue_get_nr_items (p->q) > 96) { bdbm_thread_yield (); } diff --git a/ftl/llm_noq.c b/ftl/llm_noq.c index 9646591..69395c3 100644 --- a/ftl/llm_noq.c +++ b/ftl/llm_noq.c @@ -41,6 +41,7 @@ THE SOFTWARE. #include "llm_noq.h" #include "pmu.h" +/*#define ENABLE_SEQ_DBG*/ /* llm interface */ bdbm_llm_inf_t _llm_noq_inf = { @@ -48,13 +49,17 @@ bdbm_llm_inf_t _llm_noq_inf = { .create = llm_noq_create, .destroy = llm_noq_destroy, .make_req = llm_noq_make_req, - .make_reqs = llm_noq_make_reqs, + /*.make_reqs = llm_noq_make_reqs,*/ + .make_reqs = NULL, .flush = llm_noq_flush, .end_req = llm_noq_end_req, }; struct bdbm_llm_noq_private { uint32_t dummy; +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_t dbg_seq; +#endif }; uint32_t llm_noq_create (bdbm_drv_info_t* bdi) @@ -75,6 +80,10 @@ uint32_t llm_noq_create (bdbm_drv_info_t* bdi) /* keep the private structures for llm_nt */ bdi->ptr_llm_inf->ptr_private = (void*)p; +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_init (&p->dbg_seq); +#endif + return 0; } @@ -91,25 +100,34 @@ void llm_noq_destroy (bdbm_drv_info_t* bdi) bdbm_free (p); } -uint32_t llm_noq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req) +uint32_t llm_noq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) { uint32_t ret; static uint64_t cnt = 0; +#if defined(ENABLE_SEQ_DBG) + struct bdbm_llm_noq_private* p = BDBM_LLM_PRIV(bdi); + bdbm_sema_lock (&p->dbg_seq); +#endif + /* just for display */ if (cnt % 50000 == 0) bdbm_msg ("llm_noq_make_req: %llu", cnt); cnt++; /* update pmu */ - pmu_update_sw (bdi, llm_req); - pmu_update_q (bdi, llm_req); + /*pmu_update_sw (bdi, r);*/ + /*pmu_update_q (bdi, r);*/ + + bdbm_msg ("llm_noq_make_req"); /* send a request to a device manager */ - if ((ret = bdi->ptr_dm_inf->make_req (bdi, llm_req)) != 0) { + if ((ret = bdi->ptr_dm_inf->make_req (bdi, r)) != 0) { /* handle error cases */ bdbm_error ("llm_make_req failed"); } + bdbm_msg ("llm_noq_make_req - done"); + return ret; } @@ -131,13 +149,18 @@ void llm_noq_flush (bdbm_drv_info_t* bdi) //struct bdbm_llm_noq_private* p = (struct bdbm_llm_noq_private*)BDBM_LLM_PRIV(bdi); } -void llm_noq_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req) +void llm_noq_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) { /* update pmu */ - pmu_update_tot (bdi, llm_req); - pmu_inc (bdi, llm_req); + /*pmu_update_tot (bdi, r);*/ + /*pmu_inc (bdi, r);*/ + +#if defined(ENABLE_SEQ_DBG) + struct bdbm_llm_noq_private* p = BDBM_LLM_PRIV(bdi); + bdbm_sema_unlock (&p->dbg_seq); +#endif /* finish a request */ - bdi->ptr_hlm_inf->end_req (bdi, llm_req); + bdi->ptr_hlm_inf->end_req (bdi, r); } diff --git a/ftl/llm_noq_lock.c b/ftl/llm_noq_lock.c index ace07de..b3c803c 100644 --- a/ftl/llm_noq_lock.c +++ b/ftl/llm_noq_lock.c @@ -43,7 +43,10 @@ THE SOFTWARE. /* llm interface */ +#if 0 bdbm_llm_inf_t _llm_noq_lock_inf = { +#endif +bdbm_llm_inf_t _llm_noq_inf = { .ptr_private = NULL, .create = llm_noq_lock_create, .destroy = llm_noq_lock_destroy, diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index a1f586b..24d60e6 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -134,9 +134,10 @@ typedef struct { /* max kernel pages per physical flash page */ #define BDBM_MAX_PAGES 1 +/*#define BDBM_MAX_PAGES 32*/ /* a bluedbm blockio request */ -#define BDBM_BLKIO_MAX_VECS 512 +#define BDBM_BLKIO_MAX_VECS 128 typedef struct { uint64_t bi_rw; /* REQTYPE_WRITE or REQTYPE_READ */ @@ -183,7 +184,7 @@ typedef struct { uint8_t ret; /* old for GC */ void* ptr_hlm_req; void* ptr_qitem; - bdbm_sema_t* done; /* maybe used by applications that require direct notifications from an interrupt handler */ + bdbm_sema_t done; /* maybe used by applications that require direct notifications from an interrupt handler */ /* logical / physical info */ bdbm_logaddr_t logaddr; @@ -380,6 +381,12 @@ struct _bdbm_drv_info_t { bdbm_llm_inf_t* ptr_llm_inf; bdbm_ftl_inf_t* ptr_ftl_inf; bdbm_perf_monitor_t pm; + + /* for nvme */ + struct request_queue* q; + struct gendisk *gd; + char disk_name[256]; + /* end */ }; /* functions for bdi creation, setup, run, and remove */ diff --git a/run/bonnie++/run_bonnie++.sh b/run/bonnie++/run_bonnie++.sh index 7c42751..0c68393 100755 --- a/run/bonnie++/run_bonnie++.sh +++ b/run/bonnie++/run_bonnie++.sh @@ -3,10 +3,10 @@ # for 2 GB sudo mkdir /media/blueDBM/1 sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/1 & -sudo mkdir /media/blueDBM/2 -sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/2 & -sudo mkdir /media/blueDBM/3 -sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/3 & +#sudo mkdir /media/blueDBM/2 +#sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/2 & +#sudo mkdir /media/blueDBM/3 +#sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/3 & # for 16 GB #sudo mkdir /media/blueDBM/1 diff --git a/run/postmark/postmark-config-1.cfg b/run/postmark/postmark-config-1.cfg index c380319..78f4829 100644 --- a/run/postmark/postmark-config-1.cfg +++ b/run/postmark/postmark-config-1.cfg @@ -1,5 +1,5 @@ set transactions 20000 -set number 10000 +set number 1000 set location /media/blueDBM/1 set buffering true set size 5120 524288 diff --git a/run/postmark/postmark-config-2.cfg b/run/postmark/postmark-config-2.cfg index e233b7f..74091ce 100644 --- a/run/postmark/postmark-config-2.cfg +++ b/run/postmark/postmark-config-2.cfg @@ -1,5 +1,5 @@ set transactions 20000 -set number 10000 +set number 1000 set location /media/blueDBM/2 set buffering true set size 5120 524288 diff --git a/run/postmark/postmark-config-3.cfg b/run/postmark/postmark-config-3.cfg index 3cdc9fe..a8f8980 100644 --- a/run/postmark/postmark-config-3.cfg +++ b/run/postmark/postmark-config-3.cfg @@ -1,5 +1,5 @@ set transactions 20000 -set number 10000 +set number 1000 set location /media/blueDBM/3 set buffering true set size 5120 524288 From 83395abff39d4975c357997a4c360132bedba2d8 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Thu, 28 Jul 2016 17:03:28 -0400 Subject: [PATCH 13/51] urgly reset --- common/bdbm_main.c | 2 +- common/utils/usync.h | 6 +- devices/common/dev_params.c | 29 +- devices/dragonfire/libdf.a | Bin 32370 -> 29106 bytes devices/dumbssd/Makefile | 58 ++++ devices/dumbssd/dev_hynix_nvme.c | 281 ++++++++++++++++++ devices/dumbssd/dev_hynix_nvme.h | 53 ++++ devices/dumbssd/dm_dumbssd.c | 367 ++++++++++++++++++++++++ devices/dumbssd/dm_dumbssd.h | 50 ++++ devices/dumbssd/register.sh | 4 + devices/dumbssd/uregister.sh | 2 + devices/ramdrive/Makefile | 1 - devices/ramdrive/dev_ramssd.c | 3 - devices/ramdrive/dm_ramdrive.c | 41 +-- devices/ramdrive_timing/Makefile | 1 - examples/test/Makefile | 16 ++ examples/test/test | Bin 0 -> 12288 bytes examples/test/test.c | 149 ++++++++++ frontend/kernel_nvme/Makefile | 4 +- frontend/kernel_nvme/blkdev.c | 199 +------------ frontend/kernel_nvme/blkio.c | 440 +++++++++++++++++++++++++++- frontend/kernel_nvme/kmain.c | 442 +---------------------------- frontend/kernel_nvme/mount_ext4.sh | 13 +- frontend/nvme/libftl | Bin 256032 -> 250264 bytes frontend/user/Makefile | 3 +- frontend/user/userio.c | 4 +- ftl/hlm_nobuf.c | 70 ----- ftl/hlm_reqs_pool.c | 14 +- ftl/llm_mq.c | 6 +- ftl/llm_noq.c | 41 +-- ftl/llm_noq_lock.c | 3 - include/bdbm_drv.h | 11 +- run/bonnie++/run_bonnie++.sh | 8 +- run/postmark/postmark-config-1.cfg | 2 +- run/postmark/postmark-config-2.cfg | 2 +- run/postmark/postmark-config-3.cfg | 2 +- 36 files changed, 1480 insertions(+), 847 deletions(-) create mode 100644 devices/dumbssd/Makefile create mode 100644 devices/dumbssd/dev_hynix_nvme.c create mode 100644 devices/dumbssd/dev_hynix_nvme.h create mode 100644 devices/dumbssd/dm_dumbssd.c create mode 100644 devices/dumbssd/dm_dumbssd.h create mode 100755 devices/dumbssd/register.sh create mode 100755 devices/dumbssd/uregister.sh create mode 100644 examples/test/Makefile create mode 100755 examples/test/test create mode 100644 examples/test/test.c diff --git a/common/bdbm_main.c b/common/bdbm_main.c index 5ab4763..0c05844 100644 --- a/common/bdbm_main.c +++ b/common/bdbm_main.c @@ -61,7 +61,7 @@ THE SOFTWARE. //bdbm_ftl_inf_t _ftl_block_ftl, _ftl_dftl, _ftl_no_ftl; bdbm_ftl_inf_t _ftl_dftl, _ftl_no_ftl; bdbm_hlm_inf_t _hlm_dftl_inf, _hlm_buf_inf; -/*bdbm_llm_inf_t _llm_noq_inf;*/ +bdbm_llm_inf_t _llm_noq_inf; /* TEMP */ /* It creates bdi and setups bdi with default parameters. Users changes the diff --git a/common/utils/usync.h b/common/utils/usync.h index f055e0e..ec6e0e5 100644 --- a/common/utils/usync.h +++ b/common/utils/usync.h @@ -69,11 +69,9 @@ THE SOFTWARE. #define bdbm_spinlock_t spinlock_t #define bdbm_spin_lock_init(a) spin_lock_init(a) #define bdbm_spin_lock(a) spin_lock(a) -/*#define bdbm_spin_lock_irqsave(a,flag) spin_lock_irqsave(a,flag)*/ -#define bdbm_spin_lock_irqsave(a,flag) spin_lock(a) +#define bdbm_spin_lock_irqsave(a,flag) spin_lock_irqsave(a,flag) #define bdbm_spin_unlock(a) spin_unlock(a) -/*#define bdbm_spin_unlock_irqrestore(a,flag) spin_unlock_irqrestore(a,flag)*/ -#define bdbm_spin_unlock_irqrestore(a,flag) spin_unlock(a) +#define bdbm_spin_unlock_irqrestore(a,flag) spin_unlock_irqrestore(a,flag) #define bdbm_spin_lock_destory(a) diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index bfe002b..87cd5bf 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -42,35 +42,22 @@ THE SOFTWARE. #include "umemory.h" #include "debug.h" -#if 0 enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, - NAND_PAGE_OOB_SIZE = 0, /* P2L mapping is not supported yet */ - NR_PAGES_PER_BLOCK = 64, /* 7-bit (BITS_FOR_WU) */ - NR_BLOCKS_PER_CHIP = 128, /* 8-bit (BITS_FOR_VBLK) */ - NR_CHIPS_PER_CHANNEL = 1, /* set to 1 by default */ - NR_CHANNELS = 64, /* 6-bit (BITS_FOR_DIE) */ + //NAND_PAGE_OOB_SIZE = 64, /* for bdbm hardware */ + NAND_PAGE_OOB_SIZE = 8*BDBM_MAX_PAGES, + NR_PAGES_PER_BLOCK = 128, + NR_BLOCKS_PER_CHIP = 192/BDBM_MAX_PAGES, + //NR_BLOCKS_PER_CHIP = 8/BDBM_MAX_PAGES, + NR_CHIPS_PER_CHANNEL = 4, + //NR_CHIPS_PER_CHANNEL = 8, + NR_CHANNELS = 8, NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ NAND_PAGE_PROG_TIME_US = 500, /* 1.3ms */ NAND_PAGE_READ_TIME_US = 100, /* 100us */ NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ }; -#endif - -enum BDBM_DEFAULT_NAND_PARAMS { - NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, - NAND_PAGE_OOB_SIZE = 8*BDBM_MAX_PAGES, - NR_PAGES_PER_BLOCK = 64, - NR_BLOCKS_PER_CHIP = 128, - NR_CHIPS_PER_CHANNEL = 1, - NR_CHANNELS = 4, - NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ - NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ - NAND_PAGE_PROG_TIME_US = 100000, /* 1.3ms */ - NAND_PAGE_READ_TIME_US = 1000, /* 100us */ - NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ -}; int _param_nr_channels = NR_CHANNELS; int _param_nr_chips_per_channel = NR_CHIPS_PER_CHANNEL; diff --git a/devices/dragonfire/libdf.a b/devices/dragonfire/libdf.a index 304f460c1628f03a1813d942eeea23e14bd22ccc..b2bcd371ce767180316ed45baef570f2cd6e3aaf 100644 GIT binary patch literal 29106 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 H{PsTqx$sPi literal 32370 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 diff --git a/devices/dumbssd/Makefile b/devices/dumbssd/Makefile new file mode 100644 index 0000000..e5dd668 --- /dev/null +++ b/devices/dumbssd/Makefile @@ -0,0 +1,58 @@ +# Makefile for BlueDBM +# + +INCLUDE = ../../include +COMMON = ../../common +DEV_COMMON = ../common + +EXTRA_CFLAGS := \ + -I$(PWD)/$(INCLUDE) \ + -I$(PWD)/$(COMMON)/utils \ + -I$(PWD)/$(COMMON)/3rd \ + -I$(PWD)/$(DEV_COMMON) \ + +EXTRA_CFLAGS += \ + -D CONFIG_ENABLE_MSG \ + -D CONFIG_ENABLE_DEBUG \ + -D CONFIG_DEVICE_TYPE_RAMDRIVE \ + -D KERNEL_MODE + +dumbssd-y := \ + $(COMMON)/utils/ufile.o \ + $(COMMON)/utils/utime.o \ + $(COMMON)/utils/uthread.o \ + $(COMMON)/utils/umemory.o \ + $(DEV_COMMON)/dev_params.o \ + dev_hynix_nvme.o \ + dm_dumbssd.o \ + #$(DEV_COMMON)/dev_main.o \ + +obj-m := dumbssd.o + +export KROOT=/lib/modules/$(shell uname -r)/build + +.PHONY: default +default: modules + +.PHONY: modules +modules: + @$(MAKE) -C $(KROOT) M=$(PWD) modules + @chmod +x dumbssd.ko + +.PHONY: modules_check +modules_check: + @$(MAKE) -C $(KROOT) C=2 M=$(PWD) modules + +.PHONY: modules_install +modules_install: + @$(MAKE) -C $(KROOT) M=$(PWD) modules_install + +.PHONY: kernel_clean +kernel_clean: + @$(MAKE) -C $(KROOT) M=$(PWD) clean + +.PHONY: clean +clean: kernel_clean + @$(RM) -rf Module.markers modules.order + @cd ../common; $(RM) *.o + diff --git a/devices/dumbssd/dev_hynix_nvme.c b/devices/dumbssd/dev_hynix_nvme.c new file mode 100644 index 0000000..a41239d --- /dev/null +++ b/devices/dumbssd/dev_hynix_nvme.c @@ -0,0 +1,281 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#if defined (KERNEL_MODE) +#include +#include +#include /* workqueue */ +#else +#error Invalid Platform (KERNEL_MODE or USER_MODE) +#endif + +#include +#include + +#include "debug.h" +#include "dm_dumbssd.h" +#include "dev_hynix_nvme.h" + +#define BITS_PER_SLICE 6 +#define BITS_PER_WU 7 +#define BITS_PER_DIE 6 + +#define USE_ASYNC + +bdbm_sema_t dbg_seq; + +static void nvme_nvm_end_io (struct request *rq, int error) +{ + hd_req_t* hc = rq->end_io_data; + void (*fn) (void*) = hc->intr_handler; + + if (hc->rw == READ) { + bdbm_msg (" ==> %x %x %x ...", hc->buffer[0], hc->buffer[1], hc->buffer[2]); + /*memcpy (hc->kp_ptr, hc->buffer, 4096);*/ + } + + if (rq->cmd) + kfree (rq->cmd); + if (hc->buffer) + kfree (hc->buffer); + if (rq) + blk_mq_free_request (rq); + if (fn) + fn (hc); +} + +int simple_read (dumb_ssd_dev_t* dev, hd_req_t* hc) +{ + struct request *rq; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + int req_ofs = hc->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hc->die << (BITS_PER_WU + BITS_PER_SLICE) | + hc->wu << (BITS_PER_SLICE); + + bdbm_bug_on (cmd == NULL); + + /* [STEP2] alloc request */ + rq = blk_mq_alloc_request(dev->q, 0, 0); + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); + return -ENOMEM; + } + + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = hc; + + /* [STEP3] setup cmd */ + cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = 63; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + + if (blk_rq_map_kern (dev->q, rq, hc->buffer, 64*4096, GFP_KERNEL)) { + bdbm_msg ("blk_rq_map_kern() failed"); + bdbm_bug_on (1); + } + +#ifdef USE_ASYNC + blk_execute_rq_nowait (dev->q, NULL, rq, 1, nvme_nvm_end_io); +#else + blk_execute_rq (dev->q, dev->gd, rq, 0); + rq->end_io_data = hc; + nvme_nvm_end_io (rq, 0); +#endif + + return 0; +} + +int simple_write (dumb_ssd_dev_t* dev, hd_req_t* hc) +{ + struct request *rq; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + int req_ofs = hc->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hc->die << (BITS_PER_WU + BITS_PER_SLICE) | + hc->wu << (BITS_PER_SLICE); + + bdbm_bug_on (cmd == NULL); + + /* setup bio */ + /*memcpy (hc->buffer, hc->kp_ptr, 4096);*/ + + /* allocate request */ + rq = blk_mq_alloc_request (dev->q, 1, 0); + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); + return -ENOMEM; + } + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = hc; + + /* setup cmd */ + cmd->rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ + cmd->rw.flags = 0; + cmd->rw.nsid = 1; + cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ + cmd->rw.length = 63; /* it must be the unit of 255 */ + cmd->rw.control = 0; + cmd->rw.dsmgmt = 0; + cmd->rw.reftag = 0; + cmd->rw.apptag = 0; + cmd->rw.appmask = 0; + + if (blk_rq_map_kern (dev->q, rq, hc->buffer, 64*4096, GFP_KERNEL)) { + bdbm_msg ("blk_rq_map_kern() failed"); + bdbm_bug_on (1); + } + +#ifdef USE_ASYNC + blk_execute_rq_nowait (dev->q, NULL, rq, 1, nvme_nvm_end_io); +#else + blk_execute_rq (dev->q, dev->gd, rq, 0); + rq->end_io_data = hc; + nvme_nvm_end_io (rq, 0); +#endif + + return 0; +} + +int simple_erase (dumb_ssd_dev_t* dev, hd_req_t* hc) +{ + struct request *rq; + struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); + __u32 req_ofs = hc->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + hc->die << (BITS_PER_WU + BITS_PER_SLICE); + __le64* ubuffer_64 = (__le64*)hc->buffer; + + bdbm_bug_on (cmd == NULL); + + ubuffer_64[1] = req_ofs; + + /* alloc request */ + rq = blk_mq_alloc_request(dev->q, 1, 0); + if (IS_ERR(rq)) { + bdbm_error ("blk_mq_alloc_request"); + bdbm_bug_on (1); + return -ENOMEM; + } + + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_command); + rq->special = (void *)0; + rq->end_io_data = hc; + + /* setup cmd */ + cmd->common.opcode = 9; + cmd->common.flags = 0; + cmd->common.nsid = 1; + cmd->common.cdw2[0] = 0; + cmd->common.cdw2[1] = 0; + cmd->common.cdw10[0] = 0; + cmd->common.cdw10[1] = 4; + cmd->common.cdw10[2] = 0; + cmd->common.cdw10[3] = 0; + cmd->common.cdw10[4] = 0; + cmd->common.cdw10[5] = 0; + + if (blk_rq_map_kern (dev->q, rq, hc->buffer, 64*4096, GFP_KERNEL)) { + bdbm_msg ("blk_rq_map_kern() failed"); + bdbm_bug_on (1); + } + +#ifdef USE_ASYNC + blk_execute_rq_nowait (dev->q, NULL, rq, 1, nvme_nvm_end_io); +#else + blk_execute_rq (dev->q, dev->gd, rq, 0); + rq->end_io_data = hc; + nvme_nvm_end_io (rq, 0); +#endif + + return 0; +} + +uint32_t dev_hynix_nvme_submit_io (dumb_ssd_dev_t* dev, bdbm_llm_req_t* r, void (*done)(void*)) +{ + uint32_t ret = -1; + hd_req_t* hc = kzalloc (sizeof (hd_req_t), GFP_KERNEL); + + bdbm_bug_on (hc == NULL); + + hc->dev = dev; + hc->r = r; + hc->die = r->phyaddr.channel_no; + hc->block = r->phyaddr.block_no; + hc->wu = r->phyaddr.page_no; + hc->intr_handler = done; + hc->buffer = kmalloc (4096*64, GFP_KERNEL); + /*hc->kp_ptr = r->fmain.kp_ptr[0];*/ + + bdbm_bug_on (hc->buffer == NULL); + + switch (r->req_type) { + case REQTYPE_READ_DUMMY: + kfree (hc); + done (r); + break; + + case REQTYPE_WRITE: + case REQTYPE_GC_WRITE: + case REQTYPE_RMW_WRITE: + case REQTYPE_META_WRITE: + hc->rw = WRITE; + ret = simple_write (dev, hc); + break; + + case REQTYPE_READ: + case REQTYPE_GC_READ: + case REQTYPE_RMW_READ: + case REQTYPE_META_READ: + hc->rw = READ; + ret = simple_read (dev, hc); + break; + + case REQTYPE_GC_ERASE: + hc->rw = 0xFF; + ret = simple_erase (dev, hc); + break; + + default: + bdbm_error ("invalid REQTYPE (%u)", r->req_type); + bdbm_bug_on (1); + break; + } + + return 0; +} + diff --git a/devices/dumbssd/dev_hynix_nvme.h b/devices/dumbssd/dev_hynix_nvme.h new file mode 100644 index 0000000..f7c68e6 --- /dev/null +++ b/devices/dumbssd/dev_hynix_nvme.h @@ -0,0 +1,53 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#ifndef _BLUEDBM_DEV_HYNIX_NVME_H +#define _BLUEDBM_DEV_HYNIX_NVME_H + +#include "bdbm_drv.h" + +typedef struct { + struct request_queue *q; + struct request_queue *queue; + struct gendisk *gd; +} dumb_ssd_dev_t; + +typedef struct { + dumb_ssd_dev_t* dev; + bdbm_llm_req_t* r; + int rw; + uint64_t die; + uint64_t block; + uint64_t wu; + uint8_t* kp_ptr; + uint8_t* buffer; + void (*intr_handler)(void*); +} hd_req_t; + +uint32_t dev_hynix_nvme_submit_io (dumb_ssd_dev_t* dev, bdbm_llm_req_t* r, void (*intr_handler)(void*)); +int simple_write (dumb_ssd_dev_t* dev, hd_req_t* hdr); +int simple_read (dumb_ssd_dev_t* dev, hd_req_t* hdr); +int simple_erase (dumb_ssd_dev_t* dev, hd_req_t* hdr); + +#endif diff --git a/devices/dumbssd/dm_dumbssd.c b/devices/dumbssd/dm_dumbssd.c new file mode 100644 index 0000000..9bb69f6 --- /dev/null +++ b/devices/dumbssd/dm_dumbssd.c @@ -0,0 +1,367 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#if defined (KERNEL_MODE) +#include +#include +#include +#include +#include +#include + +#else +#error Invalid Platform (KERNEL_MODE or USER_MODE) +#endif + +#include "debug.h" +#include "dm_dumbssd.h" +#include "dev_params.h" +#include "utime.h" +#include "umemory.h" +#include "dev_hynix_nvme.h" + +#define NR_DIES 64 + + +#define ENABLE_SEQ_DBG + +/* global data structure */ +dumb_ssd_dev_t _dumb_dev; + +bdbm_drv_info_t* _bdi_dm = NULL; +/*bdbm_drv_info_t _bdi;*/ + +bdbm_sema_t die_locks[NR_DIES]; + +/* interface for dm */ +bdbm_dm_inf_t _bdbm_dm_inf = { + .ptr_private = NULL, + .probe = dm_dumbssd_probe, + .open = dm_dumbssd_open, + .close = dm_dumbssd_close, + .make_req = dm_dumbssd_make_req, + .make_reqs = NULL, + .end_req = dm_dumbssd_end_req, + .load = NULL, + .store = NULL, +}; + +/* private data structure for dm */ +typedef struct { +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_t dbg_seq; +#endif +} dm_dumbssd_private_t; + + +/* interrupt handler */ +static void io_done (void* arg) +{ + bdbm_llm_req_t* r = (bdbm_llm_req_t*)arg; + bdbm_drv_info_t* bdi = _bdi_dm; + + bdi->ptr_dm_inf->end_req (bdi, r); +} + +uint32_t dm_dumbssd_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* params) +{ + dm_dumbssd_private_t* p = NULL; + + /* setup NAND parameters according to users' inputs TODO: all the + * parameters will be configured according to the information from the + * device (get_capabilities) */ + *params = get_default_device_params (); + + display_device_params (params); + + /* create a private structure for ramdrive */ + if ((p = (dm_dumbssd_private_t*)bdbm_malloc_atomic + (sizeof (dm_dumbssd_private_t))) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + goto fail; + } + +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_init (&p->dbg_seq); +#endif + + /* OK! keep private info */ + bdi->ptr_dm_inf->ptr_private = (void*)p; + bdbm_msg ("[dm_dumbssd_probe] probe done!"); + return 0; + +fail: + return -1; +} + +uint32_t dm_dumbssd_open (bdbm_drv_info_t* bdi) +{ + dm_dumbssd_private_t * p = BDBM_DM_PRIV (bdi); + + bdbm_msg ("[dm_dumbssd_open] open done! (%p)", p); + + return 0; +} + +void dm_dumbssd_close (bdbm_drv_info_t* bdi) +{ + dm_dumbssd_private_t* p = BDBM_DM_PRIV (bdi); + + bdbm_msg ("[dm_dumbssd_close] closed!"); + + bdbm_free_atomic (p); +} + +uint32_t dm_dumbssd_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) +{ + uint32_t ret; + + dm_dumbssd_private_t* p = BDBM_DM_PRIV (bdi); + +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_lock (&p->dbg_seq); +#endif + + if ((ret = dev_hynix_nvme_submit_io (&_dumb_dev, r, io_done)) != 0) { + bdbm_error ("dev_hynix_nvme_submit_io() failed"); + } + +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_unlock (&p->dbg_seq); +#endif + + return ret; +} + +void dm_dumbssd_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) +{ + bdbm_bug_on (r == NULL); + + bdi->ptr_llm_inf->end_req (bdi, r); +} + +int bdbm_dm_init (bdbm_drv_info_t* bdi) +{ + /* see if bdi is valid or not */ + if (bdi == NULL) { + bdbm_warning ("bdi is NULL"); + return 1; + } + + if (_bdi_dm != NULL) { + bdbm_warning ("dm_stub is already used by other clients"); + return 1; + } + + /* initialize global variables */ + _bdi_dm = bdi; + return 0; +} +EXPORT_SYMBOL (bdbm_dm_init); + +void bdbm_dm_exit (bdbm_drv_info_t* bdi) +{ + _bdi_dm = NULL; +} +EXPORT_SYMBOL (bdbm_dm_exit); + +bdbm_dm_inf_t* bdbm_dm_get_inf (bdbm_drv_info_t* bdi) +{ + if (_bdi_dm == NULL) { + bdbm_warning ("_bdi_dm is not initialized yet"); + return NULL; + } + return &_bdbm_dm_inf; +} +EXPORT_SYMBOL (bdbm_dm_get_inf); + + +/* + * A set of functions for module management + */ +static void ioctl_io_done (void* arg) +{ + hd_req_t* hc = (hd_req_t*)arg; + if (hc) { + bdbm_sema_unlock (&die_locks[hc->die]); + kfree (hc); + } +} + +static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) +{ + dumbssd_user_cmd_t c; + hd_req_t* hc = kzalloc (sizeof (hd_req_t), GFP_KERNEL); + + copy_from_user (&c, (dumbssd_user_cmd_t __user*)arg, sizeof(dumbssd_user_cmd_t)); + bdbm_sema_lock (&die_locks[c.die]); + + bdbm_bug_on (_dumb_dev.q == NULL); + bdbm_bug_on (_dumb_dev.gd == NULL); + + hc->dev = &_dumb_dev; + hc->r = NULL; + hc->die = c.die; + hc->block = c.block; + hc->wu = c.wu; + hc->buffer = kzalloc (4096*64, GFP_KERNEL); + hc->kp_ptr = NULL; + hc->intr_handler = ioctl_io_done; + + switch (cmd) { + case TEST_IOCTL_READ: + hc->rw = READ; + bdbm_msg ("IOCTL_READ: %d %d %d", c.die, c.block, c.wu); + simple_read (&_dumb_dev, hc); + break; + case TEST_IOCTL_WRITE: + bdbm_msg ("IOCTL_WRITE: %d %d %d", c.die, c.block, c.wu); + hc->rw = WRITE; + hc->buffer[0] = c.die + 1; + hc->buffer[1] = c.block + 1; + hc->buffer[2] = c.wu + 1; + simple_write (&_dumb_dev, hc); + break; + case TEST_IOCTL_ERASE: + hc->rw = 0xff; + bdbm_msg ("IOCTL_ERASE: %d %d %d", c.die, c.block, c.wu); + simple_erase (&_dumb_dev, hc); + break; + default: + bdbm_msg ("default"); + break; + } + return 0; +} + +static const struct file_operations _ctl_fops = { + .open = nonseekable_open, + .unlocked_ioctl = nvm_ctl_ioctl, + .owner = THIS_MODULE, +}; + +static struct miscdevice _nvm_misc = { + .minor = MISC_DYNAMIC_MINOR, + .name = "kernel_nvme", + .nodename = "kernel_nvme/control", + .fops = &_ctl_fops, +}; + +static struct block_device_operations _bdops = { + .owner = THIS_MODULE, +}; + +MODULE_ALIAS_MISCDEV (MISC_DYNAMIC_MINOR); + +static blk_qc_t dummy_fn (struct request_queue *q, struct bio *bio) +{ + if (bio) + bio_endio (bio); + return BLK_QC_T_NONE; /* for no polling */ +} + +int bdbm_register (struct request_queue* q, char* disk_name) +{ + uint64_t capacity = 0; + + bdbm_bug_on (q == NULL); + bdbm_bug_on (disk_name == NULL); + + _dumb_dev.q = q; + + if (!(_dumb_dev.queue = blk_alloc_queue_node (GFP_KERNEL, q->node))) { + bdbm_error ("blk_alloc_queue_node() failed"); + return -ENOMEM; + } + + blk_queue_make_request (_dumb_dev.queue, dummy_fn); + blk_queue_logical_block_size (_dumb_dev.queue, 512); + blk_queue_io_min (_dumb_dev.queue, 4096); + blk_queue_io_opt (_dumb_dev.queue, 4096); + + _dumb_dev.queue->limits.discard_granularity = 4096; + _dumb_dev.queue->limits.max_discard_sectors = UINT_MAX; + queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, _dumb_dev.queue); + + if (!(_dumb_dev.gd = alloc_disk (0))) { + bdbm_msg ("alloc_disk() failed"); + return -ENOMEM; + } + _dumb_dev.gd->flags = GENHD_FL_EXT_DEVT; + + _dumb_dev.gd->major = 0; + _dumb_dev.gd->first_minor = 0; + _dumb_dev.gd->fops = &_bdops; + _dumb_dev.gd->queue = _dumb_dev.queue; + _dumb_dev.gd->private_data = NULL; + strcpy (_dumb_dev.gd->disk_name, disk_name); + + /* setup disk capacity */ + capacity = 4 * 1024 * 1024; + capacity = (capacity) - capacity/10; + set_capacity (_dumb_dev.gd, capacity); + add_disk (_dumb_dev.gd); + + bdbm_msg ("Hynix DumbSSD is registered"); + + return 0; +} +EXPORT_SYMBOL (bdbm_register); + +void bdbm_unregister (char* disk_name) +{ + del_gendisk (_dumb_dev.gd); + blk_cleanup_queue (_dumb_dev.queue); + put_disk (_dumb_dev.gd); + + bdbm_msg ("Hynix DumbSSD is unregistered"); +} +EXPORT_SYMBOL(bdbm_unregister); + + +/* module init & exit */ +static int __init dm_dumbssd_init (void) +{ + int ret, loop; + + for (loop = 0; loop < NR_DIES; loop++) + bdbm_sema_init (&die_locks[loop]); + + if ((ret = misc_register (&_nvm_misc))) + bdbm_error ("bdbm_register failed for control device"); + return 0; +} + +static void __exit dm_dumbssd_exit (void) +{ + misc_deregister (&_nvm_misc); +} + + +MODULE_AUTHOR ("Sungjin Lee "); +MODULE_DESCRIPTION ("DUMBSSD Device Wrapper"); +MODULE_LICENSE ("GPL"); + +module_init (dm_dumbssd_init); +module_exit (dm_dumbssd_exit); diff --git a/devices/dumbssd/dm_dumbssd.h b/devices/dumbssd/dm_dumbssd.h new file mode 100644 index 0000000..3996bb3 --- /dev/null +++ b/devices/dumbssd/dm_dumbssd.h @@ -0,0 +1,50 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#ifndef _BLUEDBM_DEV_RAMDRV_H +#define _BLUEDBM_DEV_RAMDRV_H + +#if defined (KERNEL_MODE) +#include "bdbm_drv.h" +#include "params.h" + +uint32_t dm_dumbssd_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* param); +uint32_t dm_dumbssd_open (bdbm_drv_info_t* bdi); +void dm_dumbssd_close (bdbm_drv_info_t* bdi); +uint32_t dm_dumbssd_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req); +uint32_t dm_dumbssd_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* ptr_hlm_req); +void dm_dumbssd_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req); +#endif + +typedef struct { + int die; + int block; + int wu; +} dumbssd_user_cmd_t; + +#define TEST_IOCTL_READ _IO('N', 0x01) +#define TEST_IOCTL_WRITE _IO('N', 0x02) +#define TEST_IOCTL_ERASE _IO('N', 0x03) + +#endif diff --git a/devices/dumbssd/register.sh b/devices/dumbssd/register.sh new file mode 100755 index 0000000..0850757 --- /dev/null +++ b/devices/dumbssd/register.sh @@ -0,0 +1,4 @@ +sudo rmmod nvme +sudo insmod dumbssd.ko +sudo insmod ../../../kernel_4.5.3/nvme/nvme.ko + diff --git a/devices/dumbssd/uregister.sh b/devices/dumbssd/uregister.sh new file mode 100755 index 0000000..1553398 --- /dev/null +++ b/devices/dumbssd/uregister.sh @@ -0,0 +1,2 @@ +sudo rmmod nvme +sudo rmmod dumbssd diff --git a/devices/ramdrive/Makefile b/devices/ramdrive/Makefile index 3cb5a41..e33370b 100644 --- a/devices/ramdrive/Makefile +++ b/devices/ramdrive/Makefile @@ -27,7 +27,6 @@ risa_dev_ramdrive-y := \ $(DEV_COMMON)/dev_stub.o \ dev_ramssd.o \ dm_ramdrive.o \ - hynix_dumbssd.o \ obj-m := risa_dev_ramdrive.o diff --git a/devices/ramdrive/dev_ramssd.c b/devices/ramdrive/dev_ramssd.c index acde3b5..8960e3a 100644 --- a/devices/ramdrive/dev_ramssd.c +++ b/devices/ramdrive/dev_ramssd.c @@ -462,10 +462,7 @@ void __ramssd_cmd_done (dev_ramssd_info_t* ri) bdbm_spin_unlock (&ri->ramssd_lock); /* call the interrupt handler */ -#if 1 - bdbm_msg ("ramdrive -- callback"); ri->intr_handler (ptr_req); -#endif } else { bdbm_spin_unlock (&ri->ramssd_lock); } diff --git a/devices/ramdrive/dm_ramdrive.c b/devices/ramdrive/dm_ramdrive.c index 1021b67..b1d5363 100644 --- a/devices/ramdrive/dm_ramdrive.c +++ b/devices/ramdrive/dm_ramdrive.c @@ -41,8 +41,6 @@ THE SOFTWARE. #include "utime.h" #include "umemory.h" -#include "hynix_dumbssd.h" - /* interface for dm */ bdbm_dm_inf_t _bdbm_dm_inf = { @@ -57,14 +55,9 @@ bdbm_dm_inf_t _bdbm_dm_inf = { .store = dm_ramdrive_store, }; -#define ENABLE_SEQ_DBG - /* private data structure for dm */ typedef struct { dev_ramssd_info_t *ramssd; -#if defined(ENABLE_SEQ_DBG) - bdbm_sema_t dbg_seq; -#endif } dm_ramssd_private_t; /* global data structure */ @@ -107,10 +100,6 @@ uint32_t dm_ramdrive_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* params) goto fail; } -#if defined(ENABLE_SEQ_DBG) - bdbm_sema_init (&p->dbg_seq); -#endif - /* OK! keep private info */ bdi->ptr_dm_inf->ptr_private = (void*)p; @@ -147,37 +136,13 @@ void dm_ramdrive_close (bdbm_drv_info_t* bdi) uint32_t dm_ramdrive_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req) { uint32_t ret; - dm_ramssd_private_t* p = BDBM_DM_PRIV (bdi); -#if 1 - /*if ((ret = dev_ramssd_send_cmd (p->ramssd, ptr_llm_req)) != 0) {*/ - /*bdbm_error ("dev_ramssd_send_cmd failed");*/ - /*}*/ - -#if defined(ENABLE_SEQ_DBG) - bdbm_sema_lock (&p->dbg_seq); -#endif - - if ((ret = hynix_dumbssd_send_cmd (bdi, ptr_llm_req, __dm_ramdrive_ih)) != 0) { - bdbm_error ("hynix_dumbssd_send_cmd"); - } - -#if defined(ENABLE_SEQ_DBG) - bdbm_sema_unlock (&p->dbg_seq); -#endif - -#else - bdbm_msg ("hynix_dumbssd_send_cmd"); if ((ret = dev_ramssd_send_cmd (p->ramssd, ptr_llm_req)) != 0) { bdbm_error ("dev_ramssd_send_cmd failed"); + /* there is nothing to do */ } - /*if ((ret = hynix_dumbssd_send_cmd (bdi, ptr_llm_req, __dm_ramdrive_ih)) != 0) {*/ - /*bdbm_error ("hynix_dumbssd_send_cmd");*/ - /*}*/ -#endif - return ret; } @@ -185,7 +150,6 @@ uint32_t dm_ramdrive_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) { #include "../../ftl/hlm_reqs_pool.h" - /* uint32_t i, ret = 1; bdbm_llm_req_t* lr = NULL; dm_ramssd_private_t* p = BDBM_DM_PRIV (bdi); @@ -198,9 +162,6 @@ uint32_t dm_ramdrive_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) } return ret; - */ - - return 0; } void dm_ramdrive_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req) diff --git a/devices/ramdrive_timing/Makefile b/devices/ramdrive_timing/Makefile index f049e38..e92c402 100644 --- a/devices/ramdrive_timing/Makefile +++ b/devices/ramdrive_timing/Makefile @@ -28,7 +28,6 @@ risa_dev_ramdrive_timing-y := \ $(DEV_COMMON)/dev_stub.o \ ../ramdrive/dev_ramssd.o \ ../ramdrive/dm_ramdrive.o \ - ../ramdrive/hynix_dumbssd.o \ obj-m := risa_dev_ramdrive_timing.o diff --git a/examples/test/Makefile b/examples/test/Makefile new file mode 100644 index 0000000..1fe430b --- /dev/null +++ b/examples/test/Makefile @@ -0,0 +1,16 @@ +CFLAGS=-g -Wall +CC=gcc +LIBS=-lm -lpthread +INCLUDES= +OBJS_FORMAT=test.o +SRCS_FORMAT=test.c + +#The variable $@ has the value of the target. In this case $@ = psort +test: ${OBJS_FORMAT} + ${CC} ${CFLAGS} ${INCLUDES} -o $@ ${OBJS_FORMAT} ${LIBS} + +.c.o: + ${CC} ${CFLAGS} ${INCLUDES} -c $< + +clean: + rm *.o test diff --git a/examples/test/test b/examples/test/test new file mode 100755 index 0000000000000000000000000000000000000000..fb622c0d2eaf30bdfb0ef5f03a0cb8d6d6852ae4 GIT binary patch literal 12288 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 +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "../../devices/dumbssd/dm_dumbssd.h" + +/* +struct user_cmd { + int die; + int block; + int wu; +}; + +#define TEST_IOCTL_READ _IO('N', 0x01) +#define TEST_IOCTL_WRITE _IO('N', 0x02) +#define TEST_IOCTL_ERASE _IO('N', 0x03) +*/ + + + +void test_read (int32_t dev_h, int die, int block, int wu) +{ + dumbssd_user_cmd_t c; + c.die = die; + c.block = block; + c.wu = wu; + ioctl (dev_h, TEST_IOCTL_READ, &c); +} + +void test_write (int32_t dev_h, int die, int block, int wu) +{ + dumbssd_user_cmd_t c; + c.die = die; + c.block = block; + c.wu = wu; + ioctl (dev_h, TEST_IOCTL_WRITE, &c); +} + +void test_erase (int32_t dev_h, int die, int block) +{ + dumbssd_user_cmd_t c; + c.die = die; + c.block = block; + ioctl (dev_h, TEST_IOCTL_ERASE, &c); +} + +int main (int argc, char** argv) +{ + int32_t dev_h = -1; + char* dev_name = "/dev/kernel_nvme/control"; + + fprintf (stderr, "BlueDBM format tools (Ver 0.1)\n\n"); + + /* Open the BDBM device */ + if ((dev_h = open (dev_name, O_RDWR)) == -1) { + fprintf (stderr, "Failed to open '%s'\n", dev_name); + exit (-1); + } + fprintf (stderr, "Open '%s' successfully\n", dev_name); + + /* Send a BDBM format command using IOCTL + * Everything will be done by bdbm_drv.ko */ + +#if 0 + test_erase (dev_h, 8, 8); + sleep (1); + test_write (dev_h, 8, 8, 0); + sleep (1); + test_read (dev_h, 8, 8, 0); + sleep (1); + test_erase (dev_h, 8, 8); + sleep (1); + test_read (dev_h, 8, 8, 0); + printf ("\n"); + + sleep (1); + test_erase (dev_h, 1, 1); + sleep (1); + test_write (dev_h, 1, 1, 0); + sleep (1); + test_read (dev_h, 1, 1, 0); + sleep (1); + test_erase (dev_h, 1, 1); + sleep (1); + test_read (dev_h, 1, 1, 0); + printf ("\n"); +#endif + { + int die = 0, block = 0, wu = 0; + + printf ("erase...\n"); + for (block = 0; block < 20; block++) + for (die = 0; die < 64; die++) + test_erase (dev_h, die, block); + + printf ("write...\n"); + for (block = 0; block < 10; block++) + for (wu = 0; wu < 64; wu++) + for (die = 0; die < 64; die++) + test_write (dev_h, die, block, wu); + + printf ("read...\n"); + for (block = 0; block < 10; block++) + for (wu = 0; wu < 64; wu++) + for (die = 0; die < 64; die++) + test_read (dev_h, die, block, wu); + } + + /* close the device */ + if (dev_h != -1) { + close (dev_h); + } + + return 0; +} + diff --git a/frontend/kernel_nvme/Makefile b/frontend/kernel_nvme/Makefile index d74bf7b..ef9bde8 100644 --- a/frontend/kernel_nvme/Makefile +++ b/frontend/kernel_nvme/Makefile @@ -6,8 +6,7 @@ INCLUDE := ../../include COMMON := ../../common DM_COMMON := ../../devices/common -#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers -KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers +KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/bluedbm/Module.symvers @@ -64,7 +63,6 @@ bdbm_drv-y := \ $(FTL)/pmu.o \ $(FTL)/hlm_nobuf.o \ $(FTL)/llm_mq.o \ - $(FTL)/llm_noq.o \ $(FTL)/algo/abm.o \ $(FTL)/algo/page_ftl.o \ $(FTL)/algo/block_ftl.o \ diff --git a/frontend/kernel_nvme/blkdev.c b/frontend/kernel_nvme/blkdev.c index a1756e2..21c44f0 100644 --- a/frontend/kernel_nvme/blkdev.c +++ b/frontend/kernel_nvme/blkdev.c @@ -41,8 +41,7 @@ int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo); static struct bdbm_device_t { struct gendisk *gd; struct request_queue *queue; -} _bdbm_device_dummy, bdbm_device; - +} bdbm_device; static uint32_t bdbm_device_major_num = 0; static struct block_device_operations bdops = { @@ -80,7 +79,6 @@ int badblock_scan_thread_fn (void* arg) int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo) { -#if 0 bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (_bdi); int nr_sectors = np->device_capacity_in_byte >> 9; @@ -94,13 +92,8 @@ int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo) geo->cylinders, geo->sectors, nr_sectors); - return 0; + return 1; } -#else - geo->heads = 16; - geo->cylinders = 1024; - geo->sectors = 256; -#endif return 0; } @@ -191,91 +184,31 @@ int bdbm_blk_ioctl ( return 0; } -static blk_qc_t dummy_fn ( - struct request_queue *q, - struct bio *bio) -{ - bio_endio (bio); - return BLK_QC_T_NONE; /* for no polling */ -} - uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) { - uint64_t capacity = 0; - - _bdbm_device_dummy.queue = blk_alloc_queue_node (GFP_KERNEL, bdi->q->node); - bdbm_msg ("host_blkdev_register_device -> blk_alloc_queue_node"); - if (!_bdbm_device_dummy.queue) { - bdbm_error ("blk_alloc_queue failed"); - return -ENOMEM; - } - - blk_queue_make_request (_bdbm_device_dummy.queue, dummy_fn); - blk_queue_logical_block_size (_bdbm_device_dummy.queue, bdi->parm_ftl.kernel_sector_size); - blk_queue_io_min (_bdbm_device_dummy.queue, bdi->parm_dev.page_main_size); - blk_queue_io_opt (_bdbm_device_dummy.queue, bdi->parm_dev.page_main_size); - - /* see if a TRIM command is used or not */ - if (bdi->parm_ftl.trim == TRIM_ENABLE) { - _bdbm_device_dummy.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; - _bdbm_device_dummy.queue->limits.max_discard_sectors = UINT_MAX; - queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, _bdbm_device_dummy.queue); - bdbm_msg ("TRIM is enabled"); - } else { - bdbm_msg ("TRIM is disabled"); - } - - bdbm_msg ("host_blkdev_register_device -> alloc_disk"); - if (!(_bdbm_device_dummy.gd = alloc_disk (0))) { - bdbm_msg ("alloc_disk failed"); - return -ENOMEM; - } - _bdbm_device_dummy.gd->flags = GENHD_FL_EXT_DEVT; - bdbm_msg ("host_blkdev_register_device -> alloc_disk - done"); - - bdi->gd = _bdbm_device_dummy.gd; - - _bdbm_device_dummy.gd->major = 0; - _bdbm_device_dummy.gd->first_minor = 0; - _bdbm_device_dummy.gd->fops = &bdops; - _bdbm_device_dummy.gd->queue = _bdbm_device_dummy.queue; - _bdbm_device_dummy.gd->private_data = NULL; - strcpy (_bdbm_device_dummy.gd->disk_name, bdi->disk_name); - - /* setup disk capacity */ - capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; - capacity = (capacity) - capacity/10; - set_capacity (_bdbm_device_dummy.gd, capacity / KERNEL_SECTOR_SIZE); - - /* add disk */ - bdbm_msg ("add_disk"); - add_disk (_bdbm_device_dummy.gd); - bdbm_msg ("add_disk - done"); - - /************************************************************************/ /* create a blk queue */ - bdbm_device.queue = blk_alloc_queue (GFP_KERNEL); - if (!bdbm_device.queue) { + if (!(bdbm_device.queue = blk_alloc_queue (GFP_KERNEL))) { bdbm_error ("blk_alloc_queue failed"); return -ENOMEM; } - blk_queue_make_request (bdbm_device.queue, fn); blk_queue_logical_block_size (bdbm_device.queue, bdi->parm_ftl.kernel_sector_size); blk_queue_io_min (bdbm_device.queue, bdi->parm_dev.page_main_size); blk_queue_io_opt (bdbm_device.queue, bdi->parm_dev.page_main_size); + /*blk_limits_max_hw_sectors (&bdbm_device.queue->limits, 16);*/ /* see if a TRIM command is used or not */ if (bdi->parm_ftl.trim == TRIM_ENABLE) { bdbm_device.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; bdbm_device.queue->limits.max_discard_sectors = UINT_MAX; + /*bdbm_device.queue->limits.discard_zeroes_data = 1;*/ queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, bdbm_device.queue); bdbm_msg ("TRIM is enabled"); } else { bdbm_msg ("TRIM is disabled"); } - /* alloc & register a blk device */ + /* register a blk device */ if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, "blueDBM")) < 0) { bdbm_msg ("register_blkdev failed (%d)", bdbm_device_major_num); return bdbm_device_major_num; @@ -285,7 +218,6 @@ uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) unregister_blkdev (bdbm_device_major_num, "blueDBM"); return -ENOMEM; } - bdbm_device.gd->major = bdbm_device_major_num; bdbm_device.gd->first_minor = 0; bdbm_device.gd->fops = &bdops; @@ -293,110 +225,14 @@ uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) bdbm_device.gd->private_data = NULL; strcpy (bdbm_device.gd->disk_name, "blueDBM"); - /* setup disk capacity */ - /*blk_queue_max_hw_sectors (bdbm_device.queue, 8);*/ - capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; - capacity = (capacity) - capacity/10; - set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); - - /* add disk */ - bdbm_msg ("add_disk"); - add_disk (bdbm_device.gd); - bdbm_msg ("add_disk - done"); - - return 0; -} - -void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) -{ - del_gendisk (bdbm_device.gd); - blk_cleanup_queue (bdbm_device.queue); - put_disk (bdbm_device.gd); - unregister_blkdev (bdbm_device_major_num, "blueDBM"); - - - /*********************************************************/ - /* unregister a BlueDBM device driver */ - del_gendisk (_bdbm_device_dummy.gd); - blk_cleanup_queue (_bdbm_device_dummy.queue); - put_disk (_bdbm_device_dummy.gd); -} - - -#if 0 -uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) -{ - uint64_t capacity = 0; - - /* create a blk queue */ - if (bdi->q == NULL) { - bdbm_device.queue = blk_alloc_queue (GFP_KERNEL); - } else { - bdbm_device.queue = blk_alloc_queue_node (GFP_KERNEL, bdi->q->node); - bdbm_msg ("host_blkdev_register_device -> blk_alloc_queue_node"); - } - if (!bdbm_device.queue) { - bdbm_error ("blk_alloc_queue failed"); - return -ENOMEM; + { + uint64_t capacity; + //capacity = bdi->parm_dev.device_capacity_in_byte * 0.9; + capacity = bdi->parm_dev.device_capacity_in_byte; + capacity = (capacity / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); } - - blk_queue_make_request (bdbm_device.queue, fn); - blk_queue_logical_block_size (bdbm_device.queue, bdi->parm_ftl.kernel_sector_size); - blk_queue_io_min (bdbm_device.queue, bdi->parm_dev.page_main_size); - blk_queue_io_opt (bdbm_device.queue, bdi->parm_dev.page_main_size); - /*blk_limits_max_hw_sectors (&bdbm_device.queue->limits, 16);*/ - - /* see if a TRIM command is used or not */ - if (bdi->parm_ftl.trim == TRIM_ENABLE) { - bdbm_device.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; - bdbm_device.queue->limits.max_discard_sectors = UINT_MAX; - /*bdbm_device.queue->limits.discard_zeroes_data = 1;*/ - queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, bdbm_device.queue); - bdbm_msg ("TRIM is enabled"); - } else { - bdbm_msg ("TRIM is disabled"); - } - - /* alloc & register a blk device */ - if (bdi->q == NULL) { - if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, bdi->disk_name)) < 0) { - bdbm_msg ("register_blkdev failed (%d)", bdbm_device_major_num); - return bdbm_device_major_num; - } - if (!(bdbm_device.gd = alloc_disk (1))) { - bdbm_msg ("alloc_disk failed"); - unregister_blkdev (bdbm_device_major_num, bdi->disk_name); - return -ENOMEM; - } - } else { - bdbm_msg ("host_blkdev_register_device -> alloc_disk"); - if (!(bdbm_device.gd = alloc_disk (0))) { - bdbm_msg ("alloc_disk failed"); - return -ENOMEM; - } - bdbm_device.gd->flags = GENHD_FL_EXT_DEVT; - bdbm_msg ("host_blkdev_register_device -> alloc_disk - done"); - } - - bdi->gd = bdbm_device.gd; - - bdbm_device.gd->major = bdbm_device_major_num; - bdbm_device.gd->first_minor = 0; - bdbm_device.gd->fops = &bdops; - bdbm_device.gd->queue = bdbm_device.queue; - bdbm_device.gd->private_data = NULL; - strcpy (bdbm_device.gd->disk_name, bdi->disk_name); - - /* setup disk capacity */ - /*blk_queue_max_hw_sectors (bdbm_device.queue, 8);*/ - capacity = (bdi->parm_dev.device_capacity_in_byte / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; - capacity = (capacity) - capacity/10; - set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); - - /* add disk */ - bdbm_msg ("add_disk"); add_disk (bdbm_device.gd); - bdbm_msg ("add_disk - done"); return 0; } @@ -405,13 +241,8 @@ void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) { /* unregister a BlueDBM device driver */ del_gendisk (bdbm_device.gd); - blk_cleanup_queue (bdbm_device.queue); put_disk (bdbm_device.gd); - if (bdi->q == NULL) - unregister_blkdev (bdbm_device_major_num, bdi->disk_name); - - /* clean up */ - bdbm_device.queue = NULL; - bdbm_device.gd = NULL; + unregister_blkdev (bdbm_device_major_num, "blueDBM"); + blk_cleanup_queue (bdbm_device.queue); } -#endif + diff --git a/frontend/kernel_nvme/blkio.c b/frontend/kernel_nvme/blkio.c index 160204c..a604b10 100644 --- a/frontend/kernel_nvme/blkio.c +++ b/frontend/kernel_nvme/blkio.c @@ -192,11 +192,6 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) bdbm_blkio_req_t* br = NULL; bdbm_hlm_req_t* hr = NULL; - bdbm_msg ("blkio_make_req WHAT!!!! (%s)", bdi->gd->disk_name); - - /* lock a global mutex -- this function must be finished as soon as possible */ - bdbm_sema_lock (&p->host_lock); - /* get blkio */ if ((br = __get_blkio_req ((struct bio*)bio)) == NULL) { bdbm_error ("__get_blkio_req () failed"); @@ -215,6 +210,9 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) goto fail; } + /* lock a global mutex -- this function must be finished as soon as possible */ + bdbm_sema_lock (&p->host_lock); + /* if success, increase # of host reqs */ atomic_inc (&p->nr_host_reqs); @@ -262,3 +260,435 @@ void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) /* decreate # of reqs */ atomic_dec (&p->nr_host_reqs); } + + +#if 0 + +bdbm_host_inf_t _blkio_inf = { + .ptr_private = NULL, + .open = blkio_open, + .close = blkio_close, + .make_req = blkio_make_req, + .end_req = blkio_end_req, +}; + +typedef struct { + bdbm_sema_t host_lock; + atomic64_t nr_reqs; +} bdbm_blkio_private_t; + + + +/* This is a call-back function invoked by a block-device layer */ +static void __host_blkio_make_request_fn ( + struct request_queue *q, + struct bio *bio) +{ + blkio_make_req (_bdi, (void*)bio); +} + +static bdbm_hlm_req_t* __blkio_create_hlm_trim_req ( + bdbm_drv_info_t* bdi, + struct bio* bio) +{ + bdbm_hlm_req_t* hlm_req = NULL; + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + bdbm_ftl_params* dp = BDBM_GET_DRIVER_PARAMS (bdi); + uint64_t nr_secs_per_fp = 0; + + nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; + + /* create bdbm_hm_req_t */ + if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic + (sizeof (bdbm_hlm_req_t))) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + return NULL; + } + + /* make a high-level request for TRIM */ + hlm_req->req_type = REQTYPE_TRIM; + + if (dp->mapping_type == MAPPING_POLICY_SEGMENT) { + hlm_req->lpa = bio->bi_sector / nr_secs_per_fp; + hlm_req->len = bio_sectors (bio) / nr_secs_per_fp; + if (hlm_req->len == 0) + hlm_req->len = 1; + } else { + hlm_req->lpa = (bio->bi_sector + nr_secs_per_fp - 1) / nr_secs_per_fp; + if ((hlm_req->lpa * nr_secs_per_fp - bio->bi_sector) > bio_sectors (bio)) { + bdbm_error ("'hlm_req->lpa (%llu) * nr_secs_per_fp (%llu) - bio->bi_sector (%lu)' (%llu) > bio_sectors (bio) (%u)", + hlm_req->lpa, nr_secs_per_fp, bio->bi_sector, + hlm_req->lpa * nr_secs_per_fp - bio->bi_sector, + bio_sectors (bio)); + hlm_req->len = 0; + } else { + hlm_req->len = + (bio_sectors (bio) - (hlm_req->lpa * nr_secs_per_fp - bio->bi_sector)) / nr_secs_per_fp; + } + } + hlm_req->nr_done_reqs = 0; + hlm_req->kpg_flags = NULL; + hlm_req->pptr_kpgs = NULL; /* no data */ + hlm_req->ptr_host_req = (void*)bio; + hlm_req->ret = 0; + + return hlm_req; +} + +static bdbm_hlm_req_t* __blkio_create_hlm_rw_req ( + bdbm_drv_info_t* bdi, + struct bio* bio) +{ + struct bio_vec *bvec = NULL; + bdbm_hlm_req_t* hlm_req = NULL; + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + + uint32_t loop = 0; + uint32_t kpg_loop = 0; + uint32_t bvec_offset = 0; + uint64_t nr_secs_per_fp = 0; + uint64_t nr_secs_per_kp = 0; + uint32_t nr_kp_per_fp = 0; + + /* get # of sectors per flash page */ + nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; + nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; + nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ + + /* create bdbm_hm_req_t */ + if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic + (sizeof (bdbm_hlm_req_t))) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + return NULL; + } + + /* get a bio direction */ + if (bio_data_dir (bio) == READ || bio_data_dir (bio) == READA) { + hlm_req->req_type = REQTYPE_READ; + } else if (bio_data_dir (bio) == WRITE) { + hlm_req->req_type = REQTYPE_WRITE; + } else { + bdbm_error ("the direction of a bio is invalid (%lu)", bio_data_dir (bio)); + goto fail_req; + } + + /* make a high-level request for READ or WRITE */ + hlm_req->lpa = (bio->bi_sector / nr_secs_per_fp); + hlm_req->len = (bio->bi_sector + bio_sectors (bio) + nr_secs_per_fp - 1) / nr_secs_per_fp - hlm_req->lpa; + hlm_req->nr_done_reqs = 0; + hlm_req->ptr_host_req = (void*)bio; + hlm_req->ret = 0; + /*bdbm_spin_lock_init (&hlm_req->lock);*/ + if ((hlm_req->pptr_kpgs = (uint8_t**)bdbm_malloc_atomic + (sizeof(uint8_t*) * hlm_req->len * nr_kp_per_fp)) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + goto fail_req; + } + if ((hlm_req->kpg_flags = (uint8_t*)bdbm_malloc_atomic + (sizeof(uint8_t) * hlm_req->len * nr_kp_per_fp)) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + goto fail_flags; + } + /* kpg_flags is set to MEMFLAG_NOT_SET (0) */ + + /* get or alloc pages */ + bio_for_each_segment (bvec, bio, loop) { + /* check some error cases */ + if (bvec->bv_offset != 0) { + bdbm_warning ("'bv_offset' is not 0 (%d)", bvec->bv_offset); + /*goto fail_grab_pages;*/ + } + +next_kpg: + /* assign a new page */ + if ((hlm_req->lpa * nr_kp_per_fp + kpg_loop) != (bio->bi_sector + bvec_offset) / nr_secs_per_kp) { + hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); + hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; + kpg_loop++; + goto next_kpg; + } + + if ((hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)page_address (bvec->bv_page)) != NULL) { + hlm_req->kpg_flags[kpg_loop] = MEMFLAG_KMAP_PAGE; + } else { + bdbm_error ("kmap failed"); + goto fail_grab_pages; + } + + bvec_offset += nr_secs_per_kp; + kpg_loop++; + } + + /* get additional free pages if necessary */ + while (kpg_loop < hlm_req->len * nr_kp_per_fp) { + hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); + hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; + kpg_loop++; + } + + return hlm_req; + +fail_grab_pages: + /* release grabbed pages */ + for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { + if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE) { + bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); + } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE) { + } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { + bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); + } + } + bdbm_free_atomic (hlm_req->kpg_flags); + +fail_flags: + bdbm_free_atomic (hlm_req->pptr_kpgs); + +fail_req: + bdbm_free_atomic (hlm_req); + + return NULL; +} + +static bdbm_hlm_req_t* __blkio_create_hlm_req ( + bdbm_drv_info_t* bdi, + struct bio* bio) +{ + bdbm_hlm_req_t* hlm_req = NULL; + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + uint64_t nr_secs_per_kp = 0; + + /* get # of sectors per flash page */ + nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; + + /* see if some error cases */ + if (bio->bi_sector % nr_secs_per_kp != 0) { + bdbm_warning ("kernel pages are not aligned with disk sectors (%lu mod %llu != 0)", + bio->bi_sector , nr_secs_per_kp); + /* go ahead */ + } + if (KERNEL_PAGE_SIZE > np->page_main_size) { + bdbm_error ("kernel page (%lu) is larger than flash page (%llu)", + KERNEL_PAGE_SIZE, np->page_main_size); + return NULL; + } + + /* create 'hlm_req' */ + if (bio->bi_rw & REQ_DISCARD) { + /* make a high-level request for TRIM */ + hlm_req = __blkio_create_hlm_trim_req (bdi, bio); + } else { + /* make a high-level request for READ or WRITE */ + hlm_req = __blkio_create_hlm_rw_req (bdi, bio); + } + + /* start a stopwatch */ + if (hlm_req) { + bdbm_stopwatch_start (&hlm_req->sw); + } + + return hlm_req; +} + +static void __blkio_delete_hlm_req ( + bdbm_drv_info_t* bdi, + bdbm_hlm_req_t* hlm_req) +{ + bdbm_device_params_t* np = NULL; + uint32_t kpg_loop = 0; + uint32_t nr_kp_per_fp = 0; + + np = BDBM_GET_DEVICE_PARAMS (bdi); + nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ + + /* temp */ + if (hlm_req->org_pptr_kpgs) { + hlm_req->pptr_kpgs = hlm_req->org_pptr_kpgs; + hlm_req->kpg_flags = hlm_req->org_kpg_flags; + hlm_req->lpa--; + hlm_req->len++; + } + /* end */ + + /* free or unmap pages */ + if (hlm_req->kpg_flags != NULL && hlm_req->pptr_kpgs != NULL) { + for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { + if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE_DONE) { + bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); + } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE_DONE) { + } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { + bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); + } + } + } + + /* release other stuff */ + if (hlm_req->kpg_flags != NULL) + bdbm_free_atomic (hlm_req->kpg_flags); + if (hlm_req->pptr_kpgs != NULL) + bdbm_free_atomic (hlm_req->pptr_kpgs); + bdbm_free_atomic (hlm_req); +} + +#ifdef ENABLE_DISPLAY +static void __blkio_display_req ( + bdbm_drv_info_t* bdi, + bdbm_hlm_req_t* hlm_req) +{ + bdbm_ftl_inf_t* ftl = (bdbm_ftl_inf_t*)BDBM_GET_FTL_INF(bdi); + uint64_t seg_no = 0; + + if (ftl->get_segno) { + seg_no = ftl->get_segno (bdi, hlm_req->lpa); + } + + switch (hlm_req->req_type) { + case REQTYPE_TRIM: + bdbm_msg ("[%llu] TRIM\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); + break; + case REQTYPE_READ: + bdbm_msg ("[%llu] READ\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); + break; + case REQTYPE_WRITE: + bdbm_msg ("[%llu] WRITE\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); + break; + default: + bdbm_error ("invalid REQTYPE (%u)", hlm_req->req_type); + break; + } +} +#endif + +uint32_t blkio_open (bdbm_drv_info_t* bdi) +{ + uint32_t ret; + bdbm_blkio_private_t* p; + + /* create a private data structure */ + if ((p = (bdbm_blkio_private_t*)bdbm_malloc_atomic + (sizeof (bdbm_blkio_private_t))) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + return 1; + } + bdbm_sema_init (&p->host_lock); + atomic64_set (&p->nr_reqs, 0); + bdi->ptr_host_inf->ptr_private = (void*)p; + + /* register blueDBM */ + if ((ret = host_blkdev_register_device + (bdi, __host_blkio_make_request_fn)) != 0) { + bdbm_error ("failed to register blueDBM"); + bdbm_free_atomic (p); + return 1; + } + + return 0; +} + +void blkio_close (bdbm_drv_info_t* bdi) +{ + bdbm_blkio_private_t* p = NULL; + + p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); + + /* wait for host reqs to finish */ + bdbm_msg ("wait for host reqs to finish"); + while (1) { + if (atomic64_read (&p->nr_reqs) == 0) + break; + schedule (); /* sleep */ + } + + /* unregister a block device */ + host_blkdev_unregister_block_device (bdi); + + /* free private */ + bdbm_free_atomic (p); +} + +void blkio_make_req (bdbm_drv_info_t* bdi, void* req) +{ + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); + bdbm_hlm_req_t* hlm_req = NULL; + struct bio* bio = (struct bio*)req; + + /* lock a global mutex -- this function must be finished as soon as possible */ + bdbm_sema_lock (&p->host_lock); + + /* see if the address range of bio is beyond storage space */ + if (bio->bi_sector + bio_sectors (bio) > np->device_capacity_in_byte / KERNEL_SECTOR_SIZE) { + bdbm_sema_unlock (&p->host_lock); + bdbm_error ("bio is beyond storage space (%lu > %llu)", + bio->bi_sector + bio_sectors (bio), + np->device_capacity_in_byte / KERNEL_SECTOR_SIZE); + bio_io_error (bio); + return; + } + + /* create a hlm_req using a bio */ + if ((hlm_req = __blkio_create_hlm_req (bdi, bio)) == NULL) { + bdbm_sema_unlock (&p->host_lock); + bdbm_error ("the creation of hlm_req failed"); + bio_io_error (bio); + return; + } + +#ifdef ENABLE_DISPLAY + /* display req info */ + __blkio_display_req (bdi, hlm_req); +#endif + + /* if success, increase # of host reqs before sending the request to hlm */ + atomic64_inc (&p->nr_reqs); + + /* NOTE: it would be possible that 'hlm_req' becomes NULL + * if 'bdi->ptr_hlm_inf->make_req' is success. */ + if (bdi->ptr_hlm_inf->make_req (bdi, hlm_req) != 0) { + bdbm_error ("'bdi->ptr_hlm_inf->make_req' failed"); + + /* decreate # of reqs */ + atomic64_dec (&p->nr_reqs); + if (atomic64_read (&p->nr_reqs) < 0) { + bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); + } + + /* finish a bio */ + __blkio_delete_hlm_req (bdi, hlm_req); + bio_io_error (bio); + } + + bdbm_sema_unlock (&p->host_lock); +} + +void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hlm_req) +{ + uint32_t ret; + struct bio* bio = NULL; + bdbm_blkio_private_t* p = NULL; + + /* unlock hlm_req's lock if it is available */ + if (hlm_req->done) + bdbm_sema_unlock (hlm_req->done); + + /* get a bio from hlm_req */ + bio = (struct bio*)hlm_req->ptr_host_req; + p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); + ret = hlm_req->ret; + + /* destroy hlm_req */ + __blkio_delete_hlm_req (bdi, hlm_req); + + /* get the result and end a bio */ + if (bio != NULL) { + if (ret == 0) bio_endio (bio, 0); + else bio_io_error (bio); + } + + /* decreate # of reqs */ + atomic64_dec (&p->nr_reqs); + if (atomic64_read (&p->nr_reqs) < 0) { + bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); + } +} + +#endif diff --git a/frontend/kernel_nvme/kmain.c b/frontend/kernel_nvme/kmain.c index d86925a..5fd7e40 100644 --- a/frontend/kernel_nvme/kmain.c +++ b/frontend/kernel_nvme/kmain.c @@ -24,295 +24,16 @@ THE SOFTWARE. #include #include -#include -#include -#include -#include #include "bdbm_drv.h" #include "debug.h" #include "blkio.h" #include "devices.h" -#include "umemory.h" - -#include -#include - -#define BITS_PER_SLICE 6 -#define BITS_PER_WU 7 -#define BITS_PER_DIE 6 - -#define USE_ASYNC bdbm_drv_info_t* _bdi = NULL; -struct hd_req { - bdbm_drv_info_t* bdi; - bdbm_llm_req_t* r; - int rw; - uint64_t die; - uint64_t block; - uint64_t wu; - uint8_t* kp_ptr; - void (*intr_handler)(void*); -}; - -void print_bio (struct bio* bio) -{ - /* - bdbm_msg ("bio->bi_iter.bi_sector = %d", (int)bio->bi_iter.bi_sector); - bdbm_msg ("bio->bi_iter.bi_size = %d", (int)bio->bi_iter.bi_size); - bdbm_msg ("bio->bi_rw = %d", (int)bio->bi_rw); - bdbm_msg ("bio->bi_private = %p", bio->bi_private); - bdbm_msg ("bio->bi_end_io = %p", bio->bi_end_io); - */ -} - -static void nvme_nvm_end_io (struct request *rq, int error) -{ - struct hd_req* hdr = rq->end_io_data; - - if (hdr->rw == READ) { - bdbm_msg (" ==> %u %u %u %u", hdr->kp_ptr[0], hdr->kp_ptr[1], hdr->kp_ptr[2], hdr->kp_ptr[3]); - } - - if (rq->bio && rq->bio->bi_end_io) { - rq->bio->bi_end_io (rq->bio); - } - if (rq->cmd) - kfree (rq->cmd); - if (hdr) - kfree (hdr); - if (hdr->kp_ptr) - kfree (hdr->kp_ptr); - if (rq) - blk_mq_free_request(rq); -} - -struct request *nvme_alloc_request(struct request_queue *q, - struct nvme_command *cmd, unsigned int flags) -{ - bool write = cmd->common.opcode & 1; - struct request *req; - - req = blk_mq_alloc_request(q, write, flags); - if (IS_ERR(req)) - return req; - - req->cmd_type = REQ_TYPE_DRV_PRIV; - req->__data_len = 0; - req->__sector = (sector_t) -1; - req->bio = req->biotail = NULL; - - req->cmd = (unsigned char *)cmd; - req->cmd_len = sizeof(struct nvme_command); - req->special = (void *)0; - - return req; -} - -int simple_read ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - struct bio* bio = NULL; - struct request *rq; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | - hdr->wu << (BITS_PER_SLICE); - - bdbm_msg ("READ: %llu %llu %llu => %u (%x)", - hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); - - /* [STEP1] setup bio */ - /*bio = bio_map_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO);*/ - bio = bio_copy_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO, 1); - bio->bi_rw = READ; - print_bio (bio); - - /* [STEP2] alloc request */ - rq = blk_mq_alloc_request(bdi->q, 0, 0); - if (IS_ERR(rq)) { - bdbm_error ("blk_mq_alloc_request"); - bdbm_bug_on (1); - return -ENOMEM; - } - rq->cmd_type = REQ_TYPE_DRV_PRIV; - rq->ioprio = bio_prio(bio); - - if (bio_has_data(bio)) { - rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); - } - rq->__data_len = bio->bi_iter.bi_size; - rq->bio = rq->biotail = bio; - - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - - /* [STEP3] setup cmd */ - cmd->rw.opcode = 0x02; /* 0x02: READ, 0x01: WRITE */ - cmd->rw.flags = 0; - cmd->rw.nsid = 1; - cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd->rw.length = 63; /* it must be the unit of 255 */ - cmd->rw.control = 0; - cmd->rw.dsmgmt = 0; - cmd->rw.reftag = 0; - cmd->rw.apptag = 0; - cmd->rw.appmask = 0; - -#ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - bdbm_msg (" ==> %u %u %u %u", hdr->kp_ptr[0], hdr->kp_ptr[1], hdr->kp_ptr[2], hdr->kp_ptr[3]); - bio->bi_end_io (bio); - rq->end_io_data = hdr; - nvme_nvm_end_io (rq, 0); -#endif - - return 0; -} - -int simple_write ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - struct bio* bio = NULL; - struct request *rq; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - int req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE) | - hdr->wu << (BITS_PER_SLICE); - - hdr->kp_ptr[0] = hdr->block; - hdr->kp_ptr[1] = hdr->die; - hdr->kp_ptr[2] = hdr->wu; - bdbm_msg ("WRITE: %llu %llu %llu => %u (%x)", hdr->block, hdr->die, hdr->wu, req_ofs, req_ofs); - - /* setup bio */ - /*bio = bio_map_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO);*/ - bio = bio_copy_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO, 0); - bio->bi_rw = WRITE; - print_bio (bio); - - /* allocate request */ - rq = blk_mq_alloc_request (bdi->q, 1, 0); - if (IS_ERR(rq)) { - bdbm_error ("blk_mq_alloc_request"); - bdbm_bug_on (1); - return -ENOMEM; - } - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - rq->ioprio = bio_prio(bio); - if (bio_has_data(bio)) - rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); - rq->__data_len = bio->bi_iter.bi_size; - rq->bio = rq->biotail = bio; - - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - - /* setup cmd */ - cmd->rw.opcode = 0x01; /* 0x02: READ, 0x01: WRITE */ - cmd->rw.flags = 0; - cmd->rw.nsid = 1; - cmd->rw.slba = req_ofs; /* it must be the unit of 255 */ - cmd->rw.length = 63; /* it must be the unit of 255 */ - cmd->rw.control = 0; - cmd->rw.dsmgmt = 0; - cmd->rw.reftag = 0; - cmd->rw.apptag = 0; - cmd->rw.appmask = 0; - -#ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - bio->bi_end_io (bio); - rq->end_io_data = hdr; - nvme_nvm_end_io (rq, 0); -#endif - - return 0; -} - -int simple_erase ( - bdbm_drv_info_t* bdi, - struct hd_req* hdr) -{ - struct request *rq; - struct bio* bio = NULL; - struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - __u32 req_ofs = hdr->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | - hdr->die << (BITS_PER_WU + BITS_PER_SLICE); - __le64* ubuffer_64 = (__le64*)hdr->kp_ptr; - - bdbm_msg ("ERASE: %llu %llu => %u (%x)", hdr->block, hdr->die, req_ofs, req_ofs); - - ubuffer_64[1] = req_ofs; - - /* setup bio */ - /*bio = bio_map_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO);*/ - bio = bio_copy_kern (bdi->q, hdr->kp_ptr, 64*4096, GFP_NOIO, 0); - bio->bi_rw = WRITE; - print_bio (bio); - - /* alloc request */ - rq = blk_mq_alloc_request(bdi->q, 1, 0); - if (IS_ERR(rq)) { - bdbm_error ("blk_mq_alloc_request"); - bdbm_bug_on (1); - return -ENOMEM; - } - - rq->cmd_type = REQ_TYPE_DRV_PRIV; - rq->ioprio = bio_prio(bio); - if (bio_has_data(bio)) - rq->nr_phys_segments = bio_phys_segments(bdi->q, bio); - rq->__data_len = bio->bi_iter.bi_size; - rq->bio = rq->biotail = bio; - - rq->cmd = (unsigned char *)cmd; - rq->cmd_len = sizeof(struct nvme_command); - rq->special = (void *)0; - rq->end_io_data = hdr; - - /* setup cmd */ - cmd->common.opcode = 9; - cmd->common.flags = 0; - cmd->common.nsid = 1; - cmd->common.cdw2[0] = 0; - cmd->common.cdw2[1] = 0; - cmd->common.cdw10[0] = 0; - cmd->common.cdw10[1] = 4; - cmd->common.cdw10[2] = 0; - cmd->common.cdw10[3] = 0; - cmd->common.cdw10[4] = 0; - cmd->common.cdw10[5] = 0; - -#ifdef USE_ASYNC - blk_execute_rq_nowait (bdi->q, bdi->gd, rq, 0, nvme_nvm_end_io); -#else - blk_execute_rq (bdi->q, bdi->gd, rq, 0); - bio->bi_end_io (bio); - rq->end_io_data = hdr; - nvme_nvm_end_io (rq, 0); -#endif - - return 0; -} - -int bdbm_register (struct request_queue* q, char* disk_name) +static int __init bdbm_drv_init (void) { - bdbm_msg ("bdbm_register (%s)", disk_name); - /* create bdi with default parameters */ if ((_bdi = bdbm_drv_create ()) == NULL) { bdbm_error ("[kmain] bdbm_drv_create () failed"); @@ -331,38 +52,16 @@ int bdbm_register (struct request_queue* q, char* disk_name) return -ENXIO; } - /* for nvme */ - _bdi->q = q; - if (disk_name) - strcpy (_bdi->disk_name, disk_name); - else - strcpy (_bdi->disk_name, "blueDBM"); - /* end */ - /* run it */ if (bdbm_drv_run (_bdi) != 0) { bdbm_error ("[kmain] bdbm_drv_run () failed"); return -ENXIO; } -#if 0 - /* send simple read request */ - bdbm_msg ("begin - simple_read\n"); - { - int i = 0; - for (i = 0; i < 1000; i++) { - simple_read (_bdi); - } - } - bdbm_msg ("done - simple_read\n"); - /* end */ -#endif - return 0; } -EXPORT_SYMBOL(bdbm_register); -void bdbm_unregister (char* disk_name) +static void __exit bdbm_drv_exit(void) { /* stop running layers */ bdbm_drv_close (_bdi); @@ -372,143 +71,6 @@ void bdbm_unregister (char* disk_name) /* remove bdbm_drv */ bdbm_drv_destroy (_bdi); - - _bdi = NULL; - - bdbm_msg ("bdbm_register (%s)", disk_name); -} -EXPORT_SYMBOL(bdbm_unregister); - - -struct user_cmd { - int die; - int block; - int wu; -}; - -#define TEST_IOCTL_READ _IO('N', 0x01) -#define TEST_IOCTL_WRITE _IO('N', 0x02) -#define TEST_IOCTL_ERASE _IO('N', 0x03) - -#if 0 -static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) -{ - struct user_cmd c; - struct hd_req* hc = kzalloc (sizeof (struct hd_req), GFP_KERNEL); - - if (_bdi == NULL) - return 0; - - copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); - - hc->bdi = _bdi; - hc->r = NULL; - hc->die = c.die; - hc->block = c.block; - hc->wu = c.wu; - hc->kp_ptr = kzalloc (4096*64, GFP_KERNEL); - hc->intr_handler = NULL; - - switch (cmd) { - case TEST_IOCTL_READ: - hc->rw = READ; - simple_read (_bdi, hc); - break; - case TEST_IOCTL_WRITE: - hc->rw = WRITE; - simple_write (_bdi, hc); - break; - case TEST_IOCTL_ERASE: - hc->rw = 0xff; - simple_erase (_bdi, hc); - break; - default: - bdbm_msg ("default"); - break; - } - - return 0; -} -#endif - -static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) -{ - struct user_cmd c; - struct hd_req* hc = NULL; - int die = 0; - - if (_bdi == NULL) - return 0; - - copy_from_user (&c, (struct user_cmd __user*)arg, sizeof(struct user_cmd)); - - for (die = 0; die < 64; die++) { - struct hd_req* hc = kzalloc (sizeof (struct hd_req), GFP_KERNEL); - - hc->bdi = _bdi; - hc->r = NULL; - hc->die = die; - hc->block = c.block; - hc->wu = c.wu; - hc->kp_ptr = kzalloc (4096*64, GFP_KERNEL); - hc->intr_handler = NULL; - - switch (cmd) { - case TEST_IOCTL_READ: - hc->rw = READ; - simple_read (_bdi, hc); - break; - case TEST_IOCTL_WRITE: - hc->rw = WRITE; - simple_write (_bdi, hc); - break; - case TEST_IOCTL_ERASE: - hc->rw = 0xff; - simple_erase (_bdi, hc); - break; - default: - bdbm_msg ("default"); - break; - } - } - - return 0; -} - - -static const struct file_operations _ctl_fops = { - .open = nonseekable_open, - .unlocked_ioctl = nvm_ctl_ioctl, - .owner = THIS_MODULE, -}; - -static struct miscdevice _nvm_misc = { - .minor = MISC_DYNAMIC_MINOR, - .name = "kernel_nvme", - .nodename = "kernel_nvme/control", - .fops = &_ctl_fops, -}; - -MODULE_ALIAS_MISCDEV(MISC_DYNAMIC_MINOR); - -static int __init bdbm_drv_init (void) -{ - int ret; - - ret = misc_register(&_nvm_misc); - if (ret) - pr_err("nvm: misc_register failed for control device"); - - /*bdbm_register (NULL, NULL);*/ - - return 0; -} - -static void __exit bdbm_drv_exit(void) -{ - misc_deregister(&_nvm_misc); - - /*bdbm_unregister(NULL);*/ } MODULE_AUTHOR ("Sungjin Lee "); diff --git a/frontend/kernel_nvme/mount_ext4.sh b/frontend/kernel_nvme/mount_ext4.sh index 43cabc7..2aa2bc6 100755 --- a/frontend/kernel_nvme/mount_ext4.sh +++ b/frontend/kernel_nvme/mount_ext4.sh @@ -1,5 +1,14 @@ -#sudo mkfs -t ext4 -b 4096 /dev/nvme0n1 -#sudo mount \-t ext4 \-o discard /dev/nvme0n1 /media/blueDBM +sudo mkdir -p /usr/share/bdbm_drv +sudo touch /usr/share/bdbm_drv/ftl.dat +sudo touch /usr/share/bdbm_drv/dm.dat +sudo insmod risa_dev_ramdrive.ko +#sudo insmod risa_dev_ramdrive_timing.ko +#sudo insmod risa_dev_ramdrive_intr.ko +#sudo insmod risa_dev_bluedbm.ko +#sudo insmod bdbm_drv_page.ko +sudo insmod bdbm_drv.ko +sudo ./bdbm_format /dev/blueDBM sudo mkfs -t ext4 -b 4096 /dev/blueDBM sudo mount \-t ext4 \-o discard /dev/blueDBM /media/blueDBM +#sudo mount \-t ext4 /dev/blueDBM /media/blueDBM diff --git a/frontend/nvme/libftl b/frontend/nvme/libftl index a950e3b004a0117bc59c49a3e16ef7fae71aeddc..55deaf820af10c231e00c60d579d4a7e260775b4 100755 GIT binary patch literal 250264 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%0D% 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 JvhlU({{eH7bzuMi literal 256032 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
M<8ZOFnn@=Z7s$hfD!^7=KDhq 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
5n<9D-)6yS}Xda>=IrVua`$=*2kQ86wBe?x;_ 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 diff --git a/frontend/user/Makefile b/frontend/user/Makefile index 964dd7a..6d2cd54 100644 --- a/frontend/user/Makefile +++ b/frontend/user/Makefile @@ -23,8 +23,7 @@ CFLAGS += -D HASH_BLOOM=20 \ -D USE_PMU \ # -D USE_NEW_RMW \ -#DMLIB := ../../devices/libramdrive/libramdrive.a -DMLIB := ../../devices/libdummy/libdummy.a +DMLIB := ../../devices/libramdrive/libramdrive.a LIBFTL := libftl.a SRCS := \ diff --git a/frontend/user/userio.c b/frontend/user/userio.c index 6297145..f1b4ed1 100644 --- a/frontend/user/userio.c +++ b/frontend/user/userio.c @@ -202,11 +202,11 @@ void userio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req) bdbm_blkio_req_t* r = (bdbm_blkio_req_t*)req->blkio_req; /* remove blkio_req */ + /* { int i = 0; for (i = 0; i < r->bi_bvec_cnt; i++) { if (bdbm_is_read (r->bi_rw)) { - /* if (r->bi_bvec_ptr[i][0] != 0x0A || r->bi_bvec_ptr[i][1] != 0x0B || r->bi_bvec_ptr[i][2] != 0x0C) { @@ -216,12 +216,12 @@ void userio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req) r->bi_bvec_ptr[i][1], r->bi_bvec_ptr[i][2]); } - */ } bdbm_free (r->bi_bvec_ptr[i]); } bdbm_free (r); } + */ /* destroy hlm_req */ bdbm_hlm_reqs_pool_free_item (p->hlm_reqs_pool, req); diff --git a/ftl/hlm_nobuf.c b/ftl/hlm_nobuf.c index eaae86e..f4ac982 100644 --- a/ftl/hlm_nobuf.c +++ b/ftl/hlm_nobuf.c @@ -61,10 +61,8 @@ bdbm_hlm_inf_t _hlm_nobuf_inf = { /* data structures for hlm_nobuf */ typedef struct { bdbm_hlm_req_t tmp_hr; - bdbm_sema_t die_lock[64]; } bdbm_hlm_nobuf_private_t; -extern bdbm_drv_info_t* _bdi; /* functions for hlm_nobuf */ uint32_t hlm_nobuf_create (bdbm_drv_info_t* bdi) @@ -81,16 +79,6 @@ uint32_t hlm_nobuf_create (bdbm_drv_info_t* bdi) /* keep the private structure */ bdi->ptr_hlm_inf->ptr_private = (void*)p; - - { - int i = 0; - for (i = 0; i < 64; i++) { - bdbm_sema_init (&p->die_lock[i]); - } - } - - _bdi = bdi; - return 0; } @@ -114,19 +102,8 @@ uint32_t __hlm_nobuf_make_trim_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* ptr_hl return 0; } -uint32_t hynix_dumbssd_send_cmd ( - bdbm_drv_info_t* bdi, - bdbm_llm_req_t* r, - void (*intr_handler)(void*)); - -void intr_handler(void* arg) -{ - _bdi->ptr_hlm_inf->end_req (_bdi, arg); -} - uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) { - bdbm_hlm_nobuf_private_t* p = BDBM_HLM_PRIV(bdi); bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS(bdi); bdbm_ftl_inf_t* ftl = BDBM_GET_FTL_INF(bdi); bdbm_llm_req_t* lr = NULL; @@ -192,28 +169,13 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) } /* (3) send llm_req to llm */ -#if 1 if (bdi->ptr_llm_inf->make_reqs == NULL) { /* send individual llm-reqs to llm */ bdbm_hlm_for_each_llm_req (lr, hr, i) { -#if 0 if (bdi->ptr_llm_inf->make_req (bdi, lr) != 0) { bdbm_error ("oops! make_req () failed"); bdbm_bug_on (1); } -#else - /*bdbm_sema_lock (&lr->done);*/ - bdbm_sema_lock (&p->die_lock[lr->phyaddr.channel_no]); - bdbm_msg ("submit to %llu (%llu %llu %llu %llu)", - lr->phyaddr.channel_no, - lr->phyaddr.channel_no, - lr->phyaddr.chip_no, - lr->phyaddr.block_no, - lr->phyaddr.page_no); - hynix_dumbssd_send_cmd (bdi, lr, intr_handler); - /*bdbm_sema_lock (&lr->done);*/ - /*bdbm_sema_unlock (&lr->done);*/ -#endif } } else { /* send a bulk of llm-reqs to llm if make_reqs is supported */ @@ -222,26 +184,6 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) bdbm_bug_on (1); } } -#else - /* This is just for a test with Dumb NVME devices */ - /* send a bulk of llm-reqs to llm if make_reqs is supported */ - /* - if (bdi->ptr_llm_inf->make_reqs (bdi, hr) != 0) { - bdbm_error ("oops! make_reqs () failed"); - bdbm_bug_on (1); - } - */ - - if (bdi->ptr_llm_inf->make_reqs == NULL) { - /* send individual llm-reqs to llm */ - bdbm_hlm_for_each_llm_req (lr, hr, i) { - if (bdi->ptr_llm_inf->make_req (bdi, lr) != 0) { - bdbm_error ("oops! make_req () failed"); - bdbm_bug_on (1); - } - } - } -#endif bdbm_bug_on (hr->nr_llm_reqs != i); @@ -340,11 +282,8 @@ void __hlm_nobuf_end_blkio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) /* increase # of reqs finished */ atomic64_inc (&hr->nr_llm_reqs_done); - lr->req_type |= REQTYPE_DONE; - /*bdbm_msg (" -- %ld/%llu", atomic64_read (&hr->nr_llm_reqs_done), hr->nr_llm_reqs);*/ - if (atomic64_read (&hr->nr_llm_reqs_done) == hr->nr_llm_reqs) { /* finish the host request */ bdi->ptr_host_inf->end_req (bdi, hr); @@ -368,16 +307,7 @@ void hlm_nobuf_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) if (bdbm_is_gc (lr->req_type)) { __hlm_nobuf_end_gcio_req (bdi, lr); } else { - bdbm_hlm_nobuf_private_t* p = BDBM_HLM_PRIV(bdi); - /*bdbm_sema_unlock (&lr->done);*/ - bdbm_msg ("done - 1: %llu (%llu %llu %llu %llu)", - lr->phyaddr.channel_no, - lr->phyaddr.channel_no, - lr->phyaddr.chip_no, - lr->phyaddr.block_no, - lr->phyaddr.page_no); __hlm_nobuf_end_blkio_req (bdi, lr); - bdbm_sema_unlock (&p->die_lock[lr->phyaddr.channel_no]); } } diff --git a/ftl/hlm_reqs_pool.c b/ftl/hlm_reqs_pool.c index cd8e053..c601334 100644 --- a/ftl/hlm_reqs_pool.c +++ b/ftl/hlm_reqs_pool.c @@ -41,7 +41,7 @@ THE SOFTWARE. #include "umemory.h" -#define DEFAULT_POOL_SIZE 16 +#define DEFAULT_POOL_SIZE 128 #define DEFAULT_POOL_INC_SIZE DEFAULT_POOL_SIZE / 5 bdbm_hlm_reqs_pool_t* bdbm_hlm_reqs_pool_create ( @@ -160,7 +160,6 @@ bdbm_hlm_req_t* bdbm_hlm_reqs_pool_get_item ( struct list_head* pos = NULL; bdbm_hlm_req_t* item = NULL; - bdbm_msg ("bdbm_hlm_reqs_pool_get_item - start"); bdbm_spin_lock (&pool->lock); again: @@ -199,14 +198,11 @@ bdbm_hlm_req_t* bdbm_hlm_reqs_pool_get_item ( list_add_tail (&item->list, &pool->used_list); bdbm_spin_unlock (&pool->lock); - - bdbm_msg ("bdbm_hlm_reqs_pool_get_item - end"); return item; fail: bdbm_spin_unlock (&pool->lock); - bdbm_msg ("bdbm_hlm_reqs_pool_get_item - end (fail)"); return NULL; } @@ -271,7 +267,6 @@ void hlm_reqs_pool_allocate_llm_reqs ( fo->data = (uint8_t*)bdbm_malloc_phy (8*BDBM_MAX_PAGES); else fo->data = (uint8_t*)bdbm_malloc (8*BDBM_MAX_PAGES); - bdbm_sema_init (&llm_reqs[i].done); } } @@ -424,7 +419,6 @@ static int __hlm_reqs_pool_create_read_req ( ptr_lr = &hr->llm_reqs[0]; for (i = 0; i < nr_llm_reqs; i++) { - /*for (i = 0; i < br->bi_bvec_cnt; i++) {*/ offset = pg_start % NR_KPAGES_IN(pool->map_unit); if (pool->in_place_rmw == 0) @@ -448,11 +442,7 @@ static int __hlm_reqs_pool_create_read_req ( ptr_lr++; } - //bdbm_bug_on (bvec_cnt != br->bi_bvec_cnt); - if (bvec_cnt != br->bi_bvec_cnt) { - bdbm_msg ("bvec_cnt: %llu, br->bi_bvec_cnt: %llu", - bvec_cnt, br->bi_bvec_cnt); - } + bdbm_bug_on (bvec_cnt != br->bi_bvec_cnt); /* intialize hlm_req */ hr->req_type = br->bi_rw; diff --git a/ftl/llm_mq.c b/ftl/llm_mq.c index 9564036..5dd9fd8 100644 --- a/ftl/llm_mq.c +++ b/ftl/llm_mq.c @@ -134,10 +134,6 @@ int __llm_mq_thread (void* arg) bdbm_warning ("oops! make_req failed"); } - if (cnt % 50000 == 0) { - bdbm_msg ("llm_make_req: %llu, %llu - done", cnt, bdbm_prior_queue_get_nr_items (p->q)); - } - cnt++; } } @@ -248,7 +244,7 @@ uint32_t llm_mq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) pmu_update_sw (bdi, r); /* wait until there are enough free slots in Q */ - while (bdbm_prior_queue_get_nr_items (p->q) > 96) { + while (bdbm_prior_queue_get_nr_items (p->q) >= 96) { bdbm_thread_yield (); } diff --git a/ftl/llm_noq.c b/ftl/llm_noq.c index 69395c3..9646591 100644 --- a/ftl/llm_noq.c +++ b/ftl/llm_noq.c @@ -41,7 +41,6 @@ THE SOFTWARE. #include "llm_noq.h" #include "pmu.h" -/*#define ENABLE_SEQ_DBG*/ /* llm interface */ bdbm_llm_inf_t _llm_noq_inf = { @@ -49,17 +48,13 @@ bdbm_llm_inf_t _llm_noq_inf = { .create = llm_noq_create, .destroy = llm_noq_destroy, .make_req = llm_noq_make_req, - /*.make_reqs = llm_noq_make_reqs,*/ - .make_reqs = NULL, + .make_reqs = llm_noq_make_reqs, .flush = llm_noq_flush, .end_req = llm_noq_end_req, }; struct bdbm_llm_noq_private { uint32_t dummy; -#if defined(ENABLE_SEQ_DBG) - bdbm_sema_t dbg_seq; -#endif }; uint32_t llm_noq_create (bdbm_drv_info_t* bdi) @@ -80,10 +75,6 @@ uint32_t llm_noq_create (bdbm_drv_info_t* bdi) /* keep the private structures for llm_nt */ bdi->ptr_llm_inf->ptr_private = (void*)p; -#if defined(ENABLE_SEQ_DBG) - bdbm_sema_init (&p->dbg_seq); -#endif - return 0; } @@ -100,34 +91,25 @@ void llm_noq_destroy (bdbm_drv_info_t* bdi) bdbm_free (p); } -uint32_t llm_noq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) +uint32_t llm_noq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req) { uint32_t ret; static uint64_t cnt = 0; -#if defined(ENABLE_SEQ_DBG) - struct bdbm_llm_noq_private* p = BDBM_LLM_PRIV(bdi); - bdbm_sema_lock (&p->dbg_seq); -#endif - /* just for display */ if (cnt % 50000 == 0) bdbm_msg ("llm_noq_make_req: %llu", cnt); cnt++; /* update pmu */ - /*pmu_update_sw (bdi, r);*/ - /*pmu_update_q (bdi, r);*/ - - bdbm_msg ("llm_noq_make_req"); + pmu_update_sw (bdi, llm_req); + pmu_update_q (bdi, llm_req); /* send a request to a device manager */ - if ((ret = bdi->ptr_dm_inf->make_req (bdi, r)) != 0) { + if ((ret = bdi->ptr_dm_inf->make_req (bdi, llm_req)) != 0) { /* handle error cases */ bdbm_error ("llm_make_req failed"); } - bdbm_msg ("llm_noq_make_req - done"); - return ret; } @@ -149,18 +131,13 @@ void llm_noq_flush (bdbm_drv_info_t* bdi) //struct bdbm_llm_noq_private* p = (struct bdbm_llm_noq_private*)BDBM_LLM_PRIV(bdi); } -void llm_noq_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) +void llm_noq_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req) { /* update pmu */ - /*pmu_update_tot (bdi, r);*/ - /*pmu_inc (bdi, r);*/ - -#if defined(ENABLE_SEQ_DBG) - struct bdbm_llm_noq_private* p = BDBM_LLM_PRIV(bdi); - bdbm_sema_unlock (&p->dbg_seq); -#endif + pmu_update_tot (bdi, llm_req); + pmu_inc (bdi, llm_req); /* finish a request */ - bdi->ptr_hlm_inf->end_req (bdi, r); + bdi->ptr_hlm_inf->end_req (bdi, llm_req); } diff --git a/ftl/llm_noq_lock.c b/ftl/llm_noq_lock.c index b3c803c..ace07de 100644 --- a/ftl/llm_noq_lock.c +++ b/ftl/llm_noq_lock.c @@ -43,10 +43,7 @@ THE SOFTWARE. /* llm interface */ -#if 0 bdbm_llm_inf_t _llm_noq_lock_inf = { -#endif -bdbm_llm_inf_t _llm_noq_inf = { .ptr_private = NULL, .create = llm_noq_lock_create, .destroy = llm_noq_lock_destroy, diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 24d60e6..a1f586b 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -134,10 +134,9 @@ typedef struct { /* max kernel pages per physical flash page */ #define BDBM_MAX_PAGES 1 -/*#define BDBM_MAX_PAGES 32*/ /* a bluedbm blockio request */ -#define BDBM_BLKIO_MAX_VECS 128 +#define BDBM_BLKIO_MAX_VECS 512 typedef struct { uint64_t bi_rw; /* REQTYPE_WRITE or REQTYPE_READ */ @@ -184,7 +183,7 @@ typedef struct { uint8_t ret; /* old for GC */ void* ptr_hlm_req; void* ptr_qitem; - bdbm_sema_t done; /* maybe used by applications that require direct notifications from an interrupt handler */ + bdbm_sema_t* done; /* maybe used by applications that require direct notifications from an interrupt handler */ /* logical / physical info */ bdbm_logaddr_t logaddr; @@ -381,12 +380,6 @@ struct _bdbm_drv_info_t { bdbm_llm_inf_t* ptr_llm_inf; bdbm_ftl_inf_t* ptr_ftl_inf; bdbm_perf_monitor_t pm; - - /* for nvme */ - struct request_queue* q; - struct gendisk *gd; - char disk_name[256]; - /* end */ }; /* functions for bdi creation, setup, run, and remove */ diff --git a/run/bonnie++/run_bonnie++.sh b/run/bonnie++/run_bonnie++.sh index 0c68393..7c42751 100755 --- a/run/bonnie++/run_bonnie++.sh +++ b/run/bonnie++/run_bonnie++.sh @@ -3,10 +3,10 @@ # for 2 GB sudo mkdir /media/blueDBM/1 sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/1 & -#sudo mkdir /media/blueDBM/2 -#sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/2 & -#sudo mkdir /media/blueDBM/3 -#sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/3 & +sudo mkdir /media/blueDBM/2 +sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/2 & +sudo mkdir /media/blueDBM/3 +sudo bonnie++ -s 320:1024 -n 40 -x 1 -r 8 -z 1 -u root -d /media/blueDBM/3 & # for 16 GB #sudo mkdir /media/blueDBM/1 diff --git a/run/postmark/postmark-config-1.cfg b/run/postmark/postmark-config-1.cfg index 78f4829..c380319 100644 --- a/run/postmark/postmark-config-1.cfg +++ b/run/postmark/postmark-config-1.cfg @@ -1,5 +1,5 @@ set transactions 20000 -set number 1000 +set number 10000 set location /media/blueDBM/1 set buffering true set size 5120 524288 diff --git a/run/postmark/postmark-config-2.cfg b/run/postmark/postmark-config-2.cfg index 74091ce..e233b7f 100644 --- a/run/postmark/postmark-config-2.cfg +++ b/run/postmark/postmark-config-2.cfg @@ -1,5 +1,5 @@ set transactions 20000 -set number 1000 +set number 10000 set location /media/blueDBM/2 set buffering true set size 5120 524288 diff --git a/run/postmark/postmark-config-3.cfg b/run/postmark/postmark-config-3.cfg index a8f8980..3cdc9fe 100644 --- a/run/postmark/postmark-config-3.cfg +++ b/run/postmark/postmark-config-3.cfg @@ -1,5 +1,5 @@ set transactions 20000 -set number 1000 +set number 10000 set location /media/blueDBM/3 set buffering true set size 5120 524288 From 95414569c8d4e235a97e61f1ba271beedbb65f0e Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Thu, 28 Jul 2016 19:42:51 -0400 Subject: [PATCH 14/51] dumbssd supports async I/O and works stable --- devices/common/dev_params.c | 13 +++----- devices/dumbssd/dev_hynix_nvme.c | 51 ++++++++++++++++++------------ devices/dumbssd/dev_hynix_nvme.h | 4 +-- devices/dumbssd/dm_dumbssd.c | 8 ++--- frontend/kernel_nvme/Makefile | 3 +- frontend/kernel_nvme/blkdev.c | 3 +- frontend/kernel_nvme/mount_ext4.sh | 15 ++++----- frontend/kernel_nvme/umount.sh | 7 ++-- 8 files changed, 56 insertions(+), 48 deletions(-) diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index 87cd5bf..4a6c5a4 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -44,14 +44,11 @@ THE SOFTWARE. enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, - //NAND_PAGE_OOB_SIZE = 64, /* for bdbm hardware */ - NAND_PAGE_OOB_SIZE = 8*BDBM_MAX_PAGES, - NR_PAGES_PER_BLOCK = 128, - NR_BLOCKS_PER_CHIP = 192/BDBM_MAX_PAGES, - //NR_BLOCKS_PER_CHIP = 8/BDBM_MAX_PAGES, - NR_CHIPS_PER_CHANNEL = 4, - //NR_CHIPS_PER_CHANNEL = 8, - NR_CHANNELS = 8, + NAND_PAGE_OOB_SIZE = 0, + NR_PAGES_PER_BLOCK = 64, + NR_BLOCKS_PER_CHIP = 128, + NR_CHIPS_PER_CHANNEL = 1, + NR_CHANNELS = 64, NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ NAND_PAGE_PROG_TIME_US = 500, /* 1.3ms */ diff --git a/devices/dumbssd/dev_hynix_nvme.c b/devices/dumbssd/dev_hynix_nvme.c index a41239d..b57f668 100644 --- a/devices/dumbssd/dev_hynix_nvme.c +++ b/devices/dumbssd/dev_hynix_nvme.c @@ -43,17 +43,13 @@ THE SOFTWARE. #define USE_ASYNC -bdbm_sema_t dbg_seq; - -static void nvme_nvm_end_io (struct request *rq, int error) +static void submit_io_done (struct request *rq, int error) { hd_req_t* hc = rq->end_io_data; - void (*fn) (void*) = hc->intr_handler; + void (*done)(void*) = hc->done; - if (hc->rw == READ) { - bdbm_msg (" ==> %x %x %x ...", hc->buffer[0], hc->buffer[1], hc->buffer[2]); - /*memcpy (hc->kp_ptr, hc->buffer, 4096);*/ - } + if (hc->rw == READ && hc->kp_ptr) + memcpy (hc->kp_ptr, hc->buffer, 4096); if (rq->cmd) kfree (rq->cmd); @@ -61,8 +57,12 @@ static void nvme_nvm_end_io (struct request *rq, int error) kfree (hc->buffer); if (rq) blk_mq_free_request (rq); - if (fn) - fn (hc); + if (done && hc->req == NULL) /* for user I-O */ + done (hc); + if (done && hc->req) { /* for block I-O */ + done (hc->req); + kfree (hc); + } } int simple_read (dumb_ssd_dev_t* dev, hd_req_t* hc) @@ -106,11 +106,11 @@ int simple_read (dumb_ssd_dev_t* dev, hd_req_t* hc) } #ifdef USE_ASYNC - blk_execute_rq_nowait (dev->q, NULL, rq, 1, nvme_nvm_end_io); + blk_execute_rq_nowait (dev->q, NULL, rq, 0, submit_io_done); #else blk_execute_rq (dev->q, dev->gd, rq, 0); rq->end_io_data = hc; - nvme_nvm_end_io (rq, 0); + submit_io_done (rq, 0); #endif return 0; @@ -127,7 +127,8 @@ int simple_write (dumb_ssd_dev_t* dev, hd_req_t* hc) bdbm_bug_on (cmd == NULL); /* setup bio */ - /*memcpy (hc->buffer, hc->kp_ptr, 4096);*/ + if (hc->kp_ptr) + memcpy (hc->buffer, hc->kp_ptr, 4096); /* allocate request */ rq = blk_mq_alloc_request (dev->q, 1, 0); @@ -161,11 +162,11 @@ int simple_write (dumb_ssd_dev_t* dev, hd_req_t* hc) } #ifdef USE_ASYNC - blk_execute_rq_nowait (dev->q, NULL, rq, 1, nvme_nvm_end_io); + blk_execute_rq_nowait (dev->q, NULL, rq, 0, submit_io_done); #else blk_execute_rq (dev->q, dev->gd, rq, 0); rq->end_io_data = hc; - nvme_nvm_end_io (rq, 0); + submit_io_done (rq, 0); #endif return 0; @@ -209,23 +210,27 @@ int simple_erase (dumb_ssd_dev_t* dev, hd_req_t* hc) cmd->common.cdw10[4] = 0; cmd->common.cdw10[5] = 0; + /*if (blk_rq_map_kern (dev->q, rq, hc->buffer, 64*4096, GFP_KERNEL)) {*/ if (blk_rq_map_kern (dev->q, rq, hc->buffer, 64*4096, GFP_KERNEL)) { bdbm_msg ("blk_rq_map_kern() failed"); bdbm_bug_on (1); } #ifdef USE_ASYNC - blk_execute_rq_nowait (dev->q, NULL, rq, 1, nvme_nvm_end_io); + blk_execute_rq_nowait (dev->q, NULL, rq, 0, submit_io_done); #else blk_execute_rq (dev->q, dev->gd, rq, 0); rq->end_io_data = hc; - nvme_nvm_end_io (rq, 0); + submit_io_done (rq, 0); #endif return 0; } -uint32_t dev_hynix_nvme_submit_io (dumb_ssd_dev_t* dev, bdbm_llm_req_t* r, void (*done)(void*)) +uint32_t dev_hynix_nvme_submit_io ( + dumb_ssd_dev_t* dev, + bdbm_llm_req_t* r, + void (*done)(void*)) { uint32_t ret = -1; hd_req_t* hc = kzalloc (sizeof (hd_req_t), GFP_KERNEL); @@ -233,18 +238,22 @@ uint32_t dev_hynix_nvme_submit_io (dumb_ssd_dev_t* dev, bdbm_llm_req_t* r, void bdbm_bug_on (hc == NULL); hc->dev = dev; - hc->r = r; + hc->req = r; hc->die = r->phyaddr.channel_no; hc->block = r->phyaddr.block_no; hc->wu = r->phyaddr.page_no; - hc->intr_handler = done; + hc->done = done; hc->buffer = kmalloc (4096*64, GFP_KERNEL); - /*hc->kp_ptr = r->fmain.kp_ptr[0];*/ + if (r) + hc->kp_ptr = r->fmain.kp_ptr[0]; + else + hc->kp_ptr = NULL; bdbm_bug_on (hc->buffer == NULL); switch (r->req_type) { case REQTYPE_READ_DUMMY: + kfree (hc->buffer); kfree (hc); done (r); break; diff --git a/devices/dumbssd/dev_hynix_nvme.h b/devices/dumbssd/dev_hynix_nvme.h index f7c68e6..08df784 100644 --- a/devices/dumbssd/dev_hynix_nvme.h +++ b/devices/dumbssd/dev_hynix_nvme.h @@ -35,14 +35,14 @@ typedef struct { typedef struct { dumb_ssd_dev_t* dev; - bdbm_llm_req_t* r; + bdbm_llm_req_t* req; int rw; uint64_t die; uint64_t block; uint64_t wu; uint8_t* kp_ptr; uint8_t* buffer; - void (*intr_handler)(void*); + void (*done)(void*); } hd_req_t; uint32_t dev_hynix_nvme_submit_io (dumb_ssd_dev_t* dev, bdbm_llm_req_t* r, void (*intr_handler)(void*)); diff --git a/devices/dumbssd/dm_dumbssd.c b/devices/dumbssd/dm_dumbssd.c index 9bb69f6..56a6bb4 100644 --- a/devices/dumbssd/dm_dumbssd.c +++ b/devices/dumbssd/dm_dumbssd.c @@ -80,7 +80,6 @@ static void io_done (void* arg) { bdbm_llm_req_t* r = (bdbm_llm_req_t*)arg; bdbm_drv_info_t* bdi = _bdi_dm; - bdi->ptr_dm_inf->end_req (bdi, r); } @@ -137,9 +136,8 @@ uint32_t dm_dumbssd_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) { uint32_t ret; - dm_dumbssd_private_t* p = BDBM_DM_PRIV (bdi); - #if defined(ENABLE_SEQ_DBG) + dm_dumbssd_private_t* p = BDBM_DM_PRIV (bdi); bdbm_sema_lock (&p->dbg_seq); #endif @@ -221,13 +219,13 @@ static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) bdbm_bug_on (_dumb_dev.gd == NULL); hc->dev = &_dumb_dev; - hc->r = NULL; + hc->req = NULL; hc->die = c.die; hc->block = c.block; hc->wu = c.wu; hc->buffer = kzalloc (4096*64, GFP_KERNEL); hc->kp_ptr = NULL; - hc->intr_handler = ioctl_io_done; + hc->done = ioctl_io_done; switch (cmd) { case TEST_IOCTL_READ: diff --git a/frontend/kernel_nvme/Makefile b/frontend/kernel_nvme/Makefile index ef9bde8..65d36bd 100644 --- a/frontend/kernel_nvme/Makefile +++ b/frontend/kernel_nvme/Makefile @@ -6,7 +6,8 @@ INCLUDE := ../../include COMMON := ../../common DM_COMMON := ../../devices/common -KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers +KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/dumbssd/Module.symvers +#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/bluedbm/Module.symvers diff --git a/frontend/kernel_nvme/blkdev.c b/frontend/kernel_nvme/blkdev.c index 21c44f0..89e1021 100644 --- a/frontend/kernel_nvme/blkdev.c +++ b/frontend/kernel_nvme/blkdev.c @@ -230,6 +230,7 @@ uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) //capacity = bdi->parm_dev.device_capacity_in_byte * 0.9; capacity = bdi->parm_dev.device_capacity_in_byte; capacity = (capacity / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + capacity = capacity - capacity / 10; set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); } add_disk (bdbm_device.gd); @@ -241,8 +242,8 @@ void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) { /* unregister a BlueDBM device driver */ del_gendisk (bdbm_device.gd); + blk_cleanup_queue (bdbm_device.gd->queue); put_disk (bdbm_device.gd); unregister_blkdev (bdbm_device_major_num, "blueDBM"); - blk_cleanup_queue (bdbm_device.queue); } diff --git a/frontend/kernel_nvme/mount_ext4.sh b/frontend/kernel_nvme/mount_ext4.sh index 2aa2bc6..cfdb135 100755 --- a/frontend/kernel_nvme/mount_ext4.sh +++ b/frontend/kernel_nvme/mount_ext4.sh @@ -2,13 +2,12 @@ sudo mkdir -p /usr/share/bdbm_drv sudo touch /usr/share/bdbm_drv/ftl.dat sudo touch /usr/share/bdbm_drv/dm.dat -sudo insmod risa_dev_ramdrive.ko -#sudo insmod risa_dev_ramdrive_timing.ko -#sudo insmod risa_dev_ramdrive_intr.ko -#sudo insmod risa_dev_bluedbm.ko -#sudo insmod bdbm_drv_page.ko +sudo rmmod nvme +sudo insmod dumbssd.ko +sleep 1 +sudo insmod nvme.ko +sleep 1 sudo insmod bdbm_drv.ko -sudo ./bdbm_format /dev/blueDBM +sleep 1 sudo mkfs -t ext4 -b 4096 /dev/blueDBM -sudo mount \-t ext4 \-o discard /dev/blueDBM /media/blueDBM -#sudo mount \-t ext4 /dev/blueDBM /media/blueDBM +sudo mount -t ext4 -o discard /dev/blueDBM /media/blueDBM diff --git a/frontend/kernel_nvme/umount.sh b/frontend/kernel_nvme/umount.sh index 14f0fc4..2fa14e8 100755 --- a/frontend/kernel_nvme/umount.sh +++ b/frontend/kernel_nvme/umount.sh @@ -1,4 +1,7 @@ sudo umount /media/blueDBM +sleep 1 sudo rmmod bdbm_drv -sudo rmmod risa_dev_* -sudo rmmod f2fs +sleep 5 +sudo rmmod nvme +sleep 1 +sudo rmmod dumbssd From 865c4f26017dbcdfc73ede5ae8bab24e30a9bb7e Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Thu, 28 Jul 2016 20:19:44 -0400 Subject: [PATCH 15/51] changed some files and directories --- examples/{test => dumbssd-test}/Makefile | 8 +- examples/dumbssd-test/dumbssd-test | Bin 0 -> 12320 bytes .../test.c => dumbssd-test/dumbssd-test.c} | 0 examples/test/test | Bin 12288 -> 0 bytes frontend/{nvme => df-user}/Makefile | 0 frontend/{nvme => df-user}/dev_proxy.c | 0 frontend/{nvme => df-user}/dev_proxy.h | 0 frontend/{nvme => df-user}/df_umemory.c | 0 frontend/{nvme => df-user}/libftl | Bin frontend/{nvme => df-user}/main.c | 0 frontend/{nvme => df-user}/userio.c | 0 frontend/{nvme => df-user}/userio.h | 0 frontend/kernel/Makefile | 3 +- frontend/kernel/blkdev.c | 7 +- frontend/kernel/blkio.c | 22 +- frontend/kernel/mount_ext4.sh | 14 +- frontend/kernel/umount.sh | 7 +- frontend/kernel_nvme/Makefile | 115 - frontend/kernel_nvme/blkdev.c | 249 -- frontend/kernel_nvme/blkdev.h | 31 - frontend/kernel_nvme/blkdev_ioctl.h | 48 - frontend/kernel_nvme/blkio.c | 694 ----- frontend/kernel_nvme/blkio.h | 36 - frontend/kernel_nvme/kmain.c | 81 - frontend/kernel_nvme/mount_ext4.sh | 13 - frontend/kernel_nvme/umount.sh | 7 - tools/{ => format}/Makefile | 0 tools/{ => format}/bdbm_format | Bin tools/{ => format}/bdbm_format.c | 0 tools/lightnvm | 1 + tools/lightnvm-v4.5.3/Makefile | 33 + tools/lightnvm-v4.5.3/core.c | 1187 ++++++++ tools/lightnvm-v4.5.3/gennvm.c | 484 ++++ tools/lightnvm-v4.5.3/gennvm.h | 48 + tools/lightnvm-v4.5.3/rrpc.c | 1425 +++++++++ tools/lightnvm-v4.5.3/rrpc.h | 251 ++ tools/lightnvm-v4.5.3/sysblk.c | 741 +++++ tools/nvme | 1 + tools/nvmedrv-v4.5.3/Kconfig | 22 + tools/nvmedrv-v4.5.3/Makefile | 36 + tools/nvmedrv-v4.5.3/core.c | 1593 ++++++++++ tools/nvmedrv-v4.5.3/lightnvm.c | 619 ++++ tools/nvmedrv-v4.5.3/nvme.h | 308 ++ tools/nvmedrv-v4.5.3/pci.c | 2295 +++++++++++++++ tools/nvmedrv-v4.5.3/scsi.c | 2574 +++++++++++++++++ 45 files changed, 11652 insertions(+), 1301 deletions(-) rename examples/{test => dumbssd-test}/Makefile (69%) create mode 100755 examples/dumbssd-test/dumbssd-test rename examples/{test/test.c => dumbssd-test/dumbssd-test.c} (100%) delete mode 100755 examples/test/test rename frontend/{nvme => df-user}/Makefile (100%) rename frontend/{nvme => df-user}/dev_proxy.c (100%) rename frontend/{nvme => df-user}/dev_proxy.h (100%) rename frontend/{nvme => df-user}/df_umemory.c (100%) rename frontend/{nvme => df-user}/libftl (100%) rename frontend/{nvme => df-user}/main.c (100%) rename frontend/{nvme => df-user}/userio.c (100%) rename frontend/{nvme => df-user}/userio.h (100%) delete mode 100644 frontend/kernel_nvme/Makefile delete mode 100644 frontend/kernel_nvme/blkdev.c delete mode 100644 frontend/kernel_nvme/blkdev.h delete mode 100644 frontend/kernel_nvme/blkdev_ioctl.h delete mode 100644 frontend/kernel_nvme/blkio.c delete mode 100644 frontend/kernel_nvme/blkio.h delete mode 100644 frontend/kernel_nvme/kmain.c delete mode 100755 frontend/kernel_nvme/mount_ext4.sh delete mode 100755 frontend/kernel_nvme/umount.sh rename tools/{ => format}/Makefile (100%) rename tools/{ => format}/bdbm_format (100%) rename tools/{ => format}/bdbm_format.c (100%) create mode 120000 tools/lightnvm create mode 100644 tools/lightnvm-v4.5.3/Makefile create mode 100644 tools/lightnvm-v4.5.3/core.c create mode 100644 tools/lightnvm-v4.5.3/gennvm.c create mode 100644 tools/lightnvm-v4.5.3/gennvm.h create mode 100644 tools/lightnvm-v4.5.3/rrpc.c create mode 100644 tools/lightnvm-v4.5.3/rrpc.h create mode 100644 tools/lightnvm-v4.5.3/sysblk.c create mode 120000 tools/nvme create mode 100644 tools/nvmedrv-v4.5.3/Kconfig create mode 100644 tools/nvmedrv-v4.5.3/Makefile create mode 100644 tools/nvmedrv-v4.5.3/core.c create mode 100644 tools/nvmedrv-v4.5.3/lightnvm.c create mode 100644 tools/nvmedrv-v4.5.3/nvme.h create mode 100644 tools/nvmedrv-v4.5.3/pci.c create mode 100644 tools/nvmedrv-v4.5.3/scsi.c diff --git a/examples/test/Makefile b/examples/dumbssd-test/Makefile similarity index 69% rename from examples/test/Makefile rename to examples/dumbssd-test/Makefile index 1fe430b..5bf2e1b 100644 --- a/examples/test/Makefile +++ b/examples/dumbssd-test/Makefile @@ -2,15 +2,15 @@ CFLAGS=-g -Wall CC=gcc LIBS=-lm -lpthread INCLUDES= -OBJS_FORMAT=test.o -SRCS_FORMAT=test.c +OBJS_FORMAT=dumbssd-test.o +SRCS_FORMAT=dumbssd-test.c #The variable $@ has the value of the target. In this case $@ = psort -test: ${OBJS_FORMAT} +dumbssd-test: ${OBJS_FORMAT} ${CC} ${CFLAGS} ${INCLUDES} -o $@ ${OBJS_FORMAT} ${LIBS} .c.o: ${CC} ${CFLAGS} ${INCLUDES} -c $< clean: - rm *.o test + rm *.o dumbssd-test diff --git a/examples/dumbssd-test/dumbssd-test b/examples/dumbssd-test/dumbssd-test new file mode 100755 index 0000000000000000000000000000000000000000..fb168fa526aab138b6423415d80bbe5c550d3ef0 GIT binary patch literal 12320 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.device_capacity_in_byte * 0.9; - /*capacity = bdi->parm_dev.device_capacity_in_byte;*/ - // capacity = (capacity / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + capacity = bdi->parm_dev.device_capacity_in_byte; + capacity = (capacity / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + capacity = capacity - capacity / 10; set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); } add_disk (bdbm_device.gd); @@ -241,8 +242,8 @@ void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) { /* unregister a BlueDBM device driver */ del_gendisk (bdbm_device.gd); + blk_cleanup_queue (bdbm_device.gd->queue); put_disk (bdbm_device.gd); unregister_blkdev (bdbm_device_major_num, "blueDBM"); - blk_cleanup_queue (bdbm_device.queue); } diff --git a/frontend/kernel/blkio.c b/frontend/kernel/blkio.c index a74903c..a604b10 100644 --- a/frontend/kernel/blkio.c +++ b/frontend/kernel/blkio.c @@ -60,8 +60,8 @@ typedef struct { /* This is a call-back function invoked by a block-device layer */ static bdbm_blkio_req_t* __get_blkio_req (struct bio *bio) { - uint32_t loop = 0; - struct bio_vec *bvec = NULL; + struct bio_vec bvec; + struct bvec_iter iter; bdbm_blkio_req_t* br = (bdbm_blkio_req_t*)bdbm_malloc_atomic (sizeof (bdbm_blkio_req_t)); /* check the pointer */ @@ -81,21 +81,21 @@ static bdbm_blkio_req_t* __get_blkio_req (struct bio *bio) } /* get the offset and the length of the bio */ - br->bi_offset = bio->bi_sector; + br->bi_offset = bio->bi_iter.bi_sector; br->bi_size = bio_sectors (bio); br->bi_bvec_cnt = 0; br->bio = (void*)bio; /* get the data from the bio */ if (br->bi_rw != REQTYPE_TRIM) { - bio_for_each_segment (bvec, bio, loop) { - br->bi_bvec_ptr[br->bi_bvec_cnt] = (uint8_t*)page_address (bvec->bv_page); + bio_for_each_segment (bvec, bio, iter) { + br->bi_bvec_ptr[br->bi_bvec_cnt] = (uint8_t*)page_address (bvec.bv_page); br->bi_bvec_cnt++; if (br->bi_bvec_cnt >= BDBM_BLKIO_MAX_VECS) { /* NOTE: this is an impossible case unless kernel parameters are changed */ - bdbm_error ("oops! # of vectors in bio is larger than %u", - BDBM_BLKIO_MAX_VECS); + bdbm_error ("oops! # of vectors in bio is larger than %u %llu", + BDBM_BLKIO_MAX_VECS, br->bi_bvec_cnt); goto fail; } } @@ -115,11 +115,13 @@ static void __free_blkio_req (bdbm_blkio_req_t* br) bdbm_free_atomic (br); } -static void __host_blkio_make_request_fn ( +//static void __host_blkio_make_request_fn ( +static blk_qc_t __host_blkio_make_request_fn ( struct request_queue *q, struct bio *bio) { blkio_make_req (_bdi, (void*)bio); + return BLK_QC_T_NONE; /* for no polling */ } @@ -243,10 +245,10 @@ void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) /* end bio */ if (hr->ret == 0) - bio_endio ((struct bio*)br->bio, 0); + bio_endio ((struct bio*)br->bio); else { bdbm_warning ("oops! make_req () failed with %d", hr->ret); - bio_endio ((struct bio*)br->bio, -EIO); + bio_io_error ((struct bio*)br->bio); } /* free blkio_req */ diff --git a/frontend/kernel/mount_ext4.sh b/frontend/kernel/mount_ext4.sh index 6baa615..cfdb135 100755 --- a/frontend/kernel/mount_ext4.sh +++ b/frontend/kernel/mount_ext4.sh @@ -2,12 +2,12 @@ sudo mkdir -p /usr/share/bdbm_drv sudo touch /usr/share/bdbm_drv/ftl.dat sudo touch /usr/share/bdbm_drv/dm.dat -#sudo insmod risa_dev_ramdrive_timing.ko -#sudo insmod risa_dev_ramdrive_intr.ko -sudo insmod risa_dev_bluedbm.ko -#sudo insmod bdbm_drv_page.ko +sudo rmmod nvme +sudo insmod dumbssd.ko +sleep 1 +sudo insmod nvme.ko +sleep 1 sudo insmod bdbm_drv.ko -sudo ./bdbm_format /dev/blueDBM +sleep 1 sudo mkfs -t ext4 -b 4096 /dev/blueDBM -sudo mount \-t ext4 \-o discard /dev/blueDBM /media/blueDBM -#sudo mount \-t ext4 /dev/blueDBM /media/blueDBM +sudo mount -t ext4 -o discard /dev/blueDBM /media/blueDBM diff --git a/frontend/kernel/umount.sh b/frontend/kernel/umount.sh index 14f0fc4..2fa14e8 100755 --- a/frontend/kernel/umount.sh +++ b/frontend/kernel/umount.sh @@ -1,4 +1,7 @@ sudo umount /media/blueDBM +sleep 1 sudo rmmod bdbm_drv -sudo rmmod risa_dev_* -sudo rmmod f2fs +sleep 5 +sudo rmmod nvme +sleep 1 +sudo rmmod dumbssd diff --git a/frontend/kernel_nvme/Makefile b/frontend/kernel_nvme/Makefile deleted file mode 100644 index 65d36bd..0000000 --- a/frontend/kernel_nvme/Makefile +++ /dev/null @@ -1,115 +0,0 @@ -# Makefile for a RISA Device Driver -# - -FTL := ../../ftl -INCLUDE := ../../include -COMMON := ../../common -DM_COMMON := ../../devices/common - -KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/dumbssd/Module.symvers -#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers -#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers -#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/bluedbm/Module.symvers - -EXTRA_CFLAGS := \ - -I$(PWD)/$(INCLUDE) \ - -I$(PWD)/$(COMMON)/utils \ - -I$(PWD)/$(COMMON)/3rd \ - -I$(PWD)/$(FTL) \ - -I$(PWD)/$(DM_COMMON) \ - -EXTRA_CFLAGS += -D HASH_BLOOM=20 # for HASH (8KB) -EXTRA_CFLAGS += -D CONFIG_ENABLE_MSG -EXTRA_CFLAGS += -D CONFIG_ENABLE_DEBUG -EXTRA_CFLAGS += -D USE_PMU -EXTRA_CFLAGS += -D KERNEL_MODE -EXTRA_CFLAGS += -D USE_NEW_RMW - -#EXTRA_CFLAGS += -D USE_KTIMER -#EXTRA_CFLAGS += -D EMULATE_BAD_BLOCKS -#EXTRA_CFLAGS += -D USE_COMPLETION - -#bdbm_drv-y := \ - kmain.o \ - blkdev.o \ - blkio.o \ - $(FTL)/ftl_params.o \ - $(FTL)/pmu.o \ - $(FTL)/hlm_nobuf.o \ - $(FTL)/hlm_buf.o \ - $(FTL)/hlm_dftl.o \ - $(FTL)/hlm_rsd.o \ - $(FTL)/llm_noq.o \ - $(FTL)/llm_mq.o \ - $(FTL)/algo/abm.o \ - $(FTL)/algo/no_ftl.o \ - $(FTL)/algo/block_ftl.o \ - $(FTL)/algo/page_ftl.o \ - $(FTL)/algo/dftl.o \ - $(FTL)/algo/dftl_map.o \ - $(FTL)/queue/queue.o \ - $(FTL)/queue/prior_queue.o \ - $(FTL)/queue/rd_prior_queue.o \ - $(DM_COMMON)/dev_params.o \ - $(COMMON)/utils/utime.o \ - $(COMMON)/utils/ufile.o \ - $(COMMON)/utils/uthread.o \ - $(COMMON)/bdbm_main.o \ - -bdbm_drv-y := \ - kmain.o \ - blkdev.o \ - blkio.o \ - $(FTL)/ftl_params.o \ - $(FTL)/pmu.o \ - $(FTL)/hlm_nobuf.o \ - $(FTL)/llm_mq.o \ - $(FTL)/algo/abm.o \ - $(FTL)/algo/page_ftl.o \ - $(FTL)/algo/block_ftl.o \ - $(FTL)/queue/queue.o \ - $(FTL)/queue/prior_queue.o \ - $(FTL)/queue/rd_prior_queue.o \ - $(FTL)/hlm_reqs_pool.o \ - $(DM_COMMON)/dev_params.o \ - $(COMMON)/utils/utime.o \ - $(COMMON)/utils/ufile.o \ - $(COMMON)/utils/uthread.o \ - $(COMMON)/utils/umemory.o \ - $(COMMON)/bdbm_main.o \ - - -obj-m := bdbm_drv.o - -ccflags-y := -I$(src) - -export KROOT=/lib/modules/$(shell uname -r)/build - -.PHONY: default -default: modules - -.PHONY: modules -modules: - @$(MAKE) -C $(KROOT) M=$(PWD) modules - -.PHONY: modules_check -modules_check: - @$(MAKE) -C $(KROOT) C=2 M=$(PWD) modules - -.PHONY: modules_install -modules_install: - @$(MAKE) -C $(KROOT) M=$(PWD) modules_install - -.PHONY: kernel_clean -kernel_clean: - @$(MAKE) -C $(KROOT) M=$(PWD) clean - -.PHONY: clean -clean: kernel_clean - @rm -rf Module.markers modules.order - @cd ../../ftl; rm -rf *.o .*.cmd; rm -rf */*.o */.*.cmd; cd -; - @cd $(FTL); rm *.o; cd -; - @cd $(COMMON)/utils; rm *.o; cd -; - @cd $(COMMON)/3rd; rm *.o; cd -; - @cd $(DM_COMMON); rm *.o; cd -; - diff --git a/frontend/kernel_nvme/blkdev.c b/frontend/kernel_nvme/blkdev.c deleted file mode 100644 index 89e1021..0000000 --- a/frontend/kernel_nvme/blkdev.c +++ /dev/null @@ -1,249 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#include -#include /* bio */ -#include -#include -#include /* mdelay */ - -#include "bdbm_drv.h" -#include "debug.h" -#include "blkdev.h" -#include "blkdev_ioctl.h" -#include "umemory.h" - - -int bdbm_blk_ioctl (struct block_device *bdev, fmode_t mode, unsigned cmd, unsigned long arg); -int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo); - -static struct bdbm_device_t { - struct gendisk *gd; - struct request_queue *queue; -} bdbm_device; - -static uint32_t bdbm_device_major_num = 0; -static struct block_device_operations bdops = { - .owner = THIS_MODULE, - .ioctl = bdbm_blk_ioctl, - .getgeo = bdbm_blk_getgeo, -}; - -extern bdbm_drv_info_t* _bdi; - -DECLARE_COMPLETION (task_completion); -static struct task_struct *task = NULL; - - -int badblock_scan_thread_fn (void* arg) -{ - bdbm_ftl_inf_t* ftl = NULL; - uint32_t ret; - - /* get the ftl */ - if ((ftl = _bdi->ptr_ftl_inf) == NULL) { - bdbm_warning ("ftl is not created"); - goto exit; - } - - /* run the bad-block scan */ - if ((ret = ftl->scan_badblocks (_bdi))) { - bdbm_msg ("scan_badblocks failed (%u)", ret); - } - -exit: - complete (&task_completion); - return 0; -} - -int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo) -{ - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (_bdi); - int nr_sectors = np->device_capacity_in_byte >> 9; - - /* NOTE: Heads * Cylinders * Sectors = # of sectors (512B) in SSDs */ - geo->heads = 16; - geo->cylinders = 1024; - geo->sectors = nr_sectors / (geo->heads * geo->cylinders); - if (geo->heads * geo->cylinders * geo->sectors != nr_sectors) { - bdbm_warning ("bdbm_blk_getgeo: heads=%d, cylinders=%d, sectors=%d (total sectors=%d)", - geo->heads, - geo->cylinders, - geo->sectors, - nr_sectors); - return 1; - } - return 0; -} - -int bdbm_blk_ioctl ( - struct block_device *bdev, - fmode_t mode, - unsigned cmd, - unsigned long arg) -{ - struct hd_geometry geo; - struct gendisk *disk = bdev->bd_disk; - int ret; - - switch (cmd) { - case HDIO_GETGEO: - case HDIO_GETGEO_BIG: - case HDIO_GETGEO_BIG_RAW: - if (!arg) { - bdbm_warning ("invalid argument"); - return -EINVAL; - } - if (!disk->fops->getgeo) { - bdbm_warning ("disk->fops->getgeo is NULL"); - return -ENOTTY; - } - - bdbm_memset(&geo, 0, sizeof(geo)); - geo.start = get_start_sect(bdev); - ret = disk->fops->getgeo(bdev, &geo); - if (ret) { - bdbm_warning ("disk->fops->getgeo returns (%d)", ret); - return ret; - } - if (copy_to_user((struct hd_geometry __user *)arg, &geo, sizeof(geo))) { - bdbm_warning ("copy_to_user failed"); - return -EFAULT; - } - break; - - case BDBM_BADBLOCK_SCAN: - bdbm_msg ("Get a BDBM_BADBLOCK_SCAN command: %u (%X)", cmd, cmd); - - if (task != NULL) { - bdbm_msg ("badblock_scan_thread is running"); - } else { - /* create thread */ - if ((task = kthread_create (badblock_scan_thread_fn, NULL, "badblock_scan_thread")) == NULL) { - bdbm_msg ("badblock_scan_thread failed to create"); - } else { - wake_up_process (task); - } - } - break; - - case BDBM_BADBLOCK_SCAN_CHECK: - /* check the status of the thread */ - if (task == NULL) { - bdbm_msg ("badblock_scan_thread is not created..."); - ret = 1; /* done */ - copy_to_user ((int*)arg, &ret, sizeof (int)); - break; - } - - /* is it still running? */ - if (!bdbm_try_wait_for_completion (task_completion)) { - ret = 0; /* still running */ - copy_to_user ((int*)arg, &ret, sizeof (int)); - break; - } - ret = 1; /* done */ - - /* reinit some variables */ - task = NULL; - copy_to_user ((int*)arg, &ret, sizeof (int)); - bdbm_reinit_completion (task_completion); - break; - -#if 0 - case BDBM_GET_PHYADDR: - break; -#endif - - default: - /*bdbm_msg ("unknown bdm_blk_ioctl: %u (%X)", cmd, cmd);*/ - break; - } - - return 0; -} - -uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) -{ - /* create a blk queue */ - if (!(bdbm_device.queue = blk_alloc_queue (GFP_KERNEL))) { - bdbm_error ("blk_alloc_queue failed"); - return -ENOMEM; - } - blk_queue_make_request (bdbm_device.queue, fn); - blk_queue_logical_block_size (bdbm_device.queue, bdi->parm_ftl.kernel_sector_size); - blk_queue_io_min (bdbm_device.queue, bdi->parm_dev.page_main_size); - blk_queue_io_opt (bdbm_device.queue, bdi->parm_dev.page_main_size); - /*blk_limits_max_hw_sectors (&bdbm_device.queue->limits, 16);*/ - - /* see if a TRIM command is used or not */ - if (bdi->parm_ftl.trim == TRIM_ENABLE) { - bdbm_device.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; - bdbm_device.queue->limits.max_discard_sectors = UINT_MAX; - /*bdbm_device.queue->limits.discard_zeroes_data = 1;*/ - queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, bdbm_device.queue); - bdbm_msg ("TRIM is enabled"); - } else { - bdbm_msg ("TRIM is disabled"); - } - - /* register a blk device */ - if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, "blueDBM")) < 0) { - bdbm_msg ("register_blkdev failed (%d)", bdbm_device_major_num); - return bdbm_device_major_num; - } - if (!(bdbm_device.gd = alloc_disk (1))) { - bdbm_msg ("alloc_disk failed"); - unregister_blkdev (bdbm_device_major_num, "blueDBM"); - return -ENOMEM; - } - bdbm_device.gd->major = bdbm_device_major_num; - bdbm_device.gd->first_minor = 0; - bdbm_device.gd->fops = &bdops; - bdbm_device.gd->queue = bdbm_device.queue; - bdbm_device.gd->private_data = NULL; - strcpy (bdbm_device.gd->disk_name, "blueDBM"); - - { - uint64_t capacity; - //capacity = bdi->parm_dev.device_capacity_in_byte * 0.9; - capacity = bdi->parm_dev.device_capacity_in_byte; - capacity = (capacity / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; - capacity = capacity - capacity / 10; - set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); - } - add_disk (bdbm_device.gd); - - return 0; -} - -void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) -{ - /* unregister a BlueDBM device driver */ - del_gendisk (bdbm_device.gd); - blk_cleanup_queue (bdbm_device.gd->queue); - put_disk (bdbm_device.gd); - unregister_blkdev (bdbm_device_major_num, "blueDBM"); -} - diff --git a/frontend/kernel_nvme/blkdev.h b/frontend/kernel_nvme/blkdev.h deleted file mode 100644 index b700b72..0000000 --- a/frontend/kernel_nvme/blkdev.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#ifndef _BLUEDBM_HOST_BLKDEV_H -#define _BLUEDBM_HOST_BLKDEV_H - -uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn); -void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi); - -#endif diff --git a/frontend/kernel_nvme/blkdev_ioctl.h b/frontend/kernel_nvme/blkdev_ioctl.h deleted file mode 100644 index eafc7fd..0000000 --- a/frontend/kernel_nvme/blkdev_ioctl.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#ifndef _BLUEDBM_IOCTL_H -#define _BLUEDBM_IOCTL_H - -#define BDBM_BADBLOCK_SCAN _IOR(0, 0, int) -#define BDBM_BADBLOCK_SCAN_CHECK _IOR(0, 1, int) -/*#define BDBM_GET_PHYADDR _IOR(0, 2, struct phyaddr)*/ - -#ifdef MODULE -/* kernel module */ - -#ifndef HDIO_GETGEO_BIG /* for backward-compatibility */ -#define HDIO_GETGEO_BIG 0x330 -#endif - -#ifndef HDIO_GETGEO_BIG_RAW -#define HDIO_GETGEO_BIG_RAW 0x331 -#endif - -int bdbm_blk_ioctl (struct block_device *bdev, fmode_t mode, unsigned cmd, unsigned long arg); -int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo); - -#endif /* MODULE */ - -#endif /* _BLUEDBM_IOCTL_H */ diff --git a/frontend/kernel_nvme/blkio.c b/frontend/kernel_nvme/blkio.c deleted file mode 100644 index a604b10..0000000 --- a/frontend/kernel_nvme/blkio.c +++ /dev/null @@ -1,694 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#include -#include /* bio */ - -#include "bdbm_drv.h" -#include "debug.h" -#include "umemory.h" -#include "params.h" -#include "utime.h" -#include "uthread.h" - -#include "blkio.h" -#include "blkdev.h" -#include "blkdev_ioctl.h" - -#include "hlm_reqs_pool.h" - -/*#define ENABLE_DISPLAY*/ - -extern bdbm_drv_info_t* _bdi; - -bdbm_host_inf_t _blkio_inf = { - .ptr_private = NULL, - .open = blkio_open, - .close = blkio_close, - .make_req = blkio_make_req, - .end_req = blkio_end_req, -}; - -typedef struct { - bdbm_sema_t host_lock; - atomic_t nr_host_reqs; - bdbm_hlm_reqs_pool_t* hlm_reqs_pool; -} bdbm_blkio_private_t; - - -/* This is a call-back function invoked by a block-device layer */ -static bdbm_blkio_req_t* __get_blkio_req (struct bio *bio) -{ - struct bio_vec bvec; - struct bvec_iter iter; - bdbm_blkio_req_t* br = (bdbm_blkio_req_t*)bdbm_malloc_atomic (sizeof (bdbm_blkio_req_t)); - - /* check the pointer */ - if (br == NULL) - goto fail; - - /* get the type of the bio request */ - if (bio->bi_rw & REQ_DISCARD) - br->bi_rw = REQTYPE_TRIM; - else if (bio_data_dir (bio) == READ || bio_data_dir (bio) == READA) - br->bi_rw = REQTYPE_READ; - else if (bio_data_dir (bio) == WRITE) - br->bi_rw = REQTYPE_WRITE; - else { - bdbm_error ("oops! invalid request type (bi->bi_rw = %lx)", bio->bi_rw); - goto fail; - } - - /* get the offset and the length of the bio */ - br->bi_offset = bio->bi_iter.bi_sector; - br->bi_size = bio_sectors (bio); - br->bi_bvec_cnt = 0; - br->bio = (void*)bio; - - /* get the data from the bio */ - if (br->bi_rw != REQTYPE_TRIM) { - bio_for_each_segment (bvec, bio, iter) { - br->bi_bvec_ptr[br->bi_bvec_cnt] = (uint8_t*)page_address (bvec.bv_page); - br->bi_bvec_cnt++; - - if (br->bi_bvec_cnt >= BDBM_BLKIO_MAX_VECS) { - /* NOTE: this is an impossible case unless kernel parameters are changed */ - bdbm_error ("oops! # of vectors in bio is larger than %u %llu", - BDBM_BLKIO_MAX_VECS, br->bi_bvec_cnt); - goto fail; - } - } - } - - return br; - -fail: - if (br) - bdbm_free_atomic (br); - return NULL; -} - -static void __free_blkio_req (bdbm_blkio_req_t* br) -{ - if (br) - bdbm_free_atomic (br); -} - -//static void __host_blkio_make_request_fn ( -static blk_qc_t __host_blkio_make_request_fn ( - struct request_queue *q, - struct bio *bio) -{ - blkio_make_req (_bdi, (void*)bio); - return BLK_QC_T_NONE; /* for no polling */ -} - - -uint32_t blkio_open (bdbm_drv_info_t* bdi) -{ - uint32_t ret; - bdbm_blkio_private_t* p; - int mapping_unit_size; - - /* create a private data structure */ - if ((p = (bdbm_blkio_private_t*)bdbm_malloc (sizeof (bdbm_blkio_private_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - return 1; - } - bdbm_sema_init (&p->host_lock); - atomic_set (&p->nr_host_reqs, 0); - bdi->ptr_host_inf->ptr_private = (void*)p; - - /* create hlm_reqs pool */ - if (bdi->parm_dev.nr_subpages_per_page == 1) - mapping_unit_size = bdi->parm_dev.page_main_size; - else - mapping_unit_size = KERNEL_PAGE_SIZE; - - if ((p->hlm_reqs_pool = bdbm_hlm_reqs_pool_create ( - mapping_unit_size, /* mapping unit */ - bdi->parm_dev.page_main_size /* io unit */ - )) == NULL) { - bdbm_warning ("bdbm_hlm_reqs_pool_create () failed"); - return 1; - } - - /* register blueDBM */ - if ((ret = host_blkdev_register_device - (bdi, __host_blkio_make_request_fn)) != 0) { - bdbm_error ("failed to register blueDBM"); - bdbm_free (p); - return 1; - } - - return 0; -} - -void blkio_close (bdbm_drv_info_t* bdi) -{ - bdbm_blkio_private_t* p = BDBM_HOST_PRIV (bdi); - - /* wait until requests to finish */ - if (atomic_read (&p->nr_host_reqs) > 0) { - bdbm_thread_yield (); - } - - /* close hlm_reqs pool */ - if (p->hlm_reqs_pool) { - bdbm_hlm_reqs_pool_destroy (p->hlm_reqs_pool); - } - - /* unregister a block device */ - host_blkdev_unregister_block_device (bdi); - - /* free private */ - bdbm_free (p); -} - -void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) -{ - bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - bdbm_blkio_req_t* br = NULL; - bdbm_hlm_req_t* hr = NULL; - - /* get blkio */ - if ((br = __get_blkio_req ((struct bio*)bio)) == NULL) { - bdbm_error ("__get_blkio_req () failed"); - goto fail; - } - - /* get a free hlm_req from the hlm_reqs_pool */ - if ((hr = bdbm_hlm_reqs_pool_get_item (p->hlm_reqs_pool)) == NULL) { - bdbm_error ("bdbm_hlm_reqs_pool_get_item () failed"); - goto fail; - } - - /* build hlm_req with bio */ - if (bdbm_hlm_reqs_pool_build_req (p->hlm_reqs_pool, hr, br) != 0) { - bdbm_error ("bdbm_hlm_reqs_pool_build_req () failed"); - goto fail; - } - - /* lock a global mutex -- this function must be finished as soon as possible */ - bdbm_sema_lock (&p->host_lock); - - /* if success, increase # of host reqs */ - atomic_inc (&p->nr_host_reqs); - - /* NOTE: it would be possible that 'hlm_req' becomes NULL - * if 'bdi->ptr_hlm_inf->make_req' is success. */ - if (bdi->ptr_hlm_inf->make_req (bdi, hr) != 0) { - /* oops! something wrong */ - bdbm_error ("'bdi->ptr_hlm_inf->make_req' failed"); - - /* cancel the request */ - atomic_dec (&p->nr_host_reqs); - } - - /* ulock a global mutex */ - bdbm_sema_unlock (&p->host_lock); - - return; - -fail: - if (hr) - bdbm_hlm_reqs_pool_free_item (p->hlm_reqs_pool, hr); - if (br) - __free_blkio_req (br); -} - -void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) -{ - bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - bdbm_blkio_req_t* br = (bdbm_blkio_req_t*)hr->blkio_req; - - /* end bio */ - if (hr->ret == 0) - bio_endio ((struct bio*)br->bio); - else { - bdbm_warning ("oops! make_req () failed with %d", hr->ret); - bio_io_error ((struct bio*)br->bio); - } - - /* free blkio_req */ - __free_blkio_req (br); - - /* destroy hlm_req */ - bdbm_hlm_reqs_pool_free_item (p->hlm_reqs_pool, hr); - - /* decreate # of reqs */ - atomic_dec (&p->nr_host_reqs); -} - - -#if 0 - -bdbm_host_inf_t _blkio_inf = { - .ptr_private = NULL, - .open = blkio_open, - .close = blkio_close, - .make_req = blkio_make_req, - .end_req = blkio_end_req, -}; - -typedef struct { - bdbm_sema_t host_lock; - atomic64_t nr_reqs; -} bdbm_blkio_private_t; - - - -/* This is a call-back function invoked by a block-device layer */ -static void __host_blkio_make_request_fn ( - struct request_queue *q, - struct bio *bio) -{ - blkio_make_req (_bdi, (void*)bio); -} - -static bdbm_hlm_req_t* __blkio_create_hlm_trim_req ( - bdbm_drv_info_t* bdi, - struct bio* bio) -{ - bdbm_hlm_req_t* hlm_req = NULL; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - bdbm_ftl_params* dp = BDBM_GET_DRIVER_PARAMS (bdi); - uint64_t nr_secs_per_fp = 0; - - nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; - - /* create bdbm_hm_req_t */ - if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic - (sizeof (bdbm_hlm_req_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - return NULL; - } - - /* make a high-level request for TRIM */ - hlm_req->req_type = REQTYPE_TRIM; - - if (dp->mapping_type == MAPPING_POLICY_SEGMENT) { - hlm_req->lpa = bio->bi_sector / nr_secs_per_fp; - hlm_req->len = bio_sectors (bio) / nr_secs_per_fp; - if (hlm_req->len == 0) - hlm_req->len = 1; - } else { - hlm_req->lpa = (bio->bi_sector + nr_secs_per_fp - 1) / nr_secs_per_fp; - if ((hlm_req->lpa * nr_secs_per_fp - bio->bi_sector) > bio_sectors (bio)) { - bdbm_error ("'hlm_req->lpa (%llu) * nr_secs_per_fp (%llu) - bio->bi_sector (%lu)' (%llu) > bio_sectors (bio) (%u)", - hlm_req->lpa, nr_secs_per_fp, bio->bi_sector, - hlm_req->lpa * nr_secs_per_fp - bio->bi_sector, - bio_sectors (bio)); - hlm_req->len = 0; - } else { - hlm_req->len = - (bio_sectors (bio) - (hlm_req->lpa * nr_secs_per_fp - bio->bi_sector)) / nr_secs_per_fp; - } - } - hlm_req->nr_done_reqs = 0; - hlm_req->kpg_flags = NULL; - hlm_req->pptr_kpgs = NULL; /* no data */ - hlm_req->ptr_host_req = (void*)bio; - hlm_req->ret = 0; - - return hlm_req; -} - -static bdbm_hlm_req_t* __blkio_create_hlm_rw_req ( - bdbm_drv_info_t* bdi, - struct bio* bio) -{ - struct bio_vec *bvec = NULL; - bdbm_hlm_req_t* hlm_req = NULL; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - - uint32_t loop = 0; - uint32_t kpg_loop = 0; - uint32_t bvec_offset = 0; - uint64_t nr_secs_per_fp = 0; - uint64_t nr_secs_per_kp = 0; - uint32_t nr_kp_per_fp = 0; - - /* get # of sectors per flash page */ - nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; - nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; - nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ - - /* create bdbm_hm_req_t */ - if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic - (sizeof (bdbm_hlm_req_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - return NULL; - } - - /* get a bio direction */ - if (bio_data_dir (bio) == READ || bio_data_dir (bio) == READA) { - hlm_req->req_type = REQTYPE_READ; - } else if (bio_data_dir (bio) == WRITE) { - hlm_req->req_type = REQTYPE_WRITE; - } else { - bdbm_error ("the direction of a bio is invalid (%lu)", bio_data_dir (bio)); - goto fail_req; - } - - /* make a high-level request for READ or WRITE */ - hlm_req->lpa = (bio->bi_sector / nr_secs_per_fp); - hlm_req->len = (bio->bi_sector + bio_sectors (bio) + nr_secs_per_fp - 1) / nr_secs_per_fp - hlm_req->lpa; - hlm_req->nr_done_reqs = 0; - hlm_req->ptr_host_req = (void*)bio; - hlm_req->ret = 0; - /*bdbm_spin_lock_init (&hlm_req->lock);*/ - if ((hlm_req->pptr_kpgs = (uint8_t**)bdbm_malloc_atomic - (sizeof(uint8_t*) * hlm_req->len * nr_kp_per_fp)) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - goto fail_req; - } - if ((hlm_req->kpg_flags = (uint8_t*)bdbm_malloc_atomic - (sizeof(uint8_t) * hlm_req->len * nr_kp_per_fp)) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - goto fail_flags; - } - /* kpg_flags is set to MEMFLAG_NOT_SET (0) */ - - /* get or alloc pages */ - bio_for_each_segment (bvec, bio, loop) { - /* check some error cases */ - if (bvec->bv_offset != 0) { - bdbm_warning ("'bv_offset' is not 0 (%d)", bvec->bv_offset); - /*goto fail_grab_pages;*/ - } - -next_kpg: - /* assign a new page */ - if ((hlm_req->lpa * nr_kp_per_fp + kpg_loop) != (bio->bi_sector + bvec_offset) / nr_secs_per_kp) { - hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); - hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; - kpg_loop++; - goto next_kpg; - } - - if ((hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)page_address (bvec->bv_page)) != NULL) { - hlm_req->kpg_flags[kpg_loop] = MEMFLAG_KMAP_PAGE; - } else { - bdbm_error ("kmap failed"); - goto fail_grab_pages; - } - - bvec_offset += nr_secs_per_kp; - kpg_loop++; - } - - /* get additional free pages if necessary */ - while (kpg_loop < hlm_req->len * nr_kp_per_fp) { - hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); - hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; - kpg_loop++; - } - - return hlm_req; - -fail_grab_pages: - /* release grabbed pages */ - for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { - if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE) { - bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); - } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE) { - } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { - bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); - } - } - bdbm_free_atomic (hlm_req->kpg_flags); - -fail_flags: - bdbm_free_atomic (hlm_req->pptr_kpgs); - -fail_req: - bdbm_free_atomic (hlm_req); - - return NULL; -} - -static bdbm_hlm_req_t* __blkio_create_hlm_req ( - bdbm_drv_info_t* bdi, - struct bio* bio) -{ - bdbm_hlm_req_t* hlm_req = NULL; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - uint64_t nr_secs_per_kp = 0; - - /* get # of sectors per flash page */ - nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; - - /* see if some error cases */ - if (bio->bi_sector % nr_secs_per_kp != 0) { - bdbm_warning ("kernel pages are not aligned with disk sectors (%lu mod %llu != 0)", - bio->bi_sector , nr_secs_per_kp); - /* go ahead */ - } - if (KERNEL_PAGE_SIZE > np->page_main_size) { - bdbm_error ("kernel page (%lu) is larger than flash page (%llu)", - KERNEL_PAGE_SIZE, np->page_main_size); - return NULL; - } - - /* create 'hlm_req' */ - if (bio->bi_rw & REQ_DISCARD) { - /* make a high-level request for TRIM */ - hlm_req = __blkio_create_hlm_trim_req (bdi, bio); - } else { - /* make a high-level request for READ or WRITE */ - hlm_req = __blkio_create_hlm_rw_req (bdi, bio); - } - - /* start a stopwatch */ - if (hlm_req) { - bdbm_stopwatch_start (&hlm_req->sw); - } - - return hlm_req; -} - -static void __blkio_delete_hlm_req ( - bdbm_drv_info_t* bdi, - bdbm_hlm_req_t* hlm_req) -{ - bdbm_device_params_t* np = NULL; - uint32_t kpg_loop = 0; - uint32_t nr_kp_per_fp = 0; - - np = BDBM_GET_DEVICE_PARAMS (bdi); - nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ - - /* temp */ - if (hlm_req->org_pptr_kpgs) { - hlm_req->pptr_kpgs = hlm_req->org_pptr_kpgs; - hlm_req->kpg_flags = hlm_req->org_kpg_flags; - hlm_req->lpa--; - hlm_req->len++; - } - /* end */ - - /* free or unmap pages */ - if (hlm_req->kpg_flags != NULL && hlm_req->pptr_kpgs != NULL) { - for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { - if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE_DONE) { - bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); - } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE_DONE) { - } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { - bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); - } - } - } - - /* release other stuff */ - if (hlm_req->kpg_flags != NULL) - bdbm_free_atomic (hlm_req->kpg_flags); - if (hlm_req->pptr_kpgs != NULL) - bdbm_free_atomic (hlm_req->pptr_kpgs); - bdbm_free_atomic (hlm_req); -} - -#ifdef ENABLE_DISPLAY -static void __blkio_display_req ( - bdbm_drv_info_t* bdi, - bdbm_hlm_req_t* hlm_req) -{ - bdbm_ftl_inf_t* ftl = (bdbm_ftl_inf_t*)BDBM_GET_FTL_INF(bdi); - uint64_t seg_no = 0; - - if (ftl->get_segno) { - seg_no = ftl->get_segno (bdi, hlm_req->lpa); - } - - switch (hlm_req->req_type) { - case REQTYPE_TRIM: - bdbm_msg ("[%llu] TRIM\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); - break; - case REQTYPE_READ: - bdbm_msg ("[%llu] READ\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); - break; - case REQTYPE_WRITE: - bdbm_msg ("[%llu] WRITE\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); - break; - default: - bdbm_error ("invalid REQTYPE (%u)", hlm_req->req_type); - break; - } -} -#endif - -uint32_t blkio_open (bdbm_drv_info_t* bdi) -{ - uint32_t ret; - bdbm_blkio_private_t* p; - - /* create a private data structure */ - if ((p = (bdbm_blkio_private_t*)bdbm_malloc_atomic - (sizeof (bdbm_blkio_private_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - return 1; - } - bdbm_sema_init (&p->host_lock); - atomic64_set (&p->nr_reqs, 0); - bdi->ptr_host_inf->ptr_private = (void*)p; - - /* register blueDBM */ - if ((ret = host_blkdev_register_device - (bdi, __host_blkio_make_request_fn)) != 0) { - bdbm_error ("failed to register blueDBM"); - bdbm_free_atomic (p); - return 1; - } - - return 0; -} - -void blkio_close (bdbm_drv_info_t* bdi) -{ - bdbm_blkio_private_t* p = NULL; - - p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - - /* wait for host reqs to finish */ - bdbm_msg ("wait for host reqs to finish"); - while (1) { - if (atomic64_read (&p->nr_reqs) == 0) - break; - schedule (); /* sleep */ - } - - /* unregister a block device */ - host_blkdev_unregister_block_device (bdi); - - /* free private */ - bdbm_free_atomic (p); -} - -void blkio_make_req (bdbm_drv_info_t* bdi, void* req) -{ - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - bdbm_hlm_req_t* hlm_req = NULL; - struct bio* bio = (struct bio*)req; - - /* lock a global mutex -- this function must be finished as soon as possible */ - bdbm_sema_lock (&p->host_lock); - - /* see if the address range of bio is beyond storage space */ - if (bio->bi_sector + bio_sectors (bio) > np->device_capacity_in_byte / KERNEL_SECTOR_SIZE) { - bdbm_sema_unlock (&p->host_lock); - bdbm_error ("bio is beyond storage space (%lu > %llu)", - bio->bi_sector + bio_sectors (bio), - np->device_capacity_in_byte / KERNEL_SECTOR_SIZE); - bio_io_error (bio); - return; - } - - /* create a hlm_req using a bio */ - if ((hlm_req = __blkio_create_hlm_req (bdi, bio)) == NULL) { - bdbm_sema_unlock (&p->host_lock); - bdbm_error ("the creation of hlm_req failed"); - bio_io_error (bio); - return; - } - -#ifdef ENABLE_DISPLAY - /* display req info */ - __blkio_display_req (bdi, hlm_req); -#endif - - /* if success, increase # of host reqs before sending the request to hlm */ - atomic64_inc (&p->nr_reqs); - - /* NOTE: it would be possible that 'hlm_req' becomes NULL - * if 'bdi->ptr_hlm_inf->make_req' is success. */ - if (bdi->ptr_hlm_inf->make_req (bdi, hlm_req) != 0) { - bdbm_error ("'bdi->ptr_hlm_inf->make_req' failed"); - - /* decreate # of reqs */ - atomic64_dec (&p->nr_reqs); - if (atomic64_read (&p->nr_reqs) < 0) { - bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); - } - - /* finish a bio */ - __blkio_delete_hlm_req (bdi, hlm_req); - bio_io_error (bio); - } - - bdbm_sema_unlock (&p->host_lock); -} - -void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hlm_req) -{ - uint32_t ret; - struct bio* bio = NULL; - bdbm_blkio_private_t* p = NULL; - - /* unlock hlm_req's lock if it is available */ - if (hlm_req->done) - bdbm_sema_unlock (hlm_req->done); - - /* get a bio from hlm_req */ - bio = (struct bio*)hlm_req->ptr_host_req; - p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - ret = hlm_req->ret; - - /* destroy hlm_req */ - __blkio_delete_hlm_req (bdi, hlm_req); - - /* get the result and end a bio */ - if (bio != NULL) { - if (ret == 0) bio_endio (bio, 0); - else bio_io_error (bio); - } - - /* decreate # of reqs */ - atomic64_dec (&p->nr_reqs); - if (atomic64_read (&p->nr_reqs) < 0) { - bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); - } -} - -#endif diff --git a/frontend/kernel_nvme/blkio.h b/frontend/kernel_nvme/blkio.h deleted file mode 100644 index 1e896f9..0000000 --- a/frontend/kernel_nvme/blkio.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#ifndef _BLUEDBM_HOST_BLOCKIO_H -#define _BLUEDBM_HOST_BLOCKIO_H - -extern bdbm_host_inf_t _blkio_inf; - -uint32_t blkio_open (bdbm_drv_info_t* bdi); -void blkio_close (bdbm_drv_info_t* bdi); -void blkio_make_req (bdbm_drv_info_t* bdi, void* req); -void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req); - -#endif - diff --git a/frontend/kernel_nvme/kmain.c b/frontend/kernel_nvme/kmain.c deleted file mode 100644 index 5fd7e40..0000000 --- a/frontend/kernel_nvme/kmain.c +++ /dev/null @@ -1,81 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#include -#include - -#include "bdbm_drv.h" -#include "debug.h" -#include "blkio.h" -#include "devices.h" - -bdbm_drv_info_t* _bdi = NULL; - -static int __init bdbm_drv_init (void) -{ - /* create bdi with default parameters */ - if ((_bdi = bdbm_drv_create ()) == NULL) { - bdbm_error ("[kmain] bdbm_drv_create () failed"); - return -ENXIO; - } - - /* open the device */ - if (bdbm_dm_init (_bdi) != 0) { - bdbm_error ("[kmain] bdbm_dm_init () failed"); - return -ENXIO; - } - - /* attach the host & the device interface to the bdbm */ - if (bdbm_drv_setup (_bdi, &_blkio_inf, bdbm_dm_get_inf (_bdi)) != 0) { - bdbm_error ("[kmain] bdbm_drv_setup () failed"); - return -ENXIO; - } - - /* run it */ - if (bdbm_drv_run (_bdi) != 0) { - bdbm_error ("[kmain] bdbm_drv_run () failed"); - return -ENXIO; - } - - return 0; -} - -static void __exit bdbm_drv_exit(void) -{ - /* stop running layers */ - bdbm_drv_close (_bdi); - - /* close the device */ - bdbm_dm_exit (_bdi); - - /* remove bdbm_drv */ - bdbm_drv_destroy (_bdi); -} - -MODULE_AUTHOR ("Sungjin Lee "); -MODULE_DESCRIPTION ("BlueDBM Device Driver"); -MODULE_LICENSE ("GPL"); - -module_init (bdbm_drv_init); -module_exit (bdbm_drv_exit); diff --git a/frontend/kernel_nvme/mount_ext4.sh b/frontend/kernel_nvme/mount_ext4.sh deleted file mode 100755 index cfdb135..0000000 --- a/frontend/kernel_nvme/mount_ext4.sh +++ /dev/null @@ -1,13 +0,0 @@ -sudo mkdir -p /usr/share/bdbm_drv -sudo touch /usr/share/bdbm_drv/ftl.dat -sudo touch /usr/share/bdbm_drv/dm.dat - -sudo rmmod nvme -sudo insmod dumbssd.ko -sleep 1 -sudo insmod nvme.ko -sleep 1 -sudo insmod bdbm_drv.ko -sleep 1 -sudo mkfs -t ext4 -b 4096 /dev/blueDBM -sudo mount -t ext4 -o discard /dev/blueDBM /media/blueDBM diff --git a/frontend/kernel_nvme/umount.sh b/frontend/kernel_nvme/umount.sh deleted file mode 100755 index 2fa14e8..0000000 --- a/frontend/kernel_nvme/umount.sh +++ /dev/null @@ -1,7 +0,0 @@ -sudo umount /media/blueDBM -sleep 1 -sudo rmmod bdbm_drv -sleep 5 -sudo rmmod nvme -sleep 1 -sudo rmmod dumbssd diff --git a/tools/Makefile b/tools/format/Makefile similarity index 100% rename from tools/Makefile rename to tools/format/Makefile diff --git a/tools/bdbm_format b/tools/format/bdbm_format similarity index 100% rename from tools/bdbm_format rename to tools/format/bdbm_format diff --git a/tools/bdbm_format.c b/tools/format/bdbm_format.c similarity index 100% rename from tools/bdbm_format.c rename to tools/format/bdbm_format.c diff --git a/tools/lightnvm b/tools/lightnvm new file mode 120000 index 0000000..b8393c0 --- /dev/null +++ b/tools/lightnvm @@ -0,0 +1 @@ +lightnvm-v4.5.3 \ No newline at end of file diff --git a/tools/lightnvm-v4.5.3/Makefile b/tools/lightnvm-v4.5.3/Makefile new file mode 100644 index 0000000..ee626f7 --- /dev/null +++ b/tools/lightnvm-v4.5.3/Makefile @@ -0,0 +1,33 @@ +CONFIG_MODULE_SIG=n + +lightnvm-y := core.o sysblk.o gennvm.o rrpc.o + +obj-m := lightnvm.o + +ccflags-y := -I$(src) + +export KROOT=/lib/modules/$(shell uname -r)/build + +.PHONY: default +default: modules + +.PHONY: modules +modules: + @$(MAKE) -C $(KROOT) M=$(PWD) modules + +.PHONY: modules_check +modules_check: + @$(MAKE) -C $(KROOT) C=2 M=$(PWD) modules + +.PHONY: modules_install +modules_install: + @$(MAKE) -C $(KROOT) M=$(PWD) modules_install + +.PHONY: kernel_clean +kernel_clean: + @$(MAKE) -C $(KROOT) M=$(PWD) clean + +.PHONY: clean +clean: kernel_clean + @rm -rf Module.markers modules.order + @rm -rf *.o .*.cmd diff --git a/tools/lightnvm-v4.5.3/core.c b/tools/lightnvm-v4.5.3/core.c new file mode 100644 index 0000000..9f6acd5 --- /dev/null +++ b/tools/lightnvm-v4.5.3/core.c @@ -0,0 +1,1187 @@ +/* + * Copyright (C) 2015 IT University of Copenhagen. All rights reserved. + * Initial release: Matias Bjorling + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, + * USA. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static LIST_HEAD(nvm_targets); +static LIST_HEAD(nvm_mgrs); +static LIST_HEAD(nvm_devices); +static DECLARE_RWSEM(nvm_lock); + +static struct nvm_tgt_type *nvm_find_target_type(const char *name) +{ + struct nvm_tgt_type *tt; + + list_for_each_entry(tt, &nvm_targets, list) + if (!strcmp(name, tt->name)) + return tt; + + return NULL; +} + +int nvm_register_target(struct nvm_tgt_type *tt) +{ + int ret = 0; + + down_write(&nvm_lock); + if (nvm_find_target_type(tt->name)) + ret = -EEXIST; + else + list_add(&tt->list, &nvm_targets); + up_write(&nvm_lock); + + return ret; +} +EXPORT_SYMBOL(nvm_register_target); + +void nvm_unregister_target(struct nvm_tgt_type *tt) +{ + if (!tt) + return; + + down_write(&nvm_lock); + list_del(&tt->list); + up_write(&nvm_lock); +} +EXPORT_SYMBOL(nvm_unregister_target); + +void *nvm_dev_dma_alloc(struct nvm_dev *dev, gfp_t mem_flags, + dma_addr_t *dma_handler) +{ + return dev->ops->dev_dma_alloc(dev, dev->ppalist_pool, mem_flags, + dma_handler); +} +EXPORT_SYMBOL(nvm_dev_dma_alloc); + +void nvm_dev_dma_free(struct nvm_dev *dev, void *ppa_list, + dma_addr_t dma_handler) +{ + dev->ops->dev_dma_free(dev->ppalist_pool, ppa_list, dma_handler); +} +EXPORT_SYMBOL(nvm_dev_dma_free); + +static struct nvmm_type *nvm_find_mgr_type(const char *name) +{ + struct nvmm_type *mt; + + list_for_each_entry(mt, &nvm_mgrs, list) + if (!strcmp(name, mt->name)) + return mt; + + return NULL; +} + +struct nvmm_type *nvm_init_mgr(struct nvm_dev *dev) +{ + struct nvmm_type *mt; + int ret; + + lockdep_assert_held(&nvm_lock); + + list_for_each_entry(mt, &nvm_mgrs, list) { + if (strncmp(dev->sb.mmtype, mt->name, NVM_MMTYPE_LEN)) + continue; + + ret = mt->register_mgr(dev); + if (ret < 0) { + pr_err("nvm: media mgr failed to init (%d) on dev %s\n", + ret, dev->name); + return NULL; /* initialization failed */ + } else if (ret > 0) + return mt; + } + + return NULL; +} + +int nvm_register_mgr(struct nvmm_type *mt) +{ + struct nvm_dev *dev; + int ret = 0; + + down_write(&nvm_lock); + if (nvm_find_mgr_type(mt->name)) { + ret = -EEXIST; + goto finish; + } else { + list_add(&mt->list, &nvm_mgrs); + } + + /* try to register media mgr if any device have none configured */ + list_for_each_entry(dev, &nvm_devices, devices) { + if (dev->mt) + continue; + + dev->mt = nvm_init_mgr(dev); + } +finish: + up_write(&nvm_lock); + + return ret; +} +EXPORT_SYMBOL(nvm_register_mgr); + +void nvm_unregister_mgr(struct nvmm_type *mt) +{ + if (!mt) + return; + + down_write(&nvm_lock); + list_del(&mt->list); + up_write(&nvm_lock); +} +EXPORT_SYMBOL(nvm_unregister_mgr); + +static struct nvm_dev *nvm_find_nvm_dev(const char *name) +{ + struct nvm_dev *dev; + + list_for_each_entry(dev, &nvm_devices, devices) + if (!strcmp(name, dev->name)) + return dev; + + return NULL; +} + +struct nvm_block *nvm_get_blk_unlocked(struct nvm_dev *dev, struct nvm_lun *lun, + unsigned long flags) +{ + return dev->mt->get_blk_unlocked(dev, lun, flags); +} +EXPORT_SYMBOL(nvm_get_blk_unlocked); + +/* Assumes that all valid pages have already been moved on release to bm */ +void nvm_put_blk_unlocked(struct nvm_dev *dev, struct nvm_block *blk) +{ + return dev->mt->put_blk_unlocked(dev, blk); +} +EXPORT_SYMBOL(nvm_put_blk_unlocked); + +struct nvm_block *nvm_get_blk(struct nvm_dev *dev, struct nvm_lun *lun, + unsigned long flags) +{ + return dev->mt->get_blk(dev, lun, flags); +} +EXPORT_SYMBOL(nvm_get_blk); + +/* Assumes that all valid pages have already been moved on release to bm */ +void nvm_put_blk(struct nvm_dev *dev, struct nvm_block *blk) +{ + return dev->mt->put_blk(dev, blk); +} +EXPORT_SYMBOL(nvm_put_blk); + +int nvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd) +{ + return dev->mt->submit_io(dev, rqd); +} +EXPORT_SYMBOL(nvm_submit_io); + +int nvm_erase_blk(struct nvm_dev *dev, struct nvm_block *blk) +{ + return dev->mt->erase_blk(dev, blk, 0); +} +EXPORT_SYMBOL(nvm_erase_blk); + +void nvm_addr_to_generic_mode(struct nvm_dev *dev, struct nvm_rq *rqd) +{ + int i; + + if (rqd->nr_pages > 1) { + for (i = 0; i < rqd->nr_pages; i++) + rqd->ppa_list[i] = dev_to_generic_addr(dev, + rqd->ppa_list[i]); + } else { + rqd->ppa_addr = dev_to_generic_addr(dev, rqd->ppa_addr); + } +} +EXPORT_SYMBOL(nvm_addr_to_generic_mode); + +void nvm_generic_to_addr_mode(struct nvm_dev *dev, struct nvm_rq *rqd) +{ + int i; + + if (rqd->nr_pages > 1) { + for (i = 0; i < rqd->nr_pages; i++) + rqd->ppa_list[i] = generic_to_dev_addr(dev, + rqd->ppa_list[i]); + } else { + rqd->ppa_addr = generic_to_dev_addr(dev, rqd->ppa_addr); + } +} +EXPORT_SYMBOL(nvm_generic_to_addr_mode); + +int nvm_set_rqd_ppalist(struct nvm_dev *dev, struct nvm_rq *rqd, + struct ppa_addr *ppas, int nr_ppas) +{ + int i, plane_cnt, pl_idx; + + if (dev->plane_mode == NVM_PLANE_SINGLE && nr_ppas == 1) { + rqd->nr_pages = 1; + rqd->ppa_addr = ppas[0]; + + return 0; + } + + plane_cnt = (1 << dev->plane_mode); + rqd->nr_pages = plane_cnt * nr_ppas; + + if (dev->ops->max_phys_sect < rqd->nr_pages) + return -EINVAL; + + rqd->ppa_list = nvm_dev_dma_alloc(dev, GFP_KERNEL, &rqd->dma_ppa_list); + if (!rqd->ppa_list) { + pr_err("nvm: failed to allocate dma memory\n"); + return -ENOMEM; + } + + for (pl_idx = 0; pl_idx < plane_cnt; pl_idx++) { + for (i = 0; i < nr_ppas; i++) { + ppas[i].g.pl = pl_idx; + rqd->ppa_list[(pl_idx * nr_ppas) + i] = ppas[i]; + } + } + + return 0; +} +EXPORT_SYMBOL(nvm_set_rqd_ppalist); + +void nvm_free_rqd_ppalist(struct nvm_dev *dev, struct nvm_rq *rqd) +{ + if (!rqd->ppa_list) + return; + + nvm_dev_dma_free(dev, rqd->ppa_list, rqd->dma_ppa_list); +} +EXPORT_SYMBOL(nvm_free_rqd_ppalist); + +int nvm_erase_ppa(struct nvm_dev *dev, struct ppa_addr *ppas, int nr_ppas) +{ + struct nvm_rq rqd; + int ret; + + if (!dev->ops->erase_block) + return 0; + + memset(&rqd, 0, sizeof(struct nvm_rq)); + + ret = nvm_set_rqd_ppalist(dev, &rqd, ppas, nr_ppas); + if (ret) + return ret; + + nvm_generic_to_addr_mode(dev, &rqd); + + ret = dev->ops->erase_block(dev, &rqd); + + nvm_free_rqd_ppalist(dev, &rqd); + + return ret; +} +EXPORT_SYMBOL(nvm_erase_ppa); + +void nvm_end_io(struct nvm_rq *rqd, int error) +{ + rqd->error = error; + rqd->end_io(rqd); +} +EXPORT_SYMBOL(nvm_end_io); + +static void nvm_end_io_sync(struct nvm_rq *rqd) +{ + struct completion *waiting = rqd->wait; + + rqd->wait = NULL; + + complete(waiting); +} + +int nvm_submit_ppa(struct nvm_dev *dev, struct ppa_addr *ppa, int nr_ppas, + int opcode, int flags, void *buf, int len) +{ + DECLARE_COMPLETION_ONSTACK(wait); + struct nvm_rq rqd; + struct bio *bio; + int ret; + unsigned long hang_check; + + bio = bio_map_kern(dev->q, buf, len, GFP_KERNEL); + if (IS_ERR_OR_NULL(bio)) + return -ENOMEM; + + memset(&rqd, 0, sizeof(struct nvm_rq)); + ret = nvm_set_rqd_ppalist(dev, &rqd, ppa, nr_ppas); + if (ret) { + bio_put(bio); + return ret; + } + + rqd.opcode = opcode; + rqd.bio = bio; + rqd.wait = &wait; + rqd.dev = dev; + rqd.end_io = nvm_end_io_sync; + rqd.flags = flags; + nvm_generic_to_addr_mode(dev, &rqd); + + ret = dev->ops->submit_io(dev, &rqd); + + /* Prevent hang_check timer from firing at us during very long I/O */ + hang_check = sysctl_hung_task_timeout_secs; + if (hang_check) + while (!wait_for_completion_io_timeout(&wait, hang_check * (HZ/2))); + else + wait_for_completion_io(&wait); + + nvm_free_rqd_ppalist(dev, &rqd); + + return rqd.error; +} +EXPORT_SYMBOL(nvm_submit_ppa); + +static int nvm_init_slc_tbl(struct nvm_dev *dev, struct nvm_id_group *grp) +{ + int i; + + dev->lps_per_blk = dev->pgs_per_blk; + dev->lptbl = kcalloc(dev->lps_per_blk, sizeof(int), GFP_KERNEL); + if (!dev->lptbl) + return -ENOMEM; + + /* Just a linear array */ + for (i = 0; i < dev->lps_per_blk; i++) + dev->lptbl[i] = i; + + return 0; +} + +static int nvm_init_mlc_tbl(struct nvm_dev *dev, struct nvm_id_group *grp) +{ + int i, p; + struct nvm_id_lp_mlc *mlc = &grp->lptbl.mlc; + + if (!mlc->num_pairs) + return 0; + + dev->lps_per_blk = mlc->num_pairs; + dev->lptbl = kcalloc(dev->lps_per_blk, sizeof(int), GFP_KERNEL); + if (!dev->lptbl) + return -ENOMEM; + + /* The lower page table encoding consists of a list of bytes, where each + * has a lower and an upper half. The first half byte maintains the + * increment value and every value after is an offset added to the + * previous incrementation value */ + dev->lptbl[0] = mlc->pairs[0] & 0xF; + for (i = 1; i < dev->lps_per_blk; i++) { + p = mlc->pairs[i >> 1]; + if (i & 0x1) /* upper */ + dev->lptbl[i] = dev->lptbl[i - 1] + ((p & 0xF0) >> 4); + else /* lower */ + dev->lptbl[i] = dev->lptbl[i - 1] + (p & 0xF); + } + + return 0; +} + +static int nvm_core_init(struct nvm_dev *dev) +{ + struct nvm_id *id = &dev->identity; + struct nvm_id_group *grp = &id->groups[0]; + + /* device values */ + dev->nr_chnls = grp->num_ch; + dev->luns_per_chnl = grp->num_lun; + dev->pgs_per_blk = grp->num_pg; + dev->blks_per_lun = grp->num_blk; + dev->nr_planes = grp->num_pln; + dev->sec_size = grp->csecs; + dev->oob_size = grp->sos; + dev->sec_per_pg = grp->fpg_sz / grp->csecs; + dev->mccap = grp->mccap; + memcpy(&dev->ppaf, &id->ppaf, sizeof(struct nvm_addr_format)); + + dev->plane_mode = NVM_PLANE_SINGLE; + dev->max_rq_size = dev->ops->max_phys_sect * dev->sec_size; + + if (grp->mtype != 0) { + pr_err("nvm: memory type not supported\n"); + return -EINVAL; + } + + switch (grp->fmtype) { + case NVM_ID_FMTYPE_SLC: + if (nvm_init_slc_tbl(dev, grp)) + return -ENOMEM; + break; + case NVM_ID_FMTYPE_MLC: + if (nvm_init_mlc_tbl(dev, grp)) + return -ENOMEM; + break; + default: + pr_err("nvm: flash type not supported\n"); + return -EINVAL; + } + + if (!dev->lps_per_blk) + pr_info("nvm: lower page programming table missing\n"); + + if (grp->mpos & 0x020202) + dev->plane_mode = NVM_PLANE_DOUBLE; + if (grp->mpos & 0x040404) + dev->plane_mode = NVM_PLANE_QUAD; + + /* calculated values */ + dev->sec_per_pl = dev->sec_per_pg * dev->nr_planes; + dev->sec_per_blk = dev->sec_per_pl * dev->pgs_per_blk; + dev->sec_per_lun = dev->sec_per_blk * dev->blks_per_lun; + dev->nr_luns = dev->luns_per_chnl * dev->nr_chnls; + + dev->total_blocks = dev->nr_planes * + dev->blks_per_lun * + dev->luns_per_chnl * + dev->nr_chnls; + dev->total_pages = dev->total_blocks * dev->pgs_per_blk; + INIT_LIST_HEAD(&dev->online_targets); + mutex_init(&dev->mlock); + + return 0; +} + +static void nvm_free(struct nvm_dev *dev) +{ + if (!dev) + return; + + if (dev->mt) + dev->mt->unregister_mgr(dev); + + kfree(dev->lptbl); +} + +static int nvm_init(struct nvm_dev *dev) +{ + int ret = -EINVAL; + + if (!dev->q || !dev->ops) + return ret; + + if (dev->ops->identity(dev, &dev->identity)) { + pr_err("nvm: device could not be identified\n"); + goto err; + } + + pr_debug("nvm: ver:%x nvm_vendor:%x groups:%u\n", + dev->identity.ver_id, dev->identity.vmnt, + dev->identity.cgrps); + + if (dev->identity.ver_id != 1) { + pr_err("nvm: device not supported by kernel."); + goto err; + } + + if (dev->identity.cgrps != 1) { + pr_err("nvm: only one group configuration supported."); + goto err; + } + + ret = nvm_core_init(dev); + if (ret) { + pr_err("nvm: could not initialize core structures.\n"); + goto err; + } + + pr_info("nvm: registered %s [%u/%u/%u/%u/%u/%u]\n", + dev->name, dev->sec_per_pg, dev->nr_planes, + dev->pgs_per_blk, dev->blks_per_lun, dev->nr_luns, + dev->nr_chnls); + return 0; +err: + pr_err("nvm: failed to initialize nvm\n"); + return ret; +} + +static void nvm_exit(struct nvm_dev *dev) +{ + if (dev->ppalist_pool) + dev->ops->destroy_dma_pool(dev->ppalist_pool); + nvm_free(dev); + + pr_info("nvm: successfully unloaded\n"); +} + +int nvm_register(struct request_queue *q, char *disk_name, + struct nvm_dev_ops *ops) +{ + struct nvm_dev *dev; + int ret; + + if (!ops->identity) + return -EINVAL; + + dev = kzalloc(sizeof(struct nvm_dev), GFP_KERNEL); + if (!dev) + return -ENOMEM; + + dev->q = q; + dev->ops = ops; + strncpy(dev->name, disk_name, DISK_NAME_LEN); + + ret = nvm_init(dev); + if (ret) + goto err_init; + + if (dev->ops->max_phys_sect > 256) { + pr_info("nvm: max sectors supported is 256.\n"); + ret = -EINVAL; + goto err_init; + } + + if (dev->ops->max_phys_sect > 1) { + dev->ppalist_pool = dev->ops->create_dma_pool(dev, "ppalist"); + if (!dev->ppalist_pool) { + pr_err("nvm: could not create ppa pool\n"); + ret = -ENOMEM; + goto err_init; + } + } + + if (dev->identity.cap & NVM_ID_DCAP_BBLKMGMT) { + ret = nvm_get_sysblock(dev, &dev->sb); + if (!ret) + pr_err("nvm: device not initialized.\n"); + else if (ret < 0) + pr_err("nvm: err (%d) on device initialization\n", ret); + } + + /* register device with a supported media manager */ + down_write(&nvm_lock); + if (ret > 0) + dev->mt = nvm_init_mgr(dev); + list_add(&dev->devices, &nvm_devices); + up_write(&nvm_lock); + + return 0; +err_init: + kfree(dev); + return ret; +} +EXPORT_SYMBOL(nvm_register); + +void nvm_unregister(char *disk_name) +{ + struct nvm_dev *dev; + + down_write(&nvm_lock); + dev = nvm_find_nvm_dev(disk_name); + if (!dev) { + pr_err("nvm: could not find device %s to unregister\n", + disk_name); + up_write(&nvm_lock); + return; + } + + list_del(&dev->devices); + up_write(&nvm_lock); + + nvm_exit(dev); + kfree(dev); +} +EXPORT_SYMBOL(nvm_unregister); + +static const struct block_device_operations nvm_fops = { + .owner = THIS_MODULE, +}; + +static int nvm_create_target(struct nvm_dev *dev, + struct nvm_ioctl_create *create) +{ + struct nvm_ioctl_create_simple *s = &create->conf.s; + struct request_queue *tqueue; + struct gendisk *tdisk; + struct nvm_tgt_type *tt; + struct nvm_target *t; + void *targetdata; + + if (!dev->mt) { + pr_info("nvm: device has no media manager registered.\n"); + return -ENODEV; + } + + down_write(&nvm_lock); + tt = nvm_find_target_type(create->tgttype); + if (!tt) { + pr_err("nvm: target type %s not found\n", create->tgttype); + up_write(&nvm_lock); + return -EINVAL; + } + + list_for_each_entry(t, &dev->online_targets, list) { + if (!strcmp(create->tgtname, t->disk->disk_name)) { + pr_err("nvm: target name already exists.\n"); + up_write(&nvm_lock); + return -EINVAL; + } + } + up_write(&nvm_lock); + + t = kmalloc(sizeof(struct nvm_target), GFP_KERNEL); + if (!t) + return -ENOMEM; + + tqueue = blk_alloc_queue_node(GFP_KERNEL, dev->q->node); + if (!tqueue) + goto err_t; + blk_queue_make_request(tqueue, tt->make_rq); + + tdisk = alloc_disk(0); + if (!tdisk) + goto err_queue; + + sprintf(tdisk->disk_name, "%s", create->tgtname); + tdisk->flags = GENHD_FL_EXT_DEVT; + tdisk->major = 0; + tdisk->first_minor = 0; + tdisk->fops = &nvm_fops; + tdisk->queue = tqueue; + + targetdata = tt->init(dev, tdisk, s->lun_begin, s->lun_end); + if (IS_ERR(targetdata)) + goto err_init; + + tdisk->private_data = targetdata; + tqueue->queuedata = targetdata; + + blk_queue_max_hw_sectors(tqueue, 8 * dev->ops->max_phys_sect); + + set_capacity(tdisk, tt->capacity(targetdata)); + add_disk(tdisk); + + t->type = tt; + t->disk = tdisk; + + down_write(&nvm_lock); + list_add_tail(&t->list, &dev->online_targets); + up_write(&nvm_lock); + + return 0; +err_init: + put_disk(tdisk); +err_queue: + blk_cleanup_queue(tqueue); +err_t: + kfree(t); + return -ENOMEM; +} + +static void nvm_remove_target(struct nvm_target *t) +{ + struct nvm_tgt_type *tt = t->type; + struct gendisk *tdisk = t->disk; + struct request_queue *q = tdisk->queue; + + lockdep_assert_held(&nvm_lock); + + del_gendisk(tdisk); + blk_cleanup_queue(q); + + if (tt->exit) + tt->exit(tdisk->private_data); + + put_disk(tdisk); + + list_del(&t->list); + kfree(t); +} + +static int __nvm_configure_create(struct nvm_ioctl_create *create) +{ + struct nvm_dev *dev; + struct nvm_ioctl_create_simple *s; + + down_write(&nvm_lock); + dev = nvm_find_nvm_dev(create->dev); + up_write(&nvm_lock); + if (!dev) { + pr_err("nvm: device not found\n"); + return -EINVAL; + } + + if (create->conf.type != NVM_CONFIG_TYPE_SIMPLE) { + pr_err("nvm: config type not valid\n"); + return -EINVAL; + } + s = &create->conf.s; + + if (s->lun_begin > s->lun_end || s->lun_end > dev->nr_luns) { + pr_err("nvm: lun out of bound (%u:%u > %u)\n", + s->lun_begin, s->lun_end, dev->nr_luns); + return -EINVAL; + } + + return nvm_create_target(dev, create); +} + +static int __nvm_configure_remove(struct nvm_ioctl_remove *remove) +{ + struct nvm_target *t = NULL; + struct nvm_dev *dev; + int ret = -1; + + down_write(&nvm_lock); + list_for_each_entry(dev, &nvm_devices, devices) + list_for_each_entry(t, &dev->online_targets, list) { + if (!strcmp(remove->tgtname, t->disk->disk_name)) { + nvm_remove_target(t); + ret = 0; + break; + } + } + up_write(&nvm_lock); + + if (ret) { + pr_err("nvm: target \"%s\" doesn't exist.\n", remove->tgtname); + return -EINVAL; + } + + return 0; +} + +#ifdef CONFIG_NVM_DEBUG +static int nvm_configure_show(const char *val) +{ + struct nvm_dev *dev; + char opcode, devname[DISK_NAME_LEN]; + int ret; + + ret = sscanf(val, "%c %32s", &opcode, devname); + if (ret != 2) { + pr_err("nvm: invalid command. Use \"opcode devicename\".\n"); + return -EINVAL; + } + + down_write(&nvm_lock); + dev = nvm_find_nvm_dev(devname); + up_write(&nvm_lock); + if (!dev) { + pr_err("nvm: device not found\n"); + return -EINVAL; + } + + if (!dev->mt) + return 0; + + dev->mt->lun_info_print(dev); + + return 0; +} + +static int nvm_configure_remove(const char *val) +{ + struct nvm_ioctl_remove remove; + char opcode; + int ret; + + ret = sscanf(val, "%c %256s", &opcode, remove.tgtname); + if (ret != 2) { + pr_err("nvm: invalid command. Use \"d targetname\".\n"); + return -EINVAL; + } + + remove.flags = 0; + + return __nvm_configure_remove(&remove); +} + +static int nvm_configure_create(const char *val) +{ + struct nvm_ioctl_create create; + char opcode; + int lun_begin, lun_end, ret; + + ret = sscanf(val, "%c %256s %256s %48s %u:%u", &opcode, create.dev, + create.tgtname, create.tgttype, + &lun_begin, &lun_end); + if (ret != 6) { + pr_err("nvm: invalid command. Use \"opcode device name tgttype lun_begin:lun_end\".\n"); + return -EINVAL; + } + + create.flags = 0; + create.conf.type = NVM_CONFIG_TYPE_SIMPLE; + create.conf.s.lun_begin = lun_begin; + create.conf.s.lun_end = lun_end; + + return __nvm_configure_create(&create); +} + + +/* Exposes administrative interface through /sys/module/lnvm/configure_by_str */ +static int nvm_configure_by_str_event(const char *val, + const struct kernel_param *kp) +{ + char opcode; + int ret; + + ret = sscanf(val, "%c", &opcode); + if (ret != 1) { + pr_err("nvm: string must have the format of \"cmd ...\"\n"); + return -EINVAL; + } + + switch (opcode) { + case 'a': + return nvm_configure_create(val); + case 'd': + return nvm_configure_remove(val); + case 's': + return nvm_configure_show(val); + default: + pr_err("nvm: invalid command\n"); + return -EINVAL; + } + + return 0; +} + +static int nvm_configure_get(char *buf, const struct kernel_param *kp) +{ + int sz = 0; + char *buf_start = buf; + struct nvm_dev *dev; + + buf += sprintf(buf, "available devices:\n"); + down_write(&nvm_lock); + list_for_each_entry(dev, &nvm_devices, devices) { + if (sz > 4095 - DISK_NAME_LEN) + break; + buf += sprintf(buf, " %32s\n", dev->name); + } + up_write(&nvm_lock); + + return buf - buf_start - 1; +} + +static const struct kernel_param_ops nvm_configure_by_str_event_param_ops = { + .set = nvm_configure_by_str_event, + .get = nvm_configure_get, +}; + +#undef MODULE_PARAM_PREFIX +#define MODULE_PARAM_PREFIX "lnvm." + +module_param_cb(configure_debug, &nvm_configure_by_str_event_param_ops, NULL, + 0644); + +#endif /* CONFIG_NVM_DEBUG */ + +static long nvm_ioctl_info(struct file *file, void __user *arg) +{ + struct nvm_ioctl_info *info; + struct nvm_tgt_type *tt; + int tgt_iter = 0; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + + info = memdup_user(arg, sizeof(struct nvm_ioctl_info)); + if (IS_ERR(info)) + return -EFAULT; + + info->version[0] = NVM_VERSION_MAJOR; + info->version[1] = NVM_VERSION_MINOR; + info->version[2] = NVM_VERSION_PATCH; + + down_write(&nvm_lock); + list_for_each_entry(tt, &nvm_targets, list) { + struct nvm_ioctl_info_tgt *tgt = &info->tgts[tgt_iter]; + + tgt->version[0] = tt->version[0]; + tgt->version[1] = tt->version[1]; + tgt->version[2] = tt->version[2]; + strncpy(tgt->tgtname, tt->name, NVM_TTYPE_NAME_MAX); + + tgt_iter++; + } + + info->tgtsize = tgt_iter; + up_write(&nvm_lock); + + if (copy_to_user(arg, info, sizeof(struct nvm_ioctl_info))) { + kfree(info); + return -EFAULT; + } + + kfree(info); + return 0; +} + +static long nvm_ioctl_get_devices(struct file *file, void __user *arg) +{ + struct nvm_ioctl_get_devices *devices; + struct nvm_dev *dev; + int i = 0; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + + devices = kzalloc(sizeof(struct nvm_ioctl_get_devices), GFP_KERNEL); + if (!devices) + return -ENOMEM; + + down_write(&nvm_lock); + list_for_each_entry(dev, &nvm_devices, devices) { + struct nvm_ioctl_device_info *info = &devices->info[i]; + + sprintf(info->devname, "%s", dev->name); + if (dev->mt) { + info->bmversion[0] = dev->mt->version[0]; + info->bmversion[1] = dev->mt->version[1]; + info->bmversion[2] = dev->mt->version[2]; + sprintf(info->bmname, "%s", dev->mt->name); + } else { + sprintf(info->bmname, "none"); + } + + i++; + if (i > 31) { + pr_err("nvm: max 31 devices can be reported.\n"); + break; + } + } + up_write(&nvm_lock); + + devices->nr_devices = i; + + if (copy_to_user(arg, devices, + sizeof(struct nvm_ioctl_get_devices))) { + kfree(devices); + return -EFAULT; + } + + kfree(devices); + return 0; +} + +static long nvm_ioctl_dev_create(struct file *file, void __user *arg) +{ + struct nvm_ioctl_create create; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + + if (copy_from_user(&create, arg, sizeof(struct nvm_ioctl_create))) + return -EFAULT; + + create.dev[DISK_NAME_LEN - 1] = '\0'; + create.tgttype[NVM_TTYPE_NAME_MAX - 1] = '\0'; + create.tgtname[DISK_NAME_LEN - 1] = '\0'; + + if (create.flags != 0) { + pr_err("nvm: no flags supported\n"); + return -EINVAL; + } + + return __nvm_configure_create(&create); +} + +static long nvm_ioctl_dev_remove(struct file *file, void __user *arg) +{ + struct nvm_ioctl_remove remove; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + + if (copy_from_user(&remove, arg, sizeof(struct nvm_ioctl_remove))) + return -EFAULT; + + remove.tgtname[DISK_NAME_LEN - 1] = '\0'; + + if (remove.flags != 0) { + pr_err("nvm: no flags supported\n"); + return -EINVAL; + } + + return __nvm_configure_remove(&remove); +} + +static void nvm_setup_nvm_sb_info(struct nvm_sb_info *info) +{ + info->seqnr = 1; + info->erase_cnt = 0; + info->version = 1; +} + +static long __nvm_ioctl_dev_init(struct nvm_ioctl_dev_init *init) +{ + struct nvm_dev *dev; + struct nvm_sb_info info; + int ret; + + down_write(&nvm_lock); + dev = nvm_find_nvm_dev(init->dev); + up_write(&nvm_lock); + if (!dev) { + pr_err("nvm: device not found\n"); + return -EINVAL; + } + + nvm_setup_nvm_sb_info(&info); + + strncpy(info.mmtype, init->mmtype, NVM_MMTYPE_LEN); + info.fs_ppa.ppa = -1; + + if (dev->identity.cap & NVM_ID_DCAP_BBLKMGMT) { + ret = nvm_init_sysblock(dev, &info); + if (ret) + return ret; + } + + memcpy(&dev->sb, &info, sizeof(struct nvm_sb_info)); + + down_write(&nvm_lock); + dev->mt = nvm_init_mgr(dev); + up_write(&nvm_lock); + + return 0; +} + +static long nvm_ioctl_dev_init(struct file *file, void __user *arg) +{ + struct nvm_ioctl_dev_init init; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + + if (copy_from_user(&init, arg, sizeof(struct nvm_ioctl_dev_init))) + return -EFAULT; + + if (init.flags != 0) { + pr_err("nvm: no flags supported\n"); + return -EINVAL; + } + + init.dev[DISK_NAME_LEN - 1] = '\0'; + + return __nvm_ioctl_dev_init(&init); +} + +static long nvm_ioctl_dev_factory(struct file *file, void __user *arg) +{ + struct nvm_ioctl_dev_factory fact; + struct nvm_dev *dev; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + + if (copy_from_user(&fact, arg, sizeof(struct nvm_ioctl_dev_factory))) + return -EFAULT; + + fact.dev[DISK_NAME_LEN - 1] = '\0'; + + if (fact.flags & ~(NVM_FACTORY_NR_BITS - 1)) + return -EINVAL; + + down_write(&nvm_lock); + dev = nvm_find_nvm_dev(fact.dev); + up_write(&nvm_lock); + if (!dev) { + pr_err("nvm: device not found\n"); + return -EINVAL; + } + + if (dev->mt) { + dev->mt->unregister_mgr(dev); + dev->mt = NULL; + } + + if (dev->identity.cap & NVM_ID_DCAP_BBLKMGMT) + return nvm_dev_factory(dev, fact.flags); + + return 0; +} + +static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) +{ + void __user *argp = (void __user *)arg; + + switch (cmd) { + case NVM_INFO: + return nvm_ioctl_info(file, argp); + case NVM_GET_DEVICES: + return nvm_ioctl_get_devices(file, argp); + case NVM_DEV_CREATE: + return nvm_ioctl_dev_create(file, argp); + case NVM_DEV_REMOVE: + return nvm_ioctl_dev_remove(file, argp); + case NVM_DEV_INIT: + return nvm_ioctl_dev_init(file, argp); + case NVM_DEV_FACTORY: + return nvm_ioctl_dev_factory(file, argp); + } + return 0; +} + +static const struct file_operations _ctl_fops = { + .open = nonseekable_open, + .unlocked_ioctl = nvm_ctl_ioctl, + .owner = THIS_MODULE, + .llseek = noop_llseek, +}; + +static struct miscdevice _nvm_misc = { + .minor = MISC_DYNAMIC_MINOR, + .name = "lightnvm", + .nodename = "lightnvm/control", + .fops = &_ctl_fops, +}; + +MODULE_ALIAS_MISCDEV(MISC_DYNAMIC_MINOR); + +static int __init nvm_mod_init(void) +{ + int ret; + + ret = misc_register(&_nvm_misc); + if (ret) + pr_err("nvm: misc_register failed for control device"); + + return ret; +} + +static void __exit nvm_mod_exit(void) +{ + misc_deregister(&_nvm_misc); +} + +MODULE_AUTHOR("Matias Bjorling "); +MODULE_LICENSE("GPL v2"); +MODULE_VERSION("0.1"); +module_init(nvm_mod_init); +module_exit(nvm_mod_exit); diff --git a/tools/lightnvm-v4.5.3/gennvm.c b/tools/lightnvm-v4.5.3/gennvm.c new file mode 100644 index 0000000..7fb725b --- /dev/null +++ b/tools/lightnvm-v4.5.3/gennvm.c @@ -0,0 +1,484 @@ +/* + * Copyright (C) 2015 Matias Bjorling + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, + * USA. + * + * Implementation of a generic nvm manager for Open-Channel SSDs. + */ + +#include "gennvm.h" + +static void gennvm_blocks_free(struct nvm_dev *dev) +{ + struct gen_nvm *gn = dev->mp; + struct gen_lun *lun; + int i; + + gennvm_for_each_lun(gn, lun, i) { + if (!lun->vlun.blocks) + break; + vfree(lun->vlun.blocks); + } +} + +static void gennvm_luns_free(struct nvm_dev *dev) +{ + struct gen_nvm *gn = dev->mp; + + kfree(gn->luns); +} + +static int gennvm_luns_init(struct nvm_dev *dev, struct gen_nvm *gn) +{ + struct gen_lun *lun; + int i; + + gn->luns = kcalloc(dev->nr_luns, sizeof(struct gen_lun), GFP_KERNEL); + if (!gn->luns) + return -ENOMEM; + + gennvm_for_each_lun(gn, lun, i) { + spin_lock_init(&lun->vlun.lock); + INIT_LIST_HEAD(&lun->free_list); + INIT_LIST_HEAD(&lun->used_list); + INIT_LIST_HEAD(&lun->bb_list); + + lun->reserved_blocks = 2; /* for GC only */ + lun->vlun.id = i; + lun->vlun.lun_id = i % dev->luns_per_chnl; + lun->vlun.chnl_id = i / dev->luns_per_chnl; + lun->vlun.nr_free_blocks = dev->blks_per_lun; + lun->vlun.nr_open_blocks = 0; + lun->vlun.nr_closed_blocks = 0; + lun->vlun.nr_bad_blocks = 0; + } + return 0; +} + +static int gennvm_block_bb(struct ppa_addr ppa, int nr_blocks, u8 *blks, + void *private) +{ + struct gen_nvm *gn = private; + struct nvm_dev *dev = gn->dev; + struct gen_lun *lun; + struct nvm_block *blk; + int i; + + lun = &gn->luns[(dev->luns_per_chnl * ppa.g.ch) + ppa.g.lun]; + + for (i = 0; i < nr_blocks; i++) { + if (blks[i] == 0) + continue; + + blk = &lun->vlun.blocks[i]; + if (!blk) { + pr_err("gennvm: BB data is out of bounds.\n"); + return -EINVAL; + } + + list_move_tail(&blk->list, &lun->bb_list); + lun->vlun.nr_bad_blocks++; + lun->vlun.nr_free_blocks--; + } + + return 0; +} + +static int gennvm_block_map(u64 slba, u32 nlb, __le64 *entries, void *private) +{ + struct nvm_dev *dev = private; + struct gen_nvm *gn = dev->mp; + sector_t max_pages = dev->total_pages * (dev->sec_size >> 9); + u64 elba = slba + nlb; + struct gen_lun *lun; + struct nvm_block *blk; + u64 i; + int lun_id; + + if (unlikely(elba > dev->total_pages)) { + pr_err("gennvm: L2P data from device is out of bounds!\n"); + return -EINVAL; + } + + for (i = 0; i < nlb; i++) { + u64 pba = le64_to_cpu(entries[i]); + + if (unlikely(pba >= max_pages && pba != U64_MAX)) { + pr_err("gennvm: L2P data entry is out of bounds!\n"); + return -EINVAL; + } + + /* Address zero is a special one. The first page on a disk is + * protected. It often holds internal device boot + * information. + */ + if (!pba) + continue; + + /* resolve block from physical address */ + lun_id = div_u64(pba, dev->sec_per_lun); + lun = &gn->luns[lun_id]; + + /* Calculate block offset into lun */ + pba = pba - (dev->sec_per_lun * lun_id); + blk = &lun->vlun.blocks[div_u64(pba, dev->sec_per_blk)]; + + if (!blk->state) { + /* at this point, we don't know anything about the + * block. It's up to the FTL on top to re-etablish the + * block state. The block is assumed to be open. + */ + list_move_tail(&blk->list, &lun->used_list); + blk->state = NVM_BLK_ST_OPEN; + lun->vlun.nr_free_blocks--; + lun->vlun.nr_open_blocks++; + } + } + + return 0; +} + +static int gennvm_blocks_init(struct nvm_dev *dev, struct gen_nvm *gn) +{ + struct gen_lun *lun; + struct nvm_block *block; + sector_t lun_iter, blk_iter, cur_block_id = 0; + int ret; + + gennvm_for_each_lun(gn, lun, lun_iter) { + lun->vlun.blocks = vzalloc(sizeof(struct nvm_block) * + dev->blks_per_lun); + if (!lun->vlun.blocks) + return -ENOMEM; + + for (blk_iter = 0; blk_iter < dev->blks_per_lun; blk_iter++) { + block = &lun->vlun.blocks[blk_iter]; + + INIT_LIST_HEAD(&block->list); + + block->lun = &lun->vlun; + block->id = cur_block_id++; + + /* First block is reserved for device */ + if (unlikely(lun_iter == 0 && blk_iter == 0)) { + lun->vlun.nr_free_blocks--; + continue; + } + + list_add_tail(&block->list, &lun->free_list); + } + + if (dev->ops->get_bb_tbl) { + struct ppa_addr ppa; + + ppa.ppa = 0; + ppa.g.ch = lun->vlun.chnl_id; + ppa.g.lun = lun->vlun.id; + ppa = generic_to_dev_addr(dev, ppa); + + ret = dev->ops->get_bb_tbl(dev, ppa, + dev->blks_per_lun, + gennvm_block_bb, gn); + if (ret) + pr_err("gennvm: could not read BB table\n"); + } + } + + if (dev->ops->get_l2p_tbl) { + ret = dev->ops->get_l2p_tbl(dev, 0, dev->total_pages, + gennvm_block_map, dev); + if (ret) { + pr_err("gennvm: could not read L2P table.\n"); + pr_warn("gennvm: default block initialization"); + } + } + + return 0; +} + +static void gennvm_free(struct nvm_dev *dev) +{ + gennvm_blocks_free(dev); + gennvm_luns_free(dev); + kfree(dev->mp); + dev->mp = NULL; +} + +static int gennvm_register(struct nvm_dev *dev) +{ + struct gen_nvm *gn; + int ret; + + if (!try_module_get(THIS_MODULE)) + return -ENODEV; + + gn = kzalloc(sizeof(struct gen_nvm), GFP_KERNEL); + if (!gn) + return -ENOMEM; + + gn->dev = dev; + gn->nr_luns = dev->nr_luns; + dev->mp = gn; + + ret = gennvm_luns_init(dev, gn); + if (ret) { + pr_err("gennvm: could not initialize luns\n"); + goto err; + } + + ret = gennvm_blocks_init(dev, gn); + if (ret) { + pr_err("gennvm: could not initialize blocks\n"); + goto err; + } + + return 1; +err: + gennvm_free(dev); + module_put(THIS_MODULE); + return ret; +} + +static void gennvm_unregister(struct nvm_dev *dev) +{ + gennvm_free(dev); + module_put(THIS_MODULE); +} + +static struct nvm_block *gennvm_get_blk_unlocked(struct nvm_dev *dev, + struct nvm_lun *vlun, unsigned long flags) +{ + struct gen_lun *lun = container_of(vlun, struct gen_lun, vlun); + struct nvm_block *blk = NULL; + int is_gc = flags & NVM_IOTYPE_GC; + + assert_spin_locked(&vlun->lock); + + if (list_empty(&lun->free_list)) { + pr_err_ratelimited("gennvm: lun %u have no free pages available", + lun->vlun.id); + goto out; + } + + if (!is_gc && lun->vlun.nr_free_blocks < lun->reserved_blocks) + goto out; + + blk = list_first_entry(&lun->free_list, struct nvm_block, list); + list_move_tail(&blk->list, &lun->used_list); + blk->state = NVM_BLK_ST_OPEN; + + lun->vlun.nr_free_blocks--; + lun->vlun.nr_open_blocks++; + +out: + return blk; +} + +static struct nvm_block *gennvm_get_blk(struct nvm_dev *dev, + struct nvm_lun *vlun, unsigned long flags) +{ + struct nvm_block *blk; + + spin_lock(&vlun->lock); + blk = gennvm_get_blk_unlocked(dev, vlun, flags); + spin_unlock(&vlun->lock); + return blk; +} + +static void gennvm_put_blk_unlocked(struct nvm_dev *dev, struct nvm_block *blk) +{ + struct nvm_lun *vlun = blk->lun; + struct gen_lun *lun = container_of(vlun, struct gen_lun, vlun); + + assert_spin_locked(&vlun->lock); + + if (blk->state & NVM_BLK_ST_OPEN) { + list_move_tail(&blk->list, &lun->free_list); + lun->vlun.nr_open_blocks--; + lun->vlun.nr_free_blocks++; + blk->state = NVM_BLK_ST_FREE; + } else if (blk->state & NVM_BLK_ST_CLOSED) { + list_move_tail(&blk->list, &lun->free_list); + lun->vlun.nr_closed_blocks--; + lun->vlun.nr_free_blocks++; + blk->state = NVM_BLK_ST_FREE; + } else if (blk->state & NVM_BLK_ST_BAD) { + list_move_tail(&blk->list, &lun->bb_list); + lun->vlun.nr_bad_blocks++; + blk->state = NVM_BLK_ST_BAD; + } else { + WARN_ON_ONCE(1); + pr_err("gennvm: erroneous block type (%lu -> %u)\n", + blk->id, blk->state); + list_move_tail(&blk->list, &lun->bb_list); + lun->vlun.nr_bad_blocks++; + blk->state = NVM_BLK_ST_BAD; + } +} + +static void gennvm_put_blk(struct nvm_dev *dev, struct nvm_block *blk) +{ + struct nvm_lun *vlun = blk->lun; + + spin_lock(&vlun->lock); + gennvm_put_blk_unlocked(dev, blk); + spin_unlock(&vlun->lock); +} + +static void gennvm_blk_set_type(struct nvm_dev *dev, struct ppa_addr *ppa, + int type) +{ + struct gen_nvm *gn = dev->mp; + struct gen_lun *lun; + struct nvm_block *blk; + + if (unlikely(ppa->g.ch > dev->nr_chnls || + ppa->g.lun > dev->luns_per_chnl || + ppa->g.blk > dev->blks_per_lun)) { + WARN_ON_ONCE(1); + pr_err("gennvm: ppa broken (ch: %u > %u lun: %u > %u blk: %u > %u", + ppa->g.ch, dev->nr_chnls, + ppa->g.lun, dev->luns_per_chnl, + ppa->g.blk, dev->blks_per_lun); + return; + } + + lun = &gn->luns[ppa->g.lun * ppa->g.ch]; + blk = &lun->vlun.blocks[ppa->g.blk]; + + /* will be moved to bb list on put_blk from target */ + blk->state = type; +} + +/* mark block bad. It is expected the target recover from the error. */ +static void gennvm_mark_blk_bad(struct nvm_dev *dev, struct nvm_rq *rqd) +{ + int i; + + if (!dev->ops->set_bb_tbl) + return; + + if (dev->ops->set_bb_tbl(dev, rqd, 1)) + return; + + nvm_addr_to_generic_mode(dev, rqd); + + /* look up blocks and mark them as bad */ + if (rqd->nr_pages > 1) + for (i = 0; i < rqd->nr_pages; i++) + gennvm_blk_set_type(dev, &rqd->ppa_list[i], + NVM_BLK_ST_BAD); + else + gennvm_blk_set_type(dev, &rqd->ppa_addr, NVM_BLK_ST_BAD); +} + +static void gennvm_end_io(struct nvm_rq *rqd) +{ + struct nvm_tgt_instance *ins = rqd->ins; + + switch (rqd->error) { + case NVM_RSP_SUCCESS: + case NVM_RSP_ERR_EMPTYPAGE: + break; + case NVM_RSP_ERR_FAILWRITE: + gennvm_mark_blk_bad(rqd->dev, rqd); + } + + ins->tt->end_io(rqd); +} + +static int gennvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd) +{ + if (!dev->ops->submit_io) + return -ENODEV; + + /* Convert address space */ + nvm_generic_to_addr_mode(dev, rqd); + + rqd->dev = dev; + rqd->end_io = gennvm_end_io; + return dev->ops->submit_io(dev, rqd); +} + +static int gennvm_erase_blk(struct nvm_dev *dev, struct nvm_block *blk, + unsigned long flags) +{ + struct ppa_addr addr = block_to_ppa(dev, blk); + + return nvm_erase_ppa(dev, &addr, 1); +} + +static struct nvm_lun *gennvm_get_lun(struct nvm_dev *dev, int lunid) +{ + struct gen_nvm *gn = dev->mp; + + return &gn->luns[lunid].vlun; +} + +static void gennvm_lun_info_print(struct nvm_dev *dev) +{ + struct gen_nvm *gn = dev->mp; + struct gen_lun *lun; + unsigned int i; + + + gennvm_for_each_lun(gn, lun, i) { + spin_lock(&lun->vlun.lock); + + pr_info("%s: lun%8u\t%u\t%u\t%u\t%u\n", + dev->name, i, + lun->vlun.nr_free_blocks, + lun->vlun.nr_open_blocks, + lun->vlun.nr_closed_blocks, + lun->vlun.nr_bad_blocks); + + spin_unlock(&lun->vlun.lock); + } +} + +static struct nvmm_type gennvm = { + .name = "gennvm", + .version = {0, 1, 0}, + + .register_mgr = gennvm_register, + .unregister_mgr = gennvm_unregister, + + .get_blk_unlocked = gennvm_get_blk_unlocked, + .put_blk_unlocked = gennvm_put_blk_unlocked, + + .get_blk = gennvm_get_blk, + .put_blk = gennvm_put_blk, + + .submit_io = gennvm_submit_io, + .erase_blk = gennvm_erase_blk, + + .get_lun = gennvm_get_lun, + .lun_info_print = gennvm_lun_info_print, +}; + +static int __init gennvm_module_init(void) +{ + return nvm_register_mgr(&gennvm); +} + +static void gennvm_module_exit(void) +{ + nvm_unregister_mgr(&gennvm); +} + +module_init(gennvm_module_init); +module_exit(gennvm_module_exit); +MODULE_LICENSE("GPL v2"); +MODULE_DESCRIPTION("Generic media manager for Open-Channel SSDs"); diff --git a/tools/lightnvm-v4.5.3/gennvm.h b/tools/lightnvm-v4.5.3/gennvm.h new file mode 100644 index 0000000..9c24b5b --- /dev/null +++ b/tools/lightnvm-v4.5.3/gennvm.h @@ -0,0 +1,48 @@ +/* + * Copyright: Matias Bjorling + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + */ + +#ifndef GENNVM_H_ +#define GENNVM_H_ + +#include +#include + +#include + +struct gen_lun { + struct nvm_lun vlun; + + int reserved_blocks; + /* lun block lists */ + struct list_head used_list; /* In-use blocks */ + struct list_head free_list; /* Not used blocks i.e. released + * and ready for use + */ + struct list_head bb_list; /* Bad blocks. Mutually exclusive with + * free_list and used_list + */ +}; + +struct gen_nvm { + struct nvm_dev *dev; + + int nr_luns; + struct gen_lun *luns; +}; + +#define gennvm_for_each_lun(bm, lun, i) \ + for ((i) = 0, lun = &(bm)->luns[0]; \ + (i) < (bm)->nr_luns; (i)++, lun = &(bm)->luns[(i)]) + +#endif /* GENNVM_H_ */ diff --git a/tools/lightnvm-v4.5.3/rrpc.c b/tools/lightnvm-v4.5.3/rrpc.c new file mode 100644 index 0000000..307db1e --- /dev/null +++ b/tools/lightnvm-v4.5.3/rrpc.c @@ -0,0 +1,1425 @@ +/* + * Copyright (C) 2015 IT University of Copenhagen + * Initial release: Matias Bjorling + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * Implementation of a Round-robin page-based Hybrid FTL for Open-channel SSDs. + */ + +#include "rrpc.h" + +static struct kmem_cache *rrpc_gcb_cache, *rrpc_rq_cache; +static DECLARE_RWSEM(rrpc_lock); + +static int rrpc_submit_io(struct rrpc *rrpc, struct bio *bio, + struct nvm_rq *rqd, unsigned long flags); + +#define rrpc_for_each_lun(rrpc, rlun, i) \ + for ((i) = 0, rlun = &(rrpc)->luns[0]; \ + (i) < (rrpc)->nr_luns; (i)++, rlun = &(rrpc)->luns[(i)]) + +static void rrpc_page_invalidate(struct rrpc *rrpc, struct rrpc_addr *a) +{ + struct rrpc_block *rblk = a->rblk; + unsigned int pg_offset; + + lockdep_assert_held(&rrpc->rev_lock); + + if (a->addr == ADDR_EMPTY || !rblk) + return; + + spin_lock(&rblk->lock); + + div_u64_rem(a->addr, rrpc->dev->pgs_per_blk, &pg_offset); + WARN_ON(test_and_set_bit(pg_offset, rblk->invalid_pages)); + rblk->nr_invalid_pages++; + + spin_unlock(&rblk->lock); + + rrpc->rev_trans_map[a->addr - rrpc->poffset].addr = ADDR_EMPTY; +} + +static void rrpc_invalidate_range(struct rrpc *rrpc, sector_t slba, + unsigned len) +{ + sector_t i; + + spin_lock(&rrpc->rev_lock); + for (i = slba; i < slba + len; i++) { + struct rrpc_addr *gp = &rrpc->trans_map[i]; + + rrpc_page_invalidate(rrpc, gp); + gp->rblk = NULL; + } + spin_unlock(&rrpc->rev_lock); +} + +static struct nvm_rq *rrpc_inflight_laddr_acquire(struct rrpc *rrpc, + sector_t laddr, unsigned int pages) +{ + struct nvm_rq *rqd; + struct rrpc_inflight_rq *inf; + + rqd = mempool_alloc(rrpc->rq_pool, GFP_ATOMIC); + if (!rqd) + return ERR_PTR(-ENOMEM); + + inf = rrpc_get_inflight_rq(rqd); + if (rrpc_lock_laddr(rrpc, laddr, pages, inf)) { + mempool_free(rqd, rrpc->rq_pool); + return NULL; + } + + return rqd; +} + +static void rrpc_inflight_laddr_release(struct rrpc *rrpc, struct nvm_rq *rqd) +{ + struct rrpc_inflight_rq *inf = rrpc_get_inflight_rq(rqd); + + rrpc_unlock_laddr(rrpc, inf); + + mempool_free(rqd, rrpc->rq_pool); +} + +static void rrpc_discard(struct rrpc *rrpc, struct bio *bio) +{ + sector_t slba = bio->bi_iter.bi_sector / NR_PHY_IN_LOG; + sector_t len = bio->bi_iter.bi_size / RRPC_EXPOSED_PAGE_SIZE; + struct nvm_rq *rqd; + + do { + rqd = rrpc_inflight_laddr_acquire(rrpc, slba, len); + schedule(); + } while (!rqd); + + if (IS_ERR(rqd)) { + pr_err("rrpc: unable to acquire inflight IO\n"); + bio_io_error(bio); + return; + } + + rrpc_invalidate_range(rrpc, slba, len); + rrpc_inflight_laddr_release(rrpc, rqd); +} + +static int block_is_full(struct rrpc *rrpc, struct rrpc_block *rblk) +{ + return (rblk->next_page == rrpc->dev->pgs_per_blk); +} + +static u64 block_to_addr(struct rrpc *rrpc, struct rrpc_block *rblk) +{ + struct nvm_block *blk = rblk->parent; + + return blk->id * rrpc->dev->pgs_per_blk; +} + +static struct ppa_addr linear_to_generic_addr(struct nvm_dev *dev, + struct ppa_addr r) +{ + struct ppa_addr l; + int secs, pgs, blks, luns; + sector_t ppa = r.ppa; + + l.ppa = 0; + + div_u64_rem(ppa, dev->sec_per_pg, &secs); + l.g.sec = secs; + + sector_div(ppa, dev->sec_per_pg); + div_u64_rem(ppa, dev->sec_per_blk, &pgs); + l.g.pg = pgs; + + sector_div(ppa, dev->pgs_per_blk); + div_u64_rem(ppa, dev->blks_per_lun, &blks); + l.g.blk = blks; + + sector_div(ppa, dev->blks_per_lun); + div_u64_rem(ppa, dev->luns_per_chnl, &luns); + l.g.lun = luns; + + sector_div(ppa, dev->luns_per_chnl); + l.g.ch = ppa; + + return l; +} + +static struct ppa_addr rrpc_ppa_to_gaddr(struct nvm_dev *dev, u64 addr) +{ + struct ppa_addr paddr; + + paddr.ppa = addr; + return linear_to_generic_addr(dev, paddr); +} + +/* requires lun->lock taken */ +static void rrpc_set_lun_cur(struct rrpc_lun *rlun, struct rrpc_block *rblk) +{ + struct rrpc *rrpc = rlun->rrpc; + + BUG_ON(!rblk); + + if (rlun->cur) { + spin_lock(&rlun->cur->lock); + WARN_ON(!block_is_full(rrpc, rlun->cur)); + spin_unlock(&rlun->cur->lock); + } + rlun->cur = rblk; +} + +static struct rrpc_block *rrpc_get_blk(struct rrpc *rrpc, struct rrpc_lun *rlun, + unsigned long flags) +{ + struct nvm_lun *lun = rlun->parent; + struct nvm_block *blk; + struct rrpc_block *rblk; + + spin_lock(&lun->lock); + blk = nvm_get_blk_unlocked(rrpc->dev, rlun->parent, flags); + if (!blk) { + pr_err("nvm: rrpc: cannot get new block from media manager\n"); + spin_unlock(&lun->lock); + return NULL; + } + + rblk = &rlun->blocks[blk->id]; + list_add_tail(&rblk->list, &rlun->open_list); + spin_unlock(&lun->lock); + + blk->priv = rblk; + bitmap_zero(rblk->invalid_pages, rrpc->dev->pgs_per_blk); + rblk->next_page = 0; + rblk->nr_invalid_pages = 0; + atomic_set(&rblk->data_cmnt_size, 0); + + return rblk; +} + +static void rrpc_put_blk(struct rrpc *rrpc, struct rrpc_block *rblk) +{ + struct rrpc_lun *rlun = rblk->rlun; + struct nvm_lun *lun = rlun->parent; + + spin_lock(&lun->lock); + nvm_put_blk_unlocked(rrpc->dev, rblk->parent); + list_del(&rblk->list); + spin_unlock(&lun->lock); +} + +static void rrpc_put_blks(struct rrpc *rrpc) +{ + struct rrpc_lun *rlun; + int i; + + for (i = 0; i < rrpc->nr_luns; i++) { + rlun = &rrpc->luns[i]; + if (rlun->cur) + rrpc_put_blk(rrpc, rlun->cur); + if (rlun->gc_cur) + rrpc_put_blk(rrpc, rlun->gc_cur); + } +} + +static struct rrpc_lun *get_next_lun(struct rrpc *rrpc) +{ + int next = atomic_inc_return(&rrpc->next_lun); + + return &rrpc->luns[next % rrpc->nr_luns]; +} + +static void rrpc_gc_kick(struct rrpc *rrpc) +{ + struct rrpc_lun *rlun; + unsigned int i; + + for (i = 0; i < rrpc->nr_luns; i++) { + rlun = &rrpc->luns[i]; + queue_work(rrpc->krqd_wq, &rlun->ws_gc); + } +} + +/* + * timed GC every interval. + */ +static void rrpc_gc_timer(unsigned long data) +{ + struct rrpc *rrpc = (struct rrpc *)data; + + rrpc_gc_kick(rrpc); + mod_timer(&rrpc->gc_timer, jiffies + msecs_to_jiffies(10)); +} + +static void rrpc_end_sync_bio(struct bio *bio) +{ + struct completion *waiting = bio->bi_private; + + if (bio->bi_error) + pr_err("nvm: gc request failed (%u).\n", bio->bi_error); + + complete(waiting); +} + +/* + * rrpc_move_valid_pages -- migrate live data off the block + * @rrpc: the 'rrpc' structure + * @block: the block from which to migrate live pages + * + * Description: + * GC algorithms may call this function to migrate remaining live + * pages off the block prior to erasing it. This function blocks + * further execution until the operation is complete. + */ +static int rrpc_move_valid_pages(struct rrpc *rrpc, struct rrpc_block *rblk) +{ + struct request_queue *q = rrpc->dev->q; + struct rrpc_rev_addr *rev; + struct nvm_rq *rqd; + struct bio *bio; + struct page *page; + int slot; + int nr_pgs_per_blk = rrpc->dev->pgs_per_blk; + u64 phys_addr; + DECLARE_COMPLETION_ONSTACK(wait); + + if (bitmap_full(rblk->invalid_pages, nr_pgs_per_blk)) + return 0; + + bio = bio_alloc(GFP_NOIO, 1); + if (!bio) { + pr_err("nvm: could not alloc bio to gc\n"); + return -ENOMEM; + } + + page = mempool_alloc(rrpc->page_pool, GFP_NOIO); + if (!page) { + bio_put(bio); + return -ENOMEM; + } + + while ((slot = find_first_zero_bit(rblk->invalid_pages, + nr_pgs_per_blk)) < nr_pgs_per_blk) { + + /* Lock laddr */ + phys_addr = (rblk->parent->id * nr_pgs_per_blk) + slot; + +try: + spin_lock(&rrpc->rev_lock); + /* Get logical address from physical to logical table */ + rev = &rrpc->rev_trans_map[phys_addr - rrpc->poffset]; + /* already updated by previous regular write */ + if (rev->addr == ADDR_EMPTY) { + spin_unlock(&rrpc->rev_lock); + continue; + } + + rqd = rrpc_inflight_laddr_acquire(rrpc, rev->addr, 1); + if (IS_ERR_OR_NULL(rqd)) { + spin_unlock(&rrpc->rev_lock); + schedule(); + goto try; + } + + spin_unlock(&rrpc->rev_lock); + + /* Perform read to do GC */ + bio->bi_iter.bi_sector = rrpc_get_sector(rev->addr); + bio->bi_rw = READ; + bio->bi_private = &wait; + bio->bi_end_io = rrpc_end_sync_bio; + + /* TODO: may fail when EXP_PG_SIZE > PAGE_SIZE */ + bio_add_pc_page(q, bio, page, RRPC_EXPOSED_PAGE_SIZE, 0); + + if (rrpc_submit_io(rrpc, bio, rqd, NVM_IOTYPE_GC)) { + pr_err("rrpc: gc read failed.\n"); + rrpc_inflight_laddr_release(rrpc, rqd); + goto finished; + } + wait_for_completion_io(&wait); + if (bio->bi_error) { + rrpc_inflight_laddr_release(rrpc, rqd); + goto finished; + } + + bio_reset(bio); + reinit_completion(&wait); + + bio->bi_iter.bi_sector = rrpc_get_sector(rev->addr); + bio->bi_rw = WRITE; + bio->bi_private = &wait; + bio->bi_end_io = rrpc_end_sync_bio; + + bio_add_pc_page(q, bio, page, RRPC_EXPOSED_PAGE_SIZE, 0); + + /* turn the command around and write the data back to a new + * address + */ + if (rrpc_submit_io(rrpc, bio, rqd, NVM_IOTYPE_GC)) { + pr_err("rrpc: gc write failed.\n"); + rrpc_inflight_laddr_release(rrpc, rqd); + goto finished; + } + wait_for_completion_io(&wait); + + rrpc_inflight_laddr_release(rrpc, rqd); + if (bio->bi_error) + goto finished; + + bio_reset(bio); + } + +finished: + mempool_free(page, rrpc->page_pool); + bio_put(bio); + + if (!bitmap_full(rblk->invalid_pages, nr_pgs_per_blk)) { + pr_err("nvm: failed to garbage collect block\n"); + return -EIO; + } + + return 0; +} + +static void rrpc_block_gc(struct work_struct *work) +{ + struct rrpc_block_gc *gcb = container_of(work, struct rrpc_block_gc, + ws_gc); + struct rrpc *rrpc = gcb->rrpc; + struct rrpc_block *rblk = gcb->rblk; + struct nvm_dev *dev = rrpc->dev; + struct nvm_lun *lun = rblk->parent->lun; + struct rrpc_lun *rlun = &rrpc->luns[lun->id - rrpc->lun_offset]; + + mempool_free(gcb, rrpc->gcb_pool); + pr_debug("nvm: block '%lu' being reclaimed\n", rblk->parent->id); + + if (rrpc_move_valid_pages(rrpc, rblk)) + goto put_back; + + if (nvm_erase_blk(dev, rblk->parent)) + goto put_back; + + rrpc_put_blk(rrpc, rblk); + + return; + +put_back: + spin_lock(&rlun->lock); + list_add_tail(&rblk->prio, &rlun->prio_list); + spin_unlock(&rlun->lock); +} + +/* the block with highest number of invalid pages, will be in the beginning + * of the list + */ +static struct rrpc_block *rblock_max_invalid(struct rrpc_block *ra, + struct rrpc_block *rb) +{ + if (ra->nr_invalid_pages == rb->nr_invalid_pages) + return ra; + + return (ra->nr_invalid_pages < rb->nr_invalid_pages) ? rb : ra; +} + +/* linearly find the block with highest number of invalid pages + * requires lun->lock + */ +static struct rrpc_block *block_prio_find_max(struct rrpc_lun *rlun) +{ + struct list_head *prio_list = &rlun->prio_list; + struct rrpc_block *rblock, *max; + + BUG_ON(list_empty(prio_list)); + + max = list_first_entry(prio_list, struct rrpc_block, prio); + list_for_each_entry(rblock, prio_list, prio) + max = rblock_max_invalid(max, rblock); + + return max; +} + +static void rrpc_lun_gc(struct work_struct *work) +{ + struct rrpc_lun *rlun = container_of(work, struct rrpc_lun, ws_gc); + struct rrpc *rrpc = rlun->rrpc; + struct nvm_lun *lun = rlun->parent; + struct rrpc_block_gc *gcb; + unsigned int nr_blocks_need; + + nr_blocks_need = rrpc->dev->blks_per_lun / GC_LIMIT_INVERSE; + + if (nr_blocks_need < rrpc->nr_luns) + nr_blocks_need = rrpc->nr_luns; + + spin_lock(&rlun->lock); + while (nr_blocks_need > lun->nr_free_blocks && + !list_empty(&rlun->prio_list)) { + struct rrpc_block *rblock = block_prio_find_max(rlun); + struct nvm_block *block = rblock->parent; + + if (!rblock->nr_invalid_pages) + break; + + gcb = mempool_alloc(rrpc->gcb_pool, GFP_ATOMIC); + if (!gcb) + break; + + list_del_init(&rblock->prio); + + BUG_ON(!block_is_full(rrpc, rblock)); + + pr_debug("rrpc: selected block '%lu' for GC\n", block->id); + + gcb->rrpc = rrpc; + gcb->rblk = rblock; + INIT_WORK(&gcb->ws_gc, rrpc_block_gc); + + queue_work(rrpc->kgc_wq, &gcb->ws_gc); + + nr_blocks_need--; + } + spin_unlock(&rlun->lock); + + /* TODO: Hint that request queue can be started again */ +} + +static void rrpc_gc_queue(struct work_struct *work) +{ + struct rrpc_block_gc *gcb = container_of(work, struct rrpc_block_gc, + ws_gc); + struct rrpc *rrpc = gcb->rrpc; + struct rrpc_block *rblk = gcb->rblk; + struct nvm_lun *lun = rblk->parent->lun; + struct rrpc_lun *rlun = &rrpc->luns[lun->id - rrpc->lun_offset]; + + spin_lock(&rlun->lock); + list_add_tail(&rblk->prio, &rlun->prio_list); + spin_unlock(&rlun->lock); + + mempool_free(gcb, rrpc->gcb_pool); + pr_debug("nvm: block '%lu' is full, allow GC (sched)\n", + rblk->parent->id); +} + +static const struct block_device_operations rrpc_fops = { + .owner = THIS_MODULE, +}; + +static struct rrpc_lun *rrpc_get_lun_rr(struct rrpc *rrpc, int is_gc) +{ + unsigned int i; + struct rrpc_lun *rlun, *max_free; + + if (!is_gc) + return get_next_lun(rrpc); + + /* during GC, we don't care about RR, instead we want to make + * sure that we maintain evenness between the block luns. + */ + max_free = &rrpc->luns[0]; + /* prevent GC-ing lun from devouring pages of a lun with + * little free blocks. We don't take the lock as we only need an + * estimate. + */ + rrpc_for_each_lun(rrpc, rlun, i) { + if (rlun->parent->nr_free_blocks > + max_free->parent->nr_free_blocks) + max_free = rlun; + } + + return max_free; +} + +static struct rrpc_addr *rrpc_update_map(struct rrpc *rrpc, sector_t laddr, + struct rrpc_block *rblk, u64 paddr) +{ + struct rrpc_addr *gp; + struct rrpc_rev_addr *rev; + + BUG_ON(laddr >= rrpc->nr_pages); + + gp = &rrpc->trans_map[laddr]; + spin_lock(&rrpc->rev_lock); + if (gp->rblk) + rrpc_page_invalidate(rrpc, gp); + + gp->addr = paddr; + gp->rblk = rblk; + + rev = &rrpc->rev_trans_map[gp->addr - rrpc->poffset]; + rev->addr = laddr; + spin_unlock(&rrpc->rev_lock); + + return gp; +} + +static u64 rrpc_alloc_addr(struct rrpc *rrpc, struct rrpc_block *rblk) +{ + u64 addr = ADDR_EMPTY; + + spin_lock(&rblk->lock); + if (block_is_full(rrpc, rblk)) + goto out; + + addr = block_to_addr(rrpc, rblk) + rblk->next_page; + + rblk->next_page++; +out: + spin_unlock(&rblk->lock); + return addr; +} + +/* Simple round-robin Logical to physical address translation. + * + * Retrieve the mapping using the active append point. Then update the ap for + * the next write to the disk. + * + * Returns rrpc_addr with the physical address and block. Remember to return to + * rrpc->addr_cache when request is finished. + */ +static struct rrpc_addr *rrpc_map_page(struct rrpc *rrpc, sector_t laddr, + int is_gc) +{ + struct rrpc_lun *rlun; + struct rrpc_block *rblk; + struct nvm_lun *lun; + u64 paddr; + + rlun = rrpc_get_lun_rr(rrpc, is_gc); + lun = rlun->parent; + + if (!is_gc && lun->nr_free_blocks < rrpc->nr_luns * 4) + return NULL; + + spin_lock(&rlun->lock); + + rblk = rlun->cur; +retry: + paddr = rrpc_alloc_addr(rrpc, rblk); + + if (paddr == ADDR_EMPTY) { + rblk = rrpc_get_blk(rrpc, rlun, 0); + if (rblk) { + rrpc_set_lun_cur(rlun, rblk); + goto retry; + } + + if (is_gc) { + /* retry from emergency gc block */ + paddr = rrpc_alloc_addr(rrpc, rlun->gc_cur); + if (paddr == ADDR_EMPTY) { + rblk = rrpc_get_blk(rrpc, rlun, 1); + if (!rblk) { + pr_err("rrpc: no more blocks"); + goto err; + } + + rlun->gc_cur = rblk; + paddr = rrpc_alloc_addr(rrpc, rlun->gc_cur); + } + rblk = rlun->gc_cur; + } + } + + spin_unlock(&rlun->lock); + return rrpc_update_map(rrpc, laddr, rblk, paddr); +err: + spin_unlock(&rlun->lock); + return NULL; +} + +static void rrpc_run_gc(struct rrpc *rrpc, struct rrpc_block *rblk) +{ + struct rrpc_block_gc *gcb; + + gcb = mempool_alloc(rrpc->gcb_pool, GFP_ATOMIC); + if (!gcb) { + pr_err("rrpc: unable to queue block for gc."); + return; + } + + gcb->rrpc = rrpc; + gcb->rblk = rblk; + + INIT_WORK(&gcb->ws_gc, rrpc_gc_queue); + queue_work(rrpc->kgc_wq, &gcb->ws_gc); +} + +static void rrpc_end_io_write(struct rrpc *rrpc, struct rrpc_rq *rrqd, + sector_t laddr, uint8_t npages) +{ + struct rrpc_addr *p; + struct rrpc_block *rblk; + struct nvm_lun *lun; + int cmnt_size, i; + + for (i = 0; i < npages; i++) { + p = &rrpc->trans_map[laddr + i]; + rblk = p->rblk; + lun = rblk->parent->lun; + + cmnt_size = atomic_inc_return(&rblk->data_cmnt_size); + if (unlikely(cmnt_size == rrpc->dev->pgs_per_blk)) { + struct nvm_block *blk = rblk->parent; + struct rrpc_lun *rlun = rblk->rlun; + + spin_lock(&lun->lock); + lun->nr_open_blocks--; + lun->nr_closed_blocks++; + blk->state &= ~NVM_BLK_ST_OPEN; + blk->state |= NVM_BLK_ST_CLOSED; + list_move_tail(&rblk->list, &rlun->closed_list); + spin_unlock(&lun->lock); + + rrpc_run_gc(rrpc, rblk); + } + } +} + +static void rrpc_end_io(struct nvm_rq *rqd) +{ + struct rrpc *rrpc = container_of(rqd->ins, struct rrpc, instance); + struct rrpc_rq *rrqd = nvm_rq_to_pdu(rqd); + uint8_t npages = rqd->nr_pages; + sector_t laddr = rrpc_get_laddr(rqd->bio) - npages; + + if (bio_data_dir(rqd->bio) == WRITE) + rrpc_end_io_write(rrpc, rrqd, laddr, npages); + + bio_put(rqd->bio); + + if (rrqd->flags & NVM_IOTYPE_GC) + return; + + rrpc_unlock_rq(rrpc, rqd); + + if (npages > 1) + nvm_dev_dma_free(rrpc->dev, rqd->ppa_list, rqd->dma_ppa_list); + if (rqd->metadata) + nvm_dev_dma_free(rrpc->dev, rqd->metadata, rqd->dma_metadata); + + mempool_free(rqd, rrpc->rq_pool); +} + +static int rrpc_read_ppalist_rq(struct rrpc *rrpc, struct bio *bio, + struct nvm_rq *rqd, unsigned long flags, int npages) +{ + struct rrpc_inflight_rq *r = rrpc_get_inflight_rq(rqd); + struct rrpc_addr *gp; + sector_t laddr = rrpc_get_laddr(bio); + int is_gc = flags & NVM_IOTYPE_GC; + int i; + + if (!is_gc && rrpc_lock_rq(rrpc, bio, rqd)) { + nvm_dev_dma_free(rrpc->dev, rqd->ppa_list, rqd->dma_ppa_list); + return NVM_IO_REQUEUE; + } + + for (i = 0; i < npages; i++) { + /* We assume that mapping occurs at 4KB granularity */ + BUG_ON(!(laddr + i >= 0 && laddr + i < rrpc->nr_pages)); + gp = &rrpc->trans_map[laddr + i]; + + if (gp->rblk) { + rqd->ppa_list[i] = rrpc_ppa_to_gaddr(rrpc->dev, + gp->addr); + } else { + BUG_ON(is_gc); + rrpc_unlock_laddr(rrpc, r); + nvm_dev_dma_free(rrpc->dev, rqd->ppa_list, + rqd->dma_ppa_list); + return NVM_IO_DONE; + } + } + + rqd->opcode = NVM_OP_HBREAD; + + return NVM_IO_OK; +} + +static int rrpc_read_rq(struct rrpc *rrpc, struct bio *bio, struct nvm_rq *rqd, + unsigned long flags) +{ + struct rrpc_rq *rrqd = nvm_rq_to_pdu(rqd); + int is_gc = flags & NVM_IOTYPE_GC; + sector_t laddr = rrpc_get_laddr(bio); + struct rrpc_addr *gp; + + if (!is_gc && rrpc_lock_rq(rrpc, bio, rqd)) + return NVM_IO_REQUEUE; + + BUG_ON(!(laddr >= 0 && laddr < rrpc->nr_pages)); + gp = &rrpc->trans_map[laddr]; + + if (gp->rblk) { + rqd->ppa_addr = rrpc_ppa_to_gaddr(rrpc->dev, gp->addr); + } else { + BUG_ON(is_gc); + rrpc_unlock_rq(rrpc, rqd); + return NVM_IO_DONE; + } + + rqd->opcode = NVM_OP_HBREAD; + rrqd->addr = gp; + + return NVM_IO_OK; +} + +static int rrpc_write_ppalist_rq(struct rrpc *rrpc, struct bio *bio, + struct nvm_rq *rqd, unsigned long flags, int npages) +{ + struct rrpc_inflight_rq *r = rrpc_get_inflight_rq(rqd); + struct rrpc_addr *p; + sector_t laddr = rrpc_get_laddr(bio); + int is_gc = flags & NVM_IOTYPE_GC; + int i; + + if (!is_gc && rrpc_lock_rq(rrpc, bio, rqd)) { + nvm_dev_dma_free(rrpc->dev, rqd->ppa_list, rqd->dma_ppa_list); + return NVM_IO_REQUEUE; + } + + for (i = 0; i < npages; i++) { + /* We assume that mapping occurs at 4KB granularity */ + p = rrpc_map_page(rrpc, laddr + i, is_gc); + if (!p) { + BUG_ON(is_gc); + rrpc_unlock_laddr(rrpc, r); + nvm_dev_dma_free(rrpc->dev, rqd->ppa_list, + rqd->dma_ppa_list); + rrpc_gc_kick(rrpc); + return NVM_IO_REQUEUE; + } + + rqd->ppa_list[i] = rrpc_ppa_to_gaddr(rrpc->dev, + p->addr); + } + + rqd->opcode = NVM_OP_HBWRITE; + + return NVM_IO_OK; +} + +static int rrpc_write_rq(struct rrpc *rrpc, struct bio *bio, + struct nvm_rq *rqd, unsigned long flags) +{ + struct rrpc_rq *rrqd = nvm_rq_to_pdu(rqd); + struct rrpc_addr *p; + int is_gc = flags & NVM_IOTYPE_GC; + sector_t laddr = rrpc_get_laddr(bio); + + if (!is_gc && rrpc_lock_rq(rrpc, bio, rqd)) + return NVM_IO_REQUEUE; + + p = rrpc_map_page(rrpc, laddr, is_gc); + if (!p) { + BUG_ON(is_gc); + rrpc_unlock_rq(rrpc, rqd); + rrpc_gc_kick(rrpc); + return NVM_IO_REQUEUE; + } + + rqd->ppa_addr = rrpc_ppa_to_gaddr(rrpc->dev, p->addr); + rqd->opcode = NVM_OP_HBWRITE; + rrqd->addr = p; + + return NVM_IO_OK; +} + +static int rrpc_setup_rq(struct rrpc *rrpc, struct bio *bio, + struct nvm_rq *rqd, unsigned long flags, uint8_t npages) +{ + if (npages > 1) { + rqd->ppa_list = nvm_dev_dma_alloc(rrpc->dev, GFP_KERNEL, + &rqd->dma_ppa_list); + if (!rqd->ppa_list) { + pr_err("rrpc: not able to allocate ppa list\n"); + return NVM_IO_ERR; + } + + if (bio_rw(bio) == WRITE) + return rrpc_write_ppalist_rq(rrpc, bio, rqd, flags, + npages); + + return rrpc_read_ppalist_rq(rrpc, bio, rqd, flags, npages); + } + + if (bio_rw(bio) == WRITE) + return rrpc_write_rq(rrpc, bio, rqd, flags); + + return rrpc_read_rq(rrpc, bio, rqd, flags); +} + +static int rrpc_submit_io(struct rrpc *rrpc, struct bio *bio, + struct nvm_rq *rqd, unsigned long flags) +{ + int err; + struct rrpc_rq *rrq = nvm_rq_to_pdu(rqd); + uint8_t nr_pages = rrpc_get_pages(bio); + int bio_size = bio_sectors(bio) << 9; + + if (bio_size < rrpc->dev->sec_size) + return NVM_IO_ERR; + else if (bio_size > rrpc->dev->max_rq_size) + return NVM_IO_ERR; + + err = rrpc_setup_rq(rrpc, bio, rqd, flags, nr_pages); + if (err) + return err; + + bio_get(bio); + rqd->bio = bio; + rqd->ins = &rrpc->instance; + rqd->nr_pages = nr_pages; + rrq->flags = flags; + + err = nvm_submit_io(rrpc->dev, rqd); + if (err) { + pr_err("rrpc: I/O submission failed: %d\n", err); + bio_put(bio); + if (!(flags & NVM_IOTYPE_GC)) { + rrpc_unlock_rq(rrpc, rqd); + if (rqd->nr_pages > 1) + nvm_dev_dma_free(rrpc->dev, + rqd->ppa_list, rqd->dma_ppa_list); + } + return NVM_IO_ERR; + } + + return NVM_IO_OK; +} + +static blk_qc_t rrpc_make_rq(struct request_queue *q, struct bio *bio) +{ + struct rrpc *rrpc = q->queuedata; + struct nvm_rq *rqd; + int err; + + if (bio->bi_rw & REQ_DISCARD) { + rrpc_discard(rrpc, bio); + return BLK_QC_T_NONE; + } + + rqd = mempool_alloc(rrpc->rq_pool, GFP_KERNEL); + if (!rqd) { + pr_err_ratelimited("rrpc: not able to queue bio."); + bio_io_error(bio); + return BLK_QC_T_NONE; + } + memset(rqd, 0, sizeof(struct nvm_rq)); + + err = rrpc_submit_io(rrpc, bio, rqd, NVM_IOTYPE_NONE); + switch (err) { + case NVM_IO_OK: + return BLK_QC_T_NONE; + case NVM_IO_ERR: + bio_io_error(bio); + break; + case NVM_IO_DONE: + bio_endio(bio); + break; + case NVM_IO_REQUEUE: + spin_lock(&rrpc->bio_lock); + bio_list_add(&rrpc->requeue_bios, bio); + spin_unlock(&rrpc->bio_lock); + queue_work(rrpc->kgc_wq, &rrpc->ws_requeue); + break; + } + + mempool_free(rqd, rrpc->rq_pool); + return BLK_QC_T_NONE; +} + +static void rrpc_requeue(struct work_struct *work) +{ + struct rrpc *rrpc = container_of(work, struct rrpc, ws_requeue); + struct bio_list bios; + struct bio *bio; + + bio_list_init(&bios); + + spin_lock(&rrpc->bio_lock); + bio_list_merge(&bios, &rrpc->requeue_bios); + bio_list_init(&rrpc->requeue_bios); + spin_unlock(&rrpc->bio_lock); + + while ((bio = bio_list_pop(&bios))) + rrpc_make_rq(rrpc->disk->queue, bio); +} + +static void rrpc_gc_free(struct rrpc *rrpc) +{ + struct rrpc_lun *rlun; + int i; + + if (rrpc->krqd_wq) + destroy_workqueue(rrpc->krqd_wq); + + if (rrpc->kgc_wq) + destroy_workqueue(rrpc->kgc_wq); + + if (!rrpc->luns) + return; + + for (i = 0; i < rrpc->nr_luns; i++) { + rlun = &rrpc->luns[i]; + + if (!rlun->blocks) + break; + vfree(rlun->blocks); + } +} + +static int rrpc_gc_init(struct rrpc *rrpc) +{ + rrpc->krqd_wq = alloc_workqueue("rrpc-lun", WQ_MEM_RECLAIM|WQ_UNBOUND, + rrpc->nr_luns); + if (!rrpc->krqd_wq) + return -ENOMEM; + + rrpc->kgc_wq = alloc_workqueue("rrpc-bg", WQ_MEM_RECLAIM, 1); + if (!rrpc->kgc_wq) + return -ENOMEM; + + setup_timer(&rrpc->gc_timer, rrpc_gc_timer, (unsigned long)rrpc); + + return 0; +} + +static void rrpc_map_free(struct rrpc *rrpc) +{ + vfree(rrpc->rev_trans_map); + vfree(rrpc->trans_map); +} + +static int rrpc_l2p_update(u64 slba, u32 nlb, __le64 *entries, void *private) +{ + struct rrpc *rrpc = (struct rrpc *)private; + struct nvm_dev *dev = rrpc->dev; + struct rrpc_addr *addr = rrpc->trans_map + slba; + struct rrpc_rev_addr *raddr = rrpc->rev_trans_map; + sector_t max_pages = dev->total_pages * (dev->sec_size >> 9); + u64 elba = slba + nlb; + u64 i; + + if (unlikely(elba > dev->total_pages)) { + pr_err("nvm: L2P data from device is out of bounds!\n"); + return -EINVAL; + } + + for (i = 0; i < nlb; i++) { + u64 pba = le64_to_cpu(entries[i]); + /* LNVM treats address-spaces as silos, LBA and PBA are + * equally large and zero-indexed. + */ + if (unlikely(pba >= max_pages && pba != U64_MAX)) { + pr_err("nvm: L2P data entry is out of bounds!\n"); + return -EINVAL; + } + + /* Address zero is a special one. The first page on a disk is + * protected. As it often holds internal device boot + * information. + */ + if (!pba) + continue; + + addr[i].addr = pba; + raddr[pba].addr = slba + i; + } + + return 0; +} + +static int rrpc_map_init(struct rrpc *rrpc) +{ + struct nvm_dev *dev = rrpc->dev; + sector_t i; + int ret; + + rrpc->trans_map = vzalloc(sizeof(struct rrpc_addr) * rrpc->nr_pages); + if (!rrpc->trans_map) + return -ENOMEM; + + rrpc->rev_trans_map = vmalloc(sizeof(struct rrpc_rev_addr) + * rrpc->nr_pages); + if (!rrpc->rev_trans_map) + return -ENOMEM; + + for (i = 0; i < rrpc->nr_pages; i++) { + struct rrpc_addr *p = &rrpc->trans_map[i]; + struct rrpc_rev_addr *r = &rrpc->rev_trans_map[i]; + + p->addr = ADDR_EMPTY; + r->addr = ADDR_EMPTY; + } + + if (!dev->ops->get_l2p_tbl) + return 0; + + /* Bring up the mapping table from device */ + ret = dev->ops->get_l2p_tbl(dev, 0, dev->total_pages, + rrpc_l2p_update, rrpc); + if (ret) { + pr_err("nvm: rrpc: could not read L2P table.\n"); + return -EINVAL; + } + + return 0; +} + + +/* Minimum pages needed within a lun */ +#define PAGE_POOL_SIZE 16 +#define ADDR_POOL_SIZE 64 + +static int rrpc_core_init(struct rrpc *rrpc) +{ + down_write(&rrpc_lock); + if (!rrpc_gcb_cache) { + rrpc_gcb_cache = kmem_cache_create("rrpc_gcb", + sizeof(struct rrpc_block_gc), 0, 0, NULL); + if (!rrpc_gcb_cache) { + up_write(&rrpc_lock); + return -ENOMEM; + } + + rrpc_rq_cache = kmem_cache_create("rrpc_rq", + sizeof(struct nvm_rq) + sizeof(struct rrpc_rq), + 0, 0, NULL); + if (!rrpc_rq_cache) { + kmem_cache_destroy(rrpc_gcb_cache); + up_write(&rrpc_lock); + return -ENOMEM; + } + } + up_write(&rrpc_lock); + + rrpc->page_pool = mempool_create_page_pool(PAGE_POOL_SIZE, 0); + if (!rrpc->page_pool) + return -ENOMEM; + + rrpc->gcb_pool = mempool_create_slab_pool(rrpc->dev->nr_luns, + rrpc_gcb_cache); + if (!rrpc->gcb_pool) + return -ENOMEM; + + rrpc->rq_pool = mempool_create_slab_pool(64, rrpc_rq_cache); + if (!rrpc->rq_pool) + return -ENOMEM; + + spin_lock_init(&rrpc->inflights.lock); + INIT_LIST_HEAD(&rrpc->inflights.reqs); + + return 0; +} + +static void rrpc_core_free(struct rrpc *rrpc) +{ + mempool_destroy(rrpc->page_pool); + mempool_destroy(rrpc->gcb_pool); + mempool_destroy(rrpc->rq_pool); +} + +static void rrpc_luns_free(struct rrpc *rrpc) +{ + kfree(rrpc->luns); +} + +static int rrpc_luns_init(struct rrpc *rrpc, int lun_begin, int lun_end) +{ + struct nvm_dev *dev = rrpc->dev; + struct rrpc_lun *rlun; + int i, j; + + if (dev->pgs_per_blk > MAX_INVALID_PAGES_STORAGE * BITS_PER_LONG) { + pr_err("rrpc: number of pages per block too high."); + return -EINVAL; + } + + spin_lock_init(&rrpc->rev_lock); + + rrpc->luns = kcalloc(rrpc->nr_luns, sizeof(struct rrpc_lun), + GFP_KERNEL); + if (!rrpc->luns) + return -ENOMEM; + + /* 1:1 mapping */ + for (i = 0; i < rrpc->nr_luns; i++) { + struct nvm_lun *lun = dev->mt->get_lun(dev, lun_begin + i); + + rlun = &rrpc->luns[i]; + rlun->rrpc = rrpc; + rlun->parent = lun; + INIT_LIST_HEAD(&rlun->prio_list); + INIT_LIST_HEAD(&rlun->open_list); + INIT_LIST_HEAD(&rlun->closed_list); + + INIT_WORK(&rlun->ws_gc, rrpc_lun_gc); + spin_lock_init(&rlun->lock); + + rrpc->total_blocks += dev->blks_per_lun; + rrpc->nr_pages += dev->sec_per_lun; + + rlun->blocks = vzalloc(sizeof(struct rrpc_block) * + rrpc->dev->blks_per_lun); + if (!rlun->blocks) + goto err; + + for (j = 0; j < rrpc->dev->blks_per_lun; j++) { + struct rrpc_block *rblk = &rlun->blocks[j]; + struct nvm_block *blk = &lun->blocks[j]; + + rblk->parent = blk; + rblk->rlun = rlun; + INIT_LIST_HEAD(&rblk->prio); + spin_lock_init(&rblk->lock); + } + } + + return 0; +err: + return -ENOMEM; +} + +static void rrpc_free(struct rrpc *rrpc) +{ + rrpc_gc_free(rrpc); + rrpc_map_free(rrpc); + rrpc_core_free(rrpc); + rrpc_luns_free(rrpc); + + kfree(rrpc); +} + +static void rrpc_exit(void *private) +{ + struct rrpc *rrpc = private; + + del_timer(&rrpc->gc_timer); + + flush_workqueue(rrpc->krqd_wq); + flush_workqueue(rrpc->kgc_wq); + + rrpc_free(rrpc); +} + +static sector_t rrpc_capacity(void *private) +{ + struct rrpc *rrpc = private; + struct nvm_dev *dev = rrpc->dev; + sector_t reserved, provisioned; + + /* cur, gc, and two emergency blocks for each lun */ + reserved = rrpc->nr_luns * dev->max_pages_per_blk * 4; + provisioned = rrpc->nr_pages - reserved; + + if (reserved > rrpc->nr_pages) { + pr_err("rrpc: not enough space available to expose storage.\n"); + return 0; + } + + sector_div(provisioned, 10); + return provisioned * 9 * NR_PHY_IN_LOG; +} + +/* + * Looks up the logical address from reverse trans map and check if its valid by + * comparing the logical to physical address with the physical address. + * Returns 0 on free, otherwise 1 if in use + */ +static void rrpc_block_map_update(struct rrpc *rrpc, struct rrpc_block *rblk) +{ + struct nvm_dev *dev = rrpc->dev; + int offset; + struct rrpc_addr *laddr; + u64 paddr, pladdr; + + for (offset = 0; offset < dev->pgs_per_blk; offset++) { + paddr = block_to_addr(rrpc, rblk) + offset; + + pladdr = rrpc->rev_trans_map[paddr].addr; + if (pladdr == ADDR_EMPTY) + continue; + + laddr = &rrpc->trans_map[pladdr]; + + if (paddr == laddr->addr) { + laddr->rblk = rblk; + } else { + set_bit(offset, rblk->invalid_pages); + rblk->nr_invalid_pages++; + } + } +} + +static int rrpc_blocks_init(struct rrpc *rrpc) +{ + struct rrpc_lun *rlun; + struct rrpc_block *rblk; + int lun_iter, blk_iter; + + for (lun_iter = 0; lun_iter < rrpc->nr_luns; lun_iter++) { + rlun = &rrpc->luns[lun_iter]; + + for (blk_iter = 0; blk_iter < rrpc->dev->blks_per_lun; + blk_iter++) { + rblk = &rlun->blocks[blk_iter]; + rrpc_block_map_update(rrpc, rblk); + } + } + + return 0; +} + +static int rrpc_luns_configure(struct rrpc *rrpc) +{ + struct rrpc_lun *rlun; + struct rrpc_block *rblk; + int i; + + for (i = 0; i < rrpc->nr_luns; i++) { + rlun = &rrpc->luns[i]; + + rblk = rrpc_get_blk(rrpc, rlun, 0); + if (!rblk) + goto err; + + rrpc_set_lun_cur(rlun, rblk); + + /* Emergency gc block */ + rblk = rrpc_get_blk(rrpc, rlun, 1); + if (!rblk) + goto err; + rlun->gc_cur = rblk; + } + + return 0; +err: + rrpc_put_blks(rrpc); + return -EINVAL; +} + +static struct nvm_tgt_type tt_rrpc; + +static void *rrpc_init(struct nvm_dev *dev, struct gendisk *tdisk, + int lun_begin, int lun_end) +{ + struct request_queue *bqueue = dev->q; + struct request_queue *tqueue = tdisk->queue; + struct rrpc *rrpc; + int ret; + + if (!(dev->identity.dom & NVM_RSP_L2P)) { + pr_err("nvm: rrpc: device does not support l2p (%x)\n", + dev->identity.dom); + return ERR_PTR(-EINVAL); + } + + rrpc = kzalloc(sizeof(struct rrpc), GFP_KERNEL); + if (!rrpc) + return ERR_PTR(-ENOMEM); + + rrpc->instance.tt = &tt_rrpc; + rrpc->dev = dev; + rrpc->disk = tdisk; + + bio_list_init(&rrpc->requeue_bios); + spin_lock_init(&rrpc->bio_lock); + INIT_WORK(&rrpc->ws_requeue, rrpc_requeue); + + rrpc->nr_luns = lun_end - lun_begin + 1; + + /* simple round-robin strategy */ + atomic_set(&rrpc->next_lun, -1); + + ret = rrpc_luns_init(rrpc, lun_begin, lun_end); + if (ret) { + pr_err("nvm: rrpc: could not initialize luns\n"); + goto err; + } + + rrpc->poffset = dev->sec_per_lun * lun_begin; + rrpc->lun_offset = lun_begin; + + ret = rrpc_core_init(rrpc); + if (ret) { + pr_err("nvm: rrpc: could not initialize core\n"); + goto err; + } + + ret = rrpc_map_init(rrpc); + if (ret) { + pr_err("nvm: rrpc: could not initialize maps\n"); + goto err; + } + + ret = rrpc_blocks_init(rrpc); + if (ret) { + pr_err("nvm: rrpc: could not initialize state for blocks\n"); + goto err; + } + + ret = rrpc_luns_configure(rrpc); + if (ret) { + pr_err("nvm: rrpc: not enough blocks available in LUNs.\n"); + goto err; + } + + ret = rrpc_gc_init(rrpc); + if (ret) { + pr_err("nvm: rrpc: could not initialize gc\n"); + goto err; + } + + /* inherit the size from the underlying device */ + blk_queue_logical_block_size(tqueue, queue_physical_block_size(bqueue)); + blk_queue_max_hw_sectors(tqueue, queue_max_hw_sectors(bqueue)); + + pr_info("nvm: rrpc initialized with %u luns and %llu pages.\n", + rrpc->nr_luns, (unsigned long long)rrpc->nr_pages); + + mod_timer(&rrpc->gc_timer, jiffies + msecs_to_jiffies(10)); + + return rrpc; +err: + rrpc_free(rrpc); + return ERR_PTR(ret); +} + +/* round robin, page-based FTL, and cost-based GC */ +static struct nvm_tgt_type tt_rrpc = { + .name = "rrpc", + .version = {1, 0, 0}, + + .make_rq = rrpc_make_rq, + .capacity = rrpc_capacity, + .end_io = rrpc_end_io, + + .init = rrpc_init, + .exit = rrpc_exit, +}; + +static int __init rrpc_module_init(void) +{ + return nvm_register_target(&tt_rrpc); +} + +static void rrpc_module_exit(void) +{ + nvm_unregister_target(&tt_rrpc); +} + +module_init(rrpc_module_init); +module_exit(rrpc_module_exit); +MODULE_LICENSE("GPL v2"); +MODULE_DESCRIPTION("Block-Device Target for Open-Channel SSDs"); diff --git a/tools/lightnvm-v4.5.3/rrpc.h b/tools/lightnvm-v4.5.3/rrpc.h new file mode 100644 index 0000000..f7b3733 --- /dev/null +++ b/tools/lightnvm-v4.5.3/rrpc.h @@ -0,0 +1,251 @@ +/* + * Copyright (C) 2015 IT University of Copenhagen + * Initial release: Matias Bjorling + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * Implementation of a Round-robin page-based Hybrid FTL for Open-channel SSDs. + */ + +#ifndef RRPC_H_ +#define RRPC_H_ + +#include +#include +#include +#include +#include +#include + +#include + +/* Run only GC if less than 1/X blocks are free */ +#define GC_LIMIT_INVERSE 10 +#define GC_TIME_SECS 100 + +#define RRPC_SECTOR (512) +#define RRPC_EXPOSED_PAGE_SIZE (4096) + +#define NR_PHY_IN_LOG (RRPC_EXPOSED_PAGE_SIZE / RRPC_SECTOR) + +struct rrpc_inflight { + struct list_head reqs; + spinlock_t lock; +}; + +struct rrpc_inflight_rq { + struct list_head list; + sector_t l_start; + sector_t l_end; +}; + +struct rrpc_rq { + struct rrpc_inflight_rq inflight_rq; + struct rrpc_addr *addr; + unsigned long flags; +}; + +struct rrpc_block { + struct nvm_block *parent; + struct rrpc_lun *rlun; + struct list_head prio; + struct list_head list; + +#define MAX_INVALID_PAGES_STORAGE 8 + /* Bitmap for invalid page intries */ + unsigned long invalid_pages[MAX_INVALID_PAGES_STORAGE]; + /* points to the next writable page within a block */ + unsigned int next_page; + /* number of pages that are invalid, wrt host page size */ + unsigned int nr_invalid_pages; + + spinlock_t lock; + atomic_t data_cmnt_size; /* data pages committed to stable storage */ +}; + +struct rrpc_lun { + struct rrpc *rrpc; + struct nvm_lun *parent; + struct rrpc_block *cur, *gc_cur; + struct rrpc_block *blocks; /* Reference to block allocation */ + + struct list_head prio_list; /* Blocks that may be GC'ed */ + struct list_head open_list; /* In-use open blocks. These are blocks + * that can be both written to and read + * from + */ + struct list_head closed_list; /* In-use closed blocks. These are + * blocks that can _only_ be read from + */ + + struct work_struct ws_gc; + + spinlock_t lock; +}; + +struct rrpc { + /* instance must be kept in top to resolve rrpc in unprep */ + struct nvm_tgt_instance instance; + + struct nvm_dev *dev; + struct gendisk *disk; + + u64 poffset; /* physical page offset */ + int lun_offset; + + int nr_luns; + struct rrpc_lun *luns; + + /* calculated values */ + unsigned long long nr_pages; + unsigned long total_blocks; + + /* Write strategy variables. Move these into each for structure for each + * strategy + */ + atomic_t next_lun; /* Whenever a page is written, this is updated + * to point to the next write lun + */ + + spinlock_t bio_lock; + struct bio_list requeue_bios; + struct work_struct ws_requeue; + + /* Simple translation map of logical addresses to physical addresses. + * The logical addresses is known by the host system, while the physical + * addresses are used when writing to the disk block device. + */ + struct rrpc_addr *trans_map; + /* also store a reverse map for garbage collection */ + struct rrpc_rev_addr *rev_trans_map; + spinlock_t rev_lock; + + struct rrpc_inflight inflights; + + mempool_t *addr_pool; + mempool_t *page_pool; + mempool_t *gcb_pool; + mempool_t *rq_pool; + + struct timer_list gc_timer; + struct workqueue_struct *krqd_wq; + struct workqueue_struct *kgc_wq; +}; + +struct rrpc_block_gc { + struct rrpc *rrpc; + struct rrpc_block *rblk; + struct work_struct ws_gc; +}; + +/* Logical to physical mapping */ +struct rrpc_addr { + u64 addr; + struct rrpc_block *rblk; +}; + +/* Physical to logical mapping */ +struct rrpc_rev_addr { + u64 addr; +}; + +static inline sector_t rrpc_get_laddr(struct bio *bio) +{ + return bio->bi_iter.bi_sector / NR_PHY_IN_LOG; +} + +static inline unsigned int rrpc_get_pages(struct bio *bio) +{ + return bio->bi_iter.bi_size / RRPC_EXPOSED_PAGE_SIZE; +} + +static inline sector_t rrpc_get_sector(sector_t laddr) +{ + return laddr * NR_PHY_IN_LOG; +} + +static inline int request_intersects(struct rrpc_inflight_rq *r, + sector_t laddr_start, sector_t laddr_end) +{ + return (laddr_end >= r->l_start) && (laddr_start <= r->l_end); +} + +static int __rrpc_lock_laddr(struct rrpc *rrpc, sector_t laddr, + unsigned pages, struct rrpc_inflight_rq *r) +{ + sector_t laddr_end = laddr + pages - 1; + struct rrpc_inflight_rq *rtmp; + + WARN_ON(irqs_disabled()); + + spin_lock_irq(&rrpc->inflights.lock); + list_for_each_entry(rtmp, &rrpc->inflights.reqs, list) { + if (unlikely(request_intersects(rtmp, laddr, laddr_end))) { + /* existing, overlapping request, come back later */ + spin_unlock_irq(&rrpc->inflights.lock); + return 1; + } + } + + r->l_start = laddr; + r->l_end = laddr_end; + + list_add_tail(&r->list, &rrpc->inflights.reqs); + spin_unlock_irq(&rrpc->inflights.lock); + return 0; +} + +static inline int rrpc_lock_laddr(struct rrpc *rrpc, sector_t laddr, + unsigned pages, + struct rrpc_inflight_rq *r) +{ + BUG_ON((laddr + pages) > rrpc->nr_pages); + + return __rrpc_lock_laddr(rrpc, laddr, pages, r); +} + +static inline struct rrpc_inflight_rq *rrpc_get_inflight_rq(struct nvm_rq *rqd) +{ + struct rrpc_rq *rrqd = nvm_rq_to_pdu(rqd); + + return &rrqd->inflight_rq; +} + +static inline int rrpc_lock_rq(struct rrpc *rrpc, struct bio *bio, + struct nvm_rq *rqd) +{ + sector_t laddr = rrpc_get_laddr(bio); + unsigned int pages = rrpc_get_pages(bio); + struct rrpc_inflight_rq *r = rrpc_get_inflight_rq(rqd); + + return rrpc_lock_laddr(rrpc, laddr, pages, r); +} + +static inline void rrpc_unlock_laddr(struct rrpc *rrpc, + struct rrpc_inflight_rq *r) +{ + unsigned long flags; + + spin_lock_irqsave(&rrpc->inflights.lock, flags); + list_del_init(&r->list); + spin_unlock_irqrestore(&rrpc->inflights.lock, flags); +} + +static inline void rrpc_unlock_rq(struct rrpc *rrpc, struct nvm_rq *rqd) +{ + struct rrpc_inflight_rq *r = rrpc_get_inflight_rq(rqd); + uint8_t pages = rqd->nr_pages; + + BUG_ON((r->l_start + pages) > rrpc->nr_pages); + + rrpc_unlock_laddr(rrpc, r); +} + +#endif /* RRPC_H_ */ diff --git a/tools/lightnvm-v4.5.3/sysblk.c b/tools/lightnvm-v4.5.3/sysblk.c new file mode 100644 index 0000000..321de1f --- /dev/null +++ b/tools/lightnvm-v4.5.3/sysblk.c @@ -0,0 +1,741 @@ +/* + * Copyright (C) 2015 Matias Bjorling. All rights reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, + * USA. + * + */ + +#include + +#define MAX_SYSBLKS 3 /* remember to update mapping scheme on change */ +#define MAX_BLKS_PR_SYSBLK 2 /* 2 blks with 256 pages and 3000 erases + * enables ~1.5M updates per sysblk unit + */ + +struct sysblk_scan { + /* A row is a collection of flash blocks for a system block. */ + int nr_rows; + int row; + int act_blk[MAX_SYSBLKS]; + + int nr_ppas; + struct ppa_addr ppas[MAX_SYSBLKS * MAX_BLKS_PR_SYSBLK];/* all sysblks */ +}; + +static inline int scan_ppa_idx(int row, int blkid) +{ + return (row * MAX_BLKS_PR_SYSBLK) + blkid; +} + +void nvm_sysblk_to_cpu(struct nvm_sb_info *info, struct nvm_system_block *sb) +{ + info->seqnr = be32_to_cpu(sb->seqnr); + info->erase_cnt = be32_to_cpu(sb->erase_cnt); + info->version = be16_to_cpu(sb->version); + strncpy(info->mmtype, sb->mmtype, NVM_MMTYPE_LEN); + info->fs_ppa.ppa = be64_to_cpu(sb->fs_ppa); +} + +void nvm_cpu_to_sysblk(struct nvm_system_block *sb, struct nvm_sb_info *info) +{ + sb->magic = cpu_to_be32(NVM_SYSBLK_MAGIC); + sb->seqnr = cpu_to_be32(info->seqnr); + sb->erase_cnt = cpu_to_be32(info->erase_cnt); + sb->version = cpu_to_be16(info->version); + strncpy(sb->mmtype, info->mmtype, NVM_MMTYPE_LEN); + sb->fs_ppa = cpu_to_be64(info->fs_ppa.ppa); +} + +static int nvm_setup_sysblks(struct nvm_dev *dev, struct ppa_addr *sysblk_ppas) +{ + int nr_rows = min_t(int, MAX_SYSBLKS, dev->nr_chnls); + int i; + + for (i = 0; i < nr_rows; i++) + sysblk_ppas[i].ppa = 0; + + /* if possible, place sysblk at first channel, middle channel and last + * channel of the device. If not, create only one or two sys blocks + */ + switch (dev->nr_chnls) { + case 2: + sysblk_ppas[1].g.ch = 1; + /* fall-through */ + case 1: + sysblk_ppas[0].g.ch = 0; + break; + default: + sysblk_ppas[0].g.ch = 0; + sysblk_ppas[1].g.ch = dev->nr_chnls / 2; + sysblk_ppas[2].g.ch = dev->nr_chnls - 1; + break; + } + + return nr_rows; +} + +void nvm_setup_sysblk_scan(struct nvm_dev *dev, struct sysblk_scan *s, + struct ppa_addr *sysblk_ppas) +{ + memset(s, 0, sizeof(struct sysblk_scan)); + s->nr_rows = nvm_setup_sysblks(dev, sysblk_ppas); +} + +static int sysblk_get_host_blks(struct ppa_addr ppa, int nr_blks, u8 *blks, + void *private) +{ + struct sysblk_scan *s = private; + int i, nr_sysblk = 0; + + for (i = 0; i < nr_blks; i++) { + if (blks[i] != NVM_BLK_T_HOST) + continue; + + if (s->nr_ppas == MAX_BLKS_PR_SYSBLK * MAX_SYSBLKS) { + pr_err("nvm: too many host blks\n"); + return -EINVAL; + } + + ppa.g.blk = i; + + s->ppas[scan_ppa_idx(s->row, nr_sysblk)] = ppa; + s->nr_ppas++; + nr_sysblk++; + } + + return 0; +} + +static int nvm_get_all_sysblks(struct nvm_dev *dev, struct sysblk_scan *s, + struct ppa_addr *ppas, nvm_bb_update_fn *fn) +{ + struct ppa_addr dppa; + int i, ret; + + s->nr_ppas = 0; + + for (i = 0; i < s->nr_rows; i++) { + dppa = generic_to_dev_addr(dev, ppas[i]); + s->row = i; + + ret = dev->ops->get_bb_tbl(dev, dppa, dev->blks_per_lun, fn, s); + if (ret) { + pr_err("nvm: failed bb tbl for ppa (%u %u)\n", + ppas[i].g.ch, + ppas[i].g.blk); + return ret; + } + } + + return ret; +} + +/* + * scans a block for latest sysblk. + * Returns: + * 0 - newer sysblk not found. PPA is updated to latest page. + * 1 - newer sysblk found and stored in *cur. PPA is updated to + * next valid page. + * <0- error. + */ +static int nvm_scan_block(struct nvm_dev *dev, struct ppa_addr *ppa, + struct nvm_system_block *sblk) +{ + struct nvm_system_block *cur; + int pg, cursz, ret, found = 0; + + /* the full buffer for a flash page is allocated. Only the first of it + * contains the system block information + */ + cursz = dev->sec_size * dev->sec_per_pg * dev->nr_planes; + cur = kmalloc(cursz, GFP_KERNEL); + if (!cur) + return -ENOMEM; + + /* perform linear scan through the block */ + for (pg = 0; pg < dev->lps_per_blk; pg++) { + ppa->g.pg = ppa_to_slc(dev, pg); + + ret = nvm_submit_ppa(dev, ppa, 1, NVM_OP_PREAD, NVM_IO_SLC_MODE, + cur, cursz); + if (ret) { + if (ret == NVM_RSP_ERR_EMPTYPAGE) { + pr_debug("nvm: sysblk scan empty ppa (%u %u %u %u)\n", + ppa->g.ch, + ppa->g.lun, + ppa->g.blk, + ppa->g.pg); + break; + } + pr_err("nvm: read failed (%x) for ppa (%u %u %u %u)", + ret, + ppa->g.ch, + ppa->g.lun, + ppa->g.blk, + ppa->g.pg); + break; /* if we can't read a page, continue to the + * next blk + */ + } + + if (be32_to_cpu(cur->magic) != NVM_SYSBLK_MAGIC) { + pr_debug("nvm: scan break for ppa (%u %u %u %u)\n", + ppa->g.ch, + ppa->g.lun, + ppa->g.blk, + ppa->g.pg); + break; /* last valid page already found */ + } + + if (be32_to_cpu(cur->seqnr) < be32_to_cpu(sblk->seqnr)) + continue; + + memcpy(sblk, cur, sizeof(struct nvm_system_block)); + found = 1; + } + + kfree(cur); + + return found; +} + +static int nvm_set_bb_tbl(struct nvm_dev *dev, struct sysblk_scan *s, int type) +{ + struct nvm_rq rqd; + int ret; + + if (s->nr_ppas > dev->ops->max_phys_sect) { + pr_err("nvm: unable to update all sysblocks atomically\n"); + return -EINVAL; + } + + memset(&rqd, 0, sizeof(struct nvm_rq)); + + nvm_set_rqd_ppalist(dev, &rqd, s->ppas, s->nr_ppas); + nvm_generic_to_addr_mode(dev, &rqd); + + ret = dev->ops->set_bb_tbl(dev, &rqd, type); + nvm_free_rqd_ppalist(dev, &rqd); + if (ret) { + pr_err("nvm: sysblk failed bb mark\n"); + return -EINVAL; + } + + return 0; +} + +static int sysblk_get_free_blks(struct ppa_addr ppa, int nr_blks, u8 *blks, + void *private) +{ + struct sysblk_scan *s = private; + struct ppa_addr *sppa; + int i, blkid = 0; + + for (i = 0; i < nr_blks; i++) { + if (blks[i] == NVM_BLK_T_HOST) + return -EEXIST; + + if (blks[i] != NVM_BLK_T_FREE) + continue; + + sppa = &s->ppas[scan_ppa_idx(s->row, blkid)]; + sppa->g.ch = ppa.g.ch; + sppa->g.lun = ppa.g.lun; + sppa->g.blk = i; + s->nr_ppas++; + blkid++; + + pr_debug("nvm: use (%u %u %u) as sysblk\n", + sppa->g.ch, sppa->g.lun, sppa->g.blk); + if (blkid > MAX_BLKS_PR_SYSBLK - 1) + return 0; + } + + pr_err("nvm: sysblk failed get sysblk\n"); + return -EINVAL; +} + +static int nvm_write_and_verify(struct nvm_dev *dev, struct nvm_sb_info *info, + struct sysblk_scan *s) +{ + struct nvm_system_block nvmsb; + void *buf; + int i, sect, ret, bufsz; + struct ppa_addr *ppas; + + nvm_cpu_to_sysblk(&nvmsb, info); + + /* buffer for flash page */ + bufsz = dev->sec_size * dev->sec_per_pg * dev->nr_planes; + buf = kzalloc(bufsz, GFP_KERNEL); + if (!buf) + return -ENOMEM; + memcpy(buf, &nvmsb, sizeof(struct nvm_system_block)); + + ppas = kcalloc(dev->sec_per_pg, sizeof(struct ppa_addr), GFP_KERNEL); + if (!ppas) { + ret = -ENOMEM; + goto err; + } + + /* Write and verify */ + for (i = 0; i < s->nr_rows; i++) { + ppas[0] = s->ppas[scan_ppa_idx(i, s->act_blk[i])]; + + pr_debug("nvm: writing sysblk to ppa (%u %u %u %u)\n", + ppas[0].g.ch, + ppas[0].g.lun, + ppas[0].g.blk, + ppas[0].g.pg); + + /* Expand to all sectors within a flash page */ + if (dev->sec_per_pg > 1) { + for (sect = 1; sect < dev->sec_per_pg; sect++) { + ppas[sect].ppa = ppas[0].ppa; + ppas[sect].g.sec = sect; + } + } + + ret = nvm_submit_ppa(dev, ppas, dev->sec_per_pg, NVM_OP_PWRITE, + NVM_IO_SLC_MODE, buf, bufsz); + if (ret) { + pr_err("nvm: sysblk failed program (%u %u %u)\n", + ppas[0].g.ch, + ppas[0].g.lun, + ppas[0].g.blk); + break; + } + + ret = nvm_submit_ppa(dev, ppas, dev->sec_per_pg, NVM_OP_PREAD, + NVM_IO_SLC_MODE, buf, bufsz); + if (ret) { + pr_err("nvm: sysblk failed read (%u %u %u)\n", + ppas[0].g.ch, + ppas[0].g.lun, + ppas[0].g.blk); + break; + } + + if (memcmp(buf, &nvmsb, sizeof(struct nvm_system_block))) { + pr_err("nvm: sysblk failed verify (%u %u %u)\n", + ppas[0].g.ch, + ppas[0].g.lun, + ppas[0].g.blk); + ret = -EINVAL; + break; + } + } + + kfree(ppas); +err: + kfree(buf); + + return ret; +} + +static int nvm_prepare_new_sysblks(struct nvm_dev *dev, struct sysblk_scan *s) +{ + int i, ret; + unsigned long nxt_blk; + struct ppa_addr *ppa; + + for (i = 0; i < s->nr_rows; i++) { + nxt_blk = (s->act_blk[i] + 1) % MAX_BLKS_PR_SYSBLK; + ppa = &s->ppas[scan_ppa_idx(i, nxt_blk)]; + ppa->g.pg = ppa_to_slc(dev, 0); + + ret = nvm_erase_ppa(dev, ppa, 1); + if (ret) + return ret; + + s->act_blk[i] = nxt_blk; + } + + return 0; +} + +int nvm_get_sysblock(struct nvm_dev *dev, struct nvm_sb_info *info) +{ + struct ppa_addr sysblk_ppas[MAX_SYSBLKS]; + struct sysblk_scan s; + struct nvm_system_block *cur; + int i, j, found = 0; + int ret = -ENOMEM; + + /* + * 1. setup sysblk locations + * 2. get bad block list + * 3. filter on host-specific (type 3) + * 4. iterate through all and find the highest seq nr. + * 5. return superblock information + */ + + if (!dev->ops->get_bb_tbl) + return -EINVAL; + + nvm_setup_sysblk_scan(dev, &s, sysblk_ppas); + + mutex_lock(&dev->mlock); + ret = nvm_get_all_sysblks(dev, &s, sysblk_ppas, sysblk_get_host_blks); + if (ret) + goto err_sysblk; + + /* no sysblocks initialized */ + if (!s.nr_ppas) + goto err_sysblk; + + cur = kzalloc(sizeof(struct nvm_system_block), GFP_KERNEL); + if (!cur) + goto err_sysblk; + + /* find the latest block across all sysblocks */ + for (i = 0; i < s.nr_rows; i++) { + for (j = 0; j < MAX_BLKS_PR_SYSBLK; j++) { + struct ppa_addr ppa = s.ppas[scan_ppa_idx(i, j)]; + + ret = nvm_scan_block(dev, &ppa, cur); + if (ret > 0) + found = 1; + else if (ret < 0) + break; + } + } + + nvm_sysblk_to_cpu(info, cur); + + kfree(cur); +err_sysblk: + mutex_unlock(&dev->mlock); + + if (found) + return 1; + return ret; +} + +int nvm_update_sysblock(struct nvm_dev *dev, struct nvm_sb_info *new) +{ + /* 1. for each latest superblock + * 2. if room + * a. write new flash page entry with the updated information + * 3. if no room + * a. find next available block on lun (linear search) + * if none, continue to next lun + * if none at all, report error. also report that it wasn't + * possible to write to all superblocks. + * c. write data to block. + */ + struct ppa_addr sysblk_ppas[MAX_SYSBLKS]; + struct sysblk_scan s; + struct nvm_system_block *cur; + int i, j, ppaidx, found = 0; + int ret = -ENOMEM; + + if (!dev->ops->get_bb_tbl) + return -EINVAL; + + nvm_setup_sysblk_scan(dev, &s, sysblk_ppas); + + mutex_lock(&dev->mlock); + ret = nvm_get_all_sysblks(dev, &s, sysblk_ppas, sysblk_get_host_blks); + if (ret) + goto err_sysblk; + + cur = kzalloc(sizeof(struct nvm_system_block), GFP_KERNEL); + if (!cur) + goto err_sysblk; + + /* Get the latest sysblk for each sysblk row */ + for (i = 0; i < s.nr_rows; i++) { + found = 0; + for (j = 0; j < MAX_BLKS_PR_SYSBLK; j++) { + ppaidx = scan_ppa_idx(i, j); + ret = nvm_scan_block(dev, &s.ppas[ppaidx], cur); + if (ret > 0) { + s.act_blk[i] = j; + found = 1; + } else if (ret < 0) + break; + } + } + + if (!found) { + pr_err("nvm: no valid sysblks found to update\n"); + ret = -EINVAL; + goto err_cur; + } + + /* + * All sysblocks found. Check that they have same page id in their flash + * blocks + */ + for (i = 1; i < s.nr_rows; i++) { + struct ppa_addr l = s.ppas[scan_ppa_idx(0, s.act_blk[0])]; + struct ppa_addr r = s.ppas[scan_ppa_idx(i, s.act_blk[i])]; + + if (l.g.pg != r.g.pg) { + pr_err("nvm: sysblks not on same page. Previous update failed.\n"); + ret = -EINVAL; + goto err_cur; + } + } + + /* + * Check that there haven't been another update to the seqnr since we + * began + */ + if ((new->seqnr - 1) != be32_to_cpu(cur->seqnr)) { + pr_err("nvm: seq is not sequential\n"); + ret = -EINVAL; + goto err_cur; + } + + /* + * When all pages in a block has been written, a new block is selected + * and writing is performed on the new block. + */ + if (s.ppas[scan_ppa_idx(0, s.act_blk[0])].g.pg == + dev->lps_per_blk - 1) { + ret = nvm_prepare_new_sysblks(dev, &s); + if (ret) + goto err_cur; + } + + ret = nvm_write_and_verify(dev, new, &s); +err_cur: + kfree(cur); +err_sysblk: + mutex_unlock(&dev->mlock); + + return ret; +} + +int nvm_init_sysblock(struct nvm_dev *dev, struct nvm_sb_info *info) +{ + struct ppa_addr sysblk_ppas[MAX_SYSBLKS]; + struct sysblk_scan s; + int ret; + + /* + * 1. select master blocks and select first available blks + * 2. get bad block list + * 3. mark MAX_SYSBLKS block as host-based device allocated. + * 4. write and verify data to block + */ + + if (!dev->ops->get_bb_tbl || !dev->ops->set_bb_tbl) + return -EINVAL; + + if (!(dev->mccap & NVM_ID_CAP_SLC) || !dev->lps_per_blk) { + pr_err("nvm: memory does not support SLC access\n"); + return -EINVAL; + } + + /* Index all sysblocks and mark them as host-driven */ + nvm_setup_sysblk_scan(dev, &s, sysblk_ppas); + + mutex_lock(&dev->mlock); + ret = nvm_get_all_sysblks(dev, &s, sysblk_ppas, sysblk_get_free_blks); + if (ret) + goto err_mark; + + ret = nvm_set_bb_tbl(dev, &s, NVM_BLK_T_HOST); + if (ret) + goto err_mark; + + /* Write to the first block of each row */ + ret = nvm_write_and_verify(dev, info, &s); +err_mark: + mutex_unlock(&dev->mlock); + return ret; +} + +struct factory_blks { + struct nvm_dev *dev; + int flags; + unsigned long *blks; +}; + +static int factory_nblks(int nblks) +{ + /* Round up to nearest BITS_PER_LONG */ + return (nblks + (BITS_PER_LONG - 1)) & ~(BITS_PER_LONG - 1); +} + +static unsigned int factory_blk_offset(struct nvm_dev *dev, int ch, int lun) +{ + int nblks = factory_nblks(dev->blks_per_lun); + + return ((ch * dev->luns_per_chnl * nblks) + (lun * nblks)) / + BITS_PER_LONG; +} + +static int nvm_factory_blks(struct ppa_addr ppa, int nr_blks, u8 *blks, + void *private) +{ + struct factory_blks *f = private; + struct nvm_dev *dev = f->dev; + int i, lunoff; + + lunoff = factory_blk_offset(dev, ppa.g.ch, ppa.g.lun); + + /* non-set bits correspond to the block must be erased */ + for (i = 0; i < nr_blks; i++) { + switch (blks[i]) { + case NVM_BLK_T_FREE: + if (f->flags & NVM_FACTORY_ERASE_ONLY_USER) + set_bit(i, &f->blks[lunoff]); + break; + case NVM_BLK_T_HOST: + if (!(f->flags & NVM_FACTORY_RESET_HOST_BLKS)) + set_bit(i, &f->blks[lunoff]); + break; + case NVM_BLK_T_GRWN_BAD: + if (!(f->flags & NVM_FACTORY_RESET_GRWN_BBLKS)) + set_bit(i, &f->blks[lunoff]); + break; + default: + set_bit(i, &f->blks[lunoff]); + break; + } + } + + return 0; +} + +static int nvm_fact_get_blks(struct nvm_dev *dev, struct ppa_addr *erase_list, + int max_ppas, struct factory_blks *f) +{ + struct ppa_addr ppa; + int ch, lun, blkid, idx, done = 0, ppa_cnt = 0; + unsigned long *offset; + + while (!done) { + done = 1; + for (ch = 0; ch < dev->nr_chnls; ch++) { + for (lun = 0; lun < dev->luns_per_chnl; lun++) { + idx = factory_blk_offset(dev, ch, lun); + offset = &f->blks[idx]; + + blkid = find_first_zero_bit(offset, + dev->blks_per_lun); + if (blkid >= dev->blks_per_lun) + continue; + set_bit(blkid, offset); + + ppa.ppa = 0; + ppa.g.ch = ch; + ppa.g.lun = lun; + ppa.g.blk = blkid; + pr_debug("nvm: erase ppa (%u %u %u)\n", + ppa.g.ch, + ppa.g.lun, + ppa.g.blk); + + erase_list[ppa_cnt] = ppa; + ppa_cnt++; + done = 0; + + if (ppa_cnt == max_ppas) + return ppa_cnt; + } + } + } + + return ppa_cnt; +} + +static int nvm_fact_get_bb_tbl(struct nvm_dev *dev, struct ppa_addr ppa, + nvm_bb_update_fn *fn, void *priv) +{ + struct ppa_addr dev_ppa; + int ret; + + dev_ppa = generic_to_dev_addr(dev, ppa); + + ret = dev->ops->get_bb_tbl(dev, dev_ppa, dev->blks_per_lun, fn, priv); + if (ret) + pr_err("nvm: failed bb tbl for ch%u lun%u\n", + ppa.g.ch, ppa.g.blk); + return ret; +} + +static int nvm_fact_select_blks(struct nvm_dev *dev, struct factory_blks *f) +{ + int ch, lun, ret; + struct ppa_addr ppa; + + ppa.ppa = 0; + for (ch = 0; ch < dev->nr_chnls; ch++) { + for (lun = 0; lun < dev->luns_per_chnl; lun++) { + ppa.g.ch = ch; + ppa.g.lun = lun; + + ret = nvm_fact_get_bb_tbl(dev, ppa, nvm_factory_blks, + f); + if (ret) + return ret; + } + } + + return 0; +} + +int nvm_dev_factory(struct nvm_dev *dev, int flags) +{ + struct factory_blks f; + struct ppa_addr *ppas; + int ppa_cnt, ret = -ENOMEM; + int max_ppas = dev->ops->max_phys_sect / dev->nr_planes; + struct ppa_addr sysblk_ppas[MAX_SYSBLKS]; + struct sysblk_scan s; + + f.blks = kzalloc(factory_nblks(dev->blks_per_lun) * dev->nr_luns, + GFP_KERNEL); + if (!f.blks) + return ret; + + ppas = kcalloc(max_ppas, sizeof(struct ppa_addr), GFP_KERNEL); + if (!ppas) + goto err_blks; + + f.dev = dev; + f.flags = flags; + + /* create list of blks to be erased */ + ret = nvm_fact_select_blks(dev, &f); + if (ret) + goto err_ppas; + + /* continue to erase until list of blks until empty */ + while ((ppa_cnt = nvm_fact_get_blks(dev, ppas, max_ppas, &f)) > 0) + nvm_erase_ppa(dev, ppas, ppa_cnt); + + /* mark host reserved blocks free */ + if (flags & NVM_FACTORY_RESET_HOST_BLKS) { + nvm_setup_sysblk_scan(dev, &s, sysblk_ppas); + mutex_lock(&dev->mlock); + ret = nvm_get_all_sysblks(dev, &s, sysblk_ppas, + sysblk_get_host_blks); + if (!ret) + ret = nvm_set_bb_tbl(dev, &s, NVM_BLK_T_FREE); + mutex_unlock(&dev->mlock); + } +err_ppas: + kfree(ppas); +err_blks: + kfree(f.blks); + return ret; +} +EXPORT_SYMBOL(nvm_dev_factory); diff --git a/tools/nvme b/tools/nvme new file mode 120000 index 0000000..dc358f9 --- /dev/null +++ b/tools/nvme @@ -0,0 +1 @@ +nvmedrv-v4.5.3 \ No newline at end of file diff --git a/tools/nvmedrv-v4.5.3/Kconfig b/tools/nvmedrv-v4.5.3/Kconfig new file mode 100644 index 0000000..b586d84 --- /dev/null +++ b/tools/nvmedrv-v4.5.3/Kconfig @@ -0,0 +1,22 @@ +config BLK_DEV_NVME + tristate "NVM Express block device" + depends on PCI && BLOCK + ---help--- + The NVM Express driver is for solid state drives directly + connected to the PCI or PCI Express bus. If you know you + don't have one of these, it is safe to answer N. + + To compile this driver as a module, choose M here: the + module will be called nvme. + +config BLK_DEV_NVME_SCSI + bool "SCSI emulation for NVMe device nodes" + depends on BLK_DEV_NVME + ---help--- + This adds support for the SG_IO ioctl on the NVMe character + and block devices nodes, as well a a translation for a small + number of selected SCSI commands to NVMe commands to the NVMe + driver. If you don't know what this means you probably want + to say N here, unless you run a distro that abuses the SCSI + emulation to provide stable device names for mount by id, like + some OpenSuSE and SLES versions. diff --git a/tools/nvmedrv-v4.5.3/Makefile b/tools/nvmedrv-v4.5.3/Makefile new file mode 100644 index 0000000..e424bfc --- /dev/null +++ b/tools/nvmedrv-v4.5.3/Makefile @@ -0,0 +1,36 @@ +CONFIG_MODULE_SIG=n + +nvme-y := core.o pci.o scsi.o lightnvm.o + +obj-m := nvme.o + +ccflags-y := -I$(src) + +#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../bdbm_drv/frontend/kernel_nvme/Module.symvers +KBUILD_EXTRA_SYMBOLS := $(PWD)/../../bdbm_drv/devices/dumbssd/Module.symvers + +export KROOT=/lib/modules/$(shell uname -r)/build + +.PHONY: default +default: modules + +.PHONY: modules +modules: + @$(MAKE) -C $(KROOT) M=$(PWD) modules + +.PHONY: modules_check +modules_check: + @$(MAKE) -C $(KROOT) C=2 M=$(PWD) modules + +.PHONY: modules_install +modules_install: + @$(MAKE) -C $(KROOT) M=$(PWD) modules_install + +.PHONY: kernel_clean +kernel_clean: + @$(MAKE) -C $(KROOT) M=$(PWD) clean + +.PHONY: clean +clean: kernel_clean + @rm -rf Module.markers modules.order + @rm -rf *.o .*.cmd diff --git a/tools/nvmedrv-v4.5.3/core.c b/tools/nvmedrv-v4.5.3/core.c new file mode 100644 index 0000000..e146cf2 --- /dev/null +++ b/tools/nvmedrv-v4.5.3/core.c @@ -0,0 +1,1593 @@ +/* + * NVM Express device driver + * Copyright (c) 2011-2014, Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "nvme.h" + +#define NVME_MINORS (1U << MINORBITS) + +static int nvme_major; +module_param(nvme_major, int, 0); + +static int nvme_char_major; +module_param(nvme_char_major, int, 0); + +static LIST_HEAD(nvme_ctrl_list); +DEFINE_SPINLOCK(dev_list_lock); + +static struct class *nvme_class; + +#define ENABLE_HYNIX_DEV + +/* chamdoo */ +#ifdef ENABLE_HYNIX_DEV +int bdbm_register (struct request_queue*q, char* disk_name); +void bdbm_unregister (char* disk_name); +#endif +/* end */ + +static void nvme_free_ns(struct kref *kref) +{ + struct nvme_ns *ns = container_of(kref, struct nvme_ns, kref); + + if (ns->type == NVME_NS_LIGHTNVM) + nvme_nvm_unregister(ns->queue, ns->disk->disk_name); + + /* chamdoo */ +#ifdef ENABLE_HYNIX_DEV + if (ns->type == NVME_NS_HYNIX) + bdbm_unregister (ns->disk->disk_name); +#endif + /* end */ + + spin_lock(&dev_list_lock); + ns->disk->private_data = NULL; + spin_unlock(&dev_list_lock); + + put_disk(ns->disk); + ida_simple_remove(&ns->ctrl->ns_ida, ns->instance); + nvme_put_ctrl(ns->ctrl); + kfree(ns); +} + +static void nvme_put_ns(struct nvme_ns *ns) +{ + kref_put(&ns->kref, nvme_free_ns); +} + +static struct nvme_ns *nvme_get_ns_from_disk(struct gendisk *disk) +{ + struct nvme_ns *ns; + + spin_lock(&dev_list_lock); + ns = disk->private_data; + if (ns && !kref_get_unless_zero(&ns->kref)) + ns = NULL; + spin_unlock(&dev_list_lock); + + return ns; +} + +void nvme_requeue_req(struct request *req) +{ + unsigned long flags; + + blk_mq_requeue_request(req); + spin_lock_irqsave(req->q->queue_lock, flags); + if (!blk_queue_stopped(req->q)) + blk_mq_kick_requeue_list(req->q); + spin_unlock_irqrestore(req->q->queue_lock, flags); +} + +struct request *nvme_alloc_request(struct request_queue *q, + struct nvme_command *cmd, unsigned int flags) +{ + bool write = cmd->common.opcode & 1; + struct request *req; + + req = blk_mq_alloc_request(q, write, flags); + if (IS_ERR(req)) + return req; + + req->cmd_type = REQ_TYPE_DRV_PRIV; + req->cmd_flags |= REQ_FAILFAST_DRIVER; + req->__data_len = 0; + req->__sector = (sector_t) -1; + req->bio = req->biotail = NULL; + + req->cmd = (unsigned char *)cmd; + req->cmd_len = sizeof(struct nvme_command); + req->special = (void *)0; + + return req; +} + +/* + * Returns 0 on success. If the result is negative, it's a Linux error code; + * if the result is positive, it's an NVM Express status code + */ +int __nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd, + void *buffer, unsigned bufflen, u32 *result, unsigned timeout) +{ + struct request *req; + int ret; + + req = nvme_alloc_request(q, cmd, 0); + if (IS_ERR(req)) + return PTR_ERR(req); + + req->timeout = timeout ? timeout : ADMIN_TIMEOUT; + + if (buffer && bufflen) { + ret = blk_rq_map_kern(q, req, buffer, bufflen, GFP_KERNEL); + if (ret) + goto out; + } + + blk_execute_rq(req->q, NULL, req, 0); + if (result) + *result = (u32)(uintptr_t)req->special; + ret = req->errors; + out: + blk_mq_free_request(req); + return ret; +} + +int nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd, + void *buffer, unsigned bufflen) +{ + return __nvme_submit_sync_cmd(q, cmd, buffer, bufflen, NULL, 0); +} + +int __nvme_submit_user_cmd(struct request_queue *q, struct nvme_command *cmd, + void __user *ubuffer, unsigned bufflen, + void __user *meta_buffer, unsigned meta_len, u32 meta_seed, + u32 *result, unsigned timeout) +{ + bool write = cmd->common.opcode & 1; + struct nvme_ns *ns = q->queuedata; + struct gendisk *disk = ns ? ns->disk : NULL; + struct request *req; + struct bio *bio = NULL; + void *meta = NULL; + int ret; + + req = nvme_alloc_request(q, cmd, 0); + if (IS_ERR(req)) + return PTR_ERR(req); + + req->timeout = timeout ? timeout : ADMIN_TIMEOUT; + + if (ubuffer && bufflen) { + ret = blk_rq_map_user(q, req, NULL, ubuffer, bufflen, + GFP_KERNEL); + if (ret) + goto out; + bio = req->bio; + + if (!disk) + goto submit; + bio->bi_bdev = bdget_disk(disk, 0); + if (!bio->bi_bdev) { + ret = -ENODEV; + goto out_unmap; + } + + if (meta_buffer && meta_len) { + struct bio_integrity_payload *bip; + + meta = kmalloc(meta_len, GFP_KERNEL); + if (!meta) { + ret = -ENOMEM; + goto out_unmap; + } + + if (write) { + if (copy_from_user(meta, meta_buffer, + meta_len)) { + ret = -EFAULT; + goto out_free_meta; + } + } + + bip = bio_integrity_alloc(bio, GFP_KERNEL, 1); + if (IS_ERR(bip)) { + ret = PTR_ERR(bip); + goto out_free_meta; + } + + bip->bip_iter.bi_size = meta_len; + bip->bip_iter.bi_sector = meta_seed; + + ret = bio_integrity_add_page(bio, virt_to_page(meta), + meta_len, offset_in_page(meta)); + if (ret != meta_len) { + ret = -ENOMEM; + goto out_free_meta; + } + } else { + printk (KERN_INFO "no data\n"); + } + } + submit: + blk_execute_rq(req->q, disk, req, 0); + + { + char* test = (char*)ubuffer; + printk (KERN_INFO "%x %x %x %x\n", test[0], test[1], test[2], test[3]); + } + + ret = req->errors; + if (result) + *result = (u32)(uintptr_t)req->special; + if (meta && !ret && !write) { + if (copy_to_user(meta_buffer, meta, meta_len)) + ret = -EFAULT; + } + out_free_meta: + kfree(meta); + out_unmap: + if (bio) { + if (disk && bio->bi_bdev) + bdput(bio->bi_bdev); + blk_rq_unmap_user(bio); + } + out: + blk_mq_free_request(req); + return ret; +} + +int nvme_submit_user_cmd(struct request_queue *q, struct nvme_command *cmd, + void __user *ubuffer, unsigned bufflen, u32 *result, + unsigned timeout) +{ + return __nvme_submit_user_cmd(q, cmd, ubuffer, bufflen, NULL, 0, 0, + result, timeout); +} + +int nvme_identify_ctrl(struct nvme_ctrl *dev, struct nvme_id_ctrl **id) +{ + struct nvme_command c = { }; + int error; + + /* gcc-4.4.4 (at least) has issues with initializers and anon unions */ + c.identify.opcode = nvme_admin_identify; + c.identify.cns = cpu_to_le32(1); + + *id = kmalloc(sizeof(struct nvme_id_ctrl), GFP_KERNEL); + if (!*id) + return -ENOMEM; + + error = nvme_submit_sync_cmd(dev->admin_q, &c, *id, + sizeof(struct nvme_id_ctrl)); + if (error) + kfree(*id); + return error; +} + +static int nvme_identify_ns_list(struct nvme_ctrl *dev, unsigned nsid, __le32 *ns_list) +{ + struct nvme_command c = { }; + + c.identify.opcode = nvme_admin_identify; + c.identify.cns = cpu_to_le32(2); + c.identify.nsid = cpu_to_le32(nsid); + return nvme_submit_sync_cmd(dev->admin_q, &c, ns_list, 0x1000); +} + +int nvme_identify_ns(struct nvme_ctrl *dev, unsigned nsid, + struct nvme_id_ns **id) +{ + struct nvme_command c = { }; + int error; + + /* gcc-4.4.4 (at least) has issues with initializers and anon unions */ + c.identify.opcode = nvme_admin_identify, + c.identify.nsid = cpu_to_le32(nsid), + + *id = kmalloc(sizeof(struct nvme_id_ns), GFP_KERNEL); + if (!*id) + return -ENOMEM; + + error = nvme_submit_sync_cmd(dev->admin_q, &c, *id, + sizeof(struct nvme_id_ns)); + if (error) + kfree(*id); + return error; +} + +int nvme_get_features(struct nvme_ctrl *dev, unsigned fid, unsigned nsid, + dma_addr_t dma_addr, u32 *result) +{ + struct nvme_command c; + + memset(&c, 0, sizeof(c)); + c.features.opcode = nvme_admin_get_features; + c.features.nsid = cpu_to_le32(nsid); + c.features.prp1 = cpu_to_le64(dma_addr); + c.features.fid = cpu_to_le32(fid); + + return __nvme_submit_sync_cmd(dev->admin_q, &c, NULL, 0, result, 0); +} + +int nvme_set_features(struct nvme_ctrl *dev, unsigned fid, unsigned dword11, + dma_addr_t dma_addr, u32 *result) +{ + struct nvme_command c; + + memset(&c, 0, sizeof(c)); + c.features.opcode = nvme_admin_set_features; + c.features.prp1 = cpu_to_le64(dma_addr); + c.features.fid = cpu_to_le32(fid); + c.features.dword11 = cpu_to_le32(dword11); + + return __nvme_submit_sync_cmd(dev->admin_q, &c, NULL, 0, result, 0); +} + +int nvme_get_log_page(struct nvme_ctrl *dev, struct nvme_smart_log **log) +{ + struct nvme_command c = { }; + int error; + + c.common.opcode = nvme_admin_get_log_page, + c.common.nsid = cpu_to_le32(0xFFFFFFFF), + c.common.cdw10[0] = cpu_to_le32( + (((sizeof(struct nvme_smart_log) / 4) - 1) << 16) | + NVME_LOG_SMART), + + *log = kmalloc(sizeof(struct nvme_smart_log), GFP_KERNEL); + if (!*log) + return -ENOMEM; + + error = nvme_submit_sync_cmd(dev->admin_q, &c, *log, + sizeof(struct nvme_smart_log)); + if (error) + kfree(*log); + return error; +} + +int nvme_set_queue_count(struct nvme_ctrl *ctrl, int *count) +{ + u32 q_count = (*count - 1) | ((*count - 1) << 16); + u32 result; + int status, nr_io_queues; + + status = nvme_set_features(ctrl, NVME_FEAT_NUM_QUEUES, q_count, 0, + &result); + if (status) + return status; + + nr_io_queues = min(result & 0xffff, result >> 16) + 1; + *count = min(*count, nr_io_queues); + return 0; +} + +static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio) +{ + struct nvme_user_io io; + struct nvme_command c; + unsigned length, meta_len; + void __user *metadata; + + if (copy_from_user(&io, uio, sizeof(io))) + return -EFAULT; + if (io.flags) + return -EINVAL; + + printk (KERN_INFO "io.flags: %x\n", io.flags); + + switch (io.opcode) { + case nvme_cmd_write: + case nvme_cmd_read: + case nvme_cmd_compare: + break; + default: + return -EINVAL; + } + + printk (KERN_INFO "io.opcode: %x\n", io.opcode); + + length = (io.nblocks + 1) << ns->lba_shift; + meta_len = (io.nblocks + 1) * ns->ms; + metadata = (void __user *)(uintptr_t)io.metadata; + + printk (KERN_INFO "io.nblocks: %x\n", io.nblocks); + printk (KERN_INFO "io.metadata: %p\n", (void __user *)(uintptr_t)io.metadata); + printk (KERN_INFO "ns->lba_shift.: %x\n", ns->lba_shift); + printk (KERN_INFO "ns->ms: %x\n", ns->ms); + + printk (KERN_INFO "length: %x\n", length); + printk (KERN_INFO "meta_len: %x\n", meta_len); + printk (KERN_INFO "metadata: %p\n", metadata); + + if (ns->ext) { + length += meta_len; + meta_len = 0; + } else if (meta_len) { + if ((io.metadata & 3) || !io.metadata) + return -EINVAL; + } + + printk (KERN_INFO "ns->ext: %x\n", ns->ext); + + memset(&c, 0, sizeof(c)); + c.rw.opcode = io.opcode; + c.rw.flags = io.flags; + c.rw.nsid = cpu_to_le32(ns->ns_id); + c.rw.slba = cpu_to_le64(io.slba); + c.rw.length = cpu_to_le16(io.nblocks); + c.rw.control = cpu_to_le16(io.control); + c.rw.dsmgmt = cpu_to_le32(io.dsmgmt); + c.rw.reftag = cpu_to_le32(io.reftag); + c.rw.apptag = cpu_to_le16(io.apptag); + c.rw.appmask = cpu_to_le16(io.appmask); + + printk (KERN_INFO "c.rw.opcode: %x\n", c.rw.opcode); + printk (KERN_INFO "c.rw.flags: %x\n", c.rw.flags); + printk (KERN_INFO "c.rw.nsid: %x\n", c.rw.nsid); + printk (KERN_INFO "c.rw.slba: %llx\n", c.rw.slba); + printk (KERN_INFO "c.rw.length: %x\n", c.rw.length); + printk (KERN_INFO "c.rw.control: %x\n", c.rw.control); + printk (KERN_INFO "c.rw.dsmgmt: %x\n", c.rw.dsmgmt); + printk (KERN_INFO "c.rw.reftag: %x\n", c.rw.reftag); + printk (KERN_INFO "c.rw.apptag: %x\n", c.rw.apptag); + printk (KERN_INFO "c.rw.appmask: %x\n", c.rw.appmask); + + return __nvme_submit_user_cmd(ns->queue, &c, + (void __user *)(uintptr_t)io.addr, length, + metadata, meta_len, io.slba, NULL, 0); +} + +static int nvme_user_cmd(struct nvme_ctrl *ctrl, struct nvme_ns *ns, + struct nvme_passthru_cmd __user *ucmd) +{ + struct nvme_passthru_cmd cmd; + struct nvme_command c; + unsigned timeout = 0; + int status; + + if (!capable(CAP_SYS_ADMIN)) + return -EACCES; + if (copy_from_user(&cmd, ucmd, sizeof(cmd))) + return -EFAULT; + if (cmd.flags) + return -EINVAL; + + memset(&c, 0, sizeof(c)); + c.common.opcode = cmd.opcode; + c.common.flags = cmd.flags; + c.common.nsid = cpu_to_le32(cmd.nsid); + c.common.cdw2[0] = cpu_to_le32(cmd.cdw2); + c.common.cdw2[1] = cpu_to_le32(cmd.cdw3); + c.common.cdw10[0] = cpu_to_le32(cmd.cdw10); + c.common.cdw10[1] = cpu_to_le32(cmd.cdw11); + c.common.cdw10[2] = cpu_to_le32(cmd.cdw12); + c.common.cdw10[3] = cpu_to_le32(cmd.cdw13); + c.common.cdw10[4] = cpu_to_le32(cmd.cdw14); + c.common.cdw10[5] = cpu_to_le32(cmd.cdw15); + + if (cmd.timeout_ms) + timeout = msecs_to_jiffies(cmd.timeout_ms); + + status = nvme_submit_user_cmd(ns ? ns->queue : ctrl->admin_q, &c, + (void __user *)(uintptr_t)cmd.addr, cmd.data_len, + &cmd.result, timeout); + if (status >= 0) { + if (put_user(cmd.result, &ucmd->result)) + return -EFAULT; + } + + return status; +} + +static int nvme_ioctl(struct block_device *bdev, fmode_t mode, + unsigned int cmd, unsigned long arg) +{ + struct nvme_ns *ns = bdev->bd_disk->private_data; + + switch (cmd) { + case NVME_IOCTL_ID: + printk (KERN_INFO "NVME_IOCTL_ID\n"); + force_successful_syscall_return(); + return ns->ns_id; + case NVME_IOCTL_ADMIN_CMD: + printk (KERN_INFO "NVME_IOCTL_ADMIN_CMD\n"); + return nvme_user_cmd(ns->ctrl, NULL, (void __user *)arg); + case NVME_IOCTL_IO_CMD: + printk (KERN_INFO "NVME_IOCTL_IO_CMD\n"); + return nvme_user_cmd(ns->ctrl, ns, (void __user *)arg); + case NVME_IOCTL_SUBMIT_IO: + printk (KERN_INFO "NVME_IOCTL_SUBMIT_IO\n"); + return nvme_submit_io(ns, (void __user *)arg); +#ifdef CONFIG_BLK_DEV_NVME_SCSI + case SG_GET_VERSION_NUM: + printk (KERN_INFO "SG_GET_VERSION_NUM\n"); + return nvme_sg_get_version_num((void __user *)arg); + case SG_IO: + printk (KERN_INFO " SG_IO\n"); + return nvme_sg_io(ns, (void __user *)arg); +#endif + default: + return -ENOTTY; + } +} + +#ifdef CONFIG_COMPAT +static int nvme_compat_ioctl(struct block_device *bdev, fmode_t mode, + unsigned int cmd, unsigned long arg) +{ + switch (cmd) { + case SG_IO: + return -ENOIOCTLCMD; + } + return nvme_ioctl(bdev, mode, cmd, arg); +} +#else +#define nvme_compat_ioctl NULL +#endif + +static int nvme_open(struct block_device *bdev, fmode_t mode) +{ + return nvme_get_ns_from_disk(bdev->bd_disk) ? 0 : -ENXIO; +} + +static void nvme_release(struct gendisk *disk, fmode_t mode) +{ + nvme_put_ns(disk->private_data); +} + +static int nvme_getgeo(struct block_device *bdev, struct hd_geometry *geo) +{ + /* some standard values */ + geo->heads = 1 << 6; + geo->sectors = 1 << 5; + geo->cylinders = get_capacity(bdev->bd_disk) >> 11; + return 0; +} + +#ifdef CONFIG_BLK_DEV_INTEGRITY +static void nvme_init_integrity(struct nvme_ns *ns) +{ + struct blk_integrity integrity; + + switch (ns->pi_type) { + case NVME_NS_DPS_PI_TYPE3: + integrity.profile = &t10_pi_type3_crc; + break; + case NVME_NS_DPS_PI_TYPE1: + case NVME_NS_DPS_PI_TYPE2: + integrity.profile = &t10_pi_type1_crc; + break; + default: + integrity.profile = NULL; + break; + } + integrity.tuple_size = ns->ms; + blk_integrity_register(ns->disk, &integrity); + blk_queue_max_integrity_segments(ns->queue, 1); +} +#else +static void nvme_init_integrity(struct nvme_ns *ns) +{ +} +#endif /* CONFIG_BLK_DEV_INTEGRITY */ + +static void nvme_config_discard(struct nvme_ns *ns) +{ + u32 logical_block_size = queue_logical_block_size(ns->queue); + ns->queue->limits.discard_zeroes_data = 0; + ns->queue->limits.discard_alignment = logical_block_size; + ns->queue->limits.discard_granularity = logical_block_size; + blk_queue_max_discard_sectors(ns->queue, 0xffffffff); + queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, ns->queue); +} + +static int nvme_revalidate_disk(struct gendisk *disk) +{ + struct nvme_ns *ns = disk->private_data; + struct nvme_id_ns *id; + u8 lbaf, pi_type; + u16 old_ms; + unsigned short bs; + + if (test_bit(NVME_NS_DEAD, &ns->flags)) { + set_capacity(disk, 0); + return -ENODEV; + } + if (nvme_identify_ns(ns->ctrl, ns->ns_id, &id)) { + dev_warn(ns->ctrl->dev, "%s: Identify failure nvme%dn%d\n", + __func__, ns->ctrl->instance, ns->ns_id); + return -ENODEV; + } + if (id->ncap == 0) { + kfree(id); + return -ENODEV; + } + + if (nvme_nvm_ns_supported(ns, id) && ns->type != NVME_NS_LIGHTNVM) { + if (nvme_nvm_register(ns->queue, disk->disk_name)) { + dev_warn(ns->ctrl->dev, + "%s: LightNVM init failure\n", __func__); + kfree(id); + return -ENODEV; + } + ns->type = NVME_NS_LIGHTNVM; + } + + /* chamdoo */ +#ifdef ENABLE_HYNIX_DEV + ns->type = NVME_NS_HYNIX; + if (ns->type == NVME_NS_HYNIX) { + bdbm_register (ns->queue, disk->disk_name); + } +#endif + /* end */ + + if (ns->ctrl->vs >= NVME_VS(1, 1)) + memcpy(ns->eui, id->eui64, sizeof(ns->eui)); + if (ns->ctrl->vs >= NVME_VS(1, 2)) + memcpy(ns->uuid, id->nguid, sizeof(ns->uuid)); + + old_ms = ns->ms; + lbaf = id->flbas & NVME_NS_FLBAS_LBA_MASK; + ns->lba_shift = id->lbaf[lbaf].ds; + ns->ms = le16_to_cpu(id->lbaf[lbaf].ms); + ns->ext = ns->ms && (id->flbas & NVME_NS_FLBAS_META_EXT); + + /* + * If identify namespace failed, use default 512 byte block size so + * block layer can use before failing read/write for 0 capacity. + */ + if (ns->lba_shift == 0) + ns->lba_shift = 9; + bs = 1 << ns->lba_shift; + /* XXX: PI implementation requires metadata equal t10 pi tuple size */ + pi_type = ns->ms == sizeof(struct t10_pi_tuple) ? + id->dps & NVME_NS_DPS_PI_MASK : 0; + + blk_mq_freeze_queue(disk->queue); + if (blk_get_integrity(disk) && (ns->pi_type != pi_type || + ns->ms != old_ms || + bs != queue_logical_block_size(disk->queue) || + (ns->ms && ns->ext))) + blk_integrity_unregister(disk); + + ns->pi_type = pi_type; + blk_queue_logical_block_size(ns->queue, bs); + + if (ns->ms && !blk_get_integrity(disk) && !ns->ext) + nvme_init_integrity(ns); + if (ns->ms && !(ns->ms == 8 && ns->pi_type) && !blk_get_integrity(disk)) + set_capacity(disk, 0); + else + set_capacity(disk, le64_to_cpup(&id->nsze) << (ns->lba_shift - 9)); + + if (ns->ctrl->oncs & NVME_CTRL_ONCS_DSM) + nvme_config_discard(ns); + blk_mq_unfreeze_queue(disk->queue); + + kfree(id); + return 0; +} + +static char nvme_pr_type(enum pr_type type) +{ + switch (type) { + case PR_WRITE_EXCLUSIVE: + return 1; + case PR_EXCLUSIVE_ACCESS: + return 2; + case PR_WRITE_EXCLUSIVE_REG_ONLY: + return 3; + case PR_EXCLUSIVE_ACCESS_REG_ONLY: + return 4; + case PR_WRITE_EXCLUSIVE_ALL_REGS: + return 5; + case PR_EXCLUSIVE_ACCESS_ALL_REGS: + return 6; + default: + return 0; + } +}; + +static int nvme_pr_command(struct block_device *bdev, u32 cdw10, + u64 key, u64 sa_key, u8 op) +{ + struct nvme_ns *ns = bdev->bd_disk->private_data; + struct nvme_command c; + u8 data[16] = { 0, }; + + put_unaligned_le64(key, &data[0]); + put_unaligned_le64(sa_key, &data[8]); + + memset(&c, 0, sizeof(c)); + c.common.opcode = op; + c.common.nsid = cpu_to_le32(ns->ns_id); + c.common.cdw10[0] = cpu_to_le32(cdw10); + + return nvme_submit_sync_cmd(ns->queue, &c, data, 16); +} + +static int nvme_pr_register(struct block_device *bdev, u64 old, + u64 new, unsigned flags) +{ + u32 cdw10; + + if (flags & ~PR_FL_IGNORE_KEY) + return -EOPNOTSUPP; + + cdw10 = old ? 2 : 0; + cdw10 |= (flags & PR_FL_IGNORE_KEY) ? 1 << 3 : 0; + cdw10 |= (1 << 30) | (1 << 31); /* PTPL=1 */ + return nvme_pr_command(bdev, cdw10, old, new, nvme_cmd_resv_register); +} + +static int nvme_pr_reserve(struct block_device *bdev, u64 key, + enum pr_type type, unsigned flags) +{ + u32 cdw10; + + if (flags & ~PR_FL_IGNORE_KEY) + return -EOPNOTSUPP; + + cdw10 = nvme_pr_type(type) << 8; + cdw10 |= ((flags & PR_FL_IGNORE_KEY) ? 1 << 3 : 0); + return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_acquire); +} + +static int nvme_pr_preempt(struct block_device *bdev, u64 old, u64 new, + enum pr_type type, bool abort) +{ + u32 cdw10 = nvme_pr_type(type) << 8 | abort ? 2 : 1; + return nvme_pr_command(bdev, cdw10, old, new, nvme_cmd_resv_acquire); +} + +static int nvme_pr_clear(struct block_device *bdev, u64 key) +{ + u32 cdw10 = 1 | (key ? 1 << 3 : 0); + return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_register); +} + +static int nvme_pr_release(struct block_device *bdev, u64 key, enum pr_type type) +{ + u32 cdw10 = nvme_pr_type(type) << 8 | key ? 1 << 3 : 0; + return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_release); +} + +static const struct pr_ops nvme_pr_ops = { + .pr_register = nvme_pr_register, + .pr_reserve = nvme_pr_reserve, + .pr_release = nvme_pr_release, + .pr_preempt = nvme_pr_preempt, + .pr_clear = nvme_pr_clear, +}; + +static const struct block_device_operations nvme_fops = { + .owner = THIS_MODULE, + .ioctl = nvme_ioctl, + .compat_ioctl = nvme_compat_ioctl, + .open = nvme_open, + .release = nvme_release, + .getgeo = nvme_getgeo, + .revalidate_disk= nvme_revalidate_disk, + .pr_ops = &nvme_pr_ops, +}; + +static int nvme_wait_ready(struct nvme_ctrl *ctrl, u64 cap, bool enabled) +{ + unsigned long timeout = + ((NVME_CAP_TIMEOUT(cap) + 1) * HZ / 2) + jiffies; + u32 csts, bit = enabled ? NVME_CSTS_RDY : 0; + int ret; + + while ((ret = ctrl->ops->reg_read32(ctrl, NVME_REG_CSTS, &csts)) == 0) { + if ((csts & NVME_CSTS_RDY) == bit) + break; + + msleep(100); + if (fatal_signal_pending(current)) + return -EINTR; + if (time_after(jiffies, timeout)) { + dev_err(ctrl->dev, + "Device not ready; aborting %s\n", enabled ? + "initialisation" : "reset"); + return -ENODEV; + } + } + + return ret; +} + +/* + * If the device has been passed off to us in an enabled state, just clear + * the enabled bit. The spec says we should set the 'shutdown notification + * bits', but doing so may cause the device to complete commands to the + * admin queue ... and we don't know what memory that might be pointing at! + */ +int nvme_disable_ctrl(struct nvme_ctrl *ctrl, u64 cap) +{ + int ret; + + ctrl->ctrl_config &= ~NVME_CC_SHN_MASK; + ctrl->ctrl_config &= ~NVME_CC_ENABLE; + + ret = ctrl->ops->reg_write32(ctrl, NVME_REG_CC, ctrl->ctrl_config); + if (ret) + return ret; + return nvme_wait_ready(ctrl, cap, false); +} + +int nvme_enable_ctrl(struct nvme_ctrl *ctrl, u64 cap) +{ + /* + * Default to a 4K page size, with the intention to update this + * path in the future to accomodate architectures with differing + * kernel and IO page sizes. + */ + unsigned dev_page_min = NVME_CAP_MPSMIN(cap) + 12, page_shift = 12; + int ret; + + if (page_shift < dev_page_min) { + dev_err(ctrl->dev, + "Minimum device page size %u too large for host (%u)\n", + 1 << dev_page_min, 1 << page_shift); + return -ENODEV; + } + + ctrl->page_size = 1 << page_shift; + + ctrl->ctrl_config = NVME_CC_CSS_NVM; + ctrl->ctrl_config |= (page_shift - 12) << NVME_CC_MPS_SHIFT; + ctrl->ctrl_config |= NVME_CC_ARB_RR | NVME_CC_SHN_NONE; + ctrl->ctrl_config |= NVME_CC_IOSQES | NVME_CC_IOCQES; + ctrl->ctrl_config |= NVME_CC_ENABLE; + + ret = ctrl->ops->reg_write32(ctrl, NVME_REG_CC, ctrl->ctrl_config); + if (ret) + return ret; + return nvme_wait_ready(ctrl, cap, true); +} + +int nvme_shutdown_ctrl(struct nvme_ctrl *ctrl) +{ + unsigned long timeout = SHUTDOWN_TIMEOUT + jiffies; + u32 csts; + int ret; + + ctrl->ctrl_config &= ~NVME_CC_SHN_MASK; + ctrl->ctrl_config |= NVME_CC_SHN_NORMAL; + + ret = ctrl->ops->reg_write32(ctrl, NVME_REG_CC, ctrl->ctrl_config); + if (ret) + return ret; + + while ((ret = ctrl->ops->reg_read32(ctrl, NVME_REG_CSTS, &csts)) == 0) { + if ((csts & NVME_CSTS_SHST_MASK) == NVME_CSTS_SHST_CMPLT) + break; + + msleep(100); + if (fatal_signal_pending(current)) + return -EINTR; + if (time_after(jiffies, timeout)) { + dev_err(ctrl->dev, + "Device shutdown incomplete; abort shutdown\n"); + return -ENODEV; + } + } + + return ret; +} + +static void nvme_set_queue_limits(struct nvme_ctrl *ctrl, + struct request_queue *q) +{ + if (ctrl->max_hw_sectors) { + u32 max_segments = + (ctrl->max_hw_sectors / (ctrl->page_size >> 9)) + 1; + + blk_queue_max_hw_sectors(q, ctrl->max_hw_sectors); + blk_queue_max_segments(q, min_t(u32, max_segments, USHRT_MAX)); + } + if (ctrl->stripe_size) + blk_queue_chunk_sectors(q, ctrl->stripe_size >> 9); + if (ctrl->vwc & NVME_CTRL_VWC_PRESENT) + blk_queue_flush(q, REQ_FLUSH | REQ_FUA); + blk_queue_virt_boundary(q, ctrl->page_size - 1); +} + +/* + * Initialize the cached copies of the Identify data and various controller + * register in our nvme_ctrl structure. This should be called as soon as + * the admin queue is fully up and running. + */ +int nvme_init_identify(struct nvme_ctrl *ctrl) +{ + struct nvme_id_ctrl *id; + u64 cap; + int ret, page_shift; + + ret = ctrl->ops->reg_read32(ctrl, NVME_REG_VS, &ctrl->vs); + if (ret) { + dev_err(ctrl->dev, "Reading VS failed (%d)\n", ret); + return ret; + } + + ret = ctrl->ops->reg_read64(ctrl, NVME_REG_CAP, &cap); + if (ret) { + dev_err(ctrl->dev, "Reading CAP failed (%d)\n", ret); + return ret; + } + page_shift = NVME_CAP_MPSMIN(cap) + 12; + + if (ctrl->vs >= NVME_VS(1, 1)) + ctrl->subsystem = NVME_CAP_NSSRC(cap); + + ret = nvme_identify_ctrl(ctrl, &id); + if (ret) { + dev_err(ctrl->dev, "Identify Controller failed (%d)\n", ret); + return -EIO; + } + + ctrl->oncs = le16_to_cpup(&id->oncs); + atomic_set(&ctrl->abort_limit, id->acl + 1); + ctrl->vwc = id->vwc; + memcpy(ctrl->serial, id->sn, sizeof(id->sn)); + memcpy(ctrl->model, id->mn, sizeof(id->mn)); + memcpy(ctrl->firmware_rev, id->fr, sizeof(id->fr)); + if (id->mdts) + ctrl->max_hw_sectors = 1 << (id->mdts + page_shift - 9); + else + ctrl->max_hw_sectors = UINT_MAX; + + if ((ctrl->quirks & NVME_QUIRK_STRIPE_SIZE) && id->vs[3]) { + unsigned int max_hw_sectors; + + ctrl->stripe_size = 1 << (id->vs[3] + page_shift); + max_hw_sectors = ctrl->stripe_size >> (page_shift - 9); + if (ctrl->max_hw_sectors) { + ctrl->max_hw_sectors = min(max_hw_sectors, + ctrl->max_hw_sectors); + } else { + ctrl->max_hw_sectors = max_hw_sectors; + } + } + + nvme_set_queue_limits(ctrl, ctrl->admin_q); + + kfree(id); + return 0; +} + +static int nvme_dev_open(struct inode *inode, struct file *file) +{ + struct nvme_ctrl *ctrl; + int instance = iminor(inode); + int ret = -ENODEV; + + spin_lock(&dev_list_lock); + list_for_each_entry(ctrl, &nvme_ctrl_list, node) { + if (ctrl->instance != instance) + continue; + + if (!ctrl->admin_q) { + ret = -EWOULDBLOCK; + break; + } + if (!kref_get_unless_zero(&ctrl->kref)) + break; + file->private_data = ctrl; + ret = 0; + break; + } + spin_unlock(&dev_list_lock); + + return ret; +} + +static int nvme_dev_release(struct inode *inode, struct file *file) +{ + nvme_put_ctrl(file->private_data); + return 0; +} + +static int nvme_dev_user_cmd(struct nvme_ctrl *ctrl, void __user *argp) +{ + struct nvme_ns *ns; + int ret; + + mutex_lock(&ctrl->namespaces_mutex); + if (list_empty(&ctrl->namespaces)) { + ret = -ENOTTY; + goto out_unlock; + } + + ns = list_first_entry(&ctrl->namespaces, struct nvme_ns, list); + if (ns != list_last_entry(&ctrl->namespaces, struct nvme_ns, list)) { + dev_warn(ctrl->dev, + "NVME_IOCTL_IO_CMD not supported when multiple namespaces present!\n"); + ret = -EINVAL; + goto out_unlock; + } + + dev_warn(ctrl->dev, + "using deprecated NVME_IOCTL_IO_CMD ioctl on the char device!\n"); + kref_get(&ns->kref); + mutex_unlock(&ctrl->namespaces_mutex); + + ret = nvme_user_cmd(ctrl, ns, argp); + nvme_put_ns(ns); + return ret; + +out_unlock: + mutex_unlock(&ctrl->namespaces_mutex); + return ret; +} + +static long nvme_dev_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + struct nvme_ctrl *ctrl = file->private_data; + void __user *argp = (void __user *)arg; + + switch (cmd) { + case NVME_IOCTL_ADMIN_CMD: + printk (KERN_INFO "NVME_IOCTL_ADMIN_CMD\n"); + return nvme_user_cmd(ctrl, NULL, argp); + case NVME_IOCTL_IO_CMD: + printk (KERN_INFO "NVME_IOCTL_IO_CMD\n"); + return nvme_dev_user_cmd(ctrl, argp); + case NVME_IOCTL_RESET: + printk (KERN_INFO "NVME_IOCTL_RESET\n"); + dev_warn(ctrl->dev, "resetting controller\n"); + return ctrl->ops->reset_ctrl(ctrl); + case NVME_IOCTL_SUBSYS_RESET: + printk (KERN_INFO "NVME_IOCTL_SUBSYS_RESET\n"); + return nvme_reset_subsystem(ctrl); + default: + return -ENOTTY; + } +} + +static const struct file_operations nvme_dev_fops = { + .owner = THIS_MODULE, + .open = nvme_dev_open, + .release = nvme_dev_release, + .unlocked_ioctl = nvme_dev_ioctl, + .compat_ioctl = nvme_dev_ioctl, +}; + +static ssize_t nvme_sysfs_reset(struct device *dev, + struct device_attribute *attr, const char *buf, + size_t count) +{ + struct nvme_ctrl *ctrl = dev_get_drvdata(dev); + int ret; + + ret = ctrl->ops->reset_ctrl(ctrl); + if (ret < 0) + return ret; + return count; +} +static DEVICE_ATTR(reset_controller, S_IWUSR, NULL, nvme_sysfs_reset); + +static ssize_t uuid_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct nvme_ns *ns = dev_to_disk(dev)->private_data; + return sprintf(buf, "%pU\n", ns->uuid); +} +static DEVICE_ATTR(uuid, S_IRUGO, uuid_show, NULL); + +static ssize_t eui_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct nvme_ns *ns = dev_to_disk(dev)->private_data; + return sprintf(buf, "%8phd\n", ns->eui); +} +static DEVICE_ATTR(eui, S_IRUGO, eui_show, NULL); + +static ssize_t nsid_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct nvme_ns *ns = dev_to_disk(dev)->private_data; + return sprintf(buf, "%d\n", ns->ns_id); +} +static DEVICE_ATTR(nsid, S_IRUGO, nsid_show, NULL); + +static struct attribute *nvme_ns_attrs[] = { + &dev_attr_uuid.attr, + &dev_attr_eui.attr, + &dev_attr_nsid.attr, + NULL, +}; + +static umode_t nvme_attrs_are_visible(struct kobject *kobj, + struct attribute *a, int n) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct nvme_ns *ns = dev_to_disk(dev)->private_data; + + if (a == &dev_attr_uuid.attr) { + if (!memchr_inv(ns->uuid, 0, sizeof(ns->uuid))) + return 0; + } + if (a == &dev_attr_eui.attr) { + if (!memchr_inv(ns->eui, 0, sizeof(ns->eui))) + return 0; + } + return a->mode; +} + +static const struct attribute_group nvme_ns_attr_group = { + .attrs = nvme_ns_attrs, + .is_visible = nvme_attrs_are_visible, +}; + +#define nvme_show_function(field) \ +static ssize_t field##_show(struct device *dev, \ + struct device_attribute *attr, char *buf) \ +{ \ + struct nvme_ctrl *ctrl = dev_get_drvdata(dev); \ + return sprintf(buf, "%.*s\n", (int)sizeof(ctrl->field), ctrl->field); \ +} \ +static DEVICE_ATTR(field, S_IRUGO, field##_show, NULL); + +nvme_show_function(model); +nvme_show_function(serial); +nvme_show_function(firmware_rev); + +static struct attribute *nvme_dev_attrs[] = { + &dev_attr_reset_controller.attr, + &dev_attr_model.attr, + &dev_attr_serial.attr, + &dev_attr_firmware_rev.attr, + NULL +}; + +static struct attribute_group nvme_dev_attrs_group = { + .attrs = nvme_dev_attrs, +}; + +static const struct attribute_group *nvme_dev_attr_groups[] = { + &nvme_dev_attrs_group, + NULL, +}; + +static int ns_cmp(void *priv, struct list_head *a, struct list_head *b) +{ + struct nvme_ns *nsa = container_of(a, struct nvme_ns, list); + struct nvme_ns *nsb = container_of(b, struct nvme_ns, list); + + return nsa->ns_id - nsb->ns_id; +} + +static struct nvme_ns *nvme_find_ns(struct nvme_ctrl *ctrl, unsigned nsid) +{ + struct nvme_ns *ns; + + lockdep_assert_held(&ctrl->namespaces_mutex); + + list_for_each_entry(ns, &ctrl->namespaces, list) { + if (ns->ns_id == nsid) + return ns; + if (ns->ns_id > nsid) + break; + } + return NULL; +} + +static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid) +{ + struct nvme_ns *ns; + struct gendisk *disk; + int node = dev_to_node(ctrl->dev); + + lockdep_assert_held(&ctrl->namespaces_mutex); + + ns = kzalloc_node(sizeof(*ns), GFP_KERNEL, node); + if (!ns) + return; + + ns->instance = ida_simple_get(&ctrl->ns_ida, 1, 0, GFP_KERNEL); + if (ns->instance < 0) + goto out_free_ns; + + ns->queue = blk_mq_init_queue(ctrl->tagset); + if (IS_ERR(ns->queue)) + goto out_release_instance; + queue_flag_set_unlocked(QUEUE_FLAG_NONROT, ns->queue); + ns->queue->queuedata = ns; + ns->ctrl = ctrl; + + disk = alloc_disk_node(0, node); + if (!disk) + goto out_free_queue; + + kref_init(&ns->kref); + ns->ns_id = nsid; + ns->disk = disk; + ns->lba_shift = 9; /* set to a default value for 512 until disk is validated */ + + + blk_queue_logical_block_size(ns->queue, 1 << ns->lba_shift); + nvme_set_queue_limits(ctrl, ns->queue); + + disk->major = nvme_major; + disk->first_minor = 0; + disk->fops = &nvme_fops; + disk->private_data = ns; + disk->queue = ns->queue; + disk->driverfs_dev = ctrl->device; + disk->flags = GENHD_FL_EXT_DEVT; + sprintf(disk->disk_name, "nvme%dn%d", ctrl->instance, ns->instance); + + if (nvme_revalidate_disk(ns->disk)) + goto out_free_disk; + + list_add_tail(&ns->list, &ctrl->namespaces); + kref_get(&ctrl->kref); + if (ns->type == NVME_NS_LIGHTNVM) + return; + /* chamdoo */ +#ifdef ENABLE_HYNIX_DEV + if (ns->type == NVME_NS_HYNIX) { + printk (KERN_INFO "NVME_NS_HYNIX is detected\n"); + return; + } +#endif + /* end */ + + add_disk(ns->disk); + if (sysfs_create_group(&disk_to_dev(ns->disk)->kobj, + &nvme_ns_attr_group)) + pr_warn("%s: failed to create sysfs group for identification\n", + ns->disk->disk_name); + return; + out_free_disk: + kfree(disk); + out_free_queue: + blk_cleanup_queue(ns->queue); + out_release_instance: + ida_simple_remove(&ctrl->ns_ida, ns->instance); + out_free_ns: + kfree(ns); +} + +static void nvme_ns_remove(struct nvme_ns *ns) +{ + if (test_and_set_bit(NVME_NS_REMOVING, &ns->flags)) + return; + + if (ns->disk->flags & GENHD_FL_UP) { + if (blk_get_integrity(ns->disk)) + blk_integrity_unregister(ns->disk); + sysfs_remove_group(&disk_to_dev(ns->disk)->kobj, + &nvme_ns_attr_group); + del_gendisk(ns->disk); + blk_mq_abort_requeue_list(ns->queue); + blk_cleanup_queue(ns->queue); + } + mutex_lock(&ns->ctrl->namespaces_mutex); + list_del_init(&ns->list); + mutex_unlock(&ns->ctrl->namespaces_mutex); + nvme_put_ns(ns); +} + +static void nvme_validate_ns(struct nvme_ctrl *ctrl, unsigned nsid) +{ + struct nvme_ns *ns; + + ns = nvme_find_ns(ctrl, nsid); + if (ns) { + if (revalidate_disk(ns->disk)) + nvme_ns_remove(ns); + } else + nvme_alloc_ns(ctrl, nsid); +} + +static int nvme_scan_ns_list(struct nvme_ctrl *ctrl, unsigned nn) +{ + struct nvme_ns *ns; + __le32 *ns_list; + unsigned i, j, nsid, prev = 0, num_lists = DIV_ROUND_UP(nn, 1024); + int ret = 0; + + ns_list = kzalloc(0x1000, GFP_KERNEL); + if (!ns_list) + return -ENOMEM; + + for (i = 0; i < num_lists; i++) { + ret = nvme_identify_ns_list(ctrl, prev, ns_list); + if (ret) + goto out; + + for (j = 0; j < min(nn, 1024U); j++) { + nsid = le32_to_cpu(ns_list[j]); + if (!nsid) + goto out; + + nvme_validate_ns(ctrl, nsid); + + while (++prev < nsid) { + ns = nvme_find_ns(ctrl, prev); + if (ns) + nvme_ns_remove(ns); + } + } + nn -= j; + } + out: + kfree(ns_list); + return ret; +} + +static void __nvme_scan_namespaces(struct nvme_ctrl *ctrl, unsigned nn) +{ + struct nvme_ns *ns, *next; + unsigned i; + + lockdep_assert_held(&ctrl->namespaces_mutex); + + for (i = 1; i <= nn; i++) + nvme_validate_ns(ctrl, i); + + list_for_each_entry_safe(ns, next, &ctrl->namespaces, list) { + if (ns->ns_id > nn) + nvme_ns_remove(ns); + } +} + +void nvme_scan_namespaces(struct nvme_ctrl *ctrl) +{ + struct nvme_id_ctrl *id; + unsigned nn; + + if (nvme_identify_ctrl(ctrl, &id)) + return; + + mutex_lock(&ctrl->namespaces_mutex); + nn = le32_to_cpu(id->nn); + if (ctrl->vs >= NVME_VS(1, 1) && + !(ctrl->quirks & NVME_QUIRK_IDENTIFY_CNS)) { + if (!nvme_scan_ns_list(ctrl, nn)) + goto done; + } + __nvme_scan_namespaces(ctrl, le32_to_cpup(&id->nn)); + done: + list_sort(NULL, &ctrl->namespaces, ns_cmp); + mutex_unlock(&ctrl->namespaces_mutex); + kfree(id); +} + +void nvme_remove_namespaces(struct nvme_ctrl *ctrl) +{ + struct nvme_ns *ns, *next; + + list_for_each_entry_safe(ns, next, &ctrl->namespaces, list) + nvme_ns_remove(ns); +} + +static DEFINE_IDA(nvme_instance_ida); + +static int nvme_set_instance(struct nvme_ctrl *ctrl) +{ + int instance, error; + + do { + if (!ida_pre_get(&nvme_instance_ida, GFP_KERNEL)) + return -ENODEV; + + spin_lock(&dev_list_lock); + error = ida_get_new(&nvme_instance_ida, &instance); + spin_unlock(&dev_list_lock); + } while (error == -EAGAIN); + + if (error) + return -ENODEV; + + ctrl->instance = instance; + return 0; +} + +static void nvme_release_instance(struct nvme_ctrl *ctrl) +{ + spin_lock(&dev_list_lock); + ida_remove(&nvme_instance_ida, ctrl->instance); + spin_unlock(&dev_list_lock); +} + +void nvme_uninit_ctrl(struct nvme_ctrl *ctrl) + { + device_destroy(nvme_class, MKDEV(nvme_char_major, ctrl->instance)); + + spin_lock(&dev_list_lock); + list_del(&ctrl->node); + spin_unlock(&dev_list_lock); +} + +static void nvme_free_ctrl(struct kref *kref) +{ + struct nvme_ctrl *ctrl = container_of(kref, struct nvme_ctrl, kref); + + put_device(ctrl->device); + nvme_release_instance(ctrl); + ida_destroy(&ctrl->ns_ida); + + ctrl->ops->free_ctrl(ctrl); +} + +void nvme_put_ctrl(struct nvme_ctrl *ctrl) +{ + kref_put(&ctrl->kref, nvme_free_ctrl); +} + +/* + * Initialize a NVMe controller structures. This needs to be called during + * earliest initialization so that we have the initialized structured around + * during probing. + */ +int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev, + const struct nvme_ctrl_ops *ops, unsigned long quirks) +{ + int ret; + + INIT_LIST_HEAD(&ctrl->namespaces); + mutex_init(&ctrl->namespaces_mutex); + kref_init(&ctrl->kref); + ctrl->dev = dev; + ctrl->ops = ops; + ctrl->quirks = quirks; + + ret = nvme_set_instance(ctrl); + if (ret) + goto out; + + ctrl->device = device_create_with_groups(nvme_class, ctrl->dev, + MKDEV(nvme_char_major, ctrl->instance), + dev, nvme_dev_attr_groups, + "nvme%d", ctrl->instance); + if (IS_ERR(ctrl->device)) { + ret = PTR_ERR(ctrl->device); + goto out_release_instance; + } + get_device(ctrl->device); + dev_set_drvdata(ctrl->device, ctrl); + ida_init(&ctrl->ns_ida); + + spin_lock(&dev_list_lock); + list_add_tail(&ctrl->node, &nvme_ctrl_list); + spin_unlock(&dev_list_lock); + + return 0; +out_release_instance: + nvme_release_instance(ctrl); +out: + return ret; +} + +/** + * nvme_kill_queues(): Ends all namespace queues + * @ctrl: the dead controller that needs to end + * + * Call this function when the driver determines it is unable to get the + * controller in a state capable of servicing IO. + */ +void nvme_kill_queues(struct nvme_ctrl *ctrl) +{ + struct nvme_ns *ns; + + mutex_lock(&ctrl->namespaces_mutex); + list_for_each_entry(ns, &ctrl->namespaces, list) { + if (!kref_get_unless_zero(&ns->kref)) + continue; + + /* + * Revalidating a dead namespace sets capacity to 0. This will + * end buffered writers dirtying pages that can't be synced. + */ + if (!test_and_set_bit(NVME_NS_DEAD, &ns->flags)) + revalidate_disk(ns->disk); + + blk_set_queue_dying(ns->queue); + blk_mq_abort_requeue_list(ns->queue); + blk_mq_start_stopped_hw_queues(ns->queue, true); + + nvme_put_ns(ns); + } + mutex_unlock(&ctrl->namespaces_mutex); +} + +void nvme_stop_queues(struct nvme_ctrl *ctrl) +{ + struct nvme_ns *ns; + + mutex_lock(&ctrl->namespaces_mutex); + list_for_each_entry(ns, &ctrl->namespaces, list) { + spin_lock_irq(ns->queue->queue_lock); + queue_flag_set(QUEUE_FLAG_STOPPED, ns->queue); + spin_unlock_irq(ns->queue->queue_lock); + + blk_mq_cancel_requeue_work(ns->queue); + blk_mq_stop_hw_queues(ns->queue); + } + mutex_unlock(&ctrl->namespaces_mutex); +} + +void nvme_start_queues(struct nvme_ctrl *ctrl) +{ + struct nvme_ns *ns; + + mutex_lock(&ctrl->namespaces_mutex); + list_for_each_entry(ns, &ctrl->namespaces, list) { + queue_flag_clear_unlocked(QUEUE_FLAG_STOPPED, ns->queue); + blk_mq_start_stopped_hw_queues(ns->queue, true); + blk_mq_kick_requeue_list(ns->queue); + } + mutex_unlock(&ctrl->namespaces_mutex); +} + +int __init nvme_core_init(void) +{ + int result; + + result = register_blkdev(nvme_major, "nvme"); + if (result < 0) + return result; + else if (result > 0) + nvme_major = result; + + result = __register_chrdev(nvme_char_major, 0, NVME_MINORS, "nvme", + &nvme_dev_fops); + if (result < 0) + goto unregister_blkdev; + else if (result > 0) + nvme_char_major = result; + + nvme_class = class_create(THIS_MODULE, "nvme"); + if (IS_ERR(nvme_class)) { + result = PTR_ERR(nvme_class); + goto unregister_chrdev; + } + + return 0; + + unregister_chrdev: + __unregister_chrdev(nvme_char_major, 0, NVME_MINORS, "nvme"); + unregister_blkdev: + unregister_blkdev(nvme_major, "nvme"); + return result; +} + +void nvme_core_exit(void) +{ + unregister_blkdev(nvme_major, "nvme"); + class_destroy(nvme_class); + __unregister_chrdev(nvme_char_major, 0, NVME_MINORS, "nvme"); +} diff --git a/tools/nvmedrv-v4.5.3/lightnvm.c b/tools/nvmedrv-v4.5.3/lightnvm.c new file mode 100644 index 0000000..9b9b228 --- /dev/null +++ b/tools/nvmedrv-v4.5.3/lightnvm.c @@ -0,0 +1,619 @@ +/* + * nvme-lightnvm.c - LightNVM NVMe device + * + * Copyright (C) 2014-2015 IT University of Copenhagen + * Initial release: Matias Bjorling + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, + * USA. + * + */ + +#include "nvme.h" + +#include +#include +#include +#include + +enum nvme_nvm_admin_opcode { + nvme_nvm_admin_identity = 0xe2, + nvme_nvm_admin_get_l2p_tbl = 0xea, + nvme_nvm_admin_get_bb_tbl = 0xf2, + nvme_nvm_admin_set_bb_tbl = 0xf1, +}; + +struct nvme_nvm_hb_rw { + __u8 opcode; + __u8 flags; + __u16 command_id; + __le32 nsid; + __u64 rsvd2; + __le64 metadata; + __le64 prp1; + __le64 prp2; + __le64 spba; + __le16 length; + __le16 control; + __le32 dsmgmt; + __le64 slba; +}; + +struct nvme_nvm_ph_rw { + __u8 opcode; + __u8 flags; + __u16 command_id; + __le32 nsid; + __u64 rsvd2; + __le64 metadata; + __le64 prp1; + __le64 prp2; + __le64 spba; + __le16 length; + __le16 control; + __le32 dsmgmt; + __le64 resv; +}; + +struct nvme_nvm_identity { + __u8 opcode; + __u8 flags; + __u16 command_id; + __le32 nsid; + __u64 rsvd[2]; + __le64 prp1; + __le64 prp2; + __le32 chnl_off; + __u32 rsvd11[5]; +}; + +struct nvme_nvm_l2ptbl { + __u8 opcode; + __u8 flags; + __u16 command_id; + __le32 nsid; + __le32 cdw2[4]; + __le64 prp1; + __le64 prp2; + __le64 slba; + __le32 nlb; + __le16 cdw14[6]; +}; + +struct nvme_nvm_getbbtbl { + __u8 opcode; + __u8 flags; + __u16 command_id; + __le32 nsid; + __u64 rsvd[2]; + __le64 prp1; + __le64 prp2; + __le64 spba; + __u32 rsvd4[4]; +}; + +struct nvme_nvm_setbbtbl { + __u8 opcode; + __u8 flags; + __u16 command_id; + __le32 nsid; + __le64 rsvd[2]; + __le64 prp1; + __le64 prp2; + __le64 spba; + __le16 nlb; + __u8 value; + __u8 rsvd3; + __u32 rsvd4[3]; +}; + +struct nvme_nvm_erase_blk { + __u8 opcode; + __u8 flags; + __u16 command_id; + __le32 nsid; + __u64 rsvd[2]; + __le64 prp1; + __le64 prp2; + __le64 spba; + __le16 length; + __le16 control; + __le32 dsmgmt; + __le64 resv; +}; + +struct nvme_nvm_command { + union { + struct nvme_common_command common; + struct nvme_nvm_identity identity; + struct nvme_nvm_hb_rw hb_rw; + struct nvme_nvm_ph_rw ph_rw; + struct nvme_nvm_l2ptbl l2p; + struct nvme_nvm_getbbtbl get_bb; + struct nvme_nvm_setbbtbl set_bb; + struct nvme_nvm_erase_blk erase; + }; +}; + +#define NVME_NVM_LP_MLC_PAIRS 886 +struct nvme_nvm_lp_mlc { + __u16 num_pairs; + __u8 pairs[NVME_NVM_LP_MLC_PAIRS]; +}; + +struct nvme_nvm_lp_tbl { + __u8 id[8]; + struct nvme_nvm_lp_mlc mlc; +}; + +struct nvme_nvm_id_group { + __u8 mtype; + __u8 fmtype; + __le16 res16; + __u8 num_ch; + __u8 num_lun; + __u8 num_pln; + __u8 rsvd1; + __le16 num_blk; + __le16 num_pg; + __le16 fpg_sz; + __le16 csecs; + __le16 sos; + __le16 rsvd2; + __le32 trdt; + __le32 trdm; + __le32 tprt; + __le32 tprm; + __le32 tbet; + __le32 tbem; + __le32 mpos; + __le32 mccap; + __le16 cpar; + __u8 reserved[10]; + struct nvme_nvm_lp_tbl lptbl; +} __packed; + +struct nvme_nvm_addr_format { + __u8 ch_offset; + __u8 ch_len; + __u8 lun_offset; + __u8 lun_len; + __u8 pln_offset; + __u8 pln_len; + __u8 blk_offset; + __u8 blk_len; + __u8 pg_offset; + __u8 pg_len; + __u8 sect_offset; + __u8 sect_len; + __u8 res[4]; +} __packed; + +struct nvme_nvm_id { + __u8 ver_id; + __u8 vmnt; + __u8 cgrps; + __u8 res; + __le32 cap; + __le32 dom; + struct nvme_nvm_addr_format ppaf; + __u8 resv[228]; + struct nvme_nvm_id_group groups[4]; +} __packed; + +struct nvme_nvm_bb_tbl { + __u8 tblid[4]; + __le16 verid; + __le16 revid; + __le32 rvsd1; + __le32 tblks; + __le32 tfact; + __le32 tgrown; + __le32 tdresv; + __le32 thresv; + __le32 rsvd2[8]; + __u8 blk[0]; +}; + +/* + * Check we didn't inadvertently grow the command struct + */ +static inline void _nvme_nvm_check_size(void) +{ + BUILD_BUG_ON(sizeof(struct nvme_nvm_identity) != 64); + BUILD_BUG_ON(sizeof(struct nvme_nvm_hb_rw) != 64); + BUILD_BUG_ON(sizeof(struct nvme_nvm_ph_rw) != 64); + BUILD_BUG_ON(sizeof(struct nvme_nvm_getbbtbl) != 64); + BUILD_BUG_ON(sizeof(struct nvme_nvm_setbbtbl) != 64); + BUILD_BUG_ON(sizeof(struct nvme_nvm_l2ptbl) != 64); + BUILD_BUG_ON(sizeof(struct nvme_nvm_erase_blk) != 64); + BUILD_BUG_ON(sizeof(struct nvme_nvm_id_group) != 960); + BUILD_BUG_ON(sizeof(struct nvme_nvm_addr_format) != 128); + BUILD_BUG_ON(sizeof(struct nvme_nvm_id) != 4096); + BUILD_BUG_ON(sizeof(struct nvme_nvm_bb_tbl) != 512); +} + +static int init_grps(struct nvm_id *nvm_id, struct nvme_nvm_id *nvme_nvm_id) +{ + struct nvme_nvm_id_group *src; + struct nvm_id_group *dst; + int i, end; + + end = min_t(u32, 4, nvm_id->cgrps); + + for (i = 0; i < end; i++) { + src = &nvme_nvm_id->groups[i]; + dst = &nvm_id->groups[i]; + + dst->mtype = src->mtype; + dst->fmtype = src->fmtype; + dst->num_ch = src->num_ch; + dst->num_lun = src->num_lun; + dst->num_pln = src->num_pln; + + dst->num_pg = le16_to_cpu(src->num_pg); + dst->num_blk = le16_to_cpu(src->num_blk); + dst->fpg_sz = le16_to_cpu(src->fpg_sz); + dst->csecs = le16_to_cpu(src->csecs); + dst->sos = le16_to_cpu(src->sos); + + dst->trdt = le32_to_cpu(src->trdt); + dst->trdm = le32_to_cpu(src->trdm); + dst->tprt = le32_to_cpu(src->tprt); + dst->tprm = le32_to_cpu(src->tprm); + dst->tbet = le32_to_cpu(src->tbet); + dst->tbem = le32_to_cpu(src->tbem); + dst->mpos = le32_to_cpu(src->mpos); + dst->mccap = le32_to_cpu(src->mccap); + + dst->cpar = le16_to_cpu(src->cpar); + + if (dst->fmtype == NVM_ID_FMTYPE_MLC) { + memcpy(dst->lptbl.id, src->lptbl.id, 8); + dst->lptbl.mlc.num_pairs = + le16_to_cpu(src->lptbl.mlc.num_pairs); + + if (dst->lptbl.mlc.num_pairs > NVME_NVM_LP_MLC_PAIRS) { + pr_err("nvm: number of MLC pairs not supported\n"); + return -EINVAL; + } + + memcpy(dst->lptbl.mlc.pairs, src->lptbl.mlc.pairs, + dst->lptbl.mlc.num_pairs); + } + } + + return 0; +} + +static int nvme_nvm_identity(struct nvm_dev *nvmdev, struct nvm_id *nvm_id) +{ + struct nvme_ns *ns = nvmdev->q->queuedata; + struct nvme_nvm_id *nvme_nvm_id; + struct nvme_nvm_command c = {}; + int ret; + + c.identity.opcode = nvme_nvm_admin_identity; + c.identity.nsid = cpu_to_le32(ns->ns_id); + c.identity.chnl_off = 0; + + nvme_nvm_id = kmalloc(sizeof(struct nvme_nvm_id), GFP_KERNEL); + if (!nvme_nvm_id) + return -ENOMEM; + + ret = nvme_submit_sync_cmd(ns->ctrl->admin_q, (struct nvme_command *)&c, + nvme_nvm_id, sizeof(struct nvme_nvm_id)); + if (ret) { + ret = -EIO; + goto out; + } + + nvm_id->ver_id = nvme_nvm_id->ver_id; + nvm_id->vmnt = nvme_nvm_id->vmnt; + nvm_id->cgrps = nvme_nvm_id->cgrps; + nvm_id->cap = le32_to_cpu(nvme_nvm_id->cap); + nvm_id->dom = le32_to_cpu(nvme_nvm_id->dom); + memcpy(&nvm_id->ppaf, &nvme_nvm_id->ppaf, + sizeof(struct nvme_nvm_addr_format)); + + ret = init_grps(nvm_id, nvme_nvm_id); +out: + kfree(nvme_nvm_id); + return ret; +} + +static int nvme_nvm_get_l2p_tbl(struct nvm_dev *nvmdev, u64 slba, u32 nlb, + nvm_l2p_update_fn *update_l2p, void *priv) +{ + struct nvme_ns *ns = nvmdev->q->queuedata; + struct nvme_nvm_command c = {}; + u32 len = queue_max_hw_sectors(ns->ctrl->admin_q) << 9; + u32 nlb_pr_rq = len / sizeof(u64); + u64 cmd_slba = slba; + void *entries; + int ret = 0; + + c.l2p.opcode = nvme_nvm_admin_get_l2p_tbl; + c.l2p.nsid = cpu_to_le32(ns->ns_id); + entries = kmalloc(len, GFP_KERNEL); + if (!entries) + return -ENOMEM; + + while (nlb) { + u32 cmd_nlb = min(nlb_pr_rq, nlb); + + c.l2p.slba = cpu_to_le64(cmd_slba); + c.l2p.nlb = cpu_to_le32(cmd_nlb); + + ret = nvme_submit_sync_cmd(ns->ctrl->admin_q, + (struct nvme_command *)&c, entries, len); + if (ret) { + dev_err(ns->ctrl->dev, "L2P table transfer failed (%d)\n", + ret); + ret = -EIO; + goto out; + } + + if (update_l2p(cmd_slba, cmd_nlb, entries, priv)) { + ret = -EINTR; + goto out; + } + + cmd_slba += cmd_nlb; + nlb -= cmd_nlb; + } + +out: + kfree(entries); + return ret; +} + +static int nvme_nvm_get_bb_tbl(struct nvm_dev *nvmdev, struct ppa_addr ppa, + int nr_blocks, nvm_bb_update_fn *update_bbtbl, + void *priv) +{ + struct request_queue *q = nvmdev->q; + struct nvme_ns *ns = q->queuedata; + struct nvme_ctrl *ctrl = ns->ctrl; + struct nvme_nvm_command c = {}; + struct nvme_nvm_bb_tbl *bb_tbl; + int tblsz = sizeof(struct nvme_nvm_bb_tbl) + nr_blocks; + int ret = 0; + + c.get_bb.opcode = nvme_nvm_admin_get_bb_tbl; + c.get_bb.nsid = cpu_to_le32(ns->ns_id); + c.get_bb.spba = cpu_to_le64(ppa.ppa); + + bb_tbl = kzalloc(tblsz, GFP_KERNEL); + if (!bb_tbl) + return -ENOMEM; + + ret = nvme_submit_sync_cmd(ctrl->admin_q, (struct nvme_command *)&c, + bb_tbl, tblsz); + if (ret) { + dev_err(ctrl->dev, "get bad block table failed (%d)\n", ret); + ret = -EIO; + goto out; + } + + if (bb_tbl->tblid[0] != 'B' || bb_tbl->tblid[1] != 'B' || + bb_tbl->tblid[2] != 'L' || bb_tbl->tblid[3] != 'T') { + dev_err(ctrl->dev, "bbt format mismatch\n"); + ret = -EINVAL; + goto out; + } + + if (le16_to_cpu(bb_tbl->verid) != 1) { + ret = -EINVAL; + dev_err(ctrl->dev, "bbt version not supported\n"); + goto out; + } + + if (le32_to_cpu(bb_tbl->tblks) != nr_blocks) { + ret = -EINVAL; + dev_err(ctrl->dev, "bbt unsuspected blocks returned (%u!=%u)", + le32_to_cpu(bb_tbl->tblks), nr_blocks); + goto out; + } + + ppa = dev_to_generic_addr(nvmdev, ppa); + ret = update_bbtbl(ppa, nr_blocks, bb_tbl->blk, priv); +out: + kfree(bb_tbl); + return ret; +} + +static int nvme_nvm_set_bb_tbl(struct nvm_dev *nvmdev, struct nvm_rq *rqd, + int type) +{ + struct nvme_ns *ns = nvmdev->q->queuedata; + struct nvme_nvm_command c = {}; + int ret = 0; + + c.set_bb.opcode = nvme_nvm_admin_set_bb_tbl; + c.set_bb.nsid = cpu_to_le32(ns->ns_id); + c.set_bb.spba = cpu_to_le64(rqd->ppa_addr.ppa); + c.set_bb.nlb = cpu_to_le16(rqd->nr_pages - 1); + c.set_bb.value = type; + + ret = nvme_submit_sync_cmd(ns->ctrl->admin_q, (struct nvme_command *)&c, + NULL, 0); + if (ret) + dev_err(ns->ctrl->dev, "set bad block table failed (%d)\n", ret); + return ret; +} + +static inline void nvme_nvm_rqtocmd(struct request *rq, struct nvm_rq *rqd, + struct nvme_ns *ns, struct nvme_nvm_command *c) +{ + c->ph_rw.opcode = rqd->opcode; + c->ph_rw.nsid = cpu_to_le32(ns->ns_id); + c->ph_rw.spba = cpu_to_le64(rqd->ppa_addr.ppa); + c->ph_rw.control = cpu_to_le16(rqd->flags); + c->ph_rw.length = cpu_to_le16(rqd->nr_pages - 1); + + if (rqd->opcode == NVM_OP_HBWRITE || rqd->opcode == NVM_OP_HBREAD) + c->hb_rw.slba = cpu_to_le64(nvme_block_nr(ns, + rqd->bio->bi_iter.bi_sector)); +} + +static void nvme_nvm_end_io(struct request *rq, int error) +{ + struct nvm_rq *rqd = rq->end_io_data; + + printk (KERN_INFO "nvme_nvm_end_io\n"); + + nvm_end_io(rqd, error); + + kfree(rq->cmd); + blk_mq_free_request(rq); +} + +static int nvme_nvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd) +{ + struct request_queue *q = dev->q; + struct nvme_ns *ns = q->queuedata; + struct request *rq; + struct bio *bio = rqd->bio; + struct nvme_nvm_command *cmd; + + printk (KERN_INFO "nvme_nvm_submit_io\n"); + + rq = blk_mq_alloc_request(q, bio_rw(bio), 0); + if (IS_ERR(rq)) + return -ENOMEM; + + cmd = kzalloc(sizeof(struct nvme_nvm_command), GFP_KERNEL); + if (!cmd) { + blk_mq_free_request(rq); + return -ENOMEM; + } + + rq->cmd_type = REQ_TYPE_DRV_PRIV; + rq->ioprio = bio_prio(bio); + + if (bio_has_data(bio)) + rq->nr_phys_segments = bio_phys_segments(q, bio); + + rq->__data_len = bio->bi_iter.bi_size; + rq->bio = rq->biotail = bio; + + nvme_nvm_rqtocmd(rq, rqd, ns, cmd); + + rq->cmd = (unsigned char *)cmd; + rq->cmd_len = sizeof(struct nvme_nvm_command); + rq->special = (void *)0; + + rq->end_io_data = rqd; + + blk_execute_rq_nowait(q, NULL, rq, 0, nvme_nvm_end_io); + + return 0; +} + +static int nvme_nvm_erase_block(struct nvm_dev *dev, struct nvm_rq *rqd) +{ + struct request_queue *q = dev->q; + struct nvme_ns *ns = q->queuedata; + struct nvme_nvm_command c = {}; + + c.erase.opcode = NVM_OP_ERASE; + c.erase.nsid = cpu_to_le32(ns->ns_id); + c.erase.spba = cpu_to_le64(rqd->ppa_addr.ppa); + c.erase.length = cpu_to_le16(rqd->nr_pages - 1); + + return nvme_submit_sync_cmd(q, (struct nvme_command *)&c, NULL, 0); +} + +static void *nvme_nvm_create_dma_pool(struct nvm_dev *nvmdev, char *name) +{ + struct nvme_ns *ns = nvmdev->q->queuedata; + + return dma_pool_create(name, ns->ctrl->dev, PAGE_SIZE, PAGE_SIZE, 0); +} + +static void nvme_nvm_destroy_dma_pool(void *pool) +{ + struct dma_pool *dma_pool = pool; + + dma_pool_destroy(dma_pool); +} + +static void *nvme_nvm_dev_dma_alloc(struct nvm_dev *dev, void *pool, + gfp_t mem_flags, dma_addr_t *dma_handler) +{ + return dma_pool_alloc(pool, mem_flags, dma_handler); +} + +static void nvme_nvm_dev_dma_free(void *pool, void *ppa_list, + dma_addr_t dma_handler) +{ + dma_pool_free(pool, ppa_list, dma_handler); +} + +static struct nvm_dev_ops nvme_nvm_dev_ops = { + .identity = nvme_nvm_identity, + + .get_l2p_tbl = nvme_nvm_get_l2p_tbl, + + .get_bb_tbl = nvme_nvm_get_bb_tbl, + .set_bb_tbl = nvme_nvm_set_bb_tbl, + + .submit_io = nvme_nvm_submit_io, + .erase_block = nvme_nvm_erase_block, + + .create_dma_pool = nvme_nvm_create_dma_pool, + .destroy_dma_pool = nvme_nvm_destroy_dma_pool, + .dev_dma_alloc = nvme_nvm_dev_dma_alloc, + .dev_dma_free = nvme_nvm_dev_dma_free, + + .max_phys_sect = 64, +}; + +int nvme_nvm_register(struct request_queue *q, char *disk_name) +{ + printk (KERN_INFO "nvme_nvm_register\n"); + return nvm_register(q, disk_name, &nvme_nvm_dev_ops); +} + +void nvme_nvm_unregister(struct request_queue *q, char *disk_name) +{ + nvm_unregister(disk_name); +} + +/* move to shared place when used in multiple places. */ +#define PCI_VENDOR_ID_CNEX 0x1d1d +#define PCI_DEVICE_ID_CNEX_WL 0x2807 +#define PCI_DEVICE_ID_CNEX_QEMU 0x1f1f + +int nvme_nvm_ns_supported(struct nvme_ns *ns, struct nvme_id_ns *id) +{ + struct nvme_ctrl *ctrl = ns->ctrl; + /* XXX: this is poking into PCI structures from generic code! */ + struct pci_dev *pdev = to_pci_dev(ctrl->dev); + + /* QEMU NVMe simulator - PCI ID + Vendor specific bit */ + if (pdev->vendor == PCI_VENDOR_ID_CNEX && + pdev->device == PCI_DEVICE_ID_CNEX_QEMU && + id->vs[0] == 0x1) + return 1; + + /* CNEX Labs - PCI ID + Vendor specific bit */ + if (pdev->vendor == PCI_VENDOR_ID_CNEX && + pdev->device == PCI_DEVICE_ID_CNEX_WL && + id->vs[0] == 0x1) + return 1; + + return 0; +} diff --git a/tools/nvmedrv-v4.5.3/nvme.h b/tools/nvmedrv-v4.5.3/nvme.h new file mode 100644 index 0000000..e839542 --- /dev/null +++ b/tools/nvmedrv-v4.5.3/nvme.h @@ -0,0 +1,308 @@ +/* + * Copyright (c) 2011-2014, Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + */ + +#ifndef _NVME_H +#define _NVME_H + +#include +#include +#include +#include + +enum { + /* + * Driver internal status code for commands that were cancelled due + * to timeouts or controller shutdown. The value is negative so + * that it a) doesn't overlap with the unsigned hardware error codes, + * and b) can easily be tested for. + */ + NVME_SC_CANCELLED = -EINTR, +}; + +extern unsigned char nvme_io_timeout; +#define NVME_IO_TIMEOUT (nvme_io_timeout * HZ) + +extern unsigned char admin_timeout; +#define ADMIN_TIMEOUT (admin_timeout * HZ) + +extern unsigned char shutdown_timeout; +#define SHUTDOWN_TIMEOUT (shutdown_timeout * HZ) + +enum { + NVME_NS_LBA = 0, + NVME_NS_LIGHTNVM = 1, + /* chamdoo */ + NVME_NS_HYNIX = 2, + /* end */ +}; + +/* + * List of workarounds for devices that required behavior not specified in + * the standard. + */ +enum nvme_quirks { + /* + * Prefers I/O aligned to a stripe size specified in a vendor + * specific Identify field. + */ + NVME_QUIRK_STRIPE_SIZE = (1 << 0), + + /* + * The controller doesn't handle Identify value others than 0 or 1 + * correctly. + */ + NVME_QUIRK_IDENTIFY_CNS = (1 << 1), +}; + +struct nvme_ctrl { + const struct nvme_ctrl_ops *ops; + struct request_queue *admin_q; + struct device *dev; + struct kref kref; + int instance; + struct blk_mq_tag_set *tagset; + struct list_head namespaces; + struct mutex namespaces_mutex; + struct device *device; /* char device */ + struct list_head node; + struct ida ns_ida; + + char name[12]; + char serial[20]; + char model[40]; + char firmware_rev[8]; + + u32 ctrl_config; + + u32 page_size; + u32 max_hw_sectors; + u32 stripe_size; + u16 oncs; + atomic_t abort_limit; + u8 event_limit; + u8 vwc; + u32 vs; + bool subsystem; + unsigned long quirks; +}; + +/* + * An NVM Express namespace is equivalent to a SCSI LUN + */ +struct nvme_ns { + struct list_head list; + + struct nvme_ctrl *ctrl; + struct request_queue *queue; + struct gendisk *disk; + struct kref kref; + int instance; + + u8 eui[8]; + u8 uuid[16]; + + unsigned ns_id; + int lba_shift; + u16 ms; + bool ext; + u8 pi_type; + int type; + unsigned long flags; + +#define NVME_NS_REMOVING 0 +#define NVME_NS_DEAD 1 + + u64 mode_select_num_blocks; + u32 mode_select_block_len; +}; + +struct nvme_ctrl_ops { + int (*reg_read32)(struct nvme_ctrl *ctrl, u32 off, u32 *val); + int (*reg_write32)(struct nvme_ctrl *ctrl, u32 off, u32 val); + int (*reg_read64)(struct nvme_ctrl *ctrl, u32 off, u64 *val); + bool (*io_incapable)(struct nvme_ctrl *ctrl); + int (*reset_ctrl)(struct nvme_ctrl *ctrl); + void (*free_ctrl)(struct nvme_ctrl *ctrl); +}; + +static inline bool nvme_ctrl_ready(struct nvme_ctrl *ctrl) +{ + u32 val = 0; + + if (ctrl->ops->reg_read32(ctrl, NVME_REG_CSTS, &val)) + return false; + return val & NVME_CSTS_RDY; +} + +static inline bool nvme_io_incapable(struct nvme_ctrl *ctrl) +{ + u32 val = 0; + + if (ctrl->ops->io_incapable(ctrl)) + return true; + if (ctrl->ops->reg_read32(ctrl, NVME_REG_CSTS, &val)) + return true; + return val & NVME_CSTS_CFS; +} + +static inline int nvme_reset_subsystem(struct nvme_ctrl *ctrl) +{ + if (!ctrl->subsystem) + return -ENOTTY; + return ctrl->ops->reg_write32(ctrl, NVME_REG_NSSR, 0x4E564D65); +} + +static inline u64 nvme_block_nr(struct nvme_ns *ns, sector_t sector) +{ + return (sector >> (ns->lba_shift - 9)); +} + +static inline void nvme_setup_flush(struct nvme_ns *ns, + struct nvme_command *cmnd) +{ + memset(cmnd, 0, sizeof(*cmnd)); + cmnd->common.opcode = nvme_cmd_flush; + cmnd->common.nsid = cpu_to_le32(ns->ns_id); +} + +static inline void nvme_setup_rw(struct nvme_ns *ns, struct request *req, + struct nvme_command *cmnd) +{ + u16 control = 0; + u32 dsmgmt = 0; + + if (req->cmd_flags & REQ_FUA) + control |= NVME_RW_FUA; + if (req->cmd_flags & (REQ_FAILFAST_DEV | REQ_RAHEAD)) + control |= NVME_RW_LR; + + if (req->cmd_flags & REQ_RAHEAD) + dsmgmt |= NVME_RW_DSM_FREQ_PREFETCH; + + memset(cmnd, 0, sizeof(*cmnd)); + cmnd->rw.opcode = (rq_data_dir(req) ? nvme_cmd_write : nvme_cmd_read); + cmnd->rw.command_id = req->tag; + cmnd->rw.nsid = cpu_to_le32(ns->ns_id); + cmnd->rw.slba = cpu_to_le64(nvme_block_nr(ns, blk_rq_pos(req))); + cmnd->rw.length = cpu_to_le16((blk_rq_bytes(req) >> ns->lba_shift) - 1); + + if (ns->ms) { + switch (ns->pi_type) { + case NVME_NS_DPS_PI_TYPE3: + control |= NVME_RW_PRINFO_PRCHK_GUARD; + break; + case NVME_NS_DPS_PI_TYPE1: + case NVME_NS_DPS_PI_TYPE2: + control |= NVME_RW_PRINFO_PRCHK_GUARD | + NVME_RW_PRINFO_PRCHK_REF; + cmnd->rw.reftag = cpu_to_le32( + nvme_block_nr(ns, blk_rq_pos(req))); + break; + } + if (!blk_integrity_rq(req)) + control |= NVME_RW_PRINFO_PRACT; + } + + cmnd->rw.control = cpu_to_le16(control); + cmnd->rw.dsmgmt = cpu_to_le32(dsmgmt); +} + + +static inline int nvme_error_status(u16 status) +{ + switch (status & 0x7ff) { + case NVME_SC_SUCCESS: + return 0; + case NVME_SC_CAP_EXCEEDED: + return -ENOSPC; + default: + return -EIO; + } +} + +static inline bool nvme_req_needs_retry(struct request *req, u16 status) +{ + return !(status & NVME_SC_DNR || blk_noretry_request(req)) && + (jiffies - req->start_time) < req->timeout; +} + +int nvme_disable_ctrl(struct nvme_ctrl *ctrl, u64 cap); +int nvme_enable_ctrl(struct nvme_ctrl *ctrl, u64 cap); +int nvme_shutdown_ctrl(struct nvme_ctrl *ctrl); +int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev, + const struct nvme_ctrl_ops *ops, unsigned long quirks); +void nvme_uninit_ctrl(struct nvme_ctrl *ctrl); +void nvme_put_ctrl(struct nvme_ctrl *ctrl); +int nvme_init_identify(struct nvme_ctrl *ctrl); + +void nvme_scan_namespaces(struct nvme_ctrl *ctrl); +void nvme_remove_namespaces(struct nvme_ctrl *ctrl); + +void nvme_stop_queues(struct nvme_ctrl *ctrl); +void nvme_start_queues(struct nvme_ctrl *ctrl); +void nvme_kill_queues(struct nvme_ctrl *ctrl); + +struct request *nvme_alloc_request(struct request_queue *q, + struct nvme_command *cmd, unsigned int flags); +void nvme_requeue_req(struct request *req); +int nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd, + void *buf, unsigned bufflen); +int __nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd, + void *buffer, unsigned bufflen, u32 *result, unsigned timeout); +int nvme_submit_user_cmd(struct request_queue *q, struct nvme_command *cmd, + void __user *ubuffer, unsigned bufflen, u32 *result, + unsigned timeout); +int __nvme_submit_user_cmd(struct request_queue *q, struct nvme_command *cmd, + void __user *ubuffer, unsigned bufflen, + void __user *meta_buffer, unsigned meta_len, u32 meta_seed, + u32 *result, unsigned timeout); +int nvme_identify_ctrl(struct nvme_ctrl *dev, struct nvme_id_ctrl **id); +int nvme_identify_ns(struct nvme_ctrl *dev, unsigned nsid, + struct nvme_id_ns **id); +int nvme_get_log_page(struct nvme_ctrl *dev, struct nvme_smart_log **log); +int nvme_get_features(struct nvme_ctrl *dev, unsigned fid, unsigned nsid, + dma_addr_t dma_addr, u32 *result); +int nvme_set_features(struct nvme_ctrl *dev, unsigned fid, unsigned dword11, + dma_addr_t dma_addr, u32 *result); +int nvme_set_queue_count(struct nvme_ctrl *ctrl, int *count); + +extern spinlock_t dev_list_lock; + +struct sg_io_hdr; + +int nvme_sg_io(struct nvme_ns *ns, struct sg_io_hdr __user *u_hdr); +int nvme_sg_io32(struct nvme_ns *ns, unsigned long arg); +int nvme_sg_get_version_num(int __user *ip); + +#ifdef CONFIG_NVM +int nvme_nvm_ns_supported(struct nvme_ns *ns, struct nvme_id_ns *id); +int nvme_nvm_register(struct request_queue *q, char *disk_name); +void nvme_nvm_unregister(struct request_queue *q, char *disk_name); +#else +static inline int nvme_nvm_register(struct request_queue *q, char *disk_name) +{ + return 0; +} + +static inline void nvme_nvm_unregister(struct request_queue *q, char *disk_name) {}; + +static inline int nvme_nvm_ns_supported(struct nvme_ns *ns, struct nvme_id_ns *id) +{ + return 0; +} +#endif /* CONFIG_NVM */ + +int __init nvme_core_init(void); +void nvme_core_exit(void); + +#endif /* _NVME_H */ diff --git a/tools/nvmedrv-v4.5.3/pci.c b/tools/nvmedrv-v4.5.3/pci.c new file mode 100644 index 0000000..680f578 --- /dev/null +++ b/tools/nvmedrv-v4.5.3/pci.c @@ -0,0 +1,2295 @@ +/* + * NVM Express device driver + * Copyright (c) 2011-2014, Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "nvme.h" + +#define NVME_Q_DEPTH 1024 +#define NVME_AQ_DEPTH 256 +#define SQ_SIZE(depth) (depth * sizeof(struct nvme_command)) +#define CQ_SIZE(depth) (depth * sizeof(struct nvme_completion)) + +/* + * We handle AEN commands ourselves and don't even let the + * block layer know about them. + */ +#define NVME_NR_AEN_COMMANDS 1 +#define NVME_AQ_BLKMQ_DEPTH (NVME_AQ_DEPTH - NVME_NR_AEN_COMMANDS) + +unsigned char admin_timeout = 60; +module_param(admin_timeout, byte, 0644); +MODULE_PARM_DESC(admin_timeout, "timeout in seconds for admin commands"); + +unsigned char nvme_io_timeout = 30; +module_param_named(io_timeout, nvme_io_timeout, byte, 0644); +MODULE_PARM_DESC(io_timeout, "timeout in seconds for I/O"); + +unsigned char shutdown_timeout = 5; +module_param(shutdown_timeout, byte, 0644); +MODULE_PARM_DESC(shutdown_timeout, "timeout in seconds for controller shutdown"); + +static int use_threaded_interrupts; +module_param(use_threaded_interrupts, int, 0); + +static bool use_cmb_sqes = true; +module_param(use_cmb_sqes, bool, 0644); +MODULE_PARM_DESC(use_cmb_sqes, "use controller's memory buffer for I/O SQes"); + +static LIST_HEAD(dev_list); +static struct task_struct *nvme_thread; +static struct workqueue_struct *nvme_workq; +static wait_queue_head_t nvme_kthread_wait; + +struct nvme_dev; +struct nvme_queue; + +static int nvme_reset(struct nvme_dev *dev); +static void nvme_process_cq(struct nvme_queue *nvmeq); +static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown); + +/* + * Represents an NVM Express device. Each nvme_dev is a PCI function. + */ +struct nvme_dev { + struct list_head node; + struct nvme_queue **queues; + struct blk_mq_tag_set tagset; + struct blk_mq_tag_set admin_tagset; + u32 __iomem *dbs; + struct device *dev; + struct dma_pool *prp_page_pool; + struct dma_pool *prp_small_pool; + unsigned queue_count; + unsigned online_queues; + unsigned max_qid; + int q_depth; + u32 db_stride; + struct msix_entry *entry; + void __iomem *bar; + struct work_struct reset_work; + struct work_struct scan_work; + struct work_struct remove_work; + struct mutex shutdown_lock; + bool subsystem; + void __iomem *cmb; + dma_addr_t cmb_dma_addr; + u64 cmb_size; + u32 cmbsz; + unsigned long flags; + +#define NVME_CTRL_RESETTING 0 +#define NVME_CTRL_REMOVING 1 + + struct nvme_ctrl ctrl; + struct completion ioq_wait; +}; + +static inline struct nvme_dev *to_nvme_dev(struct nvme_ctrl *ctrl) +{ + return container_of(ctrl, struct nvme_dev, ctrl); +} + +/* + * An NVM Express queue. Each device has at least two (one for admin + * commands and one for I/O commands). + */ +struct nvme_queue { + struct device *q_dmadev; + struct nvme_dev *dev; + char irqname[24]; /* nvme4294967295-65535\0 */ + spinlock_t q_lock; + struct nvme_command *sq_cmds; + struct nvme_command __iomem *sq_cmds_io; + volatile struct nvme_completion *cqes; + struct blk_mq_tags **tags; + dma_addr_t sq_dma_addr; + dma_addr_t cq_dma_addr; + u32 __iomem *q_db; + u16 q_depth; + s16 cq_vector; + u16 sq_head; + u16 sq_tail; + u16 cq_head; + u16 qid; + u8 cq_phase; + u8 cqe_seen; +}; + +/* + * The nvme_iod describes the data in an I/O, including the list of PRP + * entries. You can't see it in this data structure because C doesn't let + * me express that. Use nvme_init_iod to ensure there's enough space + * allocated to store the PRP list. + */ +struct nvme_iod { + struct nvme_queue *nvmeq; + int aborted; + int npages; /* In the PRP list. 0 means small pool in use */ + int nents; /* Used in scatterlist */ + int length; /* Of data, in bytes */ + dma_addr_t first_dma; + struct scatterlist meta_sg; /* metadata requires single contiguous buffer */ + struct scatterlist *sg; + struct scatterlist inline_sg[0]; +}; + +/* + * Check we didin't inadvertently grow the command struct + */ +static inline void _nvme_check_size(void) +{ + BUILD_BUG_ON(sizeof(struct nvme_rw_command) != 64); + BUILD_BUG_ON(sizeof(struct nvme_create_cq) != 64); + BUILD_BUG_ON(sizeof(struct nvme_create_sq) != 64); + BUILD_BUG_ON(sizeof(struct nvme_delete_queue) != 64); + BUILD_BUG_ON(sizeof(struct nvme_features) != 64); + BUILD_BUG_ON(sizeof(struct nvme_format_cmd) != 64); + BUILD_BUG_ON(sizeof(struct nvme_abort_cmd) != 64); + BUILD_BUG_ON(sizeof(struct nvme_command) != 64); + BUILD_BUG_ON(sizeof(struct nvme_id_ctrl) != 4096); + BUILD_BUG_ON(sizeof(struct nvme_id_ns) != 4096); + BUILD_BUG_ON(sizeof(struct nvme_lba_range_type) != 64); + BUILD_BUG_ON(sizeof(struct nvme_smart_log) != 512); +} + +/* + * Max size of iod being embedded in the request payload + */ +#define NVME_INT_PAGES 2 +#define NVME_INT_BYTES(dev) (NVME_INT_PAGES * (dev)->ctrl.page_size) + +/* + * Will slightly overestimate the number of pages needed. This is OK + * as it only leads to a small amount of wasted memory for the lifetime of + * the I/O. + */ +static int nvme_npages(unsigned size, struct nvme_dev *dev) +{ + unsigned nprps = DIV_ROUND_UP(size + dev->ctrl.page_size, + dev->ctrl.page_size); + return DIV_ROUND_UP(8 * nprps, PAGE_SIZE - 8); +} + +static unsigned int nvme_iod_alloc_size(struct nvme_dev *dev, + unsigned int size, unsigned int nseg) +{ + return sizeof(__le64 *) * nvme_npages(size, dev) + + sizeof(struct scatterlist) * nseg; +} + +static unsigned int nvme_cmd_size(struct nvme_dev *dev) +{ + return sizeof(struct nvme_iod) + + nvme_iod_alloc_size(dev, NVME_INT_BYTES(dev), NVME_INT_PAGES); +} + +static int nvme_admin_init_hctx(struct blk_mq_hw_ctx *hctx, void *data, + unsigned int hctx_idx) +{ + struct nvme_dev *dev = data; + struct nvme_queue *nvmeq = dev->queues[0]; + + WARN_ON(hctx_idx != 0); + WARN_ON(dev->admin_tagset.tags[0] != hctx->tags); + WARN_ON(nvmeq->tags); + + hctx->driver_data = nvmeq; + nvmeq->tags = &dev->admin_tagset.tags[0]; + return 0; +} + +static void nvme_admin_exit_hctx(struct blk_mq_hw_ctx *hctx, unsigned int hctx_idx) +{ + struct nvme_queue *nvmeq = hctx->driver_data; + + nvmeq->tags = NULL; +} + +static int nvme_admin_init_request(void *data, struct request *req, + unsigned int hctx_idx, unsigned int rq_idx, + unsigned int numa_node) +{ + struct nvme_dev *dev = data; + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + struct nvme_queue *nvmeq = dev->queues[0]; + + BUG_ON(!nvmeq); + iod->nvmeq = nvmeq; + return 0; +} + +static int nvme_init_hctx(struct blk_mq_hw_ctx *hctx, void *data, + unsigned int hctx_idx) +{ + struct nvme_dev *dev = data; + struct nvme_queue *nvmeq = dev->queues[hctx_idx + 1]; + + if (!nvmeq->tags) + nvmeq->tags = &dev->tagset.tags[hctx_idx]; + + WARN_ON(dev->tagset.tags[hctx_idx] != hctx->tags); + hctx->driver_data = nvmeq; + return 0; +} + +static int nvme_init_request(void *data, struct request *req, + unsigned int hctx_idx, unsigned int rq_idx, + unsigned int numa_node) +{ + struct nvme_dev *dev = data; + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + struct nvme_queue *nvmeq = dev->queues[hctx_idx + 1]; + + BUG_ON(!nvmeq); + iod->nvmeq = nvmeq; + return 0; +} + +static void nvme_queue_scan(struct nvme_dev *dev) +{ + /* + * Do not queue new scan work when a controller is reset during + * removal. + */ + if (test_bit(NVME_CTRL_REMOVING, &dev->flags)) + return; + queue_work(nvme_workq, &dev->scan_work); +} + +static void nvme_complete_async_event(struct nvme_dev *dev, + struct nvme_completion *cqe) +{ + u16 status = le16_to_cpu(cqe->status) >> 1; + u32 result = le32_to_cpu(cqe->result); + + if (status == NVME_SC_SUCCESS || status == NVME_SC_ABORT_REQ) + ++dev->ctrl.event_limit; + if (status != NVME_SC_SUCCESS) + return; + + switch (result & 0xff07) { + case NVME_AER_NOTICE_NS_CHANGED: + dev_info(dev->dev, "rescanning\n"); + nvme_queue_scan(dev); + default: + dev_warn(dev->dev, "async event result %08x\n", result); + } +} + +/** + * __nvme_submit_cmd() - Copy a command into a queue and ring the doorbell + * @nvmeq: The queue to use + * @cmd: The command to send + * + * Safe to use from interrupt context + */ +static void __nvme_submit_cmd(struct nvme_queue *nvmeq, + struct nvme_command *cmd) +{ + u16 tail = nvmeq->sq_tail; + + if (nvmeq->sq_cmds_io) + memcpy_toio(&nvmeq->sq_cmds_io[tail], cmd, sizeof(*cmd)); + else + memcpy(&nvmeq->sq_cmds[tail], cmd, sizeof(*cmd)); + + if (++tail == nvmeq->q_depth) + tail = 0; + writel(tail, nvmeq->q_db); + nvmeq->sq_tail = tail; +} + +static __le64 **iod_list(struct request *req) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + return (__le64 **)(iod->sg + req->nr_phys_segments); +} + +static int nvme_init_iod(struct request *rq, struct nvme_dev *dev) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(rq); + int nseg = rq->nr_phys_segments; + unsigned size; + + if (rq->cmd_flags & REQ_DISCARD) + size = sizeof(struct nvme_dsm_range); + else + size = blk_rq_bytes(rq); + + if (nseg > NVME_INT_PAGES || size > NVME_INT_BYTES(dev)) { + iod->sg = kmalloc(nvme_iod_alloc_size(dev, size, nseg), GFP_ATOMIC); + if (!iod->sg) + return BLK_MQ_RQ_QUEUE_BUSY; + } else { + iod->sg = iod->inline_sg; + } + + iod->aborted = 0; + iod->npages = -1; + iod->nents = 0; + iod->length = size; + return 0; +} + +static void nvme_free_iod(struct nvme_dev *dev, struct request *req) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + const int last_prp = dev->ctrl.page_size / 8 - 1; + int i; + __le64 **list = iod_list(req); + dma_addr_t prp_dma = iod->first_dma; + + if (iod->npages == 0) + dma_pool_free(dev->prp_small_pool, list[0], prp_dma); + for (i = 0; i < iod->npages; i++) { + __le64 *prp_list = list[i]; + dma_addr_t next_prp_dma = le64_to_cpu(prp_list[last_prp]); + dma_pool_free(dev->prp_page_pool, prp_list, prp_dma); + prp_dma = next_prp_dma; + } + + if (iod->sg != iod->inline_sg) + kfree(iod->sg); +} + +#ifdef CONFIG_BLK_DEV_INTEGRITY +static void nvme_dif_prep(u32 p, u32 v, struct t10_pi_tuple *pi) +{ + if (be32_to_cpu(pi->ref_tag) == v) + pi->ref_tag = cpu_to_be32(p); +} + +static void nvme_dif_complete(u32 p, u32 v, struct t10_pi_tuple *pi) +{ + if (be32_to_cpu(pi->ref_tag) == p) + pi->ref_tag = cpu_to_be32(v); +} + +/** + * nvme_dif_remap - remaps ref tags to bip seed and physical lba + * + * The virtual start sector is the one that was originally submitted by the + * block layer. Due to partitioning, MD/DM cloning, etc. the actual physical + * start sector may be different. Remap protection information to match the + * physical LBA on writes, and back to the original seed on reads. + * + * Type 0 and 3 do not have a ref tag, so no remapping required. + */ +static void nvme_dif_remap(struct request *req, + void (*dif_swap)(u32 p, u32 v, struct t10_pi_tuple *pi)) +{ + struct nvme_ns *ns = req->rq_disk->private_data; + struct bio_integrity_payload *bip; + struct t10_pi_tuple *pi; + void *p, *pmap; + u32 i, nlb, ts, phys, virt; + + if (!ns->pi_type || ns->pi_type == NVME_NS_DPS_PI_TYPE3) + return; + + bip = bio_integrity(req->bio); + if (!bip) + return; + + pmap = kmap_atomic(bip->bip_vec->bv_page) + bip->bip_vec->bv_offset; + + p = pmap; + virt = bip_get_seed(bip); + phys = nvme_block_nr(ns, blk_rq_pos(req)); + nlb = (blk_rq_bytes(req) >> ns->lba_shift); + ts = ns->disk->queue->integrity.tuple_size; + + for (i = 0; i < nlb; i++, virt++, phys++) { + pi = (struct t10_pi_tuple *)p; + dif_swap(phys, virt, pi); + p += ts; + } + kunmap_atomic(pmap); +} +#else /* CONFIG_BLK_DEV_INTEGRITY */ +static void nvme_dif_remap(struct request *req, + void (*dif_swap)(u32 p, u32 v, struct t10_pi_tuple *pi)) +{ +} +static void nvme_dif_prep(u32 p, u32 v, struct t10_pi_tuple *pi) +{ +} +static void nvme_dif_complete(u32 p, u32 v, struct t10_pi_tuple *pi) +{ +} +#endif + +static bool nvme_setup_prps(struct nvme_dev *dev, struct request *req, + int total_len) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + struct dma_pool *pool; + int length = total_len; + struct scatterlist *sg = iod->sg; + int dma_len = sg_dma_len(sg); + u64 dma_addr = sg_dma_address(sg); + u32 page_size = dev->ctrl.page_size; + int offset = dma_addr & (page_size - 1); + __le64 *prp_list; + __le64 **list = iod_list(req); + dma_addr_t prp_dma; + int nprps, i; + + length -= (page_size - offset); + if (length <= 0) + return true; + + dma_len -= (page_size - offset); + if (dma_len) { + dma_addr += (page_size - offset); + } else { + sg = sg_next(sg); + dma_addr = sg_dma_address(sg); + dma_len = sg_dma_len(sg); + } + + if (length <= page_size) { + iod->first_dma = dma_addr; + return true; + } + + nprps = DIV_ROUND_UP(length, page_size); + if (nprps <= (256 / 8)) { + pool = dev->prp_small_pool; + iod->npages = 0; + } else { + pool = dev->prp_page_pool; + iod->npages = 1; + } + + prp_list = dma_pool_alloc(pool, GFP_ATOMIC, &prp_dma); + if (!prp_list) { + iod->first_dma = dma_addr; + iod->npages = -1; + return false; + } + list[0] = prp_list; + iod->first_dma = prp_dma; + i = 0; + for (;;) { + if (i == page_size >> 3) { + __le64 *old_prp_list = prp_list; + prp_list = dma_pool_alloc(pool, GFP_ATOMIC, &prp_dma); + if (!prp_list) + return false; + list[iod->npages++] = prp_list; + prp_list[0] = old_prp_list[i - 1]; + old_prp_list[i - 1] = cpu_to_le64(prp_dma); + i = 1; + } + prp_list[i++] = cpu_to_le64(dma_addr); + dma_len -= page_size; + dma_addr += page_size; + length -= page_size; + if (length <= 0) + break; + if (dma_len > 0) + continue; + BUG_ON(dma_len < 0); + sg = sg_next(sg); + dma_addr = sg_dma_address(sg); + dma_len = sg_dma_len(sg); + } + + return true; +} + +static int nvme_map_data(struct nvme_dev *dev, struct request *req, + struct nvme_command *cmnd) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + struct request_queue *q = req->q; + enum dma_data_direction dma_dir = rq_data_dir(req) ? + DMA_TO_DEVICE : DMA_FROM_DEVICE; + int ret = BLK_MQ_RQ_QUEUE_ERROR; + + sg_init_table(iod->sg, req->nr_phys_segments); + iod->nents = blk_rq_map_sg(q, req, iod->sg); + if (!iod->nents) + goto out; + + ret = BLK_MQ_RQ_QUEUE_BUSY; + if (!dma_map_sg(dev->dev, iod->sg, iod->nents, dma_dir)) + goto out; + + if (!nvme_setup_prps(dev, req, blk_rq_bytes(req))) + goto out_unmap; + + ret = BLK_MQ_RQ_QUEUE_ERROR; + if (blk_integrity_rq(req)) { + if (blk_rq_count_integrity_sg(q, req->bio) != 1) + goto out_unmap; + + sg_init_table(&iod->meta_sg, 1); + if (blk_rq_map_integrity_sg(q, req->bio, &iod->meta_sg) != 1) + goto out_unmap; + + if (rq_data_dir(req)) + nvme_dif_remap(req, nvme_dif_prep); + + if (!dma_map_sg(dev->dev, &iod->meta_sg, 1, dma_dir)) + goto out_unmap; + } + + cmnd->rw.prp1 = cpu_to_le64(sg_dma_address(iod->sg)); + cmnd->rw.prp2 = cpu_to_le64(iod->first_dma); + if (blk_integrity_rq(req)) + cmnd->rw.metadata = cpu_to_le64(sg_dma_address(&iod->meta_sg)); + return BLK_MQ_RQ_QUEUE_OK; + +out_unmap: + dma_unmap_sg(dev->dev, iod->sg, iod->nents, dma_dir); +out: + return ret; +} + +static void nvme_unmap_data(struct nvme_dev *dev, struct request *req) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + enum dma_data_direction dma_dir = rq_data_dir(req) ? + DMA_TO_DEVICE : DMA_FROM_DEVICE; + + if (iod->nents) { + dma_unmap_sg(dev->dev, iod->sg, iod->nents, dma_dir); + if (blk_integrity_rq(req)) { + if (!rq_data_dir(req)) + nvme_dif_remap(req, nvme_dif_complete); + dma_unmap_sg(dev->dev, &iod->meta_sg, 1, dma_dir); + } + } + + nvme_free_iod(dev, req); +} + +/* + * We reuse the small pool to allocate the 16-byte range here as it is not + * worth having a special pool for these or additional cases to handle freeing + * the iod. + */ +static int nvme_setup_discard(struct nvme_queue *nvmeq, struct nvme_ns *ns, + struct request *req, struct nvme_command *cmnd) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + struct nvme_dsm_range *range; + + range = dma_pool_alloc(nvmeq->dev->prp_small_pool, GFP_ATOMIC, + &iod->first_dma); + if (!range) + return BLK_MQ_RQ_QUEUE_BUSY; + iod_list(req)[0] = (__le64 *)range; + iod->npages = 0; + + range->cattr = cpu_to_le32(0); + range->nlb = cpu_to_le32(blk_rq_bytes(req) >> ns->lba_shift); + range->slba = cpu_to_le64(nvme_block_nr(ns, blk_rq_pos(req))); + + memset(cmnd, 0, sizeof(*cmnd)); + cmnd->dsm.opcode = nvme_cmd_dsm; + cmnd->dsm.nsid = cpu_to_le32(ns->ns_id); + cmnd->dsm.prp1 = cpu_to_le64(iod->first_dma); + cmnd->dsm.nr = 0; + cmnd->dsm.attributes = cpu_to_le32(NVME_DSMGMT_AD); + return BLK_MQ_RQ_QUEUE_OK; +} + +/* + * NOTE: ns is NULL when called on the admin queue. + */ +static int nvme_queue_rq(struct blk_mq_hw_ctx *hctx, + const struct blk_mq_queue_data *bd) +{ + struct nvme_ns *ns = hctx->queue->queuedata; + struct nvme_queue *nvmeq = hctx->driver_data; + struct nvme_dev *dev = nvmeq->dev; + struct request *req = bd->rq; + struct nvme_command cmnd; + int ret = BLK_MQ_RQ_QUEUE_OK; + + /* + * If formated with metadata, require the block layer provide a buffer + * unless this namespace is formated such that the metadata can be + * stripped/generated by the controller with PRACT=1. + */ + if (ns && ns->ms && !blk_integrity_rq(req)) { + if (!(ns->pi_type && ns->ms == 8) && + req->cmd_type != REQ_TYPE_DRV_PRIV) { + blk_mq_end_request(req, -EFAULT); + return BLK_MQ_RQ_QUEUE_OK; + } + } + + ret = nvme_init_iod(req, dev); + if (ret) + return ret; + + if (req->cmd_flags & REQ_DISCARD) { + ret = nvme_setup_discard(nvmeq, ns, req, &cmnd); + } else { + if (req->cmd_type == REQ_TYPE_DRV_PRIV) + memcpy(&cmnd, req->cmd, sizeof(cmnd)); + else if (req->cmd_flags & REQ_FLUSH) + nvme_setup_flush(ns, &cmnd); + else + nvme_setup_rw(ns, req, &cmnd); + + if (req->nr_phys_segments) + ret = nvme_map_data(dev, req, &cmnd); + } + + if (ret) + goto out; + + cmnd.common.command_id = req->tag; + blk_mq_start_request(req); + + spin_lock_irq(&nvmeq->q_lock); + if (unlikely(nvmeq->cq_vector < 0)) { + if (ns && !test_bit(NVME_NS_DEAD, &ns->flags)) + ret = BLK_MQ_RQ_QUEUE_BUSY; + else + ret = BLK_MQ_RQ_QUEUE_ERROR; + spin_unlock_irq(&nvmeq->q_lock); + goto out; + } + __nvme_submit_cmd(nvmeq, &cmnd); + nvme_process_cq(nvmeq); + spin_unlock_irq(&nvmeq->q_lock); + return BLK_MQ_RQ_QUEUE_OK; +out: + nvme_free_iod(dev, req); + return ret; +} + +static void nvme_complete_rq(struct request *req) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + struct nvme_dev *dev = iod->nvmeq->dev; + int error = 0; + + nvme_unmap_data(dev, req); + + if (unlikely(req->errors)) { + if (nvme_req_needs_retry(req, req->errors)) { + nvme_requeue_req(req); + return; + } + + if (req->cmd_type == REQ_TYPE_DRV_PRIV) + error = req->errors; + else + error = nvme_error_status(req->errors); + } + + if (unlikely(iod->aborted)) { + dev_warn(dev->dev, + "completing aborted command with status: %04x\n", + req->errors); + } + + blk_mq_end_request(req, error); +} + +static void __nvme_process_cq(struct nvme_queue *nvmeq, unsigned int *tag) +{ + u16 head, phase; + + head = nvmeq->cq_head; + phase = nvmeq->cq_phase; + + for (;;) { + struct nvme_completion cqe = nvmeq->cqes[head]; + u16 status = le16_to_cpu(cqe.status); + struct request *req; + + if ((status & 1) != phase) + break; + nvmeq->sq_head = le16_to_cpu(cqe.sq_head); + if (++head == nvmeq->q_depth) { + head = 0; + phase = !phase; + } + + if (tag && *tag == cqe.command_id) + *tag = -1; + + if (unlikely(cqe.command_id >= nvmeq->q_depth)) { + dev_warn(nvmeq->q_dmadev, + "invalid id %d completed on queue %d\n", + cqe.command_id, le16_to_cpu(cqe.sq_id)); + continue; + } + + /* + * AEN requests are special as they don't time out and can + * survive any kind of queue freeze and often don't respond to + * aborts. We don't even bother to allocate a struct request + * for them but rather special case them here. + */ + if (unlikely(nvmeq->qid == 0 && + cqe.command_id >= NVME_AQ_BLKMQ_DEPTH)) { + nvme_complete_async_event(nvmeq->dev, &cqe); + continue; + } + + req = blk_mq_tag_to_rq(*nvmeq->tags, cqe.command_id); + if (req->cmd_type == REQ_TYPE_DRV_PRIV) { + u32 result = le32_to_cpu(cqe.result); + req->special = (void *)(uintptr_t)result; + } + blk_mq_complete_request(req, status >> 1); + + } + + /* If the controller ignores the cq head doorbell and continuously + * writes to the queue, it is theoretically possible to wrap around + * the queue twice and mistakenly return IRQ_NONE. Linux only + * requires that 0.1% of your interrupts are handled, so this isn't + * a big problem. + */ + if (head == nvmeq->cq_head && phase == nvmeq->cq_phase) + return; + + if (likely(nvmeq->cq_vector >= 0)) + writel(head, nvmeq->q_db + nvmeq->dev->db_stride); + nvmeq->cq_head = head; + nvmeq->cq_phase = phase; + + nvmeq->cqe_seen = 1; +} + +static void nvme_process_cq(struct nvme_queue *nvmeq) +{ + __nvme_process_cq(nvmeq, NULL); +} + +static irqreturn_t nvme_irq(int irq, void *data) +{ + irqreturn_t result; + struct nvme_queue *nvmeq = data; + spin_lock(&nvmeq->q_lock); + nvme_process_cq(nvmeq); + result = nvmeq->cqe_seen ? IRQ_HANDLED : IRQ_NONE; + nvmeq->cqe_seen = 0; + spin_unlock(&nvmeq->q_lock); + return result; +} + +static irqreturn_t nvme_irq_check(int irq, void *data) +{ + struct nvme_queue *nvmeq = data; + struct nvme_completion cqe = nvmeq->cqes[nvmeq->cq_head]; + if ((le16_to_cpu(cqe.status) & 1) != nvmeq->cq_phase) + return IRQ_NONE; + return IRQ_WAKE_THREAD; +} + +static int nvme_poll(struct blk_mq_hw_ctx *hctx, unsigned int tag) +{ + struct nvme_queue *nvmeq = hctx->driver_data; + + if ((le16_to_cpu(nvmeq->cqes[nvmeq->cq_head].status) & 1) == + nvmeq->cq_phase) { + spin_lock_irq(&nvmeq->q_lock); + __nvme_process_cq(nvmeq, &tag); + spin_unlock_irq(&nvmeq->q_lock); + + if (tag == -1) + return 1; + } + + return 0; +} + +static void nvme_submit_async_event(struct nvme_dev *dev) +{ + struct nvme_command c; + + memset(&c, 0, sizeof(c)); + c.common.opcode = nvme_admin_async_event; + c.common.command_id = NVME_AQ_BLKMQ_DEPTH + --dev->ctrl.event_limit; + + __nvme_submit_cmd(dev->queues[0], &c); +} + +static int adapter_delete_queue(struct nvme_dev *dev, u8 opcode, u16 id) +{ + struct nvme_command c; + + memset(&c, 0, sizeof(c)); + c.delete_queue.opcode = opcode; + c.delete_queue.qid = cpu_to_le16(id); + + return nvme_submit_sync_cmd(dev->ctrl.admin_q, &c, NULL, 0); +} + +static int adapter_alloc_cq(struct nvme_dev *dev, u16 qid, + struct nvme_queue *nvmeq) +{ + struct nvme_command c; + int flags = NVME_QUEUE_PHYS_CONTIG | NVME_CQ_IRQ_ENABLED; + + /* + * Note: we (ab)use the fact the the prp fields survive if no data + * is attached to the request. + */ + memset(&c, 0, sizeof(c)); + c.create_cq.opcode = nvme_admin_create_cq; + c.create_cq.prp1 = cpu_to_le64(nvmeq->cq_dma_addr); + c.create_cq.cqid = cpu_to_le16(qid); + c.create_cq.qsize = cpu_to_le16(nvmeq->q_depth - 1); + c.create_cq.cq_flags = cpu_to_le16(flags); + c.create_cq.irq_vector = cpu_to_le16(nvmeq->cq_vector); + + return nvme_submit_sync_cmd(dev->ctrl.admin_q, &c, NULL, 0); +} + +static int adapter_alloc_sq(struct nvme_dev *dev, u16 qid, + struct nvme_queue *nvmeq) +{ + struct nvme_command c; + int flags = NVME_QUEUE_PHYS_CONTIG | NVME_SQ_PRIO_MEDIUM; + + /* + * Note: we (ab)use the fact the the prp fields survive if no data + * is attached to the request. + */ + memset(&c, 0, sizeof(c)); + c.create_sq.opcode = nvme_admin_create_sq; + c.create_sq.prp1 = cpu_to_le64(nvmeq->sq_dma_addr); + c.create_sq.sqid = cpu_to_le16(qid); + c.create_sq.qsize = cpu_to_le16(nvmeq->q_depth - 1); + c.create_sq.sq_flags = cpu_to_le16(flags); + c.create_sq.cqid = cpu_to_le16(qid); + + return nvme_submit_sync_cmd(dev->ctrl.admin_q, &c, NULL, 0); +} + +static int adapter_delete_cq(struct nvme_dev *dev, u16 cqid) +{ + return adapter_delete_queue(dev, nvme_admin_delete_cq, cqid); +} + +static int adapter_delete_sq(struct nvme_dev *dev, u16 sqid) +{ + return adapter_delete_queue(dev, nvme_admin_delete_sq, sqid); +} + +static void abort_endio(struct request *req, int error) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + struct nvme_queue *nvmeq = iod->nvmeq; + u32 result = (u32)(uintptr_t)req->special; + u16 status = req->errors; + + dev_warn(nvmeq->q_dmadev, "Abort status:%x result:%x", status, result); + atomic_inc(&nvmeq->dev->ctrl.abort_limit); + + blk_mq_free_request(req); +} + +static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + struct nvme_queue *nvmeq = iod->nvmeq; + struct nvme_dev *dev = nvmeq->dev; + struct request *abort_req; + struct nvme_command cmd; + + /* + * Shutdown immediately if controller times out while starting. The + * reset work will see the pci device disabled when it gets the forced + * cancellation error. All outstanding requests are completed on + * shutdown, so we return BLK_EH_HANDLED. + */ + if (test_bit(NVME_CTRL_RESETTING, &dev->flags)) { + dev_warn(dev->dev, + "I/O %d QID %d timeout, disable controller\n", + req->tag, nvmeq->qid); + nvme_dev_disable(dev, false); + req->errors = NVME_SC_CANCELLED; + return BLK_EH_HANDLED; + } + + /* + * Shutdown the controller immediately and schedule a reset if the + * command was already aborted once before and still hasn't been + * returned to the driver, or if this is the admin queue. + */ + if (!nvmeq->qid || iod->aborted) { + dev_warn(dev->dev, + "I/O %d QID %d timeout, reset controller\n", + req->tag, nvmeq->qid); + nvme_dev_disable(dev, false); + queue_work(nvme_workq, &dev->reset_work); + + /* + * Mark the request as handled, since the inline shutdown + * forces all outstanding requests to complete. + */ + req->errors = NVME_SC_CANCELLED; + return BLK_EH_HANDLED; + } + + iod->aborted = 1; + + if (atomic_dec_return(&dev->ctrl.abort_limit) < 0) { + atomic_inc(&dev->ctrl.abort_limit); + return BLK_EH_RESET_TIMER; + } + + memset(&cmd, 0, sizeof(cmd)); + cmd.abort.opcode = nvme_admin_abort_cmd; + cmd.abort.cid = req->tag; + cmd.abort.sqid = cpu_to_le16(nvmeq->qid); + + dev_warn(nvmeq->q_dmadev, "I/O %d QID %d timeout, aborting\n", + req->tag, nvmeq->qid); + + abort_req = nvme_alloc_request(dev->ctrl.admin_q, &cmd, + BLK_MQ_REQ_NOWAIT); + if (IS_ERR(abort_req)) { + atomic_inc(&dev->ctrl.abort_limit); + return BLK_EH_RESET_TIMER; + } + + abort_req->timeout = ADMIN_TIMEOUT; + abort_req->end_io_data = NULL; + blk_execute_rq_nowait(abort_req->q, NULL, abort_req, 0, abort_endio); + + /* + * The aborted req will be completed on receiving the abort req. + * We enable the timer again. If hit twice, it'll cause a device reset, + * as the device then is in a faulty state. + */ + return BLK_EH_RESET_TIMER; +} + +static void nvme_cancel_queue_ios(struct request *req, void *data, bool reserved) +{ + struct nvme_queue *nvmeq = data; + int status; + + if (!blk_mq_request_started(req)) + return; + + dev_dbg_ratelimited(nvmeq->q_dmadev, + "Cancelling I/O %d QID %d\n", req->tag, nvmeq->qid); + + status = NVME_SC_ABORT_REQ; + if (blk_queue_dying(req->q)) + status |= NVME_SC_DNR; + blk_mq_complete_request(req, status); +} + +static void nvme_free_queue(struct nvme_queue *nvmeq) +{ + dma_free_coherent(nvmeq->q_dmadev, CQ_SIZE(nvmeq->q_depth), + (void *)nvmeq->cqes, nvmeq->cq_dma_addr); + if (nvmeq->sq_cmds) + dma_free_coherent(nvmeq->q_dmadev, SQ_SIZE(nvmeq->q_depth), + nvmeq->sq_cmds, nvmeq->sq_dma_addr); + kfree(nvmeq); +} + +static void nvme_free_queues(struct nvme_dev *dev, int lowest) +{ + int i; + + for (i = dev->queue_count - 1; i >= lowest; i--) { + struct nvme_queue *nvmeq = dev->queues[i]; + dev->queue_count--; + dev->queues[i] = NULL; + nvme_free_queue(nvmeq); + } +} + +/** + * nvme_suspend_queue - put queue into suspended state + * @nvmeq - queue to suspend + */ +static int nvme_suspend_queue(struct nvme_queue *nvmeq) +{ + int vector; + + spin_lock_irq(&nvmeq->q_lock); + if (nvmeq->cq_vector == -1) { + spin_unlock_irq(&nvmeq->q_lock); + return 1; + } + vector = nvmeq->dev->entry[nvmeq->cq_vector].vector; + nvmeq->dev->online_queues--; + nvmeq->cq_vector = -1; + spin_unlock_irq(&nvmeq->q_lock); + + if (!nvmeq->qid && nvmeq->dev->ctrl.admin_q) + blk_mq_stop_hw_queues(nvmeq->dev->ctrl.admin_q); + + irq_set_affinity_hint(vector, NULL); + free_irq(vector, nvmeq); + + return 0; +} + +static void nvme_clear_queue(struct nvme_queue *nvmeq) +{ + spin_lock_irq(&nvmeq->q_lock); + if (nvmeq->tags && *nvmeq->tags) + blk_mq_all_tag_busy_iter(*nvmeq->tags, nvme_cancel_queue_ios, nvmeq); + spin_unlock_irq(&nvmeq->q_lock); +} + +static void nvme_disable_admin_queue(struct nvme_dev *dev, bool shutdown) +{ + struct nvme_queue *nvmeq = dev->queues[0]; + + if (!nvmeq) + return; + if (nvme_suspend_queue(nvmeq)) + return; + + if (shutdown) + nvme_shutdown_ctrl(&dev->ctrl); + else + nvme_disable_ctrl(&dev->ctrl, lo_hi_readq( + dev->bar + NVME_REG_CAP)); + + spin_lock_irq(&nvmeq->q_lock); + nvme_process_cq(nvmeq); + spin_unlock_irq(&nvmeq->q_lock); +} + +static int nvme_cmb_qdepth(struct nvme_dev *dev, int nr_io_queues, + int entry_size) +{ + int q_depth = dev->q_depth; + unsigned q_size_aligned = roundup(q_depth * entry_size, + dev->ctrl.page_size); + + if (q_size_aligned * nr_io_queues > dev->cmb_size) { + u64 mem_per_q = div_u64(dev->cmb_size, nr_io_queues); + mem_per_q = round_down(mem_per_q, dev->ctrl.page_size); + q_depth = div_u64(mem_per_q, entry_size); + + /* + * Ensure the reduced q_depth is above some threshold where it + * would be better to map queues in system memory with the + * original depth + */ + if (q_depth < 64) + return -ENOMEM; + } + + return q_depth; +} + +static int nvme_alloc_sq_cmds(struct nvme_dev *dev, struct nvme_queue *nvmeq, + int qid, int depth) +{ + if (qid && dev->cmb && use_cmb_sqes && NVME_CMB_SQS(dev->cmbsz)) { + unsigned offset = (qid - 1) * roundup(SQ_SIZE(depth), + dev->ctrl.page_size); + nvmeq->sq_dma_addr = dev->cmb_dma_addr + offset; + nvmeq->sq_cmds_io = dev->cmb + offset; + } else { + nvmeq->sq_cmds = dma_alloc_coherent(dev->dev, SQ_SIZE(depth), + &nvmeq->sq_dma_addr, GFP_KERNEL); + if (!nvmeq->sq_cmds) + return -ENOMEM; + } + + return 0; +} + +static struct nvme_queue *nvme_alloc_queue(struct nvme_dev *dev, int qid, + int depth) +{ + struct nvme_queue *nvmeq = kzalloc(sizeof(*nvmeq), GFP_KERNEL); + if (!nvmeq) + return NULL; + + nvmeq->cqes = dma_zalloc_coherent(dev->dev, CQ_SIZE(depth), + &nvmeq->cq_dma_addr, GFP_KERNEL); + if (!nvmeq->cqes) + goto free_nvmeq; + + if (nvme_alloc_sq_cmds(dev, nvmeq, qid, depth)) + goto free_cqdma; + + nvmeq->q_dmadev = dev->dev; + nvmeq->dev = dev; + snprintf(nvmeq->irqname, sizeof(nvmeq->irqname), "nvme%dq%d", + dev->ctrl.instance, qid); + spin_lock_init(&nvmeq->q_lock); + nvmeq->cq_head = 0; + nvmeq->cq_phase = 1; + nvmeq->q_db = &dev->dbs[qid * 2 * dev->db_stride]; + nvmeq->q_depth = depth; + nvmeq->qid = qid; + nvmeq->cq_vector = -1; + dev->queues[qid] = nvmeq; + + /* make sure queue descriptor is set before queue count, for kthread */ + mb(); + dev->queue_count++; + + return nvmeq; + + free_cqdma: + dma_free_coherent(dev->dev, CQ_SIZE(depth), (void *)nvmeq->cqes, + nvmeq->cq_dma_addr); + free_nvmeq: + kfree(nvmeq); + return NULL; +} + +static int queue_request_irq(struct nvme_dev *dev, struct nvme_queue *nvmeq, + const char *name) +{ + if (use_threaded_interrupts) + return request_threaded_irq(dev->entry[nvmeq->cq_vector].vector, + nvme_irq_check, nvme_irq, IRQF_SHARED, + name, nvmeq); + return request_irq(dev->entry[nvmeq->cq_vector].vector, nvme_irq, + IRQF_SHARED, name, nvmeq); +} + +static void nvme_init_queue(struct nvme_queue *nvmeq, u16 qid) +{ + struct nvme_dev *dev = nvmeq->dev; + + spin_lock_irq(&nvmeq->q_lock); + nvmeq->sq_tail = 0; + nvmeq->cq_head = 0; + nvmeq->cq_phase = 1; + nvmeq->q_db = &dev->dbs[qid * 2 * dev->db_stride]; + memset((void *)nvmeq->cqes, 0, CQ_SIZE(nvmeq->q_depth)); + dev->online_queues++; + spin_unlock_irq(&nvmeq->q_lock); +} + +static int nvme_create_queue(struct nvme_queue *nvmeq, int qid) +{ + struct nvme_dev *dev = nvmeq->dev; + int result; + + nvmeq->cq_vector = qid - 1; + result = adapter_alloc_cq(dev, qid, nvmeq); + if (result < 0) + return result; + + result = adapter_alloc_sq(dev, qid, nvmeq); + if (result < 0) + goto release_cq; + + result = queue_request_irq(dev, nvmeq, nvmeq->irqname); + if (result < 0) + goto release_sq; + + nvme_init_queue(nvmeq, qid); + return result; + + release_sq: + adapter_delete_sq(dev, qid); + release_cq: + adapter_delete_cq(dev, qid); + return result; +} + +static struct blk_mq_ops nvme_mq_admin_ops = { + .queue_rq = nvme_queue_rq, + .complete = nvme_complete_rq, + .map_queue = blk_mq_map_queue, + .init_hctx = nvme_admin_init_hctx, + .exit_hctx = nvme_admin_exit_hctx, + .init_request = nvme_admin_init_request, + .timeout = nvme_timeout, +}; + +static struct blk_mq_ops nvme_mq_ops = { + .queue_rq = nvme_queue_rq, + .complete = nvme_complete_rq, + .map_queue = blk_mq_map_queue, + .init_hctx = nvme_init_hctx, + .init_request = nvme_init_request, + .timeout = nvme_timeout, + .poll = nvme_poll, +}; + +static void nvme_dev_remove_admin(struct nvme_dev *dev) +{ + if (dev->ctrl.admin_q && !blk_queue_dying(dev->ctrl.admin_q)) { + /* + * If the controller was reset during removal, it's possible + * user requests may be waiting on a stopped queue. Start the + * queue to flush these to completion. + */ + blk_mq_start_stopped_hw_queues(dev->ctrl.admin_q, true); + blk_cleanup_queue(dev->ctrl.admin_q); + blk_mq_free_tag_set(&dev->admin_tagset); + } +} + +static int nvme_alloc_admin_tags(struct nvme_dev *dev) +{ + if (!dev->ctrl.admin_q) { + dev->admin_tagset.ops = &nvme_mq_admin_ops; + dev->admin_tagset.nr_hw_queues = 1; + + /* + * Subtract one to leave an empty queue entry for 'Full Queue' + * condition. See NVM-Express 1.2 specification, section 4.1.2. + */ + dev->admin_tagset.queue_depth = NVME_AQ_BLKMQ_DEPTH - 1; + dev->admin_tagset.timeout = ADMIN_TIMEOUT; + dev->admin_tagset.numa_node = dev_to_node(dev->dev); + dev->admin_tagset.cmd_size = nvme_cmd_size(dev); + dev->admin_tagset.driver_data = dev; + + if (blk_mq_alloc_tag_set(&dev->admin_tagset)) + return -ENOMEM; + + dev->ctrl.admin_q = blk_mq_init_queue(&dev->admin_tagset); + if (IS_ERR(dev->ctrl.admin_q)) { + blk_mq_free_tag_set(&dev->admin_tagset); + return -ENOMEM; + } + if (!blk_get_queue(dev->ctrl.admin_q)) { + nvme_dev_remove_admin(dev); + dev->ctrl.admin_q = NULL; + return -ENODEV; + } + } else + blk_mq_start_stopped_hw_queues(dev->ctrl.admin_q, true); + + return 0; +} + +static int nvme_configure_admin_queue(struct nvme_dev *dev) +{ + int result; + u32 aqa; + u64 cap = lo_hi_readq(dev->bar + NVME_REG_CAP); + struct nvme_queue *nvmeq; + + dev->subsystem = readl(dev->bar + NVME_REG_VS) >= NVME_VS(1, 1) ? + NVME_CAP_NSSRC(cap) : 0; + + if (dev->subsystem && + (readl(dev->bar + NVME_REG_CSTS) & NVME_CSTS_NSSRO)) + writel(NVME_CSTS_NSSRO, dev->bar + NVME_REG_CSTS); + + result = nvme_disable_ctrl(&dev->ctrl, cap); + if (result < 0) + return result; + + nvmeq = dev->queues[0]; + if (!nvmeq) { + nvmeq = nvme_alloc_queue(dev, 0, NVME_AQ_DEPTH); + if (!nvmeq) + return -ENOMEM; + } + + aqa = nvmeq->q_depth - 1; + aqa |= aqa << 16; + + writel(aqa, dev->bar + NVME_REG_AQA); + lo_hi_writeq(nvmeq->sq_dma_addr, dev->bar + NVME_REG_ASQ); + lo_hi_writeq(nvmeq->cq_dma_addr, dev->bar + NVME_REG_ACQ); + + result = nvme_enable_ctrl(&dev->ctrl, cap); + if (result) + goto free_nvmeq; + + nvmeq->cq_vector = 0; + result = queue_request_irq(dev, nvmeq, nvmeq->irqname); + if (result) { + nvmeq->cq_vector = -1; + goto free_nvmeq; + } + + return result; + + free_nvmeq: + nvme_free_queues(dev, 0); + return result; +} + +static int nvme_kthread(void *data) +{ + struct nvme_dev *dev, *next; + + while (!kthread_should_stop()) { + set_current_state(TASK_INTERRUPTIBLE); + spin_lock(&dev_list_lock); + list_for_each_entry_safe(dev, next, &dev_list, node) { + int i; + u32 csts = readl(dev->bar + NVME_REG_CSTS); + + /* + * Skip controllers currently under reset. + */ + if (work_pending(&dev->reset_work) || work_busy(&dev->reset_work)) + continue; + + if ((dev->subsystem && (csts & NVME_CSTS_NSSRO)) || + csts & NVME_CSTS_CFS) { + if (queue_work(nvme_workq, &dev->reset_work)) { + dev_warn(dev->dev, + "Failed status: %x, reset controller\n", + readl(dev->bar + NVME_REG_CSTS)); + } + continue; + } + for (i = 0; i < dev->queue_count; i++) { + struct nvme_queue *nvmeq = dev->queues[i]; + if (!nvmeq) + continue; + spin_lock_irq(&nvmeq->q_lock); + nvme_process_cq(nvmeq); + + while (i == 0 && dev->ctrl.event_limit > 0) + nvme_submit_async_event(dev); + spin_unlock_irq(&nvmeq->q_lock); + } + } + spin_unlock(&dev_list_lock); + schedule_timeout(round_jiffies_relative(HZ)); + } + return 0; +} + +static int nvme_create_io_queues(struct nvme_dev *dev) +{ + unsigned i; + int ret = 0; + + for (i = dev->queue_count; i <= dev->max_qid; i++) { + if (!nvme_alloc_queue(dev, i, dev->q_depth)) { + ret = -ENOMEM; + break; + } + } + + for (i = dev->online_queues; i <= dev->queue_count - 1; i++) { + ret = nvme_create_queue(dev->queues[i], i); + if (ret) { + nvme_free_queues(dev, i); + break; + } + } + + /* + * Ignore failing Create SQ/CQ commands, we can continue with less + * than the desired aount of queues, and even a controller without + * I/O queues an still be used to issue admin commands. This might + * be useful to upgrade a buggy firmware for example. + */ + return ret >= 0 ? 0 : ret; +} + +static void __iomem *nvme_map_cmb(struct nvme_dev *dev) +{ + u64 szu, size, offset; + u32 cmbloc; + resource_size_t bar_size; + struct pci_dev *pdev = to_pci_dev(dev->dev); + void __iomem *cmb; + dma_addr_t dma_addr; + + if (!use_cmb_sqes) + return NULL; + + dev->cmbsz = readl(dev->bar + NVME_REG_CMBSZ); + if (!(NVME_CMB_SZ(dev->cmbsz))) + return NULL; + + cmbloc = readl(dev->bar + NVME_REG_CMBLOC); + + szu = (u64)1 << (12 + 4 * NVME_CMB_SZU(dev->cmbsz)); + size = szu * NVME_CMB_SZ(dev->cmbsz); + offset = szu * NVME_CMB_OFST(cmbloc); + bar_size = pci_resource_len(pdev, NVME_CMB_BIR(cmbloc)); + + if (offset > bar_size) + return NULL; + + /* + * Controllers may support a CMB size larger than their BAR, + * for example, due to being behind a bridge. Reduce the CMB to + * the reported size of the BAR + */ + if (size > bar_size - offset) + size = bar_size - offset; + + dma_addr = pci_resource_start(pdev, NVME_CMB_BIR(cmbloc)) + offset; + cmb = ioremap_wc(dma_addr, size); + if (!cmb) + return NULL; + + dev->cmb_dma_addr = dma_addr; + dev->cmb_size = size; + return cmb; +} + +static inline void nvme_release_cmb(struct nvme_dev *dev) +{ + if (dev->cmb) { + iounmap(dev->cmb); + dev->cmb = NULL; + } +} + +static size_t db_bar_size(struct nvme_dev *dev, unsigned nr_io_queues) +{ + return 4096 + ((nr_io_queues + 1) * 8 * dev->db_stride); +} + +static int nvme_setup_io_queues(struct nvme_dev *dev) +{ + struct nvme_queue *adminq = dev->queues[0]; + struct pci_dev *pdev = to_pci_dev(dev->dev); + int result, i, vecs, nr_io_queues, size; + + nr_io_queues = num_possible_cpus(); + result = nvme_set_queue_count(&dev->ctrl, &nr_io_queues); + if (result < 0) + return result; + + /* + * Degraded controllers might return an error when setting the queue + * count. We still want to be able to bring them online and offer + * access to the admin queue, as that might be only way to fix them up. + */ + if (result > 0) { + dev_err(dev->dev, "Could not set queue count (%d)\n", result); + nr_io_queues = 0; + result = 0; + } + + if (dev->cmb && NVME_CMB_SQS(dev->cmbsz)) { + result = nvme_cmb_qdepth(dev, nr_io_queues, + sizeof(struct nvme_command)); + if (result > 0) + dev->q_depth = result; + else + nvme_release_cmb(dev); + } + + size = db_bar_size(dev, nr_io_queues); + if (size > 8192) { + iounmap(dev->bar); + do { + dev->bar = ioremap(pci_resource_start(pdev, 0), size); + if (dev->bar) + break; + if (!--nr_io_queues) + return -ENOMEM; + size = db_bar_size(dev, nr_io_queues); + } while (1); + dev->dbs = dev->bar + 4096; + adminq->q_db = dev->dbs; + } + + /* Deregister the admin queue's interrupt */ + free_irq(dev->entry[0].vector, adminq); + + /* + * If we enable msix early due to not intx, disable it again before + * setting up the full range we need. + */ + if (!pdev->irq) + pci_disable_msix(pdev); + + for (i = 0; i < nr_io_queues; i++) + dev->entry[i].entry = i; + vecs = pci_enable_msix_range(pdev, dev->entry, 1, nr_io_queues); + if (vecs < 0) { + vecs = pci_enable_msi_range(pdev, 1, min(nr_io_queues, 32)); + if (vecs < 0) { + vecs = 1; + } else { + for (i = 0; i < vecs; i++) + dev->entry[i].vector = i + pdev->irq; + } + } + + /* + * Should investigate if there's a performance win from allocating + * more queues than interrupt vectors; it might allow the submission + * path to scale better, even if the receive path is limited by the + * number of interrupts. + */ + nr_io_queues = vecs; + dev->max_qid = nr_io_queues; + + result = queue_request_irq(dev, adminq, adminq->irqname); + if (result) { + adminq->cq_vector = -1; + goto free_queues; + } + + /* Free previously allocated queues that are no longer usable */ + nvme_free_queues(dev, nr_io_queues + 1); + return nvme_create_io_queues(dev); + + free_queues: + nvme_free_queues(dev, 1); + return result; +} + +static void nvme_set_irq_hints(struct nvme_dev *dev) +{ + struct nvme_queue *nvmeq; + int i; + + for (i = 0; i < dev->online_queues; i++) { + nvmeq = dev->queues[i]; + + if (!nvmeq->tags || !(*nvmeq->tags)) + continue; + + irq_set_affinity_hint(dev->entry[nvmeq->cq_vector].vector, + blk_mq_tags_cpumask(*nvmeq->tags)); + } +} + +static void nvme_dev_scan(struct work_struct *work) +{ + struct nvme_dev *dev = container_of(work, struct nvme_dev, scan_work); + + if (!dev->tagset.tags) + return; + nvme_scan_namespaces(&dev->ctrl); + nvme_set_irq_hints(dev); +} + +static void nvme_del_queue_end(struct request *req, int error) +{ + struct nvme_queue *nvmeq = req->end_io_data; + + blk_mq_free_request(req); + complete(&nvmeq->dev->ioq_wait); +} + +static void nvme_del_cq_end(struct request *req, int error) +{ + struct nvme_queue *nvmeq = req->end_io_data; + + if (!error) { + unsigned long flags; + + spin_lock_irqsave(&nvmeq->q_lock, flags); + nvme_process_cq(nvmeq); + spin_unlock_irqrestore(&nvmeq->q_lock, flags); + } + + nvme_del_queue_end(req, error); +} + +static int nvme_delete_queue(struct nvme_queue *nvmeq, u8 opcode) +{ + struct request_queue *q = nvmeq->dev->ctrl.admin_q; + struct request *req; + struct nvme_command cmd; + + memset(&cmd, 0, sizeof(cmd)); + cmd.delete_queue.opcode = opcode; + cmd.delete_queue.qid = cpu_to_le16(nvmeq->qid); + + req = nvme_alloc_request(q, &cmd, BLK_MQ_REQ_NOWAIT); + if (IS_ERR(req)) + return PTR_ERR(req); + + req->timeout = ADMIN_TIMEOUT; + req->end_io_data = nvmeq; + + blk_execute_rq_nowait(q, NULL, req, false, + opcode == nvme_admin_delete_cq ? + nvme_del_cq_end : nvme_del_queue_end); + return 0; +} + +static void nvme_disable_io_queues(struct nvme_dev *dev) +{ + int pass; + unsigned long timeout; + u8 opcode = nvme_admin_delete_sq; + + for (pass = 0; pass < 2; pass++) { + int sent = 0, i = dev->queue_count - 1; + + reinit_completion(&dev->ioq_wait); + retry: + timeout = ADMIN_TIMEOUT; + for (; i > 0; i--) { + struct nvme_queue *nvmeq = dev->queues[i]; + + if (!pass) + nvme_suspend_queue(nvmeq); + if (nvme_delete_queue(nvmeq, opcode)) + break; + ++sent; + } + while (sent--) { + timeout = wait_for_completion_io_timeout(&dev->ioq_wait, timeout); + if (timeout == 0) + return; + if (i) + goto retry; + } + opcode = nvme_admin_delete_cq; + } +} + +/* + * Return: error value if an error occurred setting up the queues or calling + * Identify Device. 0 if these succeeded, even if adding some of the + * namespaces failed. At the moment, these failures are silent. TBD which + * failures should be reported. + */ +static int nvme_dev_add(struct nvme_dev *dev) +{ + if (!dev->ctrl.tagset) { + dev->tagset.ops = &nvme_mq_ops; + dev->tagset.nr_hw_queues = dev->online_queues - 1; + dev->tagset.timeout = NVME_IO_TIMEOUT; + dev->tagset.numa_node = dev_to_node(dev->dev); + dev->tagset.queue_depth = + min_t(int, dev->q_depth, BLK_MQ_MAX_DEPTH) - 1; + dev->tagset.cmd_size = nvme_cmd_size(dev); + dev->tagset.flags = BLK_MQ_F_SHOULD_MERGE; + dev->tagset.driver_data = dev; + + if (blk_mq_alloc_tag_set(&dev->tagset)) + return 0; + dev->ctrl.tagset = &dev->tagset; + } + nvme_queue_scan(dev); + return 0; +} + +static int nvme_pci_enable(struct nvme_dev *dev) +{ + u64 cap; + int result = -ENOMEM; + struct pci_dev *pdev = to_pci_dev(dev->dev); + + if (pci_enable_device_mem(pdev)) + return result; + + dev->entry[0].vector = pdev->irq; + pci_set_master(pdev); + + if (dma_set_mask_and_coherent(dev->dev, DMA_BIT_MASK(64)) && + dma_set_mask_and_coherent(dev->dev, DMA_BIT_MASK(32))) + goto disable; + + if (readl(dev->bar + NVME_REG_CSTS) == -1) { + result = -ENODEV; + goto disable; + } + + /* + * Some devices don't advertse INTx interrupts, pre-enable a single + * MSIX vec for setup. We'll adjust this later. + */ + if (!pdev->irq) { + result = pci_enable_msix(pdev, dev->entry, 1); + if (result < 0) + goto disable; + } + + cap = lo_hi_readq(dev->bar + NVME_REG_CAP); + + dev->q_depth = min_t(int, NVME_CAP_MQES(cap) + 1, NVME_Q_DEPTH); + dev->db_stride = 1 << NVME_CAP_STRIDE(cap); + dev->dbs = dev->bar + 4096; + + /* + * Temporary fix for the Apple controller found in the MacBook8,1 and + * some MacBook7,1 to avoid controller resets and data loss. + */ + if (pdev->vendor == PCI_VENDOR_ID_APPLE && pdev->device == 0x2001) { + dev->q_depth = 2; + dev_warn(dev->dev, "detected Apple NVMe controller, set " + "queue depth=%u to work around controller resets\n", + dev->q_depth); + } + + if (readl(dev->bar + NVME_REG_VS) >= NVME_VS(1, 2)) + dev->cmb = nvme_map_cmb(dev); + + pci_enable_pcie_error_reporting(pdev); + pci_save_state(pdev); + return 0; + + disable: + pci_disable_device(pdev); + return result; +} + +static void nvme_dev_unmap(struct nvme_dev *dev) +{ + if (dev->bar) + iounmap(dev->bar); + pci_release_regions(to_pci_dev(dev->dev)); +} + +static void nvme_pci_disable(struct nvme_dev *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev->dev); + + if (pdev->msi_enabled) + pci_disable_msi(pdev); + else if (pdev->msix_enabled) + pci_disable_msix(pdev); + + if (pci_is_enabled(pdev)) { + pci_disable_pcie_error_reporting(pdev); + pci_disable_device(pdev); + } +} + +static int nvme_dev_list_add(struct nvme_dev *dev) +{ + bool start_thread = false; + + spin_lock(&dev_list_lock); + if (list_empty(&dev_list) && IS_ERR_OR_NULL(nvme_thread)) { + start_thread = true; + nvme_thread = NULL; + } + list_add(&dev->node, &dev_list); + spin_unlock(&dev_list_lock); + + if (start_thread) { + nvme_thread = kthread_run(nvme_kthread, NULL, "nvme"); + wake_up_all(&nvme_kthread_wait); + } else + wait_event_killable(nvme_kthread_wait, nvme_thread); + + if (IS_ERR_OR_NULL(nvme_thread)) + return nvme_thread ? PTR_ERR(nvme_thread) : -EINTR; + + return 0; +} + +/* +* Remove the node from the device list and check +* for whether or not we need to stop the nvme_thread. +*/ +static void nvme_dev_list_remove(struct nvme_dev *dev) +{ + struct task_struct *tmp = NULL; + + spin_lock(&dev_list_lock); + list_del_init(&dev->node); + if (list_empty(&dev_list) && !IS_ERR_OR_NULL(nvme_thread)) { + tmp = nvme_thread; + nvme_thread = NULL; + } + spin_unlock(&dev_list_lock); + + if (tmp) + kthread_stop(tmp); +} + +static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown) +{ + int i; + u32 csts = -1; + + nvme_dev_list_remove(dev); + + mutex_lock(&dev->shutdown_lock); + if (pci_is_enabled(to_pci_dev(dev->dev))) { + nvme_stop_queues(&dev->ctrl); + csts = readl(dev->bar + NVME_REG_CSTS); + } + if (csts & NVME_CSTS_CFS || !(csts & NVME_CSTS_RDY)) { + for (i = dev->queue_count - 1; i >= 0; i--) { + struct nvme_queue *nvmeq = dev->queues[i]; + nvme_suspend_queue(nvmeq); + } + } else { + nvme_disable_io_queues(dev); + nvme_disable_admin_queue(dev, shutdown); + } + nvme_pci_disable(dev); + + for (i = dev->queue_count - 1; i >= 0; i--) + nvme_clear_queue(dev->queues[i]); + mutex_unlock(&dev->shutdown_lock); +} + +static int nvme_setup_prp_pools(struct nvme_dev *dev) +{ + dev->prp_page_pool = dma_pool_create("prp list page", dev->dev, + PAGE_SIZE, PAGE_SIZE, 0); + if (!dev->prp_page_pool) + return -ENOMEM; + + /* Optimisation for I/Os between 4k and 128k */ + dev->prp_small_pool = dma_pool_create("prp list 256", dev->dev, + 256, 256, 0); + if (!dev->prp_small_pool) { + dma_pool_destroy(dev->prp_page_pool); + return -ENOMEM; + } + return 0; +} + +static void nvme_release_prp_pools(struct nvme_dev *dev) +{ + dma_pool_destroy(dev->prp_page_pool); + dma_pool_destroy(dev->prp_small_pool); +} + +static void nvme_pci_free_ctrl(struct nvme_ctrl *ctrl) +{ + struct nvme_dev *dev = to_nvme_dev(ctrl); + + put_device(dev->dev); + if (dev->tagset.tags) + blk_mq_free_tag_set(&dev->tagset); + if (dev->ctrl.admin_q) + blk_put_queue(dev->ctrl.admin_q); + kfree(dev->queues); + kfree(dev->entry); + kfree(dev); +} + +static void nvme_remove_dead_ctrl(struct nvme_dev *dev, int status) +{ + dev_warn(dev->dev, "Removing after probe failure status: %d\n", status); + + kref_get(&dev->ctrl.kref); + nvme_dev_disable(dev, false); + if (!schedule_work(&dev->remove_work)) + nvme_put_ctrl(&dev->ctrl); +} + +static void nvme_reset_work(struct work_struct *work) +{ + struct nvme_dev *dev = container_of(work, struct nvme_dev, reset_work); + int result = -ENODEV; + + if (WARN_ON(test_bit(NVME_CTRL_RESETTING, &dev->flags))) + goto out; + + /* + * If we're called to reset a live controller first shut it down before + * moving on. + */ + if (dev->ctrl.ctrl_config & NVME_CC_ENABLE) + nvme_dev_disable(dev, false); + + set_bit(NVME_CTRL_RESETTING, &dev->flags); + + result = nvme_pci_enable(dev); + if (result) + goto out; + + result = nvme_configure_admin_queue(dev); + if (result) + goto out; + + nvme_init_queue(dev->queues[0], 0); + result = nvme_alloc_admin_tags(dev); + if (result) + goto out; + + result = nvme_init_identify(&dev->ctrl); + if (result) + goto out; + + result = nvme_setup_io_queues(dev); + if (result) + goto out; + + dev->ctrl.event_limit = NVME_NR_AEN_COMMANDS; + + result = nvme_dev_list_add(dev); + if (result) + goto out; + + /* + * Keep the controller around but remove all namespaces if we don't have + * any working I/O queue. + */ + if (dev->online_queues < 2) { + dev_warn(dev->dev, "IO queues not created\n"); + nvme_remove_namespaces(&dev->ctrl); + } else { + nvme_start_queues(&dev->ctrl); + nvme_dev_add(dev); + } + + clear_bit(NVME_CTRL_RESETTING, &dev->flags); + return; + + out: + nvme_remove_dead_ctrl(dev, result); +} + +static void nvme_remove_dead_ctrl_work(struct work_struct *work) +{ + struct nvme_dev *dev = container_of(work, struct nvme_dev, remove_work); + struct pci_dev *pdev = to_pci_dev(dev->dev); + + nvme_kill_queues(&dev->ctrl); + if (pci_get_drvdata(pdev)) + pci_stop_and_remove_bus_device_locked(pdev); + nvme_put_ctrl(&dev->ctrl); +} + +static int nvme_reset(struct nvme_dev *dev) +{ + if (!dev->ctrl.admin_q || blk_queue_dying(dev->ctrl.admin_q)) + return -ENODEV; + + if (!queue_work(nvme_workq, &dev->reset_work)) + return -EBUSY; + + flush_work(&dev->reset_work); + return 0; +} + +static int nvme_pci_reg_read32(struct nvme_ctrl *ctrl, u32 off, u32 *val) +{ + *val = readl(to_nvme_dev(ctrl)->bar + off); + return 0; +} + +static int nvme_pci_reg_write32(struct nvme_ctrl *ctrl, u32 off, u32 val) +{ + writel(val, to_nvme_dev(ctrl)->bar + off); + return 0; +} + +static int nvme_pci_reg_read64(struct nvme_ctrl *ctrl, u32 off, u64 *val) +{ + *val = readq(to_nvme_dev(ctrl)->bar + off); + return 0; +} + +static bool nvme_pci_io_incapable(struct nvme_ctrl *ctrl) +{ + struct nvme_dev *dev = to_nvme_dev(ctrl); + + return !dev->bar || dev->online_queues < 2; +} + +static int nvme_pci_reset_ctrl(struct nvme_ctrl *ctrl) +{ + return nvme_reset(to_nvme_dev(ctrl)); +} + +static const struct nvme_ctrl_ops nvme_pci_ctrl_ops = { + .reg_read32 = nvme_pci_reg_read32, + .reg_write32 = nvme_pci_reg_write32, + .reg_read64 = nvme_pci_reg_read64, + .io_incapable = nvme_pci_io_incapable, + .reset_ctrl = nvme_pci_reset_ctrl, + .free_ctrl = nvme_pci_free_ctrl, +}; + +static int nvme_dev_map(struct nvme_dev *dev) +{ + int bars; + struct pci_dev *pdev = to_pci_dev(dev->dev); + + bars = pci_select_bars(pdev, IORESOURCE_MEM); + if (!bars) + return -ENODEV; + if (pci_request_selected_regions(pdev, bars, "nvme")) + return -ENODEV; + + dev->bar = ioremap(pci_resource_start(pdev, 0), 8192); + if (!dev->bar) + goto release; + + return 0; + release: + pci_release_regions(pdev); + return -ENODEV; +} + +static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id) +{ + int node, result = -ENOMEM; + struct nvme_dev *dev; + + node = dev_to_node(&pdev->dev); + if (node == NUMA_NO_NODE) + set_dev_node(&pdev->dev, 0); + + dev = kzalloc_node(sizeof(*dev), GFP_KERNEL, node); + if (!dev) + return -ENOMEM; + dev->entry = kzalloc_node(num_possible_cpus() * sizeof(*dev->entry), + GFP_KERNEL, node); + if (!dev->entry) + goto free; + dev->queues = kzalloc_node((num_possible_cpus() + 1) * sizeof(void *), + GFP_KERNEL, node); + if (!dev->queues) + goto free; + + dev->dev = get_device(&pdev->dev); + pci_set_drvdata(pdev, dev); + + result = nvme_dev_map(dev); + if (result) + goto free; + + INIT_LIST_HEAD(&dev->node); + INIT_WORK(&dev->scan_work, nvme_dev_scan); + INIT_WORK(&dev->reset_work, nvme_reset_work); + INIT_WORK(&dev->remove_work, nvme_remove_dead_ctrl_work); + mutex_init(&dev->shutdown_lock); + init_completion(&dev->ioq_wait); + + result = nvme_setup_prp_pools(dev); + if (result) + goto put_pci; + + result = nvme_init_ctrl(&dev->ctrl, &pdev->dev, &nvme_pci_ctrl_ops, + id->driver_data); + if (result) + goto release_pools; + + queue_work(nvme_workq, &dev->reset_work); + return 0; + + release_pools: + nvme_release_prp_pools(dev); + put_pci: + put_device(dev->dev); + nvme_dev_unmap(dev); + free: + kfree(dev->queues); + kfree(dev->entry); + kfree(dev); + return result; +} + +static void nvme_reset_notify(struct pci_dev *pdev, bool prepare) +{ + struct nvme_dev *dev = pci_get_drvdata(pdev); + + if (prepare) + nvme_dev_disable(dev, false); + else + queue_work(nvme_workq, &dev->reset_work); +} + +static void nvme_shutdown(struct pci_dev *pdev) +{ + struct nvme_dev *dev = pci_get_drvdata(pdev); + nvme_dev_disable(dev, true); +} + +/* + * The driver's remove may be called on a device in a partially initialized + * state. This function must not have any dependencies on the device state in + * order to proceed. + */ +static void nvme_remove(struct pci_dev *pdev) +{ + struct nvme_dev *dev = pci_get_drvdata(pdev); + + set_bit(NVME_CTRL_REMOVING, &dev->flags); + pci_set_drvdata(pdev, NULL); + flush_work(&dev->scan_work); + nvme_remove_namespaces(&dev->ctrl); + nvme_uninit_ctrl(&dev->ctrl); + nvme_dev_disable(dev, true); + flush_work(&dev->reset_work); + nvme_dev_remove_admin(dev); + nvme_free_queues(dev, 0); + nvme_release_cmb(dev); + nvme_release_prp_pools(dev); + nvme_dev_unmap(dev); + nvme_put_ctrl(&dev->ctrl); +} + +#ifdef CONFIG_PM_SLEEP +static int nvme_suspend(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct nvme_dev *ndev = pci_get_drvdata(pdev); + + nvme_dev_disable(ndev, true); + return 0; +} + +static int nvme_resume(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct nvme_dev *ndev = pci_get_drvdata(pdev); + + queue_work(nvme_workq, &ndev->reset_work); + return 0; +} +#endif + +static SIMPLE_DEV_PM_OPS(nvme_dev_pm_ops, nvme_suspend, nvme_resume); + +static pci_ers_result_t nvme_error_detected(struct pci_dev *pdev, + pci_channel_state_t state) +{ + struct nvme_dev *dev = pci_get_drvdata(pdev); + + /* + * A frozen channel requires a reset. When detected, this method will + * shutdown the controller to quiesce. The controller will be restarted + * after the slot reset through driver's slot_reset callback. + */ + dev_warn(&pdev->dev, "error detected: state:%d\n", state); + switch (state) { + case pci_channel_io_normal: + return PCI_ERS_RESULT_CAN_RECOVER; + case pci_channel_io_frozen: + nvme_dev_disable(dev, false); + return PCI_ERS_RESULT_NEED_RESET; + case pci_channel_io_perm_failure: + return PCI_ERS_RESULT_DISCONNECT; + } + return PCI_ERS_RESULT_NEED_RESET; +} + +static pci_ers_result_t nvme_slot_reset(struct pci_dev *pdev) +{ + struct nvme_dev *dev = pci_get_drvdata(pdev); + + dev_info(&pdev->dev, "restart after slot reset\n"); + pci_restore_state(pdev); + queue_work(nvme_workq, &dev->reset_work); + return PCI_ERS_RESULT_RECOVERED; +} + +static void nvme_error_resume(struct pci_dev *pdev) +{ + pci_cleanup_aer_uncorrect_error_status(pdev); +} + +static const struct pci_error_handlers nvme_err_handler = { + .error_detected = nvme_error_detected, + .slot_reset = nvme_slot_reset, + .resume = nvme_error_resume, + .reset_notify = nvme_reset_notify, +}; + +/* Move to pci_ids.h later */ +#define PCI_CLASS_STORAGE_EXPRESS 0x010802 + +static const struct pci_device_id nvme_id_table[] = { + { PCI_VDEVICE(INTEL, 0x0953), + .driver_data = NVME_QUIRK_STRIPE_SIZE, }, + { PCI_VDEVICE(INTEL, 0x5845), /* Qemu emulated controller */ + .driver_data = NVME_QUIRK_IDENTIFY_CNS, }, + { PCI_DEVICE_CLASS(PCI_CLASS_STORAGE_EXPRESS, 0xffffff) }, + { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2001) }, + { 0, } +}; +MODULE_DEVICE_TABLE(pci, nvme_id_table); + +static struct pci_driver nvme_driver = { + .name = "nvme", + .id_table = nvme_id_table, + .probe = nvme_probe, + .remove = nvme_remove, + .shutdown = nvme_shutdown, + .driver = { + .pm = &nvme_dev_pm_ops, + }, + .err_handler = &nvme_err_handler, +}; + +static int __init nvme_init(void) +{ + int result; + + init_waitqueue_head(&nvme_kthread_wait); + + nvme_workq = alloc_workqueue("nvme", WQ_UNBOUND | WQ_MEM_RECLAIM, 0); + if (!nvme_workq) + return -ENOMEM; + + result = nvme_core_init(); + if (result < 0) + goto kill_workq; + + result = pci_register_driver(&nvme_driver); + if (result) + goto core_exit; + return 0; + + core_exit: + nvme_core_exit(); + kill_workq: + destroy_workqueue(nvme_workq); + return result; +} + +static void __exit nvme_exit(void) +{ + pci_unregister_driver(&nvme_driver); + nvme_core_exit(); + destroy_workqueue(nvme_workq); + BUG_ON(nvme_thread && !IS_ERR(nvme_thread)); + _nvme_check_size(); +} + +MODULE_AUTHOR("Matthew Wilcox "); +MODULE_LICENSE("GPL"); +MODULE_VERSION("1.0"); +module_init(nvme_init); +module_exit(nvme_exit); diff --git a/tools/nvmedrv-v4.5.3/scsi.c b/tools/nvmedrv-v4.5.3/scsi.c new file mode 100644 index 0000000..e947e29 --- /dev/null +++ b/tools/nvmedrv-v4.5.3/scsi.c @@ -0,0 +1,2574 @@ +/* + * NVM Express device driver + * Copyright (c) 2011-2014, Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + */ + +/* + * Refer to the SCSI-NVMe Translation spec for details on how + * each command is translated. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "nvme.h" + +static int sg_version_num = 30534; /* 2 digits for each component */ + +/* VPD Page Codes */ +#define VPD_SUPPORTED_PAGES 0x00 +#define VPD_SERIAL_NUMBER 0x80 +#define VPD_DEVICE_IDENTIFIERS 0x83 +#define VPD_EXTENDED_INQUIRY 0x86 +#define VPD_BLOCK_LIMITS 0xB0 +#define VPD_BLOCK_DEV_CHARACTERISTICS 0xB1 + +/* format unit paramter list offsets */ +#define FORMAT_UNIT_SHORT_PARM_LIST_LEN 4 +#define FORMAT_UNIT_LONG_PARM_LIST_LEN 8 +#define FORMAT_UNIT_PROT_INT_OFFSET 3 +#define FORMAT_UNIT_PROT_FIELD_USAGE_OFFSET 0 +#define FORMAT_UNIT_PROT_FIELD_USAGE_MASK 0x07 + +/* Misc. defines */ +#define FIXED_SENSE_DATA 0x70 +#define DESC_FORMAT_SENSE_DATA 0x72 +#define FIXED_SENSE_DATA_ADD_LENGTH 10 +#define LUN_ENTRY_SIZE 8 +#define LUN_DATA_HEADER_SIZE 8 +#define ALL_LUNS_RETURNED 0x02 +#define ALL_WELL_KNOWN_LUNS_RETURNED 0x01 +#define RESTRICTED_LUNS_RETURNED 0x00 +#define NVME_POWER_STATE_START_VALID 0x00 +#define NVME_POWER_STATE_ACTIVE 0x01 +#define NVME_POWER_STATE_IDLE 0x02 +#define NVME_POWER_STATE_STANDBY 0x03 +#define NVME_POWER_STATE_LU_CONTROL 0x07 +#define POWER_STATE_0 0 +#define POWER_STATE_1 1 +#define POWER_STATE_2 2 +#define POWER_STATE_3 3 +#define DOWNLOAD_SAVE_ACTIVATE 0x05 +#define DOWNLOAD_SAVE_DEFER_ACTIVATE 0x0E +#define ACTIVATE_DEFERRED_MICROCODE 0x0F +#define FORMAT_UNIT_IMMED_MASK 0x2 +#define FORMAT_UNIT_IMMED_OFFSET 1 +#define KELVIN_TEMP_FACTOR 273 +#define FIXED_FMT_SENSE_DATA_SIZE 18 +#define DESC_FMT_SENSE_DATA_SIZE 8 + +/* SCSI/NVMe defines and bit masks */ +#define INQ_STANDARD_INQUIRY_PAGE 0x00 +#define INQ_SUPPORTED_VPD_PAGES_PAGE 0x00 +#define INQ_UNIT_SERIAL_NUMBER_PAGE 0x80 +#define INQ_DEVICE_IDENTIFICATION_PAGE 0x83 +#define INQ_EXTENDED_INQUIRY_DATA_PAGE 0x86 +#define INQ_BDEV_LIMITS_PAGE 0xB0 +#define INQ_BDEV_CHARACTERISTICS_PAGE 0xB1 +#define INQ_SERIAL_NUMBER_LENGTH 0x14 +#define INQ_NUM_SUPPORTED_VPD_PAGES 6 +#define VERSION_SPC_4 0x06 +#define ACA_UNSUPPORTED 0 +#define STANDARD_INQUIRY_LENGTH 36 +#define ADDITIONAL_STD_INQ_LENGTH 31 +#define EXTENDED_INQUIRY_DATA_PAGE_LENGTH 0x3C +#define RESERVED_FIELD 0 + +/* Mode Sense/Select defines */ +#define MODE_PAGE_INFO_EXCEP 0x1C +#define MODE_PAGE_CACHING 0x08 +#define MODE_PAGE_CONTROL 0x0A +#define MODE_PAGE_POWER_CONDITION 0x1A +#define MODE_PAGE_RETURN_ALL 0x3F +#define MODE_PAGE_BLK_DES_LEN 0x08 +#define MODE_PAGE_LLBAA_BLK_DES_LEN 0x10 +#define MODE_PAGE_CACHING_LEN 0x14 +#define MODE_PAGE_CONTROL_LEN 0x0C +#define MODE_PAGE_POW_CND_LEN 0x28 +#define MODE_PAGE_INF_EXC_LEN 0x0C +#define MODE_PAGE_ALL_LEN 0x54 +#define MODE_SENSE6_MPH_SIZE 4 +#define MODE_SENSE_PAGE_CONTROL_MASK 0xC0 +#define MODE_SENSE_PAGE_CODE_OFFSET 2 +#define MODE_SENSE_PAGE_CODE_MASK 0x3F +#define MODE_SENSE_LLBAA_MASK 0x10 +#define MODE_SENSE_LLBAA_SHIFT 4 +#define MODE_SENSE_DBD_MASK 8 +#define MODE_SENSE_DBD_SHIFT 3 +#define MODE_SENSE10_MPH_SIZE 8 +#define MODE_SELECT_CDB_PAGE_FORMAT_MASK 0x10 +#define MODE_SELECT_CDB_SAVE_PAGES_MASK 0x1 +#define MODE_SELECT_6_BD_OFFSET 3 +#define MODE_SELECT_10_BD_OFFSET 6 +#define MODE_SELECT_10_LLBAA_OFFSET 4 +#define MODE_SELECT_10_LLBAA_MASK 1 +#define MODE_SELECT_6_MPH_SIZE 4 +#define MODE_SELECT_10_MPH_SIZE 8 +#define CACHING_MODE_PAGE_WCE_MASK 0x04 +#define MODE_SENSE_BLK_DESC_ENABLED 0 +#define MODE_SENSE_BLK_DESC_COUNT 1 +#define MODE_SELECT_PAGE_CODE_MASK 0x3F +#define SHORT_DESC_BLOCK 8 +#define LONG_DESC_BLOCK 16 +#define MODE_PAGE_POW_CND_LEN_FIELD 0x26 +#define MODE_PAGE_INF_EXC_LEN_FIELD 0x0A +#define MODE_PAGE_CACHING_LEN_FIELD 0x12 +#define MODE_PAGE_CONTROL_LEN_FIELD 0x0A +#define MODE_SENSE_PC_CURRENT_VALUES 0 + +/* Log Sense defines */ +#define LOG_PAGE_SUPPORTED_LOG_PAGES_PAGE 0x00 +#define LOG_PAGE_SUPPORTED_LOG_PAGES_LENGTH 0x07 +#define LOG_PAGE_INFORMATIONAL_EXCEPTIONS_PAGE 0x2F +#define LOG_PAGE_TEMPERATURE_PAGE 0x0D +#define LOG_SENSE_CDB_SP_NOT_ENABLED 0 +#define LOG_SENSE_CDB_PC_MASK 0xC0 +#define LOG_SENSE_CDB_PC_SHIFT 6 +#define LOG_SENSE_CDB_PC_CUMULATIVE_VALUES 1 +#define LOG_SENSE_CDB_PAGE_CODE_MASK 0x3F +#define REMAINING_INFO_EXCP_PAGE_LENGTH 0x8 +#define LOG_INFO_EXCP_PAGE_LENGTH 0xC +#define REMAINING_TEMP_PAGE_LENGTH 0xC +#define LOG_TEMP_PAGE_LENGTH 0x10 +#define LOG_TEMP_UNKNOWN 0xFF +#define SUPPORTED_LOG_PAGES_PAGE_LENGTH 0x3 + +/* Read Capacity defines */ +#define READ_CAP_10_RESP_SIZE 8 +#define READ_CAP_16_RESP_SIZE 32 + +/* NVMe Namespace and Command Defines */ +#define BYTES_TO_DWORDS 4 +#define NVME_MAX_FIRMWARE_SLOT 7 + +/* Report LUNs defines */ +#define REPORT_LUNS_FIRST_LUN_OFFSET 8 + +/* SCSI ADDITIONAL SENSE Codes */ + +#define SCSI_ASC_NO_SENSE 0x00 +#define SCSI_ASC_PERIPHERAL_DEV_WRITE_FAULT 0x03 +#define SCSI_ASC_LUN_NOT_READY 0x04 +#define SCSI_ASC_WARNING 0x0B +#define SCSI_ASC_LOG_BLOCK_GUARD_CHECK_FAILED 0x10 +#define SCSI_ASC_LOG_BLOCK_APPTAG_CHECK_FAILED 0x10 +#define SCSI_ASC_LOG_BLOCK_REFTAG_CHECK_FAILED 0x10 +#define SCSI_ASC_UNRECOVERED_READ_ERROR 0x11 +#define SCSI_ASC_MISCOMPARE_DURING_VERIFY 0x1D +#define SCSI_ASC_ACCESS_DENIED_INVALID_LUN_ID 0x20 +#define SCSI_ASC_ILLEGAL_COMMAND 0x20 +#define SCSI_ASC_ILLEGAL_BLOCK 0x21 +#define SCSI_ASC_INVALID_CDB 0x24 +#define SCSI_ASC_INVALID_LUN 0x25 +#define SCSI_ASC_INVALID_PARAMETER 0x26 +#define SCSI_ASC_FORMAT_COMMAND_FAILED 0x31 +#define SCSI_ASC_INTERNAL_TARGET_FAILURE 0x44 + +/* SCSI ADDITIONAL SENSE Code Qualifiers */ + +#define SCSI_ASCQ_CAUSE_NOT_REPORTABLE 0x00 +#define SCSI_ASCQ_FORMAT_COMMAND_FAILED 0x01 +#define SCSI_ASCQ_LOG_BLOCK_GUARD_CHECK_FAILED 0x01 +#define SCSI_ASCQ_LOG_BLOCK_APPTAG_CHECK_FAILED 0x02 +#define SCSI_ASCQ_LOG_BLOCK_REFTAG_CHECK_FAILED 0x03 +#define SCSI_ASCQ_FORMAT_IN_PROGRESS 0x04 +#define SCSI_ASCQ_POWER_LOSS_EXPECTED 0x08 +#define SCSI_ASCQ_INVALID_LUN_ID 0x09 + +/* copied from drivers/usb/gadget/function/storage_common.h */ +static inline u32 get_unaligned_be24(u8 *buf) +{ + return 0xffffff & (u32) get_unaligned_be32(buf - 1); +} + +/* Struct to gather data that needs to be extracted from a SCSI CDB. + Not conforming to any particular CDB variant, but compatible with all. */ + +struct nvme_trans_io_cdb { + u8 fua; + u8 prot_info; + u64 lba; + u32 xfer_len; +}; + + +/* Internal Helper Functions */ + + +/* Copy data to userspace memory */ + +static int nvme_trans_copy_to_user(struct sg_io_hdr *hdr, void *from, + unsigned long n) +{ + int i; + void *index = from; + size_t remaining = n; + size_t xfer_len; + + if (hdr->iovec_count > 0) { + struct sg_iovec sgl; + + for (i = 0; i < hdr->iovec_count; i++) { + if (copy_from_user(&sgl, hdr->dxferp + + i * sizeof(struct sg_iovec), + sizeof(struct sg_iovec))) + return -EFAULT; + xfer_len = min(remaining, sgl.iov_len); + if (copy_to_user(sgl.iov_base, index, xfer_len)) + return -EFAULT; + + index += xfer_len; + remaining -= xfer_len; + if (remaining == 0) + break; + } + return 0; + } + + if (copy_to_user(hdr->dxferp, from, n)) + return -EFAULT; + return 0; +} + +/* Copy data from userspace memory */ + +static int nvme_trans_copy_from_user(struct sg_io_hdr *hdr, void *to, + unsigned long n) +{ + int i; + void *index = to; + size_t remaining = n; + size_t xfer_len; + + if (hdr->iovec_count > 0) { + struct sg_iovec sgl; + + for (i = 0; i < hdr->iovec_count; i++) { + if (copy_from_user(&sgl, hdr->dxferp + + i * sizeof(struct sg_iovec), + sizeof(struct sg_iovec))) + return -EFAULT; + xfer_len = min(remaining, sgl.iov_len); + if (copy_from_user(index, sgl.iov_base, xfer_len)) + return -EFAULT; + index += xfer_len; + remaining -= xfer_len; + if (remaining == 0) + break; + } + return 0; + } + + if (copy_from_user(to, hdr->dxferp, n)) + return -EFAULT; + return 0; +} + +/* Status/Sense Buffer Writeback */ + +static int nvme_trans_completion(struct sg_io_hdr *hdr, u8 status, u8 sense_key, + u8 asc, u8 ascq) +{ + u8 xfer_len; + u8 resp[DESC_FMT_SENSE_DATA_SIZE]; + + if (scsi_status_is_good(status)) { + hdr->status = SAM_STAT_GOOD; + hdr->masked_status = GOOD; + hdr->host_status = DID_OK; + hdr->driver_status = DRIVER_OK; + hdr->sb_len_wr = 0; + } else { + hdr->status = status; + hdr->masked_status = status >> 1; + hdr->host_status = DID_OK; + hdr->driver_status = DRIVER_OK; + + memset(resp, 0, DESC_FMT_SENSE_DATA_SIZE); + resp[0] = DESC_FORMAT_SENSE_DATA; + resp[1] = sense_key; + resp[2] = asc; + resp[3] = ascq; + + xfer_len = min_t(u8, hdr->mx_sb_len, DESC_FMT_SENSE_DATA_SIZE); + hdr->sb_len_wr = xfer_len; + if (copy_to_user(hdr->sbp, resp, xfer_len) > 0) + return -EFAULT; + } + + return 0; +} + +/* + * Take a status code from a lowlevel routine, and if it was a positive NVMe + * error code update the sense data based on it. In either case the passed + * in value is returned again, unless an -EFAULT from copy_to_user overrides + * it. + */ +static int nvme_trans_status_code(struct sg_io_hdr *hdr, int nvme_sc) +{ + u8 status, sense_key, asc, ascq; + int res; + + /* For non-nvme (Linux) errors, simply return the error code */ + if (nvme_sc < 0) + return nvme_sc; + + /* Mask DNR, More, and reserved fields */ + switch (nvme_sc & 0x7FF) { + /* Generic Command Status */ + case NVME_SC_SUCCESS: + status = SAM_STAT_GOOD; + sense_key = NO_SENSE; + asc = SCSI_ASC_NO_SENSE; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_INVALID_OPCODE: + status = SAM_STAT_CHECK_CONDITION; + sense_key = ILLEGAL_REQUEST; + asc = SCSI_ASC_ILLEGAL_COMMAND; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_INVALID_FIELD: + status = SAM_STAT_CHECK_CONDITION; + sense_key = ILLEGAL_REQUEST; + asc = SCSI_ASC_INVALID_CDB; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_DATA_XFER_ERROR: + status = SAM_STAT_CHECK_CONDITION; + sense_key = MEDIUM_ERROR; + asc = SCSI_ASC_NO_SENSE; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_POWER_LOSS: + status = SAM_STAT_TASK_ABORTED; + sense_key = ABORTED_COMMAND; + asc = SCSI_ASC_WARNING; + ascq = SCSI_ASCQ_POWER_LOSS_EXPECTED; + break; + case NVME_SC_INTERNAL: + status = SAM_STAT_CHECK_CONDITION; + sense_key = HARDWARE_ERROR; + asc = SCSI_ASC_INTERNAL_TARGET_FAILURE; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_ABORT_REQ: + status = SAM_STAT_TASK_ABORTED; + sense_key = ABORTED_COMMAND; + asc = SCSI_ASC_NO_SENSE; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_ABORT_QUEUE: + status = SAM_STAT_TASK_ABORTED; + sense_key = ABORTED_COMMAND; + asc = SCSI_ASC_NO_SENSE; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_FUSED_FAIL: + status = SAM_STAT_TASK_ABORTED; + sense_key = ABORTED_COMMAND; + asc = SCSI_ASC_NO_SENSE; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_FUSED_MISSING: + status = SAM_STAT_TASK_ABORTED; + sense_key = ABORTED_COMMAND; + asc = SCSI_ASC_NO_SENSE; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_INVALID_NS: + status = SAM_STAT_CHECK_CONDITION; + sense_key = ILLEGAL_REQUEST; + asc = SCSI_ASC_ACCESS_DENIED_INVALID_LUN_ID; + ascq = SCSI_ASCQ_INVALID_LUN_ID; + break; + case NVME_SC_LBA_RANGE: + status = SAM_STAT_CHECK_CONDITION; + sense_key = ILLEGAL_REQUEST; + asc = SCSI_ASC_ILLEGAL_BLOCK; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_CAP_EXCEEDED: + status = SAM_STAT_CHECK_CONDITION; + sense_key = MEDIUM_ERROR; + asc = SCSI_ASC_NO_SENSE; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_NS_NOT_READY: + status = SAM_STAT_CHECK_CONDITION; + sense_key = NOT_READY; + asc = SCSI_ASC_LUN_NOT_READY; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + + /* Command Specific Status */ + case NVME_SC_INVALID_FORMAT: + status = SAM_STAT_CHECK_CONDITION; + sense_key = ILLEGAL_REQUEST; + asc = SCSI_ASC_FORMAT_COMMAND_FAILED; + ascq = SCSI_ASCQ_FORMAT_COMMAND_FAILED; + break; + case NVME_SC_BAD_ATTRIBUTES: + status = SAM_STAT_CHECK_CONDITION; + sense_key = ILLEGAL_REQUEST; + asc = SCSI_ASC_INVALID_CDB; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + + /* Media Errors */ + case NVME_SC_WRITE_FAULT: + status = SAM_STAT_CHECK_CONDITION; + sense_key = MEDIUM_ERROR; + asc = SCSI_ASC_PERIPHERAL_DEV_WRITE_FAULT; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_READ_ERROR: + status = SAM_STAT_CHECK_CONDITION; + sense_key = MEDIUM_ERROR; + asc = SCSI_ASC_UNRECOVERED_READ_ERROR; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_GUARD_CHECK: + status = SAM_STAT_CHECK_CONDITION; + sense_key = MEDIUM_ERROR; + asc = SCSI_ASC_LOG_BLOCK_GUARD_CHECK_FAILED; + ascq = SCSI_ASCQ_LOG_BLOCK_GUARD_CHECK_FAILED; + break; + case NVME_SC_APPTAG_CHECK: + status = SAM_STAT_CHECK_CONDITION; + sense_key = MEDIUM_ERROR; + asc = SCSI_ASC_LOG_BLOCK_APPTAG_CHECK_FAILED; + ascq = SCSI_ASCQ_LOG_BLOCK_APPTAG_CHECK_FAILED; + break; + case NVME_SC_REFTAG_CHECK: + status = SAM_STAT_CHECK_CONDITION; + sense_key = MEDIUM_ERROR; + asc = SCSI_ASC_LOG_BLOCK_REFTAG_CHECK_FAILED; + ascq = SCSI_ASCQ_LOG_BLOCK_REFTAG_CHECK_FAILED; + break; + case NVME_SC_COMPARE_FAILED: + status = SAM_STAT_CHECK_CONDITION; + sense_key = MISCOMPARE; + asc = SCSI_ASC_MISCOMPARE_DURING_VERIFY; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + case NVME_SC_ACCESS_DENIED: + status = SAM_STAT_CHECK_CONDITION; + sense_key = ILLEGAL_REQUEST; + asc = SCSI_ASC_ACCESS_DENIED_INVALID_LUN_ID; + ascq = SCSI_ASCQ_INVALID_LUN_ID; + break; + + /* Unspecified/Default */ + case NVME_SC_CMDID_CONFLICT: + case NVME_SC_CMD_SEQ_ERROR: + case NVME_SC_CQ_INVALID: + case NVME_SC_QID_INVALID: + case NVME_SC_QUEUE_SIZE: + case NVME_SC_ABORT_LIMIT: + case NVME_SC_ABORT_MISSING: + case NVME_SC_ASYNC_LIMIT: + case NVME_SC_FIRMWARE_SLOT: + case NVME_SC_FIRMWARE_IMAGE: + case NVME_SC_INVALID_VECTOR: + case NVME_SC_INVALID_LOG_PAGE: + default: + status = SAM_STAT_CHECK_CONDITION; + sense_key = ILLEGAL_REQUEST; + asc = SCSI_ASC_NO_SENSE; + ascq = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + break; + } + + res = nvme_trans_completion(hdr, status, sense_key, asc, ascq); + return res ? res : nvme_sc; +} + +/* INQUIRY Helper Functions */ + +static int nvme_trans_standard_inquiry_page(struct nvme_ns *ns, + struct sg_io_hdr *hdr, u8 *inq_response, + int alloc_len) +{ + struct nvme_ctrl *ctrl = ns->ctrl; + struct nvme_id_ns *id_ns; + int res; + int nvme_sc; + int xfer_len; + u8 resp_data_format = 0x02; + u8 protect; + u8 cmdque = 0x01 << 1; + u8 fw_offset = sizeof(ctrl->firmware_rev); + + /* nvme ns identify - use DPS value for PROTECT field */ + nvme_sc = nvme_identify_ns(ctrl, ns->ns_id, &id_ns); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + return res; + + if (id_ns->dps) + protect = 0x01; + else + protect = 0; + kfree(id_ns); + + memset(inq_response, 0, STANDARD_INQUIRY_LENGTH); + inq_response[2] = VERSION_SPC_4; + inq_response[3] = resp_data_format; /*normaca=0 | hisup=0 */ + inq_response[4] = ADDITIONAL_STD_INQ_LENGTH; + inq_response[5] = protect; /* sccs=0 | acc=0 | tpgs=0 | pc3=0 */ + inq_response[7] = cmdque; /* wbus16=0 | sync=0 | vs=0 */ + strncpy(&inq_response[8], "NVMe ", 8); + strncpy(&inq_response[16], ctrl->model, 16); + + while (ctrl->firmware_rev[fw_offset - 1] == ' ' && fw_offset > 4) + fw_offset--; + fw_offset -= 4; + strncpy(&inq_response[32], ctrl->firmware_rev + fw_offset, 4); + + xfer_len = min(alloc_len, STANDARD_INQUIRY_LENGTH); + return nvme_trans_copy_to_user(hdr, inq_response, xfer_len); +} + +static int nvme_trans_supported_vpd_pages(struct nvme_ns *ns, + struct sg_io_hdr *hdr, u8 *inq_response, + int alloc_len) +{ + int xfer_len; + + memset(inq_response, 0, STANDARD_INQUIRY_LENGTH); + inq_response[1] = INQ_SUPPORTED_VPD_PAGES_PAGE; /* Page Code */ + inq_response[3] = INQ_NUM_SUPPORTED_VPD_PAGES; /* Page Length */ + inq_response[4] = INQ_SUPPORTED_VPD_PAGES_PAGE; + inq_response[5] = INQ_UNIT_SERIAL_NUMBER_PAGE; + inq_response[6] = INQ_DEVICE_IDENTIFICATION_PAGE; + inq_response[7] = INQ_EXTENDED_INQUIRY_DATA_PAGE; + inq_response[8] = INQ_BDEV_CHARACTERISTICS_PAGE; + inq_response[9] = INQ_BDEV_LIMITS_PAGE; + + xfer_len = min(alloc_len, STANDARD_INQUIRY_LENGTH); + return nvme_trans_copy_to_user(hdr, inq_response, xfer_len); +} + +static int nvme_trans_unit_serial_page(struct nvme_ns *ns, + struct sg_io_hdr *hdr, u8 *inq_response, + int alloc_len) +{ + int xfer_len; + + memset(inq_response, 0, STANDARD_INQUIRY_LENGTH); + inq_response[1] = INQ_UNIT_SERIAL_NUMBER_PAGE; /* Page Code */ + inq_response[3] = INQ_SERIAL_NUMBER_LENGTH; /* Page Length */ + strncpy(&inq_response[4], ns->ctrl->serial, INQ_SERIAL_NUMBER_LENGTH); + + xfer_len = min(alloc_len, STANDARD_INQUIRY_LENGTH); + return nvme_trans_copy_to_user(hdr, inq_response, xfer_len); +} + +static int nvme_fill_device_id_eui64(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *inq_response, int alloc_len) +{ + struct nvme_id_ns *id_ns; + int nvme_sc, res; + size_t len; + void *eui; + + nvme_sc = nvme_identify_ns(ns->ctrl, ns->ns_id, &id_ns); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + return res; + + eui = id_ns->eui64; + len = sizeof(id_ns->eui64); + + if (ns->ctrl->vs >= NVME_VS(1, 2)) { + if (bitmap_empty(eui, len * 8)) { + eui = id_ns->nguid; + len = sizeof(id_ns->nguid); + } + } + + if (bitmap_empty(eui, len * 8)) { + res = -EOPNOTSUPP; + goto out_free_id; + } + + memset(inq_response, 0, alloc_len); + inq_response[1] = INQ_DEVICE_IDENTIFICATION_PAGE; + inq_response[3] = 4 + len; /* Page Length */ + + /* Designation Descriptor start */ + inq_response[4] = 0x01; /* Proto ID=0h | Code set=1h */ + inq_response[5] = 0x02; /* PIV=0b | Asso=00b | Designator Type=2h */ + inq_response[6] = 0x00; /* Rsvd */ + inq_response[7] = len; /* Designator Length */ + memcpy(&inq_response[8], eui, len); + + res = nvme_trans_copy_to_user(hdr, inq_response, alloc_len); +out_free_id: + kfree(id_ns); + return res; +} + +static int nvme_fill_device_id_scsi_string(struct nvme_ns *ns, + struct sg_io_hdr *hdr, u8 *inq_response, int alloc_len) +{ + struct nvme_ctrl *ctrl = ns->ctrl; + struct nvme_id_ctrl *id_ctrl; + int nvme_sc, res; + + if (alloc_len < 72) { + return nvme_trans_completion(hdr, + SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + } + + nvme_sc = nvme_identify_ctrl(ctrl, &id_ctrl); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + return res; + + memset(inq_response, 0, alloc_len); + inq_response[1] = INQ_DEVICE_IDENTIFICATION_PAGE; + inq_response[3] = 0x48; /* Page Length */ + + /* Designation Descriptor start */ + inq_response[4] = 0x03; /* Proto ID=0h | Code set=3h */ + inq_response[5] = 0x08; /* PIV=0b | Asso=00b | Designator Type=8h */ + inq_response[6] = 0x00; /* Rsvd */ + inq_response[7] = 0x44; /* Designator Length */ + + sprintf(&inq_response[8], "%04x", le16_to_cpu(id_ctrl->vid)); + memcpy(&inq_response[12], ctrl->model, sizeof(ctrl->model)); + sprintf(&inq_response[52], "%04x", cpu_to_be32(ns->ns_id)); + memcpy(&inq_response[56], ctrl->serial, sizeof(ctrl->serial)); + + res = nvme_trans_copy_to_user(hdr, inq_response, alloc_len); + kfree(id_ctrl); + return res; +} + +static int nvme_trans_device_id_page(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *resp, int alloc_len) +{ + int res; + + if (ns->ctrl->vs >= NVME_VS(1, 1)) { + res = nvme_fill_device_id_eui64(ns, hdr, resp, alloc_len); + if (res != -EOPNOTSUPP) + return res; + } + + return nvme_fill_device_id_scsi_string(ns, hdr, resp, alloc_len); +} + +static int nvme_trans_ext_inq_page(struct nvme_ns *ns, struct sg_io_hdr *hdr, + int alloc_len) +{ + u8 *inq_response; + int res; + int nvme_sc; + struct nvme_ctrl *ctrl = ns->ctrl; + struct nvme_id_ctrl *id_ctrl; + struct nvme_id_ns *id_ns; + int xfer_len; + u8 microcode = 0x80; + u8 spt; + u8 spt_lut[8] = {0, 0, 2, 1, 4, 6, 5, 7}; + u8 grd_chk, app_chk, ref_chk, protect; + u8 uask_sup = 0x20; + u8 v_sup; + u8 luiclr = 0x01; + + inq_response = kmalloc(EXTENDED_INQUIRY_DATA_PAGE_LENGTH, GFP_KERNEL); + if (inq_response == NULL) + return -ENOMEM; + + nvme_sc = nvme_identify_ns(ctrl, ns->ns_id, &id_ns); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + goto out_free_inq; + + spt = spt_lut[id_ns->dpc & 0x07] << 3; + if (id_ns->dps) + protect = 0x01; + else + protect = 0; + kfree(id_ns); + + grd_chk = protect << 2; + app_chk = protect << 1; + ref_chk = protect; + + nvme_sc = nvme_identify_ctrl(ctrl, &id_ctrl); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + goto out_free_inq; + + v_sup = id_ctrl->vwc; + kfree(id_ctrl); + + memset(inq_response, 0, EXTENDED_INQUIRY_DATA_PAGE_LENGTH); + inq_response[1] = INQ_EXTENDED_INQUIRY_DATA_PAGE; /* Page Code */ + inq_response[2] = 0x00; /* Page Length MSB */ + inq_response[3] = 0x3C; /* Page Length LSB */ + inq_response[4] = microcode | spt | grd_chk | app_chk | ref_chk; + inq_response[5] = uask_sup; + inq_response[6] = v_sup; + inq_response[7] = luiclr; + inq_response[8] = 0; + inq_response[9] = 0; + + xfer_len = min(alloc_len, EXTENDED_INQUIRY_DATA_PAGE_LENGTH); + res = nvme_trans_copy_to_user(hdr, inq_response, xfer_len); + + out_free_inq: + kfree(inq_response); + return res; +} + +static int nvme_trans_bdev_limits_page(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *inq_response, int alloc_len) +{ + __be32 max_sectors = cpu_to_be32( + nvme_block_nr(ns, queue_max_hw_sectors(ns->queue))); + __be32 max_discard = cpu_to_be32(ns->queue->limits.max_discard_sectors); + __be32 discard_desc_count = cpu_to_be32(0x100); + + memset(inq_response, 0, STANDARD_INQUIRY_LENGTH); + inq_response[1] = VPD_BLOCK_LIMITS; + inq_response[3] = 0x3c; /* Page Length */ + memcpy(&inq_response[8], &max_sectors, sizeof(u32)); + memcpy(&inq_response[20], &max_discard, sizeof(u32)); + + if (max_discard) + memcpy(&inq_response[24], &discard_desc_count, sizeof(u32)); + + return nvme_trans_copy_to_user(hdr, inq_response, 0x3c); +} + +static int nvme_trans_bdev_char_page(struct nvme_ns *ns, struct sg_io_hdr *hdr, + int alloc_len) +{ + u8 *inq_response; + int res; + int xfer_len; + + inq_response = kzalloc(EXTENDED_INQUIRY_DATA_PAGE_LENGTH, GFP_KERNEL); + if (inq_response == NULL) { + res = -ENOMEM; + goto out_mem; + } + + inq_response[1] = INQ_BDEV_CHARACTERISTICS_PAGE; /* Page Code */ + inq_response[2] = 0x00; /* Page Length MSB */ + inq_response[3] = 0x3C; /* Page Length LSB */ + inq_response[4] = 0x00; /* Medium Rotation Rate MSB */ + inq_response[5] = 0x01; /* Medium Rotation Rate LSB */ + inq_response[6] = 0x00; /* Form Factor */ + + xfer_len = min(alloc_len, EXTENDED_INQUIRY_DATA_PAGE_LENGTH); + res = nvme_trans_copy_to_user(hdr, inq_response, xfer_len); + + kfree(inq_response); + out_mem: + return res; +} + +/* LOG SENSE Helper Functions */ + +static int nvme_trans_log_supp_pages(struct nvme_ns *ns, struct sg_io_hdr *hdr, + int alloc_len) +{ + int res; + int xfer_len; + u8 *log_response; + + log_response = kzalloc(LOG_PAGE_SUPPORTED_LOG_PAGES_LENGTH, GFP_KERNEL); + if (log_response == NULL) { + res = -ENOMEM; + goto out_mem; + } + + log_response[0] = LOG_PAGE_SUPPORTED_LOG_PAGES_PAGE; + /* Subpage=0x00, Page Length MSB=0 */ + log_response[3] = SUPPORTED_LOG_PAGES_PAGE_LENGTH; + log_response[4] = LOG_PAGE_SUPPORTED_LOG_PAGES_PAGE; + log_response[5] = LOG_PAGE_INFORMATIONAL_EXCEPTIONS_PAGE; + log_response[6] = LOG_PAGE_TEMPERATURE_PAGE; + + xfer_len = min(alloc_len, LOG_PAGE_SUPPORTED_LOG_PAGES_LENGTH); + res = nvme_trans_copy_to_user(hdr, log_response, xfer_len); + + kfree(log_response); + out_mem: + return res; +} + +static int nvme_trans_log_info_exceptions(struct nvme_ns *ns, + struct sg_io_hdr *hdr, int alloc_len) +{ + int res; + int xfer_len; + u8 *log_response; + struct nvme_smart_log *smart_log; + u8 temp_c; + u16 temp_k; + + log_response = kzalloc(LOG_INFO_EXCP_PAGE_LENGTH, GFP_KERNEL); + if (log_response == NULL) + return -ENOMEM; + + res = nvme_get_log_page(ns->ctrl, &smart_log); + if (res < 0) + goto out_free_response; + + if (res != NVME_SC_SUCCESS) { + temp_c = LOG_TEMP_UNKNOWN; + } else { + temp_k = (smart_log->temperature[1] << 8) + + (smart_log->temperature[0]); + temp_c = temp_k - KELVIN_TEMP_FACTOR; + } + kfree(smart_log); + + log_response[0] = LOG_PAGE_INFORMATIONAL_EXCEPTIONS_PAGE; + /* Subpage=0x00, Page Length MSB=0 */ + log_response[3] = REMAINING_INFO_EXCP_PAGE_LENGTH; + /* Informational Exceptions Log Parameter 1 Start */ + /* Parameter Code=0x0000 bytes 4,5 */ + log_response[6] = 0x23; /* DU=0, TSD=1, ETC=0, TMC=0, FMT_AND_LNK=11b */ + log_response[7] = 0x04; /* PARAMETER LENGTH */ + /* Add sense Code and qualifier = 0x00 each */ + /* Use Temperature from NVMe Get Log Page, convert to C from K */ + log_response[10] = temp_c; + + xfer_len = min(alloc_len, LOG_INFO_EXCP_PAGE_LENGTH); + res = nvme_trans_copy_to_user(hdr, log_response, xfer_len); + + out_free_response: + kfree(log_response); + return res; +} + +static int nvme_trans_log_temperature(struct nvme_ns *ns, struct sg_io_hdr *hdr, + int alloc_len) +{ + int res; + int xfer_len; + u8 *log_response; + struct nvme_smart_log *smart_log; + u32 feature_resp; + u8 temp_c_cur, temp_c_thresh; + u16 temp_k; + + log_response = kzalloc(LOG_TEMP_PAGE_LENGTH, GFP_KERNEL); + if (log_response == NULL) + return -ENOMEM; + + res = nvme_get_log_page(ns->ctrl, &smart_log); + if (res < 0) + goto out_free_response; + + if (res != NVME_SC_SUCCESS) { + temp_c_cur = LOG_TEMP_UNKNOWN; + } else { + temp_k = (smart_log->temperature[1] << 8) + + (smart_log->temperature[0]); + temp_c_cur = temp_k - KELVIN_TEMP_FACTOR; + } + kfree(smart_log); + + /* Get Features for Temp Threshold */ + res = nvme_get_features(ns->ctrl, NVME_FEAT_TEMP_THRESH, 0, 0, + &feature_resp); + if (res != NVME_SC_SUCCESS) + temp_c_thresh = LOG_TEMP_UNKNOWN; + else + temp_c_thresh = (feature_resp & 0xFFFF) - KELVIN_TEMP_FACTOR; + + log_response[0] = LOG_PAGE_TEMPERATURE_PAGE; + /* Subpage=0x00, Page Length MSB=0 */ + log_response[3] = REMAINING_TEMP_PAGE_LENGTH; + /* Temperature Log Parameter 1 (Temperature) Start */ + /* Parameter Code = 0x0000 */ + log_response[6] = 0x01; /* Format and Linking = 01b */ + log_response[7] = 0x02; /* Parameter Length */ + /* Use Temperature from NVMe Get Log Page, convert to C from K */ + log_response[9] = temp_c_cur; + /* Temperature Log Parameter 2 (Reference Temperature) Start */ + log_response[11] = 0x01; /* Parameter Code = 0x0001 */ + log_response[12] = 0x01; /* Format and Linking = 01b */ + log_response[13] = 0x02; /* Parameter Length */ + /* Use Temperature Thresh from NVMe Get Log Page, convert to C from K */ + log_response[15] = temp_c_thresh; + + xfer_len = min(alloc_len, LOG_TEMP_PAGE_LENGTH); + res = nvme_trans_copy_to_user(hdr, log_response, xfer_len); + + out_free_response: + kfree(log_response); + return res; +} + +/* MODE SENSE Helper Functions */ + +static int nvme_trans_fill_mode_parm_hdr(u8 *resp, int len, u8 cdb10, u8 llbaa, + u16 mode_data_length, u16 blk_desc_len) +{ + /* Quick check to make sure I don't stomp on my own memory... */ + if ((cdb10 && len < 8) || (!cdb10 && len < 4)) + return -EINVAL; + + if (cdb10) { + resp[0] = (mode_data_length & 0xFF00) >> 8; + resp[1] = (mode_data_length & 0x00FF); + resp[3] = 0x10 /* DPOFUA */; + resp[4] = llbaa; + resp[5] = RESERVED_FIELD; + resp[6] = (blk_desc_len & 0xFF00) >> 8; + resp[7] = (blk_desc_len & 0x00FF); + } else { + resp[0] = (mode_data_length & 0x00FF); + resp[2] = 0x10 /* DPOFUA */; + resp[3] = (blk_desc_len & 0x00FF); + } + + return 0; +} + +static int nvme_trans_fill_blk_desc(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *resp, int len, u8 llbaa) +{ + int res; + int nvme_sc; + struct nvme_id_ns *id_ns; + u8 flbas; + u32 lba_length; + + if (llbaa == 0 && len < MODE_PAGE_BLK_DES_LEN) + return -EINVAL; + else if (llbaa > 0 && len < MODE_PAGE_LLBAA_BLK_DES_LEN) + return -EINVAL; + + nvme_sc = nvme_identify_ns(ns->ctrl, ns->ns_id, &id_ns); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + return res; + + flbas = (id_ns->flbas) & 0x0F; + lba_length = (1 << (id_ns->lbaf[flbas].ds)); + + if (llbaa == 0) { + __be32 tmp_cap = cpu_to_be32(le64_to_cpu(id_ns->ncap)); + /* Byte 4 is reserved */ + __be32 tmp_len = cpu_to_be32(lba_length & 0x00FFFFFF); + + memcpy(resp, &tmp_cap, sizeof(u32)); + memcpy(&resp[4], &tmp_len, sizeof(u32)); + } else { + __be64 tmp_cap = cpu_to_be64(le64_to_cpu(id_ns->ncap)); + __be32 tmp_len = cpu_to_be32(lba_length); + + memcpy(resp, &tmp_cap, sizeof(u64)); + /* Bytes 8, 9, 10, 11 are reserved */ + memcpy(&resp[12], &tmp_len, sizeof(u32)); + } + + kfree(id_ns); + return res; +} + +static int nvme_trans_fill_control_page(struct nvme_ns *ns, + struct sg_io_hdr *hdr, u8 *resp, + int len) +{ + if (len < MODE_PAGE_CONTROL_LEN) + return -EINVAL; + + resp[0] = MODE_PAGE_CONTROL; + resp[1] = MODE_PAGE_CONTROL_LEN_FIELD; + resp[2] = 0x0E; /* TST=000b, TMF_ONLY=0, DPICZ=1, + * D_SENSE=1, GLTSD=1, RLEC=0 */ + resp[3] = 0x12; /* Q_ALGO_MODIFIER=1h, NUAR=0, QERR=01b */ + /* Byte 4: VS=0, RAC=0, UA_INT=0, SWP=0 */ + resp[5] = 0x40; /* ATO=0, TAS=1, ATMPE=0, RWWP=0, AUTOLOAD=0 */ + /* resp[6] and [7] are obsolete, thus zero */ + resp[8] = 0xFF; /* Busy timeout period = 0xffff */ + resp[9] = 0xFF; + /* Bytes 10,11: Extended selftest completion time = 0x0000 */ + + return 0; +} + +static int nvme_trans_fill_caching_page(struct nvme_ns *ns, + struct sg_io_hdr *hdr, + u8 *resp, int len) +{ + int res = 0; + int nvme_sc; + u32 feature_resp; + u8 vwc; + + if (len < MODE_PAGE_CACHING_LEN) + return -EINVAL; + + nvme_sc = nvme_get_features(ns->ctrl, NVME_FEAT_VOLATILE_WC, 0, 0, + &feature_resp); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + return res; + + vwc = feature_resp & 0x00000001; + + resp[0] = MODE_PAGE_CACHING; + resp[1] = MODE_PAGE_CACHING_LEN_FIELD; + resp[2] = vwc << 2; + return 0; +} + +static int nvme_trans_fill_pow_cnd_page(struct nvme_ns *ns, + struct sg_io_hdr *hdr, u8 *resp, + int len) +{ + if (len < MODE_PAGE_POW_CND_LEN) + return -EINVAL; + + resp[0] = MODE_PAGE_POWER_CONDITION; + resp[1] = MODE_PAGE_POW_CND_LEN_FIELD; + /* All other bytes are zero */ + + return 0; +} + +static int nvme_trans_fill_inf_exc_page(struct nvme_ns *ns, + struct sg_io_hdr *hdr, u8 *resp, + int len) +{ + if (len < MODE_PAGE_INF_EXC_LEN) + return -EINVAL; + + resp[0] = MODE_PAGE_INFO_EXCEP; + resp[1] = MODE_PAGE_INF_EXC_LEN_FIELD; + resp[2] = 0x88; + /* All other bytes are zero */ + + return 0; +} + +static int nvme_trans_fill_all_pages(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *resp, int len) +{ + int res; + u16 mode_pages_offset_1 = 0; + u16 mode_pages_offset_2, mode_pages_offset_3, mode_pages_offset_4; + + mode_pages_offset_2 = mode_pages_offset_1 + MODE_PAGE_CACHING_LEN; + mode_pages_offset_3 = mode_pages_offset_2 + MODE_PAGE_CONTROL_LEN; + mode_pages_offset_4 = mode_pages_offset_3 + MODE_PAGE_POW_CND_LEN; + + res = nvme_trans_fill_caching_page(ns, hdr, &resp[mode_pages_offset_1], + MODE_PAGE_CACHING_LEN); + if (res) + return res; + res = nvme_trans_fill_control_page(ns, hdr, &resp[mode_pages_offset_2], + MODE_PAGE_CONTROL_LEN); + if (res) + return res; + res = nvme_trans_fill_pow_cnd_page(ns, hdr, &resp[mode_pages_offset_3], + MODE_PAGE_POW_CND_LEN); + if (res) + return res; + return nvme_trans_fill_inf_exc_page(ns, hdr, &resp[mode_pages_offset_4], + MODE_PAGE_INF_EXC_LEN); +} + +static inline int nvme_trans_get_blk_desc_len(u8 dbd, u8 llbaa) +{ + if (dbd == MODE_SENSE_BLK_DESC_ENABLED) { + /* SPC-4: len = 8 x Num_of_descriptors if llbaa = 0, 16x if 1 */ + return 8 * (llbaa + 1) * MODE_SENSE_BLK_DESC_COUNT; + } else { + return 0; + } +} + +static int nvme_trans_mode_page_create(struct nvme_ns *ns, + struct sg_io_hdr *hdr, u8 *cmd, + u16 alloc_len, u8 cdb10, + int (*mode_page_fill_func) + (struct nvme_ns *, + struct sg_io_hdr *hdr, u8 *, int), + u16 mode_pages_tot_len) +{ + int res; + int xfer_len; + u8 *response; + u8 dbd, llbaa; + u16 resp_size; + int mph_size; + u16 mode_pages_offset_1; + u16 blk_desc_len, blk_desc_offset, mode_data_length; + + dbd = (cmd[1] & MODE_SENSE_DBD_MASK) >> MODE_SENSE_DBD_SHIFT; + llbaa = (cmd[1] & MODE_SENSE_LLBAA_MASK) >> MODE_SENSE_LLBAA_SHIFT; + mph_size = cdb10 ? MODE_SENSE10_MPH_SIZE : MODE_SENSE6_MPH_SIZE; + + blk_desc_len = nvme_trans_get_blk_desc_len(dbd, llbaa); + + resp_size = mph_size + blk_desc_len + mode_pages_tot_len; + /* Refer spc4r34 Table 440 for calculation of Mode data Length field */ + mode_data_length = 3 + (3 * cdb10) + blk_desc_len + mode_pages_tot_len; + + blk_desc_offset = mph_size; + mode_pages_offset_1 = blk_desc_offset + blk_desc_len; + + response = kzalloc(resp_size, GFP_KERNEL); + if (response == NULL) { + res = -ENOMEM; + goto out_mem; + } + + res = nvme_trans_fill_mode_parm_hdr(&response[0], mph_size, cdb10, + llbaa, mode_data_length, blk_desc_len); + if (res) + goto out_free; + if (blk_desc_len > 0) { + res = nvme_trans_fill_blk_desc(ns, hdr, + &response[blk_desc_offset], + blk_desc_len, llbaa); + if (res) + goto out_free; + } + res = mode_page_fill_func(ns, hdr, &response[mode_pages_offset_1], + mode_pages_tot_len); + if (res) + goto out_free; + + xfer_len = min(alloc_len, resp_size); + res = nvme_trans_copy_to_user(hdr, response, xfer_len); + + out_free: + kfree(response); + out_mem: + return res; +} + +/* Read Capacity Helper Functions */ + +static void nvme_trans_fill_read_cap(u8 *response, struct nvme_id_ns *id_ns, + u8 cdb16) +{ + u8 flbas; + u32 lba_length; + u64 rlba; + u8 prot_en; + u8 p_type_lut[4] = {0, 0, 1, 2}; + __be64 tmp_rlba; + __be32 tmp_rlba_32; + __be32 tmp_len; + + flbas = (id_ns->flbas) & 0x0F; + lba_length = (1 << (id_ns->lbaf[flbas].ds)); + rlba = le64_to_cpup(&id_ns->nsze) - 1; + (id_ns->dps) ? (prot_en = 0x01) : (prot_en = 0); + + if (!cdb16) { + if (rlba > 0xFFFFFFFF) + rlba = 0xFFFFFFFF; + tmp_rlba_32 = cpu_to_be32(rlba); + tmp_len = cpu_to_be32(lba_length); + memcpy(response, &tmp_rlba_32, sizeof(u32)); + memcpy(&response[4], &tmp_len, sizeof(u32)); + } else { + tmp_rlba = cpu_to_be64(rlba); + tmp_len = cpu_to_be32(lba_length); + memcpy(response, &tmp_rlba, sizeof(u64)); + memcpy(&response[8], &tmp_len, sizeof(u32)); + response[12] = (p_type_lut[id_ns->dps & 0x3] << 1) | prot_en; + /* P_I_Exponent = 0x0 | LBPPBE = 0x0 */ + /* LBPME = 0 | LBPRZ = 0 | LALBA = 0x00 */ + /* Bytes 16-31 - Reserved */ + } +} + +/* Start Stop Unit Helper Functions */ + +static int nvme_trans_power_state(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 pc, u8 pcmod, u8 start) +{ + int res; + int nvme_sc; + struct nvme_id_ctrl *id_ctrl; + int lowest_pow_st; /* max npss = lowest power consumption */ + unsigned ps_desired = 0; + + nvme_sc = nvme_identify_ctrl(ns->ctrl, &id_ctrl); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + return res; + + lowest_pow_st = max(POWER_STATE_0, (int)(id_ctrl->npss - 1)); + kfree(id_ctrl); + + switch (pc) { + case NVME_POWER_STATE_START_VALID: + /* Action unspecified if POWER CONDITION MODIFIER != 0 */ + if (pcmod == 0 && start == 0x1) + ps_desired = POWER_STATE_0; + if (pcmod == 0 && start == 0x0) + ps_desired = lowest_pow_st; + break; + case NVME_POWER_STATE_ACTIVE: + /* Action unspecified if POWER CONDITION MODIFIER != 0 */ + if (pcmod == 0) + ps_desired = POWER_STATE_0; + break; + case NVME_POWER_STATE_IDLE: + /* Action unspecified if POWER CONDITION MODIFIER != [0,1,2] */ + if (pcmod == 0x0) + ps_desired = POWER_STATE_1; + else if (pcmod == 0x1) + ps_desired = POWER_STATE_2; + else if (pcmod == 0x2) + ps_desired = POWER_STATE_3; + break; + case NVME_POWER_STATE_STANDBY: + /* Action unspecified if POWER CONDITION MODIFIER != [0,1] */ + if (pcmod == 0x0) + ps_desired = max(POWER_STATE_0, (lowest_pow_st - 2)); + else if (pcmod == 0x1) + ps_desired = max(POWER_STATE_0, (lowest_pow_st - 1)); + break; + case NVME_POWER_STATE_LU_CONTROL: + default: + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + break; + } + nvme_sc = nvme_set_features(ns->ctrl, NVME_FEAT_POWER_MGMT, ps_desired, 0, + NULL); + return nvme_trans_status_code(hdr, nvme_sc); +} + +static int nvme_trans_send_activate_fw_cmd(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 buffer_id) +{ + struct nvme_command c; + int nvme_sc; + + memset(&c, 0, sizeof(c)); + c.common.opcode = nvme_admin_activate_fw; + c.common.cdw10[0] = cpu_to_le32(buffer_id | NVME_FWACT_REPL_ACTV); + + nvme_sc = nvme_submit_sync_cmd(ns->queue, &c, NULL, 0); + return nvme_trans_status_code(hdr, nvme_sc); +} + +static int nvme_trans_send_download_fw_cmd(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 opcode, u32 tot_len, u32 offset, + u8 buffer_id) +{ + int nvme_sc; + struct nvme_command c; + + if (hdr->iovec_count > 0) { + /* Assuming SGL is not allowed for this command */ + return nvme_trans_completion(hdr, + SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, + SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + } + + memset(&c, 0, sizeof(c)); + c.common.opcode = nvme_admin_download_fw; + c.dlfw.numd = cpu_to_le32((tot_len/BYTES_TO_DWORDS) - 1); + c.dlfw.offset = cpu_to_le32(offset/BYTES_TO_DWORDS); + + nvme_sc = nvme_submit_user_cmd(ns->ctrl->admin_q, &c, + hdr->dxferp, tot_len, NULL, 0); + return nvme_trans_status_code(hdr, nvme_sc); +} + +/* Mode Select Helper Functions */ + +static inline void nvme_trans_modesel_get_bd_len(u8 *parm_list, u8 cdb10, + u16 *bd_len, u8 *llbaa) +{ + if (cdb10) { + /* 10 Byte CDB */ + *bd_len = (parm_list[MODE_SELECT_10_BD_OFFSET] << 8) + + parm_list[MODE_SELECT_10_BD_OFFSET + 1]; + *llbaa = parm_list[MODE_SELECT_10_LLBAA_OFFSET] & + MODE_SELECT_10_LLBAA_MASK; + } else { + /* 6 Byte CDB */ + *bd_len = parm_list[MODE_SELECT_6_BD_OFFSET]; + } +} + +static void nvme_trans_modesel_save_bd(struct nvme_ns *ns, u8 *parm_list, + u16 idx, u16 bd_len, u8 llbaa) +{ + u16 bd_num; + + bd_num = bd_len / ((llbaa == 0) ? + SHORT_DESC_BLOCK : LONG_DESC_BLOCK); + /* Store block descriptor info if a FORMAT UNIT comes later */ + /* TODO Saving 1st BD info; what to do if multiple BD received? */ + if (llbaa == 0) { + /* Standard Block Descriptor - spc4r34 7.5.5.1 */ + ns->mode_select_num_blocks = + (parm_list[idx + 1] << 16) + + (parm_list[idx + 2] << 8) + + (parm_list[idx + 3]); + + ns->mode_select_block_len = + (parm_list[idx + 5] << 16) + + (parm_list[idx + 6] << 8) + + (parm_list[idx + 7]); + } else { + /* Long LBA Block Descriptor - sbc3r27 6.4.2.3 */ + ns->mode_select_num_blocks = + (((u64)parm_list[idx + 0]) << 56) + + (((u64)parm_list[idx + 1]) << 48) + + (((u64)parm_list[idx + 2]) << 40) + + (((u64)parm_list[idx + 3]) << 32) + + (((u64)parm_list[idx + 4]) << 24) + + (((u64)parm_list[idx + 5]) << 16) + + (((u64)parm_list[idx + 6]) << 8) + + ((u64)parm_list[idx + 7]); + + ns->mode_select_block_len = + (parm_list[idx + 12] << 24) + + (parm_list[idx + 13] << 16) + + (parm_list[idx + 14] << 8) + + (parm_list[idx + 15]); + } +} + +static int nvme_trans_modesel_get_mp(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *mode_page, u8 page_code) +{ + int res = 0; + int nvme_sc; + unsigned dword11; + + switch (page_code) { + case MODE_PAGE_CACHING: + dword11 = ((mode_page[2] & CACHING_MODE_PAGE_WCE_MASK) ? 1 : 0); + nvme_sc = nvme_set_features(ns->ctrl, NVME_FEAT_VOLATILE_WC, + dword11, 0, NULL); + res = nvme_trans_status_code(hdr, nvme_sc); + break; + case MODE_PAGE_CONTROL: + break; + case MODE_PAGE_POWER_CONDITION: + /* Verify the OS is not trying to set timers */ + if ((mode_page[2] & 0x01) != 0 || (mode_page[3] & 0x0F) != 0) { + res = nvme_trans_completion(hdr, + SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, + SCSI_ASC_INVALID_PARAMETER, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + break; + } + break; + default: + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + break; + } + + return res; +} + +static int nvme_trans_modesel_data(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *cmd, u16 parm_list_len, u8 pf, + u8 sp, u8 cdb10) +{ + int res; + u8 *parm_list; + u16 bd_len; + u8 llbaa = 0; + u16 index, saved_index; + u8 page_code; + u16 mp_size; + + /* Get parm list from data-in/out buffer */ + parm_list = kmalloc(parm_list_len, GFP_KERNEL); + if (parm_list == NULL) { + res = -ENOMEM; + goto out; + } + + res = nvme_trans_copy_from_user(hdr, parm_list, parm_list_len); + if (res) + goto out_mem; + + nvme_trans_modesel_get_bd_len(parm_list, cdb10, &bd_len, &llbaa); + index = (cdb10) ? (MODE_SELECT_10_MPH_SIZE) : (MODE_SELECT_6_MPH_SIZE); + + if (bd_len != 0) { + /* Block Descriptors present, parse */ + nvme_trans_modesel_save_bd(ns, parm_list, index, bd_len, llbaa); + index += bd_len; + } + saved_index = index; + + /* Multiple mode pages may be present; iterate through all */ + /* In 1st Iteration, don't do NVME Command, only check for CDB errors */ + do { + page_code = parm_list[index] & MODE_SELECT_PAGE_CODE_MASK; + mp_size = parm_list[index + 1] + 2; + if ((page_code != MODE_PAGE_CACHING) && + (page_code != MODE_PAGE_CONTROL) && + (page_code != MODE_PAGE_POWER_CONDITION)) { + res = nvme_trans_completion(hdr, + SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, + SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + goto out_mem; + } + index += mp_size; + } while (index < parm_list_len); + + /* In 2nd Iteration, do the NVME Commands */ + index = saved_index; + do { + page_code = parm_list[index] & MODE_SELECT_PAGE_CODE_MASK; + mp_size = parm_list[index + 1] + 2; + res = nvme_trans_modesel_get_mp(ns, hdr, &parm_list[index], + page_code); + if (res) + break; + index += mp_size; + } while (index < parm_list_len); + + out_mem: + kfree(parm_list); + out: + return res; +} + +/* Format Unit Helper Functions */ + +static int nvme_trans_fmt_set_blk_size_count(struct nvme_ns *ns, + struct sg_io_hdr *hdr) +{ + int res = 0; + int nvme_sc; + u8 flbas; + + /* + * SCSI Expects a MODE SELECT would have been issued prior to + * a FORMAT UNIT, and the block size and number would be used + * from the block descriptor in it. If a MODE SELECT had not + * been issued, FORMAT shall use the current values for both. + */ + + if (ns->mode_select_num_blocks == 0 || ns->mode_select_block_len == 0) { + struct nvme_id_ns *id_ns; + + nvme_sc = nvme_identify_ns(ns->ctrl, ns->ns_id, &id_ns); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + return res; + + if (ns->mode_select_num_blocks == 0) + ns->mode_select_num_blocks = le64_to_cpu(id_ns->ncap); + if (ns->mode_select_block_len == 0) { + flbas = (id_ns->flbas) & 0x0F; + ns->mode_select_block_len = + (1 << (id_ns->lbaf[flbas].ds)); + } + + kfree(id_ns); + } + + return 0; +} + +static int nvme_trans_fmt_get_parm_header(struct sg_io_hdr *hdr, u8 len, + u8 format_prot_info, u8 *nvme_pf_code) +{ + int res; + u8 *parm_list; + u8 pf_usage, pf_code; + + parm_list = kmalloc(len, GFP_KERNEL); + if (parm_list == NULL) { + res = -ENOMEM; + goto out; + } + res = nvme_trans_copy_from_user(hdr, parm_list, len); + if (res) + goto out_mem; + + if ((parm_list[FORMAT_UNIT_IMMED_OFFSET] & + FORMAT_UNIT_IMMED_MASK) != 0) { + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + goto out_mem; + } + + if (len == FORMAT_UNIT_LONG_PARM_LIST_LEN && + (parm_list[FORMAT_UNIT_PROT_INT_OFFSET] & 0x0F) != 0) { + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + goto out_mem; + } + pf_usage = parm_list[FORMAT_UNIT_PROT_FIELD_USAGE_OFFSET] & + FORMAT_UNIT_PROT_FIELD_USAGE_MASK; + pf_code = (pf_usage << 2) | format_prot_info; + switch (pf_code) { + case 0: + *nvme_pf_code = 0; + break; + case 2: + *nvme_pf_code = 1; + break; + case 3: + *nvme_pf_code = 2; + break; + case 7: + *nvme_pf_code = 3; + break; + default: + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + break; + } + + out_mem: + kfree(parm_list); + out: + return res; +} + +static int nvme_trans_fmt_send_cmd(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 prot_info) +{ + int res; + int nvme_sc; + struct nvme_id_ns *id_ns; + u8 i; + u8 flbas, nlbaf; + u8 selected_lbaf = 0xFF; + u32 cdw10 = 0; + struct nvme_command c; + + /* Loop thru LBAF's in id_ns to match reqd lbaf, put in cdw10 */ + nvme_sc = nvme_identify_ns(ns->ctrl, ns->ns_id, &id_ns); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + return res; + + flbas = (id_ns->flbas) & 0x0F; + nlbaf = id_ns->nlbaf; + + for (i = 0; i < nlbaf; i++) { + if (ns->mode_select_block_len == (1 << (id_ns->lbaf[i].ds))) { + selected_lbaf = i; + break; + } + } + if (selected_lbaf > 0x0F) { + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_PARAMETER, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + } + if (ns->mode_select_num_blocks != le64_to_cpu(id_ns->ncap)) { + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_PARAMETER, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + } + + cdw10 |= prot_info << 5; + cdw10 |= selected_lbaf & 0x0F; + memset(&c, 0, sizeof(c)); + c.format.opcode = nvme_admin_format_nvm; + c.format.nsid = cpu_to_le32(ns->ns_id); + c.format.cdw10 = cpu_to_le32(cdw10); + + nvme_sc = nvme_submit_sync_cmd(ns->ctrl->admin_q, &c, NULL, 0); + res = nvme_trans_status_code(hdr, nvme_sc); + + kfree(id_ns); + return res; +} + +static inline u32 nvme_trans_io_get_num_cmds(struct sg_io_hdr *hdr, + struct nvme_trans_io_cdb *cdb_info, + u32 max_blocks) +{ + /* If using iovecs, send one nvme command per vector */ + if (hdr->iovec_count > 0) + return hdr->iovec_count; + else if (cdb_info->xfer_len > max_blocks) + return ((cdb_info->xfer_len - 1) / max_blocks) + 1; + else + return 1; +} + +static u16 nvme_trans_io_get_control(struct nvme_ns *ns, + struct nvme_trans_io_cdb *cdb_info) +{ + u16 control = 0; + + /* When Protection information support is added, implement here */ + + if (cdb_info->fua > 0) + control |= NVME_RW_FUA; + + return control; +} + +static int nvme_trans_do_nvme_io(struct nvme_ns *ns, struct sg_io_hdr *hdr, + struct nvme_trans_io_cdb *cdb_info, u8 is_write) +{ + int nvme_sc = NVME_SC_SUCCESS; + u32 num_cmds; + u64 unit_len; + u64 unit_num_blocks; /* Number of blocks to xfer in each nvme cmd */ + u32 retcode; + u32 i = 0; + u64 nvme_offset = 0; + void __user *next_mapping_addr; + struct nvme_command c; + u8 opcode = (is_write ? nvme_cmd_write : nvme_cmd_read); + u16 control; + u32 max_blocks = queue_max_hw_sectors(ns->queue); + + num_cmds = nvme_trans_io_get_num_cmds(hdr, cdb_info, max_blocks); + + /* + * This loop handles two cases. + * First, when an SGL is used in the form of an iovec list: + * - Use iov_base as the next mapping address for the nvme command_id + * - Use iov_len as the data transfer length for the command. + * Second, when we have a single buffer + * - If larger than max_blocks, split into chunks, offset + * each nvme command accordingly. + */ + for (i = 0; i < num_cmds; i++) { + memset(&c, 0, sizeof(c)); + if (hdr->iovec_count > 0) { + struct sg_iovec sgl; + + retcode = copy_from_user(&sgl, hdr->dxferp + + i * sizeof(struct sg_iovec), + sizeof(struct sg_iovec)); + if (retcode) + return -EFAULT; + unit_len = sgl.iov_len; + unit_num_blocks = unit_len >> ns->lba_shift; + next_mapping_addr = sgl.iov_base; + } else { + unit_num_blocks = min((u64)max_blocks, + (cdb_info->xfer_len - nvme_offset)); + unit_len = unit_num_blocks << ns->lba_shift; + next_mapping_addr = hdr->dxferp + + ((1 << ns->lba_shift) * nvme_offset); + } + + c.rw.opcode = opcode; + c.rw.nsid = cpu_to_le32(ns->ns_id); + c.rw.slba = cpu_to_le64(cdb_info->lba + nvme_offset); + c.rw.length = cpu_to_le16(unit_num_blocks - 1); + control = nvme_trans_io_get_control(ns, cdb_info); + c.rw.control = cpu_to_le16(control); + + if (get_capacity(ns->disk) - unit_num_blocks < + cdb_info->lba + nvme_offset) { + nvme_sc = NVME_SC_LBA_RANGE; + break; + } + nvme_sc = nvme_submit_user_cmd(ns->queue, &c, + next_mapping_addr, unit_len, NULL, 0); + if (nvme_sc) + break; + + nvme_offset += unit_num_blocks; + } + + return nvme_trans_status_code(hdr, nvme_sc); +} + + +/* SCSI Command Translation Functions */ + +static int nvme_trans_io(struct nvme_ns *ns, struct sg_io_hdr *hdr, u8 is_write, + u8 *cmd) +{ + int res = 0; + struct nvme_trans_io_cdb cdb_info = { 0, }; + u8 opcode = cmd[0]; + u64 xfer_bytes; + u64 sum_iov_len = 0; + struct sg_iovec sgl; + int i; + size_t not_copied; + + /* + * The FUA and WPROTECT fields are not supported in 6-byte CDBs, + * but always in the same place for all others. + */ + switch (opcode) { + case WRITE_6: + case READ_6: + break; + default: + cdb_info.fua = cmd[1] & 0x8; + cdb_info.prot_info = (cmd[1] & 0xe0) >> 5; + if (cdb_info.prot_info && !ns->pi_type) { + return nvme_trans_completion(hdr, + SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, + SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + } + } + + switch (opcode) { + case WRITE_6: + case READ_6: + cdb_info.lba = get_unaligned_be24(&cmd[1]); + cdb_info.xfer_len = cmd[4]; + if (cdb_info.xfer_len == 0) + cdb_info.xfer_len = 256; + break; + case WRITE_10: + case READ_10: + cdb_info.lba = get_unaligned_be32(&cmd[2]); + cdb_info.xfer_len = get_unaligned_be16(&cmd[7]); + break; + case WRITE_12: + case READ_12: + cdb_info.lba = get_unaligned_be32(&cmd[2]); + cdb_info.xfer_len = get_unaligned_be32(&cmd[6]); + break; + case WRITE_16: + case READ_16: + cdb_info.lba = get_unaligned_be64(&cmd[2]); + cdb_info.xfer_len = get_unaligned_be32(&cmd[10]); + break; + default: + /* Will never really reach here */ + res = -EIO; + goto out; + } + + /* Calculate total length of transfer (in bytes) */ + if (hdr->iovec_count > 0) { + for (i = 0; i < hdr->iovec_count; i++) { + not_copied = copy_from_user(&sgl, hdr->dxferp + + i * sizeof(struct sg_iovec), + sizeof(struct sg_iovec)); + if (not_copied) + return -EFAULT; + sum_iov_len += sgl.iov_len; + /* IO vector sizes should be multiples of block size */ + if (sgl.iov_len % (1 << ns->lba_shift) != 0) { + res = nvme_trans_completion(hdr, + SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, + SCSI_ASC_INVALID_PARAMETER, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + goto out; + } + } + } else { + sum_iov_len = hdr->dxfer_len; + } + + /* As Per sg ioctl howto, if the lengths differ, use the lower one */ + xfer_bytes = min(((u64)hdr->dxfer_len), sum_iov_len); + + /* If block count and actual data buffer size dont match, error out */ + if (xfer_bytes != (cdb_info.xfer_len << ns->lba_shift)) { + res = -EINVAL; + goto out; + } + + /* Check for 0 length transfer - it is not illegal */ + if (cdb_info.xfer_len == 0) + goto out; + + /* Send NVMe IO Command(s) */ + res = nvme_trans_do_nvme_io(ns, hdr, &cdb_info, is_write); + if (res) + goto out; + + out: + return res; +} + +static int nvme_trans_inquiry(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *cmd) +{ + int res = 0; + u8 evpd; + u8 page_code; + int alloc_len; + u8 *inq_response; + + evpd = cmd[1] & 0x01; + page_code = cmd[2]; + alloc_len = get_unaligned_be16(&cmd[3]); + + inq_response = kmalloc(max(alloc_len, STANDARD_INQUIRY_LENGTH), + GFP_KERNEL); + if (inq_response == NULL) { + res = -ENOMEM; + goto out_mem; + } + + if (evpd == 0) { + if (page_code == INQ_STANDARD_INQUIRY_PAGE) { + res = nvme_trans_standard_inquiry_page(ns, hdr, + inq_response, alloc_len); + } else { + res = nvme_trans_completion(hdr, + SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, + SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + } + } else { + switch (page_code) { + case VPD_SUPPORTED_PAGES: + res = nvme_trans_supported_vpd_pages(ns, hdr, + inq_response, alloc_len); + break; + case VPD_SERIAL_NUMBER: + res = nvme_trans_unit_serial_page(ns, hdr, inq_response, + alloc_len); + break; + case VPD_DEVICE_IDENTIFIERS: + res = nvme_trans_device_id_page(ns, hdr, inq_response, + alloc_len); + break; + case VPD_EXTENDED_INQUIRY: + res = nvme_trans_ext_inq_page(ns, hdr, alloc_len); + break; + case VPD_BLOCK_LIMITS: + res = nvme_trans_bdev_limits_page(ns, hdr, inq_response, + alloc_len); + break; + case VPD_BLOCK_DEV_CHARACTERISTICS: + res = nvme_trans_bdev_char_page(ns, hdr, alloc_len); + break; + default: + res = nvme_trans_completion(hdr, + SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, + SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + break; + } + } + kfree(inq_response); + out_mem: + return res; +} + +static int nvme_trans_log_sense(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *cmd) +{ + int res; + u16 alloc_len; + u8 pc; + u8 page_code; + + if (cmd[1] != LOG_SENSE_CDB_SP_NOT_ENABLED) { + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + goto out; + } + + page_code = cmd[2] & LOG_SENSE_CDB_PAGE_CODE_MASK; + pc = (cmd[2] & LOG_SENSE_CDB_PC_MASK) >> LOG_SENSE_CDB_PC_SHIFT; + if (pc != LOG_SENSE_CDB_PC_CUMULATIVE_VALUES) { + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + goto out; + } + alloc_len = get_unaligned_be16(&cmd[7]); + switch (page_code) { + case LOG_PAGE_SUPPORTED_LOG_PAGES_PAGE: + res = nvme_trans_log_supp_pages(ns, hdr, alloc_len); + break; + case LOG_PAGE_INFORMATIONAL_EXCEPTIONS_PAGE: + res = nvme_trans_log_info_exceptions(ns, hdr, alloc_len); + break; + case LOG_PAGE_TEMPERATURE_PAGE: + res = nvme_trans_log_temperature(ns, hdr, alloc_len); + break; + default: + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + break; + } + + out: + return res; +} + +static int nvme_trans_mode_select(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *cmd) +{ + u8 cdb10 = 0; + u16 parm_list_len; + u8 page_format; + u8 save_pages; + + page_format = cmd[1] & MODE_SELECT_CDB_PAGE_FORMAT_MASK; + save_pages = cmd[1] & MODE_SELECT_CDB_SAVE_PAGES_MASK; + + if (cmd[0] == MODE_SELECT) { + parm_list_len = cmd[4]; + } else { + parm_list_len = cmd[7]; + cdb10 = 1; + } + + if (parm_list_len != 0) { + /* + * According to SPC-4 r24, a paramter list length field of 0 + * shall not be considered an error + */ + return nvme_trans_modesel_data(ns, hdr, cmd, parm_list_len, + page_format, save_pages, cdb10); + } + + return 0; +} + +static int nvme_trans_mode_sense(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *cmd) +{ + int res = 0; + u16 alloc_len; + u8 cdb10 = 0; + + if (cmd[0] == MODE_SENSE) { + alloc_len = cmd[4]; + } else { + alloc_len = get_unaligned_be16(&cmd[7]); + cdb10 = 1; + } + + if ((cmd[2] & MODE_SENSE_PAGE_CONTROL_MASK) != + MODE_SENSE_PC_CURRENT_VALUES) { + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + goto out; + } + + switch (cmd[2] & MODE_SENSE_PAGE_CODE_MASK) { + case MODE_PAGE_CACHING: + res = nvme_trans_mode_page_create(ns, hdr, cmd, alloc_len, + cdb10, + &nvme_trans_fill_caching_page, + MODE_PAGE_CACHING_LEN); + break; + case MODE_PAGE_CONTROL: + res = nvme_trans_mode_page_create(ns, hdr, cmd, alloc_len, + cdb10, + &nvme_trans_fill_control_page, + MODE_PAGE_CONTROL_LEN); + break; + case MODE_PAGE_POWER_CONDITION: + res = nvme_trans_mode_page_create(ns, hdr, cmd, alloc_len, + cdb10, + &nvme_trans_fill_pow_cnd_page, + MODE_PAGE_POW_CND_LEN); + break; + case MODE_PAGE_INFO_EXCEP: + res = nvme_trans_mode_page_create(ns, hdr, cmd, alloc_len, + cdb10, + &nvme_trans_fill_inf_exc_page, + MODE_PAGE_INF_EXC_LEN); + break; + case MODE_PAGE_RETURN_ALL: + res = nvme_trans_mode_page_create(ns, hdr, cmd, alloc_len, + cdb10, + &nvme_trans_fill_all_pages, + MODE_PAGE_ALL_LEN); + break; + default: + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + break; + } + + out: + return res; +} + +static int nvme_trans_read_capacity(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *cmd, u8 cdb16) +{ + int res; + int nvme_sc; + u32 alloc_len; + u32 resp_size; + u32 xfer_len; + struct nvme_id_ns *id_ns; + u8 *response; + + if (cdb16) { + alloc_len = get_unaligned_be32(&cmd[10]); + resp_size = READ_CAP_16_RESP_SIZE; + } else { + alloc_len = READ_CAP_10_RESP_SIZE; + resp_size = READ_CAP_10_RESP_SIZE; + } + + nvme_sc = nvme_identify_ns(ns->ctrl, ns->ns_id, &id_ns); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + return res; + + response = kzalloc(resp_size, GFP_KERNEL); + if (response == NULL) { + res = -ENOMEM; + goto out_free_id; + } + nvme_trans_fill_read_cap(response, id_ns, cdb16); + + xfer_len = min(alloc_len, resp_size); + res = nvme_trans_copy_to_user(hdr, response, xfer_len); + + kfree(response); + out_free_id: + kfree(id_ns); + return res; +} + +static int nvme_trans_report_luns(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *cmd) +{ + int res; + int nvme_sc; + u32 alloc_len, xfer_len, resp_size; + u8 *response; + struct nvme_id_ctrl *id_ctrl; + u32 ll_length, lun_id; + u8 lun_id_offset = REPORT_LUNS_FIRST_LUN_OFFSET; + __be32 tmp_len; + + switch (cmd[2]) { + default: + return nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + case ALL_LUNS_RETURNED: + case ALL_WELL_KNOWN_LUNS_RETURNED: + case RESTRICTED_LUNS_RETURNED: + nvme_sc = nvme_identify_ctrl(ns->ctrl, &id_ctrl); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + return res; + + ll_length = le32_to_cpu(id_ctrl->nn) * LUN_ENTRY_SIZE; + resp_size = ll_length + LUN_DATA_HEADER_SIZE; + + alloc_len = get_unaligned_be32(&cmd[6]); + if (alloc_len < resp_size) { + res = nvme_trans_completion(hdr, + SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + goto out_free_id; + } + + response = kzalloc(resp_size, GFP_KERNEL); + if (response == NULL) { + res = -ENOMEM; + goto out_free_id; + } + + /* The first LUN ID will always be 0 per the SAM spec */ + for (lun_id = 0; lun_id < le32_to_cpu(id_ctrl->nn); lun_id++) { + /* + * Set the LUN Id and then increment to the next LUN + * location in the parameter data. + */ + __be64 tmp_id = cpu_to_be64(lun_id); + memcpy(&response[lun_id_offset], &tmp_id, sizeof(u64)); + lun_id_offset += LUN_ENTRY_SIZE; + } + tmp_len = cpu_to_be32(ll_length); + memcpy(response, &tmp_len, sizeof(u32)); + } + + xfer_len = min(alloc_len, resp_size); + res = nvme_trans_copy_to_user(hdr, response, xfer_len); + + kfree(response); + out_free_id: + kfree(id_ctrl); + return res; +} + +static int nvme_trans_request_sense(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *cmd) +{ + int res; + u8 alloc_len, xfer_len, resp_size; + u8 desc_format; + u8 *response; + + desc_format = cmd[1] & 0x01; + alloc_len = cmd[4]; + + resp_size = ((desc_format) ? (DESC_FMT_SENSE_DATA_SIZE) : + (FIXED_FMT_SENSE_DATA_SIZE)); + response = kzalloc(resp_size, GFP_KERNEL); + if (response == NULL) { + res = -ENOMEM; + goto out; + } + + if (desc_format) { + /* Descriptor Format Sense Data */ + response[0] = DESC_FORMAT_SENSE_DATA; + response[1] = NO_SENSE; + /* TODO How is LOW POWER CONDITION ON handled? (byte 2) */ + response[2] = SCSI_ASC_NO_SENSE; + response[3] = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + /* SDAT_OVFL = 0 | Additional Sense Length = 0 */ + } else { + /* Fixed Format Sense Data */ + response[0] = FIXED_SENSE_DATA; + /* Byte 1 = Obsolete */ + response[2] = NO_SENSE; /* FM, EOM, ILI, SDAT_OVFL = 0 */ + /* Bytes 3-6 - Information - set to zero */ + response[7] = FIXED_SENSE_DATA_ADD_LENGTH; + /* Bytes 8-11 - Cmd Specific Information - set to zero */ + response[12] = SCSI_ASC_NO_SENSE; + response[13] = SCSI_ASCQ_CAUSE_NOT_REPORTABLE; + /* Byte 14 = Field Replaceable Unit Code = 0 */ + /* Bytes 15-17 - SKSV=0; Sense Key Specific = 0 */ + } + + xfer_len = min(alloc_len, resp_size); + res = nvme_trans_copy_to_user(hdr, response, xfer_len); + + kfree(response); + out: + return res; +} + +static int nvme_trans_security_protocol(struct nvme_ns *ns, + struct sg_io_hdr *hdr, + u8 *cmd) +{ + return nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_ILLEGAL_COMMAND, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); +} + +static int nvme_trans_synchronize_cache(struct nvme_ns *ns, + struct sg_io_hdr *hdr) +{ + int nvme_sc; + struct nvme_command c; + + memset(&c, 0, sizeof(c)); + c.common.opcode = nvme_cmd_flush; + c.common.nsid = cpu_to_le32(ns->ns_id); + + nvme_sc = nvme_submit_sync_cmd(ns->queue, &c, NULL, 0); + return nvme_trans_status_code(hdr, nvme_sc); +} + +static int nvme_trans_start_stop(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *cmd) +{ + u8 immed, pcmod, pc, no_flush, start; + + immed = cmd[1] & 0x01; + pcmod = cmd[3] & 0x0f; + pc = (cmd[4] & 0xf0) >> 4; + no_flush = cmd[4] & 0x04; + start = cmd[4] & 0x01; + + if (immed != 0) { + return nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + } else { + if (no_flush == 0) { + /* Issue NVME FLUSH command prior to START STOP UNIT */ + int res = nvme_trans_synchronize_cache(ns, hdr); + if (res) + return res; + } + /* Setup the expected power state transition */ + return nvme_trans_power_state(ns, hdr, pc, pcmod, start); + } +} + +static int nvme_trans_format_unit(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *cmd) +{ + int res; + u8 parm_hdr_len = 0; + u8 nvme_pf_code = 0; + u8 format_prot_info, long_list, format_data; + + format_prot_info = (cmd[1] & 0xc0) >> 6; + long_list = cmd[1] & 0x20; + format_data = cmd[1] & 0x10; + + if (format_data != 0) { + if (format_prot_info != 0) { + if (long_list == 0) + parm_hdr_len = FORMAT_UNIT_SHORT_PARM_LIST_LEN; + else + parm_hdr_len = FORMAT_UNIT_LONG_PARM_LIST_LEN; + } + } else if (format_data == 0 && format_prot_info != 0) { + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + goto out; + } + + /* Get parm header from data-in/out buffer */ + /* + * According to the translation spec, the only fields in the parameter + * list we are concerned with are in the header. So allocate only that. + */ + if (parm_hdr_len > 0) { + res = nvme_trans_fmt_get_parm_header(hdr, parm_hdr_len, + format_prot_info, &nvme_pf_code); + if (res) + goto out; + } + + /* Attempt to activate any previously downloaded firmware image */ + res = nvme_trans_send_activate_fw_cmd(ns, hdr, 0); + + /* Determine Block size and count and send format command */ + res = nvme_trans_fmt_set_blk_size_count(ns, hdr); + if (res) + goto out; + + res = nvme_trans_fmt_send_cmd(ns, hdr, nvme_pf_code); + + out: + return res; +} + +static int nvme_trans_test_unit_ready(struct nvme_ns *ns, + struct sg_io_hdr *hdr, + u8 *cmd) +{ + if (nvme_ctrl_ready(ns->ctrl)) + return nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + NOT_READY, SCSI_ASC_LUN_NOT_READY, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + else + return nvme_trans_completion(hdr, SAM_STAT_GOOD, NO_SENSE, 0, 0); +} + +static int nvme_trans_write_buffer(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *cmd) +{ + int res = 0; + u32 buffer_offset, parm_list_length; + u8 buffer_id, mode; + + parm_list_length = get_unaligned_be24(&cmd[6]); + if (parm_list_length % BYTES_TO_DWORDS != 0) { + /* NVMe expects Firmware file to be a whole number of DWORDS */ + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + goto out; + } + buffer_id = cmd[2]; + if (buffer_id > NVME_MAX_FIRMWARE_SLOT) { + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + goto out; + } + mode = cmd[1] & 0x1f; + buffer_offset = get_unaligned_be24(&cmd[3]); + + switch (mode) { + case DOWNLOAD_SAVE_ACTIVATE: + res = nvme_trans_send_download_fw_cmd(ns, hdr, nvme_admin_download_fw, + parm_list_length, buffer_offset, + buffer_id); + if (res) + goto out; + res = nvme_trans_send_activate_fw_cmd(ns, hdr, buffer_id); + break; + case DOWNLOAD_SAVE_DEFER_ACTIVATE: + res = nvme_trans_send_download_fw_cmd(ns, hdr, nvme_admin_download_fw, + parm_list_length, buffer_offset, + buffer_id); + break; + case ACTIVATE_DEFERRED_MICROCODE: + res = nvme_trans_send_activate_fw_cmd(ns, hdr, buffer_id); + break; + default: + res = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + break; + } + + out: + return res; +} + +struct scsi_unmap_blk_desc { + __be64 slba; + __be32 nlb; + u32 resv; +}; + +struct scsi_unmap_parm_list { + __be16 unmap_data_len; + __be16 unmap_blk_desc_data_len; + u32 resv; + struct scsi_unmap_blk_desc desc[0]; +}; + +static int nvme_trans_unmap(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *cmd) +{ + struct scsi_unmap_parm_list *plist; + struct nvme_dsm_range *range; + struct nvme_command c; + int i, nvme_sc, res; + u16 ndesc, list_len; + + list_len = get_unaligned_be16(&cmd[7]); + if (!list_len) + return -EINVAL; + + plist = kmalloc(list_len, GFP_KERNEL); + if (!plist) + return -ENOMEM; + + res = nvme_trans_copy_from_user(hdr, plist, list_len); + if (res) + goto out; + + ndesc = be16_to_cpu(plist->unmap_blk_desc_data_len) >> 4; + if (!ndesc || ndesc > 256) { + res = -EINVAL; + goto out; + } + + range = kcalloc(ndesc, sizeof(*range), GFP_KERNEL); + if (!range) { + res = -ENOMEM; + goto out; + } + + for (i = 0; i < ndesc; i++) { + range[i].nlb = cpu_to_le32(be32_to_cpu(plist->desc[i].nlb)); + range[i].slba = cpu_to_le64(be64_to_cpu(plist->desc[i].slba)); + range[i].cattr = 0; + } + + memset(&c, 0, sizeof(c)); + c.dsm.opcode = nvme_cmd_dsm; + c.dsm.nsid = cpu_to_le32(ns->ns_id); + c.dsm.nr = cpu_to_le32(ndesc - 1); + c.dsm.attributes = cpu_to_le32(NVME_DSMGMT_AD); + + nvme_sc = nvme_submit_sync_cmd(ns->queue, &c, range, + ndesc * sizeof(*range)); + res = nvme_trans_status_code(hdr, nvme_sc); + + kfree(range); + out: + kfree(plist); + return res; +} + +static int nvme_scsi_translate(struct nvme_ns *ns, struct sg_io_hdr *hdr) +{ + u8 cmd[BLK_MAX_CDB]; + int retcode; + unsigned int opcode; + + if (hdr->cmdp == NULL) + return -EMSGSIZE; + if (copy_from_user(cmd, hdr->cmdp, hdr->cmd_len)) + return -EFAULT; + + /* + * Prime the hdr with good status for scsi commands that don't require + * an nvme command for translation. + */ + retcode = nvme_trans_status_code(hdr, NVME_SC_SUCCESS); + if (retcode) + return retcode; + + opcode = cmd[0]; + + switch (opcode) { + case READ_6: + case READ_10: + case READ_12: + case READ_16: + retcode = nvme_trans_io(ns, hdr, 0, cmd); + break; + case WRITE_6: + case WRITE_10: + case WRITE_12: + case WRITE_16: + retcode = nvme_trans_io(ns, hdr, 1, cmd); + break; + case INQUIRY: + retcode = nvme_trans_inquiry(ns, hdr, cmd); + break; + case LOG_SENSE: + retcode = nvme_trans_log_sense(ns, hdr, cmd); + break; + case MODE_SELECT: + case MODE_SELECT_10: + retcode = nvme_trans_mode_select(ns, hdr, cmd); + break; + case MODE_SENSE: + case MODE_SENSE_10: + retcode = nvme_trans_mode_sense(ns, hdr, cmd); + break; + case READ_CAPACITY: + retcode = nvme_trans_read_capacity(ns, hdr, cmd, 0); + break; + case SERVICE_ACTION_IN_16: + switch (cmd[1]) { + case SAI_READ_CAPACITY_16: + retcode = nvme_trans_read_capacity(ns, hdr, cmd, 1); + break; + default: + goto out; + } + break; + case REPORT_LUNS: + retcode = nvme_trans_report_luns(ns, hdr, cmd); + break; + case REQUEST_SENSE: + retcode = nvme_trans_request_sense(ns, hdr, cmd); + break; + case SECURITY_PROTOCOL_IN: + case SECURITY_PROTOCOL_OUT: + retcode = nvme_trans_security_protocol(ns, hdr, cmd); + break; + case START_STOP: + retcode = nvme_trans_start_stop(ns, hdr, cmd); + break; + case SYNCHRONIZE_CACHE: + retcode = nvme_trans_synchronize_cache(ns, hdr); + break; + case FORMAT_UNIT: + retcode = nvme_trans_format_unit(ns, hdr, cmd); + break; + case TEST_UNIT_READY: + retcode = nvme_trans_test_unit_ready(ns, hdr, cmd); + break; + case WRITE_BUFFER: + retcode = nvme_trans_write_buffer(ns, hdr, cmd); + break; + case UNMAP: + retcode = nvme_trans_unmap(ns, hdr, cmd); + break; + default: + out: + retcode = nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_ILLEGAL_COMMAND, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + break; + } + return retcode; +} + +int nvme_sg_io(struct nvme_ns *ns, struct sg_io_hdr __user *u_hdr) +{ + struct sg_io_hdr hdr; + int retcode; + + if (!capable(CAP_SYS_ADMIN)) + return -EACCES; + if (copy_from_user(&hdr, u_hdr, sizeof(hdr))) + return -EFAULT; + if (hdr.interface_id != 'S') + return -EINVAL; + if (hdr.cmd_len > BLK_MAX_CDB) + return -EINVAL; + + /* + * A positive return code means a NVMe status, which has been + * translated to sense data. + */ + retcode = nvme_scsi_translate(ns, &hdr); + if (retcode < 0) + return retcode; + if (copy_to_user(u_hdr, &hdr, sizeof(sg_io_hdr_t)) > 0) + return -EFAULT; + return 0; +} + +int nvme_sg_get_version_num(int __user *ip) +{ + return put_user(sg_version_num, ip); +} From 009c12cf4258ed0460a985376728756191ea0bce Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Thu, 28 Jul 2016 20:21:33 -0400 Subject: [PATCH 16/51] added some ko files for easy use --- frontend/kernel/dumbssd.ko | 1 + frontend/kernel/nvme.ko | 1 + frontend/kernel/risa_dev_ramdrive.ko | 1 + 3 files changed, 3 insertions(+) create mode 120000 frontend/kernel/dumbssd.ko create mode 120000 frontend/kernel/nvme.ko create mode 120000 frontend/kernel/risa_dev_ramdrive.ko diff --git a/frontend/kernel/dumbssd.ko b/frontend/kernel/dumbssd.ko new file mode 120000 index 0000000..3767623 --- /dev/null +++ b/frontend/kernel/dumbssd.ko @@ -0,0 +1 @@ +../../devices/dumbssd/dumbssd.ko \ No newline at end of file diff --git a/frontend/kernel/nvme.ko b/frontend/kernel/nvme.ko new file mode 120000 index 0000000..522c7bb --- /dev/null +++ b/frontend/kernel/nvme.ko @@ -0,0 +1 @@ +../../tools/nvme/nvme.ko \ No newline at end of file diff --git a/frontend/kernel/risa_dev_ramdrive.ko b/frontend/kernel/risa_dev_ramdrive.ko new file mode 120000 index 0000000..d00030c --- /dev/null +++ b/frontend/kernel/risa_dev_ramdrive.ko @@ -0,0 +1 @@ +../../devices/ramdrive/risa_dev_ramdrive.ko \ No newline at end of file From 4d6881d954fd022a9ac93e23402edf622e4c8985 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Thu, 28 Jul 2016 20:38:32 -0400 Subject: [PATCH 17/51] minor changes --- devices/dumbssd/dm_dumbssd.c | 2 +- devices/dumbssd/register.sh | 4 - devices/dumbssd/uregister.sh | 2 - examples/dumbssd-test/dumbssd-test | Bin 12320 -> 0 bytes frontend/kernel/mount_block.sh | 10 ++ tools/dumbssd-format/Makefile | 16 +++ tools/dumbssd-format/dumbssd-format | Bin 0 -> 12184 bytes tools/dumbssd-format/dumbssd-format.c | 109 ++++++++++++++++++ {examples => tools}/dumbssd-test/Makefile | 0 tools/dumbssd-test/dumbssd-test | Bin 0 -> 16448 bytes .../dumbssd-test/dumbssd-test.c | 8 +- tools/nvmedrv-v4.5.3/Makefile | 3 +- 12 files changed, 142 insertions(+), 12 deletions(-) delete mode 100755 devices/dumbssd/register.sh delete mode 100755 devices/dumbssd/uregister.sh delete mode 100755 examples/dumbssd-test/dumbssd-test create mode 100755 frontend/kernel/mount_block.sh create mode 100644 tools/dumbssd-format/Makefile create mode 100755 tools/dumbssd-format/dumbssd-format create mode 100644 tools/dumbssd-format/dumbssd-format.c rename {examples => tools}/dumbssd-test/Makefile (100%) create mode 100755 tools/dumbssd-test/dumbssd-test rename {examples => tools}/dumbssd-test/dumbssd-test.c (96%) diff --git a/devices/dumbssd/dm_dumbssd.c b/devices/dumbssd/dm_dumbssd.c index 56a6bb4..219edf8 100644 --- a/devices/dumbssd/dm_dumbssd.c +++ b/devices/dumbssd/dm_dumbssd.c @@ -243,7 +243,7 @@ static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) break; case TEST_IOCTL_ERASE: hc->rw = 0xff; - bdbm_msg ("IOCTL_ERASE: %d %d %d", c.die, c.block, c.wu); + bdbm_msg ("IOCTL_ERASE: %d %d", c.die, c.block); simple_erase (&_dumb_dev, hc); break; default: diff --git a/devices/dumbssd/register.sh b/devices/dumbssd/register.sh deleted file mode 100755 index 0850757..0000000 --- a/devices/dumbssd/register.sh +++ /dev/null @@ -1,4 +0,0 @@ -sudo rmmod nvme -sudo insmod dumbssd.ko -sudo insmod ../../../kernel_4.5.3/nvme/nvme.ko - diff --git a/devices/dumbssd/uregister.sh b/devices/dumbssd/uregister.sh deleted file mode 100755 index 1553398..0000000 --- a/devices/dumbssd/uregister.sh +++ /dev/null @@ -1,2 +0,0 @@ -sudo rmmod nvme -sudo rmmod dumbssd diff --git a/examples/dumbssd-test/dumbssd-test b/examples/dumbssd-test/dumbssd-test deleted file mode 100755 index fb168fa526aab138b6423415d80bbe5c550d3ef0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12320 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 +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "../../devices/dumbssd/dm_dumbssd.h" + +/* +struct user_cmd { + int die; + int block; + int wu; +}; + +#define TEST_IOCTL_READ _IO('N', 0x01) +#define TEST_IOCTL_WRITE _IO('N', 0x02) +#define TEST_IOCTL_ERASE _IO('N', 0x03) +*/ + + + +void test_read (int32_t dev_h, int die, int block, int wu) +{ + dumbssd_user_cmd_t c; + c.die = die; + c.block = block; + c.wu = wu; + ioctl (dev_h, TEST_IOCTL_READ, &c); +} + +void test_write (int32_t dev_h, int die, int block, int wu) +{ + dumbssd_user_cmd_t c; + c.die = die; + c.block = block; + c.wu = wu; + ioctl (dev_h, TEST_IOCTL_WRITE, &c); +} + +void test_erase (int32_t dev_h, int die, int block) +{ + dumbssd_user_cmd_t c; + c.die = die; + c.block = block; + ioctl (dev_h, TEST_IOCTL_ERASE, &c); +} + +int main (int argc, char** argv) +{ + int32_t dev_h = -1; + int32_t die = 0, block = 0; + char* dev_name = "/dev/kernel_nvme/control"; + + fprintf (stderr, "BlueDBM format tools (Ver 0.1)\n\n"); + + /* Open the BDBM device */ + if ((dev_h = open (dev_name, O_RDWR)) == -1) { + fprintf (stderr, "Failed to open '%s'\n", dev_name); + exit (-1); + } + fprintf (stderr, "Open '%s' successfully\n", dev_name); + + /* Send a BDBM format command using IOCTL + * Everything will be done by bdbm_drv.ko */ + printf ("Formatting...\n"); + for (block = 0; block < 800; block++) + for (die = 0; die < 64; die++) + test_erase (dev_h, die, block); + + /* close the device */ + if (dev_h != -1) { + close (dev_h); + } + + return 0; +} + diff --git a/examples/dumbssd-test/Makefile b/tools/dumbssd-test/Makefile similarity index 100% rename from examples/dumbssd-test/Makefile rename to tools/dumbssd-test/Makefile diff --git a/tools/dumbssd-test/dumbssd-test b/tools/dumbssd-test/dumbssd-test new file mode 100755 index 0000000000000000000000000000000000000000..0d52d5b561c53ec0b4d7ee7921e73a1ea300f8a7 GIT binary patch literal 16448 zcmeHOe{>wheV@HMNqdrf)(>N3+}KONU<^7*MiL_6=p^gRiO9yWB?2X8eY)F|4&M*; zZco_c#i$kVxF{rYlTi271d_sQljh|){q-nGv0S?mG_R@YgIC(p)JcI#wnGhZK|rwj z`OeOq_EslCUta&{dm8EX`(wU8X1+7CJF_!;f3RJdqL4MML$$V+%y6ih-{KdKx3`h~rI zR{#{z0RpUtUl$nHMm6{rycyM(``;=*J+ z1QgX}O^Ntmduvl7+L(x^a{C+iceFRQxB9bb|7KoqvQM(N>=@vlWE?e6ROVIqQ6HfE z=5I8ylRF#!F?r^tvp-nu_!@rBbQc(<%HIgS<`f1!f?p~5!%OhHz}N6| zrU@`=*=1}@+sm_LKWFF%Bj#|%2uG>$o0;C*zg>?S8Dl7(HH}RF_N|F@%IFUdCJd(E zI;!sy8Cw(KY}UwH@+GCyBSwlv66vf#P9kK!of-S%CL76_P}H+#II>TV4DZup;dp{& zO}NdlcsgPxSnS?R+%#BhBoj}WF$j|h(#V*4G8|8VGn7oH1V?AL^!0Xc)i?V$``Ze5 zE3c^w{nUj&55HQymuSX+3Zp;9sK0CYbR2;B+O?6r$NlPP>Sv(9Di;`n?9w6q4ByPQOJog<^Iur_T^gO*^}j(;3jQNzgpC z{Jb~+!rh_#&qCv`p5NKuJ3V#2D!@Y1$HzFB{+2huX6}XJh1kmVJ&ZklKLRxnYTOSH z8lUrp@~@4qeVR;Bcxv|?qm22}5PpE$-*bYZ67x&?S;`*>{q`H&!10T27zpLhhmOy5 zhLj(MUbtvpQm|Gft*u>0YPlP(F8RI(UJ4PiQ(gr(%kLA@QfHHH7N;GiVL= zEcNeW8<8+P^S7{lY!Y6qZuuxk zjy->3Vd(Mk+x3~Q+q?4fT?1YHeUEHN)oB=vk2Dh8-J5^AH~&)KH8e8R(D4u4GxP7E zEg$^3skQv89KU_}Gky8DdthOH)hnU#6H4gDv$->LL%eHG*Jr!-blu&hpO{>5`im3j z1!Pa$GU@q5sVQoVHtjPqDI=k$Mw3QUB%Lxd=>*Tjr8|)`db+o3v2-RGHZ?PyPGq%> zw;LI)+23+aWhL8&N3an^hDOhA?dlELt1H=U64kP~NW{oyW4T1)KqWIW;jH2J`x$>q z6T&ADfKf~qE{8v5t^1}vK)P{upxTE4=KzNR-#|2{0C%BVoCf?$Kzaz*qKP!X8FYXE z;2r3>4+B!7`6eahzFkb&U!$z8u23hHiW=h6MDk(S-b4Z-m6m5%^H}nS-<_X7O0vG1 zZN7$ES61Dtjgxc8ss3~?NfQ&s$u^**s*#F8Cy=v5m=7Eas-wm zupEKq2rNfnIReWOSdPGQ1ePPP9D(Hs{C|qTUNyjr8xT;IUA#7-*D5?oNP8KSsx82d zmIpW{-_c*dYides_!SqiU%FP%^gf5uWfown$d{XWGXK9X&ZkM_uq!~Iu;&}_ShU=W zm~vUP+*9}ovr?6S4FX;wpagD-;Pp2p`EG;1TLdlN|H!?KOSu$dQ)K~;N&cjuWx1P$ z9KGPDB>m%+6t7P}$m7)%rwe`sy-ws?+W+@gxsUDi^tx!*w*@S(2yl_r0$wFxyMWsS zyj{SUfTIFB?ccI>>nF601B1DgnbX?*t^Vf5_8g~L4z{%Wn_KZ#(c){Hn_JqO+naA> z*TIMtFDu#)i9UN)2GQZ3XaAw&R03J^nwilsL_61O`HrRKM#|gcb&<6;GwN`*KwOsugkxKc? z02Q=v^|I&9HIP%kjf>~4L2#Jb4_}^lzD%e}gUvHXc#V25$-GN=gL*T`yhpgEZXucX z3E!xGjAVXEc(b~b_#Y77p@vERBH;n=S4oB`M1;J%iBLGP)4Q59T%5SWyN3vm@@WX{ z_4biix$+r+VedDIP?bRljCkWjRCB`QUEbqUMv$}L`}<^|PT2-9=6#UF>Xm*FzvJ~# zX;vwFz#I2|g~S?^B#4K-XfNiuT=^Wpr1$qo>>A|}5Qn{ACt?#Pp71_J#I>CGWAAr} zxQ-J?y?;i8U!kUa+WTANw27B(%KItGX;HG^on)2YqpU|O-i2I)=Ll6&JwyVJ5z5rR zz{T@*s;;X33E|%y#I=T%s~ULa>Jd;?)RW6?3mzt7u$0fI(dd7pubdAD#*~vkm z=ng*vSW#WR@j1x(qH%+jUqd-ejet?UiExka-W)5xmQaZ>KoN;{cw9SYTuZAtai!nz~^brGg?P+44ucCwXOve9`) z46OwRUn@B1EOO9UHT?Gdx$w6ob_Ax2(ciVuBL~r|YW|H-E`Z3?9OV>cxDEwY@u=;xd`4F#5o={P4G-6$ z;Y&i50bn$0Ibd}>sP|b#x?>d&s-QkwM?n?DUg{8JWc5K@D!xs9i7B`s=$eYsTTdF*m$TmbCS0b*)8Yz1>W2eUYJ65EXSN%}c5fpSlW!Y=Pgo=4P5moJ90p z>;np+@;(ZxAQ6H8rd&2dXOWtQB9SH>Lekq?#fhY$RIaJ5DV~ZXa#4eEIYBIz8;s*X ziCv_KSS+7CkY#><6aKMn7RSa`Q#6+x%w{oM1kz|4S<@duDd}8F)QI_qsl4Wa5hDu} z-2sJ;r-7o|OD;NOG^q;<$SUK?QVNahk^|q}uBbP^J~T9>=G3?is{@Z%ujL+4f297C z`u!)|>(pn|zQ+$Sm&eU7>Uy9``K`FR$_)!IzvuBoHi^c?5=GMc{#Vk;p>Mo?r^|&_ z)6)51ki1IHau$RMk>m(!|9Bv(L*&Gzt7MuK=I*Xe7jH|F*D3M z!voF1TudLtZX(06o(wiH=|s_O+%UJt-B@RV#Q7i`M;g-jg}msAbYvgXBe{$oNhfm2 z6hn*Z!%QDZXIVHiG|KcWTyUe?di#P_x%vJj%cZjMp_CETBE#Vf2}jt1@j@o|f+AVP zgE^`pnQR(P(?08PI2lc+o3fcm(_nNE&7T=<;@hjTPw}o~tG-p+Tq>6}qMH|LOHrY! zQ$Q$^RF70RX)qMv`pt->=vO-QP}yV@EInoH$5kH*M_ViagG60#fmRE&iDoIP6He}F zTU%NjlQgX{Y35SKmLVf$Wa1H!;Y?(Bi*-CuYaG%VWBk}w<47iL8WA&{Y0P4uIW=Uf zAeCOHe$w7bWh88&_;O(3+!sH_MK#7Tu-u5%3kI$Bj3vTDS=1$&#@H`(2rF`zJirnPq;Cskn50Qc`uXenPPrrVck>AuPUtniuu*-RC&P8;<%fwU}F`f_`bq< zW4n?YC*9QAmq?U`d|57H;^VxOWv?|m}$**C1MJ zm{E||7V+tM>|t-tJ2UuvwM5+LvF>6%Hs$CKR3qXuF#(nK{DSX%PtgOug0~3|i?~ra zDDB2iDbbE}&X?@V_Z}omi6-$1TihRLa#*TfOV#(!xt%)J;R^s;NPh!VDG>*fC}sc0 zT(y2tKm2!YXK{a<5%SLd{66O|9v8F>R!a24E5WZreCX66C7QQVY88Cv!k`m;jY||? z&T;R^2$=El^rI!@&wx+$a*peFmXNPTz%^mh4%UKS>srG`9P!ymd^%k$?r)ev@^l0E z)Q)s)l#;=(jQtB>4aUo)!_IkLo`w7HCLw(UFgjL*>|qD?%;f(YypG@W@{qc2CUqQ3PtoCZJ(|{s66wKkLXToDlhwny{VbABjwB4zi2846>u4)2 zq{rf^xE{`A!Ur&0GcyNREQ84!P5zSypkkwRNSZ~Wjx~m^Z`;+iJ*WqF^q`d zi)mHQojba=_ilxhEr%bA2Mbd=Js1+!LOr{feoNnN-Cce9ZQHi(4)*K)UEO^_^1u(% zN3uCy3u{Vj&9Oi1^go^24+QK7?R6s>HpBKQwewK_f_$rWuz!I;C-wQ)0mUray25$p zzgQ4$2j|uY0P;Hlr$o^w0#L}N_2F&L$Q?g9YZls*YQ<_Y;F47LiWs}k1ed_PO&EQXAdMX{RK2L795rsmI+2? zg!xmLm;1ZAdmGL0kf5-X_7CRb_}C{NWqzWD!`Wfxj~+VsH~q z#v>?0+9dPfP(SmdO_(2}Gl>xgo-vpkf?hZ^grO|Rcq*2bczAFyV~k1)-#Hl)N6h36 z?AL@e-@&c7@SK(F2l-u`+!v8m%2$lMn zLGyGwu5SFKf4L3{h=R)fAWPb^A#s9t<41cjQeUo@)`FV|m_LcduEO8-({*8c&a-!0^($^sml5(?)9pGeYi z>VFA5iYt|mlHAWbDj0H~&dOcffAYw%>&tcDDWQKkHp+70~2Sq=S`qICo|Inc?*P9opQzG$A4GZO0hdK5waLK=HKRFMR8>Elg zbP09V=X>DU_2qY-^83#|hrZMQF^9ff=g!c=3yHRq?8)i>d1U(VqcOyjT*t1nNT5@{hvaYiYWEv`nu*L>c0+M>S|J7uEXW`x~E0`MRzR3U-pB;4*zn! zJ|~vG&iYDP!vAvU7uNL}GLVKXP`FAx3FnYwufJR;3~QE(ET=Re^(1`}2=Qe7<$QL( zW=S~p1>4HRl{PlWe{+FjAyU89!587=I+R7<21uS=^gEhGIqf=S*Dj&|iqM~QbaHmKKUCPQv literal 0 HcmV?d00001 diff --git a/examples/dumbssd-test/dumbssd-test.c b/tools/dumbssd-test/dumbssd-test.c similarity index 96% rename from examples/dumbssd-test/dumbssd-test.c rename to tools/dumbssd-test/dumbssd-test.c index 9a3432f..0b25844 100644 --- a/examples/dumbssd-test/dumbssd-test.c +++ b/tools/dumbssd-test/dumbssd-test.c @@ -122,18 +122,18 @@ int main (int argc, char** argv) int die = 0, block = 0, wu = 0; printf ("erase...\n"); - for (block = 0; block < 20; block++) + for (block = 0; block < 2; block++) for (die = 0; die < 64; die++) test_erase (dev_h, die, block); printf ("write...\n"); - for (block = 0; block < 10; block++) + for (block = 0; block < 2; block++) for (wu = 0; wu < 64; wu++) for (die = 0; die < 64; die++) test_write (dev_h, die, block, wu); printf ("read...\n"); - for (block = 0; block < 10; block++) + for (block = 0; block < 2; block++) for (wu = 0; wu < 64; wu++) for (die = 0; die < 64; die++) test_read (dev_h, die, block, wu); @@ -144,6 +144,8 @@ int main (int argc, char** argv) close (dev_h); } + printf ("done!"); + return 0; } diff --git a/tools/nvmedrv-v4.5.3/Makefile b/tools/nvmedrv-v4.5.3/Makefile index e424bfc..2addbcf 100644 --- a/tools/nvmedrv-v4.5.3/Makefile +++ b/tools/nvmedrv-v4.5.3/Makefile @@ -6,8 +6,7 @@ obj-m := nvme.o ccflags-y := -I$(src) -#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../bdbm_drv/frontend/kernel_nvme/Module.symvers -KBUILD_EXTRA_SYMBOLS := $(PWD)/../../bdbm_drv/devices/dumbssd/Module.symvers +KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/dumbssd/Module.symvers export KROOT=/lib/modules/$(shell uname -r)/build From f0c2dd5e8213c422e030c00b036bd5ef9911b2c8 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Thu, 28 Jul 2016 21:08:12 -0400 Subject: [PATCH 18/51] added mount_f2fs.sh --- frontend/kernel/mount_f2fs.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100755 frontend/kernel/mount_f2fs.sh diff --git a/frontend/kernel/mount_f2fs.sh b/frontend/kernel/mount_f2fs.sh new file mode 100755 index 0000000..38fe652 --- /dev/null +++ b/frontend/kernel/mount_f2fs.sh @@ -0,0 +1,13 @@ +sudo mkdir -p /usr/share/bdbm_drv +sudo touch /usr/share/bdbm_drv/ftl.dat +sudo touch /usr/share/bdbm_drv/dm.dat + +sudo rmmod nvme +sudo insmod dumbssd.ko +sleep 1 +sudo insmod nvme.ko +sleep 1 +sudo insmod bdbm_drv.ko +sleep 1 +sudo mkfs.f2fs -a 0 -s 2 /dev/blueDBM +sudo mount -t f2fs -o discard /dev/blueDBM /media/blueDBM From c34a7ee9b50c8776e092b81757d973773703f838 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Sun, 31 Jul 2016 01:50:56 -0400 Subject: [PATCH 19/51] added mount_ext4_ram.sh --- frontend/kernel/mount_ext4_ram.sh | 9 +++++++++ frontend/kernel/umount.sh | 1 + 2 files changed, 10 insertions(+) create mode 100755 frontend/kernel/mount_ext4_ram.sh diff --git a/frontend/kernel/mount_ext4_ram.sh b/frontend/kernel/mount_ext4_ram.sh new file mode 100755 index 0000000..4f3a0d2 --- /dev/null +++ b/frontend/kernel/mount_ext4_ram.sh @@ -0,0 +1,9 @@ +sudo mkdir -p /usr/share/bdbm_drv +sudo touch /usr/share/bdbm_drv/ftl.dat +sudo touch /usr/share/bdbm_drv/dm.dat + +sudo insmod risa_dev_ramdrive.ko +sudo insmod bdbm_drv.ko +sleep 1 +sudo mkfs -t ext4 -b 4096 /dev/blueDBM +sudo mount -t ext4 -o discard /dev/blueDBM /media/blueDBM diff --git a/frontend/kernel/umount.sh b/frontend/kernel/umount.sh index 2fa14e8..cf1db53 100755 --- a/frontend/kernel/umount.sh +++ b/frontend/kernel/umount.sh @@ -5,3 +5,4 @@ sleep 5 sudo rmmod nvme sleep 1 sudo rmmod dumbssd +sudo rmmod risa* From 57beded39ea310db21b4d2f241342172b5eed76f Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Mon, 1 Aug 2016 14:53:32 -0400 Subject: [PATCH 20/51] added fio_rw --- frontend/kernel/run_fio_rw.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100755 frontend/kernel/run_fio_rw.sh diff --git a/frontend/kernel/run_fio_rw.sh b/frontend/kernel/run_fio_rw.sh new file mode 100755 index 0000000..fde944d --- /dev/null +++ b/frontend/kernel/run_fio_rw.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +sudo rm /media/blueDBM/fio + +sudo fio --randrepeat=1 \ + --ioengine=libaio \ + --name=fio\ + --filename=/media/blueDBM/fio \ + --bs=4k \ + --iodepth=128 \ + --size=1000M \ + --readwrite=randrw \ + --rwmixread=0 \ + --overwrite=0 \ + --numjobs=8 \ + --direct=0 \ + --buffered=0 + From 0dff2229827f5a0f9bfa9f273c3360b1c7f43750 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Wed, 3 Aug 2016 13:41:53 -0400 Subject: [PATCH 21/51] display LPA with DIE, BLOCK, PAGE # --- devices/dumbssd/dev_hynix_nvme.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/devices/dumbssd/dev_hynix_nvme.c b/devices/dumbssd/dev_hynix_nvme.c index b57f668..5bcbbd7 100644 --- a/devices/dumbssd/dev_hynix_nvme.c +++ b/devices/dumbssd/dev_hynix_nvme.c @@ -262,6 +262,9 @@ uint32_t dev_hynix_nvme_submit_io ( case REQTYPE_GC_WRITE: case REQTYPE_RMW_WRITE: case REQTYPE_META_WRITE: + bdbm_msg ("WRITE: %llu => %llu, %llu, %llu", + r->logaddr.lpa[0], + hc->die, hc->block, hc->wu); hc->rw = WRITE; ret = simple_write (dev, hc); break; @@ -270,11 +273,16 @@ uint32_t dev_hynix_nvme_submit_io ( case REQTYPE_GC_READ: case REQTYPE_RMW_READ: case REQTYPE_META_READ: + bdbm_msg ("READ: %llu => %llu, %llu, %llu", + r->logaddr.lpa[0], + hc->die, hc->block, hc->wu); hc->rw = READ; ret = simple_read (dev, hc); break; case REQTYPE_GC_ERASE: + bdbm_msg ("ERASE: %llu, %llu", + hc->die, hc->block); hc->rw = 0xFF; ret = simple_erase (dev, hc); break; From 17c4b4bebf704db0a6625883348e1925dd3ee93c Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Wed, 3 Aug 2016 13:45:04 -0400 Subject: [PATCH 22/51] display lpa for dumbssd --- devices/dumbssd/dev_hynix_nvme.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/devices/dumbssd/dev_hynix_nvme.c b/devices/dumbssd/dev_hynix_nvme.c index 5bcbbd7..55450b5 100644 --- a/devices/dumbssd/dev_hynix_nvme.c +++ b/devices/dumbssd/dev_hynix_nvme.c @@ -69,10 +69,12 @@ int simple_read (dumb_ssd_dev_t* dev, hd_req_t* hc) { struct request *rq; struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - int req_ofs = hc->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + __le64 req_ofs = hc->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | hc->die << (BITS_PER_WU + BITS_PER_SLICE) | hc->wu << (BITS_PER_SLICE); + bdbm_msg (" ==> req_ofs: %llu", req_ofs); + bdbm_bug_on (cmd == NULL); /* [STEP2] alloc request */ @@ -120,12 +122,14 @@ int simple_write (dumb_ssd_dev_t* dev, hd_req_t* hc) { struct request *rq; struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - int req_ofs = hc->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + __le64 req_ofs = hc->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | hc->die << (BITS_PER_WU + BITS_PER_SLICE) | hc->wu << (BITS_PER_SLICE); bdbm_bug_on (cmd == NULL); + bdbm_msg (" ==> req_ofs: %llu", req_ofs); + /* setup bio */ if (hc->kp_ptr) memcpy (hc->buffer, hc->kp_ptr, 4096); @@ -176,12 +180,14 @@ int simple_erase (dumb_ssd_dev_t* dev, hd_req_t* hc) { struct request *rq; struct nvme_command* cmd = kzalloc (sizeof (struct nvme_command), GFP_KERNEL); - __u32 req_ofs = hc->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | + __le64 req_ofs = hc->block << (BITS_PER_DIE + BITS_PER_WU + BITS_PER_SLICE) | hc->die << (BITS_PER_WU + BITS_PER_SLICE); __le64* ubuffer_64 = (__le64*)hc->buffer; bdbm_bug_on (cmd == NULL); + bdbm_msg (" ==> req_ofs: %llu", req_ofs); + ubuffer_64[1] = req_ofs; /* alloc request */ From c13ff642b7158fac87ef04458e7b259109982f82 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Wed, 3 Aug 2016 17:31:29 -0400 Subject: [PATCH 23/51] added more logs for debugging --- devices/dumbssd/dev_hynix_nvme.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/devices/dumbssd/dev_hynix_nvme.c b/devices/dumbssd/dev_hynix_nvme.c index 55450b5..fcdfa58 100644 --- a/devices/dumbssd/dev_hynix_nvme.c +++ b/devices/dumbssd/dev_hynix_nvme.c @@ -268,9 +268,12 @@ uint32_t dev_hynix_nvme_submit_io ( case REQTYPE_GC_WRITE: case REQTYPE_RMW_WRITE: case REQTYPE_META_WRITE: - bdbm_msg ("WRITE: %llu => %llu, %llu, %llu", + bdbm_msg ("WRITE(%x): %llu => %llu, %llu, %llu", + r->req_type, r->logaddr.lpa[0], - hc->die, hc->block, hc->wu); + hc->die, + hc->block, + hc->wu); hc->rw = WRITE; ret = simple_write (dev, hc); break; @@ -279,16 +282,21 @@ uint32_t dev_hynix_nvme_submit_io ( case REQTYPE_GC_READ: case REQTYPE_RMW_READ: case REQTYPE_META_READ: - bdbm_msg ("READ: %llu => %llu, %llu, %llu", + bdbm_msg ("READ(%x): %llu => %llu, %llu, %llu", + r->req_type, r->logaddr.lpa[0], - hc->die, hc->block, hc->wu); + hc->die, + hc->block, + hc->wu); hc->rw = READ; ret = simple_read (dev, hc); break; case REQTYPE_GC_ERASE: - bdbm_msg ("ERASE: %llu, %llu", - hc->die, hc->block); + bdbm_msg ("ERASE(%x): %llu, %llu", + r->req_type, + hc->die, + hc->block); hc->rw = 0xFF; ret = simple_erase (dev, hc); break; From f16014c4ebe054af524e50864b2a4c0765555afd Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Wed, 10 Aug 2016 14:02:18 -0700 Subject: [PATCH 24/51] changed bdbm_drv to robusta_drv --- frontend/kernel/Makefile | 6 +++--- frontend/kernel/blkdev.c | 8 ++++---- frontend/kernel/blkio.c | 8 ++++---- frontend/kernel/mount_ext4.sh | 6 +++--- frontend/kernel/mount_ext4_ram.sh | 4 ++-- frontend/kernel/mount_f2fs.sh | 4 ++-- frontend/kernel/run_fio_rw.sh | 10 +++++----- frontend/kernel/umount.sh | 4 ++-- 8 files changed, 25 insertions(+), 25 deletions(-) diff --git a/frontend/kernel/Makefile b/frontend/kernel/Makefile index 65d36bd..47773ae 100644 --- a/frontend/kernel/Makefile +++ b/frontend/kernel/Makefile @@ -54,9 +54,9 @@ EXTRA_CFLAGS += -D USE_NEW_RMW $(COMMON)/utils/utime.o \ $(COMMON)/utils/ufile.o \ $(COMMON)/utils/uthread.o \ - $(COMMON)/bdbm_main.o \ + $(COMMON)/bm_main.o \ -bdbm_drv-y := \ +robusta_drv-y := \ kmain.o \ blkdev.o \ blkio.o \ @@ -79,7 +79,7 @@ bdbm_drv-y := \ $(COMMON)/bdbm_main.o \ -obj-m := bdbm_drv.o +obj-m := robusta_drv.o ccflags-y := -I$(src) diff --git a/frontend/kernel/blkdev.c b/frontend/kernel/blkdev.c index 89e1021..e7c289e 100644 --- a/frontend/kernel/blkdev.c +++ b/frontend/kernel/blkdev.c @@ -209,13 +209,13 @@ uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) } /* register a blk device */ - if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, "blueDBM")) < 0) { + if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, "robusta")) < 0) { bdbm_msg ("register_blkdev failed (%d)", bdbm_device_major_num); return bdbm_device_major_num; } if (!(bdbm_device.gd = alloc_disk (1))) { bdbm_msg ("alloc_disk failed"); - unregister_blkdev (bdbm_device_major_num, "blueDBM"); + unregister_blkdev (bdbm_device_major_num, "robusta"); return -ENOMEM; } bdbm_device.gd->major = bdbm_device_major_num; @@ -223,7 +223,7 @@ uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) bdbm_device.gd->fops = &bdops; bdbm_device.gd->queue = bdbm_device.queue; bdbm_device.gd->private_data = NULL; - strcpy (bdbm_device.gd->disk_name, "blueDBM"); + strcpy (bdbm_device.gd->disk_name, "robusta"); { uint64_t capacity; @@ -244,6 +244,6 @@ void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) del_gendisk (bdbm_device.gd); blk_cleanup_queue (bdbm_device.gd->queue); put_disk (bdbm_device.gd); - unregister_blkdev (bdbm_device_major_num, "blueDBM"); + unregister_blkdev (bdbm_device_major_num, "robusta"); } diff --git a/frontend/kernel/blkio.c b/frontend/kernel/blkio.c index a604b10..d54ef90 100644 --- a/frontend/kernel/blkio.c +++ b/frontend/kernel/blkio.c @@ -154,10 +154,10 @@ uint32_t blkio_open (bdbm_drv_info_t* bdi) return 1; } - /* register blueDBM */ + /* register robusta */ if ((ret = host_blkdev_register_device (bdi, __host_blkio_make_request_fn)) != 0) { - bdbm_error ("failed to register blueDBM"); + bdbm_error ("failed to register robusta"); bdbm_free (p); return 1; } @@ -573,10 +573,10 @@ uint32_t blkio_open (bdbm_drv_info_t* bdi) atomic64_set (&p->nr_reqs, 0); bdi->ptr_host_inf->ptr_private = (void*)p; - /* register blueDBM */ + /* register robusta*/ if ((ret = host_blkdev_register_device (bdi, __host_blkio_make_request_fn)) != 0) { - bdbm_error ("failed to register blueDBM"); + bdbm_error ("failed to register robusta"); bdbm_free_atomic (p); return 1; } diff --git a/frontend/kernel/mount_ext4.sh b/frontend/kernel/mount_ext4.sh index cfdb135..6e99dae 100755 --- a/frontend/kernel/mount_ext4.sh +++ b/frontend/kernel/mount_ext4.sh @@ -7,7 +7,7 @@ sudo insmod dumbssd.ko sleep 1 sudo insmod nvme.ko sleep 1 -sudo insmod bdbm_drv.ko +sudo insmod robusta_drv.ko sleep 1 -sudo mkfs -t ext4 -b 4096 /dev/blueDBM -sudo mount -t ext4 -o discard /dev/blueDBM /media/blueDBM +sudo mkfs -t ext4 -b 4096 /dev/robusta +sudo mount -t ext4 -o discard /dev/robusta /media/robusta diff --git a/frontend/kernel/mount_ext4_ram.sh b/frontend/kernel/mount_ext4_ram.sh index 4f3a0d2..7cc81ad 100755 --- a/frontend/kernel/mount_ext4_ram.sh +++ b/frontend/kernel/mount_ext4_ram.sh @@ -5,5 +5,5 @@ sudo touch /usr/share/bdbm_drv/dm.dat sudo insmod risa_dev_ramdrive.ko sudo insmod bdbm_drv.ko sleep 1 -sudo mkfs -t ext4 -b 4096 /dev/blueDBM -sudo mount -t ext4 -o discard /dev/blueDBM /media/blueDBM +sudo mkfs -t ext4 -b 4096 /dev/robusta +sudo mount -t ext4 -o discard /dev/robusta /media/robusta diff --git a/frontend/kernel/mount_f2fs.sh b/frontend/kernel/mount_f2fs.sh index 38fe652..4d5fa96 100755 --- a/frontend/kernel/mount_f2fs.sh +++ b/frontend/kernel/mount_f2fs.sh @@ -9,5 +9,5 @@ sudo insmod nvme.ko sleep 1 sudo insmod bdbm_drv.ko sleep 1 -sudo mkfs.f2fs -a 0 -s 2 /dev/blueDBM -sudo mount -t f2fs -o discard /dev/blueDBM /media/blueDBM +sudo mkfs.f2fs -a 0 -s 2 /dev/robusta +sudo mount -t f2fs -o discard /dev/robusta /media/robusta diff --git a/frontend/kernel/run_fio_rw.sh b/frontend/kernel/run_fio_rw.sh index fde944d..fcddb80 100755 --- a/frontend/kernel/run_fio_rw.sh +++ b/frontend/kernel/run_fio_rw.sh @@ -1,18 +1,18 @@ #!/bin/bash -sudo rm /media/blueDBM/fio +sudo rm /media/robusta/fio sudo fio --randrepeat=1 \ --ioengine=libaio \ --name=fio\ - --filename=/media/blueDBM/fio \ + --filename=/media/robusta/fio \ --bs=4k \ - --iodepth=128 \ + --iodepth=1 \ --size=1000M \ - --readwrite=randrw \ + --readwrite=write \ --rwmixread=0 \ --overwrite=0 \ - --numjobs=8 \ + --numjobs=1 \ --direct=0 \ --buffered=0 diff --git a/frontend/kernel/umount.sh b/frontend/kernel/umount.sh index cf1db53..099d7e2 100755 --- a/frontend/kernel/umount.sh +++ b/frontend/kernel/umount.sh @@ -1,6 +1,6 @@ -sudo umount /media/blueDBM +sudo umount /media/robusta sleep 1 -sudo rmmod bdbm_drv +sudo rmmod robusta_drv sleep 5 sudo rmmod nvme sleep 1 From beebb6152b803f213df6ed80c1c3ff1f72f4125a Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Wed, 10 Aug 2016 14:27:26 -0700 Subject: [PATCH 25/51] removed logs from dumbssd --- devices/dumbssd/dev_hynix_nvme.c | 13 +++++++++++++ tools/dumbssd-format/dumbssd-format | Bin 12184 -> 12208 bytes 2 files changed, 13 insertions(+) diff --git a/devices/dumbssd/dev_hynix_nvme.c b/devices/dumbssd/dev_hynix_nvme.c index fcdfa58..4a63697 100644 --- a/devices/dumbssd/dev_hynix_nvme.c +++ b/devices/dumbssd/dev_hynix_nvme.c @@ -42,6 +42,7 @@ THE SOFTWARE. #define BITS_PER_DIE 6 #define USE_ASYNC +/*#define USE_LOG*/ static void submit_io_done (struct request *rq, int error) { @@ -73,7 +74,9 @@ int simple_read (dumb_ssd_dev_t* dev, hd_req_t* hc) hc->die << (BITS_PER_WU + BITS_PER_SLICE) | hc->wu << (BITS_PER_SLICE); +#ifdef USE_LOG bdbm_msg (" ==> req_ofs: %llu", req_ofs); +#endif bdbm_bug_on (cmd == NULL); @@ -128,7 +131,9 @@ int simple_write (dumb_ssd_dev_t* dev, hd_req_t* hc) bdbm_bug_on (cmd == NULL); +#ifdef USE_LOG bdbm_msg (" ==> req_ofs: %llu", req_ofs); +#endif /* setup bio */ if (hc->kp_ptr) @@ -186,7 +191,9 @@ int simple_erase (dumb_ssd_dev_t* dev, hd_req_t* hc) bdbm_bug_on (cmd == NULL); +#ifdef USE_LOG bdbm_msg (" ==> req_ofs: %llu", req_ofs); +#endif ubuffer_64[1] = req_ofs; @@ -268,12 +275,14 @@ uint32_t dev_hynix_nvme_submit_io ( case REQTYPE_GC_WRITE: case REQTYPE_RMW_WRITE: case REQTYPE_META_WRITE: +#ifdef USE_LOG bdbm_msg ("WRITE(%x): %llu => %llu, %llu, %llu", r->req_type, r->logaddr.lpa[0], hc->die, hc->block, hc->wu); +#endif hc->rw = WRITE; ret = simple_write (dev, hc); break; @@ -282,21 +291,25 @@ uint32_t dev_hynix_nvme_submit_io ( case REQTYPE_GC_READ: case REQTYPE_RMW_READ: case REQTYPE_META_READ: +#ifdef USE_LOG bdbm_msg ("READ(%x): %llu => %llu, %llu, %llu", r->req_type, r->logaddr.lpa[0], hc->die, hc->block, hc->wu); +#endif hc->rw = READ; ret = simple_read (dev, hc); break; case REQTYPE_GC_ERASE: +#ifdef USE_LOG bdbm_msg ("ERASE(%x): %llu, %llu", r->req_type, hc->die, hc->block); +#endif hc->rw = 0xFF; ret = simple_erase (dev, hc); break; diff --git a/tools/dumbssd-format/dumbssd-format b/tools/dumbssd-format/dumbssd-format index 89e50ee3332511e2df00b08eb89cb905b1ab59f5..d0e3d3ef3c6920379c79dd4986f07c2a0dedc4d4 100755 GIT binary patch delta 839 zcmY+BUr19?9LLY^?ruBB%rY?b(=%I(Orw9TI(n6)*@9sf-Ilu4cdp?|V|4fCm;fW)V zeOA?}XvNbnUO6idjPxI`C_ihw-d7Mh*OZ%5{_TZ&DII6_`~k)avy8CI$@R}VIf596uo`dx~=7gu$IvV&*H`AgZ&qjKI^THi{|CN;G@MCKOdMxLeE+r&sZZHsT36hS9QBQ>PXUU1hc!ikvBr<&4W$HirNWX>^oKn={fE zMIu4T1RcY2)pa^=1a=vL9pjYdQ&yPl*SvW#xJwM~h>x_UvY&KWDBra?-k21|kE&#v zwK=(|c`NB*;e7s#E^QKD2Ri6aE14LxaY`j4xu%js7CG*| z!rex1I2j#G>c(IsY9wkKYfsiS$hf;a=kYv*+~WRi7krY>{U@MHuK5G7AnWu1jL9py F?>{?8r$+z) delta 830 zcmY+BT}YEr7{||Ze7Bt=ChvS-ackI@kvem)c2Sbxq%Rg2O%l8an{ApKq?4Q!2x)oa zqR4R|c2OoI5nc?(5Tu)gB|;gGvt5Wc&-4HPpWpd--?I=(ho<(O3xW6@}1NgQTX}VnYdBV0%uh101=@7|Ax(>GYg%BkIVb zU(+_-I20Ky+P5$!Obp;q+qzFuT*0dSB&~}vVt$c!iSsJstUA&}NuH7>5hU_2=@yZo z9sZGSmuX@ckO|0cwdFiC9;C<)-Poe?DH#D_oDa)EGGzsmkeD#79EP#okgv&9z!_{4 zGD(;LU1)C0({z{#J(x|(mxQ^1_L-6znf)+^ZCcI~RuA_W8)s>mCFdo_X5|u@hJtw} zUywOmFbnb(86VISEXh$i)hb+WSze+^GmK!i!b%ru^uTc(Lznij6P=hN;1NkCeqhmN z=zE1&XUb#v%|(oO5*gb{7$rV!4X7cb$~}OT-AkEPetneL8%PSqQ)ILIs`94iAYB$N6!+*gCy4K&m*%M`vkOv{nOtk-ffA<`jSu!)k?7^YzIfak pxfW5nd#~zo-OX9 Date: Wed, 10 Aug 2016 19:31:22 -0400 Subject: [PATCH 26/51] fixed type problems in umemory --- common/utils/umemory.h | 4 ++-- frontend/kernel/mount_ext4_ram.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/utils/umemory.h b/common/utils/umemory.h index 8461a2e..ba16693 100644 --- a/common/utils/umemory.h +++ b/common/utils/umemory.h @@ -32,7 +32,7 @@ void* bdbm_zmalloc (size_t size); void bdbm_free (void* addr); void bdbm_free_phy (void* addr); void bdbm_free_atomic (void* addr); -void* bdbm_memcpy (void* dst, void* src, int size); -void* bdbm_memset (void* addr, int c, int size); +void* bdbm_memcpy (void* dst, void* src, size_t size); +void* bdbm_memset (void* addr, int c, size_t size); #endif /* _BLUEDBM_MEMORY_H */ diff --git a/frontend/kernel/mount_ext4_ram.sh b/frontend/kernel/mount_ext4_ram.sh index 7cc81ad..97614a8 100755 --- a/frontend/kernel/mount_ext4_ram.sh +++ b/frontend/kernel/mount_ext4_ram.sh @@ -3,7 +3,7 @@ sudo touch /usr/share/bdbm_drv/ftl.dat sudo touch /usr/share/bdbm_drv/dm.dat sudo insmod risa_dev_ramdrive.ko -sudo insmod bdbm_drv.ko +sudo insmod robusta_drv.ko sleep 1 sudo mkfs -t ext4 -b 4096 /dev/robusta sudo mount -t ext4 -o discard /dev/robusta /media/robusta From 7c29e307e4381d00423789de3c7fec0bbf28cc81 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Wed, 10 Aug 2016 19:39:32 -0400 Subject: [PATCH 27/51] changed the device to ramdrive --- frontend/kernel/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/kernel/Makefile b/frontend/kernel/Makefile index 47773ae..838ef73 100644 --- a/frontend/kernel/Makefile +++ b/frontend/kernel/Makefile @@ -6,8 +6,8 @@ INCLUDE := ../../include COMMON := ../../common DM_COMMON := ../../devices/common -KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/dumbssd/Module.symvers -#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers +#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/dumbssd/Module.symvers +KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/bluedbm/Module.symvers From 4c87ff9a28441aa29880bf45e04c2404736701a5 Mon Sep 17 00:00:00 2001 From: Sungjin Lee Date: Sat, 8 Oct 2016 13:40:46 +0900 Subject: [PATCH 28/51] enabled oob to 64 bytes --- devices/common/dev_params.c | 2 +- ftl/algo/page_ftl.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index 4a6c5a4..d10ccca 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -44,7 +44,7 @@ THE SOFTWARE. enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, - NAND_PAGE_OOB_SIZE = 0, + NAND_PAGE_OOB_SIZE = 64, NR_PAGES_PER_BLOCK = 64, NR_BLOCKS_PER_CHIP = 128, NR_CHIPS_PER_CHANNEL = 1, diff --git a/ftl/algo/page_ftl.c b/ftl/algo/page_ftl.c index 76f2629..0d7bd7c 100644 --- a/ftl/algo/page_ftl.c +++ b/ftl/algo/page_ftl.c @@ -494,7 +494,7 @@ uint8_t bdbm_page_ftl_is_gc_needed (bdbm_drv_info_t* bdi, int64_t lpa) uint64_t nr_free_blks = bdbm_abm_get_nr_free_blocks (p->bai); /* invoke gc when remaining free blocks are less than 1% of total blocks */ - if ((nr_free_blks * 100 / nr_total_blks) <= 2) { + if ((nr_free_blks * 100 / nr_total_blks) <= 20) { return 1; } From 7356dc4863e3cec1aa18ed5e82ed80ebff70d7fb Mon Sep 17 00:00:00 2001 From: root Date: Sun, 23 Oct 2016 13:31:57 +0900 Subject: [PATCH 29/51] exec script --- Makefile | 115 +++ common/.bdbm_main.o.cmd | 949 +++++++++++++++++++ common/bdbm_main.o | Bin 0 -> 10000 bytes common/utils/.ufile.o.cmd | 964 ++++++++++++++++++++ common/utils/.umemory.o.cmd | 530 +++++++++++ common/utils/.uthread.o.cmd | 751 +++++++++++++++ common/utils/.utime.o.cmd | 622 +++++++++++++ devices/common/.dev_main.o.cmd | 612 +++++++++++++ devices/common/.dev_params.o.cmd | 628 +++++++++++++ devices/common/.dev_stub.o.cmd | 863 ++++++++++++++++++ devices/ramdrive/.dev_ramssd.o.cmd | 892 ++++++++++++++++++ devices/ramdrive/.dm_ramdrive.o.cmd | 631 +++++++++++++ devices/ramdrive/dev_ramssd.o | Bin 0 -> 15768 bytes devices/ramdrive/dm_ramdrive.o | Bin 0 -> 6776 bytes exec.sh | 25 + frontend/kernel/Makefile | 4 +- frontend/kernel/mount_ext4_ram.sh | 6 +- frontend/kernel/risa_dev_ramdrive.ko | 1 - frontend/kernel/risa_dev_ramdrive_timing.ko | 1 + mm.sh | 6 + 20 files changed, 7596 insertions(+), 4 deletions(-) create mode 100644 Makefile create mode 100644 common/.bdbm_main.o.cmd create mode 100644 common/bdbm_main.o create mode 100644 common/utils/.ufile.o.cmd create mode 100644 common/utils/.umemory.o.cmd create mode 100644 common/utils/.uthread.o.cmd create mode 100644 common/utils/.utime.o.cmd create mode 100644 devices/common/.dev_main.o.cmd create mode 100644 devices/common/.dev_params.o.cmd create mode 100644 devices/common/.dev_stub.o.cmd create mode 100644 devices/ramdrive/.dev_ramssd.o.cmd create mode 100644 devices/ramdrive/.dm_ramdrive.o.cmd create mode 100644 devices/ramdrive/dev_ramssd.o create mode 100644 devices/ramdrive/dm_ramdrive.o create mode 100755 exec.sh delete mode 120000 frontend/kernel/risa_dev_ramdrive.ko create mode 120000 frontend/kernel/risa_dev_ramdrive_timing.ko create mode 100755 mm.sh diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0b90fb3 --- /dev/null +++ b/Makefile @@ -0,0 +1,115 @@ +# Makefile for a RISA Device Driver +# + +FTL := ../../ftl +INCLUDE := ../../include +COMMON := ../../common +DM_COMMON := ../../devices/common + +#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/dumbssd/Module.symvers +#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers +KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers +#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/bluedbm/Module.symvers + +EXTRA_CFLAGS := \ + -I$(PWD)/$(INCLUDE) \ + -I$(PWD)/$(COMMON)/utils \ + -I$(PWD)/$(COMMON)/3rd \ + -I$(PWD)/$(FTL) \ + -I$(PWD)/$(DM_COMMON) \ + +EXTRA_CFLAGS += -D HASH_BLOOM=20 # for HASH (8KB) +EXTRA_CFLAGS += -D CONFIG_ENABLE_MSG +EXTRA_CFLAGS += -D CONFIG_ENABLE_DEBUG +EXTRA_CFLAGS += -D USE_PMU +EXTRA_CFLAGS += -D KERNEL_MODE +EXTRA_CFLAGS += -D USE_NEW_RMW + +#EXTRA_CFLAGS += -D USE_KTIMER +#EXTRA_CFLAGS += -D EMULATE_BAD_BLOCKS +#EXTRA_CFLAGS += -D USE_COMPLETION + +#bdbm_drv-y := \ + kmain.o \ + blkdev.o \ + blkio.o \ + $(FTL)/ftl_params.o \ + $(FTL)/pmu.o \ + $(FTL)/hlm_nobuf.o \ + $(FTL)/hlm_buf.o \ + $(FTL)/hlm_dftl.o \ + $(FTL)/hlm_rsd.o \ + $(FTL)/llm_noq.o \ + $(FTL)/llm_mq.o \ + $(FTL)/algo/abm.o \ + $(FTL)/algo/no_ftl.o \ + $(FTL)/algo/block_ftl.o \ + $(FTL)/algo/page_ftl.o \ + $(FTL)/algo/dftl.o \ + $(FTL)/algo/dftl_map.o \ + $(FTL)/queue/queue.o \ + $(FTL)/queue/prior_queue.o \ + $(FTL)/queue/rd_prior_queue.o \ + $(DM_COMMON)/dev_params.o \ + $(COMMON)/utils/utime.o \ + $(COMMON)/utils/ufile.o \ + $(COMMON)/utils/uthread.o \ + $(COMMON)/bm_main.o \ + +robusta_drv-y := \ + kmain.o \ + blkdev.o \ + blkio.o \ + $(FTL)/ftl_params.o \ + $(FTL)/pmu.o \ + $(FTL)/hlm_nobuf.o \ + $(FTL)/llm_mq.o \ + $(FTL)/algo/abm.o \ + $(FTL)/algo/page_ftl.o \ + $(FTL)/algo/block_ftl.o \ + $(FTL)/queue/queue.o \ + $(FTL)/queue/prior_queue.o \ + $(FTL)/queue/rd_prior_queue.o \ + $(FTL)/hlm_reqs_pool.o \ + $(DM_COMMON)/dev_params.o \ + $(COMMON)/utils/utime.o \ + $(COMMON)/utils/ufile.o \ + $(COMMON)/utils/uthread.o \ + $(COMMON)/utils/umemory.o \ + $(COMMON)/bdbm_main.o \ + + +obj-m := robusta_drv.o + +ccflags-y := -I$(src) + +export KROOT=/lib/modules/$(shell uname -r)/build + +.PHONY: default +default: modules + +.PHONY: modules +modules: + @$(MAKE) -C $(KROOT) M=$(PWD) modules + +.PHONY: modules_check +modules_check: + @$(MAKE) -C $(KROOT) C=2 M=$(PWD) modules + +.PHONY: modules_install +modules_install: + @$(MAKE) -C $(KROOT) M=$(PWD) modules_install + +.PHONY: kernel_clean +kernel_clean: + @$(MAKE) -C $(KROOT) M=$(PWD) clean + +.PHONY: clean +clean: kernel_clean + @rm -rf Module.markers modules.order + @cd ../../ftl; rm -rf *.o .*.cmd; rm -rf */*.o */.*.cmd; cd -; + @cd $(FTL); rm *.o; cd -; + @cd $(COMMON)/utils; rm *.o; cd -; + @cd $(COMMON)/3rd; rm *.o; cd -; + @cd $(DM_COMMON); rm *.o; cd -; + diff --git a/common/.bdbm_main.o.cmd b/common/.bdbm_main.o.cmd new file mode 100644 index 0000000..e71e9e4 --- /dev/null +++ b/common/.bdbm_main.o.cmd @@ -0,0 +1,949 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/.bdbm_main.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(bdbm_main)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/.tmp_bdbm_main.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o := \ + include/linux/module.h \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/blkdev.h \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/blk/dev/integrity.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/blk/dev/bsg.h) \ + $(wildcard include/config/blk/dev/throttling.h) \ + $(wildcard include/config/bounce.h) \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/memcg/kmem.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + include/linux/capability.h \ + include/uapi/linux/capability.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/pid.h \ + include/linux/proportions.h \ + include/linux/percpu_counter.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rculist.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + $(wildcard include/config/security.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + include/uapi/linux/limits.h \ + include/linux/percpu-refcount.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ + include/uapi/linux/major.h \ + include/linux/genhd.h \ + $(wildcard include/config/fail/make/request.h) \ + $(wildcard include/config/solaris/x86/partition.h) \ + $(wildcard include/config/bsd/disklabel.h) \ + $(wildcard include/config/unixware/disklabel.h) \ + $(wildcard include/config/minix/subpartition.h) \ + include/linux/kdev_t.h \ + include/uapi/linux/kdev_t.h \ + include/linux/slab.h \ + $(wildcard include/config/debug/slab.h) \ + $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slab.h) \ + $(wildcard include/config/slub.h) \ + $(wildcard include/config/slob.h) \ + include/linux/kmemleak.h \ + $(wildcard include/config/debug/kmemleak.h) \ + include/linux/kasan.h \ + include/linux/device.h \ + $(wildcard include/config/debug/devres.h) \ + $(wildcard include/config/generic/msi/irq/domain.h) \ + $(wildcard include/config/pinctrl.h) \ + $(wildcard include/config/generic/msi/irq.h) \ + $(wildcard include/config/dma/cma.h) \ + $(wildcard include/config/of.h) \ + $(wildcard include/config/devtmpfs.h) \ + $(wildcard include/config/sysfs/deprecated.h) \ + include/linux/klist.h \ + include/linux/pinctrl/devinfo.h \ + include/linux/pinctrl/consumer.h \ + include/linux/seq_file.h \ + include/linux/pinctrl/pinctrl-state.h \ + include/linux/ratelimit.h \ + arch/x86/include/asm/device.h \ + $(wildcard include/config/x86/dev/dma/ops.h) \ + $(wildcard include/config/intel/iommu.h) \ + $(wildcard include/config/amd/iommu.h) \ + include/linux/pm_wakeup.h \ + include/linux/fs.h \ + $(wildcard include/config/fs/posix/acl.h) \ + $(wildcard include/config/cgroup/writeback.h) \ + $(wildcard include/config/ima.h) \ + $(wildcard include/config/fsnotify.h) \ + $(wildcard include/config/file/locking.h) \ + $(wildcard include/config/quota.h) \ + $(wildcard include/config/blk/dev/loop.h) \ + $(wildcard include/config/fs/dax.h) \ + $(wildcard include/config/migration.h) \ + include/linux/dcache.h \ + include/linux/rculist_bl.h \ + include/linux/list_bl.h \ + include/linux/bit_spinlock.h \ + include/linux/lockref.h \ + $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ + include/linux/path.h \ + include/linux/list_lru.h \ + include/linux/shrinker.h \ + include/linux/radix-tree.h \ + include/linux/semaphore.h \ + include/uapi/linux/fiemap.h \ + include/linux/migrate_mode.h \ + include/linux/blk_types.h \ + include/uapi/linux/fs.h \ + include/linux/quota.h \ + $(wildcard include/config/quota/netlink/interface.h) \ + include/uapi/linux/dqblk_xfs.h \ + include/linux/dqblk_v1.h \ + include/linux/dqblk_v2.h \ + include/linux/dqblk_qtree.h \ + include/linux/projid.h \ + include/uapi/linux/quota.h \ + include/linux/nfs_fs_i.h \ + include/linux/fcntl.h \ + include/uapi/linux/fcntl.h \ + arch/x86/include/uapi/asm/fcntl.h \ + include/uapi/asm-generic/fcntl.h \ + include/linux/pagemap.h \ + include/linux/mm.h \ + $(wildcard include/config/ppc.h) \ + $(wildcard include/config/parisc.h) \ + $(wildcard include/config/metag.h) \ + $(wildcard include/config/shmem.h) \ + $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/debug/pagealloc.h) \ + $(wildcard include/config/hugetlbfs.h) \ + include/linux/debug_locks.h \ + $(wildcard include/config/debug/locking/api/selftests.h) \ + include/linux/page_ext.h \ + $(wildcard include/config/idle/page/tracking.h) \ + $(wildcard include/config/page/owner.h) \ + include/linux/stacktrace.h \ + $(wildcard include/config/stacktrace.h) \ + $(wildcard include/config/user/stacktrace/support.h) \ + arch/x86/include/asm/pgtable.h \ + $(wildcard include/config/debug/wx.h) \ + $(wildcard include/config/have/arch/soft/dirty.h) \ + arch/x86/include/asm/pgtable_64.h \ + include/asm-generic/pgtable.h \ + $(wildcard include/config/have/arch/huge/vmap.h) \ + include/linux/page-flags.h \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + $(wildcard include/config/ksm.h) \ + include/linux/huge_mm.h \ + include/linux/vmstat.h \ + $(wildcard include/config/vm/event/counters.h) \ + $(wildcard include/config/debug/tlbflush.h) \ + $(wildcard include/config/debug/vm/vmacache.h) \ + include/linux/vm_event_item.h \ + $(wildcard include/config/memory/balloon.h) \ + $(wildcard include/config/balloon/compaction.h) \ + include/linux/highmem.h \ + include/linux/uaccess.h \ + arch/x86/include/asm/uaccess.h \ + $(wildcard include/config/x86/intel/usercopy.h) \ + $(wildcard include/config/debug/strict/user/copy/checks.h) \ + arch/x86/include/asm/smap.h \ + $(wildcard include/config/x86/smap.h) \ + arch/x86/include/asm/uaccess_64.h \ + include/linux/hardirq.h \ + include/linux/ftrace_irq.h \ + $(wildcard include/config/ftrace/nmi/enter.h) \ + include/linux/vtime.h \ + include/linux/context_tracking_state.h \ + $(wildcard include/config/context/tracking.h) \ + include/linux/static_key.h \ + arch/x86/include/asm/hardirq.h \ + $(wildcard include/config/x86/thermal/vector.h) \ + $(wildcard include/config/x86/mce/threshold.h) \ + $(wildcard include/config/x86/mce/amd.h) \ + $(wildcard include/config/hyperv.h) \ + include/linux/irq.h \ + $(wildcard include/config/irq/domain/hierarchy.h) \ + $(wildcard include/config/generic/pending/irq.h) \ + $(wildcard include/config/hardirqs/sw/resend.h) \ + $(wildcard include/config/generic/irq/legacy/alloc/hwirq.h) \ + $(wildcard include/config/generic/irq/legacy.h) \ + include/linux/irqhandler.h \ + include/linux/irqreturn.h \ + include/linux/irqnr.h \ + include/uapi/linux/irqnr.h \ + include/linux/io.h \ + arch/x86/include/asm/irq.h \ + arch/x86/include/asm/irq_regs.h \ + include/linux/irqdesc.h \ + $(wildcard include/config/irq/preflow/fasteoi.h) \ + $(wildcard include/config/sparse/irq.h) \ + $(wildcard include/config/handle/domain/irq.h) \ + arch/x86/include/asm/hw_irq.h \ + $(wildcard include/config/hpet/timer.h) \ + $(wildcard include/config/dmar/table.h) \ + $(wildcard include/config/ht/irq.h) \ + $(wildcard include/config/x86/uv.h) \ + include/linux/profile.h \ + $(wildcard include/config/profiling.h) \ + arch/x86/include/asm/sections.h \ + $(wildcard include/config/debug/rodata.h) \ + include/asm-generic/sections.h \ + arch/x86/include/asm/cacheflush.h \ + $(wildcard include/config/debug/rodata/test.h) \ + include/asm-generic/cacheflush.h \ + include/linux/hugetlb_inline.h \ + include/linux/backing-dev-defs.h \ + $(wildcard include/config/debug/fs.h) \ + include/linux/flex_proportions.h \ + include/linux/mempool.h \ + include/linux/bio.h \ + include/linux/ioprio.h \ + include/linux/iocontext.h \ + include/linux/bsg.h \ + include/uapi/linux/bsg.h \ + include/linux/scatterlist.h \ + $(wildcard include/config/debug/sg.h) \ + $(wildcard include/config/need/sg/dma/length.h) \ + include/linux/elevator.h \ + include/linux/hashtable.h \ + include/linux/hash.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/ftl_params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/../devices/common/dev_params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/llm_noq.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/llm_mq.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_nobuf.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_buf.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_dftl.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_rsd.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/devices.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/pmu.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/no_ftl.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/block_ftl.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/page_ftl.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/dftl.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.h \ + include/linux/buffer_head.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o): diff --git a/common/bdbm_main.o b/common/bdbm_main.o new file mode 100644 index 0000000000000000000000000000000000000000..f1292f71ea5291845df3f7cd4bb4ae5b6a602a89 GIT binary patch literal 10000 zcmeHMeQXrR6<_le6Pz4`K;4vzHL`<=%K1zPp|qj49LEQ-DQ)5u3Ea!sw`X5`U+nD} zEUE-JU&-ZS$^BAL{zz!01k_X&Dr!nhE8IFMRHc%Usx)e&#z{$n>rgpug=lHHzBl`x zZ*IH`RQ%EY!3gin{N^{mdGqGY?A-EHbL&I1%E~lOW!grqSYuSvj#d@R4WihfE!J+= z&SSa#fH zo*T6r@&i==(4T86_e1rdXl`1F>1>oI)F`>@-54NYBhTH ze+z0r^JL$K0x;gfW=NT*s^@wR%ol@H7pmVt40=f#Ado&O^_V;Zm2u=jsvqeXy}>G5 zGO@EzC`jW@d;#jiX&A)8UBi9OxM#s|*12W)>(01mfjs7~ufUiuI5US|bjD%K9nLMs z!L3@ysAu_unilqYmJdLc*1H`;_bZK$HMU~_=Pvs*ACU z5xEb~0xt~i@)gD)jdWW0yBk?JQJU^RJ8x)&*iTL*q?kTqmxp(Zm zWV84)ub0DqYV2tIYGa^d6uq%tc%woDk-fdxDNlkKjVIxuO1pqucaSS8lFKBnk=EYgq_Q4!rez+#qTrn?n%cKFp9^AP^mJtut^%`c}h}L<%_^&GwizVVVJr<0_yDy~k8)`xwx1t91-xW0Dk$Cq89ZXAA zLBEI|N$FeKTU$%m(|j5)67LH}BO$#f8q=-*q){Z7+9mAhOm_zo@ghY`p_IpZ(QD{2 zFKk7xIKC9REE6KP#s*0nf~F4KTO($QhHHOWo*{L-6865nhF%CZtcwmsr0t69 z@n2UokupNp&o_-&qK`X>Q{caU;8l|oULrZ+bt#-k21)TU> zUGOJd@SQIBe!$VramX>@#T?T&;BOJE%U-NNsE8l8obSjiTVM`_0F%l1J0eFE2Vms|JwsfY$#fEr-T9DoeR)M4y)yST1qgab4ie(hHhlwXx zj$d2>Gac7LkyJ7o?1$;$?T77W6vv{;CSz&#k`M@+hEbf4IQ}){P*=Nb;H#^@NDBdA zCi-bTXnFA$EPOrEw12@55==g7N8BUfnhlJJ)${8JMCx`a>f9ccfPgnwG%|6RgmKVMdG{B7kh0i+83eNUycG2lk_^gvq@CLHSa?#nV@LA`8g0nr(y68Nw z@LA`(3Vx6pUUt#>xrEE{|1P~Ruz5NB@jm*qgzFOiR|&6@@P81_@vxifS0ui?Ppjz_ zihTJtvsJ-4)JlebYtfiiEEK1@_Oaw0U^GB(E(} z@S~)^lyKEfpTcLI`xV?r^ZmSw&Sr(rI$u)o9*Wz?Ty#PTpLKc_e2VNzy6Egv_^k7^ zg6}4sK^L7D6h7;`q~J$sUf*}oc~#+GBK`>%{#gl^_sfS8UJb@@JhapO1*cOZ;X4TD zI5|%76qNXK+?onsC;l!Mepce+KH~lIJqbsXlcaOlMd!y7U*3;n5>8VGHBI}Sf}f{2 zf7?a>V+oi2`A-R70lMtZGJ3hP-_Dc$^9V;j%YH+fFyXRd8-6v%RBmU}_=|+&odgr} z_YuzTXcgB5yT~6RKL0LY{?7;}y08W9S%wctG!22{+_=uaxR8c_TZqqgVpZm|oy;F1 zKHmXUzUEE!$E;u{-7EUhiG6iFR)~9*y)G z(SB&fJ~qX!1mFtX9RTI1QQEg&^Wx`FxT|a4c)~KgEnC`Gi@P>V>4uXI3g~hQqiMYc zDpkmrG{D%OOvL?yYtX;|-ZZ?jXi8D zud*43?QHs~_Q$%q_DJUOkB~U-J2Xl4ANtg3{Bi66=^14}rK zDSlNOl6V1uRBLC`PmX`izXL7!o>S97>c5*B@I8y~1n$T0S+(D_>Z-q3kMVI5pkrR_ WO`O{ZO_0ZBK7VJ{sUPF~-S|Hu?BbjN literal 0 HcmV?d00001 diff --git a/common/utils/.ufile.o.cmd b/common/utils/.ufile.o.cmd new file mode 100644 index 0000000..f62fdee --- /dev/null +++ b/common/utils/.ufile.o.cmd @@ -0,0 +1,964 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.ufile.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(ufile)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_ufile.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o := \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + $(wildcard include/config/64bit.h) \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + include/linux/module.h \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/syscalls.h \ + $(wildcard include/config/ftrace/syscalls.h) \ + $(wildcard include/config/old/sigsuspend.h) \ + $(wildcard include/config/old/sigsuspend3.h) \ + $(wildcard include/config/old/sigaction.h) \ + $(wildcard include/config/odd/rt/sigaction.h) \ + $(wildcard include/config/clone/backwards.h) \ + $(wildcard include/config/clone/backwards3.h) \ + include/uapi/linux/aio_abi.h \ + include/linux/capability.h \ + include/uapi/linux/capability.h \ + include/linux/signal.h \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/sem.h \ + $(wildcard include/config/sysvipc.h) \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/uapi/linux/unistd.h \ + arch/x86/include/asm/unistd.h \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + include/linux/quota.h \ + $(wildcard include/config/quota/netlink/interface.h) \ + include/linux/percpu_counter.h \ + include/uapi/linux/dqblk_xfs.h \ + include/linux/dqblk_v1.h \ + include/linux/dqblk_v2.h \ + include/linux/dqblk_qtree.h \ + include/linux/projid.h \ + include/uapi/linux/quota.h \ + include/linux/key.h \ + $(wildcard include/config/keys.h) \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/trace/syscall.h \ + $(wildcard include/config/have/syscall/tracepoints.h) \ + include/linux/tracepoint.h \ + $(wildcard include/config/tracepoint.h) \ + include/linux/static_key.h \ + include/linux/trace_events.h \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/events.h) \ + include/linux/ring_buffer.h \ + $(wildcard include/config/ring/buffer/allow/swap.h) \ + include/linux/kmemcheck.h \ + include/linux/mm.h \ + $(wildcard include/config/ppc.h) \ + $(wildcard include/config/parisc.h) \ + $(wildcard include/config/metag.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/shmem.h) \ + $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/debug/pagealloc.h) \ + $(wildcard include/config/hugetlbfs.h) \ + include/linux/debug_locks.h \ + $(wildcard include/config/debug/locking/api/selftests.h) \ + include/linux/bit_spinlock.h \ + include/linux/shrinker.h \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/page_ext.h \ + $(wildcard include/config/idle/page/tracking.h) \ + $(wildcard include/config/page/owner.h) \ + include/linux/stacktrace.h \ + $(wildcard include/config/stacktrace.h) \ + $(wildcard include/config/user/stacktrace/support.h) \ + arch/x86/include/asm/pgtable.h \ + $(wildcard include/config/debug/wx.h) \ + $(wildcard include/config/have/arch/soft/dirty.h) \ + arch/x86/include/asm/pgtable_64.h \ + include/asm-generic/pgtable.h \ + $(wildcard include/config/have/arch/huge/vmap.h) \ + include/linux/page-flags.h \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + $(wildcard include/config/ksm.h) \ + include/linux/huge_mm.h \ + include/linux/vmstat.h \ + $(wildcard include/config/vm/event/counters.h) \ + $(wildcard include/config/debug/tlbflush.h) \ + $(wildcard include/config/debug/vm/vmacache.h) \ + include/linux/vm_event_item.h \ + $(wildcard include/config/migration.h) \ + $(wildcard include/config/memory/balloon.h) \ + $(wildcard include/config/balloon/compaction.h) \ + include/linux/seq_file.h \ + include/linux/poll.h \ + include/linux/fs.h \ + $(wildcard include/config/fs/posix/acl.h) \ + $(wildcard include/config/security.h) \ + $(wildcard include/config/cgroup/writeback.h) \ + $(wildcard include/config/ima.h) \ + $(wildcard include/config/fsnotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/file/locking.h) \ + $(wildcard include/config/quota.h) \ + $(wildcard include/config/blk/dev/loop.h) \ + $(wildcard include/config/fs/dax.h) \ + $(wildcard include/config/block.h) \ + include/linux/kdev_t.h \ + include/uapi/linux/kdev_t.h \ + include/linux/dcache.h \ + include/linux/rculist.h \ + include/linux/rculist_bl.h \ + include/linux/list_bl.h \ + include/linux/lockref.h \ + $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ + include/linux/path.h \ + include/linux/list_lru.h \ + $(wildcard include/config/memcg/kmem.h) \ + include/linux/radix-tree.h \ + include/linux/pid.h \ + include/linux/semaphore.h \ + include/uapi/linux/fiemap.h \ + include/linux/migrate_mode.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/blk_types.h \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/blk/dev/integrity.h) \ + include/uapi/linux/fs.h \ + include/uapi/linux/limits.h \ + include/linux/nfs_fs_i.h \ + include/linux/fcntl.h \ + include/uapi/linux/fcntl.h \ + arch/x86/include/uapi/asm/fcntl.h \ + include/uapi/asm-generic/fcntl.h \ + arch/x86/include/asm/uaccess.h \ + $(wildcard include/config/x86/intel/usercopy.h) \ + $(wildcard include/config/debug/strict/user/copy/checks.h) \ + arch/x86/include/asm/smap.h \ + $(wildcard include/config/x86/smap.h) \ + arch/x86/include/asm/uaccess_64.h \ + include/uapi/linux/poll.h \ + arch/x86/include/uapi/asm/poll.h \ + include/uapi/asm-generic/poll.h \ + include/linux/trace_seq.h \ + include/linux/seq_buf.h \ + include/linux/hardirq.h \ + include/linux/ftrace_irq.h \ + $(wildcard include/config/ftrace/nmi/enter.h) \ + include/linux/vtime.h \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/virt/cpu/accounting.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + include/linux/context_tracking_state.h \ + $(wildcard include/config/context/tracking.h) \ + arch/x86/include/asm/hardirq.h \ + $(wildcard include/config/x86/thermal/vector.h) \ + $(wildcard include/config/x86/mce/threshold.h) \ + $(wildcard include/config/x86/mce/amd.h) \ + $(wildcard include/config/hyperv.h) \ + include/linux/irq.h \ + $(wildcard include/config/irq/domain/hierarchy.h) \ + $(wildcard include/config/generic/pending/irq.h) \ + $(wildcard include/config/hardirqs/sw/resend.h) \ + $(wildcard include/config/generic/irq/legacy/alloc/hwirq.h) \ + $(wildcard include/config/generic/irq/legacy.h) \ + include/linux/irqhandler.h \ + include/linux/irqreturn.h \ + include/linux/irqnr.h \ + include/uapi/linux/irqnr.h \ + include/linux/io.h \ + arch/x86/include/asm/irq.h \ + arch/x86/include/asm/irq_regs.h \ + include/linux/irqdesc.h \ + $(wildcard include/config/irq/preflow/fasteoi.h) \ + $(wildcard include/config/sparse/irq.h) \ + $(wildcard include/config/handle/domain/irq.h) \ + arch/x86/include/asm/hw_irq.h \ + $(wildcard include/config/hpet/timer.h) \ + $(wildcard include/config/dmar/table.h) \ + $(wildcard include/config/ht/irq.h) \ + $(wildcard include/config/x86/uv.h) \ + include/linux/profile.h \ + $(wildcard include/config/profiling.h) \ + arch/x86/include/asm/sections.h \ + $(wildcard include/config/debug/rodata.h) \ + include/asm-generic/sections.h \ + include/linux/perf_event.h \ + $(wildcard include/config/have/hw/breakpoint.h) \ + $(wildcard include/config/function/tracer.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cpu/sup/intel.h) \ + include/uapi/linux/perf_event.h \ + arch/x86/include/asm/perf_event.h \ + $(wildcard include/config/cpu/sup/amd.h) \ + arch/x86/include/asm/stacktrace.h \ + $(wildcard include/config/frame/pointer.h) \ + include/linux/uaccess.h \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + include/asm-generic/cputime_jiffies.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/proportions.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + include/linux/percpu-refcount.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ + include/linux/ptrace.h \ + include/linux/pid_namespace.h \ + $(wildcard include/config/pid/ns.h) \ + include/linux/nsproxy.h \ + include/linux/ns_common.h \ + include/uapi/linux/ptrace.h \ + arch/x86/include/asm/local64.h \ + include/asm-generic/local64.h \ + arch/x86/include/asm/local.h \ + arch/x86/include/asm/hw_breakpoint.h \ + arch/x86/include/uapi/asm/hw_breakpoint.h \ + include/linux/kdebug.h \ + arch/x86/include/asm/kdebug.h \ + include/linux/ftrace.h \ + $(wildcard include/config/dynamic/ftrace/with/regs.h) \ + $(wildcard include/config/dynamic/ftrace.h) \ + $(wildcard include/config/stack/tracer.h) \ + include/linux/trace_clock.h \ + arch/x86/include/asm/trace_clock.h \ + include/linux/kallsyms.h \ + arch/x86/include/asm/ftrace.h \ + arch/x86/include/asm/compat.h \ + arch/x86/include/asm/user32.h \ + include/linux/cpu.h \ + $(wildcard include/config/pm/sleep/smp.h) \ + include/linux/node.h \ + $(wildcard include/config/memory/hotplug/sparse.h) \ + include/linux/device.h \ + $(wildcard include/config/debug/devres.h) \ + $(wildcard include/config/generic/msi/irq/domain.h) \ + $(wildcard include/config/pinctrl.h) \ + $(wildcard include/config/generic/msi/irq.h) \ + $(wildcard include/config/dma/cma.h) \ + $(wildcard include/config/of.h) \ + $(wildcard include/config/devtmpfs.h) \ + $(wildcard include/config/sysfs/deprecated.h) \ + include/linux/klist.h \ + include/linux/pinctrl/devinfo.h \ + include/linux/pinctrl/consumer.h \ + include/linux/pinctrl/pinctrl-state.h \ + include/linux/ratelimit.h \ + arch/x86/include/asm/device.h \ + $(wildcard include/config/x86/dev/dma/ops.h) \ + $(wildcard include/config/intel/iommu.h) \ + $(wildcard include/config/amd/iommu.h) \ + include/linux/pm_wakeup.h \ + include/linux/irq_work.h \ + $(wildcard include/config/irq/work.h) \ + arch/x86/include/asm/irq_work.h \ + include/linux/jump_label_ratelimit.h \ + include/linux/perf_regs.h \ + $(wildcard include/config/have/perf/regs.h) \ + arch/x86/include/uapi/asm/perf_regs.h \ + include/linux/cgroup.h \ + include/uapi/linux/cgroupstats.h \ + include/uapi/linux/taskstats.h \ + include/linux/user_namespace.h \ + $(wildcard include/config/persistent/keyrings.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.h \ + include/linux/buffer_head.h \ + include/linux/pagemap.h \ + include/linux/highmem.h \ + arch/x86/include/asm/cacheflush.h \ + $(wildcard include/config/debug/rodata/test.h) \ + include/asm-generic/cacheflush.h \ + include/linux/hugetlb_inline.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o): diff --git a/common/utils/.umemory.o.cmd b/common/utils/.umemory.o.cmd new file mode 100644 index 0000000..954cd7e --- /dev/null +++ b/common/utils/.umemory.o.cmd @@ -0,0 +1,530 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.umemory.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(umemory)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_umemory.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o := \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/slab.h \ + $(wildcard include/config/debug/slab.h) \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slab.h) \ + $(wildcard include/config/slub.h) \ + $(wildcard include/config/slob.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/tracing.h) \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/virtual.h) \ + include/linux/bug.h \ + $(wildcard include/config/generic/bug.h) \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + $(wildcard include/config/smp.h) \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/modversions.h) \ + $(wildcard include/config/unused/symbols.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + include/uapi/linux/const.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/seqlock.h \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + $(wildcard include/config/sysfs.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/kmemleak.h \ + $(wildcard include/config/debug/kmemleak.h) \ + include/linux/kasan.h \ + include/linux/vmalloc.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o): diff --git a/common/utils/.uthread.o.cmd b/common/utils/.uthread.o.cmd new file mode 100644 index 0000000..4f9dcb3 --- /dev/null +++ b/common/utils/.uthread.o.cmd @@ -0,0 +1,751 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.uthread.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(uthread)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_uthread.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o := \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h \ + include/linux/completion.h \ + $(wildcard include/config/lockdep.h) \ + include/linux/wait.h \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/modversions.h) \ + $(wildcard include/config/unused/symbols.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + $(wildcard include/config/generic/bug.h) \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/uapi/linux/wait.h \ + include/linux/semaphore.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.h \ + include/linux/delay.h \ + arch/x86/include/asm/delay.h \ + include/asm-generic/delay.h \ + include/linux/kthread.h \ + include/linux/sched.h \ + $(wildcard include/config/no/hz/common.h) \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/smt.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memcg/kmem.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/uprobes.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + include/linux/capability.h \ + $(wildcard include/config/multiuser.h) \ + include/uapi/linux/capability.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/uapi/linux/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/linux/jiffies.h \ + include/generated/timeconst.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/rbtree.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/nodemask.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/movable/node.h) \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/hugetlb/page.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + arch/x86/include/uapi/asm/auxvec.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + include/linux/osq_lock.h \ + arch/x86/include/asm/rwsem.h \ + include/linux/uprobes.h \ + arch/x86/include/asm/uprobes.h \ + include/linux/notifier.h \ + include/linux/mutex.h \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/srcu.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + $(wildcard include/config/sysfs.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/uapi/linux/sysctl.h \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + $(wildcard include/config/memory/hotremove.h) \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + $(wildcard include/config/have/memoryless/nodes.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/linux/uidgid.h \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/pid.h \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/pfn.h \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/cma.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + include/linux/proportions.h \ + include/linux/percpu_counter.h \ + include/linux/gfp.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rculist.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + $(wildcard include/config/security.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + include/uapi/linux/limits.h \ + include/linux/idr.h \ + include/linux/percpu-refcount.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ + include/linux/module.h \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/kmod.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o): diff --git a/common/utils/.utime.o.cmd b/common/utils/.utime.o.cmd new file mode 100644 index 0000000..ac8c93d --- /dev/null +++ b/common/utils/.utime.o.cmd @@ -0,0 +1,622 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.utime.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(utime)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_utime.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o := \ + include/linux/module.h \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/slab.h \ + $(wildcard include/config/debug/slab.h) \ + $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slab.h) \ + $(wildcard include/config/slub.h) \ + $(wildcard include/config/slob.h) \ + include/linux/kmemleak.h \ + $(wildcard include/config/debug/kmemleak.h) \ + include/linux/kasan.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h \ + include/linux/semaphore.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o): diff --git a/devices/common/.dev_main.o.cmd b/devices/common/.dev_main.o.cmd new file mode 100644 index 0000000..d1f542b --- /dev/null +++ b/devices/common/.dev_main.o.cmd @@ -0,0 +1,612 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/.dev_main.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(dev_main)" -D"KBUILD_MODNAME=KBUILD_STR(risa_dev_ramdrive_timing)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/.tmp_dev_main.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.o := \ + include/linux/kernel.h \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + $(wildcard include/config/64bit.h) \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/modversions.h) \ + $(wildcard include/config/unused/symbols.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + include/uapi/linux/const.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/module.h \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/bdbm_drv.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/utime.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h \ + include/linux/semaphore.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.o): diff --git a/devices/common/.dev_params.o.cmd b/devices/common/.dev_params.o.cmd new file mode 100644 index 0000000..cabfe96 --- /dev/null +++ b/devices/common/.dev_params.o.cmd @@ -0,0 +1,628 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/.dev_params.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(dev_params)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/.tmp_dev_params.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.o := \ + $(wildcard include/config/device/type/ramdrive.h) \ + $(wildcard include/config/device/type/ramdrive/intr.h) \ + $(wildcard include/config/device/type/ramdrive/timing.h) \ + $(wildcard include/config/device/type/bluedbm.h) \ + $(wildcard include/config/device/type/user/dummy.h) \ + $(wildcard include/config/device/type/user/ramdrive.h) \ + include/linux/module.h \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/slab.h \ + $(wildcard include/config/debug/slab.h) \ + $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slab.h) \ + $(wildcard include/config/slub.h) \ + $(wildcard include/config/slob.h) \ + include/linux/kmemleak.h \ + $(wildcard include/config/debug/kmemleak.h) \ + include/linux/kasan.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h \ + include/linux/semaphore.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.o): diff --git a/devices/common/.dev_stub.o.cmd b/devices/common/.dev_stub.o.cmd new file mode 100644 index 0000000..639373a --- /dev/null +++ b/devices/common/.dev_stub.o.cmd @@ -0,0 +1,863 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/.dev_stub.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(dev_stub)" -D"KBUILD_MODNAME=KBUILD_STR(risa_dev_ramdrive_timing)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/.tmp_dev_stub.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.o := \ + include/linux/kernel.h \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + $(wildcard include/config/64bit.h) \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/modversions.h) \ + $(wildcard include/config/unused/symbols.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + include/uapi/linux/const.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/module.h \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/fs.h \ + $(wildcard include/config/fs/posix/acl.h) \ + $(wildcard include/config/security.h) \ + $(wildcard include/config/cgroup/writeback.h) \ + $(wildcard include/config/ima.h) \ + $(wildcard include/config/fsnotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/file/locking.h) \ + $(wildcard include/config/quota.h) \ + $(wildcard include/config/blk/dev/loop.h) \ + $(wildcard include/config/fs/dax.h) \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/migration.h) \ + include/linux/kdev_t.h \ + include/uapi/linux/kdev_t.h \ + include/linux/dcache.h \ + include/linux/rculist.h \ + include/linux/rculist_bl.h \ + include/linux/list_bl.h \ + include/linux/bit_spinlock.h \ + include/linux/lockref.h \ + $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ + include/linux/path.h \ + include/linux/list_lru.h \ + $(wildcard include/config/memcg/kmem.h) \ + include/linux/shrinker.h \ + include/linux/radix-tree.h \ + include/linux/pid.h \ + include/linux/capability.h \ + include/uapi/linux/capability.h \ + include/linux/semaphore.h \ + include/uapi/linux/fiemap.h \ + include/linux/migrate_mode.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/blk_types.h \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/blk/dev/integrity.h) \ + include/uapi/linux/fs.h \ + include/uapi/linux/limits.h \ + include/linux/quota.h \ + $(wildcard include/config/quota/netlink/interface.h) \ + include/linux/percpu_counter.h \ + include/uapi/linux/dqblk_xfs.h \ + include/linux/dqblk_v1.h \ + include/linux/dqblk_v2.h \ + include/linux/dqblk_qtree.h \ + include/linux/projid.h \ + include/uapi/linux/quota.h \ + include/linux/nfs_fs_i.h \ + include/linux/fcntl.h \ + include/uapi/linux/fcntl.h \ + arch/x86/include/uapi/asm/fcntl.h \ + include/uapi/asm-generic/fcntl.h \ + arch/x86/include/asm/uaccess.h \ + $(wildcard include/config/x86/intel/usercopy.h) \ + $(wildcard include/config/debug/strict/user/copy/checks.h) \ + arch/x86/include/asm/smap.h \ + $(wildcard include/config/x86/smap.h) \ + arch/x86/include/asm/uaccess_64.h \ + include/linux/poll.h \ + include/uapi/linux/poll.h \ + arch/x86/include/uapi/asm/poll.h \ + include/uapi/asm-generic/poll.h \ + include/linux/cdev.h \ + include/linux/device.h \ + $(wildcard include/config/debug/devres.h) \ + $(wildcard include/config/generic/msi/irq/domain.h) \ + $(wildcard include/config/pinctrl.h) \ + $(wildcard include/config/generic/msi/irq.h) \ + $(wildcard include/config/dma/cma.h) \ + $(wildcard include/config/of.h) \ + $(wildcard include/config/devtmpfs.h) \ + $(wildcard include/config/sysfs/deprecated.h) \ + include/linux/klist.h \ + include/linux/pinctrl/devinfo.h \ + include/linux/pinctrl/consumer.h \ + include/linux/seq_file.h \ + include/linux/pinctrl/pinctrl-state.h \ + include/linux/ratelimit.h \ + arch/x86/include/asm/device.h \ + $(wildcard include/config/x86/dev/dma/ops.h) \ + $(wildcard include/config/intel/iommu.h) \ + $(wildcard include/config/amd/iommu.h) \ + include/linux/pm_wakeup.h \ + include/linux/mm.h \ + $(wildcard include/config/ppc.h) \ + $(wildcard include/config/parisc.h) \ + $(wildcard include/config/metag.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/shmem.h) \ + $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/debug/pagealloc.h) \ + $(wildcard include/config/hugetlbfs.h) \ + include/linux/debug_locks.h \ + $(wildcard include/config/debug/locking/api/selftests.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/page_ext.h \ + $(wildcard include/config/idle/page/tracking.h) \ + $(wildcard include/config/page/owner.h) \ + include/linux/stacktrace.h \ + $(wildcard include/config/stacktrace.h) \ + $(wildcard include/config/user/stacktrace/support.h) \ + arch/x86/include/asm/pgtable.h \ + $(wildcard include/config/debug/wx.h) \ + $(wildcard include/config/have/arch/soft/dirty.h) \ + arch/x86/include/asm/pgtable_64.h \ + include/asm-generic/pgtable.h \ + $(wildcard include/config/have/arch/huge/vmap.h) \ + include/linux/page-flags.h \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + $(wildcard include/config/ksm.h) \ + include/linux/huge_mm.h \ + include/linux/vmstat.h \ + $(wildcard include/config/vm/event/counters.h) \ + $(wildcard include/config/debug/tlbflush.h) \ + $(wildcard include/config/debug/vm/vmacache.h) \ + include/linux/vm_event_item.h \ + $(wildcard include/config/memory/balloon.h) \ + $(wildcard include/config/balloon/compaction.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/bdbm_drv.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/utime.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/uthread.h \ + include/linux/delay.h \ + arch/x86/include/asm/delay.h \ + include/asm-generic/delay.h \ + include/linux/kthread.h \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/proportions.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + include/linux/percpu-refcount.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/umemory.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.o): diff --git a/devices/ramdrive/.dev_ramssd.o.cmd b/devices/ramdrive/.dev_ramssd.o.cmd new file mode 100644 index 0000000..1d14c8e --- /dev/null +++ b/devices/ramdrive/.dev_ramssd.o.cmd @@ -0,0 +1,892 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/.dev_ramssd.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(dev_ramssd)" -D"KBUILD_MODNAME=KBUILD_STR(risa_dev_ramdrive_timing)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/.tmp_dev_ramssd.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o := \ + include/linux/slab.h \ + $(wildcard include/config/debug/slab.h) \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slab.h) \ + $(wildcard include/config/slub.h) \ + $(wildcard include/config/slob.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/tracing.h) \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/virtual.h) \ + include/linux/bug.h \ + $(wildcard include/config/generic/bug.h) \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + $(wildcard include/config/x86/32.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + $(wildcard include/config/smp.h) \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + $(wildcard include/config/64bit.h) \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + arch/x86/include/asm/posix_types.h \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/kernel.h \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/modversions.h) \ + $(wildcard include/config/unused/symbols.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + include/uapi/linux/const.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/seqlock.h \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + $(wildcard include/config/sysfs.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/kmemleak.h \ + $(wildcard include/config/debug/kmemleak.h) \ + include/linux/kasan.h \ + include/linux/interrupt.h \ + $(wildcard include/config/irq/forced/threading.h) \ + $(wildcard include/config/generic/irq/probe.h) \ + include/linux/irqreturn.h \ + include/linux/irqnr.h \ + include/uapi/linux/irqnr.h \ + include/linux/hardirq.h \ + include/linux/ftrace_irq.h \ + $(wildcard include/config/ftrace/nmi/enter.h) \ + include/linux/vtime.h \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/virt/cpu/accounting.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + include/linux/context_tracking_state.h \ + $(wildcard include/config/context/tracking.h) \ + include/linux/static_key.h \ + arch/x86/include/asm/hardirq.h \ + $(wildcard include/config/x86/thermal/vector.h) \ + $(wildcard include/config/x86/mce/threshold.h) \ + $(wildcard include/config/x86/mce/amd.h) \ + $(wildcard include/config/hyperv.h) \ + include/linux/irq.h \ + $(wildcard include/config/irq/domain/hierarchy.h) \ + $(wildcard include/config/generic/pending/irq.h) \ + $(wildcard include/config/hardirqs/sw/resend.h) \ + $(wildcard include/config/generic/irq/legacy/alloc/hwirq.h) \ + $(wildcard include/config/generic/irq/legacy.h) \ + include/linux/irqhandler.h \ + include/linux/io.h \ + $(wildcard include/config/have/arch/huge/vmap.h) \ + arch/x86/include/asm/irq.h \ + arch/x86/include/asm/irq_regs.h \ + include/linux/irqdesc.h \ + $(wildcard include/config/irq/preflow/fasteoi.h) \ + $(wildcard include/config/sparse/irq.h) \ + $(wildcard include/config/handle/domain/irq.h) \ + arch/x86/include/asm/hw_irq.h \ + $(wildcard include/config/hpet/timer.h) \ + $(wildcard include/config/dmar/table.h) \ + $(wildcard include/config/ht/irq.h) \ + $(wildcard include/config/x86/uv.h) \ + include/linux/profile.h \ + $(wildcard include/config/profiling.h) \ + arch/x86/include/asm/sections.h \ + $(wildcard include/config/debug/rodata.h) \ + include/asm-generic/sections.h \ + arch/x86/include/asm/uaccess.h \ + $(wildcard include/config/x86/intel/usercopy.h) \ + $(wildcard include/config/debug/strict/user/copy/checks.h) \ + arch/x86/include/asm/smap.h \ + $(wildcard include/config/x86/smap.h) \ + arch/x86/include/asm/uaccess_64.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/kref.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/umemory.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/bdbm_drv.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/utime.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h \ + include/linux/semaphore.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/ufile.h \ + include/linux/fs.h \ + $(wildcard include/config/fs/posix/acl.h) \ + $(wildcard include/config/security.h) \ + $(wildcard include/config/cgroup/writeback.h) \ + $(wildcard include/config/ima.h) \ + $(wildcard include/config/fsnotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/file/locking.h) \ + $(wildcard include/config/quota.h) \ + $(wildcard include/config/blk/dev/loop.h) \ + $(wildcard include/config/fs/dax.h) \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/migration.h) \ + include/linux/kdev_t.h \ + include/uapi/linux/kdev_t.h \ + include/linux/dcache.h \ + include/linux/rculist.h \ + include/linux/rculist_bl.h \ + include/linux/list_bl.h \ + include/linux/bit_spinlock.h \ + include/linux/lockref.h \ + $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ + include/linux/path.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/list_lru.h \ + $(wildcard include/config/memcg/kmem.h) \ + include/linux/shrinker.h \ + include/linux/radix-tree.h \ + include/linux/pid.h \ + include/linux/capability.h \ + include/uapi/linux/capability.h \ + include/uapi/linux/fiemap.h \ + include/linux/migrate_mode.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/blk_types.h \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/blk/dev/integrity.h) \ + include/uapi/linux/fs.h \ + include/uapi/linux/limits.h \ + include/linux/quota.h \ + $(wildcard include/config/quota/netlink/interface.h) \ + include/linux/percpu_counter.h \ + include/uapi/linux/dqblk_xfs.h \ + include/linux/dqblk_v1.h \ + include/linux/dqblk_v2.h \ + include/linux/dqblk_qtree.h \ + include/linux/projid.h \ + include/uapi/linux/quota.h \ + include/linux/nfs_fs_i.h \ + include/linux/fcntl.h \ + include/uapi/linux/fcntl.h \ + arch/x86/include/uapi/asm/fcntl.h \ + include/uapi/asm-generic/fcntl.h \ + include/linux/buffer_head.h \ + include/linux/pagemap.h \ + include/linux/mm.h \ + $(wildcard include/config/ppc.h) \ + $(wildcard include/config/parisc.h) \ + $(wildcard include/config/metag.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/shmem.h) \ + $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/debug/pagealloc.h) \ + $(wildcard include/config/hugetlbfs.h) \ + include/linux/debug_locks.h \ + $(wildcard include/config/debug/locking/api/selftests.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + arch/x86/include/uapi/asm/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/page_ext.h \ + $(wildcard include/config/idle/page/tracking.h) \ + $(wildcard include/config/page/owner.h) \ + include/linux/stacktrace.h \ + $(wildcard include/config/stacktrace.h) \ + $(wildcard include/config/user/stacktrace/support.h) \ + arch/x86/include/asm/pgtable.h \ + $(wildcard include/config/debug/wx.h) \ + $(wildcard include/config/have/arch/soft/dirty.h) \ + arch/x86/include/asm/pgtable_64.h \ + include/asm-generic/pgtable.h \ + include/linux/page-flags.h \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + $(wildcard include/config/ksm.h) \ + include/linux/huge_mm.h \ + include/linux/vmstat.h \ + $(wildcard include/config/vm/event/counters.h) \ + $(wildcard include/config/debug/tlbflush.h) \ + $(wildcard include/config/debug/vm/vmacache.h) \ + include/linux/vm_event_item.h \ + $(wildcard include/config/memory/balloon.h) \ + $(wildcard include/config/balloon/compaction.h) \ + include/linux/highmem.h \ + include/linux/uaccess.h \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + include/asm-generic/cputime_jiffies.h \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/proportions.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + include/linux/idr.h \ + include/linux/percpu-refcount.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ + arch/x86/include/asm/cacheflush.h \ + $(wildcard include/config/debug/rodata/test.h) \ + include/asm-generic/cacheflush.h \ + include/linux/hugetlb_inline.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.h \ + include/linux/module.h \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/kmod.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/kobject_ns.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o): diff --git a/devices/ramdrive/.dm_ramdrive.o.cmd b/devices/ramdrive/.dm_ramdrive.o.cmd new file mode 100644 index 0000000..f2a6809 --- /dev/null +++ b/devices/ramdrive/.dm_ramdrive.o.cmd @@ -0,0 +1,631 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/.dm_ramdrive.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(dm_ramdrive)" -D"KBUILD_MODNAME=KBUILD_STR(risa_dev_ramdrive_timing)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/.tmp_dm_ramdrive.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o := \ + include/linux/module.h \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/bdbm_drv.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/utime.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h \ + include/linux/semaphore.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.h \ + include/linux/slab.h \ + $(wildcard include/config/debug/slab.h) \ + $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slab.h) \ + $(wildcard include/config/slub.h) \ + $(wildcard include/config/slob.h) \ + include/linux/kmemleak.h \ + $(wildcard include/config/debug/kmemleak.h) \ + include/linux/kasan.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/umemory.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/../../ftl/hlm_reqs_pool.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o): diff --git a/devices/ramdrive/dev_ramssd.o b/devices/ramdrive/dev_ramssd.o new file mode 100644 index 0000000000000000000000000000000000000000..8db9623aaa52746259df50ca23748e8510117a60 GIT binary patch literal 15768 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 ~/tpcc-output-ps-55-bpool-256.log +fi + + + diff --git a/frontend/kernel/Makefile b/frontend/kernel/Makefile index 838ef73..0b90fb3 100644 --- a/frontend/kernel/Makefile +++ b/frontend/kernel/Makefile @@ -7,8 +7,8 @@ COMMON := ../../common DM_COMMON := ../../devices/common #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/dumbssd/Module.symvers -KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers -#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers +#KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive/Module.symvers +KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/ramdrive_timing/Module.symvers #KBUILD_EXTRA_SYMBOLS := $(PWD)/../../devices/bluedbm/Module.symvers EXTRA_CFLAGS := \ diff --git a/frontend/kernel/mount_ext4_ram.sh b/frontend/kernel/mount_ext4_ram.sh index 97614a8..672544a 100755 --- a/frontend/kernel/mount_ext4_ram.sh +++ b/frontend/kernel/mount_ext4_ram.sh @@ -2,7 +2,11 @@ sudo mkdir -p /usr/share/bdbm_drv sudo touch /usr/share/bdbm_drv/ftl.dat sudo touch /usr/share/bdbm_drv/dm.dat -sudo insmod risa_dev_ramdrive.ko +sudo umount /media/robusta + +sudo rmmod robusta_drv +sudo rmmod risa_dev_ramdrive_timing +sudo insmod risa_dev_ramdrive_timing.ko sudo insmod robusta_drv.ko sleep 1 sudo mkfs -t ext4 -b 4096 /dev/robusta diff --git a/frontend/kernel/risa_dev_ramdrive.ko b/frontend/kernel/risa_dev_ramdrive.ko deleted file mode 120000 index d00030c..0000000 --- a/frontend/kernel/risa_dev_ramdrive.ko +++ /dev/null @@ -1 +0,0 @@ -../../devices/ramdrive/risa_dev_ramdrive.ko \ No newline at end of file diff --git a/frontend/kernel/risa_dev_ramdrive_timing.ko b/frontend/kernel/risa_dev_ramdrive_timing.ko new file mode 120000 index 0000000..610106a --- /dev/null +++ b/frontend/kernel/risa_dev_ramdrive_timing.ko @@ -0,0 +1 @@ +../../devices/ramdrive_timing/risa_dev_ramdrive_timing.ko \ No newline at end of file diff --git a/mm.sh b/mm.sh new file mode 100755 index 0000000..7cfcbe3 --- /dev/null +++ b/mm.sh @@ -0,0 +1,6 @@ +cd /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing; make clean; make +cd /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel; make clean; make +/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/mount_ext4_ram.sh +df -h +cat /home/ejlee/cooperate/bdbm_drv_dummy_gc/include/bdbm_drv.h | grep MAX_QSIZE + From 9345ba8c8c59674e6abecfa26183f0cc86a50e70 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 23 Oct 2016 20:02:24 +0900 Subject: [PATCH 30/51] nvm-cache init --- common/.bdbm_main.o.cmd | 1 + common/bdbm_main.c | 22 +- common/bdbm_main.o | Bin 10000 -> 10264 bytes common/err.dmesg | 987 +++++ devices/common/dev_params.c | 11 +- frontend/kernel/Makefile | 1 + frontend/kernel/blkdev_bak.c | 249 ++ frontend/kernel/blkio.c | 434 +-- frontend/kernel/nvm_cache.c | 56 + frontend/kernel/nvm_cache.h | 57 + frontend/kernel/nvm_cache_bak/nvm_cache.c | 255 ++ frontend/kernel/nvm_cache_bak/nvm_cache.h | 82 + include/bdbm_drv.h | 25 + include/params.h | 3 + tags | 4296 +++++++++++++++++++++ 15 files changed, 6043 insertions(+), 436 deletions(-) create mode 100644 common/err.dmesg create mode 100644 frontend/kernel/blkdev_bak.c create mode 100644 frontend/kernel/nvm_cache.c create mode 100644 frontend/kernel/nvm_cache.h create mode 100644 frontend/kernel/nvm_cache_bak/nvm_cache.c create mode 100644 frontend/kernel/nvm_cache_bak/nvm_cache.h create mode 100644 tags diff --git a/common/.bdbm_main.o.cmd b/common/.bdbm_main.o.cmd index e71e9e4..64011d3 100644 --- a/common/.bdbm_main.o.cmd +++ b/common/.bdbm_main.o.cmd @@ -941,6 +941,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/block_ftl.h \ /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/page_ftl.h \ /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/dftl.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/../frontend/kernel/nvm_cache.h \ /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.h \ include/linux/buffer_head.h \ diff --git a/common/bdbm_main.c b/common/bdbm_main.c index 0c05844..8ea0f6b 100644 --- a/common/bdbm_main.c +++ b/common/bdbm_main.c @@ -55,6 +55,9 @@ THE SOFTWARE. #include "algo/block_ftl.h" #include "algo/page_ftl.h" #include "algo/dftl.h" +#ifdef NVM_CACHE +#include "../frontend/kernel/nvm_cache.h" +#endif #include "ufile.h" /* TEMP */ @@ -62,6 +65,7 @@ THE SOFTWARE. bdbm_ftl_inf_t _ftl_dftl, _ftl_no_ftl; bdbm_hlm_inf_t _hlm_dftl_inf, _hlm_buf_inf; bdbm_llm_inf_t _llm_noq_inf; + /* TEMP */ /* It creates bdi and setups bdi with default parameters. Users changes the @@ -78,7 +82,7 @@ bdbm_drv_info_t* bdbm_drv_create (void) /* get default driver paramters */ bdi->parm_ftl = get_default_ftl_params (); - bdi->parm_dev = get_default_device_params (); + bdi->parm_dev = get_default_device_params (); // 여기에서 nvm cache size 세팅되어옴. return bdi; } @@ -160,6 +164,10 @@ int bdbm_drv_setup ( break; } +#ifdef NVM_CACHE + bdi->ptr_nvm_inf = &_nvm_dev; +#endif + return 0; } @@ -171,6 +179,9 @@ int bdbm_drv_run (bdbm_drv_info_t* bdi) bdbm_llm_inf_t* llm = NULL; bdbm_ftl_inf_t* ftl = NULL; bdbm_dm_inf_t* dm = NULL; +#ifdef NVM_CACHE + bdbm_nvm_inf_t* nvm = NULL; +#endif uint32_t load = 0; /* run setup functions */ @@ -198,6 +209,15 @@ int bdbm_drv_run (bdbm_drv_info_t* bdi) } } +#ifdef NVM_CACHE + if(bdi->ptr_nvm_inf) { + nvm = bdi->ptr_nvm_inf; // 이거 전의 함수에서 세팅 되어있었어야 함. + if(nvm->create == NULL || nvm->create(bdi) != 0) { + bdbm_error ("[bdbm_drv_main] failed to create nvm (%p)", nvm->create); + goto fail; + } + } +#endif /* create a low-level memory manager */ if (bdi->ptr_llm_inf) { llm = bdi->ptr_llm_inf; diff --git a/common/bdbm_main.o b/common/bdbm_main.o index f1292f71ea5291845df3f7cd4bb4ae5b6a602a89..9fd57e0d42701d4a1530c020e68f4d90e7580b68 100644 GIT binary patch delta 2251 zcmd5+ZA_b06n^i^M_UGM`FwdP&=1O&Kcvl6hFNGxCUz()iSdVq4AdDiBiYPWaB7f2 zohwdgj&3GufMFD~ABHtZ1NJ6F;UEP2`7+MOi)PzW2p9jr;FS?z#6o z=Q-z|kGCCr=f~8Z^o|O)7!96g4?~w+0>w;aQ_#TF;x8phvK?w+k~Fj~?{6Dg z&#;9rLnkYB9zzRaw(vE)1QUn9!GqS&fH%u_I2Ybz+jb-Ti-t=6c;^LFzZ2@pk4EKd zqq1aF=26ijCwo(=6zW$*jO2FI=U%{!6?TyF&a`crJHpinFXIi_n!R`nIVU(crE|LI zVwuIFq|OV^jKP}RFz_*IJ4beS&B1WoHoQ;9nvVAQQddw5KZP3E?A*3QwjyBo z`BOtL)-l^~F2;CpS% zS-F)5%xCH0VB$P?PbBEzGg=v+Ti^{^3D4c6OI`9V>@Q_^cKN?uIAQKrBAb#H8pcJs ztI0e*sDEQ8JsYW%&A9`t*?-CPJe!!yG%m}%Ay}}q#?Dz*W%VGXB34Ad;5ik$l)Fo2 zSE1f^oP7(ER)wv=f=y9xpfO*{l)9*FTw~fHF>u=z)sAR^#H2Vjkk$hk+F3zXww23P zE;~5?3Bk8#YrH}cbr0u+Nah?89G?lku>WA{4L!H(>D?iS<$oI6ThPN)5I$QlM41+b z%M-9#sHpUb(IRU(ziHwUxQi73b%V9iV5QH67I|gyn;~Lzz)KCd$ACKpuGbkCll4M}qOdktC{g?&1IL2C4&1aN z2Ap?O_>OYlX>cnzr!-E#;LH*y&nt#NRaC*evemLK?Au`m-+v4SQFg*I$|pIpmk_m2 z_~}{qh`GMRIT6l@rg653$j3P6BZvqqkLc$avid(WSdEkU z-hfm3v%>3Vp4FewQKk&oO=!Ti`L3o)N*eAHzU2a^{0ngF`TGsH)qvk?z^e>+i-s3$ zKI{_>ZiSm=wd@mcI}|nzO^*B7J22=_)bnDv7=tfLfVLB691W}kmQmv0M!CY^HIE%! zp1PdULX9d}U{A$8>~)x|2(SrQt_WBrL|UDYU)9Jqpt~{v0jmi{tD5A}a#*TrmVJ4U z<879w%b^XANAn=!ZDu2|>PE{e`I-jsd9^cUcANh{ h=`_mywUATOEKk%zTg?Y9{cqVNxYWY(9a5tyZE+y zn2HFuD0T^rm&ZQ4gT23!e9-$$^Vlx4M1ehx0?V$85x4_IEzn003~{DF4{AR&hPY8AC!zerT$5RJ!HE%vJquH)pA(*hh}!j-s20IF zB%Wz0j@etVQtK9Q;G_EqIOi z?113B<>0Kzp1TESKyW^AaQY?ZwBVc+`ErHyjV@TVVtsy?rq-glHqFT7syJm?hxn5?K{9k5i< z;Omh6gdiTSXGfu}vO(?l!{u;74V1!tTrT;cCX!GmOW`msHxY{@mLiR S*57x;#PI`Q9{-xW%zpvjhT+%% diff --git a/common/err.dmesg b/common/err.dmesg new file mode 100644 index 0000000..c45bc3c --- /dev/null +++ b/common/err.dmesg @@ -0,0 +1,987 @@ +[ 0.000000] Initializing cgroup subsys cpuset +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Initializing cgroup subsys cpuacct +[ 0.000000] Linux version 4.4.0-42-generic (buildd@lgw01-13) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.2) ) #62-Ubuntu SMP Fri Oct 7 23:11:45 UTC 2016 (Ubuntu 4.4.0-42.62-generic 4.4.21) +[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-42-generic.efi.signed root=UUID=f5bf218f-1f62-4a63-bcfe-1bdb8e06f01c ro quiet splash vt.handoff=7 +[ 0.000000] KERNEL supported cpus: +[ 0.000000] Intel GenuineIntel +[ 0.000000] AMD AuthenticAMD +[ 0.000000] Centaur CentaurHauls +[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256 +[ 0.000000] x86/fpu: xstate_offset[3]: 960, xstate_sizes[3]: 64 +[ 0.000000] x86/fpu: xstate_offset[4]: 1024, xstate_sizes[4]: 64 +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers' +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers' +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers' +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x08: 'MPX bounds registers' +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x10: 'MPX CSR' +[ 0.000000] x86/fpu: Enabled xstate features 0x1f, context size is 1088 bytes, using 'standard' format. +[ 0.000000] x86/fpu: Using 'eager' FPU context switches. +[ 0.000000] e820: BIOS-provided physical RAM map: +[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x0000000000057fff] usable +[ 0.000000] BIOS-e820: [mem 0x0000000000058000-0x0000000000058fff] reserved +[ 0.000000] BIOS-e820: [mem 0x0000000000059000-0x000000000009efff] usable +[ 0.000000] BIOS-e820: [mem 0x000000000009f000-0x000000000009ffff] reserved +[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000008277cfff] usable +[ 0.000000] BIOS-e820: [mem 0x000000008277d000-0x000000008277dfff] ACPI NVS +[ 0.000000] BIOS-e820: [mem 0x000000008277e000-0x00000000827a7fff] reserved +[ 0.000000] BIOS-e820: [mem 0x00000000827a8000-0x00000000827f9fff] usable +[ 0.000000] BIOS-e820: [mem 0x00000000827fa000-0x000000008303afff] reserved +[ 0.000000] BIOS-e820: [mem 0x000000008303b000-0x000000008a2a5fff] usable +[ 0.000000] BIOS-e820: [mem 0x000000008a2a6000-0x000000008a582fff] reserved +[ 0.000000] BIOS-e820: [mem 0x000000008a583000-0x000000008a749fff] usable +[ 0.000000] BIOS-e820: [mem 0x000000008a74a000-0x000000008ada0fff] ACPI NVS +[ 0.000000] BIOS-e820: [mem 0x000000008ada1000-0x000000008b393fff] reserved +[ 0.000000] BIOS-e820: [mem 0x000000008b394000-0x000000008b3fefff] type 20 +[ 0.000000] BIOS-e820: [mem 0x000000008b3ff000-0x000000008b3fffff] usable +[ 0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved +[ 0.000000] BIOS-e820: [mem 0x00000000fe000000-0x00000000fe010fff] reserved +[ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved +[ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved +[ 0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved +[ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000106effffff] usable +[ 0.000000] NX (Execute Disable) protection: active +[ 0.000000] efi: EFI v2.40 by American Megatrends +[ 0.000000] efi: ESRT=0x8b25af98 ACPI=0x8ad5c000 ACPI 2.0=0x8ad5c000 SMBIOS=0xf05e0 MPS=0xfc9d0 +[ 0.000000] esrt: Reserving ESRT space from 0x000000008b25af98 to 0x000000008b25afd0. +[ 0.000000] SMBIOS 3.0 present. +[ 0.000000] DMI: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved +[ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable +[ 0.000000] e820: last_pfn = 0x106f000 max_arch_pfn = 0x400000000 +[ 0.000000] MTRR default type: write-back +[ 0.000000] MTRR fixed ranges enabled: +[ 0.000000] 00000-9FFFF write-back +[ 0.000000] A0000-BFFFF uncachable +[ 0.000000] C0000-FFFFF write-protect +[ 0.000000] MTRR variable ranges enabled: +[ 0.000000] 0 base 00C0000000 mask 7FC0000000 uncachable +[ 0.000000] 1 base 00A0000000 mask 7FE0000000 uncachable +[ 0.000000] 2 base 0090000000 mask 7FF0000000 uncachable +[ 0.000000] 3 base 008C000000 mask 7FFC000000 uncachable +[ 0.000000] 4 base 008B800000 mask 7FFF800000 uncachable +[ 0.000000] 5 disabled +[ 0.000000] 6 disabled +[ 0.000000] 7 disabled +[ 0.000000] 8 disabled +[ 0.000000] 9 disabled +[ 0.000000] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WC UC- WT +[ 0.000000] e820: last_pfn = 0x8b400 max_arch_pfn = 0x400000000 +[ 0.000000] found SMP MP-table at [mem 0x000fcc70-0x000fcc7f] mapped at [ffff8800000fcc70] +[ 0.000000] Scanning 1 areas for low memory corruption +[ 0.000000] Base memory trampoline at [ffff880000096000] 96000 size 24576 +[ 0.000000] Using GB pages for direct mapping +[ 0.000000] BRK [0x03201000, 0x03201fff] PGTABLE +[ 0.000000] BRK [0x03202000, 0x03202fff] PGTABLE +[ 0.000000] BRK [0x03203000, 0x03203fff] PGTABLE +[ 0.000000] BRK [0x03204000, 0x03204fff] PGTABLE +[ 0.000000] BRK [0x03205000, 0x03205fff] PGTABLE +[ 0.000000] BRK [0x03206000, 0x03206fff] PGTABLE +[ 0.000000] RAMDISK: [mem 0x33aaa000-0x35d4cfff] +[ 0.000000] ACPI: Early table checksum verification disabled +[ 0.000000] ACPI: RSDP 0x000000008AD5C000 000024 (v02 ALASKA) +[ 0.000000] ACPI: XSDT 0x000000008AD5C098 0000B4 (v01 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: FACP 0x000000008AD7E928 00010C (v05 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: DSDT 0x000000008AD5C1E8 02273A (v02 ALASKA A M I 01072009 INTL 20120913) +[ 0.000000] ACPI: FACS 0x000000008ADA0F80 000040 +[ 0.000000] ACPI: APIC 0x000000008AD7EA38 000084 (v03 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: FPDT 0x000000008AD7EAC0 000044 (v01 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: FIDT 0x000000008AD7EB08 00009C (v01 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: MCFG 0x000000008AD7EBA8 00003C (v01 ALASKA A M I 01072009 MSFT 00000097) +[ 0.000000] ACPI: HPET 0x000000008AD7EBE8 000038 (v01 ALASKA A M I 01072009 AMI. 0005000B) +[ 0.000000] ACPI: SSDT 0x000000008AD7EC20 00036D (v01 SataRe SataTabl 00001000 INTL 20120913) +[ 0.000000] ACPI: LPIT 0x000000008AD7EF90 000094 (v01 INTEL SKL 00000000 MSFT 0000005F) +[ 0.000000] ACPI: SSDT 0x000000008AD7F028 000248 (v02 INTEL sensrhub 00000000 INTL 20120913) +[ 0.000000] ACPI: SSDT 0x000000008AD7F270 002BAE (v02 INTEL PtidDevc 00001000 INTL 20120913) +[ 0.000000] ACPI: SSDT 0x000000008AD81E20 000C45 (v02 INTEL Ther_Rvp 00001000 INTL 20120913) +[ 0.000000] ACPI: DBGP 0x000000008AD82A68 000034 (v01 INTEL 00000000 MSFT 0000005F) +[ 0.000000] ACPI: DBG2 0x000000008AD82AA0 000054 (v00 INTEL 00000000 MSFT 0000005F) +[ 0.000000] ACPI: SSDT 0x000000008AD82AF8 000615 (v02 INTEL xh_rvp08 00000000 INTL 20120913) +[ 0.000000] ACPI: SSDT 0x000000008AD83110 0053B2 (v02 SaSsdt SaSsdt 00003000 INTL 20120913) +[ 0.000000] ACPI: UEFI 0x000000008AD884C8 000042 (v01 00000000 00000000) +[ 0.000000] ACPI: SSDT 0x000000008AD88510 000E9A (v02 CpuRef CpuSsdt 00003000 INTL 20120913) +[ 0.000000] ACPI: BGRT 0x000000008AD893B0 000038 (v01 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: Local APIC address 0xfee00000 +[ 0.000000] No NUMA configuration found +[ 0.000000] Faking a node at [mem 0x0000000000000000-0x000000106effffff] +[ 0.000000] NODE_DATA(0) allocated [mem 0x106eff6000-0x106effafff] +[ 0.000000] Zone ranges: +[ 0.000000] DMA [mem 0x0000000000001000-0x0000000000ffffff] +[ 0.000000] DMA32 [mem 0x0000000001000000-0x00000000ffffffff] +[ 0.000000] Normal [mem 0x0000000100000000-0x000000106effffff] +[ 0.000000] Device empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000000001000-0x0000000000057fff] +[ 0.000000] node 0: [mem 0x0000000000059000-0x000000000009efff] +[ 0.000000] node 0: [mem 0x0000000000100000-0x000000008277cfff] +[ 0.000000] node 0: [mem 0x00000000827a8000-0x00000000827f9fff] +[ 0.000000] node 0: [mem 0x000000008303b000-0x000000008a2a5fff] +[ 0.000000] node 0: [mem 0x000000008a583000-0x000000008a749fff] +[ 0.000000] node 0: [mem 0x000000008b3ff000-0x000000008b3fffff] +[ 0.000000] node 0: [mem 0x0000000100000000-0x000000106effffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000106effffff] +[ 0.000000] On node 0 totalpages: 16747423 +[ 0.000000] DMA zone: 64 pages used for memmap +[ 0.000000] DMA zone: 26 pages reserved +[ 0.000000] DMA zone: 3997 pages, LIFO batch:0 +[ 0.000000] DMA32 zone: 8753 pages used for memmap +[ 0.000000] DMA32 zone: 560130 pages, LIFO batch:31 +[ 0.000000] Normal zone: 252864 pages used for memmap +[ 0.000000] Normal zone: 16183296 pages, LIFO batch:31 +[ 0.000000] Reserving Intel graphics stolen memory at 0x8c000000-0x8fffffff +[ 0.000000] ACPI: PM-Timer IO Port: 0x1808 +[ 0.000000] ACPI: Local APIC address 0xfee00000 +[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) +[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1]) +[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1]) +[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x04] high edge lint[0x1]) +[ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-119 +[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) +[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) +[ 0.000000] ACPI: IRQ0 used by override. +[ 0.000000] ACPI: IRQ9 used by override. +[ 0.000000] Using ACPI (MADT) for SMP configuration information +[ 0.000000] ACPI: HPET id: 0x8086a701 base: 0xfed00000 +[ 0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs +[ 0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x00058000-0x00058fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff] +[ 0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000fffff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8277d000-0x8277dfff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8277e000-0x827a7fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x827fa000-0x8303afff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8a2a6000-0x8a582fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8a74a000-0x8ada0fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8ada1000-0x8b393fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8b394000-0x8b3fefff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8b400000-0x8bffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8c000000-0x8fffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0x90000000-0xdfffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xe0000000-0xefffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xf0000000-0xfdffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfe000000-0xfe010fff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfe011000-0xfebfffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfec00000-0xfec00fff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfec01000-0xfedfffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfee00000-0xfee00fff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfee01000-0xfeffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xff000000-0xffffffff] +[ 0.000000] e820: [mem 0x90000000-0xdfffffff] available for PCI devices +[ 0.000000] Booting paravirtualized kernel on bare hardware +[ 0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns +[ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:4 nr_node_ids:1 +[ 0.000000] PERCPU: Embedded 33 pages/cpu @ffff88106ec00000 s98008 r8192 d28968 u524288 +[ 0.000000] pcpu-alloc: s98008 r8192 d28968 u524288 alloc=1*2097152 +[ 0.000000] pcpu-alloc: [0] 0 1 2 3 +[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 16485716 +[ 0.000000] Policy zone: Normal +[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-42-generic.efi.signed root=UUID=f5bf218f-1f62-4a63-bcfe-1bdb8e06f01c ro quiet splash vt.handoff=7 +[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) +[ 0.000000] Calgary: detecting Calgary via BIOS EBDA area +[ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! +[ 0.000000] Memory: 65700716K/66989692K available (8409K kernel code, 1283K rwdata, 3944K rodata, 1480K init, 1292K bss, 1288976K reserved, 0K cma-reserved) +[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 +[ 0.000000] Hierarchical RCU implementation. +[ 0.000000] Build-time adjustment of leaf fanout to 64. +[ 0.000000] RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4. +[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=4 +[ 0.000000] NR_IRQS:16640 nr_irqs:1024 16 +[ 0.000000] spurious 8259A interrupt: IRQ7. +[ 0.000000] vt handoff: transparent VT on vt#7 +[ 0.000000] Console: colour dummy device 80x25 +[ 0.000000] console [tty0] enabled +[ 0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635855245 ns +[ 0.000000] hpet clockevent registered +[ 0.000000] tsc: PIT calibration matches HPET. 1 loops +[ 0.000000] tsc: Detected 3311.929 MHz processor +[ 0.000021] Calibrating delay loop (skipped), value calculated using timer frequency.. 6623.85 BogoMIPS (lpj=13247716) +[ 0.000023] pid_max: default: 32768 minimum: 301 +[ 0.000026] ACPI: Core revision 20150930 +[ 0.018754] ACPI Error: [\_SB_.PCI0.XHC_.RHUB.HS11] Namespace lookup failure, AE_NOT_FOUND (20150930/dswload-210) +[ 0.018757] ACPI Exception: AE_NOT_FOUND, During name lookup/catalog (20150930/psobject-227) +[ 0.018786] ACPI Exception: AE_NOT_FOUND, (SSDT:xh_rvp08) while loading table (20150930/tbxfload-193) +[ 0.024980] ACPI Error: 1 table load failures, 7 successful (20150930/tbxfload-214) +[ 0.026885] Security Framework initialized +[ 0.026886] Yama: becoming mindful. +[ 0.026895] AppArmor: AppArmor initialized +[ 0.029456] Dentry cache hash table entries: 8388608 (order: 14, 67108864 bytes) +[ 0.037862] Inode-cache hash table entries: 4194304 (order: 13, 33554432 bytes) +[ 0.041500] Mount-cache hash table entries: 131072 (order: 8, 1048576 bytes) +[ 0.041541] Mountpoint-cache hash table entries: 131072 (order: 8, 1048576 bytes) +[ 0.041817] Initializing cgroup subsys io +[ 0.041819] Initializing cgroup subsys memory +[ 0.041823] Initializing cgroup subsys devices +[ 0.041824] Initializing cgroup subsys freezer +[ 0.041825] Initializing cgroup subsys net_cls +[ 0.041827] Initializing cgroup subsys perf_event +[ 0.041828] Initializing cgroup subsys net_prio +[ 0.041830] Initializing cgroup subsys hugetlb +[ 0.041831] Initializing cgroup subsys pids +[ 0.041848] CPU: Physical Processor ID: 0 +[ 0.041849] CPU: Processor Core ID: 0 +[ 0.042757] mce: CPU supports 10 MCE banks +[ 0.042771] CPU0: Thermal monitoring enabled (TM1) +[ 0.042778] process: using mwait in idle threads +[ 0.042780] Last level iTLB entries: 4KB 128, 2MB 8, 4MB 8 +[ 0.042781] Last level dTLB entries: 4KB 64, 2MB 0, 4MB 0, 1GB 4 +[ 0.043036] Freeing SMP alternatives memory: 32K (ffffffff820b4000 - ffffffff820bc000) +[ 0.047017] ftrace: allocating 32007 entries in 126 pages +[ 0.056640] smpboot: Max logical packages: 1 +[ 0.056642] smpboot: APIC(0) Converting physical 0 to logical package 0 +[ 0.057900] x2apic: IRQ remapping doesn't support X2APIC mode +[ 0.060976] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0 +[ 0.100664] TSC deadline timer enabled +[ 0.100669] smpboot: CPU0: Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz (family: 0x6, model: 0x5e, stepping: 0x3) +[ 0.100680] Performance Events: PEBS fmt3+, 32-deep LBR, Skylake events, full-width counters, Intel PMU driver. +[ 0.100701] ... version: 4 +[ 0.100702] ... bit width: 48 +[ 0.100702] ... generic registers: 8 +[ 0.100703] ... value mask: 0000ffffffffffff +[ 0.100703] ... max period: 0000ffffffffffff +[ 0.100704] ... fixed-purpose events: 3 +[ 0.100705] ... event mask: 00000007000000ff +[ 0.101254] x86: Booting SMP configuration: +[ 0.101255] .... node #0, CPUs: #1 +[ 0.104611] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter. +[ 0.104654] #2 #3 +[ 0.111168] x86: Booted up 1 node, 4 CPUs +[ 0.111171] smpboot: Total of 4 processors activated (26495.43 BogoMIPS) +[ 0.113690] devtmpfs: initialized +[ 0.113728] memory block size : 128MB +[ 0.118576] evm: security.selinux +[ 0.118577] evm: security.SMACK64 +[ 0.118578] evm: security.SMACK64EXEC +[ 0.118578] evm: security.SMACK64TRANSMUTE +[ 0.118579] evm: security.SMACK64MMAP +[ 0.118580] evm: security.ima +[ 0.118580] evm: security.capability +[ 0.118618] PM: Registering ACPI NVS region [mem 0x8277d000-0x8277dfff] (4096 bytes) +[ 0.118618] PM: Registering ACPI NVS region [mem 0x8a74a000-0x8ada0fff] (6647808 bytes) +[ 0.118711] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.118768] pinctrl core: initialized pinctrl subsystem +[ 0.118914] RTC time: 8:20:37, date: 10/23/16 +[ 0.119707] NET: Registered protocol family 16 +[ 0.137549] cpuidle: using governor ladder +[ 0.149549] cpuidle: using governor menu +[ 0.149552] PCCT header not found. +[ 0.149597] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it +[ 0.149598] ACPI: bus type PCI registered +[ 0.149599] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 +[ 0.149647] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) +[ 0.149649] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 +[ 0.149657] PCI: Using configuration type 1 for base access +[ 0.161749] ACPI: Added _OSI(Module Device) +[ 0.161750] ACPI: Added _OSI(Processor Device) +[ 0.161751] ACPI: Added _OSI(3.0 _SCP Extensions) +[ 0.161752] ACPI: Added _OSI(Processor Aggregator Device) +[ 0.166925] ACPI: Executed 21 blocks of module-level executable AML code +[ 0.171116] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored +[ 0.173364] ACPI: Dynamic OEM Table Load: +[ 0.173370] ACPI: SSDT 0xFFFF8810270E3000 0006C3 (v02 PmRef Cpu0Ist 00003000 INTL 20120913) +[ 0.173993] ACPI: \_PR_.CPU0: _OSC native thermal LVT Acked +[ 0.175071] ACPI: Dynamic OEM Table Load: +[ 0.175075] ACPI: SSDT 0xFFFF88102712D800 00037F (v02 PmRef Cpu0Cst 00003001 INTL 20120913) +[ 0.176168] ACPI: Dynamic OEM Table Load: +[ 0.176172] ACPI: SSDT 0xFFFF8810270E3800 0005AA (v02 PmRef ApIst 00003000 INTL 20120913) +[ 0.176916] ACPI: Dynamic OEM Table Load: +[ 0.176919] ACPI: SSDT 0xFFFF881027161600 000119 (v02 PmRef ApCst 00003000 INTL 20120913) +[ 0.178988] ACPI: Interpreter enabled +[ 0.178995] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20150930/hwxface-580) +[ 0.179002] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20150930/hwxface-580) +[ 0.179017] ACPI: (supports S0 S3 S4 S5) +[ 0.179018] ACPI: Using IOAPIC for interrupt routing +[ 0.179041] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug +[ 0.180449] ACPI: Power Resource [PG00] (on) +[ 0.180723] ACPI: Power Resource [PG01] (on) +[ 0.180965] ACPI: Power Resource [PG02] (on) +[ 0.182031] ACPI: Power Resource [WRST] (off) +[ 0.182245] ACPI: Power Resource [WRST] (off) +[ 0.182464] ACPI: Power Resource [WRST] (off) +[ 0.182675] ACPI: Power Resource [WRST] (off) +[ 0.182887] ACPI: Power Resource [WRST] (off) +[ 0.183100] ACPI: Power Resource [WRST] (off) +[ 0.183316] ACPI: Power Resource [WRST] (off) +[ 0.183530] ACPI: Power Resource [WRST] (off) +[ 0.183742] ACPI: Power Resource [WRST] (off) +[ 0.183954] ACPI: Power Resource [WRST] (off) +[ 0.184167] ACPI: Power Resource [WRST] (off) +[ 0.184379] ACPI: Power Resource [WRST] (off) +[ 0.184591] ACPI: Power Resource [WRST] (off) +[ 0.184864] ACPI: Power Resource [WRST] (off) +[ 0.185077] ACPI: Power Resource [WRST] (off) +[ 0.185290] ACPI: Power Resource [WRST] (off) +[ 0.185504] ACPI: Power Resource [WRST] (off) +[ 0.185719] ACPI: Power Resource [WRST] (off) +[ 0.185940] ACPI: Power Resource [WRST] (off) +[ 0.186152] ACPI: Power Resource [WRST] (off) +[ 0.190920] ACPI: Power Resource [FN00] (off) +[ 0.190968] ACPI: Power Resource [FN01] (off) +[ 0.191014] ACPI: Power Resource [FN02] (off) +[ 0.191058] ACPI: Power Resource [FN03] (off) +[ 0.191103] ACPI: Power Resource [FN04] (off) +[ 0.191885] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe]) +[ 0.191889] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] +[ 0.191909] \_SB_.PCI0:_OSC invalid UUID +[ 0.191910] _OSC request data:1 1f 0 +[ 0.191912] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM +[ 0.192394] PCI host bridge to bus 0000:00 +[ 0.192396] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window] +[ 0.192397] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window] +[ 0.192398] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window] +[ 0.192399] pci_bus 0000:00: root bus resource [mem 0x91000000-0xdfffffff window] +[ 0.192400] pci_bus 0000:00: root bus resource [mem 0xfd000000-0xfe7fffff window] +[ 0.192401] pci_bus 0000:00: root bus resource [bus 00-fe] +[ 0.192407] pci 0000:00:00.0: [8086:191f] type 00 class 0x060000 +[ 0.192620] pci 0000:00:02.0: [8086:1912] type 00 class 0x030000 +[ 0.192630] pci 0000:00:02.0: reg 0x10: [mem 0xde000000-0xdeffffff 64bit] +[ 0.192634] pci 0000:00:02.0: reg 0x18: [mem 0xc0000000-0xcfffffff 64bit pref] +[ 0.192637] pci 0000:00:02.0: reg 0x20: [io 0xf000-0xf03f] +[ 0.192737] pci 0000:00:08.0: [8086:1911] type 00 class 0x088000 +[ 0.192747] pci 0000:00:08.0: reg 0x10: [mem 0xdf152000-0xdf152fff 64bit] +[ 0.192857] pci 0000:00:14.0: [8086:a12f] type 00 class 0x0c0330 +[ 0.192880] pci 0000:00:14.0: reg 0x10: [mem 0xdf130000-0xdf13ffff 64bit] +[ 0.192926] pci 0000:00:14.0: PME# supported from D3hot D3cold +[ 0.193000] pci 0000:00:14.0: System wakeup disabled by ACPI +[ 0.193027] pci 0000:00:14.2: [8086:a131] type 00 class 0x118000 +[ 0.193049] pci 0000:00:14.2: reg 0x10: [mem 0xdf151000-0xdf151fff 64bit] +[ 0.193203] pci 0000:00:15.0: [8086:a160] type 00 class 0x118000 +[ 0.193259] pci 0000:00:15.0: reg 0x10: [mem 0xdf150000-0xdf150fff 64bit] +[ 0.193471] pci 0000:00:15.1: [8086:a161] type 00 class 0x118000 +[ 0.193527] pci 0000:00:15.1: reg 0x10: [mem 0xdf14f000-0xdf14ffff 64bit] +[ 0.193726] pci 0000:00:16.0: [8086:a13a] type 00 class 0x078000 +[ 0.193775] pci 0000:00:16.0: reg 0x10: [mem 0xdf14e000-0xdf14efff 64bit] +[ 0.193862] pci 0000:00:16.0: PME# supported from D3hot +[ 0.193975] pci 0000:00:17.0: [8086:a102] type 00 class 0x010601 +[ 0.193993] pci 0000:00:17.0: reg 0x10: [mem 0xdf148000-0xdf149fff] +[ 0.193999] pci 0000:00:17.0: reg 0x14: [mem 0xdf14d000-0xdf14d0ff] +[ 0.194005] pci 0000:00:17.0: reg 0x18: [io 0xf090-0xf097] +[ 0.194011] pci 0000:00:17.0: reg 0x1c: [io 0xf080-0xf083] +[ 0.194017] pci 0000:00:17.0: reg 0x20: [io 0xf060-0xf07f] +[ 0.194023] pci 0000:00:17.0: reg 0x24: [mem 0xdf14c000-0xdf14c7ff] +[ 0.194048] pci 0000:00:17.0: PME# supported from D3hot +[ 0.194143] pci 0000:00:1b.0: [8086:a167] type 01 class 0x060400 +[ 0.194190] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold +[ 0.194271] pci 0000:00:1b.0: System wakeup disabled by ACPI +[ 0.194321] pci 0000:00:1d.0: [8086:a118] type 01 class 0x060400 +[ 0.194365] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold +[ 0.194440] pci 0000:00:1d.0: System wakeup disabled by ACPI +[ 0.194465] pci 0000:00:1d.2: [8086:a11a] type 01 class 0x060400 +[ 0.194512] pci 0000:00:1d.2: PME# supported from D0 D3hot D3cold +[ 0.194590] pci 0000:00:1d.2: System wakeup disabled by ACPI +[ 0.194668] pci 0000:00:1e.0: [8086:a127] type 00 class 0x118000 +[ 0.194722] pci 0000:00:1e.0: reg 0x10: [mem 0xdf14b000-0xdf14bfff 64bit] +[ 0.194920] pci 0000:00:1f.0: [8086:a145] type 00 class 0x060100 +[ 0.195093] pci 0000:00:1f.2: [8086:a121] type 00 class 0x058000 +[ 0.195102] pci 0000:00:1f.2: reg 0x10: [mem 0xdf144000-0xdf147fff] +[ 0.195217] pci 0000:00:1f.3: [8086:a170] type 00 class 0x040300 +[ 0.195246] pci 0000:00:1f.3: reg 0x10: [mem 0xdf140000-0xdf143fff 64bit] +[ 0.195268] pci 0000:00:1f.3: reg 0x20: [mem 0xdf120000-0xdf12ffff 64bit] +[ 0.195297] pci 0000:00:1f.3: PME# supported from D3hot D3cold +[ 0.195401] pci 0000:00:1f.3: System wakeup disabled by ACPI +[ 0.195431] pci 0000:00:1f.4: [8086:a123] type 00 class 0x0c0500 +[ 0.195484] pci 0000:00:1f.4: reg 0x10: [mem 0xdf14a000-0xdf14a0ff 64bit] +[ 0.195553] pci 0000:00:1f.4: reg 0x20: [io 0xf040-0xf05f] +[ 0.195704] pci 0000:00:1f.6: [8086:15b8] type 00 class 0x020000 +[ 0.195739] pci 0000:00:1f.6: reg 0x10: [mem 0xdf100000-0xdf11ffff] +[ 0.195826] pci 0000:00:1f.6: PME# supported from D0 D3hot D3cold +[ 0.195897] pci 0000:00:1f.6: System wakeup disabled by ACPI +[ 0.195986] pci 0000:01:00.0: [144d:a802] type 00 class 0x010802 +[ 0.196012] pci 0000:01:00.0: reg 0x10: [mem 0xdf010000-0xdf013fff 64bit] +[ 0.196018] pci 0000:01:00.0: reg 0x18: [io 0xe000-0xe0ff] +[ 0.196036] pci 0000:01:00.0: reg 0x30: [mem 0xdf000000-0xdf00ffff pref] +[ 0.196129] pci 0000:01:00.0: System wakeup disabled by ACPI +[ 0.201880] pci 0000:00:1b.0: PCI bridge to [bus 01] +[ 0.201882] pci 0000:00:1b.0: bridge window [io 0xe000-0xefff] +[ 0.201884] pci 0000:00:1b.0: bridge window [mem 0xdf000000-0xdf0fffff] +[ 0.201950] acpiphp: Slot [1] registered +[ 0.201953] pci 0000:00:1d.0: PCI bridge to [bus 02] +[ 0.202030] pci 0000:03:00.0: [1b21:1080] type 01 class 0x060400 +[ 0.202141] pci 0000:03:00.0: supports D1 D2 +[ 0.202142] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold +[ 0.202190] pci 0000:03:00.0: System wakeup disabled by ACPI +[ 0.209881] pci 0000:00:1d.2: PCI bridge to [bus 03-04] +[ 0.209985] pci 0000:03:00.0: PCI bridge to [bus 04] +[ 0.211306] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.211341] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 *10 11 12 14 15) +[ 0.211376] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.211410] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.211443] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.211477] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.211510] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.211543] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.211820] ACPI: Enabled 5 GPEs in block 00 to 7F +[ 0.211889] vgaarb: setting as boot device: PCI:0000:00:02.0 +[ 0.211890] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none +[ 0.211892] vgaarb: loaded +[ 0.211893] vgaarb: bridge control possible 0000:00:02.0 +[ 0.212017] SCSI subsystem initialized +[ 0.212035] libata version 3.00 loaded. +[ 0.212047] ACPI: bus type USB registered +[ 0.212058] usbcore: registered new interface driver usbfs +[ 0.212063] usbcore: registered new interface driver hub +[ 0.212071] usbcore: registered new device driver usb +[ 0.212178] PCI: Using ACPI for IRQ routing +[ 0.240042] PCI: pci_cache_line_size set to 64 bytes +[ 0.240144] e820: reserve RAM buffer [mem 0x00058000-0x0005ffff] +[ 0.240145] e820: reserve RAM buffer [mem 0x0009f000-0x0009ffff] +[ 0.240146] e820: reserve RAM buffer [mem 0x8277d000-0x83ffffff] +[ 0.240147] e820: reserve RAM buffer [mem 0x827fa000-0x83ffffff] +[ 0.240147] e820: reserve RAM buffer [mem 0x8a2a6000-0x8bffffff] +[ 0.240148] e820: reserve RAM buffer [mem 0x8a74a000-0x8bffffff] +[ 0.240149] e820: reserve RAM buffer [mem 0x8b400000-0x8bffffff] +[ 0.240150] e820: reserve RAM buffer [mem 0x106f000000-0x106fffffff] +[ 0.240222] NetLabel: Initializing +[ 0.240222] NetLabel: domain hash size = 128 +[ 0.240223] NetLabel: protocols = UNLABELED CIPSOv4 +[ 0.240230] NetLabel: unlabeled traffic allowed by default +[ 0.240304] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0 +[ 0.240307] hpet0: 8 comparators, 64-bit 24.000000 MHz counter +[ 0.242342] amd_nb: Cannot enumerate AMD northbridges +[ 0.242353] clocksource: Switched to clocksource hpet +[ 0.246127] AppArmor: AppArmor Filesystem Enabled +[ 0.246157] pnp: PnP ACPI init +[ 0.246337] system 00:00: [io 0x0a00-0x0a0f] has been reserved +[ 0.246386] system 00:00: [io 0x0a10-0x0a1f] has been reserved +[ 0.246388] system 00:00: [io 0x0a20-0x0a2f] has been reserved +[ 0.246389] system 00:00: [io 0x0a30-0x0a3f] has been reserved +[ 0.246391] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.246490] system 00:01: [io 0x0680-0x069f] has been reserved +[ 0.246491] system 00:01: [io 0xffff] has been reserved +[ 0.246492] system 00:01: [io 0xffff] has been reserved +[ 0.246493] system 00:01: [io 0xffff] has been reserved +[ 0.246494] system 00:01: [io 0x1800-0x18fe] could not be reserved +[ 0.246495] system 00:01: [io 0x164e-0x164f] has been reserved +[ 0.246497] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.246553] system 00:02: [io 0x0800-0x087f] has been reserved +[ 0.246554] system 00:02: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.246567] pnp 00:03: Plug and Play ACPI device, IDs PNP0b00 (active) +[ 0.246591] system 00:04: [io 0x1854-0x1857] has been reserved +[ 0.246592] system 00:04: Plug and Play ACPI device, IDs INT3f0d PNP0c02 (active) +[ 0.246728] system 00:05: [mem 0xfed10000-0xfed17fff] has been reserved +[ 0.246729] system 00:05: [mem 0xfed18000-0xfed18fff] has been reserved +[ 0.246730] system 00:05: [mem 0xfed19000-0xfed19fff] has been reserved +[ 0.246731] system 00:05: [mem 0xe0000000-0xefffffff] has been reserved +[ 0.246733] system 00:05: [mem 0xfed20000-0xfed3ffff] has been reserved +[ 0.246734] system 00:05: [mem 0xfed90000-0xfed93fff] has been reserved +[ 0.246735] system 00:05: [mem 0xfed45000-0xfed8ffff] has been reserved +[ 0.246736] system 00:05: [mem 0xff000000-0xffffffff] has been reserved +[ 0.246737] system 00:05: [mem 0xfee00000-0xfeefffff] could not be reserved +[ 0.246738] system 00:05: [mem 0xdffc0000-0xdffdffff] has been reserved +[ 0.246739] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.246765] system 00:06: [mem 0xfd000000-0xfdabffff] has been reserved +[ 0.246766] system 00:06: [mem 0xfdad0000-0xfdadffff] has been reserved +[ 0.246767] system 00:06: [mem 0xfdb00000-0xfdffffff] has been reserved +[ 0.246768] system 00:06: [mem 0xfe000000-0xfe01ffff] could not be reserved +[ 0.246769] system 00:06: [mem 0xfe036000-0xfe03bfff] has been reserved +[ 0.246770] system 00:06: [mem 0xfe03d000-0xfe3fffff] has been reserved +[ 0.246772] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.246950] system 00:07: [io 0xff00-0xfffe] has been reserved +[ 0.246952] system 00:07: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.247560] system 00:08: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.248106] pnp: PnP ACPI: found 9 devices +[ 0.256060] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns +[ 0.256088] pci 0000:00:1b.0: PCI bridge to [bus 01] +[ 0.256090] pci 0000:00:1b.0: bridge window [io 0xe000-0xefff] +[ 0.256093] pci 0000:00:1b.0: bridge window [mem 0xdf000000-0xdf0fffff] +[ 0.256097] pci 0000:00:1d.0: PCI bridge to [bus 02] +[ 0.256104] pci 0000:03:00.0: PCI bridge to [bus 04] +[ 0.256117] pci 0000:00:1d.2: PCI bridge to [bus 03-04] +[ 0.256124] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window] +[ 0.256125] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window] +[ 0.256126] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window] +[ 0.256127] pci_bus 0000:00: resource 7 [mem 0x91000000-0xdfffffff window] +[ 0.256128] pci_bus 0000:00: resource 8 [mem 0xfd000000-0xfe7fffff window] +[ 0.256129] pci_bus 0000:01: resource 0 [io 0xe000-0xefff] +[ 0.256130] pci_bus 0000:01: resource 1 [mem 0xdf000000-0xdf0fffff] +[ 0.256148] NET: Registered protocol family 2 +[ 0.256315] TCP established hash table entries: 524288 (order: 10, 4194304 bytes) +[ 0.256733] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) +[ 0.256816] TCP: Hash tables configured (established 524288 bind 65536) +[ 0.256850] UDP hash table entries: 32768 (order: 8, 1048576 bytes) +[ 0.256972] UDP-Lite hash table entries: 32768 (order: 8, 1048576 bytes) +[ 0.257081] NET: Registered protocol family 1 +[ 0.257091] pci 0000:00:02.0: Video device with shadowed ROM +[ 0.257293] PCI: CLS 0 bytes, default 64 +[ 0.257322] Trying to unpack rootfs image as initramfs... +[ 0.635884] Freeing initrd memory: 35468K (ffff880033aaa000 - ffff880035d4d000) +[ 0.635906] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) +[ 0.635908] software IO TLB [mem 0x7e3ab000-0x823ab000] (64MB) mapped at [ffff88007e3ab000-ffff8800823aafff] +[ 0.636030] Scanning for low memory corruption every 60 seconds +[ 0.636290] futex hash table entries: 1024 (order: 4, 65536 bytes) +[ 0.636309] audit: initializing netlink subsys (disabled) +[ 0.636319] audit: type=2000 audit(1477210837.640:1): initialized +[ 0.636575] Initialise system trusted keyring +[ 0.636708] HugeTLB registered 1 GB page size, pre-allocated 0 pages +[ 0.636708] HugeTLB registered 2 MB page size, pre-allocated 0 pages +[ 0.637581] zbud: loaded +[ 0.637737] VFS: Disk quotas dquot_6.6.0 +[ 0.637758] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) +[ 0.637913] squashfs: version 4.0 (2009/01/31) Phillip Lougher +[ 0.638102] fuse init (API version 7.23) +[ 0.638199] Key type big_key registered +[ 0.638219] Allocating IMA MOK and blacklist keyrings. +[ 0.639514] Key type asymmetric registered +[ 0.639517] Asymmetric key parser 'x509' registered +[ 0.639545] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249) +[ 0.639623] io scheduler noop registered +[ 0.639624] io scheduler deadline registered (default) +[ 0.639644] io scheduler cfq registered +[ 0.639978] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 +[ 0.639983] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 +[ 0.640005] efifb: probing for efifb +[ 0.640014] efifb: framebuffer at 0xc0000000, mapped to 0xffffc90006c00000, using 3072k, total 3072k +[ 0.640015] efifb: mode is 1024x768x32, linelength=4096, pages=1 +[ 0.640015] efifb: scrolling: redraw +[ 0.640016] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0 +[ 0.640102] Console: switching to colour frame buffer device 128x48 +[ 0.640110] fb0: EFI VGA frame buffer device +[ 0.640115] intel_idle: MWAIT substates: 0x142120 +[ 0.640116] intel_idle: v0.4.1 model 0x5E +[ 0.640117] intel_idle: lapic_timer_reliable_states 0xffffffff +[ 0.640299] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input0 +[ 0.640302] ACPI: Sleep Button [SLPB] +[ 0.640323] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1 +[ 0.640324] ACPI: Power Button [PWRB] +[ 0.640345] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 +[ 0.640346] ACPI: Power Button [PWRF] +[ 0.640900] thermal LNXTHERM:00: registered as thermal_zone0 +[ 0.640901] ACPI: Thermal Zone [TZ00] (28 C) +[ 0.640981] thermal LNXTHERM:01: registered as thermal_zone1 +[ 0.640981] ACPI: Thermal Zone [TZ01] (30 C) +[ 0.641007] GHES: HEST is not enabled! +[ 0.641108] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled +[ 0.661661] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A +[ 0.682254] serial8250: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A +[ 0.684886] Linux agpgart interface v0.103 +[ 0.688423] brd: module loaded +[ 0.690004] loop: module loaded +[ 0.690122] libphy: Fixed MDIO Bus: probed +[ 0.690124] tun: Universal TUN/TAP device driver, 1.6 +[ 0.690124] tun: (C) 1999-2004 Max Krasnyansky +[ 0.690173] PPP generic driver version 2.4.2 +[ 0.690236] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver +[ 0.690238] ehci-pci: EHCI PCI platform driver +[ 0.690244] ehci-platform: EHCI generic platform driver +[ 0.690250] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver +[ 0.690252] ohci-pci: OHCI PCI platform driver +[ 0.690259] ohci-platform: OHCI generic platform driver +[ 0.690263] uhci_hcd: USB Universal Host Controller Interface driver +[ 0.690419] xhci_hcd 0000:00:14.0: xHCI Host Controller +[ 0.690423] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1 +[ 0.691517] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x00109810 +[ 0.691521] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported +[ 0.691577] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 +[ 0.691578] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 +[ 0.691579] usb usb1: Product: xHCI Host Controller +[ 0.691579] usb usb1: Manufacturer: Linux 4.4.0-42-generic xhci-hcd +[ 0.691580] usb usb1: SerialNumber: 0000:00:14.0 +[ 0.691667] hub 1-0:1.0: USB hub found +[ 0.691681] hub 1-0:1.0: 16 ports detected +[ 0.699025] xhci_hcd 0000:00:14.0: xHCI Host Controller +[ 0.699027] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2 +[ 0.699045] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003 +[ 0.699046] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 +[ 0.699046] usb usb2: Product: xHCI Host Controller +[ 0.699047] usb usb2: Manufacturer: Linux 4.4.0-42-generic xhci-hcd +[ 0.699048] usb usb2: SerialNumber: 0000:00:14.0 +[ 0.699153] hub 2-0:1.0: USB hub found +[ 0.699163] hub 2-0:1.0: 10 ports detected +[ 0.703847] i8042: PNP: No PS/2 controller found. Probing ports directly. +[ 0.707209] serio: i8042 KBD port at 0x60,0x64 irq 1 +[ 0.707212] serio: i8042 AUX port at 0x60,0x64 irq 12 +[ 0.707401] mousedev: PS/2 mouse device common for all mice +[ 0.707745] rtc_cmos 00:03: RTC can wake from S4 +[ 0.708160] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 +[ 0.708240] rtc_cmos 00:03: alarms up to one month, y3k, 242 bytes nvram, hpet irqs +[ 0.708245] i2c /dev entries driver +[ 0.708275] device-mapper: uevent: version 1.0.3 +[ 0.708388] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@redhat.com +[ 0.708401] Intel P-state driver initializing. +[ 0.708403] intel_pstate: HWP enabled +[ 0.709291] ledtrig-cpu: registered to indicate activity on CPUs +[ 0.709294] EFI Variables Facility v0.08 2004-May-17 +[ 0.714723] NET: Registered protocol family 10 +[ 0.714993] NET: Registered protocol family 17 +[ 0.715015] Key type dns_resolver registered +[ 0.715231] microcode: CPU0 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.715284] microcode: CPU1 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.715338] microcode: CPU2 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.715356] microcode: CPU3 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.715447] microcode: Microcode Update Driver: v2.01 , Peter Oruba +[ 0.716063] registered taskstats version 1 +[ 0.716073] Loading compiled-in X.509 certificates +[ 0.716488] Loaded X.509 cert 'Build time autogenerated kernel key: e837129128998c98ce5a834cc756a195b6db2f40' +[ 0.716500] zswap: loaded using pool lzo/zbud +[ 0.718196] Key type trusted registered +[ 0.721807] Key type encrypted registered +[ 0.721810] AppArmor: AppArmor sha1 policy hashing enabled +[ 0.721812] ima: No TPM chip found, activating TPM-bypass! +[ 0.721824] evm: HMAC attrs: 0x1 +[ 0.722715] Magic number: 4:870:321 +[ 0.722742] tty tty46: hash matches +[ 0.722749] pci 0000:00:02.0: hash matches +[ 0.722795] memory memory175: hash matches +[ 0.723019] rtc_cmos 00:03: setting system clock to 2016-10-23 08:20:38 UTC (1477210838) +[ 0.723250] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found +[ 0.723251] EDD information not available. +[ 0.723314] PM: Hibernation image not present or could not be loaded. +[ 0.724203] Freeing unused kernel memory: 1480K (ffffffff81f42000 - ffffffff820b4000) +[ 0.724204] Write protecting the kernel read-only data: 14336k +[ 0.724824] Freeing unused kernel memory: 1820K (ffff880002839000 - ffff880002a00000) +[ 0.725165] Freeing unused kernel memory: 152K (ffff880002dda000 - ffff880002e00000) +[ 0.732081] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.732124] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.732131] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.732371] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.732396] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.732524] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.732550] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.732576] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.732600] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.732626] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.754986] FUJITSU Extended Socket Network Device Driver - version 1.0 - Copyright (c) 2015 FUJITSU LIMITED +[ 0.762026] wmi: Mapper loaded +[ 0.775311] hidraw: raw HID events driver (C) Jiri Kosina +[ 0.780566] ahci 0000:00:17.0: version 3.0 +[ 0.781076] nvme 0000:01:00.0: enabling device (0000 -> 0002) +[ 0.781484] [drm] Initialized drm 1.1.0 20060810 +[ 0.781649] pps_core: LinuxPPS API ver. 1 registered +[ 0.781650] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti +[ 0.782816] PTP clock support registered +[ 0.785406] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k +[ 0.785406] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. +[ 0.794522] ahci 0000:00:17.0: AHCI 0001.0301 32 slots 4 ports 6 Gbps 0xf impl SATA mode +[ 0.794525] ahci 0000:00:17.0: flags: 64bit ncq sntf led clo only pio slum part ems deso sadm sds apst +[ 0.818980] scsi host0: ahci +[ 0.819297] scsi host1: ahci +[ 0.819576] scsi host2: ahci +[ 0.819854] scsi host3: ahci +[ 0.819948] ata1: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c100 irq 313 +[ 0.819949] ata2: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c180 irq 313 +[ 0.819953] ata3: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c200 irq 313 +[ 0.819954] ata4: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c280 irq 313 +[ 0.820195] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode +[ 1.124436] e1000e 0000:00:1f.6 eth0: registered PHC clock +[ 1.124438] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) d8:cb:8a:c4:3a:78 +[ 1.124439] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection +[ 1.124520] e1000e 0000:00:1f.6 eth0: MAC: 12, PHY: 12, PBA No: FFFFFF-0FF +[ 1.125190] e1000e 0000:00:1f.6 enp0s31f6: renamed from eth0 +[ 1.125925] [drm] Memory usable by graphics device = 4096M +[ 1.125927] checking generic (c0000000 300000) vs hw (c0000000 10000000) +[ 1.125928] fb: switching to inteldrmfb from EFI VGA +[ 1.125943] Console: switching to colour dummy device 80x25 +[ 1.126165] [drm] Replacing VGA console driver +[ 1.131892] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). +[ 1.131893] [drm] Driver supports precise vblank timestamp query. +[ 1.138498] ata4: SATA link down (SStatus 4 SControl 300) +[ 1.138578] ata3: SATA link down (SStatus 4 SControl 300) +[ 1.138606] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300) +[ 1.139303] ata2.00: ATA-9: WDC WD10EZEX-00BN5A0, 01.01A01, max UDMA/133 +[ 1.139304] ata2.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA +[ 1.140185] ata2.00: configured for UDMA/133 +[ 1.140636] [drm] Finished loading i915/skl_dmc_ver1.bin (v1.26) +[ 1.142662] ata1: SATA link down (SStatus 4 SControl 300) +[ 1.143145] scsi 1:0:0:0: Direct-Access ATA WDC WD10EZEX-00B 1A01 PQ: 0 ANSI: 5 +[ 1.143482] sd 1:0:0:0: Attached scsi generic sg0 type 0 +[ 1.143567] sd 1:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB) +[ 1.143568] sd 1:0:0:0: [sda] 4096-byte physical blocks +[ 1.143723] sd 1:0:0:0: [sda] Write Protect is off +[ 1.143724] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00 +[ 1.143885] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA +[ 1.144682] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem +[ 1.153831] [drm] failed to retrieve link info, disabling eDP +[ 1.158554] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) +[ 1.158884] acpi device:0f: registered as cooling_device9 +[ 1.158933] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input6 +[ 1.159036] [drm] Initialized i915_bpo 1.6.0 20160425 for 0000:00:02.0 on minor 0 +[ 1.207544] sda: sda1 sda2 sda3 +[ 1.208885] sd 1:0:0:0: [sda] Attached SCSI disk +[ 1.300796] fbcon: inteldrmfb (fb0) is primary device +[ 1.300841] Console: switching to colour frame buffer device 160x64 +[ 1.300852] i915_bpo 0000:00:02.0: fb0: inteldrmfb frame buffer device +[ 1.634454] tsc: Refined TSC clocksource calibration: 3311.995 MHz +[ 1.634456] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x2fbd8f86518, max_idle_ns: 440795223266 ns +[ 2.634942] clocksource: Switched to clocksource tsc +[ 2.810846] [drm] RC6 on +[ 2.890503] random: nonblocking pool is initialized +[ 14.712329] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) +[ 15.617471] systemd[1]: systemd 229 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN) +[ 15.617545] systemd[1]: Detected architecture x86-64. +[ 15.625182] systemd[1]: Set hostname to . +[ 17.409293] systemd[1]: Reached target User and Group Name Lookups. +[ 17.409333] systemd[1]: Started Forward Password Requests to Wall Directory Watch. +[ 17.409378] systemd[1]: Created slice System Slice. +[ 17.409413] systemd[1]: Created slice system-getty.slice. +[ 17.409436] systemd[1]: Listening on Journal Socket. +[ 17.409454] systemd[1]: Listening on udev Control Socket. +[ 17.409480] systemd[1]: Created slice User and Session Slice. +[ 17.409484] systemd[1]: Reached target Slices. +[ 17.409493] systemd[1]: Listening on udev Kernel Socket. +[ 17.418854] systemd[1]: Mounting Debug File System... +[ 17.419162] systemd[1]: Started Read required files in advance. +[ 17.419581] systemd[1]: Mounting Huge Pages File System... +[ 17.419767] systemd[1]: Mounting POSIX Message Queue File System... +[ 17.419788] systemd[1]: Listening on fsck to fsckd communication Socket. +[ 17.419900] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point. +[ 17.420082] systemd[1]: Starting Braille Device Support... +[ 17.420288] systemd[1]: Starting Create list of required static device nodes for the current kernel... +[ 17.420309] systemd[1]: Listening on Syslog Socket. +[ 17.420347] systemd[1]: Created slice system-systemd\x2dfsck.slice. +[ 17.420549] systemd[1]: Starting Uncomplicated firewall... +[ 17.420559] systemd[1]: Reached target Remote File Systems (Pre). +[ 17.420567] systemd[1]: Reached target Remote File Systems. +[ 17.420599] systemd[1]: Listening on Journal Socket (/dev/log). +[ 17.516235] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe. +[ 17.646882] systemd[1]: Starting Load Kernel Modules... +[ 17.646898] systemd[1]: Reached target Encrypted Volumes. +[ 17.646946] systemd[1]: Listening on Journal Audit Socket. +[ 17.647220] systemd[1]: Starting Journal Service... +[ 17.748381] systemd[1]: Started Create list of required static device nodes for the current kernel. +[ 17.748483] systemd[1]: Started Uncomplicated firewall. +[ 17.759031] systemd[1]: Starting Create Static Device Nodes in /dev... +[ 18.215949] systemd[1]: Mounted Debug File System. +[ 18.215967] systemd[1]: Mounted Huge Pages File System. +[ 18.215974] systemd[1]: Mounted POSIX Message Queue File System. +[ 18.258925] systemd[1]: Started Journal Service. +[ 18.439772] lp: driver loaded but no devices found +[ 18.521355] ppdev: user-space parallel port driver +[ 18.671259] parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE,EPP] +[ 18.671891] parport0: irq 7 detected +[ 18.766991] lp0: using parport0 (polling). +[ 22.376281] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro +[ 22.498671] systemd-journald[238]: Received request to flush runtime journal from PID 1 +[ 22.847455] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 +[ 22.866818] intel-lpss 0000:00:15.0: enabling device (0000 -> 0002) +[ 22.948889] idma64 idma64.0: Found Intel integrated DMA 64-bit +[ 22.978819] intel-lpss 0000:00:15.1: enabling device (0000 -> 0002) +[ 22.978988] idma64 idma64.1: Found Intel integrated DMA 64-bit +[ 23.008378] Bluetooth: Core ver 2.21 +[ 23.008385] NET: Registered protocol family 31 +[ 23.008386] Bluetooth: HCI device and connection manager initialized +[ 23.008388] Bluetooth: HCI socket layer initialized +[ 23.008389] Bluetooth: L2CAP socket layer initialized +[ 23.008392] Bluetooth: SCO socket layer initialized +[ 23.010832] intel-lpss 0000:00:1e.0: enabling device (0000 -> 0002) +[ 23.011014] idma64 idma64.2: Found Intel integrated DMA 64-bit +[ 23.026840] mei_me 0000:00:16.0: enabling device (0000 -> 0002) +[ 23.073897] Bluetooth: HCI UART driver ver 2.3 +[ 23.073899] Bluetooth: HCI UART protocol H4 registered +[ 23.073899] Bluetooth: HCI UART protocol BCSP registered +[ 23.073900] Bluetooth: HCI UART protocol LL registered +[ 23.073900] Bluetooth: HCI UART protocol ATH3K registered +[ 23.073901] Bluetooth: HCI UART protocol Three-wire (H5) registered +[ 23.073919] Bluetooth: HCI UART protocol Intel registered +[ 23.073928] Bluetooth: HCI UART protocol BCM registered +[ 23.073928] Bluetooth: HCI UART protocol QCA registered +[ 23.290718] AVX2 version of gcm_enc/dec engaged. +[ 23.290720] AES CTR mode by8 optimization enabled +[ 23.414923] dw-apb-uart.2: ttyS4 at MMIO 0xdf14b000 (irq = 20, base_baud = 115200) is a 16550A +[ 23.855475] snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002) +[ 23.855589] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915_bpo]) +[ 23.932082] snd_hda_codec_realtek hdaudioC0D0: ALC1150: SKU not ready 0x00000000 +[ 23.932552] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC1150: line_outs=3 (0x14/0x15/0x16/0x0/0x0) type:line +[ 23.932554] snd_hda_codec_realtek hdaudioC0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) +[ 23.932555] snd_hda_codec_realtek hdaudioC0D0: hp_outs=1 (0x1b/0x0/0x0/0x0/0x0) +[ 23.932556] snd_hda_codec_realtek hdaudioC0D0: mono: mono_out=0x0 +[ 23.932557] snd_hda_codec_realtek hdaudioC0D0: dig-out=0x1e/0x0 +[ 23.932557] snd_hda_codec_realtek hdaudioC0D0: inputs: +[ 23.932558] snd_hda_codec_realtek hdaudioC0D0: Front Mic=0x19 +[ 23.932559] snd_hda_codec_realtek hdaudioC0D0: Rear Mic=0x18 +[ 23.932560] snd_hda_codec_realtek hdaudioC0D0: Line=0x1a +[ 23.969752] input: HDA Intel PCH Front Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input7 +[ 23.969796] input: HDA Intel PCH Rear Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input8 +[ 23.969825] input: HDA Intel PCH Line as /devices/pci0000:00/0000:00:1f.3/sound/card0/input9 +[ 23.969853] input: HDA Intel PCH Line Out Front as /devices/pci0000:00/0000:00:1f.3/sound/card0/input10 +[ 23.969882] input: HDA Intel PCH Line Out Surround as /devices/pci0000:00/0000:00:1f.3/sound/card0/input11 +[ 23.969934] input: HDA Intel PCH Line Out CLFE as /devices/pci0000:00/0000:00:1f.3/sound/card0/input12 +[ 23.969960] input: HDA Intel PCH Front Headphone as /devices/pci0000:00/0000:00:1f.3/sound/card0/input13 +[ 23.969988] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input14 +[ 23.970028] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input15 +[ 23.970055] input: HDA Intel PCH HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input16 +[ 24.218723] intel_rapl: Found RAPL domain package +[ 24.218724] intel_rapl: Found RAPL domain core +[ 24.218725] intel_rapl: Found RAPL domain uncore +[ 24.218726] intel_rapl: Found RAPL domain dram +[ 24.758534] Adding 8268796k swap on /dev/sda3. Priority:-1 extents:1 across:8268796k FS +[ 31.880642] audit: type=1400 audit(1477210869.651:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/ubuntu-core-launcher" pid=574 comm="apparmor_parser" +[ 31.881348] audit: type=1400 audit(1477210869.651:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/sbin/dhclient" pid=571 comm="apparmor_parser" +[ 31.881352] audit: type=1400 audit(1477210869.651:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=571 comm="apparmor_parser" +[ 31.881354] audit: type=1400 audit(1477210869.651:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-helper" pid=571 comm="apparmor_parser" +[ 31.881371] audit: type=1400 audit(1477210869.651:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=571 comm="apparmor_parser" +[ 31.881607] audit: type=1400 audit(1477210869.651:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/lightdm/lightdm-guest-session" pid=570 comm="apparmor_parser" +[ 31.881611] audit: type=1400 audit(1477210869.651:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/lightdm/lightdm-guest-session//chromium" pid=570 comm="apparmor_parser" +[ 31.882137] audit: type=1400 audit(1477210869.651:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/cups-browsed" pid=576 comm="apparmor_parser" +[ 31.882661] audit: type=1400 audit(1477210869.651:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/ippusbxd" pid=578 comm="apparmor_parser" +[ 31.883070] audit: type=1400 audit(1477210869.655:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/cups/backend/cups-pdf" pid=577 comm="apparmor_parser" +[ 34.361021] IPv6: ADDRCONF(NETDEV_UP): enp0s31f6: link is not ready +[ 34.567305] IPv6: ADDRCONF(NETDEV_UP): enp0s31f6: link is not ready +[ 37.101080] e1000e: enp0s31f6 NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx/Tx +[ 37.101083] e1000e 0000:00:1f.6 enp0s31f6: 10/100 speed: disabling TSO +[ 37.101130] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s31f6: link becomes ready +[ 42.295776] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 +[ 42.295778] Bluetooth: BNEP filters: protocol multicast +[ 42.295780] Bluetooth: BNEP socket layer initialized +[ 961.545502] risa_dev_ramdrive_timing: module verification failed: signature and/or required key missing - tainting kernel +[ 961.545821] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 961.549514] bdbm: ===================================================================== +[ 961.549516] bdbm: DEVICE PARAMETERS +[ 961.549517] bdbm: ===================================================================== +[ 961.549517] bdbm: # of channels = 64 +[ 961.549518] bdbm: # of chips per channel = 1 +[ 961.549519] bdbm: # of blocks per chip = 128 +[ 961.549519] bdbm: # of pages per block = 64 +[ 961.549520] bdbm: # of subpages per page = 1 +[ 961.549520] bdbm: page main size = 4096 bytes +[ 961.549521] bdbm: page oob size = 64 bytes +[ 961.549522] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 961.549522] bdbm: +[ 961.549523] bdbm: ===================================================================== +[ 961.549524] bdbm: RAM DISK INFO +[ 961.549525] bdbm: ===================================================================== +[ 961.549525] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) +[ 961.748300] bdbm: ramssd addr = ffffc90050001000 +[ 961.748302] bdbm: +[ 961.748302] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 961.941321] bdbm: *** building ptr_ramssd_data done +[ 961.941498] bdbm: [dm_ramdrive_probe] probe done! +[ 961.941499] bdbm: [dm_ramdrive_open] open done! +[ 962.043452] bdbm: TRIM is enabled +[ 962.043563] bdbm: ===================================================================== +[ 962.043565] bdbm: DEVICE PARAMETERS +[ 962.043565] bdbm: ===================================================================== +[ 962.043566] bdbm: # of channels = 64 +[ 962.043566] bdbm: # of chips per channel = 1 +[ 962.043567] bdbm: # of blocks per chip = 128 +[ 962.043567] bdbm: # of pages per block = 64 +[ 962.043568] bdbm: # of subpages per page = 1 +[ 962.043568] bdbm: page main size = 4096 bytes +[ 962.043569] bdbm: page oob size = 64 bytes +[ 962.043569] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 962.043570] bdbm: +[ 962.043570] bdbm: ===================================================================== +[ 962.043571] bdbm: FTL CONFIGURATION +[ 962.043571] bdbm: ===================================================================== +[ 962.043572] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 962.043572] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 962.043573] bdbm: wl policy = 1 (1: none, 2: swap) +[ 962.043573] bdbm: trim mode = 1 (1: enable, 2: disable) +[ 962.043574] bdbm: kernel sector = 512 bytes +[ 962.043574] bdbm: +[ 962.043575] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 963.106395] bdbm: llm_make_req: 0, 1 +[ 964.164285] bdbm: llm_make_req: 50000, 96 +[ 964.526827] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 1829.207157] bdbm: ----------------------------------------------- +[ 1829.207158] bdbm: < PERFORMANCE SUMMARY > +[ 1829.207159] bdbm: [0] Execution Time (us): 867.111513 +[ 1829.207160] bdbm: +[ 1829.207161] bdbm: [1] Total I/Os +[ 1829.207161] bdbm: # of page reads: 6 +[ 1829.207162] bdbm: # of page writes: 74152 +[ 1829.207162] bdbm: # of block erase: 0 +[ 1829.207163] bdbm: +[ 1829.207163] bdbm: [2] Normal I/Os +[ 1829.207163] bdbm: # of page reads: 6 +[ 1829.207164] bdbm: # of page writes: 74152 +[ 1829.207164] bdbm: # of page rmw reads: 0 +[ 1829.207165] bdbm: # of page rmw writes: 0 +[ 1829.207165] bdbm: +[ 1829.207166] bdbm: [3] GC I/Os +[ 1829.207166] bdbm: # of GC invocation: 0 +[ 1829.207167] bdbm: # of page reads: 0 +[ 1829.207167] bdbm: # of page writes: 0 +[ 1829.207167] bdbm: # of block erase: 0 +[ 1829.207168] bdbm: +[ 1829.207168] bdbm: [4] Meta I/Os +[ 1829.207169] bdbm: # of meta page reads: 0 +[ 1829.207169] bdbm: # of meta page writes: 0 +[ 1829.207170] bdbm: +[ 1829.207170] bdbm: [5] Elapsed Time +[ 1829.207171] bdbm: page read (us): 106 (S:1 + Q:7 + D:98) +[ 1829.207171] bdbm: page write (us): 452 (S:0 + Q:1 + D:451) +[ 1829.207172] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 1829.207172] bdbm: +[ 1829.207173] bdbm: [6] Utilization (R) +[ 1829.207184] bdbm: 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +[ 1829.207185] bdbm: +[ 1829.207185] bdbm: [7] Utilization (W) +[ 1829.207196] bdbm: 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 +[ 1829.207197] bdbm: ----------------------------------------------- +[ 1829.207198] bdbm: ----------------------------------------------- +[ 1829.306834] bdbm: done +[ 1829.306836] bdbm: [dm_ramdrive_close] closed! +[ 1829.356041] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 1829.356043] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 1829.374251] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 1829.391384] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 1829.394666] robusta_drv: Unknown symbol _nvm_dev (err 0) +[ 1922.829635] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 1922.858588] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 1922.870686] robusta_drv: Unknown symbol _nvm_dev (err 0) +[ 2143.933277] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 2143.950373] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 2143.953885] bdbm: ===================================================================== +[ 2143.953886] bdbm: DEVICE PARAMETERS +[ 2143.953887] bdbm: ===================================================================== +[ 2143.953888] bdbm: # of channels = 64 +[ 2143.953888] bdbm: # of chips per channel = 1 +[ 2143.953889] bdbm: # of blocks per chip = 128 +[ 2143.953889] bdbm: # of pages per block = 64 +[ 2143.953890] bdbm: # of subpages per page = 1 +[ 2143.953890] bdbm: page main size = 4096 bytes +[ 2143.953891] bdbm: page oob size = 64 bytes +[ 2143.953892] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 2143.953892] bdbm: +[ 2143.953893] bdbm: ===================================================================== +[ 2143.953894] bdbm: RAM DISK INFO +[ 2143.953894] bdbm: ===================================================================== +[ 2143.953895] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) +[ 2144.158051] bdbm: ramssd addr = ffffc90050001000 +[ 2144.158053] bdbm: +[ 2144.158053] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 2144.356069] bdbm: *** building ptr_ramssd_data done +[ 2144.356200] bdbm: [dm_ramdrive_probe] probe done! +[ 2144.356201] bdbm: [dm_ramdrive_open] open done! +[ 2144.356202] bdbm: create succeeds +[ 2144.356203] bdbm-error: bdbm_bug_on [/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.c:220] +[ 2144.356232] ------------[ cut here ]------------ +[ 2144.356244] kernel BUG at /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.c:220! +[ 2144.356262] invalid opcode: 0000 [#1] SMP +[ 2144.356272] Modules linked in: robusta_drv(OE+) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal snd_hda_codec_hdmi snd_hda_codec_realtek intel_powerclamp snd_hda_codec_generic coretemp snd_hda_intel snd_hda_codec kvm_intel snd_hda_core kvm snd_hwdep snd_pcm snd_seq_midi irqbypass snd_seq_midi_event crct10dif_pclmul crc32_pclmul snd_rawmidi snd_seq snd_seq_device 8250_dw snd_timer snd i2c_designware_platform aesni_intel soundcore i2c_designware_core aes_x86_64 lrw gf128mul glue_helper ablk_helper hci_uart cryptd btbcm btqca btintel bluetooth serio_raw idma64 virt_dma acpi_als mei_me kfifo_buf mei industrialio intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_pad parport_pc ppdev lp parport autofs4 mxm_wmi i915_bpo psmouse intel_ips i2c_algo_bit drm_kms_helper +[ 2144.356442] e1000e syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core drm ahci nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 2144.356487] CPU: 0 PID: 23891 Comm: insmod Tainted: G OE 4.4.0-42-generic #62-Ubuntu +[ 2144.356502] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 2144.356517] task: ffff8800358e2c40 ti: ffff88007df8c000 task.ti: ffff88007df8c000 +[ 2144.356530] RIP: 0010:[] [] bdbm_drv_run+0x30a/0x380 [robusta_drv] +[ 2144.356551] RSP: 0018:ffff88007df8fc48 EFLAGS: 00010286 +[ 2144.356561] RAX: 000000000000006e RBX: ffffc90006b70000 RCX: 0000000000000006 +[ 2144.356574] RDX: 0000000000000000 RSI: 0000000000000246 RDI: ffff88106ec0dc70 +[ 2144.356586] RBP: ffff88007df8fc78 R08: 000000000000000a R09: 00000000000003b3 +[ 2144.356599] R10: 0000000000000002 R11: 00000000000003b3 R12: ffffffffc064f1e0 +[ 2144.356611] R13: ffffffffc06650d0 R14: ffffffffc05fe000 R15: 0000000000000000 +[ 2144.356624] FS: 00007fd90098f700(0000) GS:ffff88106ec00000(0000) knlGS:0000000000000000 +[ 2144.356638] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 2144.356649] CR2: 00007fe70ff3c000 CR3: 0000000f02881000 CR4: 00000000003406f0 +[ 2144.356661] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 2144.356674] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 2144.356686] Stack: +[ 2144.356690] ffff88007df8fc58 ffffffff81e11080 ffff8810207cbbe0 0000000000000000 +[ 2144.356706] ffffffffc05fe000 ffff881020b75000 ffff88007df8fc88 ffffffffc05fe0b3 +[ 2144.356722] ffff88007df8fd08 ffffffff81002123 ffffea003b89cf40 ffff88007df8fce0 +[ 2144.356737] Call Trace: +[ 2144.356743] [] ? 0xffffffffc05fe000 +[ 2144.356754] [] bdbm_drv_init+0xb3/0x1000 [robusta_drv] +[ 2144.356768] [] do_one_initcall+0xb3/0x200 +[ 2144.356780] [] ? kmem_cache_alloc_trace+0x183/0x1f0 +[ 2144.356794] [] do_init_module+0x5f/0x1cf +[ 2144.356805] [] load_module+0x166f/0x1c10 +[ 2144.356815] [] ? __symbol_put+0x60/0x60 +[ 2144.356827] [] ? kernel_read+0x50/0x80 +[ 2144.356837] [] SYSC_finit_module+0xb4/0xe0 +[ 2144.356848] [] SyS_finit_module+0xe/0x10 +[ 2144.356860] [] entry_SYSCALL_64_fastpath+0x16/0x71 +[ 2144.356871] Code: 66 c0 48 c7 c7 c8 2b 66 c0 e8 5a d4 b2 c0 e9 bd fd ff ff ba dc 00 00 00 48 c7 c6 60 2a 66 c0 48 c7 c7 50 2b 66 c0 e8 3d d4 b2 c0 <0f> 0b ba fb 00 00 00 48 c7 c6 60 2a 66 c0 48 c7 c7 98 2d 66 c0 +[ 2144.356947] RIP [] bdbm_drv_run+0x30a/0x380 [robusta_drv] +[ 2144.356963] RSP +[ 2144.359894] ---[ end trace 876c8904d8cc0f70 ]--- diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index d10ccca..43dccd6 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -54,6 +54,9 @@ enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_PROG_TIME_US = 500, /* 1.3ms */ NAND_PAGE_READ_TIME_US = 100, /* 100us */ NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ +//#ifdef NVM_CACHE +// NR_NVM_BLOCKS = 100, /* 4KB * 1048576 = 4GB */ +//#endif }; int _param_nr_channels = NR_CHANNELS; @@ -67,6 +70,9 @@ int _param_chip_bus_trans_time_us = NAND_CHIP_BUS_TRANS_TIME_US; int _param_page_prog_time_us = NAND_PAGE_PROG_TIME_US; int _param_page_read_time_us = NAND_PAGE_READ_TIME_US; int _param_block_erase_time_us = NAND_BLOCK_ERASE_TIME_US; +//#ifdef NVM_CACHE +//int _param_nr_nvm_blocks = NR_NVM_BLOCKS; +//#endif /* TODO: Hmm... there might be a more fancy way than this... */ #if defined (CONFIG_DEVICE_TYPE_RAMDRIVE) @@ -129,7 +135,9 @@ bdbm_device_params_t get_default_device_params (void) p.page_prog_time_us = _param_page_prog_time_us; p.page_read_time_us = _param_page_read_time_us; p.block_erase_time_us = _param_block_erase_time_us; - +//#ifdef NVM_CACHE +// p.nr_nvm_blocks = _param_nr_nvm_blocks; +//#endif /* other parameters derived from user parameters */ p.nr_blocks_per_channel = p.nr_chips_per_channel * p.nr_blocks_per_chip; p.nr_blocks_per_ssd = p.nr_channels * p.nr_chips_per_channel * p.nr_blocks_per_chip; @@ -143,7 +151,6 @@ bdbm_device_params_t get_default_device_params (void) #endif p.nr_subpages_per_block = (p.nr_subpages_per_page * p.nr_pages_per_block); p.nr_subpages_per_ssd = (p.nr_subpages_per_page * p.nr_pages_per_ssd); /* the size of the subpage must be the same as the kernel-page size (4KB) */ - p.device_capacity_in_byte = 0; p.device_capacity_in_byte += p.nr_channels; p.device_capacity_in_byte *= p.nr_chips_per_channel; diff --git a/frontend/kernel/Makefile b/frontend/kernel/Makefile index 0b90fb3..7c948cd 100644 --- a/frontend/kernel/Makefile +++ b/frontend/kernel/Makefile @@ -60,6 +60,7 @@ robusta_drv-y := \ kmain.o \ blkdev.o \ blkio.o \ + nvm_cache.o \ $(FTL)/ftl_params.o \ $(FTL)/pmu.o \ $(FTL)/hlm_nobuf.o \ diff --git a/frontend/kernel/blkdev_bak.c b/frontend/kernel/blkdev_bak.c new file mode 100644 index 0000000..e7c289e --- /dev/null +++ b/frontend/kernel/blkdev_bak.c @@ -0,0 +1,249 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include +#include /* bio */ +#include +#include +#include /* mdelay */ + +#include "bdbm_drv.h" +#include "debug.h" +#include "blkdev.h" +#include "blkdev_ioctl.h" +#include "umemory.h" + + +int bdbm_blk_ioctl (struct block_device *bdev, fmode_t mode, unsigned cmd, unsigned long arg); +int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo); + +static struct bdbm_device_t { + struct gendisk *gd; + struct request_queue *queue; +} bdbm_device; + +static uint32_t bdbm_device_major_num = 0; +static struct block_device_operations bdops = { + .owner = THIS_MODULE, + .ioctl = bdbm_blk_ioctl, + .getgeo = bdbm_blk_getgeo, +}; + +extern bdbm_drv_info_t* _bdi; + +DECLARE_COMPLETION (task_completion); +static struct task_struct *task = NULL; + + +int badblock_scan_thread_fn (void* arg) +{ + bdbm_ftl_inf_t* ftl = NULL; + uint32_t ret; + + /* get the ftl */ + if ((ftl = _bdi->ptr_ftl_inf) == NULL) { + bdbm_warning ("ftl is not created"); + goto exit; + } + + /* run the bad-block scan */ + if ((ret = ftl->scan_badblocks (_bdi))) { + bdbm_msg ("scan_badblocks failed (%u)", ret); + } + +exit: + complete (&task_completion); + return 0; +} + +int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo) +{ + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (_bdi); + int nr_sectors = np->device_capacity_in_byte >> 9; + + /* NOTE: Heads * Cylinders * Sectors = # of sectors (512B) in SSDs */ + geo->heads = 16; + geo->cylinders = 1024; + geo->sectors = nr_sectors / (geo->heads * geo->cylinders); + if (geo->heads * geo->cylinders * geo->sectors != nr_sectors) { + bdbm_warning ("bdbm_blk_getgeo: heads=%d, cylinders=%d, sectors=%d (total sectors=%d)", + geo->heads, + geo->cylinders, + geo->sectors, + nr_sectors); + return 1; + } + return 0; +} + +int bdbm_blk_ioctl ( + struct block_device *bdev, + fmode_t mode, + unsigned cmd, + unsigned long arg) +{ + struct hd_geometry geo; + struct gendisk *disk = bdev->bd_disk; + int ret; + + switch (cmd) { + case HDIO_GETGEO: + case HDIO_GETGEO_BIG: + case HDIO_GETGEO_BIG_RAW: + if (!arg) { + bdbm_warning ("invalid argument"); + return -EINVAL; + } + if (!disk->fops->getgeo) { + bdbm_warning ("disk->fops->getgeo is NULL"); + return -ENOTTY; + } + + bdbm_memset(&geo, 0, sizeof(geo)); + geo.start = get_start_sect(bdev); + ret = disk->fops->getgeo(bdev, &geo); + if (ret) { + bdbm_warning ("disk->fops->getgeo returns (%d)", ret); + return ret; + } + if (copy_to_user((struct hd_geometry __user *)arg, &geo, sizeof(geo))) { + bdbm_warning ("copy_to_user failed"); + return -EFAULT; + } + break; + + case BDBM_BADBLOCK_SCAN: + bdbm_msg ("Get a BDBM_BADBLOCK_SCAN command: %u (%X)", cmd, cmd); + + if (task != NULL) { + bdbm_msg ("badblock_scan_thread is running"); + } else { + /* create thread */ + if ((task = kthread_create (badblock_scan_thread_fn, NULL, "badblock_scan_thread")) == NULL) { + bdbm_msg ("badblock_scan_thread failed to create"); + } else { + wake_up_process (task); + } + } + break; + + case BDBM_BADBLOCK_SCAN_CHECK: + /* check the status of the thread */ + if (task == NULL) { + bdbm_msg ("badblock_scan_thread is not created..."); + ret = 1; /* done */ + copy_to_user ((int*)arg, &ret, sizeof (int)); + break; + } + + /* is it still running? */ + if (!bdbm_try_wait_for_completion (task_completion)) { + ret = 0; /* still running */ + copy_to_user ((int*)arg, &ret, sizeof (int)); + break; + } + ret = 1; /* done */ + + /* reinit some variables */ + task = NULL; + copy_to_user ((int*)arg, &ret, sizeof (int)); + bdbm_reinit_completion (task_completion); + break; + +#if 0 + case BDBM_GET_PHYADDR: + break; +#endif + + default: + /*bdbm_msg ("unknown bdm_blk_ioctl: %u (%X)", cmd, cmd);*/ + break; + } + + return 0; +} + +uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn) +{ + /* create a blk queue */ + if (!(bdbm_device.queue = blk_alloc_queue (GFP_KERNEL))) { + bdbm_error ("blk_alloc_queue failed"); + return -ENOMEM; + } + blk_queue_make_request (bdbm_device.queue, fn); + blk_queue_logical_block_size (bdbm_device.queue, bdi->parm_ftl.kernel_sector_size); + blk_queue_io_min (bdbm_device.queue, bdi->parm_dev.page_main_size); + blk_queue_io_opt (bdbm_device.queue, bdi->parm_dev.page_main_size); + /*blk_limits_max_hw_sectors (&bdbm_device.queue->limits, 16);*/ + + /* see if a TRIM command is used or not */ + if (bdi->parm_ftl.trim == TRIM_ENABLE) { + bdbm_device.queue->limits.discard_granularity = KERNEL_PAGE_SIZE; + bdbm_device.queue->limits.max_discard_sectors = UINT_MAX; + /*bdbm_device.queue->limits.discard_zeroes_data = 1;*/ + queue_flag_set_unlocked (QUEUE_FLAG_DISCARD, bdbm_device.queue); + bdbm_msg ("TRIM is enabled"); + } else { + bdbm_msg ("TRIM is disabled"); + } + + /* register a blk device */ + if ((bdbm_device_major_num = register_blkdev (bdbm_device_major_num, "robusta")) < 0) { + bdbm_msg ("register_blkdev failed (%d)", bdbm_device_major_num); + return bdbm_device_major_num; + } + if (!(bdbm_device.gd = alloc_disk (1))) { + bdbm_msg ("alloc_disk failed"); + unregister_blkdev (bdbm_device_major_num, "robusta"); + return -ENOMEM; + } + bdbm_device.gd->major = bdbm_device_major_num; + bdbm_device.gd->first_minor = 0; + bdbm_device.gd->fops = &bdops; + bdbm_device.gd->queue = bdbm_device.queue; + bdbm_device.gd->private_data = NULL; + strcpy (bdbm_device.gd->disk_name, "robusta"); + + { + uint64_t capacity; + //capacity = bdi->parm_dev.device_capacity_in_byte * 0.9; + capacity = bdi->parm_dev.device_capacity_in_byte; + capacity = (capacity / KERNEL_PAGE_SIZE) * KERNEL_PAGE_SIZE; + capacity = capacity - capacity / 10; + set_capacity (bdbm_device.gd, capacity / KERNEL_SECTOR_SIZE); + } + add_disk (bdbm_device.gd); + + return 0; +} + +void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi) +{ + /* unregister a BlueDBM device driver */ + del_gendisk (bdbm_device.gd); + blk_cleanup_queue (bdbm_device.gd->queue); + put_disk (bdbm_device.gd); + unregister_blkdev (bdbm_device_major_num, "robusta"); +} + diff --git a/frontend/kernel/blkio.c b/frontend/kernel/blkio.c index d54ef90..0e7e32a 100644 --- a/frontend/kernel/blkio.c +++ b/frontend/kernel/blkio.c @@ -22,7 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#include +//#include #include /* bio */ #include "bdbm_drv.h" @@ -237,7 +237,6 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) if (br) __free_blkio_req (br); } - void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) { bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); @@ -261,434 +260,3 @@ void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) atomic_dec (&p->nr_host_reqs); } - -#if 0 - -bdbm_host_inf_t _blkio_inf = { - .ptr_private = NULL, - .open = blkio_open, - .close = blkio_close, - .make_req = blkio_make_req, - .end_req = blkio_end_req, -}; - -typedef struct { - bdbm_sema_t host_lock; - atomic64_t nr_reqs; -} bdbm_blkio_private_t; - - - -/* This is a call-back function invoked by a block-device layer */ -static void __host_blkio_make_request_fn ( - struct request_queue *q, - struct bio *bio) -{ - blkio_make_req (_bdi, (void*)bio); -} - -static bdbm_hlm_req_t* __blkio_create_hlm_trim_req ( - bdbm_drv_info_t* bdi, - struct bio* bio) -{ - bdbm_hlm_req_t* hlm_req = NULL; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - bdbm_ftl_params* dp = BDBM_GET_DRIVER_PARAMS (bdi); - uint64_t nr_secs_per_fp = 0; - - nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; - - /* create bdbm_hm_req_t */ - if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic - (sizeof (bdbm_hlm_req_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - return NULL; - } - - /* make a high-level request for TRIM */ - hlm_req->req_type = REQTYPE_TRIM; - - if (dp->mapping_type == MAPPING_POLICY_SEGMENT) { - hlm_req->lpa = bio->bi_sector / nr_secs_per_fp; - hlm_req->len = bio_sectors (bio) / nr_secs_per_fp; - if (hlm_req->len == 0) - hlm_req->len = 1; - } else { - hlm_req->lpa = (bio->bi_sector + nr_secs_per_fp - 1) / nr_secs_per_fp; - if ((hlm_req->lpa * nr_secs_per_fp - bio->bi_sector) > bio_sectors (bio)) { - bdbm_error ("'hlm_req->lpa (%llu) * nr_secs_per_fp (%llu) - bio->bi_sector (%lu)' (%llu) > bio_sectors (bio) (%u)", - hlm_req->lpa, nr_secs_per_fp, bio->bi_sector, - hlm_req->lpa * nr_secs_per_fp - bio->bi_sector, - bio_sectors (bio)); - hlm_req->len = 0; - } else { - hlm_req->len = - (bio_sectors (bio) - (hlm_req->lpa * nr_secs_per_fp - bio->bi_sector)) / nr_secs_per_fp; - } - } - hlm_req->nr_done_reqs = 0; - hlm_req->kpg_flags = NULL; - hlm_req->pptr_kpgs = NULL; /* no data */ - hlm_req->ptr_host_req = (void*)bio; - hlm_req->ret = 0; - - return hlm_req; -} - -static bdbm_hlm_req_t* __blkio_create_hlm_rw_req ( - bdbm_drv_info_t* bdi, - struct bio* bio) -{ - struct bio_vec *bvec = NULL; - bdbm_hlm_req_t* hlm_req = NULL; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - - uint32_t loop = 0; - uint32_t kpg_loop = 0; - uint32_t bvec_offset = 0; - uint64_t nr_secs_per_fp = 0; - uint64_t nr_secs_per_kp = 0; - uint32_t nr_kp_per_fp = 0; - - /* get # of sectors per flash page */ - nr_secs_per_fp = np->page_main_size / KERNEL_SECTOR_SIZE; - nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; - nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ - - /* create bdbm_hm_req_t */ - if ((hlm_req = (bdbm_hlm_req_t*)bdbm_malloc_atomic - (sizeof (bdbm_hlm_req_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - return NULL; - } - - /* get a bio direction */ - if (bio_data_dir (bio) == READ || bio_data_dir (bio) == READA) { - hlm_req->req_type = REQTYPE_READ; - } else if (bio_data_dir (bio) == WRITE) { - hlm_req->req_type = REQTYPE_WRITE; - } else { - bdbm_error ("the direction of a bio is invalid (%lu)", bio_data_dir (bio)); - goto fail_req; - } - - /* make a high-level request for READ or WRITE */ - hlm_req->lpa = (bio->bi_sector / nr_secs_per_fp); - hlm_req->len = (bio->bi_sector + bio_sectors (bio) + nr_secs_per_fp - 1) / nr_secs_per_fp - hlm_req->lpa; - hlm_req->nr_done_reqs = 0; - hlm_req->ptr_host_req = (void*)bio; - hlm_req->ret = 0; - /*bdbm_spin_lock_init (&hlm_req->lock);*/ - if ((hlm_req->pptr_kpgs = (uint8_t**)bdbm_malloc_atomic - (sizeof(uint8_t*) * hlm_req->len * nr_kp_per_fp)) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - goto fail_req; - } - if ((hlm_req->kpg_flags = (uint8_t*)bdbm_malloc_atomic - (sizeof(uint8_t) * hlm_req->len * nr_kp_per_fp)) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - goto fail_flags; - } - /* kpg_flags is set to MEMFLAG_NOT_SET (0) */ - - /* get or alloc pages */ - bio_for_each_segment (bvec, bio, loop) { - /* check some error cases */ - if (bvec->bv_offset != 0) { - bdbm_warning ("'bv_offset' is not 0 (%d)", bvec->bv_offset); - /*goto fail_grab_pages;*/ - } - -next_kpg: - /* assign a new page */ - if ((hlm_req->lpa * nr_kp_per_fp + kpg_loop) != (bio->bi_sector + bvec_offset) / nr_secs_per_kp) { - hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); - hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; - kpg_loop++; - goto next_kpg; - } - - if ((hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)page_address (bvec->bv_page)) != NULL) { - hlm_req->kpg_flags[kpg_loop] = MEMFLAG_KMAP_PAGE; - } else { - bdbm_error ("kmap failed"); - goto fail_grab_pages; - } - - bvec_offset += nr_secs_per_kp; - kpg_loop++; - } - - /* get additional free pages if necessary */ - while (kpg_loop < hlm_req->len * nr_kp_per_fp) { - hlm_req->pptr_kpgs[kpg_loop] = (uint8_t*)bdbm_malloc_atomic (KERNEL_PAGE_SIZE); - hlm_req->kpg_flags[kpg_loop] = MEMFLAG_FRAG_PAGE; - kpg_loop++; - } - - return hlm_req; - -fail_grab_pages: - /* release grabbed pages */ - for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { - if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE) { - bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); - } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE) { - } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { - bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); - } - } - bdbm_free_atomic (hlm_req->kpg_flags); - -fail_flags: - bdbm_free_atomic (hlm_req->pptr_kpgs); - -fail_req: - bdbm_free_atomic (hlm_req); - - return NULL; -} - -static bdbm_hlm_req_t* __blkio_create_hlm_req ( - bdbm_drv_info_t* bdi, - struct bio* bio) -{ - bdbm_hlm_req_t* hlm_req = NULL; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - uint64_t nr_secs_per_kp = 0; - - /* get # of sectors per flash page */ - nr_secs_per_kp = KERNEL_PAGE_SIZE / KERNEL_SECTOR_SIZE; - - /* see if some error cases */ - if (bio->bi_sector % nr_secs_per_kp != 0) { - bdbm_warning ("kernel pages are not aligned with disk sectors (%lu mod %llu != 0)", - bio->bi_sector , nr_secs_per_kp); - /* go ahead */ - } - if (KERNEL_PAGE_SIZE > np->page_main_size) { - bdbm_error ("kernel page (%lu) is larger than flash page (%llu)", - KERNEL_PAGE_SIZE, np->page_main_size); - return NULL; - } - - /* create 'hlm_req' */ - if (bio->bi_rw & REQ_DISCARD) { - /* make a high-level request for TRIM */ - hlm_req = __blkio_create_hlm_trim_req (bdi, bio); - } else { - /* make a high-level request for READ or WRITE */ - hlm_req = __blkio_create_hlm_rw_req (bdi, bio); - } - - /* start a stopwatch */ - if (hlm_req) { - bdbm_stopwatch_start (&hlm_req->sw); - } - - return hlm_req; -} - -static void __blkio_delete_hlm_req ( - bdbm_drv_info_t* bdi, - bdbm_hlm_req_t* hlm_req) -{ - bdbm_device_params_t* np = NULL; - uint32_t kpg_loop = 0; - uint32_t nr_kp_per_fp = 0; - - np = BDBM_GET_DEVICE_PARAMS (bdi); - nr_kp_per_fp = np->page_main_size / KERNEL_PAGE_SIZE; /* e.g., 2 = 8 KB / 4 KB */ - - /* temp */ - if (hlm_req->org_pptr_kpgs) { - hlm_req->pptr_kpgs = hlm_req->org_pptr_kpgs; - hlm_req->kpg_flags = hlm_req->org_kpg_flags; - hlm_req->lpa--; - hlm_req->len++; - } - /* end */ - - /* free or unmap pages */ - if (hlm_req->kpg_flags != NULL && hlm_req->pptr_kpgs != NULL) { - for (kpg_loop = 0; kpg_loop < hlm_req->len * nr_kp_per_fp; kpg_loop++) { - if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_FRAG_PAGE_DONE) { - bdbm_free_atomic (hlm_req->pptr_kpgs[kpg_loop]); - } else if (hlm_req->kpg_flags[kpg_loop] == MEMFLAG_KMAP_PAGE_DONE) { - } else if (hlm_req->kpg_flags[kpg_loop] != MEMFLAG_NOT_SET) { - bdbm_error ("invalid flags (kpg_flags[%u]=%u)", kpg_loop, hlm_req->kpg_flags[kpg_loop]); - } - } - } - - /* release other stuff */ - if (hlm_req->kpg_flags != NULL) - bdbm_free_atomic (hlm_req->kpg_flags); - if (hlm_req->pptr_kpgs != NULL) - bdbm_free_atomic (hlm_req->pptr_kpgs); - bdbm_free_atomic (hlm_req); -} - -#ifdef ENABLE_DISPLAY -static void __blkio_display_req ( - bdbm_drv_info_t* bdi, - bdbm_hlm_req_t* hlm_req) -{ - bdbm_ftl_inf_t* ftl = (bdbm_ftl_inf_t*)BDBM_GET_FTL_INF(bdi); - uint64_t seg_no = 0; - - if (ftl->get_segno) { - seg_no = ftl->get_segno (bdi, hlm_req->lpa); - } - - switch (hlm_req->req_type) { - case REQTYPE_TRIM: - bdbm_msg ("[%llu] TRIM\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); - break; - case REQTYPE_READ: - bdbm_msg ("[%llu] READ\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); - break; - case REQTYPE_WRITE: - bdbm_msg ("[%llu] WRITE\t%llu\t%llu", seg_no, hlm_req->lpa, hlm_req->len); - break; - default: - bdbm_error ("invalid REQTYPE (%u)", hlm_req->req_type); - break; - } -} -#endif - -uint32_t blkio_open (bdbm_drv_info_t* bdi) -{ - uint32_t ret; - bdbm_blkio_private_t* p; - - /* create a private data structure */ - if ((p = (bdbm_blkio_private_t*)bdbm_malloc_atomic - (sizeof (bdbm_blkio_private_t))) == NULL) { - bdbm_error ("bdbm_malloc_atomic failed"); - return 1; - } - bdbm_sema_init (&p->host_lock); - atomic64_set (&p->nr_reqs, 0); - bdi->ptr_host_inf->ptr_private = (void*)p; - - /* register robusta*/ - if ((ret = host_blkdev_register_device - (bdi, __host_blkio_make_request_fn)) != 0) { - bdbm_error ("failed to register robusta"); - bdbm_free_atomic (p); - return 1; - } - - return 0; -} - -void blkio_close (bdbm_drv_info_t* bdi) -{ - bdbm_blkio_private_t* p = NULL; - - p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - - /* wait for host reqs to finish */ - bdbm_msg ("wait for host reqs to finish"); - while (1) { - if (atomic64_read (&p->nr_reqs) == 0) - break; - schedule (); /* sleep */ - } - - /* unregister a block device */ - host_blkdev_unregister_block_device (bdi); - - /* free private */ - bdbm_free_atomic (p); -} - -void blkio_make_req (bdbm_drv_info_t* bdi, void* req) -{ - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - bdbm_hlm_req_t* hlm_req = NULL; - struct bio* bio = (struct bio*)req; - - /* lock a global mutex -- this function must be finished as soon as possible */ - bdbm_sema_lock (&p->host_lock); - - /* see if the address range of bio is beyond storage space */ - if (bio->bi_sector + bio_sectors (bio) > np->device_capacity_in_byte / KERNEL_SECTOR_SIZE) { - bdbm_sema_unlock (&p->host_lock); - bdbm_error ("bio is beyond storage space (%lu > %llu)", - bio->bi_sector + bio_sectors (bio), - np->device_capacity_in_byte / KERNEL_SECTOR_SIZE); - bio_io_error (bio); - return; - } - - /* create a hlm_req using a bio */ - if ((hlm_req = __blkio_create_hlm_req (bdi, bio)) == NULL) { - bdbm_sema_unlock (&p->host_lock); - bdbm_error ("the creation of hlm_req failed"); - bio_io_error (bio); - return; - } - -#ifdef ENABLE_DISPLAY - /* display req info */ - __blkio_display_req (bdi, hlm_req); -#endif - - /* if success, increase # of host reqs before sending the request to hlm */ - atomic64_inc (&p->nr_reqs); - - /* NOTE: it would be possible that 'hlm_req' becomes NULL - * if 'bdi->ptr_hlm_inf->make_req' is success. */ - if (bdi->ptr_hlm_inf->make_req (bdi, hlm_req) != 0) { - bdbm_error ("'bdi->ptr_hlm_inf->make_req' failed"); - - /* decreate # of reqs */ - atomic64_dec (&p->nr_reqs); - if (atomic64_read (&p->nr_reqs) < 0) { - bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); - } - - /* finish a bio */ - __blkio_delete_hlm_req (bdi, hlm_req); - bio_io_error (bio); - } - - bdbm_sema_unlock (&p->host_lock); -} - -void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hlm_req) -{ - uint32_t ret; - struct bio* bio = NULL; - bdbm_blkio_private_t* p = NULL; - - /* unlock hlm_req's lock if it is available */ - if (hlm_req->done) - bdbm_sema_unlock (hlm_req->done); - - /* get a bio from hlm_req */ - bio = (struct bio*)hlm_req->ptr_host_req; - p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - ret = hlm_req->ret; - - /* destroy hlm_req */ - __blkio_delete_hlm_req (bdi, hlm_req); - - /* get the result and end a bio */ - if (bio != NULL) { - if (ret == 0) bio_endio (bio, 0); - else bio_io_error (bio); - } - - /* decreate # of reqs */ - atomic64_dec (&p->nr_reqs); - if (atomic64_read (&p->nr_reqs) < 0) { - bdbm_error ("p->nr_reqs is negative (%ld)", atomic64_read (&p->nr_reqs)); - } -} - -#endif diff --git a/frontend/kernel/nvm_cache.c b/frontend/kernel/nvm_cache.c new file mode 100644 index 0000000..106822f --- /dev/null +++ b/frontend/kernel/nvm_cache.c @@ -0,0 +1,56 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include /* uint64_t */ +//#include /* bio */ +//#include +//#include +//#include /* mdelay */ + +#include "bdbm_drv.h" +#include "debug.h" +//#include "blkdev.h" +//#include "blkdev_ioctl.h" +//#include "umemory.h" + +#ifdef NVM_CACHE + +#include "nvm_cache.h" + +/* interface for nvm_dev */ +bdbm_nvm_inf_t _nvm_dev = { + .ptr_private = NULL, + .create = bdbm_nvm_create, +// .destroy = nvm_destroy, +// .make_req = nvm_make_req, +// .end_req = nvm_end_req, +}; + +uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi){ +// if (bdi->ptr_nvm_inf) + bdbm_msg("create succeeds"); + return 0; +} + +#endif diff --git a/frontend/kernel/nvm_cache.h b/frontend/kernel/nvm_cache.h new file mode 100644 index 0000000..e035035 --- /dev/null +++ b/frontend/kernel/nvm_cache.h @@ -0,0 +1,57 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +//#ifndef _BLUEDBM_HOST_BLKDEV_H +//#define _BLUEDBM_HOST_BLKDEV_H + +extern bdbm_nvm_inf_t _nvm_dev; + + +typedef struct { + uint8_t status; + bdbm_logaddr_t logaddr; +// bdbm_phyaddr_t phyaddr; +// struct list_head list; /* for lru list */ + void* ptr_nvmram_data; +} bdbm_nvm_block_t; + +typedef struct { + bdbm_device_params_t* np; + uint64_t nr_total_blks; + bdbm_spinlock_t nvm_lock; + + bdbm_nvm_block_t* ptr_nvm_tbl; + + void* ptr_nvmram; /* DRAM memory for nvm */ + struct list_head lru_list; + +// bdbm_nvm_block_t* ptr_lru_list; + +} bdbm_nvm_dev_private_t; + +uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi); +//#endif + + + diff --git a/frontend/kernel/nvm_cache_bak/nvm_cache.c b/frontend/kernel/nvm_cache_bak/nvm_cache.c new file mode 100644 index 0000000..d48037a --- /dev/null +++ b/frontend/kernel/nvm_cache_bak/nvm_cache.c @@ -0,0 +1,255 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +//#include "debug.h" +//#include "params.h" +//#include "bdbm_drv.h" +//#include "utime.h" +//#include "umemory.h" + +#if 0 +#include "algo/no_ftl.h" +#include "algo/block_ftl.h" +#include "algo/page_ftl.h" +#endif + +#include "nvm_cache.h" + + +/* interface for nvm_dev */ +bdbm_nvm_inf_t _nvm_dev = { + .ptr_private = NULL, + .create = nvm_create, +// .destroy = nvm_destroy, +// .make_req = nvm_make_req, +// .end_req = nvm_end_req, +}; + + +uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi){ + if (bdi->ptr_nvm_inf) + bdbm_msg("create succeeds"); + else + bdbm_msg("something wrong happens"); + return 0; +} + +#if 0 + +uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi) +{ + bdbm_nvm_dev_private_t* p = NULL; + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + + /* create a private data structure */ + if ((p = (bdbm_nvm_dev_private_t*)bdbm_zmalloc + (sizeof (bdbm_nvm_dev_private_t))) == NULL) { + bdbm_error ("bdbm_malloc failed"); + return 1; + } + + /* initialize */ + _nvm_dev.ptr_private = (void*)p; + + p->np = np; + p->nr_total_blks = np->nr_nvm_blocks; + bdbm_spin_lock_init (&p->nvm_lock); + + + /* allocate nvm block metadata structures */ + if ((p->ptr_nvm_tbl = bdbm_zmalloc(sizeof(bdbm_nvm_block_t) * p->nr_total_blks))==NULL){ + goto fail; + } + + /* allocate ram for nvm cache space */ + + + +} // end of bdbm_nvm_create + + + + + + + + /* create 'bdbm_abm_info' with pst */ + if ((p->bai = bdbm_abm_create (np, 1)) == NULL) { + bdbm_error ("bdbm_abm_create failed"); + bdbm_page_ftl_destroy (bdi); + return 1; + } + + /* create a mapping table */ + if ((p->ptr_mapping_table = __bdbm_page_ftl_create_mapping_table (np)) == NULL) { + bdbm_error ("__bdbm_page_ftl_create_mapping_table failed"); + bdbm_page_ftl_destroy (bdi); + return 1; + } + + /* allocate active blocks */ + if ((p->ac_bab = __bdbm_page_ftl_create_active_blocks (np, p->bai)) == NULL) { + bdbm_error ("__bdbm_page_ftl_create_active_blocks failed"); + bdbm_page_ftl_destroy (bdi); + return 1; + } + + /* allocate gc stuff */ + if ((p->gc_bab = (bdbm_abm_block_t**)bdbm_zmalloc + (sizeof (bdbm_abm_block_t*) * p->nr_punits)) == NULL) { + bdbm_error ("bdbm_zmalloc failed"); + bdbm_page_ftl_destroy (bdi); + return 1; + } + + if ((p->gc_hlm.llm_reqs = (bdbm_llm_req_t*)bdbm_zmalloc + (sizeof (bdbm_llm_req_t) * p->nr_punits_pages)) == NULL) { + bdbm_error ("bdbm_zmalloc failed"); + bdbm_page_ftl_destroy (bdi); + return 1; + } + bdbm_sema_init (&p->gc_hlm.done); + hlm_reqs_pool_allocate_llm_reqs (p->gc_hlm.llm_reqs, p->nr_punits_pages, RP_MEM_PHY); + + if ((p->gc_hlm_w.llm_reqs = (bdbm_llm_req_t*)bdbm_zmalloc + (sizeof (bdbm_llm_req_t) * p->nr_punits_pages)) == NULL) { + bdbm_error ("bdbm_zmalloc failed"); + bdbm_page_ftl_destroy (bdi); + return 1; + } + bdbm_sema_init (&p->gc_hlm_w.done); + hlm_reqs_pool_allocate_llm_reqs (p->gc_hlm_w.llm_reqs, p->nr_punits_pages, RP_MEM_PHY); + + return 0; +} + +void bdbm_page_ftl_destroy (bdbm_drv_info_t* bdi) +{ + bdbm_page_ftl_private_t* p = _ftl_page_ftl.ptr_private; + + if (!p) + return; + if (p->gc_hlm_w.llm_reqs) { + hlm_reqs_pool_release_llm_reqs (p->gc_hlm_w.llm_reqs, p->nr_punits_pages, RP_MEM_PHY); + bdbm_sema_free (&p->gc_hlm_w.done); + bdbm_free (p->gc_hlm_w.llm_reqs); + } + if (p->gc_hlm.llm_reqs) { + hlm_reqs_pool_release_llm_reqs (p->gc_hlm.llm_reqs, p->nr_punits_pages, RP_MEM_PHY); + bdbm_sema_free (&p->gc_hlm.done); + bdbm_free (p->gc_hlm.llm_reqs); + } + if (p->gc_bab) + bdbm_free (p->gc_bab); + if (p->ac_bab) + __bdbm_page_ftl_destroy_active_blocks (p->ac_bab); + if (p->ptr_mapping_table) + __bdbm_page_ftl_destroy_mapping_table (p->ptr_mapping_table); + if (p->bai) + bdbm_abm_destroy (p->bai); + bdbm_free (p); +} + +uint32_t bdbm_page_ftl_get_free_ppa ( + bdbm_drv_info_t* bdi, + int64_t lpa, + bdbm_phyaddr_t* ppa) +{ + bdbm_page_ftl_private_t* p = _ftl_page_ftl.ptr_private; + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + bdbm_abm_block_t* b = NULL; + uint64_t curr_channel; + uint64_t curr_chip; + + /* get the channel & chip numbers */ + curr_channel = p->curr_puid % np->nr_channels; + curr_chip = p->curr_puid / np->nr_channels; + + /* get the physical offset of the active blocks */ + b = p->ac_bab[curr_channel * np->nr_chips_per_channel + curr_chip]; + ppa->channel_no = b->channel_no; + ppa->chip_no = b->chip_no; + ppa->block_no = b->block_no; + ppa->page_no = p->curr_page_ofs; + ppa->punit_id = BDBM_GET_PUNIT_ID (bdi, ppa); + + /* check some error cases before returning the physical address */ + bdbm_bug_on (ppa->channel_no != curr_channel); + bdbm_bug_on (ppa->chip_no != curr_chip); + bdbm_bug_on (ppa->page_no >= np->nr_pages_per_block); + + /* go to the next parallel unit */ + if ((p->curr_puid + 1) == p->nr_punits) { + p->curr_puid = 0; + p->curr_page_ofs++; /* go to the next page */ + + /* see if there are sufficient free pages or not */ + if (p->curr_page_ofs == np->nr_pages_per_block) { + /* get active blocks */ + if (__bdbm_page_ftl_get_active_blocks (np, p->bai, p->ac_bab) != 0) { + bdbm_error ("__bdbm_page_ftl_get_active_blocks failed"); + return 1; + } + /* ok; go ahead with 0 offset */ + /*bdbm_msg ("curr_puid = %llu", p->curr_puid);*/ + p->curr_page_ofs = 0; + } + } else { + /*bdbm_msg ("curr_puid = %llu", p->curr_puid);*/ + p->curr_puid++; + } + + return 0; +} + + + + +bdbm_page_block_t* __bdbm_page_ftl_create_mapping_table ( + bdbm_device_params_t* np) +{ + bdbm_page_mapping_entry_t* me; + uint64_t loop; + + /* create a page-level mapping table */ + if ((me = (bdbm_page_mapping_entry_t*)bdbm_zmalloc + (sizeof (bdbm_page_mapping_entry_t) * np->nr_subpages_per_ssd)) == NULL) { + return NULL; + } + + /* initialize a page-level mapping table */ + for (loop = 0; loop < np->nr_subpages_per_ssd; loop++) { + me[loop].status = PFTL_PAGE_NOT_ALLOCATED; + me[loop].phyaddr.channel_no = PFTL_PAGE_INVALID_ADDR; + me[loop].phyaddr.chip_no = PFTL_PAGE_INVALID_ADDR; + me[loop].phyaddr.block_no = PFTL_PAGE_INVALID_ADDR; + me[loop].phyaddr.page_no = PFTL_PAGE_INVALID_ADDR; + me[loop].sp_off = -1; + } + + /* return a set of mapping entries */ + return me; +} + +#endif diff --git a/frontend/kernel/nvm_cache_bak/nvm_cache.h b/frontend/kernel/nvm_cache_bak/nvm_cache.h new file mode 100644 index 0000000..85e487a --- /dev/null +++ b/frontend/kernel/nvm_cache_bak/nvm_cache.h @@ -0,0 +1,82 @@ +#if defined (KERNEL_MODE) +#include +//#include +//include +//#include + +#elif defined (USER_MODE) +#include +#include + +#else +#error Invalid Platform (KERNEL_MODE or USER_MODE) +#endif + +//#include "bdbm_drv.h" +//#include "debug.h" +//#include "umemory.h" +//#include "params.h" +//#include "utime.h" +//#include "uthread.h" + + +enum BDBM_NVM_BLK_STATUS { + BDBM_NVM_BLK_FREE = 0, + BDBM_NVM_BLK_CLEAN, + BDBM_NVM_BLK_DIRTY, +}; + +typedef struct { + uint8_t status; + bdbm_logaddr_t logaddr; +// bdbm_phyaddr_t phyaddr; +// struct list_head list; /* for lru list */ + void* ptr_nvmram_data; +} bdbm_nvm_block_t; + +typedef struct { + bdbm_device_params_t* np; + uint64_t nr_total_blks; + bdbm_spinlock_t nvm_lock; + + bdbm_nvm_block_t* ptr_nvm_tbl; + + void* ptr_nvmram; /* DRAM memory for nvm */ + struct list_head lru_list; + +// bdbm_nvm_block_t* ptr_lru_list; + +} bdbm_nvm_dev_private_t; + + +#if 0 +bdbm_abm_info_t* bdbm_abm_create (bdbm_device_params_t* np, uint8_t use_pst); +void bdbm_abm_destroy (bdbm_abm_info_t* bai); +bdbm_abm_block_t* bdbm_abm_get_block (bdbm_abm_info_t* bai, uint64_t channel_no, uint64_t chip_no, uint64_t block_no); +bdbm_abm_block_t* bdbm_abm_get_free_block_prepare (bdbm_abm_info_t* bai, uint64_t channel_no, uint64_t chip_no); +void bdbm_abm_get_free_block_rollback (bdbm_abm_info_t* bai, bdbm_abm_block_t* blk); +void bdbm_abm_get_free_block_commit (bdbm_abm_info_t* bai, bdbm_abm_block_t* blk); +void bdbm_abm_erase_block (bdbm_abm_info_t* bai, uint64_t channel_no, uint64_t chip_no, uint64_t block_no, uint8_t is_bad); +void bdbm_abm_invalidate_page (bdbm_abm_info_t* bai, uint64_t channel_no, uint64_t chip_no, uint64_t block_no, uint64_t page_no, uint64_t subpage_no); +void bdbm_abm_set_to_dirty_block (bdbm_abm_info_t* bai, uint64_t channel_no, uint64_t chip_no, uint64_t block_no); + +static inline uint64_t bdbm_abm_get_nr_free_blocks (bdbm_abm_info_t* bai) { return bai->nr_free_blks; } +static inline uint64_t bdbm_abm_get_nr_free_blocks_prepared (bdbm_abm_info_t* bai) { return bai->nr_free_blks_prepared; } +static inline uint64_t bdbm_abm_get_nr_clean_blocks (bdbm_abm_info_t* bai) { return bai->nr_clean_blks; } +static inline uint64_t bdbm_abm_get_nr_dirty_blocks (bdbm_abm_info_t* bai) { return bai->nr_dirty_blks; } +static inline uint64_t bdbm_abm_get_nr_total_blocks (bdbm_abm_info_t* bai) { return bai->nr_total_blks; } + +uint32_t bdbm_abm_load (bdbm_abm_info_t* bai, const char* fn); +uint32_t bdbm_abm_store (bdbm_abm_info_t* bai, const char* fn); + +#define bdbm_abm_list_for_each_dirty_block(pos, bai, channel_no, chip_no) \ + list_for_each (pos, &(bai->list_head_dirty[channel_no][chip_no])) +#define bdbm_abm_fetch_dirty_block(pos) \ + list_entry (pos, bdbm_abm_block_t, list) +/* (example:) + * bdbm_abm_list_for_each_dirty_block (pos, p->bai, j, k) { + b = bdbm_abm_fetch_dirty_block (pos); + } + */ + +#endif diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index a1f586b..1819192 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -1,3 +1,6 @@ +#define NVM_CACHE +//#define NVM_CACHE_PARAM + /* The MIT License (MIT) @@ -174,6 +177,7 @@ typedef struct { uint8_t* kp_pad[BDBM_MAX_PAGES]; } bdbm_flash_page_main_t; + typedef struct { uint8_t* data; } bdbm_flash_page_oob_t; @@ -248,6 +252,23 @@ typedef struct { void (*end_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req); } bdbm_host_inf_t; +#ifdef NVM_CACHE +typedef struct { + void* ptr_private; + uint32_t (*create) (bdbm_drv_info_t* bdi); +#if 0 + void (*destroy) (bdbm_drv_info_t* bdi); + uint32_t (*get_free_ppa) (bdbm_drv_info_t* bdi, int64_t lpa, bdbm_phyaddr_t* ppa); + uint32_t (*get_ppa) (bdbm_drv_info_t* bdi, int64_t lpa, bdbm_phyaddr_t* ppa, uint64_t* sp_off); + uint32_t (*map_lpa_to_ppa) (bdbm_drv_info_t* bdi, bdbm_logaddr_t* logaddr, bdbm_phyaddr_t* ppa); + uint32_t (*invalidate_lpa) (bdbm_drv_info_t* bdi, int64_t lpa, uint64_t len); + + uint32_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_nvm_req_t* req); + void (*end_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req); +#endif +} bdbm_nvm_inf_t; +#endif + /* a generic high-level memory manager interface */ typedef struct { void* ptr_private; @@ -379,6 +400,10 @@ struct _bdbm_drv_info_t { bdbm_hlm_inf_t* ptr_hlm_inf; bdbm_llm_inf_t* ptr_llm_inf; bdbm_ftl_inf_t* ptr_ftl_inf; +#ifdef NVM_CACHE +// bdbm_nvm_params_t parm_nvm; + bdbm_nvm_inf_t* ptr_nvm_inf; +#endif bdbm_perf_monitor_t pm; }; diff --git a/include/params.h b/include/params.h index 3ca422b..9e4bfb9 100644 --- a/include/params.h +++ b/include/params.h @@ -130,6 +130,9 @@ typedef struct { uint64_t nr_subpages_per_block; uint64_t nr_subpages_per_page; uint64_t nr_subpages_per_ssd; /* subpage size must be4 KB */ +#ifdef NVM_CACHE_PARAM + uint64_t nr_nvm_blocks; +#endif } bdbm_device_params_t; #endif /* _BLUEDBM_PARAMS_H */ diff --git a/tags b/tags new file mode 100644 index 0000000..cdcf04e --- /dev/null +++ b/tags @@ -0,0 +1,4296 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.9~svn20110310 // +ACA_UNSUPPORTED tools/nvme/scsi.c 104;" d file: +ACA_UNSUPPORTED tools/nvmedrv-v4.5.3/scsi.c 104;" d file: +ACTIVATE_DEFERRED_MICROCODE tools/nvme/scsi.c 86;" d file: +ACTIVATE_DEFERRED_MICROCODE tools/nvmedrv-v4.5.3/scsi.c 86;" d file: +ADDITIONAL_STD_INQ_LENGTH tools/nvme/scsi.c 106;" d file: +ADDITIONAL_STD_INQ_LENGTH tools/nvmedrv-v4.5.3/scsi.c 106;" d file: +ADDR_POOL_SIZE tools/lightnvm-v4.5.3/rrpc.c 1083;" d file: +ADDR_POOL_SIZE tools/lightnvm/rrpc.c 1083;" d file: +ADMIN_TIMEOUT tools/nvme/nvme.h 36;" d +ADMIN_TIMEOUT tools/nvmedrv-v4.5.3/nvme.h 36;" d +ALL_LUNS_RETURNED tools/nvme/scsi.c 72;" d file: +ALL_LUNS_RETURNED tools/nvmedrv-v4.5.3/scsi.c 72;" d file: +ALL_WELL_KNOWN_LUNS_RETURNED tools/nvme/scsi.c 73;" d file: +ALL_WELL_KNOWN_LUNS_RETURNED tools/nvmedrv-v4.5.3/scsi.c 73;" d file: +ATOMIC64_INIT common/3rd/uatomic64.h 12;" d +ATOMIC_INIT common/3rd/uatomic.h 12;" d +BABM_ABM_SUBPAGE_NOT_INVALID ftl/algo/abm.h /^ BABM_ABM_SUBPAGE_NOT_INVALID = 0,$/;" e enum:BDBM_ABM_SUBPAGE_STATUS +BDBM_ABM_BLK_BAD ftl/algo/abm.h /^ BDBM_ABM_BLK_BAD,$/;" e enum:BDBM_ABM_BLK_STATUS +BDBM_ABM_BLK_CLEAN ftl/algo/abm.h /^ BDBM_ABM_BLK_CLEAN,$/;" e enum:BDBM_ABM_BLK_STATUS +BDBM_ABM_BLK_DIRTY ftl/algo/abm.h /^ BDBM_ABM_BLK_DIRTY,$/;" e enum:BDBM_ABM_BLK_STATUS +BDBM_ABM_BLK_FREE ftl/algo/abm.h /^ BDBM_ABM_BLK_FREE = 0,$/;" e enum:BDBM_ABM_BLK_STATUS +BDBM_ABM_BLK_FREE_PREPARE ftl/algo/abm.h /^ BDBM_ABM_BLK_FREE_PREPARE,$/;" e enum:BDBM_ABM_BLK_STATUS +BDBM_ABM_BLK_STATUS ftl/algo/abm.h /^enum BDBM_ABM_BLK_STATUS {$/;" g +BDBM_ABM_SUBPAGE_INVALID ftl/algo/abm.h /^ BDBM_ABM_SUBPAGE_INVALID,$/;" e enum:BDBM_ABM_SUBPAGE_STATUS +BDBM_ABM_SUBPAGE_STATUS ftl/algo/abm.h /^enum BDBM_ABM_SUBPAGE_STATUS {$/;" g +BDBM_ALIGN_DOWN include/bdbm_drv.h 154;" d +BDBM_ALIGN_UP include/bdbm_drv.h 153;" d +BDBM_BADBLOCK_SCAN frontend/kernel/blkdev_ioctl.h 28;" d +BDBM_BADBLOCK_SCAN_CHECK frontend/kernel/blkdev_ioctl.h 29;" d +BDBM_BFTL_BLOCK_STATUS ftl/algo/block_ftl.c /^enum BDBM_BFTL_BLOCK_STATUS {$/;" g file: +BDBM_BFTL_PAGE_STATUS ftl/algo/block_ftl.c /^enum BDBM_BFTL_PAGE_STATUS {$/;" g file: +BDBM_BLKIO_MAX_VECS include/bdbm_drv.h 139;" d +BDBM_BLOCKIO_PROXY_IOCTL_DEVNAME frontend/hybrid/blkio_proxy_ioctl.h 51;" d +BDBM_BLOCKIO_PROXY_IOCTL_DONE frontend/hybrid/blkio_proxy_ioctl.h 54;" d +BDBM_BLOCKIO_PROXY_IOCTL_MAGIC frontend/hybrid/blkio_proxy_ioctl.h 52;" d +BDBM_BLOCKIO_PROXY_IOCTL_NAME frontend/hybrid/blkio_proxy_ioctl.h 50;" d +BDBM_DEFAULT_NAND_PARAMS devices/common/dev_params.c /^enum BDBM_DEFAULT_NAND_PARAMS {$/;" g file: +BDBM_DFTL_PAGE_STATUS ftl/algo/dftl_map.h /^enum BDBM_DFTL_PAGE_STATUS {$/;" g +BDBM_DM_IOCTL_CLOSE devices/common/dev_stub.h 65;" d +BDBM_DM_IOCTL_DEVNAME devices/common/dev_stub.h 60;" d +BDBM_DM_IOCTL_END_REQ devices/common/dev_stub.h 67;" d +BDBM_DM_IOCTL_LOAD devices/common/dev_stub.h 68;" d +BDBM_DM_IOCTL_MAGIC devices/common/dev_stub.h 61;" d +BDBM_DM_IOCTL_MAKE_REQ devices/common/dev_stub.h 66;" d +BDBM_DM_IOCTL_NAME devices/common/dev_stub.h 59;" d +BDBM_DM_IOCTL_OPEN devices/common/dev_stub.h 64;" d +BDBM_DM_IOCTL_PROBE devices/common/dev_stub.h 63;" d +BDBM_DM_IOCTL_STORE devices/common/dev_stub.h 69;" d +BDBM_DM_PRIV include/bdbm_drv.h 80;" d +BDBM_FLASH_PAGE_SIZE devices/bluedbm/dm_bluedbm.c 249;" d file: +BDBM_FTL_PRIV include/bdbm_drv.h 83;" d +BDBM_GB include/bdbm_drv.h 64;" d +BDBM_GC_POLICY include/params.h /^enum BDBM_GC_POLICY {$/;" g +BDBM_GET_DEVICE_PARAMS include/bdbm_drv.h 75;" d +BDBM_GET_DM_INF include/bdbm_drv.h 72;" d +BDBM_GET_DRIVER_PARAMS include/bdbm_drv.h 76;" d +BDBM_GET_FTL_INF include/bdbm_drv.h 77;" d +BDBM_GET_HLM_INF include/bdbm_drv.h 73;" d +BDBM_GET_HOST_INF include/bdbm_drv.h 71;" d +BDBM_GET_LLM_INF include/bdbm_drv.h 74;" d +BDBM_GET_NR_PUNITS include/bdbm_drv.h 85;" d +BDBM_GET_PUNIT_ID include/bdbm_drv.h 87;" d +BDBM_HLM_PRIV include/bdbm_drv.h 81;" d +BDBM_HLM_TYPE include/params.h /^enum BDBM_HLM_TYPE {$/;" g +BDBM_HOST_PRIV include/bdbm_drv.h 79;" d +BDBM_KB include/bdbm_drv.h 62;" d +BDBM_LLM_PRIV include/bdbm_drv.h 82;" d +BDBM_LLM_TYPE include/params.h /^enum BDBM_LLM_TYPE {$/;" g +BDBM_MAPPING_POLICY include/params.h /^enum BDBM_MAPPING_POLICY {$/;" g +BDBM_MAX_PAGES include/bdbm_drv.h 136;" d +BDBM_MB include/bdbm_drv.h 63;" d +BDBM_NUM_TAGS devices/bluedbm/dm_bluedbm.c 250;" d file: +BDBM_PFTL_PAGE_STATUS ftl/algo/page_ftl.c /^enum BDBM_PFTL_PAGE_STATUS {$/;" g file: +BDBM_PRIOR_QUEUE_SIZE ftl/queue/prior_queue.h /^enum BDBM_PRIOR_QUEUE_SIZE {$/;" g +BDBM_PROXY_MAX_REQS frontend/hybrid/blkio_proxy_ioctl.h 29;" d +BDBM_QUEUE_POLICY include/params.h /^enum BDBM_QUEUE_POLICY {$/;" g +BDBM_QUEUE_SIZE ftl/queue/queue.h /^enum BDBM_QUEUE_SIZE {$/;" g +BDBM_RD_PRIOR_QUEUE_SIZE ftl/queue/rd_prior_queue.h /^enum BDBM_RD_PRIOR_QUEUE_SIZE {$/;" g +BDBM_REQTYPE include/bdbm_drv.h /^enum BDBM_REQTYPE {$/;" g +BDBM_SIZE_GB include/bdbm_drv.h 69;" d +BDBM_SIZE_KB include/bdbm_drv.h 67;" d +BDBM_SIZE_MB include/bdbm_drv.h 68;" d +BDBM_SNAPSHOT include/params.h /^enum BDBM_SNAPSHOT {$/;" g +BDBM_TB include/bdbm_drv.h 65;" d +BDBM_TRIM include/params.h /^enum BDBM_TRIM {$/;" g +BDBM_WL_POLICY include/params.h /^enum BDBM_WL_POLICY {$/;" g +BFTL_ALLOCATED ftl/algo/block_ftl.c /^ BFTL_ALLOCATED,$/;" e enum:BDBM_BFTL_BLOCK_STATUS file: +BFTL_DEAD ftl/algo/block_ftl.c /^ BFTL_DEAD,$/;" e enum:BDBM_BFTL_BLOCK_STATUS file: +BFTL_NOT_ALLOCATED ftl/algo/block_ftl.c /^ BFTL_NOT_ALLOCATED = 0,$/;" e enum:BDBM_BFTL_BLOCK_STATUS file: +BFTL_PG_FREE ftl/algo/block_ftl.c /^ BFTL_PG_FREE = 0,$/;" e enum:BDBM_BFTL_PAGE_STATUS file: +BFTL_PG_INVALID ftl/algo/block_ftl.c /^ BFTL_PG_INVALID,$/;" e enum:BDBM_BFTL_PAGE_STATUS file: +BFTL_PG_VALID ftl/algo/block_ftl.c /^ BFTL_PG_VALID,$/;" e enum:BDBM_BFTL_PAGE_STATUS file: +BITS_PER_DIE devices/dumbssd/dev_hynix_nvme.c 42;" d file: +BITS_PER_SLICE devices/dumbssd/dev_hynix_nvme.c 40;" d file: +BITS_PER_WU devices/dumbssd/dev_hynix_nvme.c 41;" d file: +BLKOFS devices/bluedbm/dm_bluedbm.c 52;" d file: +BOARD devices/bluedbm/Makefile /^BOARD = vc707$/;" m +BOARDDIR devices/bluedbm/Makefile /^BOARDDIR = $(BOARD)\/jni$/;" m +BUG_ON include/debug.h 78;" d +BYTES_TO_DWORDS tools/nvme/scsi.c 174;" d file: +BYTES_TO_DWORDS tools/nvmedrv-v4.5.3/scsi.c 174;" d file: +CACHING_MODE_PAGE_WCE_MASK tools/nvme/scsi.c 140;" d file: +CACHING_MODE_PAGE_WCE_MASK tools/nvmedrv-v4.5.3/scsi.c 140;" d file: +CC devices/dragonfire/Makefile /^CC = gcc $/;" m +CC devices/libdummy/Makefile /^CC = gcc $/;" m +CC devices/libramdrive/Makefile /^CC = gcc $/;" m +CC examples/stringsearch/Makefile /^CC = gcc$/;" m +CC examples/stub_test/Makefile /^CC = gcc$/;" m +CC frontend/df-user/Makefile /^CC = gcc$/;" m +CC frontend/user/Makefile /^CC = gcc$/;" m +CC tools/dumbssd-format/Makefile /^CC=gcc $/;" m +CC tools/dumbssd-test/Makefile /^CC=gcc $/;" m +CC tools/format/Makefile /^CC=gcc $/;" m +CDL_COUNT common/3rd/utlist.h 679;" d +CDL_COUNT2 common/3rd/utlist.h 682;" d +CDL_DELETE common/3rd/utlist.h 665;" d +CDL_DELETE2 common/3rd/utlist.h 668;" d +CDL_FOREACH common/3rd/utlist.h 688;" d +CDL_FOREACH2 common/3rd/utlist.h 691;" d +CDL_FOREACH_SAFE common/3rd/utlist.h 694;" d +CDL_FOREACH_SAFE2 common/3rd/utlist.h 697;" d +CDL_PREPEND common/3rd/utlist.h 648;" d +CDL_PREPEND2 common/3rd/utlist.h 651;" d +CDL_PREPEND_ELEM common/3rd/utlist.h 742;" d +CDL_REPLACE_ELEM common/3rd/utlist.h 722;" d +CDL_SEARCH common/3rd/utlist.h 712;" d +CDL_SEARCH2 common/3rd/utlist.h 715;" d +CDL_SEARCH_SCALAR common/3rd/utlist.h 702;" d +CDL_SEARCH_SCALAR2 common/3rd/utlist.h 705;" d +CDL_SORT common/3rd/utlist.h 230;" d +CDL_SORT2 common/3rd/utlist.h 233;" d +CFLAGS devices/dragonfire/Makefile /^CFLAGS := \\$/;" m +CFLAGS devices/libdummy/Makefile /^CFLAGS := \\$/;" m +CFLAGS devices/libramdrive/Makefile /^CFLAGS := \\$/;" m +CFLAGS examples/stringsearch/Makefile /^CFLAGS = -Wall -g -O2 -D_LARGEFILE64_SOURCE -D_GNU_SOURCE$/;" m +CFLAGS examples/stub_test/Makefile /^CFLAGS := -Wall -g -D_LARGEFILE64_SOURCE -D_GNU_SOURCE $/;" m +CFLAGS frontend/df-user/Makefile /^CFLAGS := -Wall -g -D_LARGEFILE64_SOURCE -D_GNU_SOURCE $/;" m +CFLAGS frontend/user/Makefile /^CFLAGS := -Wall -g -D_LARGEFILE64_SOURCE -D_GNU_SOURCE $/;" m +CFLAGS tools/dumbssd-format/Makefile /^CFLAGS=-g -Wall $/;" m +CFLAGS tools/dumbssd-test/Makefile /^CFLAGS=-g -Wall $/;" m +CFLAGS tools/format/Makefile /^CFLAGS=-g -Wall $/;" m +COMMON Makefile /^COMMON := ..\/..\/common$/;" m +COMMON devices/bluedbm/Makefile /^COMMON = ..\/..\/common$/;" m +COMMON devices/dragonfire/Makefile /^COMMON = ..\/..\/common$/;" m +COMMON devices/dumbssd/Makefile /^COMMON = ..\/..\/common$/;" m +COMMON devices/libdummy/Makefile /^COMMON = ..\/..\/common$/;" m +COMMON devices/libramdrive/Makefile /^COMMON = ..\/..\/common$/;" m +COMMON devices/ramdrive/Makefile /^COMMON = ..\/..\/common$/;" m +COMMON devices/ramdrive_timing/Makefile /^COMMON = ..\/..\/common$/;" m +COMMON examples/raw-flash/Makefile /^COMMON := ..\/..\/common$/;" m +COMMON frontend/df-user/Makefile /^COMMON := ..\/..\/common$/;" m +COMMON frontend/hybrid/Makefile /^COMMON := ..\/..\/common$/;" m +COMMON frontend/kernel/Makefile /^COMMON := ..\/..\/common$/;" m +COMMON frontend/user/Makefile /^COMMON := ..\/..\/common$/;" m +CONFIG_MODULE_SIG tools/lightnvm-v4.5.3/Makefile /^CONFIG_MODULE_SIG=n$/;" m +CONFIG_MODULE_SIG tools/lightnvm/Makefile /^CONFIG_MODULE_SIG=n$/;" m +CONFIG_MODULE_SIG tools/nvme/Makefile /^CONFIG_MODULE_SIG=n$/;" m +CONFIG_MODULE_SIG tools/nvmedrv-v4.5.3/Makefile /^CONFIG_MODULE_SIG=n$/;" m +CPPDIR devices/bluedbm/Makefile /^CPPDIR = connectal\/cpp$/;" m +CQ_SIZE tools/nvme/pci.c 51;" d file: +CQ_SIZE tools/nvmedrv-v4.5.3/pci.c 51;" d file: +CXX examples/stringsearch/Makefile /^CXX = g++$/;" m +CXXFLAGS examples/stringsearch/Makefile /^CXXFLAGS = -Wall -g -O2 -D_LARGEFILE64_SOURCE -D_GNU_SOURCE$/;" m +DATA_CHECK devices/ramdrive/dev_ramssd.c 45;" d file: +DBG_ALLOW_INPLACE_UPDATE ftl/algo/block_ftl.c 46;" d file: +DECLTYPE common/3rd/uthash.h 43;" d +DECLTYPE common/3rd/uthash.h 46;" d +DECLTYPE common/3rd/uthash.h 49;" d +DECLTYPE_ASSIGN common/3rd/uthash.h 53;" d +DECLTYPE_ASSIGN common/3rd/uthash.h 59;" d +DEFAULT_POOL_INC_SIZE ftl/hlm_reqs_pool.c 45;" d file: +DEFAULT_POOL_SIZE ftl/hlm_reqs_pool.c 44;" d file: +DEPS examples/stringsearch/Makefile /^DEPS = ss_impl.h$/;" m +DESC_FMT_SENSE_DATA_SIZE tools/nvme/scsi.c 91;" d file: +DESC_FMT_SENSE_DATA_SIZE tools/nvmedrv-v4.5.3/scsi.c 91;" d file: +DESC_FORMAT_SENSE_DATA tools/nvme/scsi.c 68;" d file: +DESC_FORMAT_SENSE_DATA tools/nvmedrv-v4.5.3/scsi.c 68;" d file: +DEVICE_TYPE_BLUEDBM include/params.h /^ DEVICE_TYPE_BLUEDBM,$/;" e enum:__anon44 +DEVICE_TYPE_END include/params.h /^ DEVICE_TYPE_END,$/;" e enum:__anon44 +DEVICE_TYPE_NOT_SPECIFIED include/params.h /^ DEVICE_TYPE_NOT_SPECIFIED = 0,$/;" e enum:__anon44 +DEVICE_TYPE_RAMDRIVE include/params.h /^ DEVICE_TYPE_RAMDRIVE = 1,$/;" e enum:__anon44 +DEVICE_TYPE_RAMDRIVE_INTR include/params.h /^ DEVICE_TYPE_RAMDRIVE_INTR,$/;" e enum:__anon44 +DEVICE_TYPE_RAMDRIVE_TIMING include/params.h /^ DEVICE_TYPE_RAMDRIVE_TIMING, $/;" e enum:__anon44 +DEVICE_TYPE_USER_DUMMY include/params.h /^ DEVICE_TYPE_USER_DUMMY,$/;" e enum:__anon44 +DEVICE_TYPE_USER_RAMDRIVE include/params.h /^ DEVICE_TYPE_USER_RAMDRIVE,$/;" e enum:__anon44 +DEV_COMMON devices/bluedbm/Makefile /^DEV_COMMON = ..\/common$/;" m +DEV_COMMON devices/dragonfire/Makefile /^DEV_COMMON = ..\/common$/;" m +DEV_COMMON devices/dumbssd/Makefile /^DEV_COMMON = ..\/common$/;" m +DEV_COMMON devices/libdummy/Makefile /^DEV_COMMON = ..\/common$/;" m +DEV_COMMON devices/ramdrive/Makefile /^DEV_COMMON = ..\/common$/;" m +DEV_COMMON devices/ramdrive_timing/Makefile /^DEV_COMMON = ..\/common$/;" m +DFTL_DIR_CLEAN ftl/algo/dftl_map.h /^ DFTL_DIR_CLEAN = DFTL_DIR_DRAM | 0x1,$/;" e enum:__anon81 +DFTL_DIR_DIRTY ftl/algo/dftl_map.h /^ DFTL_DIR_DIRTY = DFTL_DIR_DRAM | 0x2,$/;" e enum:__anon81 +DFTL_DIR_DRAM ftl/algo/dftl_map.h /^ DFTL_DIR_DRAM = 0x200,$/;" e enum:__anon81 +DFTL_DIR_EMPTY ftl/algo/dftl_map.h /^ DFTL_DIR_EMPTY = 0,$/;" e enum:__anon81 +DFTL_DIR_FLASH ftl/algo/dftl_map.h /^ DFTL_DIR_FLASH = 0x100,$/;" e enum:__anon81 +DFTL_PAGE_INVALID ftl/algo/dftl_map.h /^ DFTL_PAGE_INVALID,$/;" e enum:BDBM_DFTL_PAGE_STATUS +DFTL_PAGE_INVALID_ADDR ftl/algo/dftl_map.h /^ DFTL_PAGE_INVALID_ADDR = -1,$/;" e enum:BDBM_DFTL_PAGE_STATUS +DFTL_PAGE_NOT_EXIST ftl/algo/dftl_map.h /^ DFTL_PAGE_NOT_EXIST = 0,$/;" e enum:BDBM_DFTL_PAGE_STATUS +DFTL_PAGE_NOT_MAPPED ftl/algo/dftl_map.h /^ DFTL_PAGE_NOT_MAPPED,$/;" e enum:BDBM_DFTL_PAGE_STATUS +DFTL_PAGE_VALID ftl/algo/dftl_map.h /^ DFTL_PAGE_VALID,$/;" e enum:BDBM_DFTL_PAGE_STATUS +DL_APPEND common/3rd/utlist.h 519;" d +DL_APPEND2 common/3rd/utlist.h 522;" d +DL_CONCAT common/3rd/utlist.h 415;" d +DL_CONCAT common/3rd/utlist.h 536;" d +DL_CONCAT2 common/3rd/utlist.h 539;" d +DL_COUNT common/3rd/utlist.h 575;" d +DL_COUNT2 common/3rd/utlist.h 578;" d +DL_DELETE common/3rd/utlist.h 554;" d +DL_DELETE2 common/3rd/utlist.h 557;" d +DL_FOREACH common/3rd/utlist.h 584;" d +DL_FOREACH2 common/3rd/utlist.h 587;" d +DL_FOREACH_SAFE common/3rd/utlist.h 591;" d +DL_FOREACH_SAFE2 common/3rd/utlist.h 594;" d +DL_PREPEND common/3rd/utlist.h 504;" d +DL_PREPEND2 common/3rd/utlist.h 507;" d +DL_PREPEND_ELEM common/3rd/utlist.h 629;" d +DL_REPLACE_ELEM common/3rd/utlist.h 603;" d +DL_SEARCH common/3rd/utlist.h 599;" d +DL_SEARCH2 common/3rd/utlist.h 601;" d +DL_SEARCH_SCALAR common/3rd/utlist.h 598;" d +DL_SEARCH_SCALAR2 common/3rd/utlist.h 600;" d +DL_SORT common/3rd/utlist.h 168;" d +DL_SORT2 common/3rd/utlist.h 171;" d +DMLIB frontend/df-user/Makefile /^DMLIB := ..\/..\/devices\/dragonfire\/libdf.a # a device driver library for DragonFire cards (written by VVDN)$/;" m +DMLIB frontend/user/Makefile /^DMLIB := ..\/..\/devices\/libramdrive\/libramdrive.a$/;" m +DMPROXY frontend/df-user/Makefile /^DMPROXY := dev_proxy.c # a device manager proxy$/;" m +DM_COMMON Makefile /^DM_COMMON := ..\/..\/devices\/common$/;" m +DM_COMMON devices/libramdrive/Makefile /^DM_COMMON = ..\/common$/;" m +DM_COMMON frontend/hybrid/Makefile /^DM_COMMON := ..\/..\/devices\/common$/;" m +DM_COMMON frontend/kernel/Makefile /^DM_COMMON := ..\/..\/devices\/common$/;" m +DM_COMMON frontend/user/Makefile /^DM_COMMON := ..\/..\/devices\/common$/;" m +DM_COMMON_DF frontend/df-user/Makefile /^DM_COMMON_DF := ..\/..\/devices\/dragonfire$/;" m +DOWNLOAD_SAVE_ACTIVATE tools/nvme/scsi.c 84;" d file: +DOWNLOAD_SAVE_ACTIVATE tools/nvmedrv-v4.5.3/scsi.c 84;" d file: +DOWNLOAD_SAVE_DEFER_ACTIVATE tools/nvme/scsi.c 85;" d file: +DOWNLOAD_SAVE_DEFER_ACTIVATE tools/nvmedrv-v4.5.3/scsi.c 85;" d file: +ELMT_FROM_HH common/3rd/uthash.h 117;" d +ENABLE_HYNIX_DEV tools/nvme/core.c 47;" d file: +ENABLE_HYNIX_DEV tools/nvmedrv-v4.5.3/core.c 47;" d file: +ENABLE_SEQ_DBG devices/dumbssd/dm_dumbssd.c 47;" d file: +EXTENDED_INQUIRY_DATA_PAGE_LENGTH tools/nvme/scsi.c 107;" d file: +EXTENDED_INQUIRY_DATA_PAGE_LENGTH tools/nvmedrv-v4.5.3/scsi.c 107;" d file: +EXTRA_CFLAGS Makefile /^EXTRA_CFLAGS := \\$/;" m +EXTRA_CFLAGS devices/bluedbm/Makefile /^EXTRA_CFLAGS := \\$/;" m +EXTRA_CFLAGS devices/bluedbm/Makefile /^EXTRA_CFLAGS = -D BOARD_VC707$/;" m +EXTRA_CFLAGS devices/dumbssd/Makefile /^EXTRA_CFLAGS := \\$/;" m +EXTRA_CFLAGS devices/ramdrive/Makefile /^EXTRA_CFLAGS := \\$/;" m +EXTRA_CFLAGS devices/ramdrive_timing/Makefile /^EXTRA_CFLAGS := \\$/;" m +EXTRA_CFLAGS examples/raw-flash/Makefile /^EXTRA_CFLAGS := -I$(PWD)\/..\/..\/include$/;" m +EXTRA_CFLAGS frontend/hybrid/Makefile /^EXTRA_CFLAGS := \\$/;" m +EXTRA_CFLAGS frontend/kernel/Makefile /^EXTRA_CFLAGS := \\$/;" m +FIRST_MINOR devices/common/dev_stub.c /^static int FIRST_MINOR = 0;$/;" v file: +FIRST_MINOR frontend/hybrid/blkio_proxy.c /^static int FIRST_MINOR = 0;$/;" v file: +FIXED_FMT_SENSE_DATA_SIZE tools/nvme/scsi.c 90;" d file: +FIXED_FMT_SENSE_DATA_SIZE tools/nvmedrv-v4.5.3/scsi.c 90;" d file: +FIXED_SENSE_DATA tools/nvme/scsi.c 67;" d file: +FIXED_SENSE_DATA tools/nvmedrv-v4.5.3/scsi.c 67;" d file: +FIXED_SENSE_DATA_ADD_LENGTH tools/nvme/scsi.c 69;" d file: +FIXED_SENSE_DATA_ADD_LENGTH tools/nvmedrv-v4.5.3/scsi.c 69;" d file: +FLASH_RAW_ERASE examples/raw-flash/raw-flash.c /^ FLASH_RAW_ERASE = 0x0010,$/;" e enum:__anon21 file: +FLASH_RAW_PUNIT_BUSY examples/raw-flash/raw-flash.c /^ FLASH_RAW_PUNIT_BUSY = 1,$/;" e enum:__anon22 file: +FLASH_RAW_PUNIT_IDLE examples/raw-flash/raw-flash.c /^ FLASH_RAW_PUNIT_IDLE = 0,$/;" e enum:__anon22 file: +FLASH_RAW_READ examples/raw-flash/raw-flash.c /^ FLASH_RAW_READ = 0x0020,$/;" e enum:__anon21 file: +FLASH_RAW_WRITE examples/raw-flash/raw-flash.c /^ FLASH_RAW_WRITE = 0x0030,$/;" e enum:__anon21 file: +FORMAT_UNIT_IMMED_MASK tools/nvme/scsi.c 87;" d file: +FORMAT_UNIT_IMMED_MASK tools/nvmedrv-v4.5.3/scsi.c 87;" d file: +FORMAT_UNIT_IMMED_OFFSET tools/nvme/scsi.c 88;" d file: +FORMAT_UNIT_IMMED_OFFSET tools/nvmedrv-v4.5.3/scsi.c 88;" d file: +FORMAT_UNIT_LONG_PARM_LIST_LEN tools/nvme/scsi.c 61;" d file: +FORMAT_UNIT_LONG_PARM_LIST_LEN tools/nvmedrv-v4.5.3/scsi.c 61;" d file: +FORMAT_UNIT_PROT_FIELD_USAGE_MASK tools/nvme/scsi.c 64;" d file: +FORMAT_UNIT_PROT_FIELD_USAGE_MASK tools/nvmedrv-v4.5.3/scsi.c 64;" d file: +FORMAT_UNIT_PROT_FIELD_USAGE_OFFSET tools/nvme/scsi.c 63;" d file: +FORMAT_UNIT_PROT_FIELD_USAGE_OFFSET tools/nvmedrv-v4.5.3/scsi.c 63;" d file: +FORMAT_UNIT_PROT_INT_OFFSET tools/nvme/scsi.c 62;" d file: +FORMAT_UNIT_PROT_INT_OFFSET tools/nvmedrv-v4.5.3/scsi.c 62;" d file: +FORMAT_UNIT_SHORT_PARM_LIST_LEN tools/nvme/scsi.c 60;" d file: +FORMAT_UNIT_SHORT_PARM_LIST_LEN tools/nvmedrv-v4.5.3/scsi.c 60;" d file: +FTL Makefile /^FTL := ..\/..\/ftl$/;" m +FTL examples/stub_test/Makefile /^FTL := ..\/..\/ftl$/;" m +FTL frontend/df-user/Makefile /^FTL := ..\/..\/ftl$/;" m +FTL frontend/hybrid/Makefile /^FTL := ..\/..\/ftl$/;" m +FTL frontend/kernel/Makefile /^FTL := ..\/..\/ftl$/;" m +FTL frontend/user/Makefile /^FTL := ..\/..\/ftl$/;" m +FlashIndication_cbTable devices/bluedbm/dm_bluedbm.c /^FlashIndicationCb FlashIndication_cbTable = {$/;" v +FlashIndicationdebugDumpResp_cb devices/bluedbm/dm_bluedbm.c /^void FlashIndicationdebugDumpResp_cb ( struct PortalInternal *p, const uint32_t debug0, const uint32_t debug1, const uint32_t debug2, const uint32_t debug3, const uint32_t debug4, const uint32_t debug5 )$/;" f +FlashIndicationeraseDone_cb devices/bluedbm/dm_bluedbm.c /^void FlashIndicationeraseDone_cb ( struct PortalInternal *p, const uint32_t tag, const uint32_t status )$/;" f +FlashIndicationreadDone_cb devices/bluedbm/dm_bluedbm.c /^void FlashIndicationreadDone_cb (struct PortalInternal *p, const uint32_t tag)$/;" f +FlashIndicationwriteDone_cb devices/bluedbm/dm_bluedbm.c /^void FlashIndicationwriteDone_cb ( struct PortalInternal *p, const uint32_t tag )$/;" f +GC_LIMIT_INVERSE tools/lightnvm-v4.5.3/rrpc.h 30;" d +GC_LIMIT_INVERSE tools/lightnvm/rrpc.h 30;" d +GC_POLICY_COST_BENEFIT include/params.h /^ GC_POLICY_COST_BENEFIT,$/;" e enum:BDBM_GC_POLICY +GC_POLICY_GREEDY include/params.h /^ GC_POLICY_GREEDY,$/;" e enum:BDBM_GC_POLICY +GC_POLICY_MERGE include/params.h /^ GC_POLICY_MERGE,$/;" e enum:BDBM_GC_POLICY +GC_POLICY_NOT_SPECIFIED include/params.h /^ GC_POLICY_NOT_SPECIFIED = 0,$/;" e enum:BDBM_GC_POLICY +GC_POLICY_RAMDOM include/params.h /^ GC_POLICY_RAMDOM,$/;" e enum:BDBM_GC_POLICY +GC_TIME_SECS tools/lightnvm-v4.5.3/rrpc.h 31;" d +GC_TIME_SECS tools/lightnvm/rrpc.h 31;" d +GENNVM_H_ tools/lightnvm-v4.5.3/gennvm.h 16;" d +GENNVM_H_ tools/lightnvm/gennvm.h 16;" d +GFP_KERNEL common/utils/upage.h 32;" d +HARDWARE_FLAGS devices/bluedbm/Makefile /^HARDWARE_FLAGS = -D VC707$/;" m +HASH_ADD common/3rd/uthash.h 185;" d +HASH_ADD_INT common/3rd/uthash.h 285;" d +HASH_ADD_KEYPTR common/3rd/uthash.h 198;" d +HASH_ADD_PTR common/3rd/uthash.h 291;" d +HASH_ADD_STR common/3rd/uthash.h 279;" d +HASH_ADD_TO_BKT common/3rd/uthash.h 636;" d +HASH_BER common/3rd/uthash.h 380;" d +HASH_BKT_CAPACITY_THRESH common/3rd/uthash.h 114;" d +HASH_BLOOM_ADD common/3rd/uthash.h 152;" d +HASH_BLOOM_ADD common/3rd/uthash.h 161;" d +HASH_BLOOM_BITLEN common/3rd/uthash.h 133;" d +HASH_BLOOM_BITSET common/3rd/uthash.h 149;" d +HASH_BLOOM_BITTEST common/3rd/uthash.h 150;" d +HASH_BLOOM_BYTELEN common/3rd/uthash.h 134;" d +HASH_BLOOM_BYTELEN common/3rd/uthash.h 163;" d +HASH_BLOOM_FREE common/3rd/uthash.h 144;" d +HASH_BLOOM_FREE common/3rd/uthash.h 160;" d +HASH_BLOOM_MAKE common/3rd/uthash.h 135;" d +HASH_BLOOM_MAKE common/3rd/uthash.h 159;" d +HASH_BLOOM_SIGNATURE common/3rd/uthash.h 927;" d +HASH_BLOOM_TEST common/3rd/uthash.h 155;" d +HASH_BLOOM_TEST common/3rd/uthash.h 162;" d +HASH_CLEAR common/3rd/uthash.h 874;" d +HASH_CNT common/3rd/uthash.h 903;" d +HASH_COUNT common/3rd/uthash.h 902;" d +HASH_DEL common/3rd/uthash.h 295;" d +HASH_DELETE common/3rd/uthash.h 240;" d +HASH_DEL_IN_BKT common/3rd/uthash.h 650;" d +HASH_EMIT_KEY common/3rd/uthash.h 362;" d +HASH_EMIT_KEY common/3rd/uthash.h 369;" d +HASH_EXPAND_BUCKETS common/3rd/uthash.h 691;" d +HASH_FCN common/3rd/uthash.h 374;" d +HASH_FCN common/3rd/uthash.h 376;" d +HASH_FIND common/3rd/uthash.h 119;" d +HASH_FIND_INT common/3rd/uthash.h 283;" d +HASH_FIND_IN_BKT common/3rd/uthash.h 622;" d +HASH_FIND_PTR common/3rd/uthash.h 289;" d +HASH_FIND_STR common/3rd/uthash.h 277;" d +HASH_FNV common/3rd/uthash.h 402;" d +HASH_FSCK common/3rd/uthash.h 303;" d +HASH_FSCK common/3rd/uthash.h 355;" d +HASH_INITIAL_NUM_BUCKETS common/3rd/uthash.h 112;" d +HASH_INITIAL_NUM_BUCKETS_LOG2 common/3rd/uthash.h 113;" d +HASH_ITER common/3rd/uthash.h 892;" d +HASH_ITER common/3rd/uthash.h 896;" d +HASH_JEN common/3rd/uthash.h 441;" d +HASH_JEN_MIX common/3rd/uthash.h 428;" d +HASH_KEYCMP common/3rd/uthash.h 619;" d +HASH_MAKE_TABLE common/3rd/uthash.h 166;" d +HASH_MUR common/3rd/uthash.h 579;" d +HASH_OAT common/3rd/uthash.h 412;" d +HASH_OOPS common/3rd/uthash.h 302;" d +HASH_OVERHEAD common/3rd/uthash.h 885;" d +HASH_REPLACE common/3rd/uthash.h 188;" d +HASH_REPLACE_INT common/3rd/uthash.h 287;" d +HASH_REPLACE_PTR common/3rd/uthash.h 293;" d +HASH_REPLACE_STR common/3rd/uthash.h 281;" d +HASH_SAX common/3rd/uthash.h 392;" d +HASH_SELECT common/3rd/uthash.h 836;" d +HASH_SFH common/3rd/uthash.h 493;" d +HASH_SIGNATURE common/3rd/uthash.h 926;" d +HASH_SORT common/3rd/uthash.h 743;" d +HASH_SRT common/3rd/uthash.h 744;" d +HASH_TO_BKT common/3rd/uthash.h 223;" d +HDIO_GETGEO_BIG frontend/kernel/blkdev_ioctl.h 36;" d +HDIO_GETGEO_BIG_RAW frontend/kernel/blkdev_ioctl.h 40;" d +HLIST_HEAD common/3rd/ulist.h 386;" d +HLIST_HEAD_INIT common/3rd/ulist.h 385;" d +HLM_BUFFER include/params.h /^ HLM_BUFFER,$/;" e enum:BDBM_HLM_TYPE +HLM_DFTL include/params.h /^ HLM_DFTL,$/;" e enum:BDBM_HLM_TYPE +HLM_NOT_SPECIFIED include/params.h /^ HLM_NOT_SPECIFIED = 0,$/;" e enum:BDBM_HLM_TYPE +HLM_NO_BUFFER include/params.h /^ HLM_NO_BUFFER,$/;" e enum:BDBM_HLM_TYPE +INCLUDE Makefile /^INCLUDE := ..\/..\/include$/;" m +INCLUDE devices/bluedbm/Makefile /^INCLUDE = ..\/..\/include$/;" m +INCLUDE devices/dragonfire/Makefile /^INCLUDE = ..\/..\/include$/;" m +INCLUDE devices/dumbssd/Makefile /^INCLUDE = ..\/..\/include$/;" m +INCLUDE devices/libdummy/Makefile /^INCLUDE = ..\/..\/include$/;" m +INCLUDE devices/libramdrive/Makefile /^INCLUDE = ..\/..\/include$/;" m +INCLUDE devices/ramdrive/Makefile /^INCLUDE = ..\/..\/include$/;" m +INCLUDE devices/ramdrive_timing/Makefile /^INCLUDE = ..\/..\/include$/;" m +INCLUDE examples/raw-flash/Makefile /^INCLUDE := ..\/..\/include$/;" m +INCLUDE frontend/df-user/Makefile /^INCLUDE := ..\/..\/include$/;" m +INCLUDE frontend/hybrid/Makefile /^INCLUDE := ..\/..\/include$/;" m +INCLUDE frontend/kernel/Makefile /^INCLUDE := ..\/..\/include$/;" m +INCLUDE frontend/user/Makefile /^INCLUDE := ..\/..\/include$/;" m +INCLUDES devices/dragonfire/Makefile /^INCLUDES := \\$/;" m +INCLUDES devices/libdummy/Makefile /^INCLUDES := \\$/;" m +INCLUDES devices/libramdrive/Makefile /^INCLUDES := \\$/;" m +INCLUDES examples/stringsearch/Makefile /^INCLUDES =$/;" m +INCLUDES examples/stub_test/Makefile /^INCLUDES = \\$/;" m +INCLUDES frontend/df-user/Makefile /^INCLUDES = -I$(PWD)\/$(INCLUDE) \\$/;" m +INCLUDES frontend/user/Makefile /^INCLUDES = -I$(PWD)\/$(INCLUDE) \\$/;" m +INCLUDES tools/dumbssd-format/Makefile /^INCLUDES= $/;" m +INCLUDES tools/dumbssd-test/Makefile /^INCLUDES= $/;" m +INCLUDES tools/format/Makefile /^INCLUDES= $/;" m +INFINITE_PRIOR_QUEUE ftl/queue/prior_queue.h /^ INFINITE_PRIOR_QUEUE = -1,$/;" e enum:BDBM_PRIOR_QUEUE_SIZE +INFINITE_QUEUE ftl/queue/queue.h /^ INFINITE_QUEUE = -1,$/;" e enum:BDBM_QUEUE_SIZE +INFINITE_RD_PRIOR_QUEUE ftl/queue/rd_prior_queue.h /^ INFINITE_RD_PRIOR_QUEUE = -1,$/;" e enum:BDBM_RD_PRIOR_QUEUE_SIZE +INIT_HLIST_HEAD common/3rd/ulist.h 387;" d +INIT_HLIST_NODE common/3rd/ulist.h 388;" d +INIT_LIST_HEAD common/3rd/ulist.h 73;" d +INQ_BDEV_CHARACTERISTICS_PAGE tools/nvme/scsi.c 100;" d file: +INQ_BDEV_CHARACTERISTICS_PAGE tools/nvmedrv-v4.5.3/scsi.c 100;" d file: +INQ_BDEV_LIMITS_PAGE tools/nvme/scsi.c 99;" d file: +INQ_BDEV_LIMITS_PAGE tools/nvmedrv-v4.5.3/scsi.c 99;" d file: +INQ_DEVICE_IDENTIFICATION_PAGE tools/nvme/scsi.c 97;" d file: +INQ_DEVICE_IDENTIFICATION_PAGE tools/nvmedrv-v4.5.3/scsi.c 97;" d file: +INQ_EXTENDED_INQUIRY_DATA_PAGE tools/nvme/scsi.c 98;" d file: +INQ_EXTENDED_INQUIRY_DATA_PAGE tools/nvmedrv-v4.5.3/scsi.c 98;" d file: +INQ_NUM_SUPPORTED_VPD_PAGES tools/nvme/scsi.c 102;" d file: +INQ_NUM_SUPPORTED_VPD_PAGES tools/nvmedrv-v4.5.3/scsi.c 102;" d file: +INQ_SERIAL_NUMBER_LENGTH tools/nvme/scsi.c 101;" d file: +INQ_SERIAL_NUMBER_LENGTH tools/nvmedrv-v4.5.3/scsi.c 101;" d file: +INQ_STANDARD_INQUIRY_PAGE tools/nvme/scsi.c 94;" d file: +INQ_STANDARD_INQUIRY_PAGE tools/nvmedrv-v4.5.3/scsi.c 94;" d file: +INQ_SUPPORTED_VPD_PAGES_PAGE tools/nvme/scsi.c 95;" d file: +INQ_SUPPORTED_VPD_PAGES_PAGE tools/nvmedrv-v4.5.3/scsi.c 95;" d file: +INQ_UNIT_SERIAL_NUMBER_PAGE tools/nvme/scsi.c 96;" d file: +INQ_UNIT_SERIAL_NUMBER_PAGE tools/nvmedrv-v4.5.3/scsi.c 96;" d file: +KBUILD_EXTRA_SYMBOLS Makefile /^KBUILD_EXTRA_SYMBOLS := $(PWD)\/..\/..\/devices\/ramdrive_timing\/Module.symvers$/;" m +KBUILD_EXTRA_SYMBOLS devices/bluedbm/Makefile /^KBUILD_EXTRA_SYMBOLS := \\$/;" m +KBUILD_EXTRA_SYMBOLS examples/raw-flash/Makefile /^KBUILD_EXTRA_SYMBOLS := $(PWD)\/..\/..\/devices\/bluedbm\/Module.symvers$/;" m +KBUILD_EXTRA_SYMBOLS frontend/kernel/Makefile /^KBUILD_EXTRA_SYMBOLS := $(PWD)\/..\/..\/devices\/ramdrive_timing\/Module.symvers$/;" m +KBUILD_EXTRA_SYMBOLS tools/nvme/Makefile /^KBUILD_EXTRA_SYMBOLS := $(PWD)\/..\/..\/devices\/dumbssd\/Module.symvers$/;" m +KBUILD_EXTRA_SYMBOLS tools/nvmedrv-v4.5.3/Makefile /^KBUILD_EXTRA_SYMBOLS := $(PWD)\/..\/..\/devices\/dumbssd\/Module.symvers$/;" m +KELVIN_TEMP_FACTOR tools/nvme/scsi.c 89;" d file: +KELVIN_TEMP_FACTOR tools/nvmedrv-v4.5.3/scsi.c 89;" d file: +KERN frontend/hybrid/Makefile /^KERN := ..\/kernel$/;" m +KERNEL_PAGE_SIZE include/bdbm_drv.h 30;" d +KERNEL_PAGE_SIZE include/bdbm_drv.h 44;" d +KERNEL_SECTOR_SIZE include/params.h 29;" d +KPAGE_SIZE include/bdbm_drv.h 57;" d +KP_STT_DATA include/bdbm_drv.h /^ KP_STT_DATA = 0x20,$/;" e enum:__anon27 +KP_STT_DATA_DONE include/bdbm_drv.h /^ KP_STT_DATA_DONE = KP_STT_DATA | KP_STT_DONE,$/;" e enum:__anon27 +KP_STT_DONE include/bdbm_drv.h /^ KP_STT_DONE = 0x0F,$/;" e enum:__anon27 +KP_STT_HOLE include/bdbm_drv.h /^ KP_STT_HOLE = 0x10,$/;" e enum:__anon27 +KP_STT_HOLE_DONE include/bdbm_drv.h /^ KP_STT_HOLE_DONE = KP_STT_HOLE | KP_STT_DONE,$/;" e enum:__anon27 +KROOT Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m +KROOT devices/bluedbm/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m +KROOT devices/dumbssd/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m +KROOT devices/ramdrive/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m +KROOT devices/ramdrive_timing/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m +KROOT examples/raw-flash/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m +KROOT frontend/hybrid/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m +KROOT frontend/kernel/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m +KROOT tools/lightnvm-v4.5.3/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m +KROOT tools/lightnvm/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m +KROOT tools/nvme/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m +KROOT tools/nvmedrv-v4.5.3/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m +KSECTOR_SIZE include/params.h 30;" d +LDECLTYPE common/3rd/utlist.h 68;" d +LDECLTYPE common/3rd/utlist.h 71;" d +LDECLTYPE common/3rd/utlist.h 75;" d +LDECLTYPE common/3rd/utlist.h 77;" d +LIBFTL frontend/user/Makefile /^LIBFTL := libftl.a$/;" m +LIBOBJ devices/dragonfire/Makefile /^LIBOBJ=$(LIBSRC:.c=.o)$/;" m +LIBOBJ devices/libdummy/Makefile /^LIBOBJ=$(LIBSRC:.c=.o)$/;" m +LIBOBJ devices/libramdrive/Makefile /^LIBOBJ=$(LIBSRC:.c=.o)$/;" m +LIBS examples/stringsearch/Makefile /^LIBS = -lm -lblkid$/;" m +LIBS tools/dumbssd-format/Makefile /^LIBS=-lm -lpthread $/;" m +LIBS tools/dumbssd-test/Makefile /^LIBS=-lm -lpthread $/;" m +LIBS tools/format/Makefile /^LIBS=-lm -lpthread $/;" m +LIBSRC devices/dragonfire/Makefile /^LIBSRC := \\$/;" m +LIBSRC devices/libdummy/Makefile /^LIBSRC := \\$/;" m +LIBSRC devices/libramdrive/Makefile /^LIBSRC := \\$/;" m +LIST_HEAD common/3rd/ulist.h 70;" d +LIST_HEAD_INIT common/3rd/ulist.h 68;" d +LIST_POISON1 common/3rd/ulist.h 52;" d +LIST_POISON2 common/3rd/ulist.h 53;" d +LLM_MULTI_QUEUE include/params.h /^ LLM_MULTI_QUEUE,$/;" e enum:BDBM_LLM_TYPE +LLM_NOT_SPECIFIED include/params.h /^ LLM_NOT_SPECIFIED = 0,$/;" e enum:BDBM_LLM_TYPE +LLM_NO_QUEUE include/params.h /^ LLM_NO_QUEUE,$/;" e enum:BDBM_LLM_TYPE +LL_APPEND common/3rd/utlist.h 333;" d +LL_APPEND common/3rd/utlist.h 406;" d +LL_APPEND common/3rd/utlist.h 407;" d +LL_APPEND2 common/3rd/utlist.h 336;" d +LL_APPEND2 common/3rd/utlist.h 412;" d +LL_APPEND2 common/3rd/utlist.h 413;" d +LL_APPEND2_VS2008 common/3rd/utlist.h 372;" d +LL_APPEND_VS2008 common/3rd/utlist.h 369;" d +LL_CONCAT common/3rd/utlist.h 318;" d +LL_CONCAT common/3rd/utlist.h 414;" d +LL_CONCAT2 common/3rd/utlist.h 321;" d +LL_COUNT common/3rd/utlist.h 419;" d +LL_COUNT2 common/3rd/utlist.h 422;" d +LL_DELETE common/3rd/utlist.h 349;" d +LL_DELETE common/3rd/utlist.h 408;" d +LL_DELETE common/3rd/utlist.h 409;" d +LL_DELETE2 common/3rd/utlist.h 352;" d +LL_DELETE2 common/3rd/utlist.h 410;" d +LL_DELETE2 common/3rd/utlist.h 411;" d +LL_DELETE2_VS2008 common/3rd/utlist.h 387;" d +LL_DELETE_VS2008 common/3rd/utlist.h 384;" d +LL_FOREACH common/3rd/utlist.h 428;" d +LL_FOREACH2 common/3rd/utlist.h 431;" d +LL_FOREACH_SAFE common/3rd/utlist.h 434;" d +LL_FOREACH_SAFE2 common/3rd/utlist.h 437;" d +LL_PREPEND common/3rd/utlist.h 309;" d +LL_PREPEND2 common/3rd/utlist.h 312;" d +LL_PREPEND_ELEM common/3rd/utlist.h 480;" d +LL_REPLACE_ELEM common/3rd/utlist.h 460;" d +LL_SEARCH common/3rd/utlist.h 450;" d +LL_SEARCH2 common/3rd/utlist.h 453;" d +LL_SEARCH_SCALAR common/3rd/utlist.h 440;" d +LL_SEARCH_SCALAR2 common/3rd/utlist.h 443;" d +LL_SORT common/3rd/utlist.h 105;" d +LL_SORT2 common/3rd/utlist.h 108;" d +LOG_INFO_EXCP_PAGE_LENGTH tools/nvme/scsi.c 163;" d file: +LOG_INFO_EXCP_PAGE_LENGTH tools/nvmedrv-v4.5.3/scsi.c 163;" d file: +LOG_PAGE_INFORMATIONAL_EXCEPTIONS_PAGE tools/nvme/scsi.c 155;" d file: +LOG_PAGE_INFORMATIONAL_EXCEPTIONS_PAGE tools/nvmedrv-v4.5.3/scsi.c 155;" d file: +LOG_PAGE_SUPPORTED_LOG_PAGES_LENGTH tools/nvme/scsi.c 154;" d file: +LOG_PAGE_SUPPORTED_LOG_PAGES_LENGTH tools/nvmedrv-v4.5.3/scsi.c 154;" d file: +LOG_PAGE_SUPPORTED_LOG_PAGES_PAGE tools/nvme/scsi.c 153;" d file: +LOG_PAGE_SUPPORTED_LOG_PAGES_PAGE tools/nvmedrv-v4.5.3/scsi.c 153;" d file: +LOG_PAGE_TEMPERATURE_PAGE tools/nvme/scsi.c 156;" d file: +LOG_PAGE_TEMPERATURE_PAGE tools/nvmedrv-v4.5.3/scsi.c 156;" d file: +LOG_SENSE_CDB_PAGE_CODE_MASK tools/nvme/scsi.c 161;" d file: +LOG_SENSE_CDB_PAGE_CODE_MASK tools/nvmedrv-v4.5.3/scsi.c 161;" d file: +LOG_SENSE_CDB_PC_CUMULATIVE_VALUES tools/nvme/scsi.c 160;" d file: +LOG_SENSE_CDB_PC_CUMULATIVE_VALUES tools/nvmedrv-v4.5.3/scsi.c 160;" d file: +LOG_SENSE_CDB_PC_MASK tools/nvme/scsi.c 158;" d file: +LOG_SENSE_CDB_PC_MASK tools/nvmedrv-v4.5.3/scsi.c 158;" d file: +LOG_SENSE_CDB_PC_SHIFT tools/nvme/scsi.c 159;" d file: +LOG_SENSE_CDB_PC_SHIFT tools/nvmedrv-v4.5.3/scsi.c 159;" d file: +LOG_SENSE_CDB_SP_NOT_ENABLED tools/nvme/scsi.c 157;" d file: +LOG_SENSE_CDB_SP_NOT_ENABLED tools/nvmedrv-v4.5.3/scsi.c 157;" d file: +LOG_TEMP_PAGE_LENGTH tools/nvme/scsi.c 165;" d file: +LOG_TEMP_PAGE_LENGTH tools/nvmedrv-v4.5.3/scsi.c 165;" d file: +LOG_TEMP_UNKNOWN tools/nvme/scsi.c 166;" d file: +LOG_TEMP_UNKNOWN tools/nvmedrv-v4.5.3/scsi.c 166;" d file: +LONG_DESC_BLOCK tools/nvme/scsi.c 145;" d file: +LONG_DESC_BLOCK tools/nvmedrv-v4.5.3/scsi.c 145;" d file: +LUN_DATA_HEADER_SIZE tools/nvme/scsi.c 71;" d file: +LUN_DATA_HEADER_SIZE tools/nvmedrv-v4.5.3/scsi.c 71;" d file: +LUN_ENTRY_SIZE tools/nvme/scsi.c 70;" d file: +LUN_ENTRY_SIZE tools/nvmedrv-v4.5.3/scsi.c 70;" d file: +MAPPING_POLICY_BLOCK include/params.h /^ MAPPING_POLICY_BLOCK,$/;" e enum:BDBM_MAPPING_POLICY +MAPPING_POLICY_DFTL include/params.h /^ MAPPING_POLICY_DFTL,$/;" e enum:BDBM_MAPPING_POLICY +MAPPING_POLICY_NOT_SPECIFIED include/params.h /^ MAPPING_POLICY_NOT_SPECIFIED = 0,$/;" e enum:BDBM_MAPPING_POLICY +MAPPING_POLICY_NO_FTL include/params.h /^ MAPPING_POLICY_NO_FTL,$/;" e enum:BDBM_MAPPING_POLICY +MAPPING_POLICY_PAGE include/params.h /^ MAPPING_POLICY_PAGE,$/;" e enum:BDBM_MAPPING_POLICY +MAPPING_POLICY_RSD include/params.h /^ MAPPING_POLICY_RSD,$/;" e enum:BDBM_MAPPING_POLICY +MAX_BLKS_PR_SYSBLK tools/lightnvm-v4.5.3/sysblk.c 23;" d file: +MAX_BLKS_PR_SYSBLK tools/lightnvm/sysblk.c 23;" d file: +MAX_INDARRAY devices/bluedbm/dm_bluedbm.c 51;" d file: +MAX_INVALID_PAGES_STORAGE tools/lightnvm-v4.5.3/rrpc.h 61;" d +MAX_INVALID_PAGES_STORAGE tools/lightnvm/rrpc.h 61;" d +MAX_SYSBLKS tools/lightnvm-v4.5.3/sysblk.c 22;" d file: +MAX_SYSBLKS tools/lightnvm/sysblk.c 22;" d file: +MINOR_CNT devices/common/dev_stub.c /^static int MINOR_CNT = 1;$/;" v file: +MINOR_CNT frontend/hybrid/blkio_proxy.c /^static int MINOR_CNT = 1;$/;" v file: +MISC_DYNAMIC_MINOR devices/dumbssd/dm_dumbssd.c /^MODULE_ALIAS_MISCDEV (MISC_DYNAMIC_MINOR);$/;" v +MISC_DYNAMIC_MINOR tools/lightnvm-v4.5.3/core.c /^MODULE_ALIAS_MISCDEV(MISC_DYNAMIC_MINOR);$/;" v +MISC_DYNAMIC_MINOR tools/lightnvm/core.c /^MODULE_ALIAS_MISCDEV(MISC_DYNAMIC_MINOR);$/;" v +MMUIndicationWrapperconfigResp_cb devices/bluedbm/dm_bluedbm.c /^void MMUIndicationWrapperconfigResp_cb ( struct PortalInternal *p, const uint32_t pointer )$/;" f +MMUIndicationWrappererror_cb devices/bluedbm/dm_bluedbm.c /^void MMUIndicationWrappererror_cb ( struct PortalInternal *p, const uint32_t code, const uint32_t pointer, const uint64_t offset, const uint64_t extra ) $/;" f +MMUIndicationWrapperidResponse_cb devices/bluedbm/dm_bluedbm.c /^void MMUIndicationWrapperidResponse_cb ( struct PortalInternal *p, const uint32_t sglId ) $/;" f +MMUIndication_cbTable devices/bluedbm/dm_bluedbm.c /^MMUIndicationCb MMUIndication_cbTable = {$/;" v +MODE_PAGE_ALL_LEN tools/nvme/scsi.c 122;" d file: +MODE_PAGE_ALL_LEN tools/nvmedrv-v4.5.3/scsi.c 122;" d file: +MODE_PAGE_BLK_DES_LEN tools/nvme/scsi.c 116;" d file: +MODE_PAGE_BLK_DES_LEN tools/nvmedrv-v4.5.3/scsi.c 116;" d file: +MODE_PAGE_CACHING tools/nvme/scsi.c 112;" d file: +MODE_PAGE_CACHING tools/nvmedrv-v4.5.3/scsi.c 112;" d file: +MODE_PAGE_CACHING_LEN tools/nvme/scsi.c 118;" d file: +MODE_PAGE_CACHING_LEN tools/nvmedrv-v4.5.3/scsi.c 118;" d file: +MODE_PAGE_CACHING_LEN_FIELD tools/nvme/scsi.c 148;" d file: +MODE_PAGE_CACHING_LEN_FIELD tools/nvmedrv-v4.5.3/scsi.c 148;" d file: +MODE_PAGE_CONTROL tools/nvme/scsi.c 113;" d file: +MODE_PAGE_CONTROL tools/nvmedrv-v4.5.3/scsi.c 113;" d file: +MODE_PAGE_CONTROL_LEN tools/nvme/scsi.c 119;" d file: +MODE_PAGE_CONTROL_LEN tools/nvmedrv-v4.5.3/scsi.c 119;" d file: +MODE_PAGE_CONTROL_LEN_FIELD tools/nvme/scsi.c 149;" d file: +MODE_PAGE_CONTROL_LEN_FIELD tools/nvmedrv-v4.5.3/scsi.c 149;" d file: +MODE_PAGE_INFO_EXCEP tools/nvme/scsi.c 111;" d file: +MODE_PAGE_INFO_EXCEP tools/nvmedrv-v4.5.3/scsi.c 111;" d file: +MODE_PAGE_INF_EXC_LEN tools/nvme/scsi.c 121;" d file: +MODE_PAGE_INF_EXC_LEN tools/nvmedrv-v4.5.3/scsi.c 121;" d file: +MODE_PAGE_INF_EXC_LEN_FIELD tools/nvme/scsi.c 147;" d file: +MODE_PAGE_INF_EXC_LEN_FIELD tools/nvmedrv-v4.5.3/scsi.c 147;" d file: +MODE_PAGE_LLBAA_BLK_DES_LEN tools/nvme/scsi.c 117;" d file: +MODE_PAGE_LLBAA_BLK_DES_LEN tools/nvmedrv-v4.5.3/scsi.c 117;" d file: +MODE_PAGE_POWER_CONDITION tools/nvme/scsi.c 114;" d file: +MODE_PAGE_POWER_CONDITION tools/nvmedrv-v4.5.3/scsi.c 114;" d file: +MODE_PAGE_POW_CND_LEN tools/nvme/scsi.c 120;" d file: +MODE_PAGE_POW_CND_LEN tools/nvmedrv-v4.5.3/scsi.c 120;" d file: +MODE_PAGE_POW_CND_LEN_FIELD tools/nvme/scsi.c 146;" d file: +MODE_PAGE_POW_CND_LEN_FIELD tools/nvmedrv-v4.5.3/scsi.c 146;" d file: +MODE_PAGE_RETURN_ALL tools/nvme/scsi.c 115;" d file: +MODE_PAGE_RETURN_ALL tools/nvmedrv-v4.5.3/scsi.c 115;" d file: +MODE_SELECT_10_BD_OFFSET tools/nvme/scsi.c 135;" d file: +MODE_SELECT_10_BD_OFFSET tools/nvmedrv-v4.5.3/scsi.c 135;" d file: +MODE_SELECT_10_LLBAA_MASK tools/nvme/scsi.c 137;" d file: +MODE_SELECT_10_LLBAA_MASK tools/nvmedrv-v4.5.3/scsi.c 137;" d file: +MODE_SELECT_10_LLBAA_OFFSET tools/nvme/scsi.c 136;" d file: +MODE_SELECT_10_LLBAA_OFFSET tools/nvmedrv-v4.5.3/scsi.c 136;" d file: +MODE_SELECT_10_MPH_SIZE tools/nvme/scsi.c 139;" d file: +MODE_SELECT_10_MPH_SIZE tools/nvmedrv-v4.5.3/scsi.c 139;" d file: +MODE_SELECT_6_BD_OFFSET tools/nvme/scsi.c 134;" d file: +MODE_SELECT_6_BD_OFFSET tools/nvmedrv-v4.5.3/scsi.c 134;" d file: +MODE_SELECT_6_MPH_SIZE tools/nvme/scsi.c 138;" d file: +MODE_SELECT_6_MPH_SIZE tools/nvmedrv-v4.5.3/scsi.c 138;" d file: +MODE_SELECT_CDB_PAGE_FORMAT_MASK tools/nvme/scsi.c 132;" d file: +MODE_SELECT_CDB_PAGE_FORMAT_MASK tools/nvmedrv-v4.5.3/scsi.c 132;" d file: +MODE_SELECT_CDB_SAVE_PAGES_MASK tools/nvme/scsi.c 133;" d file: +MODE_SELECT_CDB_SAVE_PAGES_MASK tools/nvmedrv-v4.5.3/scsi.c 133;" d file: +MODE_SELECT_PAGE_CODE_MASK tools/nvme/scsi.c 143;" d file: +MODE_SELECT_PAGE_CODE_MASK tools/nvmedrv-v4.5.3/scsi.c 143;" d file: +MODE_SENSE10_MPH_SIZE tools/nvme/scsi.c 131;" d file: +MODE_SENSE10_MPH_SIZE tools/nvmedrv-v4.5.3/scsi.c 131;" d file: +MODE_SENSE6_MPH_SIZE tools/nvme/scsi.c 123;" d file: +MODE_SENSE6_MPH_SIZE tools/nvmedrv-v4.5.3/scsi.c 123;" d file: +MODE_SENSE_BLK_DESC_COUNT tools/nvme/scsi.c 142;" d file: +MODE_SENSE_BLK_DESC_COUNT tools/nvmedrv-v4.5.3/scsi.c 142;" d file: +MODE_SENSE_BLK_DESC_ENABLED tools/nvme/scsi.c 141;" d file: +MODE_SENSE_BLK_DESC_ENABLED tools/nvmedrv-v4.5.3/scsi.c 141;" d file: +MODE_SENSE_DBD_MASK tools/nvme/scsi.c 129;" d file: +MODE_SENSE_DBD_MASK tools/nvmedrv-v4.5.3/scsi.c 129;" d file: +MODE_SENSE_DBD_SHIFT tools/nvme/scsi.c 130;" d file: +MODE_SENSE_DBD_SHIFT tools/nvmedrv-v4.5.3/scsi.c 130;" d file: +MODE_SENSE_LLBAA_MASK tools/nvme/scsi.c 127;" d file: +MODE_SENSE_LLBAA_MASK tools/nvmedrv-v4.5.3/scsi.c 127;" d file: +MODE_SENSE_LLBAA_SHIFT tools/nvme/scsi.c 128;" d file: +MODE_SENSE_LLBAA_SHIFT tools/nvmedrv-v4.5.3/scsi.c 128;" d file: +MODE_SENSE_PAGE_CODE_MASK tools/nvme/scsi.c 126;" d file: +MODE_SENSE_PAGE_CODE_MASK tools/nvmedrv-v4.5.3/scsi.c 126;" d file: +MODE_SENSE_PAGE_CODE_OFFSET tools/nvme/scsi.c 125;" d file: +MODE_SENSE_PAGE_CODE_OFFSET tools/nvmedrv-v4.5.3/scsi.c 125;" d file: +MODE_SENSE_PAGE_CONTROL_MASK tools/nvme/scsi.c 124;" d file: +MODE_SENSE_PAGE_CONTROL_MASK tools/nvmedrv-v4.5.3/scsi.c 124;" d file: +MODE_SENSE_PC_CURRENT_VALUES tools/nvme/scsi.c 150;" d file: +MODE_SENSE_PC_CURRENT_VALUES tools/nvmedrv-v4.5.3/scsi.c 150;" d file: +MODULE_PARAM_PREFIX tools/lightnvm-v4.5.3/core.c 896;" d file: +MODULE_PARAM_PREFIX tools/lightnvm-v4.5.3/core.c 897;" d file: +MODULE_PARAM_PREFIX tools/lightnvm/core.c 896;" d file: +MODULE_PARAM_PREFIX tools/lightnvm/core.c 897;" d file: +MODULE_PARM_DESC include/bdbm_drv.h 43;" d +MUR_FMIX common/3rd/uthash.h 570;" d +MUR_GETBLOCK common/3rd/uthash.h 548;" d +MUR_GETBLOCK common/3rd/uthash.h 564;" d +MUR_ONE_THREE common/3rd/uthash.h 558;" d +MUR_ONE_THREE common/3rd/uthash.h 562;" d +MUR_PLUS0_ALIGNED common/3rd/uthash.h 550;" d +MUR_PLUS1_ALIGNED common/3rd/uthash.h 551;" d +MUR_PLUS2_ALIGNED common/3rd/uthash.h 552;" d +MUR_PLUS3_ALIGNED common/3rd/uthash.h 553;" d +MUR_ROTL32 common/3rd/uthash.h 569;" d +MUR_THREE_ONE common/3rd/uthash.h 556;" d +MUR_THREE_ONE common/3rd/uthash.h 560;" d +MUR_TWO_TWO common/3rd/uthash.h 557;" d +MUR_TWO_TWO common/3rd/uthash.h 561;" d +NAND_BLOCK_ERASE_TIME_US devices/common/dev_params.c /^ NAND_BLOCK_ERASE_TIME_US = 3000, \/* 3ms *\/$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: +NAND_CHIP_BUS_TRANS_TIME_US devices/common/dev_params.c /^ NAND_CHIP_BUS_TRANS_TIME_US = 100, \/* 100us *\/$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: +NAND_HOST_BUS_TRANS_TIME_US devices/common/dev_params.c /^ NAND_HOST_BUS_TRANS_TIME_US = 0, \/* assume to be 0 *\/$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: +NAND_PAGE_OOB_SIZE devices/common/dev_params.c /^ NAND_PAGE_OOB_SIZE = 64,$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: +NAND_PAGE_PROG_TIME_US devices/common/dev_params.c /^ NAND_PAGE_PROG_TIME_US = 500, \/* 1.3ms *\/ $/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: +NAND_PAGE_READ_TIME_US devices/common/dev_params.c /^ NAND_PAGE_READ_TIME_US = 100, \/* 100us *\/$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: +NAND_PAGE_SIZE devices/common/dev_params.c /^ NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES,$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: +NO_DECLTYPE common/3rd/uthash.h 45;" d +NO_DECLTYPE common/3rd/utlist.h 70;" d +NO_DECLTYPE common/3rd/utlist.h 74;" d +NR_BLOCKS_PER_CHIP devices/common/dev_params.c /^ NR_BLOCKS_PER_CHIP = 128,$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: +NR_CHANNELS devices/common/dev_params.c /^ NR_CHANNELS = 64,$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: +NR_CHIPS_PER_CHANNEL devices/common/dev_params.c /^ NR_CHIPS_PER_CHANNEL = 1,$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: +NR_DIES devices/dumbssd/dm_dumbssd.c 44;" d file: +NR_KPAGES_IN include/bdbm_drv.h 156;" d +NR_KSECTORS_IN include/bdbm_drv.h 155;" d +NR_PAGES_PER_BLOCK devices/common/dev_params.c /^ NR_PAGES_PER_BLOCK = 64,$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: +NR_PHY_IN_LOG tools/lightnvm-v4.5.3/rrpc.h 36;" d +NR_PHY_IN_LOG tools/lightnvm/rrpc.h 36;" d +NUM_THREADS examples/stub_test/main.c 364;" d file: +NUM_THREADS frontend/df-user/main.c 68;" d file: +NUM_THREADS frontend/user/main.c 65;" d file: +NVME_AQ_BLKMQ_DEPTH tools/nvme/pci.c 58;" d file: +NVME_AQ_BLKMQ_DEPTH tools/nvmedrv-v4.5.3/pci.c 58;" d file: +NVME_AQ_DEPTH tools/nvme/pci.c 49;" d file: +NVME_AQ_DEPTH tools/nvmedrv-v4.5.3/pci.c 49;" d file: +NVME_CTRL_REMOVING tools/nvme/pci.c 122;" d file: +NVME_CTRL_REMOVING tools/nvmedrv-v4.5.3/pci.c 122;" d file: +NVME_CTRL_RESETTING tools/nvme/pci.c 121;" d file: +NVME_CTRL_RESETTING tools/nvmedrv-v4.5.3/pci.c 121;" d file: +NVME_INT_BYTES tools/nvme/pci.c 200;" d file: +NVME_INT_BYTES tools/nvmedrv-v4.5.3/pci.c 200;" d file: +NVME_INT_PAGES tools/nvme/pci.c 199;" d file: +NVME_INT_PAGES tools/nvmedrv-v4.5.3/pci.c 199;" d file: +NVME_IO_TIMEOUT tools/nvme/nvme.h 33;" d +NVME_IO_TIMEOUT tools/nvmedrv-v4.5.3/nvme.h 33;" d +NVME_MAX_FIRMWARE_SLOT tools/nvme/scsi.c 175;" d file: +NVME_MAX_FIRMWARE_SLOT tools/nvmedrv-v4.5.3/scsi.c 175;" d file: +NVME_MINORS tools/nvme/core.c 34;" d file: +NVME_MINORS tools/nvmedrv-v4.5.3/core.c 34;" d file: +NVME_NR_AEN_COMMANDS tools/nvme/pci.c 57;" d file: +NVME_NR_AEN_COMMANDS tools/nvmedrv-v4.5.3/pci.c 57;" d file: +NVME_NS_DEAD tools/nvme/nvme.h 123;" d +NVME_NS_DEAD tools/nvmedrv-v4.5.3/nvme.h 123;" d +NVME_NS_HYNIX tools/nvme/nvme.h /^ NVME_NS_HYNIX = 2,$/;" e enum:__anon48 +NVME_NS_HYNIX tools/nvmedrv-v4.5.3/nvme.h /^ NVME_NS_HYNIX = 2,$/;" e enum:__anon51 +NVME_NS_LBA tools/nvme/nvme.h /^ NVME_NS_LBA = 0,$/;" e enum:__anon48 +NVME_NS_LBA tools/nvmedrv-v4.5.3/nvme.h /^ NVME_NS_LBA = 0,$/;" e enum:__anon51 +NVME_NS_LIGHTNVM tools/nvme/nvme.h /^ NVME_NS_LIGHTNVM = 1,$/;" e enum:__anon48 +NVME_NS_LIGHTNVM tools/nvmedrv-v4.5.3/nvme.h /^ NVME_NS_LIGHTNVM = 1,$/;" e enum:__anon51 +NVME_NS_REMOVING tools/nvme/nvme.h 122;" d +NVME_NS_REMOVING tools/nvmedrv-v4.5.3/nvme.h 122;" d +NVME_NVM_LP_MLC_PAIRS tools/nvme/lightnvm.c 149;" d file: +NVME_NVM_LP_MLC_PAIRS tools/nvmedrv-v4.5.3/lightnvm.c 149;" d file: +NVME_POWER_STATE_ACTIVE tools/nvme/scsi.c 76;" d file: +NVME_POWER_STATE_ACTIVE tools/nvmedrv-v4.5.3/scsi.c 76;" d file: +NVME_POWER_STATE_IDLE tools/nvme/scsi.c 77;" d file: +NVME_POWER_STATE_IDLE tools/nvmedrv-v4.5.3/scsi.c 77;" d file: +NVME_POWER_STATE_LU_CONTROL tools/nvme/scsi.c 79;" d file: +NVME_POWER_STATE_LU_CONTROL tools/nvmedrv-v4.5.3/scsi.c 79;" d file: +NVME_POWER_STATE_STANDBY tools/nvme/scsi.c 78;" d file: +NVME_POWER_STATE_STANDBY tools/nvmedrv-v4.5.3/scsi.c 78;" d file: +NVME_POWER_STATE_START_VALID tools/nvme/scsi.c 75;" d file: +NVME_POWER_STATE_START_VALID tools/nvmedrv-v4.5.3/scsi.c 75;" d file: +NVME_QUIRK_IDENTIFY_CNS tools/nvme/nvme.h /^ NVME_QUIRK_IDENTIFY_CNS = (1 << 1),$/;" e enum:nvme_quirks +NVME_QUIRK_IDENTIFY_CNS tools/nvmedrv-v4.5.3/nvme.h /^ NVME_QUIRK_IDENTIFY_CNS = (1 << 1),$/;" e enum:nvme_quirks +NVME_QUIRK_STRIPE_SIZE tools/nvme/nvme.h /^ NVME_QUIRK_STRIPE_SIZE = (1 << 0),$/;" e enum:nvme_quirks +NVME_QUIRK_STRIPE_SIZE tools/nvmedrv-v4.5.3/nvme.h /^ NVME_QUIRK_STRIPE_SIZE = (1 << 0),$/;" e enum:nvme_quirks +NVME_Q_DEPTH tools/nvme/pci.c 48;" d file: +NVME_Q_DEPTH tools/nvmedrv-v4.5.3/pci.c 48;" d file: +NVME_SC_CANCELLED tools/nvme/nvme.h /^ NVME_SC_CANCELLED = -EINTR,$/;" e enum:__anon47 +NVME_SC_CANCELLED tools/nvmedrv-v4.5.3/nvme.h /^ NVME_SC_CANCELLED = -EINTR,$/;" e enum:__anon50 +OBJS examples/stringsearch/Makefile /^OBJS = ss.o ss_impl_sw.o ss_impl_hw.o$/;" m +OBJS_FORMAT tools/dumbssd-format/Makefile /^OBJS_FORMAT=dumbssd-format.o $/;" m +OBJS_FORMAT tools/dumbssd-test/Makefile /^OBJS_FORMAT=dumbssd-test.o $/;" m +OBJS_FORMAT tools/format/Makefile /^OBJS_FORMAT=bdbm_format.o $/;" m +OUT devices/dragonfire/Makefile /^OUT = libdf.a$/;" m +OUT devices/libdummy/Makefile /^OUT = libdummy.a$/;" m +OUT devices/libramdrive/Makefile /^OUT = libramdrive.a$/;" m +PAGE_POOL_SIZE tools/lightnvm-v4.5.3/rrpc.c 1082;" d file: +PAGE_POOL_SIZE tools/lightnvm/rrpc.c 1082;" d file: +PCI_CLASS_STORAGE_EXPRESS tools/nvme/pci.c 2231;" d file: +PCI_CLASS_STORAGE_EXPRESS tools/nvmedrv-v4.5.3/pci.c 2231;" d file: +PCI_DEVICE_ID_CNEX_QEMU tools/nvme/lightnvm.c 598;" d file: +PCI_DEVICE_ID_CNEX_QEMU tools/nvmedrv-v4.5.3/lightnvm.c 598;" d file: +PCI_DEVICE_ID_CNEX_WL tools/nvme/lightnvm.c 597;" d file: +PCI_DEVICE_ID_CNEX_WL tools/nvmedrv-v4.5.3/lightnvm.c 597;" d file: +PCI_VENDOR_ID_CNEX tools/nvme/lightnvm.c 596;" d file: +PCI_VENDOR_ID_CNEX tools/nvmedrv-v4.5.3/lightnvm.c 596;" d file: +PFTL_PAGE_INVALID ftl/algo/page_ftl.c /^ PFTL_PAGE_INVALID,$/;" e enum:BDBM_PFTL_PAGE_STATUS file: +PFTL_PAGE_INVALID_ADDR ftl/algo/page_ftl.c /^ PFTL_PAGE_INVALID_ADDR = -1ULL,$/;" e enum:BDBM_PFTL_PAGE_STATUS file: +PFTL_PAGE_NOT_ALLOCATED ftl/algo/page_ftl.c /^ PFTL_PAGE_NOT_ALLOCATED = 0,$/;" e enum:BDBM_PFTL_PAGE_STATUS file: +PFTL_PAGE_VALID ftl/algo/page_ftl.c /^ PFTL_PAGE_VALID,$/;" e enum:BDBM_PFTL_PAGE_STATUS file: +POWER_STATE_0 tools/nvme/scsi.c 80;" d file: +POWER_STATE_0 tools/nvmedrv-v4.5.3/scsi.c 80;" d file: +POWER_STATE_1 tools/nvme/scsi.c 81;" d file: +POWER_STATE_1 tools/nvmedrv-v4.5.3/scsi.c 81;" d file: +POWER_STATE_2 tools/nvme/scsi.c 82;" d file: +POWER_STATE_2 tools/nvmedrv-v4.5.3/scsi.c 82;" d file: +POWER_STATE_3 tools/nvme/scsi.c 83;" d file: +POWER_STATE_3 tools/nvmedrv-v4.5.3/scsi.c 83;" d file: +QUEUE_POLICY_MULTI_FIFO include/params.h /^ QUEUE_POLICY_MULTI_FIFO,$/;" e enum:BDBM_QUEUE_POLICY +QUEUE_POLICY_NO include/params.h /^ QUEUE_POLICY_NO,$/;" e enum:BDBM_QUEUE_POLICY +QUEUE_POLICY_NOT_SPECIFIED include/params.h /^ QUEUE_POLICY_NOT_SPECIFIED = 0,$/;" e enum:BDBM_QUEUE_POLICY +QUEUE_POLICY_SINGLE_FIFO include/params.h /^ QUEUE_POLICY_SINGLE_FIFO,$/;" e enum:BDBM_QUEUE_POLICY +QUICK_FIX_FOR_RWM ftl/llm_rmq.c 56;" d file: +RD_PRIORITY_READ ftl/queue/rd_prior_queue.h /^ RD_PRIORITY_READ = 0,$/;" e enum:__anon73 +RD_PRIORITY_WRITE ftl/queue/rd_prior_queue.h /^ RD_PRIORITY_WRITE = 1,$/;" e enum:__anon73 +READ_CAP_10_RESP_SIZE tools/nvme/scsi.c 170;" d file: +READ_CAP_10_RESP_SIZE tools/nvmedrv-v4.5.3/scsi.c 170;" d file: +READ_CAP_16_RESP_SIZE tools/nvme/scsi.c 171;" d file: +READ_CAP_16_RESP_SIZE tools/nvmedrv-v4.5.3/scsi.c 171;" d file: +REMAINING_INFO_EXCP_PAGE_LENGTH tools/nvme/scsi.c 162;" d file: +REMAINING_INFO_EXCP_PAGE_LENGTH tools/nvmedrv-v4.5.3/scsi.c 162;" d file: +REMAINING_TEMP_PAGE_LENGTH tools/nvme/scsi.c 164;" d file: +REMAINING_TEMP_PAGE_LENGTH tools/nvmedrv-v4.5.3/scsi.c 164;" d file: +REPORT_LUNS_FIRST_LUN_OFFSET tools/nvme/scsi.c 178;" d file: +REPORT_LUNS_FIRST_LUN_OFFSET tools/nvmedrv-v4.5.3/scsi.c 178;" d file: +REQTYPE_DONE include/bdbm_drv.h /^ REQTYPE_DONE = 0xFF0000,$/;" e enum:BDBM_REQTYPE +REQTYPE_GC include/bdbm_drv.h /^ REQTYPE_GC = 0x000400,$/;" e enum:BDBM_REQTYPE +REQTYPE_GC_ERASE include/bdbm_drv.h /^ REQTYPE_GC_ERASE = REQTYPE_GC | REQTYPE_IO_ERASE,$/;" e enum:BDBM_REQTYPE +REQTYPE_GC_READ include/bdbm_drv.h /^ REQTYPE_GC_READ = REQTYPE_GC | REQTYPE_IO_READ,$/;" e enum:BDBM_REQTYPE +REQTYPE_GC_WRITE include/bdbm_drv.h /^ REQTYPE_GC_WRITE = REQTYPE_GC | REQTYPE_IO_WRITE,$/;" e enum:BDBM_REQTYPE +REQTYPE_IO_ERASE include/bdbm_drv.h /^ REQTYPE_IO_ERASE = 0x000008,$/;" e enum:BDBM_REQTYPE +REQTYPE_IO_READ include/bdbm_drv.h /^ REQTYPE_IO_READ = 0x000001,$/;" e enum:BDBM_REQTYPE +REQTYPE_IO_READ_DUMMY include/bdbm_drv.h /^ REQTYPE_IO_READ_DUMMY = 0x000002,$/;" e enum:BDBM_REQTYPE +REQTYPE_IO_TRIM include/bdbm_drv.h /^ REQTYPE_IO_TRIM = 0x000010,$/;" e enum:BDBM_REQTYPE +REQTYPE_IO_WRITE include/bdbm_drv.h /^ REQTYPE_IO_WRITE = 0x000004,$/;" e enum:BDBM_REQTYPE +REQTYPE_META include/bdbm_drv.h /^ REQTYPE_META = 0x000800,$/;" e enum:BDBM_REQTYPE +REQTYPE_META_READ include/bdbm_drv.h /^ REQTYPE_META_READ = REQTYPE_META | REQTYPE_IO_READ,$/;" e enum:BDBM_REQTYPE +REQTYPE_META_WRITE include/bdbm_drv.h /^ REQTYPE_META_WRITE = REQTYPE_META | REQTYPE_IO_WRITE,$/;" e enum:BDBM_REQTYPE +REQTYPE_NORNAL include/bdbm_drv.h /^ REQTYPE_NORNAL = 0x000100,$/;" e enum:BDBM_REQTYPE +REQTYPE_READ include/bdbm_drv.h /^ REQTYPE_READ = REQTYPE_NORNAL | REQTYPE_IO_READ,$/;" e enum:BDBM_REQTYPE +REQTYPE_READ_DUMMY include/bdbm_drv.h /^ REQTYPE_READ_DUMMY = REQTYPE_NORNAL | REQTYPE_IO_READ_DUMMY,$/;" e enum:BDBM_REQTYPE +REQTYPE_RMW include/bdbm_drv.h /^ REQTYPE_RMW = 0x000200,$/;" e enum:BDBM_REQTYPE +REQTYPE_RMW_READ include/bdbm_drv.h /^ REQTYPE_RMW_READ = REQTYPE_RMW | REQTYPE_IO_READ,$/;" e enum:BDBM_REQTYPE +REQTYPE_RMW_WRITE include/bdbm_drv.h /^ REQTYPE_RMW_WRITE = REQTYPE_RMW | REQTYPE_IO_WRITE,$/;" e enum:BDBM_REQTYPE +REQTYPE_TRIM include/bdbm_drv.h /^ REQTYPE_TRIM = REQTYPE_NORNAL | REQTYPE_IO_TRIM,$/;" e enum:BDBM_REQTYPE +REQTYPE_WRITE include/bdbm_drv.h /^ REQTYPE_WRITE = REQTYPE_NORNAL | REQTYPE_IO_WRITE,$/;" e enum:BDBM_REQTYPE +REQ_STT_ALLOC frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_ALLOC = 0x0100,$/;" e enum:__anon62 +REQ_STT_FREE frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_FREE = 0,$/;" e enum:__anon62 +REQ_STT_KERN_INIT frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_KERN_INIT = REQ_STT_ALLOC | 0x1, $/;" e enum:__anon62 +REQ_STT_KERN_SENT frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_KERN_SENT = REQ_STT_ALLOC | 0x2,$/;" e enum:__anon62 +REQ_STT_USER_DONE frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_USER_DONE = REQ_STT_ALLOC | 0x4,$/;" e enum:__anon62 +REQ_STT_USER_PROG frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_USER_PROG = REQ_STT_ALLOC | 0x3,$/;" e enum:__anon62 +RESERVED_FIELD tools/nvme/scsi.c 108;" d file: +RESERVED_FIELD tools/nvmedrv-v4.5.3/scsi.c 108;" d file: +RESTRICTED_LUNS_RETURNED tools/nvme/scsi.c 74;" d file: +RESTRICTED_LUNS_RETURNED tools/nvmedrv-v4.5.3/scsi.c 74;" d file: +RP_MEM_PHY ftl/hlm_reqs_pool.h /^ RP_MEM_PHY = 1,$/;" e enum:__anon67 +RP_MEM_VIRT ftl/hlm_reqs_pool.h /^ RP_MEM_VIRT = 0,$/;" e enum:__anon67 +RRPC_EXPOSED_PAGE_SIZE tools/lightnvm-v4.5.3/rrpc.h 34;" d +RRPC_EXPOSED_PAGE_SIZE tools/lightnvm/rrpc.h 34;" d +RRPC_H_ tools/lightnvm-v4.5.3/rrpc.h 18;" d +RRPC_H_ tools/lightnvm/rrpc.h 18;" d +RRPC_SECTOR tools/lightnvm-v4.5.3/rrpc.h 33;" d +RRPC_SECTOR tools/lightnvm/rrpc.h 33;" d +SCSI_ASCQ_CAUSE_NOT_REPORTABLE tools/nvme/scsi.c 202;" d file: +SCSI_ASCQ_CAUSE_NOT_REPORTABLE tools/nvmedrv-v4.5.3/scsi.c 202;" d file: +SCSI_ASCQ_FORMAT_COMMAND_FAILED tools/nvme/scsi.c 203;" d file: +SCSI_ASCQ_FORMAT_COMMAND_FAILED tools/nvmedrv-v4.5.3/scsi.c 203;" d file: +SCSI_ASCQ_FORMAT_IN_PROGRESS tools/nvme/scsi.c 207;" d file: +SCSI_ASCQ_FORMAT_IN_PROGRESS tools/nvmedrv-v4.5.3/scsi.c 207;" d file: +SCSI_ASCQ_INVALID_LUN_ID tools/nvme/scsi.c 209;" d file: +SCSI_ASCQ_INVALID_LUN_ID tools/nvmedrv-v4.5.3/scsi.c 209;" d file: +SCSI_ASCQ_LOG_BLOCK_APPTAG_CHECK_FAILED tools/nvme/scsi.c 205;" d file: +SCSI_ASCQ_LOG_BLOCK_APPTAG_CHECK_FAILED tools/nvmedrv-v4.5.3/scsi.c 205;" d file: +SCSI_ASCQ_LOG_BLOCK_GUARD_CHECK_FAILED tools/nvme/scsi.c 204;" d file: +SCSI_ASCQ_LOG_BLOCK_GUARD_CHECK_FAILED tools/nvmedrv-v4.5.3/scsi.c 204;" d file: +SCSI_ASCQ_LOG_BLOCK_REFTAG_CHECK_FAILED tools/nvme/scsi.c 206;" d file: +SCSI_ASCQ_LOG_BLOCK_REFTAG_CHECK_FAILED tools/nvmedrv-v4.5.3/scsi.c 206;" d file: +SCSI_ASCQ_POWER_LOSS_EXPECTED tools/nvme/scsi.c 208;" d file: +SCSI_ASCQ_POWER_LOSS_EXPECTED tools/nvmedrv-v4.5.3/scsi.c 208;" d file: +SCSI_ASC_ACCESS_DENIED_INVALID_LUN_ID tools/nvme/scsi.c 191;" d file: +SCSI_ASC_ACCESS_DENIED_INVALID_LUN_ID tools/nvmedrv-v4.5.3/scsi.c 191;" d file: +SCSI_ASC_FORMAT_COMMAND_FAILED tools/nvme/scsi.c 197;" d file: +SCSI_ASC_FORMAT_COMMAND_FAILED tools/nvmedrv-v4.5.3/scsi.c 197;" d file: +SCSI_ASC_ILLEGAL_BLOCK tools/nvme/scsi.c 193;" d file: +SCSI_ASC_ILLEGAL_BLOCK tools/nvmedrv-v4.5.3/scsi.c 193;" d file: +SCSI_ASC_ILLEGAL_COMMAND tools/nvme/scsi.c 192;" d file: +SCSI_ASC_ILLEGAL_COMMAND tools/nvmedrv-v4.5.3/scsi.c 192;" d file: +SCSI_ASC_INTERNAL_TARGET_FAILURE tools/nvme/scsi.c 198;" d file: +SCSI_ASC_INTERNAL_TARGET_FAILURE tools/nvmedrv-v4.5.3/scsi.c 198;" d file: +SCSI_ASC_INVALID_CDB tools/nvme/scsi.c 194;" d file: +SCSI_ASC_INVALID_CDB tools/nvmedrv-v4.5.3/scsi.c 194;" d file: +SCSI_ASC_INVALID_LUN tools/nvme/scsi.c 195;" d file: +SCSI_ASC_INVALID_LUN tools/nvmedrv-v4.5.3/scsi.c 195;" d file: +SCSI_ASC_INVALID_PARAMETER tools/nvme/scsi.c 196;" d file: +SCSI_ASC_INVALID_PARAMETER tools/nvmedrv-v4.5.3/scsi.c 196;" d file: +SCSI_ASC_LOG_BLOCK_APPTAG_CHECK_FAILED tools/nvme/scsi.c 187;" d file: +SCSI_ASC_LOG_BLOCK_APPTAG_CHECK_FAILED tools/nvmedrv-v4.5.3/scsi.c 187;" d file: +SCSI_ASC_LOG_BLOCK_GUARD_CHECK_FAILED tools/nvme/scsi.c 186;" d file: +SCSI_ASC_LOG_BLOCK_GUARD_CHECK_FAILED tools/nvmedrv-v4.5.3/scsi.c 186;" d file: +SCSI_ASC_LOG_BLOCK_REFTAG_CHECK_FAILED tools/nvme/scsi.c 188;" d file: +SCSI_ASC_LOG_BLOCK_REFTAG_CHECK_FAILED tools/nvmedrv-v4.5.3/scsi.c 188;" d file: +SCSI_ASC_LUN_NOT_READY tools/nvme/scsi.c 184;" d file: +SCSI_ASC_LUN_NOT_READY tools/nvmedrv-v4.5.3/scsi.c 184;" d file: +SCSI_ASC_MISCOMPARE_DURING_VERIFY tools/nvme/scsi.c 190;" d file: +SCSI_ASC_MISCOMPARE_DURING_VERIFY tools/nvmedrv-v4.5.3/scsi.c 190;" d file: +SCSI_ASC_NO_SENSE tools/nvme/scsi.c 182;" d file: +SCSI_ASC_NO_SENSE tools/nvmedrv-v4.5.3/scsi.c 182;" d file: +SCSI_ASC_PERIPHERAL_DEV_WRITE_FAULT tools/nvme/scsi.c 183;" d file: +SCSI_ASC_PERIPHERAL_DEV_WRITE_FAULT tools/nvmedrv-v4.5.3/scsi.c 183;" d file: +SCSI_ASC_UNRECOVERED_READ_ERROR tools/nvme/scsi.c 189;" d file: +SCSI_ASC_UNRECOVERED_READ_ERROR tools/nvmedrv-v4.5.3/scsi.c 189;" d file: +SCSI_ASC_WARNING tools/nvme/scsi.c 185;" d file: +SCSI_ASC_WARNING tools/nvmedrv-v4.5.3/scsi.c 185;" d file: +SHORT_DESC_BLOCK tools/nvme/scsi.c 144;" d file: +SHORT_DESC_BLOCK tools/nvmedrv-v4.5.3/scsi.c 144;" d file: +SHUTDOWN_TIMEOUT tools/nvme/nvme.h 39;" d +SHUTDOWN_TIMEOUT tools/nvmedrv-v4.5.3/nvme.h 39;" d +SIGKILL common/utils/uthread.h 61;" d +SNAPSHOT_DISABLE include/params.h /^ SNAPSHOT_DISABLE = 0,$/;" e enum:BDBM_SNAPSHOT +SNAPSHOT_ENABLE include/params.h /^ SNAPSHOT_ENABLE,$/;" e enum:BDBM_SNAPSHOT +SQ_SIZE tools/nvme/pci.c 50;" d file: +SQ_SIZE tools/nvmedrv-v4.5.3/pci.c 50;" d file: +SRCS examples/stub_test/Makefile /^SRCS := \\$/;" m +SRCS frontend/df-user/Makefile /^SRCS := \\$/;" m +SRCS frontend/user/Makefile /^SRCS := \\$/;" m +SRCS2 frontend/df-user/Makefile /^SRCS2 := \\$/;" m +SRCS_FORMAT tools/dumbssd-format/Makefile /^SRCS_FORMAT=dumbssd-format.c $/;" m +SRCS_FORMAT tools/dumbssd-test/Makefile /^SRCS_FORMAT=dumbssd-test.c $/;" m +SRCS_FORMAT tools/format/Makefile /^SRCS_FORMAT=bdbm_format.c $/;" m +STANDARD_INQUIRY_LENGTH tools/nvme/scsi.c 105;" d file: +STANDARD_INQUIRY_LENGTH tools/nvmedrv-v4.5.3/scsi.c 105;" d file: +SUPPORTED_LOG_PAGES_PAGE_LENGTH tools/nvme/scsi.c 167;" d file: +SUPPORTED_LOG_PAGES_PAGE_LENGTH tools/nvmedrv-v4.5.3/scsi.c 167;" d file: +TEST_IOCTL_ERASE devices/dumbssd/dm_dumbssd.h 48;" d +TEST_IOCTL_READ devices/dumbssd/dm_dumbssd.h 46;" d +TEST_IOCTL_WRITE devices/dumbssd/dm_dumbssd.h 47;" d +TOLBA examples/stringsearch/ss.c 79;" d file: +TRIM_DISABLE include/params.h /^ TRIM_DISABLE = 2,$/;" e enum:BDBM_TRIM +TRIM_ENABLE include/params.h /^ TRIM_ENABLE = 1, \/* 1: enable, 2: disable *\/$/;" e enum:BDBM_TRIM +TRIM_NOT_SPECIFIED include/params.h /^ TRIM_NOT_SPECIFIED = 0, $/;" e enum:BDBM_TRIM +USE_ASYNC devices/dumbssd/dev_hynix_nvme.c 44;" d file: +UTARRAY_H common/3rd/utarray.h 27;" d +UTARRAY_VERSION common/3rd/utarray.h 29;" d +UTHASH_H common/3rd/uthash.h 25;" d +UTHASH_VERSION common/3rd/uthash.h 78;" d +UTLIST_H common/3rd/utlist.h 25;" d +UTLIST_VERSION common/3rd/utlist.h 27;" d +UTSTRING_H common/3rd/utstring.h 27;" d +UTSTRING_VERSION common/3rd/utstring.h 29;" d +UT_array common/3rd/utarray.h /^} UT_array;$/;" t typeref:struct:__anon5 +UT_hash_bucket common/3rd/uthash.h /^typedef struct UT_hash_bucket {$/;" s +UT_hash_bucket common/3rd/uthash.h /^} UT_hash_bucket;$/;" t typeref:struct:UT_hash_bucket +UT_hash_handle common/3rd/uthash.h /^typedef struct UT_hash_handle {$/;" s +UT_hash_handle common/3rd/uthash.h /^} UT_hash_handle;$/;" t typeref:struct:UT_hash_handle +UT_hash_table common/3rd/uthash.h /^typedef struct UT_hash_table {$/;" s +UT_hash_table common/3rd/uthash.h /^} UT_hash_table;$/;" t typeref:struct:UT_hash_table +UT_icd common/3rd/utarray.h /^} UT_icd;$/;" t typeref:struct:__anon4 +UT_string common/3rd/utstring.h /^} UT_string;$/;" t typeref:struct:__anon8 +VERSION_SPC_4 tools/nvme/scsi.c 103;" d file: +VERSION_SPC_4 tools/nvmedrv-v4.5.3/scsi.c 103;" d file: +VPD_BLOCK_DEV_CHARACTERISTICS tools/nvme/scsi.c 57;" d file: +VPD_BLOCK_DEV_CHARACTERISTICS tools/nvmedrv-v4.5.3/scsi.c 57;" d file: +VPD_BLOCK_LIMITS tools/nvme/scsi.c 56;" d file: +VPD_BLOCK_LIMITS tools/nvmedrv-v4.5.3/scsi.c 56;" d file: +VPD_DEVICE_IDENTIFIERS tools/nvme/scsi.c 54;" d file: +VPD_DEVICE_IDENTIFIERS tools/nvmedrv-v4.5.3/scsi.c 54;" d file: +VPD_EXTENDED_INQUIRY tools/nvme/scsi.c 55;" d file: +VPD_EXTENDED_INQUIRY tools/nvmedrv-v4.5.3/scsi.c 55;" d file: +VPD_SERIAL_NUMBER tools/nvme/scsi.c 53;" d file: +VPD_SERIAL_NUMBER tools/nvmedrv-v4.5.3/scsi.c 53;" d file: +VPD_SUPPORTED_PAGES tools/nvme/scsi.c 52;" d file: +VPD_SUPPORTED_PAGES tools/nvmedrv-v4.5.3/scsi.c 52;" d file: +WARN_ON include/debug.h 79;" d +WL_POLICY_DUAL_POOL include/params.h /^ WL_POLICY_DUAL_POOL,$/;" e enum:BDBM_WL_POLICY +WL_POLICY_NONE include/params.h /^ WL_POLICY_NONE,$/;" e enum:BDBM_WL_POLICY +WL_POLICY_NOT_SPECIFIED include/params.h /^ WL_POLICY_NOT_SPECIFIED = 0,$/;" e enum:BDBM_WL_POLICY +WP common/3rd/uthash.h 554;" d +_ATOMIC64_H common/3rd/uatomic64.h 2;" d +_ATOMIC_H common/3rd/uatomic.h 2;" d +_BDBM_HLM_REQ_POOL_H ftl/hlm_reqs_pool.h 26;" d +_BDBM_HOST_BLOCKIO_PROXY_IOCTL_H frontend/hybrid/blkio_proxy_ioctl.h 26;" d +_BDBM_PROXY_REQS_POOK_H frontend/hybrid/blkio_proxy_reqs_pool.h 26;" d +_BLUEDBM_BLOCKIO_PROXY_PROXY_H frontend/hybrid/blkio_proxy.h 26;" d +_BLUEDBM_BLOCKIO_PROXY_STUB_H frontend/hybrid/blkio_stub.h 26;" d +_BLUEDBM_DEBUG_H include/debug.h 26;" d +_BLUEDBM_DEV_HYNIX_NVME_H devices/dumbssd/dev_hynix_nvme.h 26;" d +_BLUEDBM_DEV_RAMDRV_H devices/dumbssd/dm_dumbssd.h 26;" d +_BLUEDBM_DEV_RAMDRV_H devices/ramdrive/dm_ramdrive.h 26;" d +_BLUEDBM_DEV_RAMSSD_H devices/ramdrive/dev_ramssd.h 26;" d +_BLUEDBM_DM_BLUEDBM_H devices/bluedbm/dm_bluedbm.h 26;" d +_BLUEDBM_DM_DF_H devices/dragonfire/dm_df.h 26;" d +_BLUEDBM_DM_PARAMS_H devices/common/dev_params.h 26;" d +_BLUEDBM_DM_USER_H devices/libdummy/dm_dummy.h 26;" d +_BLUEDBM_DRV_H include/bdbm_drv.h 26;" d +_BLUEDBM_ERROR_CODES_H ftl/error_codes.h 26;" d +_BLUEDBM_FILE_H common/utils/ufile.h 26;" d +_BLUEDBM_FTL_ABM_H ftl/algo/abm.h 26;" d +_BLUEDBM_FTL_BLOCKFTL_H ftl/algo/block_ftl.h 26;" d +_BLUEDBM_FTL_DFTL_H ftl/algo/dftl.h 26;" d +_BLUEDBM_FTL_NOFTL_H ftl/algo/no_ftl.h 26;" d +_BLUEDBM_FTL_PAGEFTL_H ftl/algo/page_ftl.h 26;" d +_BLUEDBM_HLM_BUFFER_H ftl/hlm_buf.h 26;" d +_BLUEDBM_HLM_DFTL_H ftl/hlm_dftl.h 26;" d +_BLUEDBM_HLM_NO_BUFFER_H ftl/hlm_nobuf.h 26;" d +_BLUEDBM_HLM_RSD_H ftl/hlm_rsd.h 26;" d +_BLUEDBM_HOST_BLKDEV_H frontend/kernel/blkdev.h 26;" d +_BLUEDBM_HOST_BLOCKIO_H frontend/kernel/blkio.h 26;" d +_BLUEDBM_HOST_USER_H frontend/df-user/userio.h 26;" d +_BLUEDBM_HOST_USER_H frontend/user/userio.h 26;" d +_BLUEDBM_IOCTL_H frontend/kernel/blkdev_ioctl.h 26;" d +_BLUEDBM_LLM_MQ_H ftl/llm_mq.h 26;" d +_BLUEDBM_LLM_NOQ_LOCK_H ftl/llm_noq_lock.h 26;" d +_BLUEDBM_LLM_NT_H ftl/llm_noq.h 26;" d +_BLUEDBM_LLM_RMQ_H ftl/llm_rmq.h 26;" d +_BLUEDBM_MEMORY_H common/utils/umemory.h 26;" d +_BLUEDBM_PARAMS_H include/params.h 26;" d +_BLUEDBM_PRIOR_QUEUE_MQ_H ftl/queue/prior_queue.h 26;" d +_BLUEDBM_QUEUE_MQ_H ftl/queue/queue.h 26;" d +_BLUEDBM_RD_PRIOR_QUEUE_MQ_H ftl/queue/rd_prior_queue.h 26;" d +_BLUEDBM_SYNC_H common/utils/usync.h 26;" d +_BLUEDBM_THREAD_H common/utils/uthread.h 26;" d +_BLUEDBM_TIME_H common/utils/utime.h 26;" d +_CASTASGN common/3rd/utlist.h 90;" d +_CASTASGN common/3rd/utlist.h 98;" d +_LINUX_LIST_H common/3rd/ulist.h 22;" d +_NEXT common/3rd/utlist.h 85;" d +_NEXT common/3rd/utlist.h 93;" d +_NEXTASGN common/3rd/utlist.h 86;" d +_NEXTASGN common/3rd/utlist.h 94;" d +_NVME_H tools/nvme/nvme.h 15;" d +_NVME_H tools/nvmedrv-v4.5.3/nvme.h 15;" d +_PREVASGN common/3rd/utlist.h 88;" d +_PREVASGN common/3rd/utlist.h 96;" d +_RS common/3rd/utlist.h 89;" d +_RS common/3rd/utlist.h 97;" d +_SS_IMPL examples/stringsearch/ss_impl.h 26;" d +_SV common/3rd/utlist.h 84;" d +_SV common/3rd/utlist.h 92;" d +_UNUSED_ common/3rd/utarray.h /^static const UT_icd ut_int_icd _UNUSED_ = {sizeof(int),NULL,NULL,NULL};$/;" v +_UNUSED_ common/3rd/utarray.h /^static const UT_icd ut_ptr_icd _UNUSED_ = {sizeof(void*),NULL,NULL,NULL};$/;" v +_UNUSED_ common/3rd/utarray.h /^static const UT_icd ut_str_icd _UNUSED_ = {sizeof(char*),NULL,utarray_str_cpy,utarray_str_dtor};$/;" v +_UNUSED_ common/3rd/utarray.h 32;" d +_UNUSED_ common/3rd/utarray.h 34;" d +_UNUSED_ common/3rd/utstring.h 32;" d +_UNUSED_ common/3rd/utstring.h 34;" d +_UPAGE_H common/utils/upage.h 26;" d +__BDBM_DEVICES__ include/devices.h 26;" d +__BLUEDBM_FTL_PARAM_H__ ftl/ftl_params.h 26;" d +__BLUEDBM_PMU_H ftl/pmu.h 2;" d +__FTL_DFTL_MAP_H ftl/algo/dftl_map.h 26;" d +__ILOG2_H common/3rd/uilog.h 4;" d +__bdbm_abm_check_status ftl/algo/abm.c /^void __bdbm_abm_check_status (bdbm_abm_info_t* bai)$/;" f file: +__bdbm_abm_create_pst ftl/algo/abm.c /^babm_abm_subpage_t* __bdbm_abm_create_pst (bdbm_device_params_t* np)$/;" f +__bdbm_abm_destory_pst ftl/algo/abm.c /^void __bdbm_abm_destory_pst (babm_abm_subpage_t* pst) $/;" f +__bdbm_abm_display_status ftl/algo/abm.c /^void __bdbm_abm_display_status (bdbm_abm_info_t* bai) $/;" f file: +__bdbm_block_ftl_allocate_segment ftl/algo/block_ftl.c /^int32_t __bdbm_block_ftl_allocate_segment ($/;" f +__bdbm_block_ftl_badblock_scan_eraseblks ftl/algo/block_ftl.c /^void __bdbm_block_ftl_badblock_scan_eraseblks (bdbm_drv_info_t* bdi, uint64_t block_no)$/;" f +__bdbm_block_ftl_do_gc_block_merge ftl/algo/block_ftl.c /^uint32_t __bdbm_block_ftl_do_gc_block_merge ($/;" f +__bdbm_block_ftl_do_gc_segment ftl/algo/block_ftl.c /^uint32_t __bdbm_block_ftl_do_gc_segment ($/;" f +__bdbm_block_ftl_erase_block ftl/algo/block_ftl.c /^uint32_t __bdbm_block_ftl_erase_block (bdbm_drv_info_t* bdi, uint64_t seg_no)$/;" f +__bdbm_block_ftl_get_block_no ftl/algo/block_ftl.c /^uint64_t __bdbm_block_ftl_get_block_no (bdbm_block_ftl_private_t *p, uint64_t lpa) $/;" f file: +__bdbm_block_ftl_get_page_ofs ftl/algo/block_ftl.c /^uint64_t __bdbm_block_ftl_get_page_ofs (bdbm_block_ftl_private_t *p, uint64_t lpa) $/;" f file: +__bdbm_block_ftl_get_segment_no ftl/algo/block_ftl.c /^uint64_t __bdbm_block_ftl_get_segment_no (bdbm_block_ftl_private_t *p, uint64_t lpa) $/;" f file: +__bdbm_block_ftl_is_allocated ftl/algo/block_ftl.c /^uint32_t __bdbm_block_ftl_is_allocated ($/;" f +__bdbm_block_mark_it_dead ftl/algo/block_ftl.c /^static void __bdbm_block_mark_it_dead ($/;" f file: +__bdbm_dftl_badblock_scan_eraseblks ftl/algo/dftl.c /^static void __bdbm_dftl_badblock_scan_eraseblks ($/;" f file: +__bdbm_dftl_create_active_blocks ftl/algo/dftl.c /^bdbm_abm_block_t** __bdbm_dftl_create_active_blocks ($/;" f +__bdbm_dftl_destroy_active_blocks ftl/algo/dftl.c /^void __bdbm_dftl_destroy_active_blocks ($/;" f +__bdbm_dftl_get_active_blocks ftl/algo/dftl.c /^uint32_t __bdbm_dftl_get_active_blocks ($/;" f +__bdbm_dftl_mark_it_dead ftl/algo/dftl.c /^static void __bdbm_dftl_mark_it_dead ($/;" f file: +__bdbm_dftl_victim_selection ftl/algo/dftl.c /^bdbm_abm_block_t* __bdbm_dftl_victim_selection ($/;" f +__bdbm_dftl_victim_selection_greedy ftl/algo/dftl.c /^bdbm_abm_block_t* __bdbm_dftl_victim_selection_greedy ($/;" f +__bdbm_page_badblock_scan_eraseblks ftl/algo/page_ftl.c /^void __bdbm_page_badblock_scan_eraseblks ($/;" f +__bdbm_page_ftl_create_active_blocks ftl/algo/page_ftl.c /^bdbm_abm_block_t** __bdbm_page_ftl_create_active_blocks ($/;" f +__bdbm_page_ftl_create_mapping_table ftl/algo/page_ftl.c /^bdbm_page_mapping_entry_t* __bdbm_page_ftl_create_mapping_table ($/;" f +__bdbm_page_ftl_destroy_active_blocks ftl/algo/page_ftl.c /^void __bdbm_page_ftl_destroy_active_blocks ($/;" f +__bdbm_page_ftl_destroy_mapping_table ftl/algo/page_ftl.c /^void __bdbm_page_ftl_destroy_mapping_table ($/;" f +__bdbm_page_ftl_get_active_blocks ftl/algo/page_ftl.c /^uint32_t __bdbm_page_ftl_get_active_blocks ($/;" f +__bdbm_page_ftl_victim_selection ftl/algo/page_ftl.c /^bdbm_abm_block_t* __bdbm_page_ftl_victim_selection ($/;" f +__bdbm_page_ftl_victim_selection_greedy ftl/algo/page_ftl.c /^bdbm_abm_block_t* __bdbm_page_ftl_victim_selection_greedy ($/;" f +__bdbm_page_mark_it_dead ftl/algo/page_ftl.c /^static void __bdbm_page_mark_it_dead ($/;" f file: +__bdbm_raw_flash_destory examples/raw-flash/raw-flash.c /^static void __bdbm_raw_flash_destory (bdbm_raw_flash_t* rf)$/;" f file: +__bdbm_raw_flash_fill_phyaddr examples/raw-flash/raw-flash.c /^static int __bdbm_raw_flash_fill_phyaddr ($/;" f file: +__bdbm_raw_flash_get_llm_req examples/raw-flash/raw-flash.c /^static bdbm_llm_req_t* __bdbm_raw_flash_get_llm_req ($/;" f file: +__bdbm_raw_flash_rwe examples/raw-flash/raw-flash.c /^int __bdbm_raw_flash_rwe ($/;" f +__bdbm_raw_flash_rwe_async examples/raw-flash/raw-flash.c /^int __bdbm_raw_flash_rwe_async ($/;" f +__bdbm_raw_flash_show_nand_params examples/raw-flash/raw-flash.c /^static void __bdbm_raw_flash_show_nand_params (bdbm_device_params_t* parm_dev)$/;" f file: +__blkio_display_req frontend/hybrid/blkio_stub.c /^static void __blkio_display_req ($/;" f file: +__blkio_proxy_fops_wq_handler frontend/hybrid/blkio_proxy.c /^static void __blkio_proxy_fops_wq_handler ($/;" f file: +__blkio_stub_finish frontend/hybrid/blkio_stub.c /^static void __blkio_stub_finish ($/;" f file: +__bluedbm_timing_hrtimer_cmd_done devices/bluedbm/dm_bluedbm.c /^static enum hrtimer_restart __bluedbm_timing_hrtimer_cmd_done (struct hrtimer *ptr_hrtimer)$/;" f file: +__bluedbm_wq_handler devices/bluedbm/dm_bluedbm.c /^static void __bluedbm_wq_handler (struct work_struct *w)$/;" f file: +__copy_bio_to_dma devices/bluedbm/dm_bluedbm.c /^void __copy_bio_to_dma ($/;" f +__copy_dma_to_bio devices/bluedbm/dm_bluedbm.c /^void __copy_dma_to_bio ($/;" f +__dev_ramssd_fops_wq_handler devices/ramdrive/dev_ramssd.c /^static void __dev_ramssd_fops_wq_handler (struct work_struct *w)$/;" f file: +__display_hex_values devices/ramdrive/dev_ramssd.c /^static void __display_hex_values (uint8_t* host, uint8_t* back)$/;" f file: +__dm_intr_handler devices/common/dev_stub.c /^void __dm_intr_handler (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r)$/;" f +__dm_intr_handler examples/raw-flash/raw-flash.c /^static void __dm_intr_handler ($/;" f file: +__dm_proxy_thread frontend/user/dev_proxy.c /^int __dm_proxy_thread (void* arg) $/;" f +__dm_ramdrive_ih devices/ramdrive/dm_ramdrive.c /^static void __dm_ramdrive_ih (void* arg)$/;" f file: +__dm_setup_device_params devices/bluedbm/dm_bluedbm.c /^static void __dm_setup_device_params (bdbm_device_params_t* params)$/;" f file: +__dm_setup_device_params devices/dragonfire/dm_df.c /^static void __dm_setup_device_params (bdbm_device_params_t* params)$/;" f file: +__dm_setup_device_params devices/libdummy/dm_dummy.c /^static void __dm_setup_device_params (bdbm_device_params_t* params)$/;" f file: +__dm_setup_device_params devices/ramdrive/dm_ramdrive.c /^static void __dm_setup_device_params (bdbm_device_params_t* params)$/;" f file: +__encode_bio_to_proxy_req frontend/hybrid/blkio_proxy.c /^static int __encode_bio_to_proxy_req ($/;" f file: +__fetch_me_and_make_req ftl/hlm_dftl.c /^int __fetch_me_and_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* r)$/;" f +__fibmap_display_file examples/stringsearch/ss.c /^void __fibmap_display_file (const char* fname) $/;" f +__fibmap_search_file examples/stringsearch/ss.c /^int __fibmap_search_file (const char* pattern, const char* fname, compr_func fp_comp)$/;" f +__free_blkio_req frontend/kernel/blkio.c /^static void __free_blkio_req (bdbm_blkio_req_t* br)$/;" f file: +__free_block_io_proxy_req frontend/hybrid/blkio_proxy.c /^static inline void __free_block_io_proxy_req ($/;" f file: +__free_llm_req devices/common/dev_stub.c /^static void __free_llm_req (bdbm_llm_req_t* kr)$/;" f file: +__fs_search_file examples/stringsearch/ss.c /^int __fs_search_file (const char* pattern, const char* fname) $/;" f +__get_blkio_proxy_req frontend/hybrid/blkio_proxy.c /^static bdbm_blkio_proxy_req_t* __get_blkio_proxy_req ($/;" f file: +__get_blkio_req frontend/kernel/blkio.c /^static bdbm_blkio_req_t* __get_blkio_req (struct bio *bio)$/;" f file: +__get_block_idx ftl/algo/abm.c /^uint64_t __get_block_idx (bdbm_device_params_t* np, uint64_t channel_no, uint64_t chip_no, uint64_t block_no) {$/;" f file: +__get_block_ofs ftl/algo/abm.c /^uint64_t __get_block_ofs (bdbm_device_params_t* np, uint64_t blk_idx) {$/;" f file: +__get_channel_ofs ftl/algo/abm.c /^uint64_t __get_channel_ofs (bdbm_device_params_t* np, uint64_t blk_idx) {$/;" f file: +__get_chip_ofs ftl/algo/abm.c /^uint64_t __get_chip_ofs (bdbm_device_params_t* np, uint64_t blk_idx) {$/;" f file: +__get_dev_start_ofs examples/stringsearch/ss.c /^int __get_dev_start_ofs (char* devname)$/;" f +__get_llm_req devices/common/dev_stub.c /^static bdbm_llm_req_t* __get_llm_req ($/;" f file: +__get_ramssd_data_addr devices/ramdrive/dev_ramssd.c /^static uint8_t* __get_ramssd_data_addr (dev_ramssd_info_t* ri, uint64_t lpa)$/;" f file: +__hlist_del common/3rd/ulist.h /^static inline void __hlist_del(struct hlist_node *n)$/;" f +__hlm_buf_thread ftl/hlm_buf.c /^int __hlm_buf_thread (void* arg)$/;" f +__hlm_dftl_thread ftl/hlm_dftl.c /^int __hlm_dftl_thread (void* arg)$/;" f +__hlm_nobuf_check_ondemand_gc ftl/hlm_nobuf.c /^void __hlm_nobuf_check_ondemand_gc (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f +__hlm_nobuf_end_blkio_req ftl/hlm_nobuf.c /^void __hlm_nobuf_end_blkio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f +__hlm_nobuf_end_gcio_req ftl/hlm_nobuf.c /^void __hlm_nobuf_end_gcio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f +__hlm_nobuf_make_rw_req ftl/hlm_nobuf.c /^uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f +__hlm_nobuf_make_trim_req ftl/hlm_nobuf.c /^uint32_t __hlm_nobuf_make_trim_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* ptr_hlm_req)$/;" f +__hlm_reqs_pool_create_read_req ftl/hlm_reqs_pool.c /^static int __hlm_reqs_pool_create_read_req ($/;" f file: +__hlm_reqs_pool_create_trim_req ftl/hlm_reqs_pool.c /^static int __hlm_reqs_pool_create_trim_req ($/;" f file: +__hlm_reqs_pool_create_write_req ftl/hlm_reqs_pool.c /^static int __hlm_reqs_pool_create_write_req ($/;" f file: +__hlm_rsd_delete_hlm_req ftl/hlm_rsd.c /^void __hlm_rsd_delete_hlm_req ($/;" f +__hlm_rsd_duplicate_hlm_req ftl/hlm_rsd.c /^bdbm_hlm_req_t* __hlm_rsd_duplicate_hlm_req ($/;" f +__hlm_rsd_end_req ftl/hlm_rsd.c /^void __hlm_rsd_end_req ($/;" f +__hlm_rsd_make_req_r ftl/hlm_rsd.c /^uint32_t __hlm_rsd_make_req_r ($/;" f +__hlm_rsd_make_req_w ftl/hlm_rsd.c /^uint32_t __hlm_rsd_make_req_w ($/;" f +__hlm_rsd_make_rm_seg ftl/hlm_rsd.c /^uint32_t __hlm_rsd_make_rm_seg ($/;" f +__host_blkio_make_request_fn frontend/hybrid/blkio_proxy.c /^static void __host_blkio_make_request_fn ($/;" f file: +__host_blkio_make_request_fn frontend/kernel/blkio.c /^static blk_qc_t __host_blkio_make_request_fn ($/;" f file: +__host_proxy_stub_thread frontend/hybrid/blkio_stub.c /^int __host_proxy_stub_thread (void* arg) $/;" f +__is_client_ready frontend/hybrid/blkio_proxy.c /^static inline int __is_client_ready (bdbm_blkio_proxy_t* p)$/;" f file: +__kill_pending_proxy_reqs frontend/hybrid/blkio_proxy.c /^static int __kill_pending_proxy_reqs (bdbm_drv_info_t *bdi)$/;" f file: +__list_add common/3rd/ulist.h /^static inline void __list_add(struct list_head *_new,$/;" f +__list_del common/3rd/ulist.h /^static inline void __list_del(struct list_head * prev, struct list_head * next)$/;" f +__list_for_each common/3rd/ulist.h 260;" d +__list_splice common/3rd/ulist.h /^static inline void __list_splice(struct list_head *list,$/;" f +__llm_mq_thread ftl/llm_mq.c /^int __llm_mq_thread (void* arg)$/;" f +__llm_rmq_thread ftl/llm_rmq.c /^int __llm_rmq_thread (void* arg)$/;" f +__nvm_configure_create tools/lightnvm-v4.5.3/core.c /^static int __nvm_configure_create(struct nvm_ioctl_create *create)$/;" f file: +__nvm_configure_create tools/lightnvm/core.c /^static int __nvm_configure_create(struct nvm_ioctl_create *create)$/;" f file: +__nvm_configure_remove tools/lightnvm-v4.5.3/core.c /^static int __nvm_configure_remove(struct nvm_ioctl_remove *remove)$/;" f file: +__nvm_configure_remove tools/lightnvm/core.c /^static int __nvm_configure_remove(struct nvm_ioctl_remove *remove)$/;" f file: +__nvm_ioctl_dev_init tools/lightnvm-v4.5.3/core.c /^static long __nvm_ioctl_dev_init(struct nvm_ioctl_dev_init *init)$/;" f file: +__nvm_ioctl_dev_init tools/lightnvm/core.c /^static long __nvm_ioctl_dev_init(struct nvm_ioctl_dev_init *init)$/;" f file: +__nvme_process_cq tools/nvme/pci.c /^static void __nvme_process_cq(struct nvme_queue *nvmeq, unsigned int *tag)$/;" f file: +__nvme_process_cq tools/nvmedrv-v4.5.3/pci.c /^static void __nvme_process_cq(struct nvme_queue *nvmeq, unsigned int *tag)$/;" f file: +__nvme_scan_namespaces tools/nvme/core.c /^static void __nvme_scan_namespaces(struct nvme_ctrl *ctrl, unsigned nn)$/;" f file: +__nvme_scan_namespaces tools/nvmedrv-v4.5.3/core.c /^static void __nvme_scan_namespaces(struct nvme_ctrl *ctrl, unsigned nn)$/;" f file: +__nvme_submit_cmd tools/nvme/pci.c /^static void __nvme_submit_cmd(struct nvme_queue *nvmeq,$/;" f file: +__nvme_submit_cmd tools/nvmedrv-v4.5.3/pci.c /^static void __nvme_submit_cmd(struct nvme_queue *nvmeq,$/;" f file: +__nvme_submit_sync_cmd tools/nvme/core.c /^int __nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd,$/;" f +__nvme_submit_sync_cmd tools/nvmedrv-v4.5.3/core.c /^int __nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd,$/;" f +__nvme_submit_user_cmd tools/nvme/core.c /^int __nvme_submit_user_cmd(struct request_queue *q, struct nvme_command *cmd,$/;" f +__nvme_submit_user_cmd tools/nvmedrv-v4.5.3/core.c /^int __nvme_submit_user_cmd(struct request_queue *q, struct nvme_command *cmd,$/;" f +__packed tools/nvme/lightnvm.c /^} __packed;$/;" v typeref:struct:nvme_nvm_addr_format +__packed tools/nvme/lightnvm.c /^} __packed;$/;" v typeref:struct:nvme_nvm_id +__packed tools/nvme/lightnvm.c /^} __packed;$/;" v typeref:struct:nvme_nvm_id_group +__packed tools/nvmedrv-v4.5.3/lightnvm.c /^} __packed;$/;" v typeref:struct:nvme_nvm_addr_format +__packed tools/nvmedrv-v4.5.3/lightnvm.c /^} __packed;$/;" v typeref:struct:nvme_nvm_id +__packed tools/nvmedrv-v4.5.3/lightnvm.c /^} __packed;$/;" v typeref:struct:nvme_nvm_id_group +__ptr_ramssd_data devices/ramdrive/dev_ramssd.c /^static void* __ptr_ramssd_data = NULL;$/;" v file: +__ramssd_alloc_ssdram devices/ramdrive/dev_ramssd.c /^static void* __ramssd_alloc_ssdram (bdbm_device_params_t* ptr_np)$/;" f file: +__ramssd_block_addr devices/ramdrive/dev_ramssd.c /^static uint8_t* __ramssd_block_addr ($/;" f file: +__ramssd_cmd_done devices/ramdrive/dev_ramssd.c /^void __ramssd_cmd_done (dev_ramssd_info_t* ri)$/;" f +__ramssd_erase_block devices/ramdrive/dev_ramssd.c /^static uint8_t __ramssd_erase_block ($/;" f file: +__ramssd_free_ssdram devices/ramdrive/dev_ramssd.c /^static void __ramssd_free_ssdram (void* ptr_ramssd) $/;" f file: +__ramssd_page_addr devices/ramdrive/dev_ramssd.c /^static uint8_t* __ramssd_page_addr ($/;" f file: +__ramssd_prog_page devices/ramdrive/dev_ramssd.c /^static uint8_t __ramssd_prog_page ($/;" f file: +__ramssd_read_page devices/ramdrive/dev_ramssd.c /^static uint8_t __ramssd_read_page ($/;" f file: +__ramssd_send_cmd devices/ramdrive/dev_ramssd.c /^static uint32_t __ramssd_send_cmd ($/;" f file: +__ramssd_timing_create devices/ramdrive/dev_ramssd.c /^uint32_t __ramssd_timing_create (dev_ramssd_info_t* ri) $/;" f +__ramssd_timing_destory devices/ramdrive/dev_ramssd.c /^void __ramssd_timing_destory (dev_ramssd_info_t* ri)$/;" f +__ramssd_timing_hrtimer_cmd_done devices/ramdrive/dev_ramssd.c /^static enum hrtimer_restart __ramssd_timing_hrtimer_cmd_done (struct hrtimer *ptr_hrtimer)$/;" f file: +__ramssd_timing_register_schedule devices/ramdrive/dev_ramssd.c /^uint32_t __ramssd_timing_register_schedule (dev_ramssd_info_t* ri)$/;" f +__return_llm_req devices/common/dev_stub.c /^static void __return_llm_req ($/;" f file: +__rrpc_lock_laddr tools/lightnvm-v4.5.3/rrpc.h /^static int __rrpc_lock_laddr(struct rrpc *rrpc, sector_t laddr,$/;" f +__rrpc_lock_laddr tools/lightnvm/rrpc.h /^static int __rrpc_lock_laddr(struct rrpc *rrpc, sector_t laddr,$/;" f +_bdbm_dm_inf devices/bluedbm/dm_bluedbm.c /^bdbm_dm_inf_t _bdbm_dm_inf = {$/;" v +_bdbm_dm_inf devices/dumbssd/dm_dumbssd.c /^bdbm_dm_inf_t _bdbm_dm_inf = {$/;" v +_bdbm_dm_inf devices/libdummy/dm_dummy.c /^bdbm_dm_inf_t _bdbm_dm_inf = {$/;" v +_bdbm_dm_inf devices/ramdrive/dm_ramdrive.c /^bdbm_dm_inf_t _bdbm_dm_inf = {$/;" v +_bdbm_dm_inf frontend/df-user/dev_proxy.c /^bdbm_dm_inf_t _bdbm_dm_inf = {$/;" v +_bdbm_dm_inf frontend/user/dev_proxy.c /^bdbm_dm_inf_t _bdbm_dm_inf = {$/;" v +_bdbm_drv_info_t include/bdbm_drv.h /^struct _bdbm_drv_info_t {$/;" s +_bdbm_llm_inf devices/common/dev_stub.c /^bdbm_llm_inf_t _bdbm_llm_inf = {$/;" v +_bdbm_llm_inf examples/raw-flash/raw-flash.c /^bdbm_llm_inf_t _bdbm_llm_inf = {$/;" v +_bdi frontend/df-user/main.c /^bdbm_drv_info_t* _bdi = NULL;$/;" v +_bdi frontend/hybrid/blkio_proxy.c /^static bdbm_drv_info_t* _bdi = NULL;$/;" v file: +_bdi frontend/hybrid/kmain.c /^bdbm_drv_info_t* _bdi = NULL;$/;" v +_bdi frontend/hybrid/umain.c /^bdbm_drv_info_t* _bdi = NULL;$/;" v +_bdi frontend/kernel/kmain.c /^bdbm_drv_info_t* _bdi = NULL;$/;" v +_bdi frontend/user/main.c /^bdbm_drv_info_t* _bdi = NULL;$/;" v +_bdi_dm devices/common/dev_main.c /^bdbm_drv_info_t* _bdi_dm = NULL; \/* for Connectal & RAMSSD *\/$/;" v +_bdi_dm devices/dumbssd/dm_dumbssd.c /^bdbm_drv_info_t* _bdi_dm = NULL;$/;" v +_bdops devices/dumbssd/dm_dumbssd.c /^static struct block_device_operations _bdops = {$/;" v typeref:struct:block_device_operations file: +_blkio_inf frontend/kernel/blkio.c /^bdbm_host_inf_t _blkio_inf = {$/;" v +_blkio_proxy_inf frontend/hybrid/blkio_proxy.c /^bdbm_host_inf_t _blkio_proxy_inf = {$/;" v +_blkio_stub_inf frontend/hybrid/blkio_stub.c /^bdbm_host_inf_t _blkio_stub_inf = {$/;" v +_ctl_fops devices/dumbssd/dm_dumbssd.c /^static const struct file_operations _ctl_fops = {$/;" v typeref:struct:file_operations file: +_ctl_fops tools/lightnvm-v4.5.3/core.c /^static const struct file_operations _ctl_fops = {$/;" v typeref:struct:file_operations file: +_ctl_fops tools/lightnvm/core.c /^static const struct file_operations _ctl_fops = {$/;" v typeref:struct:file_operations file: +_dumb_dev devices/dumbssd/dm_dumbssd.c /^dumb_ssd_dev_t _dumb_dev;$/;" v +_ftl_block_ftl frontend/hybrid/blkio_proxy.c /^bdbm_ftl_inf_t _ftl_page_ftl, _ftl_block_ftl;$/;" v +_ftl_block_ftl ftl/algo/block_ftl.c /^bdbm_ftl_inf_t _ftl_block_ftl = {$/;" v +_ftl_dftl common/bdbm_main.c /^bdbm_ftl_inf_t _ftl_dftl, _ftl_no_ftl;$/;" v +_ftl_dftl ftl/algo/dftl.c /^bdbm_ftl_inf_t _ftl_dftl = {$/;" v +_ftl_no_ftl common/bdbm_main.c /^bdbm_ftl_inf_t _ftl_dftl, _ftl_no_ftl;$/;" v +_ftl_no_ftl ftl/algo/no_ftl.c /^bdbm_ftl_inf_t _ftl_no_ftl = {$/;" v +_ftl_page_ftl frontend/hybrid/blkio_proxy.c /^bdbm_ftl_inf_t _ftl_page_ftl, _ftl_block_ftl;$/;" v +_ftl_page_ftl ftl/algo/page_ftl.c /^bdbm_ftl_inf_t _ftl_page_ftl = {$/;" v +_hlm_buf_inf common/bdbm_main.c /^bdbm_hlm_inf_t _hlm_dftl_inf, _hlm_buf_inf;$/;" v +_hlm_buf_inf ftl/hlm_buf.c /^bdbm_hlm_inf_t _hlm_buf_inf = {$/;" v +_hlm_dftl_inf common/bdbm_main.c /^bdbm_hlm_inf_t _hlm_dftl_inf, _hlm_buf_inf;$/;" v +_hlm_dftl_inf ftl/hlm_dftl.c /^bdbm_hlm_inf_t _hlm_dftl_inf = {$/;" v +_hlm_nobuf_inf frontend/hybrid/blkio_proxy.c /^bdbm_hlm_inf_t _hlm_nobuf_inf;$/;" v +_hlm_nobuf_inf ftl/hlm_nobuf.c /^bdbm_hlm_inf_t _hlm_nobuf_inf = {$/;" v +_hlm_rsd_inf ftl/hlm_rsd.c /^bdbm_hlm_inf_t _hlm_rsd_inf = {$/;" v +_llm_mq_inf frontend/hybrid/blkio_proxy.c /^bdbm_llm_inf_t _llm_mq_inf;$/;" v +_llm_mq_inf ftl/llm_mq.c /^bdbm_llm_inf_t _llm_mq_inf = {$/;" v +_llm_noq_inf common/bdbm_main.c /^bdbm_llm_inf_t _llm_noq_inf;$/;" v +_llm_noq_inf ftl/llm_noq.c /^bdbm_llm_inf_t _llm_noq_inf = {$/;" v +_llm_noq_lock_inf ftl/llm_noq_lock.c /^bdbm_llm_inf_t _llm_noq_lock_inf = {$/;" v +_llm_rmq_inf ftl/llm_rmq.c /^bdbm_llm_inf_t _llm_rmq_inf = {$/;" v +_nvcache_inf frontend/kernel/nvmcache.c /^bdbm_nvcache_inf_t _nvcache_inf = {$/;" v +_nvm_misc devices/dumbssd/dm_dumbssd.c /^static struct miscdevice _nvm_misc = {$/;" v typeref:struct:miscdevice file: +_nvm_misc tools/lightnvm-v4.5.3/core.c /^static struct miscdevice _nvm_misc = {$/;" v typeref:struct:miscdevice file: +_nvm_misc tools/lightnvm/core.c /^static struct miscdevice _nvm_misc = {$/;" v typeref:struct:miscdevice file: +_nvme_check_size tools/nvme/pci.c /^static inline void _nvme_check_size(void)$/;" f file: +_nvme_check_size tools/nvmedrv-v4.5.3/pci.c /^static inline void _nvme_check_size(void)$/;" f file: +_nvme_nvm_check_size tools/nvme/lightnvm.c /^static inline void _nvme_nvm_check_size(void)$/;" f file: +_nvme_nvm_check_size tools/nvmedrv-v4.5.3/lightnvm.c /^static inline void _nvme_nvm_check_size(void)$/;" f file: +_offsetof common/3rd/ulist.h 32;" d +_param_block_erase_time_us devices/common/dev_params.c /^int _param_block_erase_time_us = NAND_BLOCK_ERASE_TIME_US;$/;" v +_param_chip_bus_trans_time_us devices/common/dev_params.c /^int _param_chip_bus_trans_time_us = NAND_CHIP_BUS_TRANS_TIME_US;$/;" v +_param_device_type devices/common/dev_params.c /^int _param_device_type = DEVICE_TYPE_RAMDRIVE;$/;" v +_param_device_type devices/common/dev_params.c /^int _param_device_type = DEVICE_TYPE_RAMDRIVE_INTR;$/;" v +_param_device_type devices/common/dev_params.c /^int _param_device_type = DEVICE_TYPE_BLUEDBM;$/;" v +_param_device_type devices/common/dev_params.c /^int _param_device_type = DEVICE_TYPE_NOT_SPECIFIED;$/;" v +_param_device_type devices/common/dev_params.c /^int _param_device_type = DEVICE_TYPE_RAMDRIVE_TIMING;$/;" v +_param_device_type devices/common/dev_params.c /^int _param_device_type = DEVICE_TYPE_USER_DUMMY;$/;" v +_param_device_type devices/common/dev_params.c /^int _param_device_type = DEVICE_TYPE_USER_RAMDRIVE;$/;" v +_param_gc_policy ftl/ftl_params.c /^int _param_gc_policy = GC_POLICY_GREEDY;$/;" v +_param_hlm_type ftl/ftl_params.c /^int _param_hlm_type = HLM_NO_BUFFER;$/;" v +_param_host_bus_trans_time_us devices/common/dev_params.c /^int _param_host_bus_trans_time_us = NAND_HOST_BUS_TRANS_TIME_US;$/;" v +_param_kernel_sector_size ftl/ftl_params.c /^int _param_kernel_sector_size = KERNEL_SECTOR_SIZE; \/* 512 Bytes *\/$/;" v +_param_llm_type ftl/ftl_params.c /^int _param_llm_type = LLM_MULTI_QUEUE;$/;" v +_param_mapping_type ftl/ftl_params.c /^int _param_mapping_type = MAPPING_POLICY_PAGE;$/;" v +_param_nr_blocks_per_chip devices/common/dev_params.c /^int _param_nr_blocks_per_chip = NR_BLOCKS_PER_CHIP;$/;" v +_param_nr_channels devices/common/dev_params.c /^int _param_nr_channels = NR_CHANNELS;$/;" v +_param_nr_chips_per_channel devices/common/dev_params.c /^int _param_nr_chips_per_channel = NR_CHIPS_PER_CHANNEL;$/;" v +_param_nr_pages_per_block devices/common/dev_params.c /^int _param_nr_pages_per_block = NR_PAGES_PER_BLOCK;$/;" v +_param_page_main_size devices/common/dev_params.c /^int _param_page_main_size = NAND_PAGE_SIZE;$/;" v +_param_page_oob_size devices/common/dev_params.c /^int _param_page_oob_size = NAND_PAGE_OOB_SIZE;$/;" v +_param_page_prog_time_us devices/common/dev_params.c /^int _param_page_prog_time_us = NAND_PAGE_PROG_TIME_US; $/;" v +_param_page_read_time_us devices/common/dev_params.c /^int _param_page_read_time_us = NAND_PAGE_READ_TIME_US;$/;" v +_param_queuing_policy ftl/ftl_params.c /^int _param_queuing_policy = QUEUE_POLICY_MULTI_FIFO;$/;" v +_param_snapshot ftl/ftl_params.c /^int _param_snapshot = SNAPSHOT_DISABLE;$/;" v +_param_trim ftl/ftl_params.c /^int _param_trim = TRIM_ENABLE;$/;" v +_param_wl_policy ftl/ftl_params.c /^int _param_wl_policy = WL_POLICY_NONE;$/;" v +_time_startup_timestamp common/utils/utime.c /^static uint32_t _time_startup_timestamp = 0;$/;" v file: +_userio_inf frontend/df-user/userio.c /^bdbm_host_inf_t _userio_inf = {$/;" v +_userio_inf frontend/user/userio.c /^bdbm_host_inf_t _userio_inf = {$/;" v +_utarray_eltptr common/3rd/utarray.h 115;" d +_utstring_BuildTable common/3rd/utstring.h /^_UNUSED_ static void _utstring_BuildTable($/;" f +_utstring_BuildTableR common/3rd/utstring.h /^_UNUSED_ static void _utstring_BuildTableR($/;" f +_utstring_find common/3rd/utstring.h /^_UNUSED_ static long _utstring_find($/;" f +_utstring_findR common/3rd/utstring.h /^_UNUSED_ static long _utstring_findR($/;" f +abm ftl/algo/block_ftl.c /^ bdbm_abm_info_t* abm;$/;" m struct:__anon78 file: +abort_endio tools/nvme/pci.c /^static void abort_endio(struct request *req, int error)$/;" f file: +abort_endio tools/nvmedrv-v4.5.3/pci.c /^static void abort_endio(struct request *req, int error)$/;" f file: +abort_limit tools/nvme/nvme.h /^ atomic_t abort_limit;$/;" m struct:nvme_ctrl +abort_limit tools/nvmedrv-v4.5.3/nvme.h /^ atomic_t abort_limit;$/;" m struct:nvme_ctrl +aborted tools/nvme/pci.c /^ int aborted;$/;" m struct:nvme_iod file: +aborted tools/nvmedrv-v4.5.3/pci.c /^ int aborted;$/;" m struct:nvme_iod file: +ac_bab ftl/algo/dftl.c /^ bdbm_abm_block_t** ac_bab;$/;" m struct:__anon86 file: +ac_bab ftl/algo/page_ftl.c /^ bdbm_abm_block_t** ac_bab;$/;" m struct:__anon88 file: +act_blk tools/lightnvm-v4.5.3/sysblk.c /^ int act_blk[MAX_SYSBLKS];$/;" m struct:sysblk_scan file: +act_blk tools/lightnvm/sysblk.c /^ int act_blk[MAX_SYSBLKS];$/;" m struct:sysblk_scan file: +adapter_alloc_cq tools/nvme/pci.c /^static int adapter_alloc_cq(struct nvme_dev *dev, u16 qid,$/;" f file: +adapter_alloc_cq tools/nvmedrv-v4.5.3/pci.c /^static int adapter_alloc_cq(struct nvme_dev *dev, u16 qid,$/;" f file: +adapter_alloc_sq tools/nvme/pci.c /^static int adapter_alloc_sq(struct nvme_dev *dev, u16 qid,$/;" f file: +adapter_alloc_sq tools/nvmedrv-v4.5.3/pci.c /^static int adapter_alloc_sq(struct nvme_dev *dev, u16 qid,$/;" f file: +adapter_delete_cq tools/nvme/pci.c /^static int adapter_delete_cq(struct nvme_dev *dev, u16 cqid)$/;" f file: +adapter_delete_cq tools/nvmedrv-v4.5.3/pci.c /^static int adapter_delete_cq(struct nvme_dev *dev, u16 cqid)$/;" f file: +adapter_delete_queue tools/nvme/pci.c /^static int adapter_delete_queue(struct nvme_dev *dev, u8 opcode, u16 id)$/;" f file: +adapter_delete_queue tools/nvmedrv-v4.5.3/pci.c /^static int adapter_delete_queue(struct nvme_dev *dev, u8 opcode, u16 id)$/;" f file: +adapter_delete_sq tools/nvme/pci.c /^static int adapter_delete_sq(struct nvme_dev *dev, u16 sqid)$/;" f file: +adapter_delete_sq tools/nvmedrv-v4.5.3/pci.c /^static int adapter_delete_sq(struct nvme_dev *dev, u16 sqid)$/;" f file: +addr tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_addr *addr;$/;" m struct:rrpc_rq typeref:struct:rrpc_rq::rrpc_addr +addr tools/lightnvm-v4.5.3/rrpc.h /^ u64 addr;$/;" m struct:rrpc_addr +addr tools/lightnvm-v4.5.3/rrpc.h /^ u64 addr;$/;" m struct:rrpc_rev_addr +addr tools/lightnvm/rrpc.h /^ struct rrpc_addr *addr;$/;" m struct:rrpc_rq typeref:struct:rrpc_rq::rrpc_addr +addr tools/lightnvm/rrpc.h /^ u64 addr;$/;" m struct:rrpc_addr +addr tools/lightnvm/rrpc.h /^ u64 addr;$/;" m struct:rrpc_rev_addr +addr_pool tools/lightnvm-v4.5.3/rrpc.h /^ mempool_t *addr_pool;$/;" m struct:rrpc +addr_pool tools/lightnvm/rrpc.h /^ mempool_t *addr_pool;$/;" m struct:rrpc +admin_q tools/nvme/nvme.h /^ struct request_queue *admin_q;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::request_queue +admin_q tools/nvmedrv-v4.5.3/nvme.h /^ struct request_queue *admin_q;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::request_queue +admin_tagset tools/nvme/pci.c /^ struct blk_mq_tag_set admin_tagset;$/;" m struct:nvme_dev typeref:struct:nvme_dev::blk_mq_tag_set file: +admin_tagset tools/nvmedrv-v4.5.3/pci.c /^ struct blk_mq_tag_set admin_tagset;$/;" m struct:nvme_dev typeref:struct:nvme_dev::blk_mq_tag_set file: +admin_timeout tools/nvme/pci.c /^unsigned char admin_timeout = 60;$/;" v +admin_timeout tools/nvmedrv-v4.5.3/pci.c /^unsigned char admin_timeout = 60;$/;" v +atomic64_add common/3rd/uatomic64.h /^static inline void atomic64_add( int i, atomic64_t *v )$/;" f +atomic64_add_negative common/3rd/uatomic64.h /^static inline int atomic64_add_negative( int i, atomic64_t *v )$/;" f +atomic64_dec common/3rd/uatomic64.h /^static inline void atomic64_dec( atomic64_t *v )$/;" f +atomic64_dec_and_test common/3rd/uatomic64.h /^static inline int atomic64_dec_and_test( atomic64_t *v )$/;" f +atomic64_inc common/3rd/uatomic64.h /^static inline void atomic64_inc( atomic64_t *v )$/;" f +atomic64_inc_and_test common/3rd/uatomic64.h /^static inline int atomic64_inc_and_test( atomic64_t *v )$/;" f +atomic64_read common/3rd/uatomic64.h 20;" d +atomic64_set common/3rd/uatomic64.h 27;" d +atomic64_sub common/3rd/uatomic64.h /^static inline void atomic64_sub( int i, atomic64_t *v )$/;" f +atomic64_sub_and_test common/3rd/uatomic64.h /^static inline int atomic64_sub_and_test( int i, atomic64_t *v )$/;" f +atomic64_t common/3rd/uatomic64.h /^} atomic64_t;$/;" t typeref:struct:__anon6 +atomic_add common/3rd/uatomic.h /^static inline void atomic_add( int i, atomic_t *v )$/;" f +atomic_add_negative common/3rd/uatomic.h /^static inline int atomic_add_negative( int i, atomic_t *v )$/;" f +atomic_dec common/3rd/uatomic.h /^static inline void atomic_dec( atomic_t *v )$/;" f +atomic_dec_and_test common/3rd/uatomic.h /^static inline int atomic_dec_and_test( atomic_t *v )$/;" f +atomic_inc common/3rd/uatomic.h /^static inline void atomic_inc( atomic_t *v )$/;" f +atomic_inc_and_test common/3rd/uatomic.h /^static inline int atomic_inc_and_test( atomic_t *v )$/;" f +atomic_read common/3rd/uatomic.h 20;" d +atomic_set common/3rd/uatomic.h 27;" d +atomic_sub common/3rd/uatomic.h /^static inline void atomic_sub( int i, atomic_t *v )$/;" f +atomic_sub_and_test common/3rd/uatomic.h /^static inline int atomic_sub_and_test( int i, atomic_t *v )$/;" f +atomic_t common/3rd/uatomic.h /^} atomic_t;$/;" t typeref:struct:__anon7 +babm_abm_subpage_t ftl/algo/abm.h /^typedef uint8_t babm_abm_subpage_t; \/* BDBM_ABM_PAGE_STATUS *\/$/;" t +badblk ftl/algo/dftl.c /^ bdbm_sema_t badblk;$/;" m struct:__anon86 file: +badblk ftl/algo/page_ftl.c /^ bdbm_sema_t badblk;$/;" m struct:__anon88 file: +badblock_scan_thread_fn frontend/kernel/blkdev.c /^int badblock_scan_thread_fn (void* arg) $/;" f +bai ftl/algo/dftl.c /^ bdbm_abm_info_t* bai;$/;" m struct:__anon86 file: +bai ftl/algo/page_ftl.c /^ bdbm_abm_info_t* bai;$/;" m struct:__anon88 file: +bar tools/nvme/pci.c /^ void __iomem *bar;$/;" m struct:nvme_dev file: +bar tools/nvmedrv-v4.5.3/pci.c /^ void __iomem *bar;$/;" m struct:nvme_dev file: +bb_list tools/lightnvm-v4.5.3/gennvm.h /^ struct list_head bb_list; \/* Bad blocks. Mutually exclusive with$/;" m struct:gen_lun typeref:struct:gen_lun::list_head +bb_list tools/lightnvm/gennvm.h /^ struct list_head bb_list; \/* Bad blocks. Mutually exclusive with$/;" m struct:gen_lun typeref:struct:gen_lun::list_head +bdbm_abm_block_t ftl/algo/abm.h /^} bdbm_abm_block_t;$/;" t typeref:struct:__anon79 +bdbm_abm_create ftl/algo/abm.c /^bdbm_abm_info_t* bdbm_abm_create ($/;" f +bdbm_abm_destroy ftl/algo/abm.c /^void bdbm_abm_destroy (bdbm_abm_info_t* bai) $/;" f +bdbm_abm_erase_block ftl/algo/abm.c /^void bdbm_abm_erase_block ($/;" f +bdbm_abm_fetch_dirty_block ftl/algo/abm.h 111;" d +bdbm_abm_get_block ftl/algo/abm.c /^bdbm_abm_block_t* bdbm_abm_get_block ($/;" f +bdbm_abm_get_free_block_commit ftl/algo/abm.c /^void bdbm_abm_get_free_block_commit ($/;" f +bdbm_abm_get_free_block_prepare ftl/algo/abm.c /^bdbm_abm_block_t* bdbm_abm_get_free_block_prepare ($/;" f +bdbm_abm_get_free_block_rollback ftl/algo/abm.c /^void bdbm_abm_get_free_block_rollback ($/;" f +bdbm_abm_get_nr_clean_blocks ftl/algo/abm.h /^static inline uint64_t bdbm_abm_get_nr_clean_blocks (bdbm_abm_info_t* bai) { return bai->nr_clean_blks; }$/;" f +bdbm_abm_get_nr_dirty_blocks ftl/algo/abm.h /^static inline uint64_t bdbm_abm_get_nr_dirty_blocks (bdbm_abm_info_t* bai) { return bai->nr_dirty_blks; }$/;" f +bdbm_abm_get_nr_free_blocks ftl/algo/abm.h /^static inline uint64_t bdbm_abm_get_nr_free_blocks (bdbm_abm_info_t* bai) { return bai->nr_free_blks; }$/;" f +bdbm_abm_get_nr_free_blocks_prepared ftl/algo/abm.h /^static inline uint64_t bdbm_abm_get_nr_free_blocks_prepared (bdbm_abm_info_t* bai) { return bai->nr_free_blks_prepared; }$/;" f +bdbm_abm_get_nr_total_blocks ftl/algo/abm.h /^static inline uint64_t bdbm_abm_get_nr_total_blocks (bdbm_abm_info_t* bai) { return bai->nr_total_blks; }$/;" f +bdbm_abm_info_t ftl/algo/abm.h /^} bdbm_abm_info_t;$/;" t typeref:struct:__anon80 +bdbm_abm_invalidate_page ftl/algo/abm.c /^void bdbm_abm_invalidate_page ($/;" f +bdbm_abm_list_for_each_dirty_block ftl/algo/abm.h 109;" d +bdbm_abm_load ftl/algo/abm.c /^uint32_t bdbm_abm_load (bdbm_abm_info_t* bai, const char* fn)$/;" f +bdbm_abm_set_to_dirty_block ftl/algo/abm.c /^void bdbm_abm_set_to_dirty_block ($/;" f +bdbm_abm_store ftl/algo/abm.c /^uint32_t bdbm_abm_store (bdbm_abm_info_t* bai, const char* fn)$/;" f +bdbm_blk_getgeo frontend/kernel/blkdev.c /^int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo)$/;" f +bdbm_blk_ioctl frontend/kernel/blkdev.c /^int bdbm_blk_ioctl ($/;" f +bdbm_blkio_private_t frontend/kernel/blkio.c /^} bdbm_blkio_private_t;$/;" t typeref:struct:__anon55 file: +bdbm_blkio_proxy_req_t frontend/hybrid/blkio_proxy_ioctl.h /^} bdbm_blkio_proxy_req_t;$/;" t typeref:struct:__anon63 +bdbm_blkio_proxy_t frontend/hybrid/blkio_proxy.c /^} bdbm_blkio_proxy_t;$/;" t typeref:struct:__anon61 file: +bdbm_blkio_proxy_wq_t frontend/hybrid/blkio_proxy.c /^} bdbm_blkio_proxy_wq_t;$/;" t typeref:struct:__anon60 file: +bdbm_blkio_req_t include/bdbm_drv.h /^} bdbm_blkio_req_t;$/;" t typeref:struct:__anon26 +bdbm_blkio_stub_private_t frontend/hybrid/blkio_stub.c /^} bdbm_blkio_stub_private_t;$/;" t typeref:struct:__anon64 file: +bdbm_block_ftl_badblock_scan ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_badblock_scan (bdbm_drv_info_t* bdi)$/;" f +bdbm_block_ftl_create ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_create (bdbm_drv_info_t* bdi)$/;" f +bdbm_block_ftl_destroy ftl/algo/block_ftl.c /^void bdbm_block_ftl_destroy ($/;" f +bdbm_block_ftl_do_gc ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_do_gc ($/;" f +bdbm_block_ftl_get_free_ppa ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_get_free_ppa ($/;" f +bdbm_block_ftl_get_ppa ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_get_ppa ($/;" f +bdbm_block_ftl_get_segno ftl/algo/block_ftl.c /^uint64_t bdbm_block_ftl_get_segno (bdbm_drv_info_t* bdi, uint64_t lpa)$/;" f +bdbm_block_ftl_invalidate_lpa ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_invalidate_lpa ($/;" f +bdbm_block_ftl_is_gc_needed ftl/algo/block_ftl.c /^uint8_t bdbm_block_ftl_is_gc_needed (bdbm_drv_info_t* bdi, int64_t lpa)$/;" f +bdbm_block_ftl_load ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_load (bdbm_drv_info_t* bdi, const char* fn)$/;" f +bdbm_block_ftl_map_lpa_to_ppa ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_map_lpa_to_ppa ($/;" f +bdbm_block_ftl_private_t ftl/algo/block_ftl.c /^} bdbm_block_ftl_private_t;$/;" t typeref:struct:__anon78 file: +bdbm_block_ftl_store ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f +bdbm_block_mapping_entry_t ftl/algo/block_ftl.c /^} bdbm_block_mapping_entry_t;$/;" t typeref:struct:__anon77 file: +bdbm_bug_on include/debug.h 108;" d +bdbm_bug_on include/debug.h 97;" d +bdbm_complete common/utils/usync.h 37;" d +bdbm_completion_t common/utils/usync.h 33;" d +bdbm_daemonize common/utils/uthread.h 38;" d +bdbm_daemonize common/utils/uthread.h 40;" d +bdbm_dbg_msg include/debug.h 103;" d +bdbm_dbg_msg include/debug.h 109;" d +bdbm_device frontend/kernel/blkdev.c /^} bdbm_device;$/;" v typeref:struct:bdbm_device_t file: +bdbm_device_major_num frontend/kernel/blkdev.c /^static uint32_t bdbm_device_major_num = 0;$/;" v file: +bdbm_device_params_t include/params.h /^} bdbm_device_params_t;$/;" t typeref:struct:__anon46 +bdbm_device_t frontend/kernel/blkdev.c /^static struct bdbm_device_t {$/;" s file: +bdbm_device_type_t include/params.h /^} bdbm_device_type_t;$/;" t typeref:enum:__anon44 +bdbm_dftl_badblock_scan ftl/algo/dftl.c /^uint32_t bdbm_dftl_badblock_scan (bdbm_drv_info_t* bdi)$/;" f +bdbm_dftl_check_mapblk ftl/algo/dftl.c /^uint8_t bdbm_dftl_check_mapblk ($/;" f +bdbm_dftl_check_mapping_entry ftl/algo/dftl_map.c /^int bdbm_dftl_check_mapping_entry ($/;" f +bdbm_dftl_create ftl/algo/dftl.c /^uint32_t bdbm_dftl_create (bdbm_drv_info_t* bdi)$/;" f +bdbm_dftl_create_mapping_table ftl/algo/dftl_map.c /^dftl_mapping_table_t* bdbm_dftl_create_mapping_table (bdbm_device_params_t* np)$/;" f +bdbm_dftl_destroy ftl/algo/dftl.c /^void bdbm_dftl_destroy (bdbm_drv_info_t* bdi)$/;" f +bdbm_dftl_destroy_mapping_table ftl/algo/dftl_map.c /^void bdbm_dftl_destroy_mapping_table (dftl_mapping_table_t* mt)$/;" f +bdbm_dftl_do_gc ftl/algo/dftl.c /^uint32_t bdbm_dftl_do_gc (bdbm_drv_info_t* bdi)$/;" f +bdbm_dftl_finish_mapblk_eviction ftl/algo/dftl.c /^void bdbm_dftl_finish_mapblk_eviction ($/;" f +bdbm_dftl_finish_mapblk_load ftl/algo/dftl.c /^void bdbm_dftl_finish_mapblk_load ($/;" f +bdbm_dftl_finish_victim_mapblk ftl/algo/dftl_map.c /^void bdbm_dftl_finish_victim_mapblk ($/;" f +bdbm_dftl_get_free_ppa ftl/algo/dftl.c /^uint32_t bdbm_dftl_get_free_ppa (bdbm_drv_info_t* bdi, uint64_t lpa, bdbm_phyaddr_t* ppa)$/;" f +bdbm_dftl_get_mapping_entry ftl/algo/dftl_map.c /^mapping_entry_t bdbm_dftl_get_mapping_entry (dftl_mapping_table_t* mt, uint64_t lpa)$/;" f +bdbm_dftl_get_ppa ftl/algo/dftl.c /^uint32_t bdbm_dftl_get_ppa (bdbm_drv_info_t* bdi, uint64_t lpa, bdbm_phyaddr_t* ppa)$/;" f +bdbm_dftl_init_mapping_table ftl/algo/dftl_map.c /^void bdbm_dftl_init_mapping_table (dftl_mapping_table_t* mt, bdbm_device_params_t* np)$/;" f +bdbm_dftl_invalidate_lpa ftl/algo/dftl.c /^uint32_t bdbm_dftl_invalidate_lpa (bdbm_drv_info_t* bdi, uint64_t lpa, uint64_t len)$/;" f +bdbm_dftl_invalidate_mapping_entry ftl/algo/dftl_map.c /^int bdbm_dftl_invalidate_mapping_entry (dftl_mapping_table_t* mt, uint64_t lpa)$/;" f +bdbm_dftl_is_gc_needed ftl/algo/dftl.c /^uint8_t bdbm_dftl_is_gc_needed (bdbm_drv_info_t* bdi)$/;" f +bdbm_dftl_load ftl/algo/dftl.c /^uint32_t bdbm_dftl_load (bdbm_drv_info_t* bdi, const char* fn)$/;" f +bdbm_dftl_map_lpa_to_ppa ftl/algo/dftl.c /^uint32_t bdbm_dftl_map_lpa_to_ppa (bdbm_drv_info_t* bdi, uint64_t lpa, bdbm_phyaddr_t* ptr_phyaddr)$/;" f +bdbm_dftl_missing_dir_done ftl/algo/dftl_map.c /^int bdbm_dftl_missing_dir_done ($/;" f +bdbm_dftl_missing_dir_done_error ftl/algo/dftl_map.c /^int bdbm_dftl_missing_dir_done_error ($/;" f +bdbm_dftl_missing_dir_prepare ftl/algo/dftl_map.c /^directory_slot_t* bdbm_dftl_missing_dir_prepare ($/;" f +bdbm_dftl_prepare_mapblk_eviction ftl/algo/dftl.c /^bdbm_llm_req_t* bdbm_dftl_prepare_mapblk_eviction ($/;" f +bdbm_dftl_prepare_mapblk_load ftl/algo/dftl.c /^bdbm_llm_req_t* bdbm_dftl_prepare_mapblk_load ($/;" f +bdbm_dftl_prepare_victim_mapblk ftl/algo/dftl_map.c /^directory_slot_t* bdbm_dftl_prepare_victim_mapblk ($/;" f +bdbm_dftl_private_t ftl/algo/dftl.c /^} bdbm_dftl_private_t;$/;" t typeref:struct:__anon86 file: +bdbm_dftl_set_mapping_entry ftl/algo/dftl_map.c /^int bdbm_dftl_set_mapping_entry (dftl_mapping_table_t* mt, uint64_t lpa, mapping_entry_t* me)$/;" f +bdbm_dftl_store ftl/algo/dftl.c /^uint32_t bdbm_dftl_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f +bdbm_dftl_update_dir_phyaddr ftl/algo/dftl_map.c /^void bdbm_dftl_update_dir_phyaddr ($/;" f +bdbm_dm_exit devices/common/dev_main.c /^EXPORT_SYMBOL (bdbm_dm_exit);$/;" v +bdbm_dm_exit devices/common/dev_main.c /^void bdbm_dm_exit (bdbm_drv_info_t* bdi)$/;" f +bdbm_dm_exit devices/dumbssd/dm_dumbssd.c /^EXPORT_SYMBOL (bdbm_dm_exit);$/;" v +bdbm_dm_exit devices/dumbssd/dm_dumbssd.c /^void bdbm_dm_exit (bdbm_drv_info_t* bdi)$/;" f +bdbm_dm_exit frontend/df-user/dev_proxy.c /^void bdbm_dm_exit (bdbm_drv_info_t* bdi) $/;" f +bdbm_dm_exit frontend/user/dev_proxy.c /^void bdbm_dm_exit (bdbm_drv_info_t* bdi) $/;" f +bdbm_dm_get_inf devices/common/dev_main.c /^EXPORT_SYMBOL (bdbm_dm_get_inf);$/;" v +bdbm_dm_get_inf devices/common/dev_main.c /^bdbm_dm_inf_t* bdbm_dm_get_inf (bdbm_drv_info_t* bdi)$/;" f +bdbm_dm_get_inf devices/dumbssd/dm_dumbssd.c /^EXPORT_SYMBOL (bdbm_dm_get_inf);$/;" v +bdbm_dm_get_inf devices/dumbssd/dm_dumbssd.c /^bdbm_dm_inf_t* bdbm_dm_get_inf (bdbm_drv_info_t* bdi)$/;" f +bdbm_dm_get_inf frontend/df-user/dev_proxy.c /^bdbm_dm_inf_t* bdbm_dm_get_inf (bdbm_drv_info_t* bdi)$/;" f +bdbm_dm_get_inf frontend/user/dev_proxy.c /^bdbm_dm_inf_t* bdbm_dm_get_inf (bdbm_drv_info_t* bdi)$/;" f +bdbm_dm_inf_t include/bdbm_drv.h /^} bdbm_dm_inf_t;$/;" t typeref:struct:__anon41 +bdbm_dm_init devices/common/dev_main.c /^EXPORT_SYMBOL (bdbm_dm_init);$/;" v +bdbm_dm_init devices/common/dev_main.c /^int bdbm_dm_init (bdbm_drv_info_t* bdi)$/;" f +bdbm_dm_init devices/dumbssd/dm_dumbssd.c /^EXPORT_SYMBOL (bdbm_dm_init);$/;" v +bdbm_dm_init devices/dumbssd/dm_dumbssd.c /^int bdbm_dm_init (bdbm_drv_info_t* bdi)$/;" f +bdbm_dm_init frontend/df-user/dev_proxy.c /^int bdbm_dm_init (bdbm_drv_info_t* bdi)$/;" f +bdbm_dm_init frontend/user/dev_proxy.c /^int bdbm_dm_init (bdbm_drv_info_t* bdi)$/;" f +bdbm_dm_proxy_t frontend/df-user/dev_proxy.c /^} bdbm_dm_proxy_t;$/;" t typeref:struct:__anon57 file: +bdbm_dm_proxy_t frontend/user/dev_proxy.c /^} bdbm_dm_proxy_t;$/;" t typeref:struct:__anon54 file: +bdbm_dm_stub_exit devices/common/dev_stub.c /^void bdbm_dm_stub_exit (void)$/;" f +bdbm_dm_stub_init devices/common/dev_stub.c /^int bdbm_dm_stub_init (void)$/;" f +bdbm_dm_stub_t devices/common/dev_stub.c /^} bdbm_dm_stub_t;$/;" t typeref:struct:__anon9 file: +bdbm_drv-y frontend/hybrid/Makefile /^bdbm_drv-y := \\$/;" m +bdbm_drv_close common/bdbm_main.c /^void bdbm_drv_close (bdbm_drv_info_t* bdi)$/;" f +bdbm_drv_create common/bdbm_main.c /^bdbm_drv_info_t* bdbm_drv_create (void)$/;" f +bdbm_drv_destroy common/bdbm_main.c /^void bdbm_drv_destroy (bdbm_drv_info_t* bdi)$/;" f +bdbm_drv_exit frontend/hybrid/kmain.c /^module_exit (bdbm_drv_exit);$/;" v +bdbm_drv_exit frontend/hybrid/kmain.c /^static void __exit bdbm_drv_exit(void)$/;" f file: +bdbm_drv_exit frontend/kernel/kmain.c /^module_exit (bdbm_drv_exit);$/;" v +bdbm_drv_exit frontend/kernel/kmain.c /^static void __exit bdbm_drv_exit(void)$/;" f file: +bdbm_drv_info_t include/bdbm_drv.h /^typedef struct _bdbm_drv_info_t bdbm_drv_info_t;$/;" t typeref:struct:_bdbm_drv_info_t +bdbm_drv_init frontend/hybrid/kmain.c /^module_init (bdbm_drv_init);$/;" v +bdbm_drv_init frontend/hybrid/kmain.c /^static int __init bdbm_drv_init (void)$/;" f file: +bdbm_drv_init frontend/kernel/kmain.c /^module_init (bdbm_drv_init);$/;" v +bdbm_drv_init frontend/kernel/kmain.c /^static int __init bdbm_drv_init (void)$/;" f file: +bdbm_drv_run common/bdbm_main.c /^int bdbm_drv_run (bdbm_drv_info_t* bdi)$/;" f +bdbm_drv_setup common/bdbm_main.c /^int bdbm_drv_setup ($/;" f +bdbm_error include/debug.h 46;" d +bdbm_error include/debug.h 73;" d +bdbm_fclose common/utils/ufile.c /^void bdbm_fclose (bdbm_file_t file) $/;" f +bdbm_file_t common/utils/ufile.h /^typedef int bdbm_file_t;$/;" t +bdbm_file_t common/utils/ufile.h /^typedef struct file* bdbm_file_t;$/;" t typeref:struct:file +bdbm_flash_page_main_t include/bdbm_drv.h /^} bdbm_flash_page_main_t;$/;" t typeref:struct:__anon29 +bdbm_flash_page_oob_t include/bdbm_drv.h /^} bdbm_flash_page_oob_t;$/;" t typeref:struct:__anon30 +bdbm_flog common/utils/ufile.c /^void bdbm_flog (const char* filename, char* string)$/;" f +bdbm_fopen common/utils/ufile.c /^bdbm_file_t bdbm_fopen (const char* path, int flags, int rights) $/;" f +bdbm_format_args tools/format/bdbm_format.c /^struct bdbm_format_args {$/;" s file: +bdbm_fread common/utils/ufile.c /^uint64_t bdbm_fread (bdbm_file_t file, uint64_t offset, uint8_t* data, uint64_t size) $/;" f +bdbm_free common/utils/umemory.c /^void bdbm_free (void* addr) { free (addr); }$/;" f +bdbm_free common/utils/umemory.c /^void bdbm_free (void* addr) { vfree (addr); }$/;" f +bdbm_free frontend/df-user/df_umemory.c /^void bdbm_free (void* addr) { free (addr); }$/;" f +bdbm_free_atomic common/utils/umemory.c /^void bdbm_free_atomic (void* addr) { free (addr); }$/;" f +bdbm_free_atomic common/utils/umemory.c /^void bdbm_free_atomic (void* addr) { kfree (addr); }$/;" f +bdbm_free_atomic frontend/df-user/df_umemory.c /^void bdbm_free_atomic (void* addr) { free (addr); }$/;" f +bdbm_free_phy common/utils/umemory.c /^void bdbm_free_phy (void* addr) { free (addr); }$/;" f +bdbm_free_phy common/utils/umemory.c /^void bdbm_free_phy (void* addr) { vfree (addr); } \/* for compatibility *\/$/;" f +bdbm_free_phy frontend/df-user/df_umemory.c /^void bdbm_free_phy (void* addr) { $/;" f +bdbm_fsync common/utils/ufile.c /^uint32_t bdbm_fsync (bdbm_file_t file) $/;" f +bdbm_ftl_inf_t include/bdbm_drv.h /^} bdbm_ftl_inf_t;$/;" t typeref:struct:__anon42 +bdbm_ftl_params include/params.h /^} bdbm_ftl_params;$/;" t typeref:struct:__anon45 +bdbm_funlink common/utils/ufile.c /^uint32_t bdbm_funlink (bdbm_file_t file)$/;" f +bdbm_fwrite common/utils/ufile.c /^uint64_t bdbm_fwrite (bdbm_file_t file, uint64_t offset, uint8_t* data, uint64_t size) $/;" f +bdbm_hlm_buf_private ftl/hlm_buf.c /^struct bdbm_hlm_buf_private {$/;" s file: +bdbm_hlm_dftl_private_t ftl/hlm_dftl.c /^} bdbm_hlm_dftl_private_t;$/;" t typeref:struct:__anon89 file: +bdbm_hlm_for_each_llm_req include/bdbm_drv.h 226;" d +bdbm_hlm_inf_t include/bdbm_drv.h /^} bdbm_hlm_inf_t;$/;" t typeref:struct:__anon39 +bdbm_hlm_nobuf_private_t ftl/hlm_nobuf.c /^} bdbm_hlm_nobuf_private_t;$/;" t typeref:struct:__anon65 file: +bdbm_hlm_req_gc_t include/bdbm_drv.h /^} bdbm_hlm_req_gc_t;$/;" t typeref:struct:__anon37 +bdbm_hlm_req_t include/bdbm_drv.h /^} bdbm_hlm_req_t;$/;" t typeref:struct:__anon32 +bdbm_hlm_reqs_pool_build_req ftl/hlm_reqs_pool.c /^int bdbm_hlm_reqs_pool_build_req ($/;" f +bdbm_hlm_reqs_pool_create ftl/hlm_reqs_pool.c /^bdbm_hlm_reqs_pool_t* bdbm_hlm_reqs_pool_create ($/;" f +bdbm_hlm_reqs_pool_destroy ftl/hlm_reqs_pool.c /^void bdbm_hlm_reqs_pool_destroy ($/;" f +bdbm_hlm_reqs_pool_free_item ftl/hlm_reqs_pool.c /^void bdbm_hlm_reqs_pool_free_item ($/;" f +bdbm_hlm_reqs_pool_get_item ftl/hlm_reqs_pool.c /^bdbm_hlm_req_t* bdbm_hlm_reqs_pool_get_item ($/;" f +bdbm_hlm_reqs_pool_t ftl/hlm_reqs_pool.h /^} bdbm_hlm_reqs_pool_t;$/;" t typeref:struct:__anon66 +bdbm_hlm_rsd_private_t ftl/hlm_rsd.c /^}bdbm_hlm_rsd_private_t;$/;" t typeref:struct:__anon91 file: +bdbm_host_inf_t include/bdbm_drv.h /^} bdbm_host_inf_t;$/;" t typeref:struct:__anon38 +bdbm_init_completion common/utils/usync.h 34;" d +bdbm_is_erase include/bdbm_drv.h 122;" d +bdbm_is_gc include/bdbm_drv.h 118;" d +bdbm_is_meta include/bdbm_drv.h 119;" d +bdbm_is_normal include/bdbm_drv.h 116;" d +bdbm_is_read include/bdbm_drv.h 120;" d +bdbm_is_rmw include/bdbm_drv.h 117;" d +bdbm_is_trim include/bdbm_drv.h 123;" d +bdbm_is_write include/bdbm_drv.h 121;" d +bdbm_llm_get_logaddr include/bdbm_drv.h 229;" d +bdbm_llm_get_phyaddr include/bdbm_drv.h 231;" d +bdbm_llm_inf_t include/bdbm_drv.h /^} bdbm_llm_inf_t;$/;" t typeref:struct:__anon40 +bdbm_llm_mq_private ftl/llm_mq.c /^struct bdbm_llm_mq_private {$/;" s file: +bdbm_llm_noq_lock_private ftl/llm_noq_lock.c /^struct bdbm_llm_noq_lock_private {$/;" s file: +bdbm_llm_noq_private ftl/llm_noq.c /^struct bdbm_llm_noq_private {$/;" s file: +bdbm_llm_req_ioctl_t devices/common/dev_stub.h /^} bdbm_llm_req_ioctl_t;$/;" t typeref:struct:__anon10 +bdbm_llm_req_t include/bdbm_drv.h /^} bdbm_llm_req_t;$/;" t typeref:struct:__anon31 +bdbm_llm_rmq_private ftl/llm_rmq.c /^struct bdbm_llm_rmq_private {$/;" s file: +bdbm_llm_set_logaddr include/bdbm_drv.h 228;" d +bdbm_llm_set_phyaddr include/bdbm_drv.h 230;" d +bdbm_logaddr_t include/bdbm_drv.h /^} bdbm_logaddr_t;$/;" t typeref:struct:__anon28 +bdbm_malloc common/utils/umemory.c /^void* bdbm_malloc (size_t size) { return calloc (1, size); }$/;" f +bdbm_malloc common/utils/umemory.c /^void* bdbm_malloc (size_t size) { return vzalloc (size); }$/;" f +bdbm_malloc frontend/df-user/df_umemory.c /^void* bdbm_malloc (size_t size) { return calloc (1, size); }$/;" f +bdbm_malloc_atomic common/utils/umemory.c /^void* bdbm_malloc_atomic (size_t size) { return calloc (1, size); }$/;" f +bdbm_malloc_atomic common/utils/umemory.c /^void* bdbm_malloc_atomic (size_t size) { return kzalloc (size, GFP_ATOMIC); }$/;" f +bdbm_malloc_atomic frontend/df-user/df_umemory.c /^void* bdbm_malloc_atomic (size_t size) { return calloc (1, size); }$/;" f +bdbm_malloc_phy common/utils/umemory.c /^void* bdbm_malloc_phy (size_t size) { return calloc (1, size); }$/;" f +bdbm_malloc_phy common/utils/umemory.c /^void* bdbm_malloc_phy (size_t size) { return vzalloc (size); } \/* for compatibility *\/$/;" f +bdbm_malloc_phy frontend/df-user/df_umemory.c /^void* bdbm_malloc_phy (size_t size) { $/;" f +bdbm_memcpy common/utils/umemory.c /^void* bdbm_memcpy (void* dst, void* src, size_t size) { return memcpy (dst, src, size); }$/;" f +bdbm_memcpy frontend/df-user/df_umemory.c /^void* bdbm_memcpy (void* dst, void* src, size_t size) { return memcpy (dst, src, size); }$/;" f +bdbm_memset common/utils/umemory.c /^void* bdbm_memset (void* addr, int c, size_t size) { return memset (addr, c, size); }$/;" f +bdbm_memset frontend/df-user/df_umemory.c /^void* bdbm_memset (void* addr, int c, size_t size) { return memset (addr, c, size); }$/;" f +bdbm_msg include/debug.h 30;" d +bdbm_msg include/debug.h 39;" d +bdbm_msg include/debug.h 57;" d +bdbm_msg include/debug.h 66;" d +bdbm_mutex_free common/utils/usync.h 116;" d +bdbm_mutex_free common/utils/usync.h 66;" d +bdbm_mutex_init common/utils/usync.h 107;" d +bdbm_mutex_init common/utils/usync.h 61;" d +bdbm_mutex_lock common/utils/usync.h 108;" d +bdbm_mutex_lock common/utils/usync.h 62;" d +bdbm_mutex_lock_interruptible common/utils/usync.h 109;" d +bdbm_mutex_lock_interruptible common/utils/usync.h 63;" d +bdbm_mutex_t common/utils/usync.h 106;" d +bdbm_mutex_t common/utils/usync.h 60;" d +bdbm_mutex_try_lock common/utils/usync.h 111;" d +bdbm_mutex_try_lock common/utils/usync.h 65;" d +bdbm_mutex_unlock common/utils/usync.h 110;" d +bdbm_mutex_unlock common/utils/usync.h 64;" d +bdbm_no_ftl_create ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_create (bdbm_drv_info_t* bdi)$/;" f +bdbm_no_ftl_destroy ftl/algo/no_ftl.c /^void bdbm_no_ftl_destroy (bdbm_drv_info_t* bdi)$/;" f +bdbm_no_ftl_do_gc ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_do_gc (bdbm_drv_info_t* bdi)$/;" f +bdbm_no_ftl_get_free_ppa ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_get_free_ppa (bdbm_drv_info_t* bdi, uint64_t lpa, bdbm_phyaddr_t* ppa)$/;" f +bdbm_no_ftl_get_ppa ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_get_ppa (bdbm_drv_info_t* bdi, uint64_t lpa, bdbm_phyaddr_t* ppa)$/;" f +bdbm_no_ftl_invalidate_lpa ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_invalidate_lpa (bdbm_drv_info_t* bdi, uint64_t lpa, uint64_t len)$/;" f +bdbm_no_ftl_map_lpa_to_ppa ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_map_lpa_to_ppa (bdbm_drv_info_t* bdi, uint64_t lpa, bdbm_phyaddr_t* ptr_phyaddr)$/;" f +bdbm_page_badblock_scan ftl/algo/page_ftl.c /^uint32_t bdbm_page_badblock_scan (bdbm_drv_info_t* bdi)$/;" f +bdbm_page_ftl_create ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_create (bdbm_drv_info_t* bdi)$/;" f +bdbm_page_ftl_destroy ftl/algo/page_ftl.c /^void bdbm_page_ftl_destroy (bdbm_drv_info_t* bdi)$/;" f +bdbm_page_ftl_do_gc ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_do_gc (bdbm_drv_info_t* bdi, int64_t lpa)$/;" f +bdbm_page_ftl_get_free_ppa ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_get_free_ppa ($/;" f +bdbm_page_ftl_get_ppa ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_get_ppa ($/;" f +bdbm_page_ftl_invalidate_lpa ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_invalidate_lpa ($/;" f +bdbm_page_ftl_is_gc_needed ftl/algo/page_ftl.c /^uint8_t bdbm_page_ftl_is_gc_needed (bdbm_drv_info_t* bdi, int64_t lpa)$/;" f +bdbm_page_ftl_load ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_load (bdbm_drv_info_t* bdi, const char* fn)$/;" f +bdbm_page_ftl_map_lpa_to_ppa ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_map_lpa_to_ppa ($/;" f +bdbm_page_ftl_private_t ftl/algo/page_ftl.c /^} bdbm_page_ftl_private_t;$/;" t typeref:struct:__anon88 file: +bdbm_page_ftl_store ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f +bdbm_page_mapping_entry_t ftl/algo/page_ftl.c /^} bdbm_page_mapping_entry_t;$/;" t typeref:struct:__anon87 file: +bdbm_perf_monitor_t include/bdbm_drv.h /^} bdbm_perf_monitor_t;$/;" t typeref:struct:__anon43 +bdbm_phyaddr_t include/bdbm_drv.h /^} bdbm_phyaddr_t;$/;" t typeref:struct:__anon25 +bdbm_prior_lpa_item_t ftl/queue/prior_queue.h /^} bdbm_prior_lpa_item_t;$/;" t typeref:struct:__anon71 +bdbm_prior_queue_create ftl/queue/prior_queue.c /^bdbm_prior_queue_t* bdbm_prior_queue_create ($/;" f +bdbm_prior_queue_dequeue ftl/queue/prior_queue.c /^void* bdbm_prior_queue_dequeue ($/;" f +bdbm_prior_queue_destroy ftl/queue/prior_queue.c /^void bdbm_prior_queue_destroy (bdbm_prior_queue_t* mq)$/;" f +bdbm_prior_queue_enqueue ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_enqueue ($/;" f +bdbm_prior_queue_get_nr_items ftl/queue/prior_queue.c /^uint64_t bdbm_prior_queue_get_nr_items (bdbm_prior_queue_t* mq)$/;" f +bdbm_prior_queue_is_all_empty ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_is_all_empty (bdbm_prior_queue_t* mq)$/;" f +bdbm_prior_queue_is_empty ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_is_empty ($/;" f +bdbm_prior_queue_is_full ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_is_full (bdbm_prior_queue_t* mq)$/;" f +bdbm_prior_queue_item_t ftl/queue/prior_queue.h /^} bdbm_prior_queue_item_t;$/;" t typeref:struct:__anon70 +bdbm_prior_queue_move ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_move ($/;" f +bdbm_prior_queue_remove ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_remove ($/;" f +bdbm_prior_queue_t ftl/queue/prior_queue.h /^} bdbm_prior_queue_t;$/;" t typeref:struct:__anon72 +bdbm_proxy_req_status_t frontend/hybrid/blkio_proxy_ioctl.h /^} bdbm_proxy_req_status_t;$/;" t typeref:enum:__anon62 +bdbm_proxy_reqs_pool_alloc_item frontend/hybrid/blkio_proxy_reqs_pool.c /^bdbm_blkio_proxy_req_t* bdbm_proxy_reqs_pool_alloc_item ($/;" f +bdbm_proxy_reqs_pool_create frontend/hybrid/blkio_proxy_reqs_pool.c /^bdbm_proxy_reqs_pool_t* bdbm_proxy_reqs_pool_create ($/;" f +bdbm_proxy_reqs_pool_destroy frontend/hybrid/blkio_proxy_reqs_pool.c /^void bdbm_proxy_reqs_pool_destroy (bdbm_proxy_reqs_pool_t* pool)$/;" f +bdbm_proxy_reqs_pool_free_item frontend/hybrid/blkio_proxy_reqs_pool.c /^void bdbm_proxy_reqs_pool_free_item ($/;" f +bdbm_proxy_reqs_pool_t frontend/hybrid/blkio_proxy_reqs_pool.h /^} bdbm_proxy_reqs_pool_t;$/;" t typeref:struct:__anon58 +bdbm_queue_create ftl/queue/queue.c /^bdbm_queue_t* bdbm_queue_create (uint64_t nr_queues, int64_t max_size)$/;" f +bdbm_queue_dequeue ftl/queue/queue.c /^void* bdbm_queue_dequeue (bdbm_queue_t* mq, uint64_t qid)$/;" f +bdbm_queue_destroy ftl/queue/queue.c /^void bdbm_queue_destroy (bdbm_queue_t* mq)$/;" f +bdbm_queue_enqueue ftl/queue/queue.c /^uint8_t bdbm_queue_enqueue (bdbm_queue_t* mq, uint64_t qid, void* req)$/;" f +bdbm_queue_enqueue_top ftl/queue/queue.c /^uint8_t bdbm_queue_enqueue_top (bdbm_queue_t* mq, uint64_t qid, void* req)$/;" f +bdbm_queue_get_nr_items ftl/queue/queue.c /^uint64_t bdbm_queue_get_nr_items (bdbm_queue_t* mq)$/;" f +bdbm_queue_is_all_empty ftl/queue/queue.c /^uint8_t bdbm_queue_is_all_empty (bdbm_queue_t* mq)$/;" f +bdbm_queue_is_empty ftl/queue/queue.c /^uint8_t bdbm_queue_is_empty (bdbm_queue_t* mq, uint64_t qid)$/;" f +bdbm_queue_is_full ftl/queue/queue.c /^uint8_t bdbm_queue_is_full (bdbm_queue_t* mq)$/;" f +bdbm_queue_item_t ftl/queue/queue.h /^} bdbm_queue_item_t;$/;" t typeref:struct:__anon68 +bdbm_queue_t ftl/queue/queue.h /^} bdbm_queue_t;$/;" t typeref:struct:__anon69 +bdbm_raw_flash_erase_block examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_erase_block ($/;" f +bdbm_raw_flash_erase_block_async examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_erase_block_async ($/;" f +bdbm_raw_flash_exit examples/raw-flash/raw-flash.c /^void bdbm_raw_flash_exit (bdbm_raw_flash_t* rf)$/;" f +bdbm_raw_flash_get_nand_params examples/raw-flash/raw-flash.c /^bdbm_device_params_t* bdbm_raw_flash_get_nand_params ($/;" f +bdbm_raw_flash_init examples/raw-flash/raw-flash.c /^bdbm_raw_flash_t* bdbm_raw_flash_init (void)$/;" f +bdbm_raw_flash_io_t examples/raw-flash/raw-flash.c /^} bdbm_raw_flash_io_t;$/;" t typeref:enum:__anon21 file: +bdbm_raw_flash_is_done examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_is_done ($/;" f +bdbm_raw_flash_open examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_open (bdbm_raw_flash_t* rf)$/;" f +bdbm_raw_flash_punit_status_t examples/raw-flash/raw-flash.c /^} bdbm_raw_flash_punit_status_t;$/;" t typeref:enum:__anon22 file: +bdbm_raw_flash_read_page examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_read_page ($/;" f +bdbm_raw_flash_read_page_async examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_read_page_async ($/;" f +bdbm_raw_flash_t examples/raw-flash/raw-flash.h /^} bdbm_raw_flash_t;$/;" t typeref:struct:__anon20 +bdbm_raw_flash_wait examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_wait ($/;" f +bdbm_raw_flash_write_page examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_write_page ($/;" f +bdbm_raw_flash_write_page_async examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_write_page_async ($/;" f +bdbm_rd_prior_lpa_item_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_lpa_item_t;$/;" t typeref:struct:__anon75 +bdbm_rd_prior_queue_create ftl/queue/rd_prior_queue.c /^bdbm_rd_prior_queue_t* bdbm_rd_prior_queue_create ($/;" f +bdbm_rd_prior_queue_dequeue ftl/queue/rd_prior_queue.c /^void* bdbm_rd_prior_queue_dequeue ($/;" f +bdbm_rd_prior_queue_destroy ftl/queue/rd_prior_queue.c /^void bdbm_rd_prior_queue_destroy (bdbm_rd_prior_queue_t* mq)$/;" f +bdbm_rd_prior_queue_enqueue ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_enqueue ($/;" f +bdbm_rd_prior_queue_get_nr_items ftl/queue/rd_prior_queue.c /^uint64_t bdbm_rd_prior_queue_get_nr_items (bdbm_rd_prior_queue_t* mq)$/;" f +bdbm_rd_prior_queue_is_all_empty ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_is_all_empty (bdbm_rd_prior_queue_t* mq)$/;" f +bdbm_rd_prior_queue_is_empty ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_is_empty ($/;" f +bdbm_rd_prior_queue_is_full ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_is_full (bdbm_rd_prior_queue_t* mq)$/;" f +bdbm_rd_prior_queue_item_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_queue_item_t;$/;" t typeref:struct:__anon74 +bdbm_rd_prior_queue_move ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_move ($/;" f +bdbm_rd_prior_queue_remove ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_remove ($/;" f +bdbm_rd_prior_queue_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_queue_t;$/;" t typeref:struct:__anon76 +bdbm_register devices/dumbssd/dm_dumbssd.c /^EXPORT_SYMBOL (bdbm_register);$/;" v +bdbm_register devices/dumbssd/dm_dumbssd.c /^int bdbm_register (struct request_queue* q, char* disk_name)$/;" f +bdbm_reinit_completion common/utils/usync.h 39;" d +bdbm_reinit_completion common/utils/usync.h 41;" d +bdbm_rp_mem ftl/hlm_reqs_pool.h /^} bdbm_rp_mem;$/;" t typeref:enum:__anon67 +bdbm_sema_free common/utils/usync.h 103;" d +bdbm_sema_free common/utils/usync.h 56;" d +bdbm_sema_init common/utils/usync.h 47;" d +bdbm_sema_init common/utils/usync.h 94;" d +bdbm_sema_lock common/utils/usync.h 48;" d +bdbm_sema_lock common/utils/usync.h 95;" d +bdbm_sema_lock_interruptible common/utils/usync.h 49;" d +bdbm_sema_lock_interruptible common/utils/usync.h 96;" d +bdbm_sema_t common/utils/usync.h 46;" d +bdbm_sema_t common/utils/usync.h 93;" d +bdbm_sema_try_lock common/utils/usync.h 51;" d +bdbm_sema_try_lock common/utils/usync.h 98;" d +bdbm_sema_unlock common/utils/usync.h 50;" d +bdbm_sema_unlock common/utils/usync.h 97;" d +bdbm_spin_lock common/utils/usync.h 71;" d +bdbm_spin_lock common/utils/usync.h 85;" d +bdbm_spin_lock_destory common/utils/usync.h 75;" d +bdbm_spin_lock_destory common/utils/usync.h 89;" d +bdbm_spin_lock_init common/utils/usync.h 70;" d +bdbm_spin_lock_init common/utils/usync.h 84;" d +bdbm_spin_lock_irqsave common/utils/usync.h 72;" d +bdbm_spin_lock_irqsave common/utils/usync.h 86;" d +bdbm_spin_unlock common/utils/usync.h 73;" d +bdbm_spin_unlock common/utils/usync.h 87;" d +bdbm_spin_unlock_irqrestore common/utils/usync.h 74;" d +bdbm_spin_unlock_irqrestore common/utils/usync.h 88;" d +bdbm_spinlock_t common/utils/usync.h 69;" d +bdbm_spinlock_t common/utils/usync.h 83;" d +bdbm_stopwatch_get_elapsed_time common/utils/utime.c /^struct timeval bdbm_stopwatch_get_elapsed_time (bdbm_stopwatch_t* sw)$/;" f +bdbm_stopwatch_get_elapsed_time_ms common/utils/utime.c /^int64_t bdbm_stopwatch_get_elapsed_time_ms (bdbm_stopwatch_t* sw)$/;" f +bdbm_stopwatch_get_elapsed_time_us common/utils/utime.c /^int64_t bdbm_stopwatch_get_elapsed_time_us (bdbm_stopwatch_t* sw)$/;" f +bdbm_stopwatch_start common/utils/utime.c /^void bdbm_stopwatch_start (bdbm_stopwatch_t* sw)$/;" f +bdbm_stopwatch_t common/utils/utime.h /^} bdbm_stopwatch_t;$/;" t typeref:struct:__anon3 +bdbm_thread_create common/utils/uthread.c /^bdbm_thread_t* bdbm_thread_create ($/;" f +bdbm_thread_fn common/utils/uthread.c /^int bdbm_thread_fn (void *data) $/;" f +bdbm_thread_fn common/utils/uthread.c /^void bdbm_thread_fn (void *data) $/;" f +bdbm_thread_msleep common/utils/uthread.c /^void bdbm_thread_msleep (uint32_t ms) $/;" f +bdbm_thread_run common/utils/uthread.c /^int bdbm_thread_run (bdbm_thread_t* k)$/;" f +bdbm_thread_schedule common/utils/uthread.c /^int bdbm_thread_schedule (bdbm_thread_t* k)$/;" f +bdbm_thread_schedule_cancel common/utils/uthread.c /^void bdbm_thread_schedule_cancel (bdbm_thread_t* k)$/;" f +bdbm_thread_schedule_setup common/utils/uthread.c /^void bdbm_thread_schedule_setup (bdbm_thread_t* k)$/;" f +bdbm_thread_schedule_sleep common/utils/uthread.c /^int bdbm_thread_schedule_sleep (bdbm_thread_t* k)$/;" f +bdbm_thread_stop common/utils/uthread.c /^void bdbm_thread_stop (bdbm_thread_t* k)$/;" f +bdbm_thread_t common/utils/uthread.h /^} bdbm_thread_t;$/;" t typeref:struct:__anon1 +bdbm_thread_t common/utils/uthread.h /^} bdbm_thread_t;$/;" t typeref:struct:__anon2 +bdbm_thread_wakeup common/utils/uthread.c /^void bdbm_thread_wakeup (bdbm_thread_t* k)$/;" f +bdbm_thread_yield common/utils/uthread.c /^void bdbm_thread_yield ()$/;" f +bdbm_thread_yield common/utils/uthread.c /^void bdbm_thread_yield (void)$/;" f +bdbm_track include/debug.h 34;" d +bdbm_track include/debug.h 40;" d +bdbm_track include/debug.h 61;" d +bdbm_track include/debug.h 67;" d +bdbm_try_wait_for_completion common/utils/usync.h 36;" d +bdbm_unregister devices/dumbssd/dm_dumbssd.c /^EXPORT_SYMBOL(bdbm_unregister);$/;" v +bdbm_unregister devices/dumbssd/dm_dumbssd.c /^void bdbm_unregister (char* disk_name)$/;" f +bdbm_userio_private_t frontend/df-user/userio.c /^} bdbm_userio_private_t;$/;" t typeref:struct:__anon56 file: +bdbm_userio_private_t frontend/user/userio.c /^} bdbm_userio_private_t;$/;" t typeref:struct:__anon53 file: +bdbm_wait_for_completion common/utils/usync.h 35;" d +bdbm_warn_on include/debug.h 88;" d +bdbm_warning include/debug.h 42;" d +bdbm_warning include/debug.h 69;" d +bdbm_zmalloc common/utils/umemory.c /^void* bdbm_zmalloc (size_t size) { return calloc (1, size); }$/;" f +bdbm_zmalloc common/utils/umemory.c /^void* bdbm_zmalloc (size_t size) { return vzalloc (size); }$/;" f +bdbm_zmalloc frontend/df-user/df_umemory.c /^void* bdbm_zmalloc (size_t size) { return calloc (1, size); }$/;" f +bdi devices/common/dev_stub.c /^ bdbm_drv_info_t* bdi;$/;" m struct:__anon9 file: +bdi examples/raw-flash/raw-flash.h /^ bdbm_drv_info_t bdi; $/;" m struct:__anon20 +bdi frontend/hybrid/blkio_proxy.c /^ bdbm_drv_info_t* bdi;$/;" m struct:__anon60 file: +bdops frontend/kernel/blkdev.c /^static struct block_device_operations bdops = {$/;" v typeref:struct:block_device_operations file: +bi_bvec_cnt include/bdbm_drv.h /^ uint64_t bi_bvec_cnt; \/* unit: kernel-page (4KB); it must be equal to 'bi_size \/ 8' *\/$/;" m struct:__anon26 +bi_bvec_ptr frontend/hybrid/blkio_proxy_ioctl.h /^ uint8_t bi_bvec_ptr[BDBM_BLKIO_MAX_VECS][KERNEL_PAGE_SIZE]; \/* keep data shared by both kernel and user *\/$/;" m struct:__anon63 +bi_bvec_ptr include/bdbm_drv.h /^ uint8_t* bi_bvec_ptr[BDBM_BLKIO_MAX_VECS]; \/* an array of 4 KB data for bvec *\/$/;" m struct:__anon26 +bi_offset include/bdbm_drv.h /^ uint64_t bi_offset; \/* unit: sector (512B) *\/$/;" m struct:__anon26 +bi_rw include/bdbm_drv.h /^ uint64_t bi_rw; \/* REQTYPE_WRITE or REQTYPE_READ *\/$/;" m struct:__anon26 +bi_size include/bdbm_drv.h /^ uint64_t bi_size; \/* unit: sector (512B) *\/$/;" m struct:__anon26 +bio include/bdbm_drv.h /^ void* bio; \/* reserved for kernel's bio requests *\/$/;" m struct:__anon26 +bio_lock tools/lightnvm-v4.5.3/rrpc.h /^ spinlock_t bio_lock;$/;" m struct:rrpc +bio_lock tools/lightnvm/rrpc.h /^ spinlock_t bio_lock;$/;" m struct:rrpc +blk tools/nvme/lightnvm.c /^ __u8 blk[0];$/;" m struct:nvme_nvm_bb_tbl file: +blk tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 blk[0];$/;" m struct:nvme_nvm_bb_tbl file: +blk_buf examples/stringsearch/ss.c /^uint8_t* blk_buf = NULL;$/;" v +blk_len tools/nvme/lightnvm.c /^ __u8 blk_len;$/;" m struct:nvme_nvm_addr_format file: +blk_len tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 blk_len;$/;" m struct:nvme_nvm_addr_format file: +blk_offset tools/nvme/lightnvm.c /^ __u8 blk_offset;$/;" m struct:nvme_nvm_addr_format file: +blk_offset tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 blk_offset;$/;" m struct:nvme_nvm_addr_format file: +blkio_close frontend/kernel/blkio.c /^void blkio_close (bdbm_drv_info_t* bdi)$/;" f +blkio_end_req frontend/kernel/blkio.c /^void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f +blkio_make_req frontend/kernel/blkio.c /^void blkio_make_req (bdbm_drv_info_t* bdi, void* bio)$/;" f +blkio_open frontend/kernel/blkio.c /^uint32_t blkio_open (bdbm_drv_info_t* bdi)$/;" f +blkio_proxy_close frontend/hybrid/blkio_proxy.c /^void blkio_proxy_close (bdbm_drv_info_t* bdi)$/;" f +blkio_proxy_end_req frontend/hybrid/blkio_proxy.c /^void blkio_proxy_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req)$/;" f +blkio_proxy_fops_create frontend/hybrid/blkio_proxy.c /^static int blkio_proxy_fops_create (struct inode *inode, struct file *filp)$/;" f file: +blkio_proxy_fops_ioctl frontend/hybrid/blkio_proxy.c /^static long blkio_proxy_fops_ioctl (struct file *filp, unsigned int cmd, unsigned long arg)$/;" f file: +blkio_proxy_fops_mmap frontend/hybrid/blkio_proxy.c /^static int blkio_proxy_fops_mmap (struct file *filp, struct vm_area_struct *vma)$/;" f file: +blkio_proxy_fops_poll frontend/hybrid/blkio_proxy.c /^static unsigned int blkio_proxy_fops_poll (struct file *filp, poll_table *poll_table)$/;" f file: +blkio_proxy_fops_release frontend/hybrid/blkio_proxy.c /^static int blkio_proxy_fops_release (struct inode *inode, struct file *filp)$/;" f file: +blkio_proxy_ioctl_exit frontend/hybrid/blkio_proxy.c /^static int blkio_proxy_ioctl_exit (void)$/;" f file: +blkio_proxy_ioctl_init frontend/hybrid/blkio_proxy.c /^static int blkio_proxy_ioctl_init (void)$/;" f file: +blkio_proxy_make_req frontend/hybrid/blkio_proxy.c /^void blkio_proxy_make_req (bdbm_drv_info_t* bdi, void* req)$/;" f +blkio_proxy_mmap_close frontend/hybrid/blkio_proxy.c /^void blkio_proxy_mmap_close (struct vm_area_struct *vma)$/;" f +blkio_proxy_mmap_open frontend/hybrid/blkio_proxy.c /^void blkio_proxy_mmap_open (struct vm_area_struct *vma)$/;" f +blkio_proxy_open frontend/hybrid/blkio_proxy.c /^uint32_t blkio_proxy_open (bdbm_drv_info_t* bdi)$/;" f +blkio_req frontend/hybrid/blkio_proxy_ioctl.h /^ bdbm_blkio_req_t blkio_req; \/* must be at the top of the structure *\/$/;" m struct:__anon63 +blkio_req include/bdbm_drv.h /^ void* blkio_req;$/;" m struct:__anon32 +blkio_stub_close frontend/hybrid/blkio_stub.c /^void blkio_stub_close (bdbm_drv_info_t* bdi)$/;" f +blkio_stub_end_req frontend/hybrid/blkio_stub.c /^void blkio_stub_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req)$/;" f +blkio_stub_make_req frontend/hybrid/blkio_stub.c /^void blkio_stub_make_req (bdbm_drv_info_t* bdi, void* bio)$/;" f +blkio_stub_open frontend/hybrid/blkio_stub.c /^uint32_t blkio_stub_open (bdbm_drv_info_t* bdi)$/;" f +blks tools/lightnvm-v4.5.3/sysblk.c /^ unsigned long *blks;$/;" m struct:factory_blks file: +blks tools/lightnvm/sysblk.c /^ unsigned long *blks;$/;" m struct:factory_blks file: +block devices/dumbssd/dev_hynix_nvme.h /^ uint64_t block;$/;" m struct:__anon17 +block devices/dumbssd/dm_dumbssd.h /^ int block;$/;" m struct:__anon18 +block_erase_time_us include/params.h /^ uint64_t block_erase_time_us;$/;" m struct:__anon46 +block_is_full tools/lightnvm-v4.5.3/rrpc.c /^static int block_is_full(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +block_is_full tools/lightnvm/rrpc.c /^static int block_is_full(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +block_no ftl/algo/abm.h /^ uint64_t block_no;$/;" m struct:__anon79 +block_no ftl/algo/block_ftl.c /^ uint64_t block_no;$/;" m struct:__anon77 file: +block_no ftl/algo/dftl_map.h /^ uint64_t block_no;$/;" m struct:__anon82 +block_no include/bdbm_drv.h /^ uint64_t block_no;$/;" m struct:__anon25 +block_prio_find_max tools/lightnvm-v4.5.3/rrpc.c /^static struct rrpc_block *block_prio_find_max(struct rrpc_lun *rlun)$/;" f file: +block_prio_find_max tools/lightnvm/rrpc.c /^static struct rrpc_block *block_prio_find_max(struct rrpc_lun *rlun)$/;" f file: +block_to_addr tools/lightnvm-v4.5.3/rrpc.c /^static u64 block_to_addr(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +block_to_addr tools/lightnvm/rrpc.c /^static u64 block_to_addr(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +blocks ftl/algo/abm.h /^ bdbm_abm_block_t* blocks;$/;" m struct:__anon80 +blocks tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_block *blocks; \/* Reference to block allocation *\/$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc_block +blocks tools/lightnvm/rrpc.h /^ struct rrpc_block *blocks; \/* Reference to block allocation *\/$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc_block +bloom_bv common/3rd/uthash.h /^ uint8_t *bloom_bv;$/;" m struct:UT_hash_table +bloom_nbits common/3rd/uthash.h /^ char bloom_nbits;$/;" m struct:UT_hash_table +bloom_sig common/3rd/uthash.h /^ uint32_t bloom_sig; \/* used only to test bloom exists in external analysis *\/$/;" m struct:UT_hash_table +buckets common/3rd/uthash.h /^ UT_hash_bucket *buckets;$/;" m struct:UT_hash_table +buffer devices/dumbssd/dev_hynix_nvme.h /^ uint8_t* buffer;$/;" m struct:__anon17 +c_dev devices/common/dev_stub.c /^static struct cdev c_dev;$/;" v typeref:struct:cdev file: +c_dev frontend/hybrid/blkio_proxy.c /^static struct cdev c_dev;$/;" v typeref:struct:cdev file: +cap tools/nvme/lightnvm.c /^ __le32 cap;$/;" m struct:nvme_nvm_id file: +cap tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 cap;$/;" m struct:nvme_nvm_id file: +cb_done include/bdbm_drv.h /^ void (*cb_done) (void* req); \/* call-back function which is called when a request is done *\/$/;" m struct:__anon26 +ccflags-y Makefile /^ccflags-y := -I$(src)$/;" m +ccflags-y devices/bluedbm/Makefile /^ccflags-y := -I$(src)\/$(CPPDIR) -I$(src)\/$(BOARDDIR) $(HARDWARE_FLAGS) -DBOARD_$(BOARD)$/;" m +ccflags-y examples/raw-flash/Makefile /^ccflags-y := -I$(src)$/;" m +ccflags-y frontend/hybrid/Makefile /^ccflags-y := -I$(src)$/;" m +ccflags-y frontend/kernel/Makefile /^ccflags-y := -I$(src)$/;" m +ccflags-y tools/lightnvm-v4.5.3/Makefile /^ccflags-y := -I$(src)$/;" m +ccflags-y tools/lightnvm/Makefile /^ccflags-y := -I$(src)$/;" m +ccflags-y tools/nvme/Makefile /^ccflags-y := -I$(src)$/;" m +ccflags-y tools/nvmedrv-v4.5.3/Makefile /^ccflags-y := -I$(src)$/;" m +cdw14 tools/nvme/lightnvm.c /^ __le16 cdw14[6];$/;" m struct:nvme_nvm_l2ptbl file: +cdw14 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 cdw14[6];$/;" m struct:nvme_nvm_l2ptbl file: +cdw2 tools/nvme/lightnvm.c /^ __le32 cdw2[4];$/;" m struct:nvme_nvm_l2ptbl file: +cdw2 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 cdw2[4];$/;" m struct:nvme_nvm_l2ptbl file: +cgrps tools/nvme/lightnvm.c /^ __u8 cgrps;$/;" m struct:nvme_nvm_id file: +cgrps tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 cgrps;$/;" m struct:nvme_nvm_id file: +ch_len tools/nvme/lightnvm.c /^ __u8 ch_len;$/;" m struct:nvme_nvm_addr_format file: +ch_len tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 ch_len;$/;" m struct:nvme_nvm_addr_format file: +ch_offset tools/nvme/lightnvm.c /^ __u8 ch_offset;$/;" m struct:nvme_nvm_addr_format file: +ch_offset tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 ch_offset;$/;" m struct:nvme_nvm_addr_format file: +channel_no ftl/algo/abm.h /^ uint64_t channel_no;$/;" m struct:__anon79 +channel_no ftl/algo/block_ftl.c /^ uint64_t channel_no;$/;" m struct:__anon77 file: +channel_no ftl/algo/dftl_map.h /^ uint8_t channel_no;$/;" m struct:__anon82 +channel_no include/bdbm_drv.h /^ uint64_t channel_no;$/;" m struct:__anon25 +check_mapblk include/bdbm_drv.h /^ uint8_t (*check_mapblk) (bdbm_drv_info_t* bdi, uint64_t lpa);$/;" m struct:__anon42 +check_thread_fn examples/stub_test/main.c /^void check_thread_fn (void* data)$/;" f +check_thread_t examples/stub_test/main.c /^} check_thread_t;$/;" t typeref:struct:__anon23 file: +chip_no ftl/algo/abm.h /^ uint64_t chip_no;$/;" m struct:__anon79 +chip_no ftl/algo/block_ftl.c /^ uint64_t chip_no;$/;" m struct:__anon77 file: +chip_no ftl/algo/dftl_map.h /^ uint8_t chip_no;$/;" m struct:__anon82 +chip_no include/bdbm_drv.h /^ uint64_t chip_no;$/;" m struct:__anon25 +chnl_off tools/nvme/lightnvm.c /^ __le32 chnl_off;$/;" m struct:nvme_nvm_identity file: +chnl_off tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 chnl_off;$/;" m struct:nvme_nvm_identity file: +cl devices/common/dev_stub.c /^static struct class *cl = NULL;$/;" v typeref:struct:class file: +cl frontend/hybrid/blkio_proxy.c /^static struct class *cl = NULL;$/;" v typeref:struct:class file: +close include/bdbm_drv.h /^ void (*close) (bdbm_drv_info_t* bdi);$/;" m struct:__anon38 +close include/bdbm_drv.h /^ void (*close) (bdbm_drv_info_t* bdi);$/;" m struct:__anon41 +closed_list tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head closed_list; \/* In-use closed blocks. These are$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::list_head +closed_list tools/lightnvm/rrpc.h /^ struct list_head closed_list; \/* In-use closed blocks. These are$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::list_head +cmb tools/nvme/pci.c /^ void __iomem *cmb;$/;" m struct:nvme_dev file: +cmb tools/nvmedrv-v4.5.3/pci.c /^ void __iomem *cmb;$/;" m struct:nvme_dev file: +cmb_dma_addr tools/nvme/pci.c /^ dma_addr_t cmb_dma_addr;$/;" m struct:nvme_dev file: +cmb_dma_addr tools/nvmedrv-v4.5.3/pci.c /^ dma_addr_t cmb_dma_addr;$/;" m struct:nvme_dev file: +cmb_size tools/nvme/pci.c /^ u64 cmb_size;$/;" m struct:nvme_dev file: +cmb_size tools/nvmedrv-v4.5.3/pci.c /^ u64 cmb_size;$/;" m struct:nvme_dev file: +cmbsz tools/nvme/pci.c /^ u32 cmbsz;$/;" m struct:nvme_dev file: +cmbsz tools/nvmedrv-v4.5.3/pci.c /^ u32 cmbsz;$/;" m struct:nvme_dev file: +command_id tools/nvme/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_erase_blk file: +command_id tools/nvme/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_getbbtbl file: +command_id tools/nvme/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_hb_rw file: +command_id tools/nvme/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_identity file: +command_id tools/nvme/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_l2ptbl file: +command_id tools/nvme/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_ph_rw file: +command_id tools/nvme/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_setbbtbl file: +command_id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_erase_blk file: +command_id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_getbbtbl file: +command_id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_hb_rw file: +command_id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_identity file: +command_id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_l2ptbl file: +command_id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_ph_rw file: +command_id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_setbbtbl file: +common tools/nvme/lightnvm.c /^ struct nvme_common_command common;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_common_command file: +common tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_common_command common;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_common_command file: +compr_func examples/stringsearch/ss.c /^typedef int (*compr_func)(const int fd_dev, const char* pattern, const int start_blk, const int len);$/;" t file: +connectal_completion devices/bluedbm/dm_bluedbm.c /^ bdbm_completion_t connectal_completion;$/;" m struct:dm_bluedbm_private file: +connectal_completion_init devices/bluedbm/dm_bluedbm.c /^ bdbm_completion_t connectal_completion_init;$/;" m struct:dm_bluedbm_private file: +connectal_handler devices/bluedbm/dm_bluedbm.c /^ struct task_struct *connectal_handler;$/;" m struct:dm_bluedbm_private typeref:struct:dm_bluedbm_private::task_struct file: +connectal_handler_fn devices/bluedbm/dm_bluedbm.c /^int connectal_handler_fn (void* arg) $/;" f +container_of common/3rd/ulist.h 41;" d +control tools/nvme/lightnvm.c /^ __le16 control;$/;" m struct:nvme_nvm_erase_blk file: +control tools/nvme/lightnvm.c /^ __le16 control;$/;" m struct:nvme_nvm_hb_rw file: +control tools/nvme/lightnvm.c /^ __le16 control;$/;" m struct:nvme_nvm_ph_rw file: +control tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 control;$/;" m struct:nvme_nvm_erase_blk file: +control tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 control;$/;" m struct:nvme_nvm_hb_rw file: +control tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 control;$/;" m struct:nvme_nvm_ph_rw file: +copy common/3rd/utarray.h /^ ctor_f *copy;$/;" m struct:__anon4 +count common/3rd/uthash.h /^ unsigned count;$/;" m struct:UT_hash_bucket +counter common/3rd/uatomic.h /^ volatile int counter;$/;" m struct:__anon7 +counter common/3rd/uatomic64.h /^ volatile long long counter;$/;" m struct:__anon6 +cpar tools/nvme/lightnvm.c /^ __le16 cpar;$/;" m struct:nvme_nvm_id_group file: +cpar tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 cpar;$/;" m struct:nvme_nvm_id_group file: +cq_dma_addr tools/nvme/pci.c /^ dma_addr_t cq_dma_addr;$/;" m struct:nvme_queue file: +cq_dma_addr tools/nvmedrv-v4.5.3/pci.c /^ dma_addr_t cq_dma_addr;$/;" m struct:nvme_queue file: +cq_head tools/nvme/pci.c /^ u16 cq_head;$/;" m struct:nvme_queue file: +cq_head tools/nvmedrv-v4.5.3/pci.c /^ u16 cq_head;$/;" m struct:nvme_queue file: +cq_phase tools/nvme/pci.c /^ u8 cq_phase;$/;" m struct:nvme_queue file: +cq_phase tools/nvmedrv-v4.5.3/pci.c /^ u8 cq_phase;$/;" m struct:nvme_queue file: +cq_vector tools/nvme/pci.c /^ s16 cq_vector;$/;" m struct:nvme_queue file: +cq_vector tools/nvmedrv-v4.5.3/pci.c /^ s16 cq_vector;$/;" m struct:nvme_queue file: +cqe_seen tools/nvme/pci.c /^ u8 cqe_seen;$/;" m struct:nvme_queue file: +cqe_seen tools/nvmedrv-v4.5.3/pci.c /^ u8 cqe_seen;$/;" m struct:nvme_queue file: +cqes tools/nvme/pci.c /^ volatile struct nvme_completion *cqes;$/;" m struct:nvme_queue typeref:struct:nvme_queue::nvme_completion file: +cqes tools/nvmedrv-v4.5.3/pci.c /^ volatile struct nvme_completion *cqes;$/;" m struct:nvme_queue typeref:struct:nvme_queue::nvme_completion file: +create include/bdbm_drv.h /^ uint32_t (*create) (bdbm_drv_info_t* bdi);$/;" m struct:__anon39 +create include/bdbm_drv.h /^ uint32_t (*create) (bdbm_drv_info_t* bdi);$/;" m struct:__anon40 +create include/bdbm_drv.h /^ uint32_t (*create) (bdbm_drv_info_t* bdi);$/;" m struct:__anon42 +create_llm_req_r examples/stub_test/main.c /^bdbm_llm_req_t* create_llm_req_r (void)$/;" f +create_llm_req_w examples/stub_test/main.c /^bdbm_llm_req_t* create_llm_req_w (void)$/;" f +csecs tools/nvme/lightnvm.c /^ __le16 csecs;$/;" m struct:nvme_nvm_id_group file: +csecs tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 csecs;$/;" m struct:nvme_nvm_id_group file: +ctor_f common/3rd/utarray.h /^typedef void (ctor_f)(void *dst, const void *src);$/;" t +ctrl tools/nvme/nvme.h /^ struct nvme_ctrl *ctrl;$/;" m struct:nvme_ns typeref:struct:nvme_ns::nvme_ctrl +ctrl tools/nvme/pci.c /^ struct nvme_ctrl ctrl;$/;" m struct:nvme_dev typeref:struct:nvme_dev::nvme_ctrl file: +ctrl tools/nvmedrv-v4.5.3/nvme.h /^ struct nvme_ctrl *ctrl;$/;" m struct:nvme_ns typeref:struct:nvme_ns::nvme_ctrl +ctrl tools/nvmedrv-v4.5.3/pci.c /^ struct nvme_ctrl ctrl;$/;" m struct:nvme_dev typeref:struct:nvme_dev::nvme_ctrl file: +ctrl_config tools/nvme/nvme.h /^ u32 ctrl_config;$/;" m struct:nvme_ctrl +ctrl_config tools/nvmedrv-v4.5.3/nvme.h /^ u32 ctrl_config;$/;" m struct:nvme_ctrl +cur tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_block *cur, *gc_cur;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc_block +cur tools/lightnvm/rrpc.h /^ struct rrpc_block *cur, *gc_cur;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc_block +cur_tag ftl/queue/prior_queue.h /^ uint64_t cur_tag;$/;" m struct:__anon71 +cur_tag ftl/queue/rd_prior_queue.h /^ uint64_t cur_tag;$/;" m struct:__anon75 +curr_page_ofs ftl/algo/dftl.c /^ uint64_t curr_page_ofs;$/;" m struct:__anon86 file: +curr_page_ofs ftl/algo/page_ftl.c /^ uint64_t curr_page_ofs;$/;" m struct:__anon88 file: +curr_puid ftl/algo/dftl.c /^ uint64_t curr_puid;$/;" m struct:__anon86 file: +curr_puid ftl/algo/page_ftl.c /^ uint64_t curr_puid;$/;" m struct:__anon88 file: +d common/3rd/utarray.h /^ char *d; \/* n slots of size icd->sz*\/$/;" m struct:__anon5 +d common/3rd/utstring.h /^ char *d;$/;" m struct:__anon8 +data include/bdbm_drv.h /^ uint8_t* data;$/;" m struct:__anon30 +data_cmnt_size tools/lightnvm-v4.5.3/rrpc.h /^ atomic_t data_cmnt_size; \/* data pages committed to stable storage *\/$/;" m struct:rrpc_block +data_cmnt_size tools/lightnvm/rrpc.h /^ atomic_t data_cmnt_size; \/* data pages committed to stable storage *\/$/;" m struct:rrpc_block +db_bar_size tools/nvme/pci.c /^static size_t db_bar_size(struct nvme_dev *dev, unsigned nr_io_queues)$/;" f file: +db_bar_size tools/nvmedrv-v4.5.3/pci.c /^static size_t db_bar_size(struct nvme_dev *dev, unsigned nr_io_queues)$/;" f file: +db_stride tools/nvme/pci.c /^ u32 db_stride;$/;" m struct:nvme_dev file: +db_stride tools/nvmedrv-v4.5.3/pci.c /^ u32 db_stride;$/;" m struct:nvme_dev file: +dbg_seq devices/dumbssd/dm_dumbssd.c /^ bdbm_sema_t dbg_seq;$/;" m struct:__anon19 file: +dbg_seq ftl/llm_mq.c /^ bdbm_sema_t dbg_seq;$/;" m struct:bdbm_llm_mq_private file: +dbg_seq ftl/llm_rmq.c /^ bdbm_sema_t dbg_seq;$/;" m struct:bdbm_llm_rmq_private file: +dbs tools/nvme/pci.c /^ u32 __iomem *dbs;$/;" m struct:nvme_dev file: +dbs tools/nvmedrv-v4.5.3/pci.c /^ u32 __iomem *dbs;$/;" m struct:nvme_dev file: +delete_llm_req examples/stub_test/main.c /^void delete_llm_req (bdbm_llm_req_t* r)$/;" f +desc tools/nvme/scsi.c /^ struct scsi_unmap_blk_desc desc[0];$/;" m struct:scsi_unmap_parm_list typeref:struct:scsi_unmap_parm_list::scsi_unmap_blk_desc file: +desc tools/nvmedrv-v4.5.3/scsi.c /^ struct scsi_unmap_blk_desc desc[0];$/;" m struct:scsi_unmap_parm_list typeref:struct:scsi_unmap_parm_list::scsi_unmap_blk_desc file: +destroy include/bdbm_drv.h /^ void (*destroy) (bdbm_drv_info_t* bdi);$/;" m struct:__anon39 +destroy include/bdbm_drv.h /^ void (*destroy) (bdbm_drv_info_t* bdi);$/;" m struct:__anon40 +destroy include/bdbm_drv.h /^ void (*destroy) (bdbm_drv_info_t* bdi);$/;" m struct:__anon42 +dev devices/dumbssd/dev_hynix_nvme.h /^ dumb_ssd_dev_t* dev;$/;" m struct:__anon17 +dev tools/format/bdbm_format.c /^ char* dev;$/;" m struct:bdbm_format_args file: +dev tools/lightnvm-v4.5.3/gennvm.h /^ struct nvm_dev *dev;$/;" m struct:gen_nvm typeref:struct:gen_nvm::nvm_dev +dev tools/lightnvm-v4.5.3/rrpc.h /^ struct nvm_dev *dev;$/;" m struct:rrpc typeref:struct:rrpc::nvm_dev +dev tools/lightnvm-v4.5.3/sysblk.c /^ struct nvm_dev *dev;$/;" m struct:factory_blks typeref:struct:factory_blks::nvm_dev file: +dev tools/lightnvm/gennvm.h /^ struct nvm_dev *dev;$/;" m struct:gen_nvm typeref:struct:gen_nvm::nvm_dev +dev tools/lightnvm/rrpc.h /^ struct nvm_dev *dev;$/;" m struct:rrpc typeref:struct:rrpc::nvm_dev +dev tools/lightnvm/sysblk.c /^ struct nvm_dev *dev;$/;" m struct:factory_blks typeref:struct:factory_blks::nvm_dev file: +dev tools/nvme/nvme.h /^ struct device *dev;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::device +dev tools/nvme/pci.c /^ struct device *dev;$/;" m struct:nvme_dev typeref:struct:nvme_dev::device file: +dev tools/nvme/pci.c /^ struct nvme_dev *dev;$/;" m struct:nvme_queue typeref:struct:nvme_queue::nvme_dev file: +dev tools/nvmedrv-v4.5.3/nvme.h /^ struct device *dev;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::device +dev tools/nvmedrv-v4.5.3/pci.c /^ struct device *dev;$/;" m struct:nvme_dev typeref:struct:nvme_dev::device file: +dev tools/nvmedrv-v4.5.3/pci.c /^ struct nvme_dev *dev;$/;" m struct:nvme_queue typeref:struct:nvme_queue::nvme_dev file: +dev_hynix_nvme_submit_io devices/dumbssd/dev_hynix_nvme.c /^uint32_t dev_hynix_nvme_submit_io ($/;" f +dev_list_lock tools/nvme/core.c /^DEFINE_SPINLOCK(dev_list_lock);$/;" v +dev_list_lock tools/nvmedrv-v4.5.3/core.c /^DEFINE_SPINLOCK(dev_list_lock);$/;" v +dev_ramssd_create devices/ramdrive/dev_ramssd.c /^dev_ramssd_info_t* dev_ramssd_create ($/;" f +dev_ramssd_destroy devices/ramdrive/dev_ramssd.c /^void dev_ramssd_destroy (dev_ramssd_info_t* ri)$/;" f +dev_ramssd_get_block_size devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_block_size (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_blocks_per_chips devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_blocks_per_chips (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_blocks_per_ssd devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_blocks_per_ssd (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_channel_size devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_channel_size (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_channles_per_ssd devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_channles_per_ssd (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_chip_size devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_chip_size (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_chips_per_channel devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_chips_per_channel (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_chips_per_ssd devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_chips_per_ssd (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_page_size devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_page_size (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_page_size_main devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_page_size_main (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_page_size_oob devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_page_size_oob (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_pages_per_block devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_pages_per_block (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_pages_per_ssd devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_pages_per_ssd (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_ssd_size devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_ssd_size (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_info_t devices/ramdrive/dev_ramssd.h /^} dev_ramssd_info_t;$/;" t typeref:struct:__anon13 +dev_ramssd_is_init devices/ramdrive/dev_ramssd.h /^uint8_t dev_ramssd_is_init (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_load devices/ramdrive/dev_ramssd.c /^uint32_t dev_ramssd_load (dev_ramssd_info_t* ri, const char* fn)$/;" f +dev_ramssd_punit_t devices/ramdrive/dev_ramssd.h /^} dev_ramssd_punit_t;$/;" t typeref:struct:__anon11 +dev_ramssd_send_cmd devices/ramdrive/dev_ramssd.c /^uint32_t dev_ramssd_send_cmd (dev_ramssd_info_t* ri, bdbm_llm_req_t* r)$/;" f +dev_ramssd_store devices/ramdrive/dev_ramssd.c /^uint32_t dev_ramssd_store (dev_ramssd_info_t* ri, const char* fn)$/;" f +dev_ramssd_wq_t devices/ramdrive/dev_ramssd.h /^} dev_ramssd_wq_t;$/;" t typeref:struct:__anon12 +device tools/nvme/nvme.h /^ struct device *device; \/* char device *\/$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::device +device tools/nvmedrv-v4.5.3/nvme.h /^ struct device *device; \/* char device *\/$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::device +device_capacity_in_byte include/params.h /^ uint64_t device_capacity_in_byte;$/;" m struct:__anon46 +device_type include/params.h /^ uint32_t device_type;$/;" m struct:__anon46 +devnum devices/common/dev_stub.c /^static dev_t devnum = 0; $/;" v file: +devnum frontend/hybrid/blkio_proxy.c /^static dev_t devnum = 0; $/;" v file: +dftl_mapping_table_t ftl/algo/dftl_map.h /^} dftl_mapping_table_t;$/;" t typeref:struct:__anon85 +die devices/dumbssd/dev_hynix_nvme.h /^ uint64_t die;$/;" m struct:__anon17 +die devices/dumbssd/dm_dumbssd.h /^ int die;$/;" m struct:__anon18 +die_locks devices/dumbssd/dm_dumbssd.c /^bdbm_sema_t die_locks[NR_DIES];$/;" v +dir ftl/algo/dftl_map.h /^ directory_slot_t* dir; \/* always maintained in DRAM *\/$/;" m struct:__anon85 +dir_stat ftl/algo/dftl_map.h /^} dir_stat;$/;" t typeref:enum:__anon81 +directory_slot_t ftl/algo/dftl_map.h /^} directory_slot_t;$/;" t typeref:struct:__anon84 +disk tools/lightnvm-v4.5.3/rrpc.h /^ struct gendisk *disk;$/;" m struct:rrpc typeref:struct:rrpc::gendisk +disk tools/lightnvm/rrpc.h /^ struct gendisk *disk;$/;" m struct:rrpc typeref:struct:rrpc::gendisk +disk tools/nvme/nvme.h /^ struct gendisk *disk;$/;" m struct:nvme_ns typeref:struct:nvme_ns::gendisk +disk tools/nvmedrv-v4.5.3/nvme.h /^ struct gendisk *disk;$/;" m struct:nvme_ns typeref:struct:nvme_ns::gendisk +display_device_params devices/common/dev_params.c /^void display_device_params (bdbm_device_params_t* p)$/;" f +display_ftl_params ftl/ftl_params.c /^void display_ftl_params (bdbm_ftl_params* p)$/;" f +dm_bluedbm_close devices/bluedbm/dm_bluedbm.c /^void dm_bluedbm_close (bdbm_drv_info_t* bdi)$/;" f +dm_bluedbm_end_req devices/bluedbm/dm_bluedbm.c /^void dm_bluedbm_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r)$/;" f +dm_bluedbm_load devices/bluedbm/dm_bluedbm.c /^uint32_t dm_bluedbm_load (bdbm_drv_info_t* bdi, const char* fn)$/;" f +dm_bluedbm_make_req devices/bluedbm/dm_bluedbm.c /^uint32_t dm_bluedbm_make_req ($/;" f +dm_bluedbm_open devices/bluedbm/dm_bluedbm.c /^uint32_t dm_bluedbm_open (bdbm_drv_info_t* bdi)$/;" f +dm_bluedbm_private devices/bluedbm/dm_bluedbm.c /^struct dm_bluedbm_private {$/;" s file: +dm_bluedbm_probe devices/bluedbm/dm_bluedbm.c /^uint32_t dm_bluedbm_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* params)$/;" f +dm_bluedbm_store devices/bluedbm/dm_bluedbm.c /^uint32_t dm_bluedbm_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f +dm_bluedbm_wq_t devices/bluedbm/dm_bluedbm.c /^} dm_bluedbm_wq_t;$/;" t typeref:struct:__anon15 file: +dm_df_close devices/dragonfire/dm_df.c /^void dm_df_close (bdbm_drv_info_t* bdi)$/;" f +dm_df_end_req devices/dragonfire/dm_df.c /^void dm_df_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req)$/;" f +dm_df_load devices/dragonfire/dm_df.c /^uint32_t dm_df_load (bdbm_drv_info_t* bdi, const char* fn)$/;" f +dm_df_make_req devices/dragonfire/dm_df.c /^uint32_t dm_df_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req)$/;" f +dm_df_make_reqs devices/dragonfire/dm_df.c /^uint32_t dm_df_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f +dm_df_open devices/dragonfire/dm_df.c /^uint32_t dm_df_open (bdbm_drv_info_t* bdi)$/;" f +dm_df_probe devices/dragonfire/dm_df.c /^uint32_t dm_df_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* params)$/;" f +dm_df_store devices/dragonfire/dm_df.c /^uint32_t dm_df_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f +dm_dumbssd_close devices/dumbssd/dm_dumbssd.c /^void dm_dumbssd_close (bdbm_drv_info_t* bdi)$/;" f +dm_dumbssd_end_req devices/dumbssd/dm_dumbssd.c /^void dm_dumbssd_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r)$/;" f +dm_dumbssd_exit devices/dumbssd/dm_dumbssd.c /^module_exit (dm_dumbssd_exit);$/;" v +dm_dumbssd_exit devices/dumbssd/dm_dumbssd.c /^static void __exit dm_dumbssd_exit (void)$/;" f file: +dm_dumbssd_init devices/dumbssd/dm_dumbssd.c /^module_init (dm_dumbssd_init);$/;" v +dm_dumbssd_init devices/dumbssd/dm_dumbssd.c /^static int __init dm_dumbssd_init (void)$/;" f file: +dm_dumbssd_make_req devices/dumbssd/dm_dumbssd.c /^uint32_t dm_dumbssd_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r)$/;" f +dm_dumbssd_open devices/dumbssd/dm_dumbssd.c /^uint32_t dm_dumbssd_open (bdbm_drv_info_t* bdi)$/;" f +dm_dumbssd_private_t devices/dumbssd/dm_dumbssd.c /^} dm_dumbssd_private_t;$/;" t typeref:struct:__anon19 file: +dm_dumbssd_probe devices/dumbssd/dm_dumbssd.c /^uint32_t dm_dumbssd_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* params)$/;" f +dm_fops_create devices/common/dev_stub.c /^static int dm_fops_create (struct inode *inode, struct file *filp)$/;" f file: +dm_fops_ioctl devices/common/dev_stub.c /^static long dm_fops_ioctl (struct file *filp, unsigned int cmd, unsigned long arg)$/;" f file: +dm_fops_mmap devices/common/dev_stub.c /^static int dm_fops_mmap (struct file *filp, struct vm_area_struct *vma)$/;" f file: +dm_fops_poll devices/common/dev_stub.c /^static unsigned int dm_fops_poll (struct file *filp, poll_table *poll_table)$/;" f file: +dm_fops_release devices/common/dev_stub.c /^static int dm_fops_release (struct inode *inode, struct file *filp)$/;" f file: +dm_lock devices/libdummy/dm_dummy.c /^ bdbm_spinlock_t dm_lock;$/;" m struct:dm_user_private file: +dm_proxy_close frontend/df-user/dev_proxy.c /^void dm_proxy_close (bdbm_drv_info_t* bdi)$/;" f +dm_proxy_close frontend/user/dev_proxy.c /^void dm_proxy_close ($/;" f +dm_proxy_end_req frontend/df-user/dev_proxy.c /^void dm_proxy_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r)$/;" f +dm_proxy_end_req frontend/user/dev_proxy.c /^void dm_proxy_end_req ($/;" f +dm_proxy_load frontend/user/dev_proxy.c /^uint32_t dm_proxy_load ($/;" f +dm_proxy_make_req frontend/df-user/dev_proxy.c /^uint32_t dm_proxy_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r)$/;" f +dm_proxy_make_req frontend/user/dev_proxy.c /^uint32_t dm_proxy_make_req ($/;" f +dm_proxy_make_reqs frontend/df-user/dev_proxy.c /^uint32_t dm_proxy_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* r)$/;" f +dm_proxy_open frontend/df-user/dev_proxy.c /^uint32_t dm_proxy_open (bdbm_drv_info_t* bdi)$/;" f +dm_proxy_open frontend/user/dev_proxy.c /^uint32_t dm_proxy_open (bdbm_drv_info_t* bdi)$/;" f +dm_proxy_probe frontend/df-user/dev_proxy.c /^uint32_t dm_proxy_probe ($/;" f +dm_proxy_probe frontend/user/dev_proxy.c /^uint32_t dm_proxy_probe ($/;" f +dm_proxy_store frontend/user/dev_proxy.c /^uint32_t dm_proxy_store ($/;" f +dm_proxy_thread frontend/user/dev_proxy.c /^ bdbm_thread_t* dm_proxy_thread;$/;" m struct:__anon54 file: +dm_ramdrive_close devices/ramdrive/dm_ramdrive.c /^void dm_ramdrive_close (bdbm_drv_info_t* bdi)$/;" f +dm_ramdrive_end_req devices/ramdrive/dm_ramdrive.c /^void dm_ramdrive_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req)$/;" f +dm_ramdrive_load devices/ramdrive/dm_ramdrive.c /^uint32_t dm_ramdrive_load (bdbm_drv_info_t* bdi, const char* fn)$/;" f +dm_ramdrive_make_req devices/ramdrive/dm_ramdrive.c /^uint32_t dm_ramdrive_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req)$/;" f +dm_ramdrive_make_reqs devices/ramdrive/dm_ramdrive.c /^uint32_t dm_ramdrive_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f +dm_ramdrive_open devices/ramdrive/dm_ramdrive.c /^uint32_t dm_ramdrive_open (bdbm_drv_info_t* bdi)$/;" f +dm_ramdrive_probe devices/ramdrive/dm_ramdrive.c /^uint32_t dm_ramdrive_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* params)$/;" f +dm_ramdrive_store devices/ramdrive/dm_ramdrive.c /^uint32_t dm_ramdrive_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f +dm_ramssd_private_t devices/ramdrive/dm_ramdrive.c /^} dm_ramssd_private_t;$/;" t typeref:struct:__anon14 file: +dm_stub_close devices/common/dev_stub.c /^static int dm_stub_close (bdbm_dm_stub_t* s)$/;" f file: +dm_stub_end_req devices/common/dev_stub.c /^static int dm_stub_end_req (bdbm_dm_stub_t* s)$/;" f file: +dm_stub_make_req devices/common/dev_stub.c /^static int dm_stub_make_req ($/;" f file: +dm_stub_open devices/common/dev_stub.c /^static int dm_stub_open (bdbm_dm_stub_t* s)$/;" f file: +dm_stub_probe devices/common/dev_stub.c /^static int dm_stub_probe (bdbm_dm_stub_t* s)$/;" f file: +dm_user_close devices/libdummy/dm_dummy.c /^void dm_user_close (bdbm_drv_info_t* bdi)$/;" f +dm_user_end_req devices/libdummy/dm_dummy.c /^void dm_user_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req)$/;" f +dm_user_load devices/libdummy/dm_dummy.c /^uint32_t dm_user_load (bdbm_drv_info_t* bdi, const char* fn)$/;" f +dm_user_make_req devices/libdummy/dm_dummy.c /^uint32_t dm_user_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req)$/;" f +dm_user_open devices/libdummy/dm_dummy.c /^uint32_t dm_user_open (bdbm_drv_info_t* bdi)$/;" f +dm_user_private devices/libdummy/dm_dummy.c /^struct dm_user_private {$/;" s file: +dm_user_probe devices/libdummy/dm_dummy.c /^uint32_t dm_user_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* params)$/;" f +dm_user_store devices/libdummy/dm_dummy.c /^uint32_t dm_user_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f +dma devices/bluedbm/dm_bluedbm.c /^ DmaManagerPrivate dma;$/;" m struct:dm_bluedbm_private file: +do_gc include/bdbm_drv.h /^ uint32_t (*do_gc) (bdbm_drv_info_t* bdi, int64_t lpa);$/;" m struct:__anon42 +do_gettimeofday common/utils/utime.c 42;" d file: +dom tools/nvme/lightnvm.c /^ __le32 dom;$/;" m struct:nvme_nvm_id file: +dom tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 dom;$/;" m struct:nvme_nvm_id file: +done devices/dumbssd/dev_hynix_nvme.h /^ void (*done)(void*);$/;" m struct:__anon17 +done include/bdbm_drv.h /^ bdbm_sema_t done;$/;" m struct:__anon32::__anon33::__anon34 +done include/bdbm_drv.h /^ bdbm_sema_t done;$/;" m struct:__anon37 +done include/bdbm_drv.h /^ bdbm_sema_t* done; \/* maybe used by applications that require direct notifications from an interrupt handler *\/$/;" m struct:__anon31 +dsmgmt tools/nvme/lightnvm.c /^ __le32 dsmgmt;$/;" m struct:nvme_nvm_erase_blk file: +dsmgmt tools/nvme/lightnvm.c /^ __le32 dsmgmt;$/;" m struct:nvme_nvm_hb_rw file: +dsmgmt tools/nvme/lightnvm.c /^ __le32 dsmgmt;$/;" m struct:nvme_nvm_ph_rw file: +dsmgmt tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 dsmgmt;$/;" m struct:nvme_nvm_erase_blk file: +dsmgmt tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 dsmgmt;$/;" m struct:nvme_nvm_hb_rw file: +dsmgmt tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 dsmgmt;$/;" m struct:nvme_nvm_ph_rw file: +dtor common/3rd/utarray.h /^ dtor_f *dtor;$/;" m struct:__anon4 +dtor_f common/3rd/utarray.h /^typedef void (dtor_f)(void *elt);$/;" t +dumb_ssd_dev_t devices/dumbssd/dev_hynix_nvme.h /^} dumb_ssd_dev_t;$/;" t typeref:struct:__anon16 +dumbssd-y devices/dumbssd/Makefile /^dumbssd-y := \\$/;" m +dumbssd_user_cmd_t devices/dumbssd/dm_dumbssd.h /^} dumbssd_user_cmd_t;$/;" t typeref:struct:__anon18 +dummy ftl/llm_noq.c /^ uint32_t dummy;$/;" m struct:bdbm_llm_noq_private file: +dummy_fn devices/dumbssd/dm_dumbssd.c /^static blk_qc_t dummy_fn (struct request_queue *q, struct bio *bio)$/;" f file: +emul_mode devices/ramdrive/dev_ramssd.h /^ uint8_t emul_mode;$/;" m struct:__anon13 +end_req include/bdbm_drv.h /^ void (*end_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon38 +end_req include/bdbm_drv.h /^ void (*end_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon39 +end_req include/bdbm_drv.h /^ void (*end_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon40 +end_req include/bdbm_drv.h /^ void (*end_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon41 +entry tools/nvme/pci.c /^ struct msix_entry *entry;$/;" m struct:nvme_dev typeref:struct:nvme_dev::msix_entry file: +entry tools/nvmedrv-v4.5.3/pci.c /^ struct msix_entry *entry;$/;" m struct:nvme_dev typeref:struct:nvme_dev::msix_entry file: +erase tools/nvme/lightnvm.c /^ struct nvme_nvm_erase_blk erase;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_erase_blk file: +erase tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_erase_blk erase;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_erase_blk file: +erase_count ftl/algo/abm.h /^ uint32_t erase_count;$/;" m struct:__anon79 +eui tools/nvme/nvme.h /^ u8 eui[8];$/;" m struct:nvme_ns +eui tools/nvmedrv-v4.5.3/nvme.h /^ u8 eui[8];$/;" m struct:nvme_ns +eui_show tools/nvme/core.c /^static ssize_t eui_show(struct device *dev, struct device_attribute *attr,$/;" f file: +eui_show tools/nvmedrv-v4.5.3/core.c /^static ssize_t eui_show(struct device *dev, struct device_attribute *attr,$/;" f file: +event_handler devices/bluedbm/dm_bluedbm.c /^ struct task_struct *event_handler;$/;" m struct:dm_bluedbm_private typeref:struct:dm_bluedbm_private::task_struct file: +event_handler_completion devices/bluedbm/dm_bluedbm.c /^ bdbm_completion_t event_handler_completion;$/;" m struct:dm_bluedbm_private file: +event_handler_fn devices/bluedbm/dm_bluedbm.c /^int event_handler_fn (void* arg) $/;" f +event_limit tools/nvme/nvme.h /^ u8 event_limit;$/;" m struct:nvme_ctrl +event_limit tools/nvmedrv-v4.5.3/nvme.h /^ u8 event_limit;$/;" m struct:nvme_ctrl +exetime include/bdbm_drv.h /^ bdbm_stopwatch_t exetime;$/;" m struct:__anon43 +exit_signal frontend/hybrid/umain.c /^bdbm_sema_t exit_signal;$/;" v +expand_mult common/3rd/uthash.h /^ unsigned expand_mult;$/;" m struct:UT_hash_bucket +ext tools/nvme/nvme.h /^ bool ext;$/;" m struct:nvme_ns +ext tools/nvmedrv-v4.5.3/nvme.h /^ bool ext;$/;" m struct:nvme_ns +factory_blk_offset tools/lightnvm-v4.5.3/sysblk.c /^static unsigned int factory_blk_offset(struct nvm_dev *dev, int ch, int lun)$/;" f file: +factory_blk_offset tools/lightnvm/sysblk.c /^static unsigned int factory_blk_offset(struct nvm_dev *dev, int ch, int lun)$/;" f file: +factory_blks tools/lightnvm-v4.5.3/sysblk.c /^struct factory_blks {$/;" s file: +factory_blks tools/lightnvm/sysblk.c /^struct factory_blks {$/;" s file: +factory_nblks tools/lightnvm-v4.5.3/sysblk.c /^static int factory_nblks(int nblks)$/;" f file: +factory_nblks tools/lightnvm/sysblk.c /^static int factory_nblks(int nblks)$/;" f file: +fd examples/stub_test/main.c /^ int fd;$/;" m struct:__anon23 file: +fd examples/stub_test/main.c /^ int fd;$/;" m struct:__anon24 file: +fd frontend/hybrid/blkio_stub.c /^ int fd;$/;" m struct:__anon64 file: +fd frontend/user/dev_proxy.c /^ int fd;$/;" m struct:__anon54 file: +finish_mapblk_eviction include/bdbm_drv.h /^ void (*finish_mapblk_eviction) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r);$/;" m struct:__anon42 +finish_mapblk_load include/bdbm_drv.h /^ void (*finish_mapblk_load) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r);$/;" m struct:__anon42 +firmware_rev tools/nvme/core.c /^nvme_show_function(firmware_rev);$/;" v +firmware_rev tools/nvme/nvme.h /^ char firmware_rev[8];$/;" m struct:nvme_ctrl +firmware_rev tools/nvmedrv-v4.5.3/core.c /^nvme_show_function(firmware_rev);$/;" v +firmware_rev tools/nvmedrv-v4.5.3/nvme.h /^ char firmware_rev[8];$/;" m struct:nvme_ctrl +first common/3rd/ulist.h /^ struct hlist_node *first;$/;" m struct:hlist_head typeref:struct:hlist_head::hlist_node +first_dma tools/nvme/pci.c /^ dma_addr_t first_dma;$/;" m struct:nvme_iod file: +first_dma tools/nvmedrv-v4.5.3/pci.c /^ dma_addr_t first_dma;$/;" m struct:nvme_iod file: +flags tools/lightnvm-v4.5.3/rrpc.h /^ unsigned long flags;$/;" m struct:rrpc_rq +flags tools/lightnvm-v4.5.3/sysblk.c /^ int flags;$/;" m struct:factory_blks file: +flags tools/lightnvm/rrpc.h /^ unsigned long flags;$/;" m struct:rrpc_rq +flags tools/lightnvm/sysblk.c /^ int flags;$/;" m struct:factory_blks file: +flags tools/nvme/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_erase_blk file: +flags tools/nvme/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_getbbtbl file: +flags tools/nvme/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_hb_rw file: +flags tools/nvme/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_identity file: +flags tools/nvme/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_l2ptbl file: +flags tools/nvme/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_ph_rw file: +flags tools/nvme/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_setbbtbl file: +flags tools/nvme/nvme.h /^ unsigned long flags;$/;" m struct:nvme_ns +flags tools/nvme/pci.c /^ unsigned long flags;$/;" m struct:nvme_dev file: +flags tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_erase_blk file: +flags tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_getbbtbl file: +flags tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_hb_rw file: +flags tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_identity file: +flags tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_l2ptbl file: +flags tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_ph_rw file: +flags tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_setbbtbl file: +flags tools/nvmedrv-v4.5.3/nvme.h /^ unsigned long flags;$/;" m struct:nvme_ns +flags tools/nvmedrv-v4.5.3/pci.c /^ unsigned long flags;$/;" m struct:nvme_dev file: +flash_sem devices/bluedbm/dm_bluedbm.c /^ sem_t flash_sem;$/;" m struct:dm_bluedbm_private file: +flush include/bdbm_drv.h /^ void (*flush) (bdbm_drv_info_t* bdi);$/;" m struct:__anon40 +fmain include/bdbm_drv.h /^ bdbm_flash_page_main_t fmain;$/;" m struct:__anon31 +fmtype tools/nvme/lightnvm.c /^ __u8 fmtype;$/;" m struct:nvme_nvm_id_group file: +fmtype tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 fmtype;$/;" m struct:nvme_nvm_id_group file: +foob include/bdbm_drv.h /^ bdbm_flash_page_oob_t foob;$/;" m struct:__anon31 +fops devices/common/dev_stub.c /^static struct file_operations fops = {$/;" v typeref:struct:file_operations file: +fops frontend/hybrid/blkio_proxy.c /^static struct file_operations fops = {$/;" v typeref:struct:file_operations file: +format ftl/pmu.c /^char format[1024];$/;" v +fpg_sz tools/nvme/lightnvm.c /^ __le16 fpg_sz;$/;" m struct:nvme_nvm_id_group file: +fpg_sz tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 fpg_sz;$/;" m struct:nvme_nvm_id_group file: +free_ctrl tools/nvme/nvme.h /^ void (*free_ctrl)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops +free_ctrl tools/nvmedrv-v4.5.3/nvme.h /^ void (*free_ctrl)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops +free_list frontend/hybrid/blkio_proxy_reqs_pool.h /^ struct list_head free_list;$/;" m struct:__anon58 typeref:struct:__anon58::list_head +free_list ftl/hlm_reqs_pool.h /^ struct list_head free_list;$/;" m struct:__anon66 typeref:struct:__anon66::list_head +free_list tools/lightnvm-v4.5.3/gennvm.h /^ struct list_head free_list; \/* Not used blocks i.e. released$/;" m struct:gen_lun typeref:struct:gen_lun::list_head +free_list tools/lightnvm/gennvm.h /^ struct list_head free_list; \/* Not used blocks i.e. released$/;" m struct:gen_lun typeref:struct:gen_lun::list_head +free_page common/utils/upage.c /^void free_page (unsigned long addr) {$/;" f +ftl ftl/hlm_dftl.c /^ bdbm_ftl_inf_t* ftl; \/* for hlm_nobuff (it must be on top of this structure) *\/$/;" m struct:__anon89 file: +ftl_lock ftl/algo/block_ftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon78 file: +ftl_lock ftl/algo/dftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon86 file: +ftl_lock ftl/algo/page_ftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon88 file: +ftl_lock ftl/hlm_dftl.c /^ bdbm_sema_t ftl_lock;$/;" m struct:__anon89 file: +fua tools/nvme/scsi.c /^ u8 fua;$/;" m struct:nvme_trans_io_cdb file: +fua tools/nvmedrv-v4.5.3/scsi.c /^ u8 fua;$/;" m struct:nvme_trans_io_cdb file: +gc_bab ftl/algo/block_ftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon78 file: +gc_bab ftl/algo/dftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon86 file: +gc_bab ftl/algo/page_ftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon88 file: +gc_cnt include/bdbm_drv.h /^ atomic64_t gc_cnt;$/;" m struct:__anon43 +gc_cur tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_block *cur, *gc_cur;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun:: +gc_cur tools/lightnvm/rrpc.h /^ struct rrpc_block *cur, *gc_cur;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun:: +gc_erase_cnt include/bdbm_drv.h /^ atomic64_t gc_erase_cnt;$/;" m struct:__anon43 +gc_hlm ftl/algo/block_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon78 file: +gc_hlm ftl/algo/dftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon86 file: +gc_hlm ftl/algo/page_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon88 file: +gc_hlm_w ftl/algo/page_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm_w;$/;" m struct:__anon88 file: +gc_policy include/params.h /^ uint32_t gc_policy;$/;" m struct:__anon45 +gc_read_cnt include/bdbm_drv.h /^ atomic64_t gc_read_cnt;$/;" m struct:__anon43 +gc_timer tools/lightnvm-v4.5.3/rrpc.h /^ struct timer_list gc_timer;$/;" m struct:rrpc typeref:struct:rrpc::timer_list +gc_timer tools/lightnvm/rrpc.h /^ struct timer_list gc_timer;$/;" m struct:rrpc typeref:struct:rrpc::timer_list +gc_write_cnt include/bdbm_drv.h /^ atomic64_t gc_write_cnt;$/;" m struct:__anon43 +gcb_pool tools/lightnvm-v4.5.3/rrpc.h /^ mempool_t *gcb_pool;$/;" m struct:rrpc +gcb_pool tools/lightnvm/rrpc.h /^ mempool_t *gcb_pool;$/;" m struct:rrpc +gd devices/dumbssd/dev_hynix_nvme.h /^ struct gendisk *gd;$/;" m struct:__anon16 typeref:struct:__anon16::gendisk +gd frontend/kernel/blkdev.c /^ struct gendisk *gd;$/;" m struct:bdbm_device_t typeref:struct:bdbm_device_t::gendisk file: +gen_lun tools/lightnvm-v4.5.3/gennvm.h /^struct gen_lun {$/;" s +gen_lun tools/lightnvm/gennvm.h /^struct gen_lun {$/;" s +gen_nvm tools/lightnvm-v4.5.3/gennvm.h /^struct gen_nvm {$/;" s +gen_nvm tools/lightnvm/gennvm.h /^struct gen_nvm {$/;" s +gennvm tools/lightnvm-v4.5.3/gennvm.c /^static struct nvmm_type gennvm = {$/;" v typeref:struct:nvmm_type file: +gennvm tools/lightnvm/gennvm.c /^static struct nvmm_type gennvm = {$/;" v typeref:struct:nvmm_type file: +gennvm_blk_set_type tools/lightnvm-v4.5.3/gennvm.c /^static void gennvm_blk_set_type(struct nvm_dev *dev, struct ppa_addr *ppa,$/;" f file: +gennvm_blk_set_type tools/lightnvm/gennvm.c /^static void gennvm_blk_set_type(struct nvm_dev *dev, struct ppa_addr *ppa,$/;" f file: +gennvm_block_bb tools/lightnvm-v4.5.3/gennvm.c /^static int gennvm_block_bb(struct ppa_addr ppa, int nr_blocks, u8 *blks,$/;" f file: +gennvm_block_bb tools/lightnvm/gennvm.c /^static int gennvm_block_bb(struct ppa_addr ppa, int nr_blocks, u8 *blks,$/;" f file: +gennvm_block_map tools/lightnvm-v4.5.3/gennvm.c /^static int gennvm_block_map(u64 slba, u32 nlb, __le64 *entries, void *private)$/;" f file: +gennvm_block_map tools/lightnvm/gennvm.c /^static int gennvm_block_map(u64 slba, u32 nlb, __le64 *entries, void *private)$/;" f file: +gennvm_blocks_free tools/lightnvm-v4.5.3/gennvm.c /^static void gennvm_blocks_free(struct nvm_dev *dev)$/;" f file: +gennvm_blocks_free tools/lightnvm/gennvm.c /^static void gennvm_blocks_free(struct nvm_dev *dev)$/;" f file: +gennvm_blocks_init tools/lightnvm-v4.5.3/gennvm.c /^static int gennvm_blocks_init(struct nvm_dev *dev, struct gen_nvm *gn)$/;" f file: +gennvm_blocks_init tools/lightnvm/gennvm.c /^static int gennvm_blocks_init(struct nvm_dev *dev, struct gen_nvm *gn)$/;" f file: +gennvm_end_io tools/lightnvm-v4.5.3/gennvm.c /^static void gennvm_end_io(struct nvm_rq *rqd)$/;" f file: +gennvm_end_io tools/lightnvm/gennvm.c /^static void gennvm_end_io(struct nvm_rq *rqd)$/;" f file: +gennvm_erase_blk tools/lightnvm-v4.5.3/gennvm.c /^static int gennvm_erase_blk(struct nvm_dev *dev, struct nvm_block *blk,$/;" f file: +gennvm_erase_blk tools/lightnvm/gennvm.c /^static int gennvm_erase_blk(struct nvm_dev *dev, struct nvm_block *blk,$/;" f file: +gennvm_for_each_lun tools/lightnvm-v4.5.3/gennvm.h 44;" d +gennvm_for_each_lun tools/lightnvm/gennvm.h 44;" d +gennvm_free tools/lightnvm-v4.5.3/gennvm.c /^static void gennvm_free(struct nvm_dev *dev)$/;" f file: +gennvm_free tools/lightnvm/gennvm.c /^static void gennvm_free(struct nvm_dev *dev)$/;" f file: +gennvm_get_blk tools/lightnvm-v4.5.3/gennvm.c /^static struct nvm_block *gennvm_get_blk(struct nvm_dev *dev,$/;" f file: +gennvm_get_blk tools/lightnvm/gennvm.c /^static struct nvm_block *gennvm_get_blk(struct nvm_dev *dev,$/;" f file: +gennvm_get_blk_unlocked tools/lightnvm-v4.5.3/gennvm.c /^static struct nvm_block *gennvm_get_blk_unlocked(struct nvm_dev *dev,$/;" f file: +gennvm_get_blk_unlocked tools/lightnvm/gennvm.c /^static struct nvm_block *gennvm_get_blk_unlocked(struct nvm_dev *dev,$/;" f file: +gennvm_get_lun tools/lightnvm-v4.5.3/gennvm.c /^static struct nvm_lun *gennvm_get_lun(struct nvm_dev *dev, int lunid)$/;" f file: +gennvm_get_lun tools/lightnvm/gennvm.c /^static struct nvm_lun *gennvm_get_lun(struct nvm_dev *dev, int lunid)$/;" f file: +gennvm_lun_info_print tools/lightnvm-v4.5.3/gennvm.c /^static void gennvm_lun_info_print(struct nvm_dev *dev)$/;" f file: +gennvm_lun_info_print tools/lightnvm/gennvm.c /^static void gennvm_lun_info_print(struct nvm_dev *dev)$/;" f file: +gennvm_luns_free tools/lightnvm-v4.5.3/gennvm.c /^static void gennvm_luns_free(struct nvm_dev *dev)$/;" f file: +gennvm_luns_free tools/lightnvm/gennvm.c /^static void gennvm_luns_free(struct nvm_dev *dev)$/;" f file: +gennvm_luns_init tools/lightnvm-v4.5.3/gennvm.c /^static int gennvm_luns_init(struct nvm_dev *dev, struct gen_nvm *gn)$/;" f file: +gennvm_luns_init tools/lightnvm/gennvm.c /^static int gennvm_luns_init(struct nvm_dev *dev, struct gen_nvm *gn)$/;" f file: +gennvm_mark_blk_bad tools/lightnvm-v4.5.3/gennvm.c /^static void gennvm_mark_blk_bad(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f file: +gennvm_mark_blk_bad tools/lightnvm/gennvm.c /^static void gennvm_mark_blk_bad(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f file: +gennvm_module_exit tools/lightnvm-v4.5.3/gennvm.c /^module_exit(gennvm_module_exit);$/;" v +gennvm_module_exit tools/lightnvm-v4.5.3/gennvm.c /^static void gennvm_module_exit(void)$/;" f file: +gennvm_module_exit tools/lightnvm/gennvm.c /^module_exit(gennvm_module_exit);$/;" v +gennvm_module_exit tools/lightnvm/gennvm.c /^static void gennvm_module_exit(void)$/;" f file: +gennvm_module_init tools/lightnvm-v4.5.3/gennvm.c /^module_init(gennvm_module_init);$/;" v +gennvm_module_init tools/lightnvm-v4.5.3/gennvm.c /^static int __init gennvm_module_init(void)$/;" f file: +gennvm_module_init tools/lightnvm/gennvm.c /^module_init(gennvm_module_init);$/;" v +gennvm_module_init tools/lightnvm/gennvm.c /^static int __init gennvm_module_init(void)$/;" f file: +gennvm_put_blk tools/lightnvm-v4.5.3/gennvm.c /^static void gennvm_put_blk(struct nvm_dev *dev, struct nvm_block *blk)$/;" f file: +gennvm_put_blk tools/lightnvm/gennvm.c /^static void gennvm_put_blk(struct nvm_dev *dev, struct nvm_block *blk)$/;" f file: +gennvm_put_blk_unlocked tools/lightnvm-v4.5.3/gennvm.c /^static void gennvm_put_blk_unlocked(struct nvm_dev *dev, struct nvm_block *blk)$/;" f file: +gennvm_put_blk_unlocked tools/lightnvm/gennvm.c /^static void gennvm_put_blk_unlocked(struct nvm_dev *dev, struct nvm_block *blk)$/;" f file: +gennvm_register tools/lightnvm-v4.5.3/gennvm.c /^static int gennvm_register(struct nvm_dev *dev)$/;" f file: +gennvm_register tools/lightnvm/gennvm.c /^static int gennvm_register(struct nvm_dev *dev)$/;" f file: +gennvm_submit_io tools/lightnvm-v4.5.3/gennvm.c /^static int gennvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f file: +gennvm_submit_io tools/lightnvm/gennvm.c /^static int gennvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f file: +gennvm_unregister tools/lightnvm-v4.5.3/gennvm.c /^static void gennvm_unregister(struct nvm_dev *dev)$/;" f file: +gennvm_unregister tools/lightnvm/gennvm.c /^static void gennvm_unregister(struct nvm_dev *dev)$/;" f file: +get16bits common/3rd/uthash.h 483;" d +get16bits common/3rd/uthash.h 486;" d +get16bits common/3rd/uthash.h 490;" d +get_bb tools/nvme/lightnvm.c /^ struct nvme_nvm_getbbtbl get_bb;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_getbbtbl file: +get_bb tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_getbbtbl get_bb;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_getbbtbl file: +get_default_device_params devices/common/dev_params.c /^bdbm_device_params_t get_default_device_params (void)$/;" f +get_default_ftl_params ftl/ftl_params.c /^bdbm_ftl_params get_default_ftl_params (void)$/;" f +get_free_ppa include/bdbm_drv.h /^ uint32_t (*get_free_ppa) (bdbm_drv_info_t* bdi, int64_t lpa, bdbm_phyaddr_t* ppa);$/;" m struct:__anon42 +get_highest_priority_tag ftl/queue/prior_queue.c /^static uint64_t get_highest_priority_tag ($/;" f file: +get_highest_priority_tag ftl/queue/rd_prior_queue.c /^static uint64_t get_highest_priority_tag ($/;" f file: +get_new_priority_tag ftl/queue/prior_queue.c /^static uint64_t get_new_priority_tag ($/;" f file: +get_new_priority_tag ftl/queue/rd_prior_queue.c /^static uint64_t get_new_priority_tag ($/;" f file: +get_next_lun tools/lightnvm-v4.5.3/rrpc.c /^static struct rrpc_lun *get_next_lun(struct rrpc *rrpc)$/;" f file: +get_next_lun tools/lightnvm/rrpc.c /^static struct rrpc_lun *get_next_lun(struct rrpc *rrpc)$/;" f file: +get_ppa include/bdbm_drv.h /^ uint32_t (*get_ppa) (bdbm_drv_info_t* bdi, int64_t lpa, bdbm_phyaddr_t* ppa, uint64_t* sp_off);$/;" m struct:__anon42 +get_segno include/bdbm_drv.h /^ uint64_t (*get_segno) (bdbm_drv_info_t* bdi, uint64_t lpa);$/;" m struct:__anon42 +get_unaligned_be24 tools/nvme/scsi.c /^static inline u32 get_unaligned_be24(u8 *buf)$/;" f file: +get_unaligned_be24 tools/nvmedrv-v4.5.3/scsi.c /^static inline u32 get_unaligned_be24(u8 *buf)$/;" f file: +get_zeroed_page common/utils/upage.c /^unsigned long get_zeroed_page (int gfp_mask) {$/;" f +groups tools/nvme/lightnvm.c /^ struct nvme_nvm_id_group groups[4];$/;" m struct:nvme_nvm_id typeref:struct:nvme_nvm_id::nvme_nvm_id_group file: +groups tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_id_group groups[4];$/;" m struct:nvme_nvm_id typeref:struct:nvme_nvm_id::nvme_nvm_id_group file: +hash_lpa ftl/queue/prior_queue.h /^ bdbm_prior_lpa_item_t* hash_lpa; \/* lpa hash *\/$/;" m struct:__anon72 +hash_lpa ftl/queue/rd_prior_queue.h /^ bdbm_rd_prior_lpa_item_t* hash_lpa; \/* lpa hash *\/$/;" m struct:__anon76 +hashv common/3rd/uthash.h /^ unsigned hashv; \/* result of hash-fcn(key) *\/$/;" m struct:UT_hash_handle +hb_rw tools/nvme/lightnvm.c /^ struct nvme_nvm_hb_rw hb_rw;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_hb_rw file: +hb_rw tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_hb_rw hb_rw;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_hb_rw file: +hd_req_t devices/dumbssd/dev_hynix_nvme.h /^} hd_req_t;$/;" t typeref:struct:__anon17 +hh ftl/hlm_rsd.c /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon90 file: +hh ftl/queue/prior_queue.h /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon71 +hh ftl/queue/rd_prior_queue.h /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon75 +hh_head common/3rd/uthash.h /^ struct UT_hash_handle *hh_head;$/;" m struct:UT_hash_bucket typeref:struct:UT_hash_bucket::UT_hash_handle +hh_next common/3rd/uthash.h /^ struct UT_hash_handle *hh_next; \/* next hh in bucket order *\/$/;" m struct:UT_hash_handle typeref:struct:UT_hash_handle::UT_hash_handle +hh_prev common/3rd/uthash.h /^ struct UT_hash_handle *hh_prev; \/* previous hh in bucket order *\/$/;" m struct:UT_hash_handle typeref:struct:UT_hash_handle::UT_hash_handle +hho common/3rd/uthash.h /^ ptrdiff_t hho; \/* hash handle offset (byte pos of hash handle in element *\/$/;" m struct:UT_hash_table +hlist_add_after common/3rd/ulist.h /^static inline void hlist_add_after(struct hlist_node *n,$/;" f +hlist_add_before common/3rd/ulist.h /^static inline void hlist_add_before(struct hlist_node *n,$/;" f +hlist_add_head common/3rd/ulist.h /^static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h)$/;" f +hlist_del common/3rd/ulist.h /^static inline void hlist_del(struct hlist_node *n)$/;" f +hlist_del_init common/3rd/ulist.h /^static inline void hlist_del_init(struct hlist_node *n)$/;" f +hlist_empty common/3rd/ulist.h /^static inline int hlist_empty(const struct hlist_head *h)$/;" f +hlist_entry common/3rd/ulist.h 460;" d +hlist_for_each common/3rd/ulist.h 462;" d +hlist_for_each_entry common/3rd/ulist.h 477;" d +hlist_for_each_entry_continue common/3rd/ulist.h 489;" d +hlist_for_each_entry_from common/3rd/ulist.h 501;" d +hlist_for_each_entry_safe common/3rd/ulist.h 514;" d +hlist_for_each_safe common/3rd/ulist.h 466;" d +hlist_head common/3rd/ulist.h /^struct hlist_head {$/;" s +hlist_node common/3rd/ulist.h /^struct hlist_node {$/;" s +hlist_unhashed common/3rd/ulist.h /^static inline int hlist_unhashed(const struct hlist_node *h)$/;" f +hlm_buf_create ftl/hlm_buf.c /^uint32_t hlm_buf_create (bdbm_drv_info_t* bdi)$/;" f +hlm_buf_destroy ftl/hlm_buf.c /^void hlm_buf_destroy (bdbm_drv_info_t* bdi)$/;" f +hlm_buf_end_req ftl/hlm_buf.c /^void hlm_buf_end_req ($/;" f +hlm_buf_make_req ftl/hlm_buf.c /^uint32_t hlm_buf_make_req ($/;" f +hlm_dftl_create ftl/hlm_dftl.c /^uint32_t hlm_dftl_create (bdbm_drv_info_t* bdi)$/;" f +hlm_dftl_destroy ftl/hlm_dftl.c /^void hlm_dftl_destroy (bdbm_drv_info_t* bdi)$/;" f +hlm_dftl_end_req ftl/hlm_dftl.c /^void hlm_dftl_end_req ($/;" f +hlm_dftl_make_req ftl/hlm_dftl.c /^uint32_t hlm_dftl_make_req ($/;" f +hlm_nobuf_create ftl/hlm_nobuf.c /^uint32_t hlm_nobuf_create (bdbm_drv_info_t* bdi)$/;" f +hlm_nobuf_destroy ftl/hlm_nobuf.c /^void hlm_nobuf_destroy (bdbm_drv_info_t* bdi)$/;" f +hlm_nobuf_end_req ftl/hlm_nobuf.c /^void hlm_nobuf_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f +hlm_nobuf_make_req ftl/hlm_nobuf.c /^uint32_t hlm_nobuf_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f +hlm_req ftl/hlm_rsd.c /^ bdbm_hlm_req_t* hlm_req;$/;" m struct:__anon90 file: +hlm_reqs_pool frontend/df-user/userio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon56 file: +hlm_reqs_pool frontend/hybrid/blkio_stub.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon64 file: +hlm_reqs_pool frontend/kernel/blkio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon55 file: +hlm_reqs_pool frontend/user/userio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon53 file: +hlm_reqs_pool_allocate_llm_reqs ftl/hlm_reqs_pool.c /^void hlm_reqs_pool_allocate_llm_reqs ($/;" f +hlm_reqs_pool_release_llm_reqs ftl/hlm_reqs_pool.c /^void hlm_reqs_pool_release_llm_reqs ($/;" f +hlm_reqs_pool_relocate_kp ftl/hlm_reqs_pool.c /^void hlm_reqs_pool_relocate_kp (bdbm_llm_req_t* lr, uint64_t new_sp_ofs)$/;" f +hlm_reqs_pool_reset_fmain ftl/hlm_reqs_pool.c /^void hlm_reqs_pool_reset_fmain (bdbm_flash_page_main_t* fmain)$/;" f +hlm_reqs_pool_reset_logaddr ftl/hlm_reqs_pool.c /^void hlm_reqs_pool_reset_logaddr (bdbm_logaddr_t* logaddr)$/;" f +hlm_reqs_pool_write_compaction ftl/hlm_reqs_pool.c /^void hlm_reqs_pool_write_compaction ($/;" f +hlm_rsd_create ftl/hlm_rsd.c /^uint32_t hlm_rsd_create (bdbm_drv_info_t* bdi)$/;" f +hlm_rsd_destroy ftl/hlm_rsd.c /^void hlm_rsd_destroy (bdbm_drv_info_t* bdi)$/;" f +hlm_rsd_end_req ftl/hlm_rsd.c /^void hlm_rsd_end_req ($/;" f +hlm_rsd_make_req ftl/hlm_rsd.c /^uint32_t hlm_rsd_make_req ($/;" f +hlm_thread ftl/hlm_buf.c /^ bdbm_thread_t* hlm_thread;$/;" m struct:bdbm_hlm_buf_private file: +hlm_thread ftl/hlm_dftl.c /^ bdbm_thread_t* hlm_thread;$/;" m struct:__anon89 file: +hlm_type include/params.h /^ uint32_t hlm_type;$/;" m struct:__anon45 +host_blkdev_register_device frontend/kernel/blkdev.c /^uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn)$/;" f +host_blkdev_unregister_block_device frontend/kernel/blkdev.c /^void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi)$/;" f +host_lock frontend/df-user/userio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon56 file: +host_lock frontend/hybrid/blkio_stub.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon64 file: +host_lock frontend/kernel/blkio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon55 file: +host_lock frontend/user/userio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon53 file: +host_stub_thread frontend/hybrid/blkio_stub.c /^ bdbm_thread_t* host_stub_thread; \/* polling the blockio proxy *\/$/;" m struct:__anon64 file: +host_thread_fn_read frontend/df-user/main.c /^void host_thread_fn_read (void *data) $/;" f +host_thread_fn_read frontend/user/main.c /^void host_thread_fn_read (void *data) $/;" f +host_thread_fn_write frontend/df-user/main.c /^void host_thread_fn_write (void *data) $/;" f +host_thread_fn_write frontend/user/main.c /^void host_thread_fn_write (void *data) $/;" f +hrtimer devices/bluedbm/dm_bluedbm.c /^ struct hrtimer hrtimer; \/* hrtimer must be at the end of the structure *\/$/;" m struct:dm_bluedbm_private typeref:struct:dm_bluedbm_private::hrtimer file: +hrtimer devices/ramdrive/dev_ramssd.h /^ struct hrtimer hrtimer; \/* hrtimer must be at the end of the structure *\/$/;" m struct:__anon13 typeref:struct:__anon13::hrtimer +hw_comp examples/stringsearch/ss_impl_hw.c /^int hw_comp (const int fd_dev, const char* pattern, const int start_blk, const int blks)$/;" f +i common/3rd/utarray.h /^ unsigned i,n;\/* i: index of next available slot, n: num slots *\/$/;" m struct:__anon5 +i common/3rd/utstring.h /^ size_t i; \/* index of first unused byte *\/$/;" m struct:__anon8 +icd common/3rd/utarray.h /^ UT_icd icd; \/* initializer, copy and destructor functions *\/$/;" m struct:__anon5 +id examples/stub_test/main.c /^ int32_t id;$/;" m struct:__anon24 file: +id frontend/hybrid/blkio_proxy.c /^ int id;$/;" m struct:__anon60 file: +id frontend/hybrid/blkio_proxy_ioctl.h /^ uint32_t id;$/;" m struct:__anon63 +id ftl/algo/dftl_map.h /^ uint64_t id;$/;" m struct:__anon84 +id tools/nvme/lightnvm.c /^ __u8 id[8];$/;" m struct:nvme_nvm_lp_tbl file: +id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 id[8];$/;" m struct:nvme_nvm_lp_tbl file: +ideal_chain_maxlen common/3rd/uthash.h /^ unsigned ideal_chain_maxlen;$/;" m struct:UT_hash_table +identity tools/nvme/lightnvm.c /^ struct nvme_nvm_identity identity;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_identity file: +identity tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_identity identity;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_identity file: +ilog2 common/3rd/uilog.c /^int ilog2 (int x) {$/;" f +in_place_rmw ftl/hlm_reqs_pool.h /^ int8_t in_place_rmw; \/* if it is set (1), the FTL uses in-place-rmw *\/$/;" m struct:__anon66 +ineff_expands common/3rd/uthash.h /^ unsigned ineff_expands, noexpand;$/;" m struct:UT_hash_table +inflight_rq tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_inflight_rq inflight_rq;$/;" m struct:rrpc_rq typeref:struct:rrpc_rq::rrpc_inflight_rq +inflight_rq tools/lightnvm/rrpc.h /^ struct rrpc_inflight_rq inflight_rq;$/;" m struct:rrpc_rq typeref:struct:rrpc_rq::rrpc_inflight_rq +inflights tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_inflight inflights;$/;" m struct:rrpc typeref:struct:rrpc::rrpc_inflight +inflights tools/lightnvm/rrpc.h /^ struct rrpc_inflight inflights;$/;" m struct:rrpc typeref:struct:rrpc::rrpc_inflight +init common/3rd/utarray.h /^ init_f *init;$/;" m struct:__anon4 +init_f common/3rd/utarray.h /^typedef void (init_f)(void *elt);$/;" t +init_grps tools/nvme/lightnvm.c /^static int init_grps(struct nvm_id *nvm_id, struct nvme_nvm_id *nvme_nvm_id)$/;" f file: +init_grps tools/nvmedrv-v4.5.3/lightnvm.c /^static int init_grps(struct nvm_id *nvm_id, struct nvme_nvm_id *nvme_nvm_id)$/;" f file: +inline_sg tools/nvme/pci.c /^ struct scatterlist inline_sg[0];$/;" m struct:nvme_iod typeref:struct:nvme_iod::scatterlist file: +inline_sg tools/nvmedrv-v4.5.3/pci.c /^ struct scatterlist inline_sg[0];$/;" m struct:nvme_iod typeref:struct:nvme_iod::scatterlist file: +instance tools/lightnvm-v4.5.3/rrpc.h /^ struct nvm_tgt_instance instance;$/;" m struct:rrpc typeref:struct:rrpc::nvm_tgt_instance +instance tools/lightnvm/rrpc.h /^ struct nvm_tgt_instance instance;$/;" m struct:rrpc typeref:struct:rrpc::nvm_tgt_instance +instance tools/nvme/nvme.h /^ int instance;$/;" m struct:nvme_ctrl +instance tools/nvme/nvme.h /^ int instance;$/;" m struct:nvme_ns +instance tools/nvmedrv-v4.5.3/nvme.h /^ int instance;$/;" m struct:nvme_ctrl +instance tools/nvmedrv-v4.5.3/nvme.h /^ int instance;$/;" m struct:nvme_ns +intarr devices/bluedbm/dm_bluedbm.c /^ PortalInternal intarr[MAX_INDARRAY];$/;" m struct:dm_bluedbm_private file: +intr_handler devices/ramdrive/dev_ramssd.h /^ void (*intr_handler) (void*);$/;" m struct:__anon13 +invalid_pages tools/lightnvm-v4.5.3/rrpc.h /^ unsigned long invalid_pages[MAX_INVALID_PAGES_STORAGE];$/;" m struct:rrpc_block +invalid_pages tools/lightnvm/rrpc.h /^ unsigned long invalid_pages[MAX_INVALID_PAGES_STORAGE];$/;" m struct:rrpc_block +invalidate_lpa include/bdbm_drv.h /^ uint32_t (*invalidate_lpa) (bdbm_drv_info_t* bdi, int64_t lpa, uint64_t len);$/;" m struct:__anon42 +io_done devices/dumbssd/dm_dumbssd.c /^static void io_done (void* arg)$/;" f file: +io_incapable tools/nvme/nvme.h /^ bool (*io_incapable)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops +io_incapable tools/nvmedrv-v4.5.3/nvme.h /^ bool (*io_incapable)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops +io_unit ftl/hlm_reqs_pool.h /^ int32_t io_unit; \/* bytes *\/$/;" m struct:__anon66 +ioctl_io_done devices/dumbssd/dm_dumbssd.c /^static void ioctl_io_done (void* arg)$/;" f file: +iod_list tools/nvme/pci.c /^static __le64 **iod_list(struct request *req)$/;" f file: +iod_list tools/nvmedrv-v4.5.3/pci.c /^static __le64 **iod_list(struct request *req)$/;" f file: +ioq_wait tools/nvme/pci.c /^ struct completion ioq_wait;$/;" m struct:nvme_dev typeref:struct:nvme_dev::completion file: +ioq_wait tools/nvmedrv-v4.5.3/pci.c /^ struct completion ioq_wait;$/;" m struct:nvme_dev typeref:struct:nvme_dev::completion file: +irqname tools/nvme/pci.c /^ char irqname[24]; \/* nvme4294967295-65535\\0 *\/$/;" m struct:nvme_queue file: +irqname tools/nvmedrv-v4.5.3/pci.c /^ char irqname[24]; \/* nvme4294967295-65535\\0 *\/$/;" m struct:nvme_queue file: +is_gc_needed include/bdbm_drv.h /^ uint8_t (*is_gc_needed) (bdbm_drv_info_t* bdi, int64_t lpa);$/;" m struct:__anon42 +is_init devices/ramdrive/dev_ramssd.h /^ uint8_t is_init; \/* 0: not initialized, 1: initialized *\/$/;" m struct:__anon13 +is_under_load ftl/algo/dftl_map.h /^ uint32_t is_under_load;$/;" m struct:__anon84 +kernel_sector_size include/params.h /^ uint32_t kernel_sector_size;$/;" m struct:__anon45 +key common/3rd/uthash.h /^ void *key; \/* ptr to enclosing struct's key *\/$/;" m struct:UT_hash_handle +keylen common/3rd/uthash.h /^ unsigned keylen; \/* enclosing struct's key len *\/$/;" m struct:UT_hash_handle +kgc_wq tools/lightnvm-v4.5.3/rrpc.h /^ struct workqueue_struct *kgc_wq;$/;" m struct:rrpc typeref:struct:rrpc::workqueue_struct +kgc_wq tools/lightnvm/rrpc.h /^ struct workqueue_struct *kgc_wq;$/;" m struct:rrpc typeref:struct:rrpc::workqueue_struct +kp_pad include/bdbm_drv.h /^ uint8_t* kp_pad[BDBM_MAX_PAGES];$/;" m struct:__anon29 +kp_ptr devices/dumbssd/dev_hynix_nvme.h /^ uint8_t* kp_ptr;$/;" m struct:__anon17 +kp_ptr include/bdbm_drv.h /^ uint8_t* kp_ptr[BDBM_MAX_PAGES];$/;" m struct:__anon29 +kp_stt devices/common/dev_stub.h /^ kp_stt_t kp_stt[32];$/;" m struct:__anon10 +kp_stt include/bdbm_drv.h /^ kp_stt_t kp_stt[BDBM_MAX_PAGES];$/;" m struct:__anon29 +kp_stt_t include/bdbm_drv.h /^} kp_stt_t;$/;" t typeref:enum:__anon27 +kr devices/common/dev_stub.c /^ bdbm_llm_req_t** kr;$/;" m struct:__anon9 file: +kref tools/nvme/nvme.h /^ struct kref kref;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::kref +kref tools/nvme/nvme.h /^ struct kref kref;$/;" m struct:nvme_ns typeref:struct:nvme_ns::kref +kref tools/nvmedrv-v4.5.3/nvme.h /^ struct kref kref;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::kref +kref tools/nvmedrv-v4.5.3/nvme.h /^ struct kref kref;$/;" m struct:nvme_ns typeref:struct:nvme_ns::kref +krqd_wq tools/lightnvm-v4.5.3/rrpc.h /^ struct workqueue_struct *krqd_wq;$/;" m struct:rrpc typeref:struct:rrpc::workqueue_struct +krqd_wq tools/lightnvm/rrpc.h /^ struct workqueue_struct *krqd_wq;$/;" m struct:rrpc typeref:struct:rrpc::workqueue_struct +l2p tools/nvme/lightnvm.c /^ struct nvme_nvm_l2ptbl l2p;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_l2ptbl file: +l2p tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_l2ptbl l2p;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_l2ptbl file: +l_end tools/lightnvm-v4.5.3/rrpc.h /^ sector_t l_end;$/;" m struct:rrpc_inflight_rq +l_end tools/lightnvm/rrpc.h /^ sector_t l_end;$/;" m struct:rrpc_inflight_rq +l_start tools/lightnvm-v4.5.3/rrpc.h /^ sector_t l_start;$/;" m struct:rrpc_inflight_rq +l_start tools/lightnvm/rrpc.h /^ sector_t l_start;$/;" m struct:rrpc_inflight_rq +lba tools/nvme/scsi.c /^ u64 lba;$/;" m struct:nvme_trans_io_cdb file: +lba tools/nvmedrv-v4.5.3/scsi.c /^ u64 lba;$/;" m struct:nvme_trans_io_cdb file: +lba_shift tools/nvme/nvme.h /^ int lba_shift;$/;" m struct:nvme_ns +lba_shift tools/nvmedrv-v4.5.3/nvme.h /^ int lba_shift;$/;" m struct:nvme_ns +len include/bdbm_drv.h /^ uint64_t len;$/;" m struct:__anon32::__anon33::__anon35 +length tools/nvme/lightnvm.c /^ __le16 length;$/;" m struct:nvme_nvm_erase_blk file: +length tools/nvme/lightnvm.c /^ __le16 length;$/;" m struct:nvme_nvm_hb_rw file: +length tools/nvme/lightnvm.c /^ __le16 length;$/;" m struct:nvme_nvm_ph_rw file: +length tools/nvme/pci.c /^ int length; \/* Of data, in bytes *\/$/;" m struct:nvme_iod file: +length tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 length;$/;" m struct:nvme_nvm_erase_blk file: +length tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 length;$/;" m struct:nvme_nvm_hb_rw file: +length tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 length;$/;" m struct:nvme_nvm_ph_rw file: +length tools/nvmedrv-v4.5.3/pci.c /^ int length; \/* Of data, in bytes *\/$/;" m struct:nvme_iod file: +lightnvm-y tools/lightnvm-v4.5.3/Makefile /^lightnvm-y := core.o sysblk.o gennvm.o rrpc.o$/;" m +lightnvm-y tools/lightnvm/Makefile /^lightnvm-y := core.o sysblk.o gennvm.o rrpc.o$/;" m +linear_to_generic_addr tools/lightnvm-v4.5.3/rrpc.c /^static struct ppa_addr linear_to_generic_addr(struct nvm_dev *dev,$/;" f file: +linear_to_generic_addr tools/lightnvm/rrpc.c /^static struct ppa_addr linear_to_generic_addr(struct nvm_dev *dev,$/;" f file: +list frontend/hybrid/blkio_proxy_reqs_pool.c /^ struct list_head list;$/;" m struct:__anon59 typeref:struct:__anon59::list_head file: +list ftl/algo/abm.h /^ struct list_head list; \/* for list *\/$/;" m struct:__anon79 typeref:struct:__anon79::list_head +list ftl/algo/dftl_map.h /^ struct list_head list;$/;" m struct:__anon84 typeref:struct:__anon84::list_head +list ftl/queue/prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon71 typeref:struct:__anon71::list_head +list ftl/queue/prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon70 typeref:struct:__anon70::list_head +list ftl/queue/queue.h /^ struct list_head list;$/;" m struct:__anon68 typeref:struct:__anon68::list_head +list ftl/queue/rd_prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon75 typeref:struct:__anon75::list_head +list ftl/queue/rd_prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon74 typeref:struct:__anon74::list_head +list include/bdbm_drv.h /^ struct list_head list; \/* for hlm_reqs_pool *\/$/;" m struct:__anon32 typeref:struct:__anon32::list_head +list tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head list;$/;" m struct:rrpc_block typeref:struct:rrpc_block::list_head +list tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head list;$/;" m struct:rrpc_inflight_rq typeref:struct:rrpc_inflight_rq::list_head +list tools/lightnvm/rrpc.h /^ struct list_head list;$/;" m struct:rrpc_block typeref:struct:rrpc_block::list_head +list tools/lightnvm/rrpc.h /^ struct list_head list;$/;" m struct:rrpc_inflight_rq typeref:struct:rrpc_inflight_rq::list_head +list tools/nvme/nvme.h /^ struct list_head list;$/;" m struct:nvme_ns typeref:struct:nvme_ns::list_head +list tools/nvmedrv-v4.5.3/nvme.h /^ struct list_head list;$/;" m struct:nvme_ns typeref:struct:nvme_ns::list_head +list_add common/3rd/ulist.h /^static inline void list_add(struct list_head *_new, struct list_head *head)$/;" f +list_add_tail common/3rd/ulist.h /^static inline void list_add_tail(struct list_head *_new, struct list_head *head)$/;" f +list_del common/3rd/ulist.h /^static inline void list_del(struct list_head *entry)$/;" f +list_del_init common/3rd/ulist.h /^static inline void list_del_init(struct list_head *entry)$/;" f +list_empty common/3rd/ulist.h /^static inline int list_empty(const struct list_head *head)$/;" f +list_entry common/3rd/ulist.h 237;" d +list_for_each common/3rd/ulist.h 246;" d +list_for_each_entry common/3rd/ulist.h 288;" d +list_for_each_entry_continue common/3rd/ulist.h 321;" d +list_for_each_entry_reverse common/3rd/ulist.h 299;" d +list_for_each_entry_safe common/3rd/ulist.h 333;" d +list_for_each_entry_safe_continue common/3rd/ulist.h 347;" d +list_for_each_entry_safe_reverse common/3rd/ulist.h 361;" d +list_for_each_prev common/3rd/ulist.h 268;" d +list_for_each_safe common/3rd/ulist.h 278;" d +list_head common/3rd/ulist.h /^struct list_head {$/;" s +list_head_bad ftl/algo/abm.h /^ struct list_head** list_head_bad;$/;" m struct:__anon80 typeref:struct:__anon80::list_head +list_head_clean ftl/algo/abm.h /^ struct list_head** list_head_clean;$/;" m struct:__anon80 typeref:struct:__anon80::list_head +list_head_dirty ftl/algo/abm.h /^ struct list_head** list_head_dirty;$/;" m struct:__anon80 typeref:struct:__anon80::list_head +list_head_free ftl/algo/abm.h /^ struct list_head** list_head_free;$/;" m struct:__anon80 typeref:struct:__anon80::list_head +list_move common/3rd/ulist.h /^static inline void list_move(struct list_head *list, struct list_head *head)$/;" f +list_move_tail common/3rd/ulist.h /^static inline void list_move_tail(struct list_head *list,$/;" f +list_prepare_entry common/3rd/ulist.h 311;" d +list_splice common/3rd/ulist.h /^static inline void list_splice(struct list_head *list, struct list_head *head)$/;" f +list_splice_init common/3rd/ulist.h /^static inline void list_splice_init(struct list_head *list,$/;" f +llm_mq_create ftl/llm_mq.c /^uint32_t llm_mq_create (bdbm_drv_info_t* bdi)$/;" f +llm_mq_destroy ftl/llm_mq.c /^void llm_mq_destroy (bdbm_drv_info_t* bdi)$/;" f +llm_mq_end_req ftl/llm_mq.c /^void llm_mq_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r)$/;" f +llm_mq_flush ftl/llm_mq.c /^void llm_mq_flush (bdbm_drv_info_t* bdi)$/;" f +llm_mq_make_req ftl/llm_mq.c /^uint32_t llm_mq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r)$/;" f +llm_noq_create ftl/llm_noq.c /^uint32_t llm_noq_create (bdbm_drv_info_t* bdi)$/;" f +llm_noq_destroy ftl/llm_noq.c /^void llm_noq_destroy (bdbm_drv_info_t* bdi)$/;" f +llm_noq_end_req ftl/llm_noq.c /^void llm_noq_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req)$/;" f +llm_noq_flush ftl/llm_noq.c /^void llm_noq_flush (bdbm_drv_info_t* bdi)$/;" f +llm_noq_lock_create ftl/llm_noq_lock.c /^uint32_t llm_noq_lock_create (bdbm_drv_info_t* bdi)$/;" f +llm_noq_lock_destroy ftl/llm_noq_lock.c /^void llm_noq_lock_destroy (bdbm_drv_info_t* bdi)$/;" f +llm_noq_lock_end_req ftl/llm_noq_lock.c /^void llm_noq_lock_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req)$/;" f +llm_noq_lock_flush ftl/llm_noq_lock.c /^void llm_noq_lock_flush (bdbm_drv_info_t* bdi)$/;" f +llm_noq_lock_make_req ftl/llm_noq_lock.c /^uint32_t llm_noq_lock_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req)$/;" f +llm_noq_make_req ftl/llm_noq.c /^uint32_t llm_noq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req)$/;" f +llm_noq_make_reqs ftl/llm_noq.c /^uint32_t llm_noq_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f +llm_reqs devices/bluedbm/dm_bluedbm.c /^ bdbm_llm_req_t** llm_reqs;$/;" m struct:dm_bluedbm_private file: +llm_reqs frontend/user/dev_proxy.c /^ bdbm_llm_req_t** llm_reqs;$/;" m struct:__anon54 file: +llm_reqs include/bdbm_drv.h /^ bdbm_llm_req_t llm_reqs[BDBM_BLKIO_MAX_VECS];$/;" m struct:__anon32::__anon33::__anon34 +llm_reqs include/bdbm_drv.h /^ bdbm_llm_req_t* llm_reqs;$/;" m struct:__anon37 +llm_rmq_create ftl/llm_rmq.c /^uint32_t llm_rmq_create (bdbm_drv_info_t* bdi)$/;" f +llm_rmq_destroy ftl/llm_rmq.c /^void llm_rmq_destroy (bdbm_drv_info_t* bdi)$/;" f +llm_rmq_end_req ftl/llm_rmq.c /^void llm_rmq_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r)$/;" f +llm_rmq_flush ftl/llm_rmq.c /^void llm_rmq_flush (bdbm_drv_info_t* bdi)$/;" f +llm_rmq_make_req ftl/llm_rmq.c /^uint32_t llm_rmq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r)$/;" f +llm_thread ftl/llm_mq.c /^ bdbm_thread_t* llm_thread;$/;" m struct:bdbm_llm_mq_private file: +llm_thread ftl/llm_rmq.c /^ bdbm_thread_t* llm_thread;$/;" m struct:bdbm_llm_rmq_private file: +llm_type include/params.h /^ uint32_t llm_type;$/;" m struct:__anon45 +load include/bdbm_drv.h /^ uint32_t (*load) (bdbm_drv_info_t* bdi, const char* fn);$/;" m struct:__anon41 +load include/bdbm_drv.h /^ uint32_t (*load) (bdbm_drv_info_t* bdi, const char* fn);$/;" m struct:__anon42 +lock devices/bluedbm/dm_bluedbm.c /^ bdbm_spinlock_t lock;$/;" m struct:dm_bluedbm_private file: +lock devices/common/dev_stub.c /^ bdbm_spinlock_t lock;$/;" m struct:__anon9 file: +lock frontend/hybrid/blkio_proxy.c /^ bdbm_spinlock_t lock;$/;" m struct:__anon61 file: +lock frontend/hybrid/blkio_proxy_reqs_pool.h /^ bdbm_spinlock_t lock;$/;" m struct:__anon58 +lock frontend/user/dev_proxy.c /^ bdbm_spinlock_t lock;$/;" m struct:__anon54 file: +lock ftl/hlm_reqs_pool.h /^ bdbm_spinlock_t lock;$/;" m struct:__anon66 +lock ftl/queue/prior_queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon72 +lock ftl/queue/prior_queue.h /^ uint8_t lock;$/;" m struct:__anon70 +lock ftl/queue/queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon69 +lock ftl/queue/rd_prior_queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon76 +lock ftl/queue/rd_prior_queue.h /^ uint8_t lock;$/;" m struct:__anon74 +lock tools/lightnvm-v4.5.3/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_block +lock tools/lightnvm-v4.5.3/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_inflight +lock tools/lightnvm-v4.5.3/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_lun +lock tools/lightnvm/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_block +lock tools/lightnvm/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_inflight +lock tools/lightnvm/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_lun +lock_busy devices/common/dev_stub.c /^ bdbm_spinlock_t lock_busy;$/;" m struct:__anon9 file: +log2_num_buckets common/3rd/uthash.h /^ unsigned num_buckets, log2_num_buckets;$/;" m struct:UT_hash_table +logaddr devices/common/dev_stub.h /^ bdbm_logaddr_t logaddr;$/;" m struct:__anon10 +logaddr include/bdbm_drv.h /^ bdbm_logaddr_t logaddr;$/;" m struct:__anon31 +lpa ftl/queue/prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon70 +lpa ftl/queue/prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon71 +lpa ftl/queue/rd_prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon74 +lpa ftl/queue/rd_prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon75 +lpa include/bdbm_drv.h /^ uint64_t lpa;$/;" m struct:__anon32::__anon33::__anon35 +lpa include/bdbm_drv.h /^ int64_t lpa[BDBM_MAX_PAGES];$/;" m struct:__anon28 +lptbl tools/nvme/lightnvm.c /^ struct nvme_nvm_lp_tbl lptbl;$/;" m struct:nvme_nvm_id_group typeref:struct:nvme_nvm_id_group::nvme_nvm_lp_tbl file: +lptbl tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_lp_tbl lptbl;$/;" m struct:nvme_nvm_id_group typeref:struct:nvme_nvm_id_group::nvme_nvm_lp_tbl file: +lru_list ftl/algo/dftl_map.h /^ struct list_head lru_list; \/* dirty-list header *\/$/;" m struct:__anon85 typeref:struct:__anon85::list_head +lun_len tools/nvme/lightnvm.c /^ __u8 lun_len;$/;" m struct:nvme_nvm_addr_format file: +lun_len tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 lun_len;$/;" m struct:nvme_nvm_addr_format file: +lun_offset tools/lightnvm-v4.5.3/rrpc.h /^ int lun_offset;$/;" m struct:rrpc +lun_offset tools/lightnvm/rrpc.h /^ int lun_offset;$/;" m struct:rrpc +lun_offset tools/nvme/lightnvm.c /^ __u8 lun_offset;$/;" m struct:nvme_nvm_addr_format file: +lun_offset tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 lun_offset;$/;" m struct:nvme_nvm_addr_format file: +luns tools/lightnvm-v4.5.3/gennvm.h /^ struct gen_lun *luns;$/;" m struct:gen_nvm typeref:struct:gen_nvm::gen_lun +luns tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_lun *luns;$/;" m struct:rrpc typeref:struct:rrpc::rrpc_lun +luns tools/lightnvm/gennvm.h /^ struct gen_lun *luns;$/;" m struct:gen_nvm typeref:struct:gen_nvm::gen_lun +luns tools/lightnvm/rrpc.h /^ struct rrpc_lun *luns;$/;" m struct:rrpc typeref:struct:rrpc::rrpc_lun +main examples/stringsearch/ss.c /^int main (int argc, char** argv)$/;" f +main examples/stub_test/main.c /^int main(int argc, char** argv)$/;" f +main frontend/df-user/main.c /^int main (int argc, char** argv)$/;" f +main frontend/hybrid/umain.c /^int main (int argc, char** argv)$/;" f +main frontend/user/main.c /^int main (int argc, char** argv)$/;" f +main tools/dumbssd-format/dumbssd-format.c /^int main (int argc, char** argv)$/;" f +main tools/dumbssd-test/dumbssd-test.c /^int main (int argc, char** argv)$/;" f +main tools/format/bdbm_format.c /^int main (int argc, char** argv)$/;" f +main2 examples/stub_test/main.c /^int main2(int argc, char** argv)$/;" f +make_req include/bdbm_drv.h /^ uint32_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon39 +make_req include/bdbm_drv.h /^ uint32_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon40 +make_req include/bdbm_drv.h /^ uint32_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon41 +make_req include/bdbm_drv.h /^ void (*make_req) (bdbm_drv_info_t* bdi, void* req);$/;" m struct:__anon38 +make_reqs include/bdbm_drv.h /^ uint32_t (*make_reqs) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon40 +make_reqs include/bdbm_drv.h /^ uint32_t (*make_reqs) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon41 +manual_event devices/bluedbm/dm_bluedbm.c /^void manual_event (struct dm_bluedbm_private* priv)$/;" f +map_lpa_to_ppa include/bdbm_drv.h /^ uint32_t (*map_lpa_to_ppa) (bdbm_drv_info_t* bdi, bdbm_logaddr_t* logaddr, bdbm_phyaddr_t* ppa);$/;" m struct:__anon42 +map_unit ftl/hlm_reqs_pool.h /^ int32_t map_unit; \/* bytes *\/$/;" m struct:__anon66 +mapblk_phyaddr_t ftl/algo/dftl_map.h /^} mapblk_phyaddr_t;$/;" t typeref:struct:__anon82 +mapping_entry_size ftl/algo/dftl_map.h /^ uint64_t mapping_entry_size;$/;" m struct:__anon85 +mapping_entry_t ftl/algo/dftl_map.h /^} mapping_entry_t;$/;" t typeref:struct:__anon83 +mapping_type include/params.h /^ uint32_t mapping_type;$/;" m struct:__anon45 +max_cached_dir_slots ftl/algo/dftl_map.h /^ uint64_t max_cached_dir_slots;$/;" m struct:__anon85 +max_hw_sectors tools/nvme/nvme.h /^ u32 max_hw_sectors;$/;" m struct:nvme_ctrl +max_hw_sectors tools/nvmedrv-v4.5.3/nvme.h /^ u32 max_hw_sectors;$/;" m struct:nvme_ctrl +max_qid tools/nvme/pci.c /^ unsigned max_qid;$/;" m struct:nvme_dev file: +max_qid tools/nvmedrv-v4.5.3/pci.c /^ unsigned max_qid;$/;" m struct:nvme_dev file: +max_queue_items ftl/queue/queue.c /^static uint64_t max_queue_items = 0;$/;" v file: +max_size ftl/queue/prior_queue.h /^ int64_t max_size;$/;" m struct:__anon72 +max_size ftl/queue/queue.h /^ int64_t max_size;$/;" m struct:__anon69 +max_size ftl/queue/rd_prior_queue.h /^ int64_t max_size;$/;" m struct:__anon76 +max_tag ftl/queue/prior_queue.h /^ uint64_t max_tag;$/;" m struct:__anon71 +max_tag ftl/queue/rd_prior_queue.h /^ uint64_t max_tag;$/;" m struct:__anon75 +mccap tools/nvme/lightnvm.c /^ __le32 mccap;$/;" m struct:nvme_nvm_id_group file: +mccap tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 mccap;$/;" m struct:nvme_nvm_id_group file: +me ftl/algo/dftl_map.h /^ mapping_entry_t* me; \/* the size of me is equal to a single flash size *\/$/;" m struct:__anon84 +meta_read_cnt include/bdbm_drv.h /^ atomic64_t meta_read_cnt;$/;" m struct:__anon43 +meta_sg tools/nvme/pci.c /^ struct scatterlist meta_sg; \/* metadata requires single contiguous buffer *\/$/;" m struct:nvme_iod typeref:struct:nvme_iod::scatterlist file: +meta_sg tools/nvmedrv-v4.5.3/pci.c /^ struct scatterlist meta_sg; \/* metadata requires single contiguous buffer *\/$/;" m struct:nvme_iod typeref:struct:nvme_iod::scatterlist file: +meta_write_cnt include/bdbm_drv.h /^ atomic64_t meta_write_cnt;$/;" m struct:__anon43 +metadata tools/nvme/lightnvm.c /^ __le64 metadata;$/;" m struct:nvme_nvm_hb_rw file: +metadata tools/nvme/lightnvm.c /^ __le64 metadata;$/;" m struct:nvme_nvm_ph_rw file: +metadata tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 metadata;$/;" m struct:nvme_nvm_hb_rw file: +metadata tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 metadata;$/;" m struct:nvme_nvm_ph_rw file: +mlc tools/nvme/lightnvm.c /^ struct nvme_nvm_lp_mlc mlc;$/;" m struct:nvme_nvm_lp_tbl typeref:struct:nvme_nvm_lp_tbl::nvme_nvm_lp_mlc file: +mlc tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_lp_mlc mlc;$/;" m struct:nvme_nvm_lp_tbl typeref:struct:nvme_nvm_lp_tbl::nvme_nvm_lp_mlc file: +mmap_close devices/common/dev_stub.c /^void mmap_close (struct vm_area_struct *vma)$/;" f +mmap_nr_reqs frontend/hybrid/blkio_proxy.c /^ int64_t mmap_nr_reqs;$/;" m struct:__anon61 file: +mmap_open devices/common/dev_stub.c /^void mmap_open (struct vm_area_struct *vma)$/;" f +mmap_req frontend/hybrid/blkio_proxy_reqs_pool.c /^ bdbm_blkio_proxy_req_t* mmap_req;$/;" m struct:__anon59 file: +mmap_reqs frontend/hybrid/blkio_proxy_reqs_pool.h /^ bdbm_blkio_proxy_req_t* mmap_reqs;$/;" m struct:__anon58 +mmap_reqs frontend/hybrid/blkio_stub.c /^ bdbm_blkio_proxy_req_t* mmap_reqs;$/;" m struct:__anon64 file: +mmap_reqs_buf frontend/hybrid/blkio_proxy.c /^ bdbm_blkio_proxy_req_t* mmap_reqs_buf;$/;" m struct:__anon61 file: +mmap_shared devices/common/dev_stub.c /^ uint8_t* mmap_shared;$/;" m struct:__anon9 file: +mmap_shared frontend/user/dev_proxy.c /^ uint8_t* mmap_shared;$/;" m struct:__anon54 file: +mmap_shared_size devices/common/dev_stub.c /^ uint64_t mmap_shared_size;$/;" m struct:__anon9 file: +mmap_vm_ops devices/common/dev_stub.c /^struct vm_operations_struct mmap_vm_ops = {$/;" v typeref:struct:vm_operations_struct +mmap_vm_ops frontend/hybrid/blkio_proxy.c /^static struct vm_operations_struct mmap_vm_ops = {$/;" v typeref:struct:vm_operations_struct file: +mode_select_block_len tools/nvme/nvme.h /^ u32 mode_select_block_len;$/;" m struct:nvme_ns +mode_select_block_len tools/nvmedrv-v4.5.3/nvme.h /^ u32 mode_select_block_len;$/;" m struct:nvme_ns +mode_select_num_blocks tools/nvme/nvme.h /^ u64 mode_select_num_blocks;$/;" m struct:nvme_ns +mode_select_num_blocks tools/nvmedrv-v4.5.3/nvme.h /^ u64 mode_select_num_blocks;$/;" m struct:nvme_ns +model tools/nvme/core.c /^nvme_show_function(model);$/;" v +model tools/nvme/nvme.h /^ char model[40];$/;" m struct:nvme_ctrl +model tools/nvmedrv-v4.5.3/core.c /^nvme_show_function(model);$/;" v +model tools/nvmedrv-v4.5.3/nvme.h /^ char model[40];$/;" m struct:nvme_ctrl +module_main-y examples/raw-flash/Makefile /^module_main-y := \\$/;" m +module_param include/bdbm_drv.h 42;" d +mpos tools/nvme/lightnvm.c /^ __le32 mpos;$/;" m struct:nvme_nvm_id_group file: +mpos tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 mpos;$/;" m struct:nvme_nvm_id_group file: +ms tools/nvme/nvme.h /^ u16 ms;$/;" m struct:nvme_ns +ms tools/nvmedrv-v4.5.3/nvme.h /^ u16 ms;$/;" m struct:nvme_ns +mt ftl/algo/block_ftl.c /^ bdbm_block_mapping_entry_t** mt;$/;" m struct:__anon78 file: +mt ftl/algo/dftl.c /^ dftl_mapping_table_t* mt;$/;" m struct:__anon86 file: +mtype tools/nvme/lightnvm.c /^ __u8 mtype;$/;" m struct:nvme_nvm_id_group file: +mtype tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 mtype;$/;" m struct:nvme_nvm_id_group file: +mutex frontend/hybrid/blkio_proxy.c /^ bdbm_sema_t mutex;$/;" m struct:__anon61 file: +n common/3rd/utarray.h /^ unsigned i,n;\/* i: index of next available slot, n: num slots *\/$/;" m struct:__anon5 +n common/3rd/utstring.h /^ size_t n; \/* allocd size *\/$/;" m struct:__anon8 +name tools/nvme/nvme.h /^ char name[12];$/;" m struct:nvme_ctrl +name tools/nvmedrv-v4.5.3/nvme.h /^ char name[12];$/;" m struct:nvme_ctrl +namespaces tools/nvme/nvme.h /^ struct list_head namespaces;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::list_head +namespaces tools/nvmedrv-v4.5.3/nvme.h /^ struct list_head namespaces;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::list_head +namespaces_mutex tools/nvme/nvme.h /^ struct mutex namespaces_mutex;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::mutex +namespaces_mutex tools/nvmedrv-v4.5.3/nvme.h /^ struct mutex namespaces_mutex;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::mutex +nents tools/nvme/pci.c /^ int nents; \/* Used in scatterlist *\/$/;" m struct:nvme_iod file: +nents tools/nvmedrv-v4.5.3/pci.c /^ int nents; \/* Used in scatterlist *\/$/;" m struct:nvme_iod file: +next common/3rd/ulist.h /^ struct hlist_node *next, **pprev;$/;" m struct:hlist_node typeref:struct:hlist_node::hlist_node +next common/3rd/ulist.h /^ struct list_head *next, *prev;$/;" m struct:list_head typeref:struct:list_head::list_head +next common/3rd/uthash.h /^ void *next; \/* next element in app order *\/$/;" m struct:UT_hash_handle +next_lun tools/lightnvm-v4.5.3/rrpc.h /^ atomic_t next_lun; \/* Whenever a page is written, this is updated$/;" m struct:rrpc +next_lun tools/lightnvm/rrpc.h /^ atomic_t next_lun; \/* Whenever a page is written, this is updated$/;" m struct:rrpc +next_page tools/lightnvm-v4.5.3/rrpc.h /^ unsigned int next_page;$/;" m struct:rrpc_block +next_page tools/lightnvm/rrpc.h /^ unsigned int next_page;$/;" m struct:rrpc_block +nlb tools/nvme/lightnvm.c /^ __le16 nlb;$/;" m struct:nvme_nvm_setbbtbl file: +nlb tools/nvme/lightnvm.c /^ __le32 nlb;$/;" m struct:nvme_nvm_l2ptbl file: +nlb tools/nvme/scsi.c /^ __be32 nlb;$/;" m struct:scsi_unmap_blk_desc file: +nlb tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 nlb;$/;" m struct:nvme_nvm_setbbtbl file: +nlb tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 nlb;$/;" m struct:nvme_nvm_l2ptbl file: +nlb tools/nvmedrv-v4.5.3/scsi.c /^ __be32 nlb;$/;" m struct:scsi_unmap_blk_desc file: +node tools/nvme/nvme.h /^ struct list_head node;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::list_head +node tools/nvme/pci.c /^ struct list_head node;$/;" m struct:nvme_dev typeref:struct:nvme_dev::list_head file: +node tools/nvmedrv-v4.5.3/nvme.h /^ struct list_head node;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::list_head +node tools/nvmedrv-v4.5.3/pci.c /^ struct list_head node;$/;" m struct:nvme_dev typeref:struct:nvme_dev::list_head file: +noexpand common/3rd/uthash.h /^ unsigned ineff_expands, noexpand;$/;" m struct:UT_hash_table +nonideal_items common/3rd/uthash.h /^ unsigned nonideal_items;$/;" m struct:UT_hash_table +np devices/ramdrive/dev_ramssd.h /^ bdbm_device_params_t* np;$/;" m struct:__anon13 +np examples/raw-flash/raw-flash.h /^ bdbm_device_params_t* np;$/;" m struct:__anon20 +np examples/stub_test/main.c /^bdbm_device_params_t np;$/;" v +np ftl/algo/abm.h /^ bdbm_device_params_t* np;$/;" m struct:__anon80 +npages tools/nvme/pci.c /^ int npages; \/* In the PRP list. 0 means small pool in use *\/$/;" m struct:nvme_iod file: +npages tools/nvmedrv-v4.5.3/pci.c /^ int npages; \/* In the PRP list. 0 means small pool in use *\/$/;" m struct:nvme_iod file: +nr_bad_blks ftl/algo/abm.h /^ uint64_t nr_bad_blks;$/;" m struct:__anon80 +nr_blks_per_seg ftl/algo/block_ftl.c /^ uint64_t nr_blks_per_seg; \/* how many blocks belong to a segment *\/$/;" m struct:__anon78 file: +nr_blocks_per_channel include/params.h /^ uint64_t nr_blocks_per_channel;$/;" m struct:__anon46 +nr_blocks_per_chip include/params.h /^ uint64_t nr_blocks_per_chip;$/;" m struct:__anon46 +nr_blocks_per_ssd include/params.h /^ uint64_t nr_blocks_per_ssd;$/;" m struct:__anon46 +nr_cached_slots ftl/algo/dftl_map.h /^ atomic64_t nr_cached_slots;$/;" m struct:__anon85 +nr_channels include/params.h /^ uint64_t nr_channels;$/;" m struct:__anon46 +nr_chips_per_channel include/params.h /^ uint64_t nr_chips_per_channel;$/;" m struct:__anon46 +nr_chips_per_ssd include/params.h /^ uint64_t nr_chips_per_ssd;$/;" m struct:__anon46 +nr_clean_blks ftl/algo/abm.h /^ uint64_t nr_clean_blks;$/;" m struct:__anon80 +nr_dead_segs ftl/algo/block_ftl.c /^ int64_t nr_dead_segs;$/;" m struct:__anon78 file: +nr_dirty_blks ftl/algo/abm.h /^ uint64_t nr_dirty_blks;$/;" m struct:__anon80 +nr_entires_per_dir_slot ftl/algo/dftl_map.h /^ uint64_t nr_entires_per_dir_slot;$/;" m struct:__anon85 +nr_free_blks ftl/algo/abm.h /^ uint64_t nr_free_blks;$/;" m struct:__anon80 +nr_free_blks_prepared ftl/algo/abm.h /^ uint64_t nr_free_blks_prepared;$/;" m struct:__anon80 +nr_host_reqs frontend/df-user/userio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon56 file: +nr_host_reqs frontend/hybrid/blkio_stub.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon64 file: +nr_host_reqs frontend/kernel/blkio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon55 file: +nr_host_reqs frontend/user/userio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon53 file: +nr_invalid_pages tools/lightnvm-v4.5.3/rrpc.h /^ unsigned int nr_invalid_pages;$/;" m struct:rrpc_block +nr_invalid_pages tools/lightnvm/rrpc.h /^ unsigned int nr_invalid_pages;$/;" m struct:rrpc_block +nr_invalid_subpages ftl/algo/abm.h /^ uint32_t nr_invalid_subpages;$/;" m struct:__anon79 +nr_kp_per_fp examples/raw-flash/raw-flash.h /^ uint64_t nr_kp_per_fp;$/;" m struct:__anon20 +nr_kp_per_fp examples/stub_test/main.c /^int nr_kp_per_fp = 1;$/;" v +nr_llm_reqs include/bdbm_drv.h /^ uint64_t nr_llm_reqs;$/;" m struct:__anon32::__anon33::__anon34 +nr_llm_reqs include/bdbm_drv.h /^ uint64_t nr_llm_reqs;$/;" m struct:__anon37 +nr_llm_reqs_done include/bdbm_drv.h /^ atomic64_t nr_llm_reqs_done;$/;" m struct:__anon32::__anon33::__anon34 +nr_llm_reqs_done include/bdbm_drv.h /^ atomic64_t nr_llm_reqs_done;$/;" m struct:__anon37 +nr_luns tools/lightnvm-v4.5.3/gennvm.h /^ int nr_luns;$/;" m struct:gen_nvm +nr_luns tools/lightnvm-v4.5.3/rrpc.h /^ int nr_luns;$/;" m struct:rrpc +nr_luns tools/lightnvm/gennvm.h /^ int nr_luns;$/;" m struct:gen_nvm +nr_luns tools/lightnvm/rrpc.h /^ int nr_luns;$/;" m struct:rrpc +nr_out_reqs frontend/hybrid/blkio_proxy.c /^ atomic_t nr_out_reqs; \/* # of outstanding requests *\/$/;" m struct:__anon61 file: +nr_pages tools/lightnvm-v4.5.3/rrpc.h /^ unsigned long long nr_pages;$/;" m struct:rrpc +nr_pages tools/lightnvm/rrpc.h /^ unsigned long long nr_pages;$/;" m struct:rrpc +nr_pages_per_block include/params.h /^ uint64_t nr_pages_per_block;$/;" m struct:__anon46 +nr_pages_per_ssd include/params.h /^ uint64_t nr_pages_per_ssd;$/;" m struct:__anon46 +nr_pgs_per_seg ftl/algo/block_ftl.c /^ uint64_t nr_pgs_per_seg; \/* how many pages belong to a segment *\/$/;" m struct:__anon78 file: +nr_ppas tools/lightnvm-v4.5.3/sysblk.c /^ int nr_ppas;$/;" m struct:sysblk_scan file: +nr_ppas tools/lightnvm/sysblk.c /^ int nr_ppas;$/;" m struct:sysblk_scan file: +nr_punits examples/raw-flash/raw-flash.h /^ uint64_t nr_punits;$/;" m struct:__anon20 +nr_punits ftl/algo/dftl.c /^ uint64_t nr_punits; $/;" m struct:__anon86 file: +nr_punits ftl/algo/page_ftl.c /^ uint64_t nr_punits;$/;" m struct:__anon88 file: +nr_punits ftl/llm_mq.c /^ uint64_t nr_punits;$/;" m struct:bdbm_llm_mq_private file: +nr_punits ftl/llm_noq_lock.c /^ uint64_t nr_punits;$/;" m struct:bdbm_llm_noq_lock_private file: +nr_punits ftl/llm_rmq.c /^ uint64_t nr_punits;$/;" m struct:bdbm_llm_rmq_private file: +nr_punits_pages ftl/algo/page_ftl.c /^ uint64_t nr_punits_pages;$/;" m struct:__anon88 file: +nr_queues ftl/queue/prior_queue.h /^ uint64_t nr_queues;$/;" m struct:__anon72 +nr_queues ftl/queue/queue.h /^ uint64_t nr_queues;$/;" m struct:__anon69 +nr_queues ftl/queue/rd_prior_queue.h /^ uint64_t nr_queues;$/;" m struct:__anon76 +nr_reqs frontend/hybrid/blkio_proxy_reqs_pool.h /^ int64_t nr_reqs;$/;" m struct:__anon58 +nr_rows tools/lightnvm-v4.5.3/sysblk.c /^ int nr_rows;$/;" m struct:sysblk_scan file: +nr_rows tools/lightnvm/sysblk.c /^ int nr_rows;$/;" m struct:sysblk_scan file: +nr_segs ftl/algo/block_ftl.c /^ uint64_t nr_segs; \/* a segment is the unit of mapping *\/$/;" m struct:__anon78 file: +nr_subpages_per_block include/params.h /^ uint64_t nr_subpages_per_block;$/;" m struct:__anon46 +nr_subpages_per_page include/params.h /^ uint64_t nr_subpages_per_page;$/;" m struct:__anon46 +nr_subpages_per_ssd include/params.h /^ uint64_t nr_subpages_per_ssd; \/* subpage size must be4 KB *\/$/;" m struct:__anon46 +nr_total_blks ftl/algo/abm.h /^ uint64_t nr_total_blks;$/;" m struct:__anon80 +nr_total_dir_slots ftl/algo/dftl_map.h /^ uint64_t nr_total_dir_slots;$/;" m struct:__anon85 +nr_trim_pgs ftl/algo/block_ftl.c /^ uint64_t* nr_trim_pgs;$/;" m struct:__anon78 file: +nr_valid_pgs ftl/algo/block_ftl.c /^ uint64_t* nr_valid_pgs;$/;" m struct:__anon78 file: +ns_cmp tools/nvme/core.c /^static int ns_cmp(void *priv, struct list_head *a, struct list_head *b)$/;" f file: +ns_cmp tools/nvmedrv-v4.5.3/core.c /^static int ns_cmp(void *priv, struct list_head *a, struct list_head *b)$/;" f file: +ns_id tools/nvme/nvme.h /^ unsigned ns_id;$/;" m struct:nvme_ns +ns_id tools/nvmedrv-v4.5.3/nvme.h /^ unsigned ns_id;$/;" m struct:nvme_ns +ns_ida tools/nvme/nvme.h /^ struct ida ns_ida;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::ida +ns_ida tools/nvmedrv-v4.5.3/nvme.h /^ struct ida ns_ida;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::ida +nsid tools/nvme/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_erase_blk file: +nsid tools/nvme/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_getbbtbl file: +nsid tools/nvme/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_hb_rw file: +nsid tools/nvme/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_identity file: +nsid tools/nvme/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_l2ptbl file: +nsid tools/nvme/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_ph_rw file: +nsid tools/nvme/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_setbbtbl file: +nsid tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_erase_blk file: +nsid tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_getbbtbl file: +nsid tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_hb_rw file: +nsid tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_identity file: +nsid tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_l2ptbl file: +nsid tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_ph_rw file: +nsid tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 nsid;$/;" m struct:nvme_nvm_setbbtbl file: +nsid_show tools/nvme/core.c /^static ssize_t nsid_show(struct device *dev, struct device_attribute *attr,$/;" f file: +nsid_show tools/nvmedrv-v4.5.3/core.c /^static ssize_t nsid_show(struct device *dev, struct device_attribute *attr,$/;" f file: +num_blk tools/nvme/lightnvm.c /^ __le16 num_blk;$/;" m struct:nvme_nvm_id_group file: +num_blk tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 num_blk;$/;" m struct:nvme_nvm_id_group file: +num_buckets common/3rd/uthash.h /^ unsigned num_buckets, log2_num_buckets;$/;" m struct:UT_hash_table +num_ch tools/nvme/lightnvm.c /^ __u8 num_ch;$/;" m struct:nvme_nvm_id_group file: +num_ch tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 num_ch;$/;" m struct:nvme_nvm_id_group file: +num_items common/3rd/uthash.h /^ unsigned num_items;$/;" m struct:UT_hash_table +num_lun tools/nvme/lightnvm.c /^ __u8 num_lun;$/;" m struct:nvme_nvm_id_group file: +num_lun tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 num_lun;$/;" m struct:nvme_nvm_id_group file: +num_pairs tools/nvme/lightnvm.c /^ __u16 num_pairs;$/;" m struct:nvme_nvm_lp_mlc file: +num_pairs tools/nvmedrv-v4.5.3/lightnvm.c /^ __u16 num_pairs;$/;" m struct:nvme_nvm_lp_mlc file: +num_pg tools/nvme/lightnvm.c /^ __le16 num_pg;$/;" m struct:nvme_nvm_id_group file: +num_pg tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 num_pg;$/;" m struct:nvme_nvm_id_group file: +num_pln tools/nvme/lightnvm.c /^ __u8 num_pln;$/;" m struct:nvme_nvm_id_group file: +num_pln tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 num_pln;$/;" m struct:nvme_nvm_id_group file: +nvm_addr_to_generic_mode tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_addr_to_generic_mode);$/;" v +nvm_addr_to_generic_mode tools/lightnvm-v4.5.3/core.c /^void nvm_addr_to_generic_mode(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f +nvm_addr_to_generic_mode tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_addr_to_generic_mode);$/;" v +nvm_addr_to_generic_mode tools/lightnvm/core.c /^void nvm_addr_to_generic_mode(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f +nvm_configure_by_str_event tools/lightnvm-v4.5.3/core.c /^static int nvm_configure_by_str_event(const char *val,$/;" f file: +nvm_configure_by_str_event tools/lightnvm/core.c /^static int nvm_configure_by_str_event(const char *val,$/;" f file: +nvm_configure_by_str_event_param_ops tools/lightnvm-v4.5.3/core.c /^static const struct kernel_param_ops nvm_configure_by_str_event_param_ops = {$/;" v typeref:struct:kernel_param_ops file: +nvm_configure_by_str_event_param_ops tools/lightnvm/core.c /^static const struct kernel_param_ops nvm_configure_by_str_event_param_ops = {$/;" v typeref:struct:kernel_param_ops file: +nvm_configure_create tools/lightnvm-v4.5.3/core.c /^static int nvm_configure_create(const char *val)$/;" f file: +nvm_configure_create tools/lightnvm/core.c /^static int nvm_configure_create(const char *val)$/;" f file: +nvm_configure_get tools/lightnvm-v4.5.3/core.c /^static int nvm_configure_get(char *buf, const struct kernel_param *kp)$/;" f file: +nvm_configure_get tools/lightnvm/core.c /^static int nvm_configure_get(char *buf, const struct kernel_param *kp)$/;" f file: +nvm_configure_remove tools/lightnvm-v4.5.3/core.c /^static int nvm_configure_remove(const char *val)$/;" f file: +nvm_configure_remove tools/lightnvm/core.c /^static int nvm_configure_remove(const char *val)$/;" f file: +nvm_configure_show tools/lightnvm-v4.5.3/core.c /^static int nvm_configure_show(const char *val)$/;" f file: +nvm_configure_show tools/lightnvm/core.c /^static int nvm_configure_show(const char *val)$/;" f file: +nvm_core_init tools/lightnvm-v4.5.3/core.c /^static int nvm_core_init(struct nvm_dev *dev)$/;" f file: +nvm_core_init tools/lightnvm/core.c /^static int nvm_core_init(struct nvm_dev *dev)$/;" f file: +nvm_cpu_to_sysblk tools/lightnvm-v4.5.3/sysblk.c /^void nvm_cpu_to_sysblk(struct nvm_system_block *sb, struct nvm_sb_info *info)$/;" f +nvm_cpu_to_sysblk tools/lightnvm/sysblk.c /^void nvm_cpu_to_sysblk(struct nvm_system_block *sb, struct nvm_sb_info *info)$/;" f +nvm_create_target tools/lightnvm-v4.5.3/core.c /^static int nvm_create_target(struct nvm_dev *dev,$/;" f file: +nvm_create_target tools/lightnvm/core.c /^static int nvm_create_target(struct nvm_dev *dev,$/;" f file: +nvm_ctl_ioctl devices/dumbssd/dm_dumbssd.c /^static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg)$/;" f file: +nvm_ctl_ioctl tools/lightnvm-v4.5.3/core.c /^static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg)$/;" f file: +nvm_ctl_ioctl tools/lightnvm/core.c /^static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg)$/;" f file: +nvm_dev_dma_alloc tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_dev_dma_alloc);$/;" v +nvm_dev_dma_alloc tools/lightnvm-v4.5.3/core.c /^void *nvm_dev_dma_alloc(struct nvm_dev *dev, gfp_t mem_flags,$/;" f +nvm_dev_dma_alloc tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_dev_dma_alloc);$/;" v +nvm_dev_dma_alloc tools/lightnvm/core.c /^void *nvm_dev_dma_alloc(struct nvm_dev *dev, gfp_t mem_flags,$/;" f +nvm_dev_dma_free tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_dev_dma_free);$/;" v +nvm_dev_dma_free tools/lightnvm-v4.5.3/core.c /^void nvm_dev_dma_free(struct nvm_dev *dev, void *ppa_list,$/;" f +nvm_dev_dma_free tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_dev_dma_free);$/;" v +nvm_dev_dma_free tools/lightnvm/core.c /^void nvm_dev_dma_free(struct nvm_dev *dev, void *ppa_list,$/;" f +nvm_dev_factory tools/lightnvm-v4.5.3/sysblk.c /^EXPORT_SYMBOL(nvm_dev_factory);$/;" v +nvm_dev_factory tools/lightnvm-v4.5.3/sysblk.c /^int nvm_dev_factory(struct nvm_dev *dev, int flags)$/;" f +nvm_dev_factory tools/lightnvm/sysblk.c /^EXPORT_SYMBOL(nvm_dev_factory);$/;" v +nvm_dev_factory tools/lightnvm/sysblk.c /^int nvm_dev_factory(struct nvm_dev *dev, int flags)$/;" f +nvm_end_io tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_end_io);$/;" v +nvm_end_io tools/lightnvm-v4.5.3/core.c /^void nvm_end_io(struct nvm_rq *rqd, int error)$/;" f +nvm_end_io tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_end_io);$/;" v +nvm_end_io tools/lightnvm/core.c /^void nvm_end_io(struct nvm_rq *rqd, int error)$/;" f +nvm_end_io_sync tools/lightnvm-v4.5.3/core.c /^static void nvm_end_io_sync(struct nvm_rq *rqd)$/;" f file: +nvm_end_io_sync tools/lightnvm/core.c /^static void nvm_end_io_sync(struct nvm_rq *rqd)$/;" f file: +nvm_erase_blk tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_erase_blk);$/;" v +nvm_erase_blk tools/lightnvm-v4.5.3/core.c /^int nvm_erase_blk(struct nvm_dev *dev, struct nvm_block *blk)$/;" f +nvm_erase_blk tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_erase_blk);$/;" v +nvm_erase_blk tools/lightnvm/core.c /^int nvm_erase_blk(struct nvm_dev *dev, struct nvm_block *blk)$/;" f +nvm_erase_ppa tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_erase_ppa);$/;" v +nvm_erase_ppa tools/lightnvm-v4.5.3/core.c /^int nvm_erase_ppa(struct nvm_dev *dev, struct ppa_addr *ppas, int nr_ppas)$/;" f +nvm_erase_ppa tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_erase_ppa);$/;" v +nvm_erase_ppa tools/lightnvm/core.c /^int nvm_erase_ppa(struct nvm_dev *dev, struct ppa_addr *ppas, int nr_ppas)$/;" f +nvm_exit tools/lightnvm-v4.5.3/core.c /^static void nvm_exit(struct nvm_dev *dev)$/;" f file: +nvm_exit tools/lightnvm/core.c /^static void nvm_exit(struct nvm_dev *dev)$/;" f file: +nvm_fact_get_bb_tbl tools/lightnvm-v4.5.3/sysblk.c /^static int nvm_fact_get_bb_tbl(struct nvm_dev *dev, struct ppa_addr ppa,$/;" f file: +nvm_fact_get_bb_tbl tools/lightnvm/sysblk.c /^static int nvm_fact_get_bb_tbl(struct nvm_dev *dev, struct ppa_addr ppa,$/;" f file: +nvm_fact_get_blks tools/lightnvm-v4.5.3/sysblk.c /^static int nvm_fact_get_blks(struct nvm_dev *dev, struct ppa_addr *erase_list,$/;" f file: +nvm_fact_get_blks tools/lightnvm/sysblk.c /^static int nvm_fact_get_blks(struct nvm_dev *dev, struct ppa_addr *erase_list,$/;" f file: +nvm_fact_select_blks tools/lightnvm-v4.5.3/sysblk.c /^static int nvm_fact_select_blks(struct nvm_dev *dev, struct factory_blks *f)$/;" f file: +nvm_fact_select_blks tools/lightnvm/sysblk.c /^static int nvm_fact_select_blks(struct nvm_dev *dev, struct factory_blks *f)$/;" f file: +nvm_factory_blks tools/lightnvm-v4.5.3/sysblk.c /^static int nvm_factory_blks(struct ppa_addr ppa, int nr_blks, u8 *blks,$/;" f file: +nvm_factory_blks tools/lightnvm/sysblk.c /^static int nvm_factory_blks(struct ppa_addr ppa, int nr_blks, u8 *blks,$/;" f file: +nvm_find_mgr_type tools/lightnvm-v4.5.3/core.c /^static struct nvmm_type *nvm_find_mgr_type(const char *name)$/;" f file: +nvm_find_mgr_type tools/lightnvm/core.c /^static struct nvmm_type *nvm_find_mgr_type(const char *name)$/;" f file: +nvm_find_nvm_dev tools/lightnvm-v4.5.3/core.c /^static struct nvm_dev *nvm_find_nvm_dev(const char *name)$/;" f file: +nvm_find_nvm_dev tools/lightnvm/core.c /^static struct nvm_dev *nvm_find_nvm_dev(const char *name)$/;" f file: +nvm_find_target_type tools/lightnvm-v4.5.3/core.c /^static struct nvm_tgt_type *nvm_find_target_type(const char *name)$/;" f file: +nvm_find_target_type tools/lightnvm/core.c /^static struct nvm_tgt_type *nvm_find_target_type(const char *name)$/;" f file: +nvm_fops tools/lightnvm-v4.5.3/core.c /^static const struct block_device_operations nvm_fops = {$/;" v typeref:struct:block_device_operations file: +nvm_fops tools/lightnvm/core.c /^static const struct block_device_operations nvm_fops = {$/;" v typeref:struct:block_device_operations file: +nvm_free tools/lightnvm-v4.5.3/core.c /^static void nvm_free(struct nvm_dev *dev)$/;" f file: +nvm_free tools/lightnvm/core.c /^static void nvm_free(struct nvm_dev *dev)$/;" f file: +nvm_free_rqd_ppalist tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_free_rqd_ppalist);$/;" v +nvm_free_rqd_ppalist tools/lightnvm-v4.5.3/core.c /^void nvm_free_rqd_ppalist(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f +nvm_free_rqd_ppalist tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_free_rqd_ppalist);$/;" v +nvm_free_rqd_ppalist tools/lightnvm/core.c /^void nvm_free_rqd_ppalist(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f +nvm_generic_to_addr_mode tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_generic_to_addr_mode);$/;" v +nvm_generic_to_addr_mode tools/lightnvm-v4.5.3/core.c /^void nvm_generic_to_addr_mode(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f +nvm_generic_to_addr_mode tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_generic_to_addr_mode);$/;" v +nvm_generic_to_addr_mode tools/lightnvm/core.c /^void nvm_generic_to_addr_mode(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f +nvm_get_all_sysblks tools/lightnvm-v4.5.3/sysblk.c /^static int nvm_get_all_sysblks(struct nvm_dev *dev, struct sysblk_scan *s,$/;" f file: +nvm_get_all_sysblks tools/lightnvm/sysblk.c /^static int nvm_get_all_sysblks(struct nvm_dev *dev, struct sysblk_scan *s,$/;" f file: +nvm_get_blk tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_get_blk);$/;" v +nvm_get_blk tools/lightnvm-v4.5.3/core.c /^struct nvm_block *nvm_get_blk(struct nvm_dev *dev, struct nvm_lun *lun,$/;" f +nvm_get_blk tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_get_blk);$/;" v +nvm_get_blk tools/lightnvm/core.c /^struct nvm_block *nvm_get_blk(struct nvm_dev *dev, struct nvm_lun *lun,$/;" f +nvm_get_blk_unlocked tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_get_blk_unlocked);$/;" v +nvm_get_blk_unlocked tools/lightnvm-v4.5.3/core.c /^struct nvm_block *nvm_get_blk_unlocked(struct nvm_dev *dev, struct nvm_lun *lun,$/;" f +nvm_get_blk_unlocked tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_get_blk_unlocked);$/;" v +nvm_get_blk_unlocked tools/lightnvm/core.c /^struct nvm_block *nvm_get_blk_unlocked(struct nvm_dev *dev, struct nvm_lun *lun,$/;" f +nvm_get_sysblock tools/lightnvm-v4.5.3/sysblk.c /^int nvm_get_sysblock(struct nvm_dev *dev, struct nvm_sb_info *info)$/;" f +nvm_get_sysblock tools/lightnvm/sysblk.c /^int nvm_get_sysblock(struct nvm_dev *dev, struct nvm_sb_info *info)$/;" f +nvm_init tools/lightnvm-v4.5.3/core.c /^static int nvm_init(struct nvm_dev *dev)$/;" f file: +nvm_init tools/lightnvm/core.c /^static int nvm_init(struct nvm_dev *dev)$/;" f file: +nvm_init_mgr tools/lightnvm-v4.5.3/core.c /^struct nvmm_type *nvm_init_mgr(struct nvm_dev *dev)$/;" f +nvm_init_mgr tools/lightnvm/core.c /^struct nvmm_type *nvm_init_mgr(struct nvm_dev *dev)$/;" f +nvm_init_mlc_tbl tools/lightnvm-v4.5.3/core.c /^static int nvm_init_mlc_tbl(struct nvm_dev *dev, struct nvm_id_group *grp)$/;" f file: +nvm_init_mlc_tbl tools/lightnvm/core.c /^static int nvm_init_mlc_tbl(struct nvm_dev *dev, struct nvm_id_group *grp)$/;" f file: +nvm_init_slc_tbl tools/lightnvm-v4.5.3/core.c /^static int nvm_init_slc_tbl(struct nvm_dev *dev, struct nvm_id_group *grp)$/;" f file: +nvm_init_slc_tbl tools/lightnvm/core.c /^static int nvm_init_slc_tbl(struct nvm_dev *dev, struct nvm_id_group *grp)$/;" f file: +nvm_init_sysblock tools/lightnvm-v4.5.3/sysblk.c /^int nvm_init_sysblock(struct nvm_dev *dev, struct nvm_sb_info *info)$/;" f +nvm_init_sysblock tools/lightnvm/sysblk.c /^int nvm_init_sysblock(struct nvm_dev *dev, struct nvm_sb_info *info)$/;" f +nvm_ioctl_dev_create tools/lightnvm-v4.5.3/core.c /^static long nvm_ioctl_dev_create(struct file *file, void __user *arg)$/;" f file: +nvm_ioctl_dev_create tools/lightnvm/core.c /^static long nvm_ioctl_dev_create(struct file *file, void __user *arg)$/;" f file: +nvm_ioctl_dev_factory tools/lightnvm-v4.5.3/core.c /^static long nvm_ioctl_dev_factory(struct file *file, void __user *arg)$/;" f file: +nvm_ioctl_dev_factory tools/lightnvm/core.c /^static long nvm_ioctl_dev_factory(struct file *file, void __user *arg)$/;" f file: +nvm_ioctl_dev_init tools/lightnvm-v4.5.3/core.c /^static long nvm_ioctl_dev_init(struct file *file, void __user *arg)$/;" f file: +nvm_ioctl_dev_init tools/lightnvm/core.c /^static long nvm_ioctl_dev_init(struct file *file, void __user *arg)$/;" f file: +nvm_ioctl_dev_remove tools/lightnvm-v4.5.3/core.c /^static long nvm_ioctl_dev_remove(struct file *file, void __user *arg)$/;" f file: +nvm_ioctl_dev_remove tools/lightnvm/core.c /^static long nvm_ioctl_dev_remove(struct file *file, void __user *arg)$/;" f file: +nvm_ioctl_get_devices tools/lightnvm-v4.5.3/core.c /^static long nvm_ioctl_get_devices(struct file *file, void __user *arg)$/;" f file: +nvm_ioctl_get_devices tools/lightnvm/core.c /^static long nvm_ioctl_get_devices(struct file *file, void __user *arg)$/;" f file: +nvm_ioctl_info tools/lightnvm-v4.5.3/core.c /^static long nvm_ioctl_info(struct file *file, void __user *arg)$/;" f file: +nvm_ioctl_info tools/lightnvm/core.c /^static long nvm_ioctl_info(struct file *file, void __user *arg)$/;" f file: +nvm_mod_exit tools/lightnvm-v4.5.3/core.c /^module_exit(nvm_mod_exit);$/;" v +nvm_mod_exit tools/lightnvm-v4.5.3/core.c /^static void __exit nvm_mod_exit(void)$/;" f file: +nvm_mod_exit tools/lightnvm/core.c /^module_exit(nvm_mod_exit);$/;" v +nvm_mod_exit tools/lightnvm/core.c /^static void __exit nvm_mod_exit(void)$/;" f file: +nvm_mod_init tools/lightnvm-v4.5.3/core.c /^module_init(nvm_mod_init);$/;" v +nvm_mod_init tools/lightnvm-v4.5.3/core.c /^static int __init nvm_mod_init(void)$/;" f file: +nvm_mod_init tools/lightnvm/core.c /^module_init(nvm_mod_init);$/;" v +nvm_mod_init tools/lightnvm/core.c /^static int __init nvm_mod_init(void)$/;" f file: +nvm_prepare_new_sysblks tools/lightnvm-v4.5.3/sysblk.c /^static int nvm_prepare_new_sysblks(struct nvm_dev *dev, struct sysblk_scan *s)$/;" f file: +nvm_prepare_new_sysblks tools/lightnvm/sysblk.c /^static int nvm_prepare_new_sysblks(struct nvm_dev *dev, struct sysblk_scan *s)$/;" f file: +nvm_put_blk tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_put_blk);$/;" v +nvm_put_blk tools/lightnvm-v4.5.3/core.c /^void nvm_put_blk(struct nvm_dev *dev, struct nvm_block *blk)$/;" f +nvm_put_blk tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_put_blk);$/;" v +nvm_put_blk tools/lightnvm/core.c /^void nvm_put_blk(struct nvm_dev *dev, struct nvm_block *blk)$/;" f +nvm_put_blk_unlocked tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_put_blk_unlocked);$/;" v +nvm_put_blk_unlocked tools/lightnvm-v4.5.3/core.c /^void nvm_put_blk_unlocked(struct nvm_dev *dev, struct nvm_block *blk)$/;" f +nvm_put_blk_unlocked tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_put_blk_unlocked);$/;" v +nvm_put_blk_unlocked tools/lightnvm/core.c /^void nvm_put_blk_unlocked(struct nvm_dev *dev, struct nvm_block *blk)$/;" f +nvm_register tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_register);$/;" v +nvm_register tools/lightnvm-v4.5.3/core.c /^int nvm_register(struct request_queue *q, char *disk_name,$/;" f +nvm_register tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_register);$/;" v +nvm_register tools/lightnvm/core.c /^int nvm_register(struct request_queue *q, char *disk_name,$/;" f +nvm_register_mgr tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_register_mgr);$/;" v +nvm_register_mgr tools/lightnvm-v4.5.3/core.c /^int nvm_register_mgr(struct nvmm_type *mt)$/;" f +nvm_register_mgr tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_register_mgr);$/;" v +nvm_register_mgr tools/lightnvm/core.c /^int nvm_register_mgr(struct nvmm_type *mt)$/;" f +nvm_register_target tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_register_target);$/;" v +nvm_register_target tools/lightnvm-v4.5.3/core.c /^int nvm_register_target(struct nvm_tgt_type *tt)$/;" f +nvm_register_target tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_register_target);$/;" v +nvm_register_target tools/lightnvm/core.c /^int nvm_register_target(struct nvm_tgt_type *tt)$/;" f +nvm_remove_target tools/lightnvm-v4.5.3/core.c /^static void nvm_remove_target(struct nvm_target *t)$/;" f file: +nvm_remove_target tools/lightnvm/core.c /^static void nvm_remove_target(struct nvm_target *t)$/;" f file: +nvm_scan_block tools/lightnvm-v4.5.3/sysblk.c /^static int nvm_scan_block(struct nvm_dev *dev, struct ppa_addr *ppa,$/;" f file: +nvm_scan_block tools/lightnvm/sysblk.c /^static int nvm_scan_block(struct nvm_dev *dev, struct ppa_addr *ppa,$/;" f file: +nvm_set_bb_tbl tools/lightnvm-v4.5.3/sysblk.c /^static int nvm_set_bb_tbl(struct nvm_dev *dev, struct sysblk_scan *s, int type)$/;" f file: +nvm_set_bb_tbl tools/lightnvm/sysblk.c /^static int nvm_set_bb_tbl(struct nvm_dev *dev, struct sysblk_scan *s, int type)$/;" f file: +nvm_set_rqd_ppalist tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_set_rqd_ppalist);$/;" v +nvm_set_rqd_ppalist tools/lightnvm-v4.5.3/core.c /^int nvm_set_rqd_ppalist(struct nvm_dev *dev, struct nvm_rq *rqd,$/;" f +nvm_set_rqd_ppalist tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_set_rqd_ppalist);$/;" v +nvm_set_rqd_ppalist tools/lightnvm/core.c /^int nvm_set_rqd_ppalist(struct nvm_dev *dev, struct nvm_rq *rqd,$/;" f +nvm_setup_nvm_sb_info tools/lightnvm-v4.5.3/core.c /^static void nvm_setup_nvm_sb_info(struct nvm_sb_info *info)$/;" f file: +nvm_setup_nvm_sb_info tools/lightnvm/core.c /^static void nvm_setup_nvm_sb_info(struct nvm_sb_info *info)$/;" f file: +nvm_setup_sysblk_scan tools/lightnvm-v4.5.3/sysblk.c /^void nvm_setup_sysblk_scan(struct nvm_dev *dev, struct sysblk_scan *s,$/;" f +nvm_setup_sysblk_scan tools/lightnvm/sysblk.c /^void nvm_setup_sysblk_scan(struct nvm_dev *dev, struct sysblk_scan *s,$/;" f +nvm_setup_sysblks tools/lightnvm-v4.5.3/sysblk.c /^static int nvm_setup_sysblks(struct nvm_dev *dev, struct ppa_addr *sysblk_ppas)$/;" f file: +nvm_setup_sysblks tools/lightnvm/sysblk.c /^static int nvm_setup_sysblks(struct nvm_dev *dev, struct ppa_addr *sysblk_ppas)$/;" f file: +nvm_submit_io tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_submit_io);$/;" v +nvm_submit_io tools/lightnvm-v4.5.3/core.c /^int nvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f +nvm_submit_io tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_submit_io);$/;" v +nvm_submit_io tools/lightnvm/core.c /^int nvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f +nvm_submit_ppa tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_submit_ppa);$/;" v +nvm_submit_ppa tools/lightnvm-v4.5.3/core.c /^int nvm_submit_ppa(struct nvm_dev *dev, struct ppa_addr *ppa, int nr_ppas,$/;" f +nvm_submit_ppa tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_submit_ppa);$/;" v +nvm_submit_ppa tools/lightnvm/core.c /^int nvm_submit_ppa(struct nvm_dev *dev, struct ppa_addr *ppa, int nr_ppas,$/;" f +nvm_sysblk_to_cpu tools/lightnvm-v4.5.3/sysblk.c /^void nvm_sysblk_to_cpu(struct nvm_sb_info *info, struct nvm_system_block *sb)$/;" f +nvm_sysblk_to_cpu tools/lightnvm/sysblk.c /^void nvm_sysblk_to_cpu(struct nvm_sb_info *info, struct nvm_system_block *sb)$/;" f +nvm_unregister tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_unregister);$/;" v +nvm_unregister tools/lightnvm-v4.5.3/core.c /^void nvm_unregister(char *disk_name)$/;" f +nvm_unregister tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_unregister);$/;" v +nvm_unregister tools/lightnvm/core.c /^void nvm_unregister(char *disk_name)$/;" f +nvm_unregister_mgr tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_unregister_mgr);$/;" v +nvm_unregister_mgr tools/lightnvm-v4.5.3/core.c /^void nvm_unregister_mgr(struct nvmm_type *mt)$/;" f +nvm_unregister_mgr tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_unregister_mgr);$/;" v +nvm_unregister_mgr tools/lightnvm/core.c /^void nvm_unregister_mgr(struct nvmm_type *mt)$/;" f +nvm_unregister_target tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_unregister_target);$/;" v +nvm_unregister_target tools/lightnvm-v4.5.3/core.c /^void nvm_unregister_target(struct nvm_tgt_type *tt)$/;" f +nvm_unregister_target tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_unregister_target);$/;" v +nvm_unregister_target tools/lightnvm/core.c /^void nvm_unregister_target(struct nvm_tgt_type *tt)$/;" f +nvm_update_sysblock tools/lightnvm-v4.5.3/sysblk.c /^int nvm_update_sysblock(struct nvm_dev *dev, struct nvm_sb_info *new)$/;" f +nvm_update_sysblock tools/lightnvm/sysblk.c /^int nvm_update_sysblock(struct nvm_dev *dev, struct nvm_sb_info *new)$/;" f +nvm_write_and_verify tools/lightnvm-v4.5.3/sysblk.c /^static int nvm_write_and_verify(struct nvm_dev *dev, struct nvm_sb_info *info,$/;" f file: +nvm_write_and_verify tools/lightnvm/sysblk.c /^static int nvm_write_and_verify(struct nvm_dev *dev, struct nvm_sb_info *info,$/;" f file: +nvme-y tools/nvme/Makefile /^nvme-y := core.o pci.o scsi.o lightnvm.o$/;" m +nvme-y tools/nvmedrv-v4.5.3/Makefile /^nvme-y := core.o pci.o scsi.o lightnvm.o$/;" m +nvme_admin_exit_hctx tools/nvme/pci.c /^static void nvme_admin_exit_hctx(struct blk_mq_hw_ctx *hctx, unsigned int hctx_idx)$/;" f file: +nvme_admin_exit_hctx tools/nvmedrv-v4.5.3/pci.c /^static void nvme_admin_exit_hctx(struct blk_mq_hw_ctx *hctx, unsigned int hctx_idx)$/;" f file: +nvme_admin_init_hctx tools/nvme/pci.c /^static int nvme_admin_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,$/;" f file: +nvme_admin_init_hctx tools/nvmedrv-v4.5.3/pci.c /^static int nvme_admin_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,$/;" f file: +nvme_admin_init_request tools/nvme/pci.c /^static int nvme_admin_init_request(void *data, struct request *req,$/;" f file: +nvme_admin_init_request tools/nvmedrv-v4.5.3/pci.c /^static int nvme_admin_init_request(void *data, struct request *req,$/;" f file: +nvme_alloc_admin_tags tools/nvme/pci.c /^static int nvme_alloc_admin_tags(struct nvme_dev *dev)$/;" f file: +nvme_alloc_admin_tags tools/nvmedrv-v4.5.3/pci.c /^static int nvme_alloc_admin_tags(struct nvme_dev *dev)$/;" f file: +nvme_alloc_ns tools/nvme/core.c /^static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)$/;" f file: +nvme_alloc_ns tools/nvmedrv-v4.5.3/core.c /^static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)$/;" f file: +nvme_alloc_queue tools/nvme/pci.c /^static struct nvme_queue *nvme_alloc_queue(struct nvme_dev *dev, int qid,$/;" f file: +nvme_alloc_queue tools/nvmedrv-v4.5.3/pci.c /^static struct nvme_queue *nvme_alloc_queue(struct nvme_dev *dev, int qid,$/;" f file: +nvme_alloc_request tools/nvme/core.c /^struct request *nvme_alloc_request(struct request_queue *q,$/;" f +nvme_alloc_request tools/nvmedrv-v4.5.3/core.c /^struct request *nvme_alloc_request(struct request_queue *q,$/;" f +nvme_alloc_sq_cmds tools/nvme/pci.c /^static int nvme_alloc_sq_cmds(struct nvme_dev *dev, struct nvme_queue *nvmeq,$/;" f file: +nvme_alloc_sq_cmds tools/nvmedrv-v4.5.3/pci.c /^static int nvme_alloc_sq_cmds(struct nvme_dev *dev, struct nvme_queue *nvmeq,$/;" f file: +nvme_attrs_are_visible tools/nvme/core.c /^static umode_t nvme_attrs_are_visible(struct kobject *kobj,$/;" f file: +nvme_attrs_are_visible tools/nvmedrv-v4.5.3/core.c /^static umode_t nvme_attrs_are_visible(struct kobject *kobj,$/;" f file: +nvme_block_nr tools/nvme/nvme.h /^static inline u64 nvme_block_nr(struct nvme_ns *ns, sector_t sector)$/;" f +nvme_block_nr tools/nvmedrv-v4.5.3/nvme.h /^static inline u64 nvme_block_nr(struct nvme_ns *ns, sector_t sector)$/;" f +nvme_cancel_queue_ios tools/nvme/pci.c /^static void nvme_cancel_queue_ios(struct request *req, void *data, bool reserved)$/;" f file: +nvme_cancel_queue_ios tools/nvmedrv-v4.5.3/pci.c /^static void nvme_cancel_queue_ios(struct request *req, void *data, bool reserved)$/;" f file: +nvme_cb_done frontend/df-user/main.c /^void nvme_cb_done (void* req)$/;" f +nvme_char_major tools/nvme/core.c /^static int nvme_char_major;$/;" v file: +nvme_char_major tools/nvmedrv-v4.5.3/core.c /^static int nvme_char_major;$/;" v file: +nvme_class tools/nvme/core.c /^static struct class *nvme_class;$/;" v typeref:struct:class file: +nvme_class tools/nvmedrv-v4.5.3/core.c /^static struct class *nvme_class;$/;" v typeref:struct:class file: +nvme_clear_queue tools/nvme/pci.c /^static void nvme_clear_queue(struct nvme_queue *nvmeq)$/;" f file: +nvme_clear_queue tools/nvmedrv-v4.5.3/pci.c /^static void nvme_clear_queue(struct nvme_queue *nvmeq)$/;" f file: +nvme_cmb_qdepth tools/nvme/pci.c /^static int nvme_cmb_qdepth(struct nvme_dev *dev, int nr_io_queues,$/;" f file: +nvme_cmb_qdepth tools/nvmedrv-v4.5.3/pci.c /^static int nvme_cmb_qdepth(struct nvme_dev *dev, int nr_io_queues,$/;" f file: +nvme_cmd_size tools/nvme/pci.c /^static unsigned int nvme_cmd_size(struct nvme_dev *dev)$/;" f file: +nvme_cmd_size tools/nvmedrv-v4.5.3/pci.c /^static unsigned int nvme_cmd_size(struct nvme_dev *dev)$/;" f file: +nvme_compat_ioctl tools/nvme/core.c /^static int nvme_compat_ioctl(struct block_device *bdev, fmode_t mode,$/;" f file: +nvme_compat_ioctl tools/nvme/core.c 553;" d file: +nvme_compat_ioctl tools/nvmedrv-v4.5.3/core.c /^static int nvme_compat_ioctl(struct block_device *bdev, fmode_t mode,$/;" f file: +nvme_compat_ioctl tools/nvmedrv-v4.5.3/core.c 553;" d file: +nvme_complete_async_event tools/nvme/pci.c /^static void nvme_complete_async_event(struct nvme_dev *dev,$/;" f file: +nvme_complete_async_event tools/nvmedrv-v4.5.3/pci.c /^static void nvme_complete_async_event(struct nvme_dev *dev,$/;" f file: +nvme_complete_rq tools/nvme/pci.c /^static void nvme_complete_rq(struct request *req)$/;" f file: +nvme_complete_rq tools/nvmedrv-v4.5.3/pci.c /^static void nvme_complete_rq(struct request *req)$/;" f file: +nvme_config_discard tools/nvme/core.c /^static void nvme_config_discard(struct nvme_ns *ns)$/;" f file: +nvme_config_discard tools/nvmedrv-v4.5.3/core.c /^static void nvme_config_discard(struct nvme_ns *ns)$/;" f file: +nvme_configure_admin_queue tools/nvme/pci.c /^static int nvme_configure_admin_queue(struct nvme_dev *dev)$/;" f file: +nvme_configure_admin_queue tools/nvmedrv-v4.5.3/pci.c /^static int nvme_configure_admin_queue(struct nvme_dev *dev)$/;" f file: +nvme_core_exit tools/nvme/core.c /^void nvme_core_exit(void)$/;" f +nvme_core_exit tools/nvmedrv-v4.5.3/core.c /^void nvme_core_exit(void)$/;" f +nvme_core_init tools/nvme/core.c /^int __init nvme_core_init(void)$/;" f +nvme_core_init tools/nvmedrv-v4.5.3/core.c /^int __init nvme_core_init(void)$/;" f +nvme_create_io_queues tools/nvme/pci.c /^static int nvme_create_io_queues(struct nvme_dev *dev)$/;" f file: +nvme_create_io_queues tools/nvmedrv-v4.5.3/pci.c /^static int nvme_create_io_queues(struct nvme_dev *dev)$/;" f file: +nvme_create_queue tools/nvme/pci.c /^static int nvme_create_queue(struct nvme_queue *nvmeq, int qid)$/;" f file: +nvme_create_queue tools/nvmedrv-v4.5.3/pci.c /^static int nvme_create_queue(struct nvme_queue *nvmeq, int qid)$/;" f file: +nvme_ctrl tools/nvme/nvme.h /^struct nvme_ctrl {$/;" s +nvme_ctrl tools/nvmedrv-v4.5.3/nvme.h /^struct nvme_ctrl {$/;" s +nvme_ctrl_ops tools/nvme/nvme.h /^struct nvme_ctrl_ops {$/;" s +nvme_ctrl_ops tools/nvmedrv-v4.5.3/nvme.h /^struct nvme_ctrl_ops {$/;" s +nvme_ctrl_ready tools/nvme/nvme.h /^static inline bool nvme_ctrl_ready(struct nvme_ctrl *ctrl)$/;" f +nvme_ctrl_ready tools/nvmedrv-v4.5.3/nvme.h /^static inline bool nvme_ctrl_ready(struct nvme_ctrl *ctrl)$/;" f +nvme_del_cq_end tools/nvme/pci.c /^static void nvme_del_cq_end(struct request *req, int error)$/;" f file: +nvme_del_cq_end tools/nvmedrv-v4.5.3/pci.c /^static void nvme_del_cq_end(struct request *req, int error)$/;" f file: +nvme_del_queue_end tools/nvme/pci.c /^static void nvme_del_queue_end(struct request *req, int error)$/;" f file: +nvme_del_queue_end tools/nvmedrv-v4.5.3/pci.c /^static void nvme_del_queue_end(struct request *req, int error)$/;" f file: +nvme_delete_queue tools/nvme/pci.c /^static int nvme_delete_queue(struct nvme_queue *nvmeq, u8 opcode)$/;" f file: +nvme_delete_queue tools/nvmedrv-v4.5.3/pci.c /^static int nvme_delete_queue(struct nvme_queue *nvmeq, u8 opcode)$/;" f file: +nvme_dev tools/nvme/pci.c /^struct nvme_dev {$/;" s file: +nvme_dev tools/nvmedrv-v4.5.3/pci.c /^struct nvme_dev {$/;" s file: +nvme_dev_add tools/nvme/pci.c /^static int nvme_dev_add(struct nvme_dev *dev)$/;" f file: +nvme_dev_add tools/nvmedrv-v4.5.3/pci.c /^static int nvme_dev_add(struct nvme_dev *dev)$/;" f file: +nvme_dev_attr_groups tools/nvme/core.c /^static const struct attribute_group *nvme_dev_attr_groups[] = {$/;" v typeref:struct:attribute_group file: +nvme_dev_attr_groups tools/nvmedrv-v4.5.3/core.c /^static const struct attribute_group *nvme_dev_attr_groups[] = {$/;" v typeref:struct:attribute_group file: +nvme_dev_attrs tools/nvme/core.c /^static struct attribute *nvme_dev_attrs[] = {$/;" v typeref:struct:attribute file: +nvme_dev_attrs tools/nvmedrv-v4.5.3/core.c /^static struct attribute *nvme_dev_attrs[] = {$/;" v typeref:struct:attribute file: +nvme_dev_attrs_group tools/nvme/core.c /^static struct attribute_group nvme_dev_attrs_group = {$/;" v typeref:struct:attribute_group file: +nvme_dev_attrs_group tools/nvmedrv-v4.5.3/core.c /^static struct attribute_group nvme_dev_attrs_group = {$/;" v typeref:struct:attribute_group file: +nvme_dev_disable tools/nvme/pci.c /^static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown)$/;" f file: +nvme_dev_disable tools/nvmedrv-v4.5.3/pci.c /^static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown)$/;" f file: +nvme_dev_fops tools/nvme/core.c /^static const struct file_operations nvme_dev_fops = {$/;" v typeref:struct:file_operations file: +nvme_dev_fops tools/nvmedrv-v4.5.3/core.c /^static const struct file_operations nvme_dev_fops = {$/;" v typeref:struct:file_operations file: +nvme_dev_ioctl tools/nvme/core.c /^static long nvme_dev_ioctl(struct file *file, unsigned int cmd,$/;" f file: +nvme_dev_ioctl tools/nvmedrv-v4.5.3/core.c /^static long nvme_dev_ioctl(struct file *file, unsigned int cmd,$/;" f file: +nvme_dev_list_add tools/nvme/pci.c /^static int nvme_dev_list_add(struct nvme_dev *dev)$/;" f file: +nvme_dev_list_add tools/nvmedrv-v4.5.3/pci.c /^static int nvme_dev_list_add(struct nvme_dev *dev)$/;" f file: +nvme_dev_list_remove tools/nvme/pci.c /^static void nvme_dev_list_remove(struct nvme_dev *dev)$/;" f file: +nvme_dev_list_remove tools/nvmedrv-v4.5.3/pci.c /^static void nvme_dev_list_remove(struct nvme_dev *dev)$/;" f file: +nvme_dev_map tools/nvme/pci.c /^static int nvme_dev_map(struct nvme_dev *dev)$/;" f file: +nvme_dev_map tools/nvmedrv-v4.5.3/pci.c /^static int nvme_dev_map(struct nvme_dev *dev)$/;" f file: +nvme_dev_open tools/nvme/core.c /^static int nvme_dev_open(struct inode *inode, struct file *file)$/;" f file: +nvme_dev_open tools/nvmedrv-v4.5.3/core.c /^static int nvme_dev_open(struct inode *inode, struct file *file)$/;" f file: +nvme_dev_release tools/nvme/core.c /^static int nvme_dev_release(struct inode *inode, struct file *file)$/;" f file: +nvme_dev_release tools/nvmedrv-v4.5.3/core.c /^static int nvme_dev_release(struct inode *inode, struct file *file)$/;" f file: +nvme_dev_remove_admin tools/nvme/pci.c /^static void nvme_dev_remove_admin(struct nvme_dev *dev)$/;" f file: +nvme_dev_remove_admin tools/nvmedrv-v4.5.3/pci.c /^static void nvme_dev_remove_admin(struct nvme_dev *dev)$/;" f file: +nvme_dev_scan tools/nvme/pci.c /^static void nvme_dev_scan(struct work_struct *work)$/;" f file: +nvme_dev_scan tools/nvmedrv-v4.5.3/pci.c /^static void nvme_dev_scan(struct work_struct *work)$/;" f file: +nvme_dev_unmap tools/nvme/pci.c /^static void nvme_dev_unmap(struct nvme_dev *dev)$/;" f file: +nvme_dev_unmap tools/nvmedrv-v4.5.3/pci.c /^static void nvme_dev_unmap(struct nvme_dev *dev)$/;" f file: +nvme_dev_user_cmd tools/nvme/core.c /^static int nvme_dev_user_cmd(struct nvme_ctrl *ctrl, void __user *argp)$/;" f file: +nvme_dev_user_cmd tools/nvmedrv-v4.5.3/core.c /^static int nvme_dev_user_cmd(struct nvme_ctrl *ctrl, void __user *argp)$/;" f file: +nvme_dif_complete tools/nvme/pci.c /^static void nvme_dif_complete(u32 p, u32 v, struct t10_pi_tuple *pi)$/;" f file: +nvme_dif_complete tools/nvmedrv-v4.5.3/pci.c /^static void nvme_dif_complete(u32 p, u32 v, struct t10_pi_tuple *pi)$/;" f file: +nvme_dif_prep tools/nvme/pci.c /^static void nvme_dif_prep(u32 p, u32 v, struct t10_pi_tuple *pi)$/;" f file: +nvme_dif_prep tools/nvmedrv-v4.5.3/pci.c /^static void nvme_dif_prep(u32 p, u32 v, struct t10_pi_tuple *pi)$/;" f file: +nvme_dif_remap tools/nvme/pci.c /^static void nvme_dif_remap(struct request *req,$/;" f file: +nvme_dif_remap tools/nvmedrv-v4.5.3/pci.c /^static void nvme_dif_remap(struct request *req,$/;" f file: +nvme_disable_admin_queue tools/nvme/pci.c /^static void nvme_disable_admin_queue(struct nvme_dev *dev, bool shutdown)$/;" f file: +nvme_disable_admin_queue tools/nvmedrv-v4.5.3/pci.c /^static void nvme_disable_admin_queue(struct nvme_dev *dev, bool shutdown)$/;" f file: +nvme_disable_ctrl tools/nvme/core.c /^int nvme_disable_ctrl(struct nvme_ctrl *ctrl, u64 cap)$/;" f +nvme_disable_ctrl tools/nvmedrv-v4.5.3/core.c /^int nvme_disable_ctrl(struct nvme_ctrl *ctrl, u64 cap)$/;" f +nvme_disable_io_queues tools/nvme/pci.c /^static void nvme_disable_io_queues(struct nvme_dev *dev)$/;" f file: +nvme_disable_io_queues tools/nvmedrv-v4.5.3/pci.c /^static void nvme_disable_io_queues(struct nvme_dev *dev)$/;" f file: +nvme_driver tools/nvme/pci.c /^static struct pci_driver nvme_driver = {$/;" v typeref:struct:pci_driver file: +nvme_driver tools/nvmedrv-v4.5.3/pci.c /^static struct pci_driver nvme_driver = {$/;" v typeref:struct:pci_driver file: +nvme_enable_ctrl tools/nvme/core.c /^int nvme_enable_ctrl(struct nvme_ctrl *ctrl, u64 cap)$/;" f +nvme_enable_ctrl tools/nvmedrv-v4.5.3/core.c /^int nvme_enable_ctrl(struct nvme_ctrl *ctrl, u64 cap)$/;" f +nvme_err_handler tools/nvme/pci.c /^static const struct pci_error_handlers nvme_err_handler = {$/;" v typeref:struct:pci_error_handlers file: +nvme_err_handler tools/nvmedrv-v4.5.3/pci.c /^static const struct pci_error_handlers nvme_err_handler = {$/;" v typeref:struct:pci_error_handlers file: +nvme_error_detected tools/nvme/pci.c /^static pci_ers_result_t nvme_error_detected(struct pci_dev *pdev,$/;" f file: +nvme_error_detected tools/nvmedrv-v4.5.3/pci.c /^static pci_ers_result_t nvme_error_detected(struct pci_dev *pdev,$/;" f file: +nvme_error_resume tools/nvme/pci.c /^static void nvme_error_resume(struct pci_dev *pdev)$/;" f file: +nvme_error_resume tools/nvmedrv-v4.5.3/pci.c /^static void nvme_error_resume(struct pci_dev *pdev)$/;" f file: +nvme_error_status tools/nvme/nvme.h /^static inline int nvme_error_status(u16 status)$/;" f +nvme_error_status tools/nvmedrv-v4.5.3/nvme.h /^static inline int nvme_error_status(u16 status)$/;" f +nvme_exit tools/nvme/pci.c /^module_exit(nvme_exit);$/;" v +nvme_exit tools/nvme/pci.c /^static void __exit nvme_exit(void)$/;" f file: +nvme_exit tools/nvmedrv-v4.5.3/pci.c /^module_exit(nvme_exit);$/;" v +nvme_exit tools/nvmedrv-v4.5.3/pci.c /^static void __exit nvme_exit(void)$/;" f file: +nvme_fill_device_id_eui64 tools/nvme/scsi.c /^static int nvme_fill_device_id_eui64(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_fill_device_id_eui64 tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_fill_device_id_eui64(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_fill_device_id_scsi_string tools/nvme/scsi.c /^static int nvme_fill_device_id_scsi_string(struct nvme_ns *ns,$/;" f file: +nvme_fill_device_id_scsi_string tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_fill_device_id_scsi_string(struct nvme_ns *ns,$/;" f file: +nvme_find_ns tools/nvme/core.c /^static struct nvme_ns *nvme_find_ns(struct nvme_ctrl *ctrl, unsigned nsid)$/;" f file: +nvme_find_ns tools/nvmedrv-v4.5.3/core.c /^static struct nvme_ns *nvme_find_ns(struct nvme_ctrl *ctrl, unsigned nsid)$/;" f file: +nvme_fops tools/nvme/core.c /^static const struct block_device_operations nvme_fops = {$/;" v typeref:struct:block_device_operations file: +nvme_fops tools/nvmedrv-v4.5.3/core.c /^static const struct block_device_operations nvme_fops = {$/;" v typeref:struct:block_device_operations file: +nvme_free_ctrl tools/nvme/core.c /^static void nvme_free_ctrl(struct kref *kref)$/;" f file: +nvme_free_ctrl tools/nvmedrv-v4.5.3/core.c /^static void nvme_free_ctrl(struct kref *kref)$/;" f file: +nvme_free_iod tools/nvme/pci.c /^static void nvme_free_iod(struct nvme_dev *dev, struct request *req)$/;" f file: +nvme_free_iod tools/nvmedrv-v4.5.3/pci.c /^static void nvme_free_iod(struct nvme_dev *dev, struct request *req)$/;" f file: +nvme_free_ns tools/nvme/core.c /^static void nvme_free_ns(struct kref *kref)$/;" f file: +nvme_free_ns tools/nvmedrv-v4.5.3/core.c /^static void nvme_free_ns(struct kref *kref)$/;" f file: +nvme_free_queue tools/nvme/pci.c /^static void nvme_free_queue(struct nvme_queue *nvmeq)$/;" f file: +nvme_free_queue tools/nvmedrv-v4.5.3/pci.c /^static void nvme_free_queue(struct nvme_queue *nvmeq)$/;" f file: +nvme_free_queues tools/nvme/pci.c /^static void nvme_free_queues(struct nvme_dev *dev, int lowest)$/;" f file: +nvme_free_queues tools/nvmedrv-v4.5.3/pci.c /^static void nvme_free_queues(struct nvme_dev *dev, int lowest)$/;" f file: +nvme_get_features tools/nvme/core.c /^int nvme_get_features(struct nvme_ctrl *dev, unsigned fid, unsigned nsid,$/;" f +nvme_get_features tools/nvmedrv-v4.5.3/core.c /^int nvme_get_features(struct nvme_ctrl *dev, unsigned fid, unsigned nsid,$/;" f +nvme_get_log_page tools/nvme/core.c /^int nvme_get_log_page(struct nvme_ctrl *dev, struct nvme_smart_log **log)$/;" f +nvme_get_log_page tools/nvmedrv-v4.5.3/core.c /^int nvme_get_log_page(struct nvme_ctrl *dev, struct nvme_smart_log **log)$/;" f +nvme_get_ns_from_disk tools/nvme/core.c /^static struct nvme_ns *nvme_get_ns_from_disk(struct gendisk *disk)$/;" f file: +nvme_get_ns_from_disk tools/nvmedrv-v4.5.3/core.c /^static struct nvme_ns *nvme_get_ns_from_disk(struct gendisk *disk)$/;" f file: +nvme_getgeo tools/nvme/core.c /^static int nvme_getgeo(struct block_device *bdev, struct hd_geometry *geo)$/;" f file: +nvme_getgeo tools/nvmedrv-v4.5.3/core.c /^static int nvme_getgeo(struct block_device *bdev, struct hd_geometry *geo)$/;" f file: +nvme_id_table tools/nvme/pci.c /^static const struct pci_device_id nvme_id_table[] = {$/;" v typeref:struct:pci_device_id file: +nvme_id_table tools/nvmedrv-v4.5.3/pci.c /^static const struct pci_device_id nvme_id_table[] = {$/;" v typeref:struct:pci_device_id file: +nvme_identify_ctrl tools/nvme/core.c /^int nvme_identify_ctrl(struct nvme_ctrl *dev, struct nvme_id_ctrl **id)$/;" f +nvme_identify_ctrl tools/nvmedrv-v4.5.3/core.c /^int nvme_identify_ctrl(struct nvme_ctrl *dev, struct nvme_id_ctrl **id)$/;" f +nvme_identify_ns tools/nvme/core.c /^int nvme_identify_ns(struct nvme_ctrl *dev, unsigned nsid,$/;" f +nvme_identify_ns tools/nvmedrv-v4.5.3/core.c /^int nvme_identify_ns(struct nvme_ctrl *dev, unsigned nsid,$/;" f +nvme_identify_ns_list tools/nvme/core.c /^static int nvme_identify_ns_list(struct nvme_ctrl *dev, unsigned nsid, __le32 *ns_list)$/;" f file: +nvme_identify_ns_list tools/nvmedrv-v4.5.3/core.c /^static int nvme_identify_ns_list(struct nvme_ctrl *dev, unsigned nsid, __le32 *ns_list)$/;" f file: +nvme_init tools/nvme/pci.c /^module_init(nvme_init);$/;" v +nvme_init tools/nvme/pci.c /^static int __init nvme_init(void)$/;" f file: +nvme_init tools/nvmedrv-v4.5.3/pci.c /^module_init(nvme_init);$/;" v +nvme_init tools/nvmedrv-v4.5.3/pci.c /^static int __init nvme_init(void)$/;" f file: +nvme_init_ctrl tools/nvme/core.c /^int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev,$/;" f +nvme_init_ctrl tools/nvmedrv-v4.5.3/core.c /^int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev,$/;" f +nvme_init_hctx tools/nvme/pci.c /^static int nvme_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,$/;" f file: +nvme_init_hctx tools/nvmedrv-v4.5.3/pci.c /^static int nvme_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,$/;" f file: +nvme_init_identify tools/nvme/core.c /^int nvme_init_identify(struct nvme_ctrl *ctrl)$/;" f +nvme_init_identify tools/nvmedrv-v4.5.3/core.c /^int nvme_init_identify(struct nvme_ctrl *ctrl)$/;" f +nvme_init_integrity tools/nvme/core.c /^static void nvme_init_integrity(struct nvme_ns *ns)$/;" f file: +nvme_init_integrity tools/nvmedrv-v4.5.3/core.c /^static void nvme_init_integrity(struct nvme_ns *ns)$/;" f file: +nvme_init_iod tools/nvme/pci.c /^static int nvme_init_iod(struct request *rq, struct nvme_dev *dev)$/;" f file: +nvme_init_iod tools/nvmedrv-v4.5.3/pci.c /^static int nvme_init_iod(struct request *rq, struct nvme_dev *dev)$/;" f file: +nvme_init_queue tools/nvme/pci.c /^static void nvme_init_queue(struct nvme_queue *nvmeq, u16 qid)$/;" f file: +nvme_init_queue tools/nvmedrv-v4.5.3/pci.c /^static void nvme_init_queue(struct nvme_queue *nvmeq, u16 qid)$/;" f file: +nvme_init_request tools/nvme/pci.c /^static int nvme_init_request(void *data, struct request *req,$/;" f file: +nvme_init_request tools/nvmedrv-v4.5.3/pci.c /^static int nvme_init_request(void *data, struct request *req,$/;" f file: +nvme_io_incapable tools/nvme/nvme.h /^static inline bool nvme_io_incapable(struct nvme_ctrl *ctrl)$/;" f +nvme_io_incapable tools/nvmedrv-v4.5.3/nvme.h /^static inline bool nvme_io_incapable(struct nvme_ctrl *ctrl)$/;" f +nvme_io_timeout tools/nvme/pci.c /^unsigned char nvme_io_timeout = 30;$/;" v +nvme_io_timeout tools/nvmedrv-v4.5.3/pci.c /^unsigned char nvme_io_timeout = 30;$/;" v +nvme_ioctl tools/nvme/core.c /^static int nvme_ioctl(struct block_device *bdev, fmode_t mode,$/;" f file: +nvme_ioctl tools/nvmedrv-v4.5.3/core.c /^static int nvme_ioctl(struct block_device *bdev, fmode_t mode,$/;" f file: +nvme_iod tools/nvme/pci.c /^struct nvme_iod {$/;" s file: +nvme_iod tools/nvmedrv-v4.5.3/pci.c /^struct nvme_iod {$/;" s file: +nvme_iod_alloc_size tools/nvme/pci.c /^static unsigned int nvme_iod_alloc_size(struct nvme_dev *dev,$/;" f file: +nvme_iod_alloc_size tools/nvmedrv-v4.5.3/pci.c /^static unsigned int nvme_iod_alloc_size(struct nvme_dev *dev,$/;" f file: +nvme_irq tools/nvme/pci.c /^static irqreturn_t nvme_irq(int irq, void *data)$/;" f file: +nvme_irq tools/nvmedrv-v4.5.3/pci.c /^static irqreturn_t nvme_irq(int irq, void *data)$/;" f file: +nvme_irq_check tools/nvme/pci.c /^static irqreturn_t nvme_irq_check(int irq, void *data)$/;" f file: +nvme_irq_check tools/nvmedrv-v4.5.3/pci.c /^static irqreturn_t nvme_irq_check(int irq, void *data)$/;" f file: +nvme_kill_queues tools/nvme/core.c /^void nvme_kill_queues(struct nvme_ctrl *ctrl)$/;" f +nvme_kill_queues tools/nvmedrv-v4.5.3/core.c /^void nvme_kill_queues(struct nvme_ctrl *ctrl)$/;" f +nvme_kthread tools/nvme/pci.c /^static int nvme_kthread(void *data)$/;" f file: +nvme_kthread tools/nvmedrv-v4.5.3/pci.c /^static int nvme_kthread(void *data)$/;" f file: +nvme_kthread_wait tools/nvme/pci.c /^static wait_queue_head_t nvme_kthread_wait;$/;" v file: +nvme_kthread_wait tools/nvmedrv-v4.5.3/pci.c /^static wait_queue_head_t nvme_kthread_wait;$/;" v file: +nvme_major tools/nvme/core.c /^static int nvme_major;$/;" v file: +nvme_major tools/nvmedrv-v4.5.3/core.c /^static int nvme_major;$/;" v file: +nvme_map_cmb tools/nvme/pci.c /^static void __iomem *nvme_map_cmb(struct nvme_dev *dev)$/;" f file: +nvme_map_cmb tools/nvmedrv-v4.5.3/pci.c /^static void __iomem *nvme_map_cmb(struct nvme_dev *dev)$/;" f file: +nvme_map_data tools/nvme/pci.c /^static int nvme_map_data(struct nvme_dev *dev, struct request *req,$/;" f file: +nvme_map_data tools/nvmedrv-v4.5.3/pci.c /^static int nvme_map_data(struct nvme_dev *dev, struct request *req,$/;" f file: +nvme_mq_admin_ops tools/nvme/pci.c /^static struct blk_mq_ops nvme_mq_admin_ops = {$/;" v typeref:struct:blk_mq_ops file: +nvme_mq_admin_ops tools/nvmedrv-v4.5.3/pci.c /^static struct blk_mq_ops nvme_mq_admin_ops = {$/;" v typeref:struct:blk_mq_ops file: +nvme_mq_ops tools/nvme/pci.c /^static struct blk_mq_ops nvme_mq_ops = {$/;" v typeref:struct:blk_mq_ops file: +nvme_mq_ops tools/nvmedrv-v4.5.3/pci.c /^static struct blk_mq_ops nvme_mq_ops = {$/;" v typeref:struct:blk_mq_ops file: +nvme_npages tools/nvme/pci.c /^static int nvme_npages(unsigned size, struct nvme_dev *dev)$/;" f file: +nvme_npages tools/nvmedrv-v4.5.3/pci.c /^static int nvme_npages(unsigned size, struct nvme_dev *dev)$/;" f file: +nvme_ns tools/nvme/nvme.h /^struct nvme_ns {$/;" s +nvme_ns tools/nvmedrv-v4.5.3/nvme.h /^struct nvme_ns {$/;" s +nvme_ns_attr_group tools/nvme/core.c /^static const struct attribute_group nvme_ns_attr_group = {$/;" v typeref:struct:attribute_group file: +nvme_ns_attr_group tools/nvmedrv-v4.5.3/core.c /^static const struct attribute_group nvme_ns_attr_group = {$/;" v typeref:struct:attribute_group file: +nvme_ns_attrs tools/nvme/core.c /^static struct attribute *nvme_ns_attrs[] = {$/;" v typeref:struct:attribute file: +nvme_ns_attrs tools/nvmedrv-v4.5.3/core.c /^static struct attribute *nvme_ns_attrs[] = {$/;" v typeref:struct:attribute file: +nvme_ns_remove tools/nvme/core.c /^static void nvme_ns_remove(struct nvme_ns *ns)$/;" f file: +nvme_ns_remove tools/nvmedrv-v4.5.3/core.c /^static void nvme_ns_remove(struct nvme_ns *ns)$/;" f file: +nvme_nvm_addr_format tools/nvme/lightnvm.c /^struct nvme_nvm_addr_format {$/;" s file: +nvme_nvm_addr_format tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_addr_format {$/;" s file: +nvme_nvm_admin_get_bb_tbl tools/nvme/lightnvm.c /^ nvme_nvm_admin_get_bb_tbl = 0xf2,$/;" e enum:nvme_nvm_admin_opcode file: +nvme_nvm_admin_get_bb_tbl tools/nvmedrv-v4.5.3/lightnvm.c /^ nvme_nvm_admin_get_bb_tbl = 0xf2,$/;" e enum:nvme_nvm_admin_opcode file: +nvme_nvm_admin_get_l2p_tbl tools/nvme/lightnvm.c /^ nvme_nvm_admin_get_l2p_tbl = 0xea,$/;" e enum:nvme_nvm_admin_opcode file: +nvme_nvm_admin_get_l2p_tbl tools/nvmedrv-v4.5.3/lightnvm.c /^ nvme_nvm_admin_get_l2p_tbl = 0xea,$/;" e enum:nvme_nvm_admin_opcode file: +nvme_nvm_admin_identity tools/nvme/lightnvm.c /^ nvme_nvm_admin_identity = 0xe2,$/;" e enum:nvme_nvm_admin_opcode file: +nvme_nvm_admin_identity tools/nvmedrv-v4.5.3/lightnvm.c /^ nvme_nvm_admin_identity = 0xe2,$/;" e enum:nvme_nvm_admin_opcode file: +nvme_nvm_admin_opcode tools/nvme/lightnvm.c /^enum nvme_nvm_admin_opcode {$/;" g file: +nvme_nvm_admin_opcode tools/nvmedrv-v4.5.3/lightnvm.c /^enum nvme_nvm_admin_opcode {$/;" g file: +nvme_nvm_admin_set_bb_tbl tools/nvme/lightnvm.c /^ nvme_nvm_admin_set_bb_tbl = 0xf1,$/;" e enum:nvme_nvm_admin_opcode file: +nvme_nvm_admin_set_bb_tbl tools/nvmedrv-v4.5.3/lightnvm.c /^ nvme_nvm_admin_set_bb_tbl = 0xf1,$/;" e enum:nvme_nvm_admin_opcode file: +nvme_nvm_bb_tbl tools/nvme/lightnvm.c /^struct nvme_nvm_bb_tbl {$/;" s file: +nvme_nvm_bb_tbl tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_bb_tbl {$/;" s file: +nvme_nvm_command tools/nvme/lightnvm.c /^struct nvme_nvm_command {$/;" s file: +nvme_nvm_command tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_command {$/;" s file: +nvme_nvm_create_dma_pool tools/nvme/lightnvm.c /^static void *nvme_nvm_create_dma_pool(struct nvm_dev *nvmdev, char *name)$/;" f file: +nvme_nvm_create_dma_pool tools/nvmedrv-v4.5.3/lightnvm.c /^static void *nvme_nvm_create_dma_pool(struct nvm_dev *nvmdev, char *name)$/;" f file: +nvme_nvm_destroy_dma_pool tools/nvme/lightnvm.c /^static void nvme_nvm_destroy_dma_pool(void *pool)$/;" f file: +nvme_nvm_destroy_dma_pool tools/nvmedrv-v4.5.3/lightnvm.c /^static void nvme_nvm_destroy_dma_pool(void *pool)$/;" f file: +nvme_nvm_dev_dma_alloc tools/nvme/lightnvm.c /^static void *nvme_nvm_dev_dma_alloc(struct nvm_dev *dev, void *pool,$/;" f file: +nvme_nvm_dev_dma_alloc tools/nvmedrv-v4.5.3/lightnvm.c /^static void *nvme_nvm_dev_dma_alloc(struct nvm_dev *dev, void *pool,$/;" f file: +nvme_nvm_dev_dma_free tools/nvme/lightnvm.c /^static void nvme_nvm_dev_dma_free(void *pool, void *ppa_list,$/;" f file: +nvme_nvm_dev_dma_free tools/nvmedrv-v4.5.3/lightnvm.c /^static void nvme_nvm_dev_dma_free(void *pool, void *ppa_list,$/;" f file: +nvme_nvm_dev_ops tools/nvme/lightnvm.c /^static struct nvm_dev_ops nvme_nvm_dev_ops = {$/;" v typeref:struct:nvm_dev_ops file: +nvme_nvm_dev_ops tools/nvmedrv-v4.5.3/lightnvm.c /^static struct nvm_dev_ops nvme_nvm_dev_ops = {$/;" v typeref:struct:nvm_dev_ops file: +nvme_nvm_end_io tools/nvme/lightnvm.c /^static void nvme_nvm_end_io(struct request *rq, int error)$/;" f file: +nvme_nvm_end_io tools/nvmedrv-v4.5.3/lightnvm.c /^static void nvme_nvm_end_io(struct request *rq, int error)$/;" f file: +nvme_nvm_erase_blk tools/nvme/lightnvm.c /^struct nvme_nvm_erase_blk {$/;" s file: +nvme_nvm_erase_blk tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_erase_blk {$/;" s file: +nvme_nvm_erase_block tools/nvme/lightnvm.c /^static int nvme_nvm_erase_block(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f file: +nvme_nvm_erase_block tools/nvmedrv-v4.5.3/lightnvm.c /^static int nvme_nvm_erase_block(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f file: +nvme_nvm_get_bb_tbl tools/nvme/lightnvm.c /^static int nvme_nvm_get_bb_tbl(struct nvm_dev *nvmdev, struct ppa_addr ppa,$/;" f file: +nvme_nvm_get_bb_tbl tools/nvmedrv-v4.5.3/lightnvm.c /^static int nvme_nvm_get_bb_tbl(struct nvm_dev *nvmdev, struct ppa_addr ppa,$/;" f file: +nvme_nvm_get_l2p_tbl tools/nvme/lightnvm.c /^static int nvme_nvm_get_l2p_tbl(struct nvm_dev *nvmdev, u64 slba, u32 nlb,$/;" f file: +nvme_nvm_get_l2p_tbl tools/nvmedrv-v4.5.3/lightnvm.c /^static int nvme_nvm_get_l2p_tbl(struct nvm_dev *nvmdev, u64 slba, u32 nlb,$/;" f file: +nvme_nvm_getbbtbl tools/nvme/lightnvm.c /^struct nvme_nvm_getbbtbl {$/;" s file: +nvme_nvm_getbbtbl tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_getbbtbl {$/;" s file: +nvme_nvm_hb_rw tools/nvme/lightnvm.c /^struct nvme_nvm_hb_rw {$/;" s file: +nvme_nvm_hb_rw tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_hb_rw {$/;" s file: +nvme_nvm_id tools/nvme/lightnvm.c /^struct nvme_nvm_id {$/;" s file: +nvme_nvm_id tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_id {$/;" s file: +nvme_nvm_id_group tools/nvme/lightnvm.c /^struct nvme_nvm_id_group {$/;" s file: +nvme_nvm_id_group tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_id_group {$/;" s file: +nvme_nvm_identity tools/nvme/lightnvm.c /^static int nvme_nvm_identity(struct nvm_dev *nvmdev, struct nvm_id *nvm_id)$/;" f file: +nvme_nvm_identity tools/nvme/lightnvm.c /^struct nvme_nvm_identity {$/;" s file: +nvme_nvm_identity tools/nvmedrv-v4.5.3/lightnvm.c /^static int nvme_nvm_identity(struct nvm_dev *nvmdev, struct nvm_id *nvm_id)$/;" f file: +nvme_nvm_identity tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_identity {$/;" s file: +nvme_nvm_l2ptbl tools/nvme/lightnvm.c /^struct nvme_nvm_l2ptbl {$/;" s file: +nvme_nvm_l2ptbl tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_l2ptbl {$/;" s file: +nvme_nvm_lp_mlc tools/nvme/lightnvm.c /^struct nvme_nvm_lp_mlc {$/;" s file: +nvme_nvm_lp_mlc tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_lp_mlc {$/;" s file: +nvme_nvm_lp_tbl tools/nvme/lightnvm.c /^struct nvme_nvm_lp_tbl {$/;" s file: +nvme_nvm_lp_tbl tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_lp_tbl {$/;" s file: +nvme_nvm_ns_supported tools/nvme/lightnvm.c /^int nvme_nvm_ns_supported(struct nvme_ns *ns, struct nvme_id_ns *id)$/;" f +nvme_nvm_ns_supported tools/nvme/nvme.h /^static inline int nvme_nvm_ns_supported(struct nvme_ns *ns, struct nvme_id_ns *id)$/;" f +nvme_nvm_ns_supported tools/nvmedrv-v4.5.3/lightnvm.c /^int nvme_nvm_ns_supported(struct nvme_ns *ns, struct nvme_id_ns *id)$/;" f +nvme_nvm_ns_supported tools/nvmedrv-v4.5.3/nvme.h /^static inline int nvme_nvm_ns_supported(struct nvme_ns *ns, struct nvme_id_ns *id)$/;" f +nvme_nvm_ph_rw tools/nvme/lightnvm.c /^struct nvme_nvm_ph_rw {$/;" s file: +nvme_nvm_ph_rw tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_ph_rw {$/;" s file: +nvme_nvm_register tools/nvme/lightnvm.c /^int nvme_nvm_register(struct request_queue *q, char *disk_name)$/;" f +nvme_nvm_register tools/nvme/nvme.h /^static inline int nvme_nvm_register(struct request_queue *q, char *disk_name)$/;" f +nvme_nvm_register tools/nvmedrv-v4.5.3/lightnvm.c /^int nvme_nvm_register(struct request_queue *q, char *disk_name)$/;" f +nvme_nvm_register tools/nvmedrv-v4.5.3/nvme.h /^static inline int nvme_nvm_register(struct request_queue *q, char *disk_name)$/;" f +nvme_nvm_rqtocmd tools/nvme/lightnvm.c /^static inline void nvme_nvm_rqtocmd(struct request *rq, struct nvm_rq *rqd,$/;" f file: +nvme_nvm_rqtocmd tools/nvmedrv-v4.5.3/lightnvm.c /^static inline void nvme_nvm_rqtocmd(struct request *rq, struct nvm_rq *rqd,$/;" f file: +nvme_nvm_set_bb_tbl tools/nvme/lightnvm.c /^static int nvme_nvm_set_bb_tbl(struct nvm_dev *nvmdev, struct nvm_rq *rqd,$/;" f file: +nvme_nvm_set_bb_tbl tools/nvmedrv-v4.5.3/lightnvm.c /^static int nvme_nvm_set_bb_tbl(struct nvm_dev *nvmdev, struct nvm_rq *rqd,$/;" f file: +nvme_nvm_setbbtbl tools/nvme/lightnvm.c /^struct nvme_nvm_setbbtbl {$/;" s file: +nvme_nvm_setbbtbl tools/nvmedrv-v4.5.3/lightnvm.c /^struct nvme_nvm_setbbtbl {$/;" s file: +nvme_nvm_submit_io tools/nvme/lightnvm.c /^static int nvme_nvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f file: +nvme_nvm_submit_io tools/nvmedrv-v4.5.3/lightnvm.c /^static int nvme_nvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd)$/;" f file: +nvme_nvm_unregister tools/nvme/lightnvm.c /^void nvme_nvm_unregister(struct request_queue *q, char *disk_name)$/;" f +nvme_nvm_unregister tools/nvme/nvme.h /^static inline void nvme_nvm_unregister(struct request_queue *q, char *disk_name) {};$/;" f +nvme_nvm_unregister tools/nvmedrv-v4.5.3/lightnvm.c /^void nvme_nvm_unregister(struct request_queue *q, char *disk_name)$/;" f +nvme_nvm_unregister tools/nvmedrv-v4.5.3/nvme.h /^static inline void nvme_nvm_unregister(struct request_queue *q, char *disk_name) {};$/;" f +nvme_open tools/nvme/core.c /^static int nvme_open(struct block_device *bdev, fmode_t mode)$/;" f file: +nvme_open tools/nvmedrv-v4.5.3/core.c /^static int nvme_open(struct block_device *bdev, fmode_t mode)$/;" f file: +nvme_pci_ctrl_ops tools/nvme/pci.c /^static const struct nvme_ctrl_ops nvme_pci_ctrl_ops = {$/;" v typeref:struct:nvme_ctrl_ops file: +nvme_pci_ctrl_ops tools/nvmedrv-v4.5.3/pci.c /^static const struct nvme_ctrl_ops nvme_pci_ctrl_ops = {$/;" v typeref:struct:nvme_ctrl_ops file: +nvme_pci_disable tools/nvme/pci.c /^static void nvme_pci_disable(struct nvme_dev *dev)$/;" f file: +nvme_pci_disable tools/nvmedrv-v4.5.3/pci.c /^static void nvme_pci_disable(struct nvme_dev *dev)$/;" f file: +nvme_pci_enable tools/nvme/pci.c /^static int nvme_pci_enable(struct nvme_dev *dev)$/;" f file: +nvme_pci_enable tools/nvmedrv-v4.5.3/pci.c /^static int nvme_pci_enable(struct nvme_dev *dev)$/;" f file: +nvme_pci_free_ctrl tools/nvme/pci.c /^static void nvme_pci_free_ctrl(struct nvme_ctrl *ctrl)$/;" f file: +nvme_pci_free_ctrl tools/nvmedrv-v4.5.3/pci.c /^static void nvme_pci_free_ctrl(struct nvme_ctrl *ctrl)$/;" f file: +nvme_pci_io_incapable tools/nvme/pci.c /^static bool nvme_pci_io_incapable(struct nvme_ctrl *ctrl)$/;" f file: +nvme_pci_io_incapable tools/nvmedrv-v4.5.3/pci.c /^static bool nvme_pci_io_incapable(struct nvme_ctrl *ctrl)$/;" f file: +nvme_pci_reg_read32 tools/nvme/pci.c /^static int nvme_pci_reg_read32(struct nvme_ctrl *ctrl, u32 off, u32 *val)$/;" f file: +nvme_pci_reg_read32 tools/nvmedrv-v4.5.3/pci.c /^static int nvme_pci_reg_read32(struct nvme_ctrl *ctrl, u32 off, u32 *val)$/;" f file: +nvme_pci_reg_read64 tools/nvme/pci.c /^static int nvme_pci_reg_read64(struct nvme_ctrl *ctrl, u32 off, u64 *val)$/;" f file: +nvme_pci_reg_read64 tools/nvmedrv-v4.5.3/pci.c /^static int nvme_pci_reg_read64(struct nvme_ctrl *ctrl, u32 off, u64 *val)$/;" f file: +nvme_pci_reg_write32 tools/nvme/pci.c /^static int nvme_pci_reg_write32(struct nvme_ctrl *ctrl, u32 off, u32 val)$/;" f file: +nvme_pci_reg_write32 tools/nvmedrv-v4.5.3/pci.c /^static int nvme_pci_reg_write32(struct nvme_ctrl *ctrl, u32 off, u32 val)$/;" f file: +nvme_pci_reset_ctrl tools/nvme/pci.c /^static int nvme_pci_reset_ctrl(struct nvme_ctrl *ctrl)$/;" f file: +nvme_pci_reset_ctrl tools/nvmedrv-v4.5.3/pci.c /^static int nvme_pci_reset_ctrl(struct nvme_ctrl *ctrl)$/;" f file: +nvme_poll tools/nvme/pci.c /^static int nvme_poll(struct blk_mq_hw_ctx *hctx, unsigned int tag)$/;" f file: +nvme_poll tools/nvmedrv-v4.5.3/pci.c /^static int nvme_poll(struct blk_mq_hw_ctx *hctx, unsigned int tag)$/;" f file: +nvme_pr_clear tools/nvme/core.c /^static int nvme_pr_clear(struct block_device *bdev, u64 key)$/;" f file: +nvme_pr_clear tools/nvmedrv-v4.5.3/core.c /^static int nvme_pr_clear(struct block_device *bdev, u64 key)$/;" f file: +nvme_pr_command tools/nvme/core.c /^static int nvme_pr_command(struct block_device *bdev, u32 cdw10,$/;" f file: +nvme_pr_command tools/nvmedrv-v4.5.3/core.c /^static int nvme_pr_command(struct block_device *bdev, u32 cdw10,$/;" f file: +nvme_pr_ops tools/nvme/core.c /^static const struct pr_ops nvme_pr_ops = {$/;" v typeref:struct:pr_ops file: +nvme_pr_ops tools/nvmedrv-v4.5.3/core.c /^static const struct pr_ops nvme_pr_ops = {$/;" v typeref:struct:pr_ops file: +nvme_pr_preempt tools/nvme/core.c /^static int nvme_pr_preempt(struct block_device *bdev, u64 old, u64 new,$/;" f file: +nvme_pr_preempt tools/nvmedrv-v4.5.3/core.c /^static int nvme_pr_preempt(struct block_device *bdev, u64 old, u64 new,$/;" f file: +nvme_pr_register tools/nvme/core.c /^static int nvme_pr_register(struct block_device *bdev, u64 old,$/;" f file: +nvme_pr_register tools/nvmedrv-v4.5.3/core.c /^static int nvme_pr_register(struct block_device *bdev, u64 old,$/;" f file: +nvme_pr_release tools/nvme/core.c /^static int nvme_pr_release(struct block_device *bdev, u64 key, enum pr_type type)$/;" f file: +nvme_pr_release tools/nvmedrv-v4.5.3/core.c /^static int nvme_pr_release(struct block_device *bdev, u64 key, enum pr_type type)$/;" f file: +nvme_pr_reserve tools/nvme/core.c /^static int nvme_pr_reserve(struct block_device *bdev, u64 key,$/;" f file: +nvme_pr_reserve tools/nvmedrv-v4.5.3/core.c /^static int nvme_pr_reserve(struct block_device *bdev, u64 key,$/;" f file: +nvme_pr_type tools/nvme/core.c /^static char nvme_pr_type(enum pr_type type)$/;" f file: +nvme_pr_type tools/nvmedrv-v4.5.3/core.c /^static char nvme_pr_type(enum pr_type type)$/;" f file: +nvme_probe tools/nvme/pci.c /^static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id)$/;" f file: +nvme_probe tools/nvmedrv-v4.5.3/pci.c /^static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id)$/;" f file: +nvme_process_cq tools/nvme/pci.c /^static void nvme_process_cq(struct nvme_queue *nvmeq)$/;" f file: +nvme_process_cq tools/nvmedrv-v4.5.3/pci.c /^static void nvme_process_cq(struct nvme_queue *nvmeq)$/;" f file: +nvme_put_ctrl tools/nvme/core.c /^void nvme_put_ctrl(struct nvme_ctrl *ctrl)$/;" f +nvme_put_ctrl tools/nvmedrv-v4.5.3/core.c /^void nvme_put_ctrl(struct nvme_ctrl *ctrl)$/;" f +nvme_put_ns tools/nvme/core.c /^static void nvme_put_ns(struct nvme_ns *ns)$/;" f file: +nvme_put_ns tools/nvmedrv-v4.5.3/core.c /^static void nvme_put_ns(struct nvme_ns *ns)$/;" f file: +nvme_queue tools/nvme/pci.c /^struct nvme_queue {$/;" s file: +nvme_queue tools/nvmedrv-v4.5.3/pci.c /^struct nvme_queue {$/;" s file: +nvme_queue_rq tools/nvme/pci.c /^static int nvme_queue_rq(struct blk_mq_hw_ctx *hctx,$/;" f file: +nvme_queue_rq tools/nvmedrv-v4.5.3/pci.c /^static int nvme_queue_rq(struct blk_mq_hw_ctx *hctx,$/;" f file: +nvme_queue_scan tools/nvme/pci.c /^static void nvme_queue_scan(struct nvme_dev *dev)$/;" f file: +nvme_queue_scan tools/nvmedrv-v4.5.3/pci.c /^static void nvme_queue_scan(struct nvme_dev *dev)$/;" f file: +nvme_quirks tools/nvme/nvme.h /^enum nvme_quirks {$/;" g +nvme_quirks tools/nvmedrv-v4.5.3/nvme.h /^enum nvme_quirks {$/;" g +nvme_release tools/nvme/core.c /^static void nvme_release(struct gendisk *disk, fmode_t mode)$/;" f file: +nvme_release tools/nvmedrv-v4.5.3/core.c /^static void nvme_release(struct gendisk *disk, fmode_t mode)$/;" f file: +nvme_release_cmb tools/nvme/pci.c /^static inline void nvme_release_cmb(struct nvme_dev *dev)$/;" f file: +nvme_release_cmb tools/nvmedrv-v4.5.3/pci.c /^static inline void nvme_release_cmb(struct nvme_dev *dev)$/;" f file: +nvme_release_instance tools/nvme/core.c /^static void nvme_release_instance(struct nvme_ctrl *ctrl)$/;" f file: +nvme_release_instance tools/nvmedrv-v4.5.3/core.c /^static void nvme_release_instance(struct nvme_ctrl *ctrl)$/;" f file: +nvme_release_prp_pools tools/nvme/pci.c /^static void nvme_release_prp_pools(struct nvme_dev *dev)$/;" f file: +nvme_release_prp_pools tools/nvmedrv-v4.5.3/pci.c /^static void nvme_release_prp_pools(struct nvme_dev *dev)$/;" f file: +nvme_remove tools/nvme/pci.c /^static void nvme_remove(struct pci_dev *pdev)$/;" f file: +nvme_remove tools/nvmedrv-v4.5.3/pci.c /^static void nvme_remove(struct pci_dev *pdev)$/;" f file: +nvme_remove_dead_ctrl tools/nvme/pci.c /^static void nvme_remove_dead_ctrl(struct nvme_dev *dev, int status)$/;" f file: +nvme_remove_dead_ctrl tools/nvmedrv-v4.5.3/pci.c /^static void nvme_remove_dead_ctrl(struct nvme_dev *dev, int status)$/;" f file: +nvme_remove_dead_ctrl_work tools/nvme/pci.c /^static void nvme_remove_dead_ctrl_work(struct work_struct *work)$/;" f file: +nvme_remove_dead_ctrl_work tools/nvmedrv-v4.5.3/pci.c /^static void nvme_remove_dead_ctrl_work(struct work_struct *work)$/;" f file: +nvme_remove_namespaces tools/nvme/core.c /^void nvme_remove_namespaces(struct nvme_ctrl *ctrl)$/;" f +nvme_remove_namespaces tools/nvmedrv-v4.5.3/core.c /^void nvme_remove_namespaces(struct nvme_ctrl *ctrl)$/;" f +nvme_req_needs_retry tools/nvme/nvme.h /^static inline bool nvme_req_needs_retry(struct request *req, u16 status)$/;" f +nvme_req_needs_retry tools/nvmedrv-v4.5.3/nvme.h /^static inline bool nvme_req_needs_retry(struct request *req, u16 status)$/;" f +nvme_requeue_req tools/nvme/core.c /^void nvme_requeue_req(struct request *req)$/;" f +nvme_requeue_req tools/nvmedrv-v4.5.3/core.c /^void nvme_requeue_req(struct request *req)$/;" f +nvme_reset tools/nvme/pci.c /^static int nvme_reset(struct nvme_dev *dev)$/;" f file: +nvme_reset tools/nvmedrv-v4.5.3/pci.c /^static int nvme_reset(struct nvme_dev *dev)$/;" f file: +nvme_reset_notify tools/nvme/pci.c /^static void nvme_reset_notify(struct pci_dev *pdev, bool prepare)$/;" f file: +nvme_reset_notify tools/nvmedrv-v4.5.3/pci.c /^static void nvme_reset_notify(struct pci_dev *pdev, bool prepare)$/;" f file: +nvme_reset_subsystem tools/nvme/nvme.h /^static inline int nvme_reset_subsystem(struct nvme_ctrl *ctrl)$/;" f +nvme_reset_subsystem tools/nvmedrv-v4.5.3/nvme.h /^static inline int nvme_reset_subsystem(struct nvme_ctrl *ctrl)$/;" f +nvme_reset_work tools/nvme/pci.c /^static void nvme_reset_work(struct work_struct *work)$/;" f file: +nvme_reset_work tools/nvmedrv-v4.5.3/pci.c /^static void nvme_reset_work(struct work_struct *work)$/;" f file: +nvme_resume tools/nvme/pci.c /^static int nvme_resume(struct device *dev)$/;" f file: +nvme_resume tools/nvmedrv-v4.5.3/pci.c /^static int nvme_resume(struct device *dev)$/;" f file: +nvme_revalidate_disk tools/nvme/core.c /^static int nvme_revalidate_disk(struct gendisk *disk)$/;" f file: +nvme_revalidate_disk tools/nvmedrv-v4.5.3/core.c /^static int nvme_revalidate_disk(struct gendisk *disk)$/;" f file: +nvme_scan_namespaces tools/nvme/core.c /^void nvme_scan_namespaces(struct nvme_ctrl *ctrl)$/;" f +nvme_scan_namespaces tools/nvmedrv-v4.5.3/core.c /^void nvme_scan_namespaces(struct nvme_ctrl *ctrl)$/;" f +nvme_scan_ns_list tools/nvme/core.c /^static int nvme_scan_ns_list(struct nvme_ctrl *ctrl, unsigned nn)$/;" f file: +nvme_scan_ns_list tools/nvmedrv-v4.5.3/core.c /^static int nvme_scan_ns_list(struct nvme_ctrl *ctrl, unsigned nn)$/;" f file: +nvme_scsi_translate tools/nvme/scsi.c /^static int nvme_scsi_translate(struct nvme_ns *ns, struct sg_io_hdr *hdr)$/;" f file: +nvme_scsi_translate tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_scsi_translate(struct nvme_ns *ns, struct sg_io_hdr *hdr)$/;" f file: +nvme_set_features tools/nvme/core.c /^int nvme_set_features(struct nvme_ctrl *dev, unsigned fid, unsigned dword11,$/;" f +nvme_set_features tools/nvmedrv-v4.5.3/core.c /^int nvme_set_features(struct nvme_ctrl *dev, unsigned fid, unsigned dword11,$/;" f +nvme_set_instance tools/nvme/core.c /^static int nvme_set_instance(struct nvme_ctrl *ctrl)$/;" f file: +nvme_set_instance tools/nvmedrv-v4.5.3/core.c /^static int nvme_set_instance(struct nvme_ctrl *ctrl)$/;" f file: +nvme_set_irq_hints tools/nvme/pci.c /^static void nvme_set_irq_hints(struct nvme_dev *dev)$/;" f file: +nvme_set_irq_hints tools/nvmedrv-v4.5.3/pci.c /^static void nvme_set_irq_hints(struct nvme_dev *dev)$/;" f file: +nvme_set_queue_count tools/nvme/core.c /^int nvme_set_queue_count(struct nvme_ctrl *ctrl, int *count)$/;" f +nvme_set_queue_count tools/nvmedrv-v4.5.3/core.c /^int nvme_set_queue_count(struct nvme_ctrl *ctrl, int *count)$/;" f +nvme_set_queue_limits tools/nvme/core.c /^static void nvme_set_queue_limits(struct nvme_ctrl *ctrl,$/;" f file: +nvme_set_queue_limits tools/nvmedrv-v4.5.3/core.c /^static void nvme_set_queue_limits(struct nvme_ctrl *ctrl,$/;" f file: +nvme_setup_discard tools/nvme/pci.c /^static int nvme_setup_discard(struct nvme_queue *nvmeq, struct nvme_ns *ns,$/;" f file: +nvme_setup_discard tools/nvmedrv-v4.5.3/pci.c /^static int nvme_setup_discard(struct nvme_queue *nvmeq, struct nvme_ns *ns,$/;" f file: +nvme_setup_flush tools/nvme/nvme.h /^static inline void nvme_setup_flush(struct nvme_ns *ns,$/;" f +nvme_setup_flush tools/nvmedrv-v4.5.3/nvme.h /^static inline void nvme_setup_flush(struct nvme_ns *ns,$/;" f +nvme_setup_io_queues tools/nvme/pci.c /^static int nvme_setup_io_queues(struct nvme_dev *dev)$/;" f file: +nvme_setup_io_queues tools/nvmedrv-v4.5.3/pci.c /^static int nvme_setup_io_queues(struct nvme_dev *dev)$/;" f file: +nvme_setup_prp_pools tools/nvme/pci.c /^static int nvme_setup_prp_pools(struct nvme_dev *dev)$/;" f file: +nvme_setup_prp_pools tools/nvmedrv-v4.5.3/pci.c /^static int nvme_setup_prp_pools(struct nvme_dev *dev)$/;" f file: +nvme_setup_prps tools/nvme/pci.c /^static bool nvme_setup_prps(struct nvme_dev *dev, struct request *req,$/;" f file: +nvme_setup_prps tools/nvmedrv-v4.5.3/pci.c /^static bool nvme_setup_prps(struct nvme_dev *dev, struct request *req,$/;" f file: +nvme_setup_rw tools/nvme/nvme.h /^static inline void nvme_setup_rw(struct nvme_ns *ns, struct request *req,$/;" f +nvme_setup_rw tools/nvmedrv-v4.5.3/nvme.h /^static inline void nvme_setup_rw(struct nvme_ns *ns, struct request *req,$/;" f +nvme_sg_get_version_num tools/nvme/scsi.c /^int nvme_sg_get_version_num(int __user *ip)$/;" f +nvme_sg_get_version_num tools/nvmedrv-v4.5.3/scsi.c /^int nvme_sg_get_version_num(int __user *ip)$/;" f +nvme_sg_io tools/nvme/scsi.c /^int nvme_sg_io(struct nvme_ns *ns, struct sg_io_hdr __user *u_hdr)$/;" f +nvme_sg_io tools/nvmedrv-v4.5.3/scsi.c /^int nvme_sg_io(struct nvme_ns *ns, struct sg_io_hdr __user *u_hdr)$/;" f +nvme_show_function tools/nvme/core.c 1153;" d file: +nvme_show_function tools/nvmedrv-v4.5.3/core.c 1153;" d file: +nvme_shutdown tools/nvme/pci.c /^static void nvme_shutdown(struct pci_dev *pdev)$/;" f file: +nvme_shutdown tools/nvmedrv-v4.5.3/pci.c /^static void nvme_shutdown(struct pci_dev *pdev)$/;" f file: +nvme_shutdown_ctrl tools/nvme/core.c /^int nvme_shutdown_ctrl(struct nvme_ctrl *ctrl)$/;" f +nvme_shutdown_ctrl tools/nvmedrv-v4.5.3/core.c /^int nvme_shutdown_ctrl(struct nvme_ctrl *ctrl)$/;" f +nvme_slot_reset tools/nvme/pci.c /^static pci_ers_result_t nvme_slot_reset(struct pci_dev *pdev)$/;" f file: +nvme_slot_reset tools/nvmedrv-v4.5.3/pci.c /^static pci_ers_result_t nvme_slot_reset(struct pci_dev *pdev)$/;" f file: +nvme_start_queues tools/nvme/core.c /^void nvme_start_queues(struct nvme_ctrl *ctrl)$/;" f +nvme_start_queues tools/nvmedrv-v4.5.3/core.c /^void nvme_start_queues(struct nvme_ctrl *ctrl)$/;" f +nvme_stop_queues tools/nvme/core.c /^void nvme_stop_queues(struct nvme_ctrl *ctrl)$/;" f +nvme_stop_queues tools/nvmedrv-v4.5.3/core.c /^void nvme_stop_queues(struct nvme_ctrl *ctrl)$/;" f +nvme_submit_async_event tools/nvme/pci.c /^static void nvme_submit_async_event(struct nvme_dev *dev)$/;" f file: +nvme_submit_async_event tools/nvmedrv-v4.5.3/pci.c /^static void nvme_submit_async_event(struct nvme_dev *dev)$/;" f file: +nvme_submit_io tools/nvme/core.c /^static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio)$/;" f file: +nvme_submit_io tools/nvmedrv-v4.5.3/core.c /^static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio)$/;" f file: +nvme_submit_sync_cmd tools/nvme/core.c /^int nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd,$/;" f +nvme_submit_sync_cmd tools/nvmedrv-v4.5.3/core.c /^int nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd,$/;" f +nvme_submit_user_cmd tools/nvme/core.c /^int nvme_submit_user_cmd(struct request_queue *q, struct nvme_command *cmd,$/;" f +nvme_submit_user_cmd tools/nvmedrv-v4.5.3/core.c /^int nvme_submit_user_cmd(struct request_queue *q, struct nvme_command *cmd,$/;" f +nvme_suspend tools/nvme/pci.c /^static int nvme_suspend(struct device *dev)$/;" f file: +nvme_suspend tools/nvmedrv-v4.5.3/pci.c /^static int nvme_suspend(struct device *dev)$/;" f file: +nvme_suspend_queue tools/nvme/pci.c /^static int nvme_suspend_queue(struct nvme_queue *nvmeq)$/;" f file: +nvme_suspend_queue tools/nvmedrv-v4.5.3/pci.c /^static int nvme_suspend_queue(struct nvme_queue *nvmeq)$/;" f file: +nvme_sysfs_reset tools/nvme/core.c /^static ssize_t nvme_sysfs_reset(struct device *dev,$/;" f file: +nvme_sysfs_reset tools/nvmedrv-v4.5.3/core.c /^static ssize_t nvme_sysfs_reset(struct device *dev,$/;" f file: +nvme_thread tools/nvme/pci.c /^static struct task_struct *nvme_thread;$/;" v typeref:struct:task_struct file: +nvme_thread tools/nvmedrv-v4.5.3/pci.c /^static struct task_struct *nvme_thread;$/;" v typeref:struct:task_struct file: +nvme_timeout tools/nvme/pci.c /^static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved)$/;" f file: +nvme_timeout tools/nvmedrv-v4.5.3/pci.c /^static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved)$/;" f file: +nvme_trans_bdev_char_page tools/nvme/scsi.c /^static int nvme_trans_bdev_char_page(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_bdev_char_page tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_bdev_char_page(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_bdev_limits_page tools/nvme/scsi.c /^static int nvme_trans_bdev_limits_page(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_bdev_limits_page tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_bdev_limits_page(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_completion tools/nvme/scsi.c /^static int nvme_trans_completion(struct sg_io_hdr *hdr, u8 status, u8 sense_key,$/;" f file: +nvme_trans_completion tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_completion(struct sg_io_hdr *hdr, u8 status, u8 sense_key,$/;" f file: +nvme_trans_copy_from_user tools/nvme/scsi.c /^static int nvme_trans_copy_from_user(struct sg_io_hdr *hdr, void *to,$/;" f file: +nvme_trans_copy_from_user tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_copy_from_user(struct sg_io_hdr *hdr, void *to,$/;" f file: +nvme_trans_copy_to_user tools/nvme/scsi.c /^static int nvme_trans_copy_to_user(struct sg_io_hdr *hdr, void *from,$/;" f file: +nvme_trans_copy_to_user tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_copy_to_user(struct sg_io_hdr *hdr, void *from,$/;" f file: +nvme_trans_device_id_page tools/nvme/scsi.c /^static int nvme_trans_device_id_page(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_device_id_page tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_device_id_page(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_do_nvme_io tools/nvme/scsi.c /^static int nvme_trans_do_nvme_io(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_do_nvme_io tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_do_nvme_io(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_ext_inq_page tools/nvme/scsi.c /^static int nvme_trans_ext_inq_page(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_ext_inq_page tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_ext_inq_page(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_fill_all_pages tools/nvme/scsi.c /^static int nvme_trans_fill_all_pages(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_fill_all_pages tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_fill_all_pages(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_fill_blk_desc tools/nvme/scsi.c /^static int nvme_trans_fill_blk_desc(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_fill_blk_desc tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_fill_blk_desc(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_fill_caching_page tools/nvme/scsi.c /^static int nvme_trans_fill_caching_page(struct nvme_ns *ns,$/;" f file: +nvme_trans_fill_caching_page tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_fill_caching_page(struct nvme_ns *ns,$/;" f file: +nvme_trans_fill_control_page tools/nvme/scsi.c /^static int nvme_trans_fill_control_page(struct nvme_ns *ns,$/;" f file: +nvme_trans_fill_control_page tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_fill_control_page(struct nvme_ns *ns,$/;" f file: +nvme_trans_fill_inf_exc_page tools/nvme/scsi.c /^static int nvme_trans_fill_inf_exc_page(struct nvme_ns *ns,$/;" f file: +nvme_trans_fill_inf_exc_page tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_fill_inf_exc_page(struct nvme_ns *ns,$/;" f file: +nvme_trans_fill_mode_parm_hdr tools/nvme/scsi.c /^static int nvme_trans_fill_mode_parm_hdr(u8 *resp, int len, u8 cdb10, u8 llbaa,$/;" f file: +nvme_trans_fill_mode_parm_hdr tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_fill_mode_parm_hdr(u8 *resp, int len, u8 cdb10, u8 llbaa,$/;" f file: +nvme_trans_fill_pow_cnd_page tools/nvme/scsi.c /^static int nvme_trans_fill_pow_cnd_page(struct nvme_ns *ns,$/;" f file: +nvme_trans_fill_pow_cnd_page tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_fill_pow_cnd_page(struct nvme_ns *ns,$/;" f file: +nvme_trans_fill_read_cap tools/nvme/scsi.c /^static void nvme_trans_fill_read_cap(u8 *response, struct nvme_id_ns *id_ns,$/;" f file: +nvme_trans_fill_read_cap tools/nvmedrv-v4.5.3/scsi.c /^static void nvme_trans_fill_read_cap(u8 *response, struct nvme_id_ns *id_ns,$/;" f file: +nvme_trans_fmt_get_parm_header tools/nvme/scsi.c /^static int nvme_trans_fmt_get_parm_header(struct sg_io_hdr *hdr, u8 len,$/;" f file: +nvme_trans_fmt_get_parm_header tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_fmt_get_parm_header(struct sg_io_hdr *hdr, u8 len,$/;" f file: +nvme_trans_fmt_send_cmd tools/nvme/scsi.c /^static int nvme_trans_fmt_send_cmd(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_fmt_send_cmd tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_fmt_send_cmd(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_fmt_set_blk_size_count tools/nvme/scsi.c /^static int nvme_trans_fmt_set_blk_size_count(struct nvme_ns *ns,$/;" f file: +nvme_trans_fmt_set_blk_size_count tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_fmt_set_blk_size_count(struct nvme_ns *ns,$/;" f file: +nvme_trans_format_unit tools/nvme/scsi.c /^static int nvme_trans_format_unit(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_format_unit tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_format_unit(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_get_blk_desc_len tools/nvme/scsi.c /^static inline int nvme_trans_get_blk_desc_len(u8 dbd, u8 llbaa)$/;" f file: +nvme_trans_get_blk_desc_len tools/nvmedrv-v4.5.3/scsi.c /^static inline int nvme_trans_get_blk_desc_len(u8 dbd, u8 llbaa)$/;" f file: +nvme_trans_inquiry tools/nvme/scsi.c /^static int nvme_trans_inquiry(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_inquiry tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_inquiry(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_io tools/nvme/scsi.c /^static int nvme_trans_io(struct nvme_ns *ns, struct sg_io_hdr *hdr, u8 is_write,$/;" f file: +nvme_trans_io tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_io(struct nvme_ns *ns, struct sg_io_hdr *hdr, u8 is_write,$/;" f file: +nvme_trans_io_cdb tools/nvme/scsi.c /^struct nvme_trans_io_cdb {$/;" s file: +nvme_trans_io_cdb tools/nvmedrv-v4.5.3/scsi.c /^struct nvme_trans_io_cdb {$/;" s file: +nvme_trans_io_get_control tools/nvme/scsi.c /^static u16 nvme_trans_io_get_control(struct nvme_ns *ns,$/;" f file: +nvme_trans_io_get_control tools/nvmedrv-v4.5.3/scsi.c /^static u16 nvme_trans_io_get_control(struct nvme_ns *ns,$/;" f file: +nvme_trans_io_get_num_cmds tools/nvme/scsi.c /^static inline u32 nvme_trans_io_get_num_cmds(struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_io_get_num_cmds tools/nvmedrv-v4.5.3/scsi.c /^static inline u32 nvme_trans_io_get_num_cmds(struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_log_info_exceptions tools/nvme/scsi.c /^static int nvme_trans_log_info_exceptions(struct nvme_ns *ns,$/;" f file: +nvme_trans_log_info_exceptions tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_log_info_exceptions(struct nvme_ns *ns,$/;" f file: +nvme_trans_log_sense tools/nvme/scsi.c /^static int nvme_trans_log_sense(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_log_sense tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_log_sense(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_log_supp_pages tools/nvme/scsi.c /^static int nvme_trans_log_supp_pages(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_log_supp_pages tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_log_supp_pages(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_log_temperature tools/nvme/scsi.c /^static int nvme_trans_log_temperature(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_log_temperature tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_log_temperature(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_mode_page_create tools/nvme/scsi.c /^static int nvme_trans_mode_page_create(struct nvme_ns *ns,$/;" f file: +nvme_trans_mode_page_create tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_mode_page_create(struct nvme_ns *ns,$/;" f file: +nvme_trans_mode_select tools/nvme/scsi.c /^static int nvme_trans_mode_select(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_mode_select tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_mode_select(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_mode_sense tools/nvme/scsi.c /^static int nvme_trans_mode_sense(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_mode_sense tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_mode_sense(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_modesel_data tools/nvme/scsi.c /^static int nvme_trans_modesel_data(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_modesel_data tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_modesel_data(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_modesel_get_bd_len tools/nvme/scsi.c /^static inline void nvme_trans_modesel_get_bd_len(u8 *parm_list, u8 cdb10,$/;" f file: +nvme_trans_modesel_get_bd_len tools/nvmedrv-v4.5.3/scsi.c /^static inline void nvme_trans_modesel_get_bd_len(u8 *parm_list, u8 cdb10,$/;" f file: +nvme_trans_modesel_get_mp tools/nvme/scsi.c /^static int nvme_trans_modesel_get_mp(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_modesel_get_mp tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_modesel_get_mp(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_modesel_save_bd tools/nvme/scsi.c /^static void nvme_trans_modesel_save_bd(struct nvme_ns *ns, u8 *parm_list,$/;" f file: +nvme_trans_modesel_save_bd tools/nvmedrv-v4.5.3/scsi.c /^static void nvme_trans_modesel_save_bd(struct nvme_ns *ns, u8 *parm_list,$/;" f file: +nvme_trans_power_state tools/nvme/scsi.c /^static int nvme_trans_power_state(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_power_state tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_power_state(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_read_capacity tools/nvme/scsi.c /^static int nvme_trans_read_capacity(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_read_capacity tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_read_capacity(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_report_luns tools/nvme/scsi.c /^static int nvme_trans_report_luns(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_report_luns tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_report_luns(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_request_sense tools/nvme/scsi.c /^static int nvme_trans_request_sense(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_request_sense tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_request_sense(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_security_protocol tools/nvme/scsi.c /^static int nvme_trans_security_protocol(struct nvme_ns *ns,$/;" f file: +nvme_trans_security_protocol tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_security_protocol(struct nvme_ns *ns,$/;" f file: +nvme_trans_send_activate_fw_cmd tools/nvme/scsi.c /^static int nvme_trans_send_activate_fw_cmd(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_send_activate_fw_cmd tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_send_activate_fw_cmd(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_send_download_fw_cmd tools/nvme/scsi.c /^static int nvme_trans_send_download_fw_cmd(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_send_download_fw_cmd tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_send_download_fw_cmd(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_standard_inquiry_page tools/nvme/scsi.c /^static int nvme_trans_standard_inquiry_page(struct nvme_ns *ns,$/;" f file: +nvme_trans_standard_inquiry_page tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_standard_inquiry_page(struct nvme_ns *ns,$/;" f file: +nvme_trans_start_stop tools/nvme/scsi.c /^static int nvme_trans_start_stop(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_start_stop tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_start_stop(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_status_code tools/nvme/scsi.c /^static int nvme_trans_status_code(struct sg_io_hdr *hdr, int nvme_sc)$/;" f file: +nvme_trans_status_code tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_status_code(struct sg_io_hdr *hdr, int nvme_sc)$/;" f file: +nvme_trans_supported_vpd_pages tools/nvme/scsi.c /^static int nvme_trans_supported_vpd_pages(struct nvme_ns *ns,$/;" f file: +nvme_trans_supported_vpd_pages tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_supported_vpd_pages(struct nvme_ns *ns,$/;" f file: +nvme_trans_synchronize_cache tools/nvme/scsi.c /^static int nvme_trans_synchronize_cache(struct nvme_ns *ns,$/;" f file: +nvme_trans_synchronize_cache tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_synchronize_cache(struct nvme_ns *ns,$/;" f file: +nvme_trans_test_unit_ready tools/nvme/scsi.c /^static int nvme_trans_test_unit_ready(struct nvme_ns *ns,$/;" f file: +nvme_trans_test_unit_ready tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_test_unit_ready(struct nvme_ns *ns,$/;" f file: +nvme_trans_unit_serial_page tools/nvme/scsi.c /^static int nvme_trans_unit_serial_page(struct nvme_ns *ns,$/;" f file: +nvme_trans_unit_serial_page tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_unit_serial_page(struct nvme_ns *ns,$/;" f file: +nvme_trans_unmap tools/nvme/scsi.c /^static int nvme_trans_unmap(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_unmap tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_unmap(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_write_buffer tools/nvme/scsi.c /^static int nvme_trans_write_buffer(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_trans_write_buffer tools/nvmedrv-v4.5.3/scsi.c /^static int nvme_trans_write_buffer(struct nvme_ns *ns, struct sg_io_hdr *hdr,$/;" f file: +nvme_uninit_ctrl tools/nvme/core.c /^void nvme_uninit_ctrl(struct nvme_ctrl *ctrl)$/;" f +nvme_uninit_ctrl tools/nvmedrv-v4.5.3/core.c /^void nvme_uninit_ctrl(struct nvme_ctrl *ctrl)$/;" f +nvme_unmap_data tools/nvme/pci.c /^static void nvme_unmap_data(struct nvme_dev *dev, struct request *req)$/;" f file: +nvme_unmap_data tools/nvmedrv-v4.5.3/pci.c /^static void nvme_unmap_data(struct nvme_dev *dev, struct request *req)$/;" f file: +nvme_user_cmd tools/nvme/core.c /^static int nvme_user_cmd(struct nvme_ctrl *ctrl, struct nvme_ns *ns,$/;" f file: +nvme_user_cmd tools/nvmedrv-v4.5.3/core.c /^static int nvme_user_cmd(struct nvme_ctrl *ctrl, struct nvme_ns *ns,$/;" f file: +nvme_validate_ns tools/nvme/core.c /^static void nvme_validate_ns(struct nvme_ctrl *ctrl, unsigned nsid)$/;" f file: +nvme_validate_ns tools/nvmedrv-v4.5.3/core.c /^static void nvme_validate_ns(struct nvme_ctrl *ctrl, unsigned nsid)$/;" f file: +nvme_wait_ready tools/nvme/core.c /^static int nvme_wait_ready(struct nvme_ctrl *ctrl, u64 cap, bool enabled)$/;" f file: +nvme_wait_ready tools/nvmedrv-v4.5.3/core.c /^static int nvme_wait_ready(struct nvme_ctrl *ctrl, u64 cap, bool enabled)$/;" f file: +nvme_workq tools/nvme/pci.c /^static struct workqueue_struct *nvme_workq;$/;" v typeref:struct:workqueue_struct file: +nvme_workq tools/nvmedrv-v4.5.3/pci.c /^static struct workqueue_struct *nvme_workq;$/;" v typeref:struct:workqueue_struct file: +nvmeq tools/nvme/pci.c /^ struct nvme_queue *nvmeq;$/;" m struct:nvme_iod typeref:struct:nvme_iod::nvme_queue file: +nvmeq tools/nvmedrv-v4.5.3/pci.c /^ struct nvme_queue *nvmeq;$/;" m struct:nvme_iod typeref:struct:nvme_iod::nvme_queue file: +obj-m Makefile /^obj-m := robusta_drv.o$/;" m +obj-m devices/bluedbm/Makefile /^obj-m := risa_dev_bluedbm.o$/;" m +obj-m devices/dumbssd/Makefile /^obj-m := dumbssd.o$/;" m +obj-m devices/ramdrive/Makefile /^obj-m := risa_dev_ramdrive.o$/;" m +obj-m devices/ramdrive_timing/Makefile /^obj-m := risa_dev_ramdrive_timing.o$/;" m +obj-m examples/raw-flash/Makefile /^obj-m := module_main.o$/;" m +obj-m frontend/hybrid/Makefile /^obj-m := bdbm_drv.o$/;" m +obj-m frontend/kernel/Makefile /^obj-m := robusta_drv.o$/;" m +obj-m tools/lightnvm-v4.5.3/Makefile /^obj-m := lightnvm.o$/;" m +obj-m tools/lightnvm/Makefile /^obj-m := lightnvm.o$/;" m +obj-m tools/nvme/Makefile /^obj-m := nvme.o$/;" m +obj-m tools/nvmedrv-v4.5.3/Makefile /^obj-m := nvme.o$/;" m +ofs include/bdbm_drv.h /^ int32_t ofs; \/* only used for reads *\/$/;" m struct:__anon28 +oncs tools/nvme/nvme.h /^ u16 oncs;$/;" m struct:nvme_ctrl +oncs tools/nvmedrv-v4.5.3/nvme.h /^ u16 oncs;$/;" m struct:nvme_ctrl +online_queues tools/nvme/pci.c /^ unsigned online_queues;$/;" m struct:nvme_dev file: +online_queues tools/nvmedrv-v4.5.3/pci.c /^ unsigned online_queues;$/;" m struct:nvme_dev file: +oom common/3rd/utarray.h 41;" d +oom common/3rd/utstring.h 40;" d +opcode tools/nvme/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_erase_blk file: +opcode tools/nvme/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_getbbtbl file: +opcode tools/nvme/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_hb_rw file: +opcode tools/nvme/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_identity file: +opcode tools/nvme/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_l2ptbl file: +opcode tools/nvme/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_ph_rw file: +opcode tools/nvme/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_setbbtbl file: +opcode tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_erase_blk file: +opcode tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_getbbtbl file: +opcode tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_hb_rw file: +opcode tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_identity file: +opcode tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_l2ptbl file: +opcode tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_ph_rw file: +opcode tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_setbbtbl file: +open include/bdbm_drv.h /^ uint32_t (*open) (bdbm_drv_info_t* bdi);$/;" m struct:__anon38 +open include/bdbm_drv.h /^ uint32_t (*open) (bdbm_drv_info_t* bdi);$/;" m struct:__anon41 +open_list tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head open_list; \/* In-use open blocks. These are blocks$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::list_head +open_list tools/lightnvm/rrpc.h /^ struct list_head open_list; \/* In-use open blocks. These are blocks$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::list_head +ops tools/nvme/nvme.h /^ const struct nvme_ctrl_ops *ops;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::nvme_ctrl_ops +ops tools/nvmedrv-v4.5.3/nvme.h /^ const struct nvme_ctrl_ops *ops;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::nvme_ctrl_ops +page_main_size include/params.h /^ uint64_t page_main_size;$/;" m struct:__anon46 +page_no ftl/algo/dftl_map.h /^ uint64_t page_no;$/;" m struct:__anon82 +page_no include/bdbm_drv.h /^ uint64_t page_no;$/;" m struct:__anon25 +page_oob_size include/params.h /^ uint64_t page_oob_size;$/;" m struct:__anon46 +page_pool tools/lightnvm-v4.5.3/rrpc.h /^ mempool_t *page_pool;$/;" m struct:rrpc +page_pool tools/lightnvm/rrpc.h /^ mempool_t *page_pool;$/;" m struct:rrpc +page_prog_time_us include/params.h /^ uint64_t page_prog_time_us;$/;" m struct:__anon46 +page_read_cnt include/bdbm_drv.h /^ atomic64_t page_read_cnt;$/;" m struct:__anon43 +page_read_time_us include/params.h /^ uint64_t page_read_time_us;$/;" m struct:__anon46 +page_size tools/nvme/nvme.h /^ u32 page_size;$/;" m struct:nvme_ctrl +page_size tools/nvmedrv-v4.5.3/nvme.h /^ u32 page_size;$/;" m struct:nvme_ctrl +page_write_cnt include/bdbm_drv.h /^ atomic64_t page_write_cnt;$/;" m struct:__anon43 +pairs tools/nvme/lightnvm.c /^ __u8 pairs[NVME_NVM_LP_MLC_PAIRS];$/;" m struct:nvme_nvm_lp_mlc file: +pairs tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 pairs[NVME_NVM_LP_MLC_PAIRS];$/;" m struct:nvme_nvm_lp_mlc file: +parent tools/lightnvm-v4.5.3/rrpc.h /^ struct nvm_block *parent;$/;" m struct:rrpc_block typeref:struct:rrpc_block::nvm_block +parent tools/lightnvm-v4.5.3/rrpc.h /^ struct nvm_lun *parent;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::nvm_lun +parent tools/lightnvm/rrpc.h /^ struct nvm_block *parent;$/;" m struct:rrpc_block typeref:struct:rrpc_block::nvm_block +parent tools/lightnvm/rrpc.h /^ struct nvm_lun *parent;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::nvm_lun +parm_dev include/bdbm_drv.h /^ bdbm_device_params_t parm_dev;$/;" m struct:_bdbm_drv_info_t +parm_ftl include/bdbm_drv.h /^ bdbm_ftl_params parm_ftl;$/;" m struct:_bdbm_drv_info_t +parse_args examples/stringsearch/ss.c /^int parse_args (int argc, char** argv, char** pattern, char** fname)$/;" f +parse_args tools/format/bdbm_format.c /^int parse_args (int argc, char** argv, struct bdbm_format_args* args)$/;" f +pg_len tools/nvme/lightnvm.c /^ __u8 pg_len;$/;" m struct:nvme_nvm_addr_format file: +pg_len tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 pg_len;$/;" m struct:nvme_nvm_addr_format file: +pg_offset tools/nvme/lightnvm.c /^ __u8 pg_offset;$/;" m struct:nvme_nvm_addr_format file: +pg_offset tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 pg_offset;$/;" m struct:nvme_nvm_addr_format file: +ph_rw tools/nvme/lightnvm.c /^ struct nvme_nvm_ph_rw ph_rw;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_ph_rw file: +ph_rw tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_ph_rw ph_rw;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_ph_rw file: +phyaddr devices/common/dev_stub.h /^ bdbm_phyaddr_t phyaddr;$/;" m struct:__anon10 +phyaddr ftl/algo/dftl_map.h /^ bdbm_phyaddr_t phyaddr; \/* the physical location where mapping entries are stored *\/$/;" m struct:__anon84 +phyaddr ftl/algo/dftl_map.h /^ mapblk_phyaddr_t phyaddr; \/* physical location *\/$/;" m struct:__anon83 +phyaddr ftl/algo/page_ftl.c /^ bdbm_phyaddr_t phyaddr; \/* physical location *\/$/;" m struct:__anon87 file: +phyaddr include/bdbm_drv.h /^ bdbm_phyaddr_t phyaddr;$/;" m struct:__anon31 +phyaddr_dst include/bdbm_drv.h /^ bdbm_phyaddr_t phyaddr_dst;$/;" m struct:__anon31 +phyaddr_src include/bdbm_drv.h /^ bdbm_phyaddr_t phyaddr_src;$/;" m struct:__anon31 +pi_type tools/nvme/nvme.h /^ u8 pi_type;$/;" m struct:nvme_ns +pi_type tools/nvmedrv-v4.5.3/nvme.h /^ u8 pi_type;$/;" m struct:nvme_ns +pln_len tools/nvme/lightnvm.c /^ __u8 pln_len;$/;" m struct:nvme_nvm_addr_format file: +pln_len tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 pln_len;$/;" m struct:nvme_nvm_addr_format file: +pln_offset tools/nvme/lightnvm.c /^ __u8 pln_offset;$/;" m struct:nvme_nvm_addr_format file: +pln_offset tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 pln_offset;$/;" m struct:nvme_nvm_addr_format file: +pm include/bdbm_drv.h /^ bdbm_perf_monitor_t pm;$/;" m struct:_bdbm_drv_info_t +pmu_create ftl/pmu.c /^void pmu_create (bdbm_drv_info_t* bdi) {}$/;" f +pmu_create ftl/pmu.c /^void pmu_create (bdbm_drv_info_t* bdi)$/;" f +pmu_destory ftl/pmu.c /^void pmu_destory (bdbm_drv_info_t* bdi)$/;" f +pmu_destroy ftl/pmu.c /^void pmu_destroy (bdbm_drv_info_t* bdi) {}$/;" f +pmu_display ftl/pmu.c /^void pmu_display (bdbm_drv_info_t* bdi) $/;" f +pmu_display ftl/pmu.c /^void pmu_display (bdbm_drv_info_t* bdi) {}$/;" f +pmu_inc ftl/pmu.c /^void pmu_inc (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req) {}$/;" f +pmu_inc ftl/pmu.c /^void pmu_inc (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req)$/;" f +pmu_inc_gc ftl/pmu.c /^void pmu_inc_gc (bdbm_drv_info_t* bdi) {}$/;" f +pmu_inc_gc ftl/pmu.c /^void pmu_inc_gc (bdbm_drv_info_t* bdi)$/;" f +pmu_inc_gc_erase ftl/pmu.c /^void pmu_inc_gc_erase (bdbm_drv_info_t* bdi) {}$/;" f +pmu_inc_gc_erase ftl/pmu.c /^void pmu_inc_gc_erase (bdbm_drv_info_t* bdi)$/;" f +pmu_inc_gc_read ftl/pmu.c /^void pmu_inc_gc_read (bdbm_drv_info_t* bdi) {}$/;" f +pmu_inc_gc_read ftl/pmu.c /^void pmu_inc_gc_read (bdbm_drv_info_t* bdi)$/;" f +pmu_inc_gc_write ftl/pmu.c /^void pmu_inc_gc_write (bdbm_drv_info_t* bdi) {}$/;" f +pmu_inc_gc_write ftl/pmu.c /^void pmu_inc_gc_write (bdbm_drv_info_t* bdi)$/;" f +pmu_inc_meta_read ftl/pmu.c /^void pmu_inc_meta_read (bdbm_drv_info_t* bdi) {}$/;" f +pmu_inc_meta_read ftl/pmu.c /^void pmu_inc_meta_read (bdbm_drv_info_t* bdi)$/;" f +pmu_inc_meta_write ftl/pmu.c /^void pmu_inc_meta_write (bdbm_drv_info_t* bdi) {}$/;" f +pmu_inc_meta_write ftl/pmu.c /^void pmu_inc_meta_write (bdbm_drv_info_t* bdi)$/;" f +pmu_inc_read ftl/pmu.c /^void pmu_inc_read (bdbm_drv_info_t* bdi) $/;" f +pmu_inc_read ftl/pmu.c /^void pmu_inc_read (bdbm_drv_info_t* bdi) {}$/;" f +pmu_inc_rmw_read ftl/pmu.c /^void pmu_inc_rmw_read (bdbm_drv_info_t* bdi) $/;" f +pmu_inc_rmw_read ftl/pmu.c /^void pmu_inc_rmw_read (bdbm_drv_info_t* bdi) {}$/;" f +pmu_inc_rmw_write ftl/pmu.c /^void pmu_inc_rmw_write (bdbm_drv_info_t* bdi) $/;" f +pmu_inc_rmw_write ftl/pmu.c /^void pmu_inc_rmw_write (bdbm_drv_info_t* bdi) {}$/;" f +pmu_inc_util_r ftl/pmu.c /^void pmu_inc_util_r (bdbm_drv_info_t* bdi, uint64_t id) {}$/;" f +pmu_inc_util_r ftl/pmu.c /^void pmu_inc_util_r (bdbm_drv_info_t* bdi, uint64_t id)$/;" f +pmu_inc_util_w ftl/pmu.c /^void pmu_inc_util_w (bdbm_drv_info_t* bdi, uint64_t id) {}$/;" f +pmu_inc_util_w ftl/pmu.c /^void pmu_inc_util_w (bdbm_drv_info_t* bdi, uint64_t id)$/;" f +pmu_inc_write ftl/pmu.c /^void pmu_inc_write (bdbm_drv_info_t* bdi) $/;" f +pmu_inc_write ftl/pmu.c /^void pmu_inc_write (bdbm_drv_info_t* bdi) {}$/;" f +pmu_lock include/bdbm_drv.h /^ bdbm_spinlock_t pmu_lock;$/;" m struct:__anon43 +pmu_update_gc_q ftl/pmu.c /^void pmu_update_gc_q (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw)$/;" f +pmu_update_gc_sw ftl/pmu.c /^void pmu_update_gc_sw (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) $/;" f +pmu_update_gc_sw ftl/pmu.c /^void pmu_update_gc_sw (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) {}$/;" f +pmu_update_gc_tot ftl/pmu.c /^void pmu_update_gc_tot (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) {}$/;" f +pmu_update_gc_tot ftl/pmu.c /^void pmu_update_gc_tot (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw)$/;" f +pmu_update_q ftl/pmu.c /^void pmu_update_q (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req) {}$/;" f +pmu_update_q ftl/pmu.c /^void pmu_update_q (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req)$/;" f +pmu_update_r_q ftl/pmu.c /^void pmu_update_r_q (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) $/;" f +pmu_update_r_q ftl/pmu.c /^void pmu_update_r_q (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) {}$/;" f +pmu_update_r_sw ftl/pmu.c /^void pmu_update_r_sw (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) $/;" f +pmu_update_r_sw ftl/pmu.c /^void pmu_update_r_sw (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) {}$/;" f +pmu_update_r_tot ftl/pmu.c /^void pmu_update_r_tot (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) $/;" f +pmu_update_r_tot ftl/pmu.c /^void pmu_update_r_tot (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) {}$/;" f +pmu_update_rmw_q ftl/pmu.c /^void pmu_update_rmw_q (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) {}$/;" f +pmu_update_rmw_q ftl/pmu.c /^void pmu_update_rmw_q (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw)$/;" f +pmu_update_rmw_sw ftl/pmu.c /^void pmu_update_rmw_sw (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) {}$/;" f +pmu_update_rmw_sw ftl/pmu.c /^void pmu_update_rmw_sw (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw)$/;" f +pmu_update_rmw_tot ftl/pmu.c /^void pmu_update_rmw_tot (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) {}$/;" f +pmu_update_rmw_tot ftl/pmu.c /^void pmu_update_rmw_tot (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw)$/;" f +pmu_update_sw ftl/pmu.c /^void pmu_update_sw (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req) $/;" f +pmu_update_sw ftl/pmu.c /^void pmu_update_sw (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req) {}$/;" f +pmu_update_tot ftl/pmu.c /^void pmu_update_tot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req) {}$/;" f +pmu_update_tot ftl/pmu.c /^void pmu_update_tot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req)$/;" f +pmu_update_w_q ftl/pmu.c /^void pmu_update_w_q (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) $/;" f +pmu_update_w_q ftl/pmu.c /^void pmu_update_w_q (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) {}$/;" f +pmu_update_w_sw ftl/pmu.c /^void pmu_update_w_sw (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) $/;" f +pmu_update_w_sw ftl/pmu.c /^void pmu_update_w_sw (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) {}$/;" f +pmu_update_w_tot ftl/pmu.c /^void pmu_update_w_tot (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) $/;" f +pmu_update_w_tot ftl/pmu.c /^void pmu_update_w_tot (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) {}$/;" f +poffset tools/lightnvm-v4.5.3/rrpc.h /^ u64 poffset; \/* physical page offset *\/$/;" m struct:rrpc +poffset tools/lightnvm/rrpc.h /^ u64 poffset; \/* physical page offset *\/$/;" m struct:rrpc +pollwq devices/common/dev_stub.c /^ wait_queue_head_t pollwq;$/;" m struct:__anon9 file: +pollwq frontend/hybrid/blkio_proxy.c /^ wait_queue_head_t pollwq;$/;" m struct:__anon61 file: +pool_item_t frontend/hybrid/blkio_proxy_reqs_pool.c /^} pool_item_t;$/;" t typeref:struct:__anon59 file: +pool_size ftl/hlm_reqs_pool.h /^ int32_t pool_size; \/* # of items *\/$/;" m struct:__anon66 +ppaf tools/nvme/lightnvm.c /^ struct nvme_nvm_addr_format ppaf;$/;" m struct:nvme_nvm_id typeref:struct:nvme_nvm_id::nvme_nvm_addr_format file: +ppaf tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_addr_format ppaf;$/;" m struct:nvme_nvm_id typeref:struct:nvme_nvm_id::nvme_nvm_addr_format file: +ppas tools/lightnvm-v4.5.3/sysblk.c /^ struct ppa_addr ppas[MAX_SYSBLKS * MAX_BLKS_PR_SYSBLK];\/* all sysblks *\/$/;" m struct:sysblk_scan typeref:struct:sysblk_scan::ppa_addr file: +ppas tools/lightnvm/sysblk.c /^ struct ppa_addr ppas[MAX_SYSBLKS * MAX_BLKS_PR_SYSBLK];\/* all sysblks *\/$/;" m struct:sysblk_scan typeref:struct:sysblk_scan::ppa_addr file: +pprev common/3rd/ulist.h /^ struct hlist_node *next, **pprev;$/;" m struct:hlist_node typeref:struct:hlist_node:: +prepare_mapblk_eviction include/bdbm_drv.h /^ bdbm_llm_req_t* (*prepare_mapblk_eviction) (bdbm_drv_info_t* bdi);$/;" m struct:__anon42 +prepare_mapblk_load include/bdbm_drv.h /^ bdbm_llm_req_t* (*prepare_mapblk_load) (bdbm_drv_info_t* bdi, uint64_t lpa);$/;" m struct:__anon42 +prev common/3rd/ulist.h /^ struct list_head *next, *prev;$/;" m struct:list_head typeref:struct:list_head:: +prev common/3rd/uthash.h /^ void *prev; \/* prev element in app order *\/$/;" m struct:UT_hash_handle +prio tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head prio;$/;" m struct:rrpc_block typeref:struct:rrpc_block::list_head +prio tools/lightnvm/rrpc.h /^ struct list_head prio;$/;" m struct:rrpc_block typeref:struct:rrpc_block::list_head +prio_list tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head prio_list; \/* Blocks that may be GC'ed *\/$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::list_head +prio_list tools/lightnvm/rrpc.h /^ struct list_head prio_list; \/* Blocks that may be GC'ed *\/$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::list_head +private_data include/bdbm_drv.h /^ void* private_data;$/;" m struct:_bdbm_drv_info_t +probe include/bdbm_drv.h /^ uint32_t (*probe) (bdbm_drv_info_t* bdi, bdbm_device_params_t* param);$/;" m struct:__anon41 +problem_seg_no ftl/algo/block_ftl.c /^static uint64_t problem_seg_no = -1;$/;" v file: +prot_info tools/nvme/scsi.c /^ u8 prot_info;$/;" m struct:nvme_trans_io_cdb file: +prot_info tools/nvmedrv-v4.5.3/scsi.c /^ u8 prot_info;$/;" m struct:nvme_trans_io_cdb file: +prp1 tools/nvme/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_erase_blk file: +prp1 tools/nvme/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_getbbtbl file: +prp1 tools/nvme/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_hb_rw file: +prp1 tools/nvme/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_identity file: +prp1 tools/nvme/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_l2ptbl file: +prp1 tools/nvme/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_ph_rw file: +prp1 tools/nvme/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_setbbtbl file: +prp1 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_erase_blk file: +prp1 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_getbbtbl file: +prp1 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_hb_rw file: +prp1 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_identity file: +prp1 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_l2ptbl file: +prp1 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_ph_rw file: +prp1 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp1;$/;" m struct:nvme_nvm_setbbtbl file: +prp2 tools/nvme/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_erase_blk file: +prp2 tools/nvme/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_getbbtbl file: +prp2 tools/nvme/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_hb_rw file: +prp2 tools/nvme/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_identity file: +prp2 tools/nvme/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_l2ptbl file: +prp2 tools/nvme/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_ph_rw file: +prp2 tools/nvme/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_setbbtbl file: +prp2 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_erase_blk file: +prp2 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_getbbtbl file: +prp2 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_hb_rw file: +prp2 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_identity file: +prp2 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_l2ptbl file: +prp2 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_ph_rw file: +prp2 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 prp2;$/;" m struct:nvme_nvm_setbbtbl file: +prp_page_pool tools/nvme/pci.c /^ struct dma_pool *prp_page_pool;$/;" m struct:nvme_dev typeref:struct:nvme_dev::dma_pool file: +prp_page_pool tools/nvmedrv-v4.5.3/pci.c /^ struct dma_pool *prp_page_pool;$/;" m struct:nvme_dev typeref:struct:nvme_dev::dma_pool file: +prp_small_pool tools/nvme/pci.c /^ struct dma_pool *prp_small_pool;$/;" m struct:nvme_dev typeref:struct:nvme_dev::dma_pool file: +prp_small_pool tools/nvmedrv-v4.5.3/pci.c /^ struct dma_pool *prp_small_pool;$/;" m struct:nvme_dev typeref:struct:nvme_dev::dma_pool file: +ps frontend/user/dev_proxy.c /^ uint8_t* ps; \/* punit status *\/$/;" m struct:__anon54 file: +pst ftl/algo/abm.h /^ babm_abm_subpage_t* pst; \/* a page status table; used when the FTL requires *\/$/;" m struct:__anon79 +pst ftl/algo/block_ftl.c /^ uint8_t* pst; \/* status of pages in a block *\/$/;" m struct:__anon77 file: +ptr_dm_inf include/bdbm_drv.h /^ bdbm_dm_inf_t* ptr_dm_inf;$/;" m struct:_bdbm_drv_info_t +ptr_ftl_inf ftl/hlm_buf.c /^ bdbm_ftl_inf_t* ptr_ftl_inf; \/* for hlm_nobuff (it must be on top of this structure) *\/$/;" m struct:bdbm_hlm_buf_private file: +ptr_ftl_inf include/bdbm_drv.h /^ bdbm_ftl_inf_t* ptr_ftl_inf;$/;" m struct:_bdbm_drv_info_t +ptr_hlm_inf include/bdbm_drv.h /^ bdbm_hlm_inf_t* ptr_hlm_inf;$/;" m struct:_bdbm_drv_info_t +ptr_hlm_req include/bdbm_drv.h /^ void* ptr_hlm_req;$/;" m struct:__anon31 +ptr_host_inf include/bdbm_drv.h /^ bdbm_host_inf_t* ptr_host_inf; $/;" m struct:_bdbm_drv_info_t +ptr_llm_inf include/bdbm_drv.h /^ bdbm_llm_inf_t* ptr_llm_inf;$/;" m struct:_bdbm_drv_info_t +ptr_mapping_table ftl/algo/page_ftl.c /^ bdbm_page_mapping_entry_t* ptr_mapping_table;$/;" m struct:__anon88 file: +ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon38 +ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon39 +ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon40 +ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon41 +ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon42 +ptr_punits devices/ramdrive/dev_ramssd.h /^ dev_ramssd_punit_t* ptr_punits; \/* parallel units *\/$/;" m struct:__anon13 +ptr_qitem include/bdbm_drv.h /^ void* ptr_qitem;$/;" m struct:__anon31 +ptr_req devices/ramdrive/dev_ramssd.h /^ void* ptr_req;$/;" m struct:__anon11 +ptr_req ftl/queue/prior_queue.h /^ void* ptr_req;$/;" m struct:__anon70 +ptr_req ftl/queue/queue.h /^ void* ptr_req;$/;" m struct:__anon68 +ptr_req ftl/queue/rd_prior_queue.h /^ void* ptr_req;$/;" m struct:__anon74 +ptr_ssdram devices/ramdrive/dev_ramssd.h /^ void* ptr_ssdram; \/* DRAM memory for SSD *\/$/;" m struct:__anon13 +punit devices/common/dev_stub.c /^ uint64_t punit;$/;" m struct:__anon9 file: +punit frontend/user/dev_proxy.c /^ int punit;$/;" m struct:__anon54 file: +punit_busy devices/common/dev_stub.c /^ uint8_t* punit_busy;$/;" m struct:__anon9 file: +punit_done devices/common/dev_stub.c /^ uint8_t* punit_done; \/* punit_done is updated only in dm_fops_poll while poll () is calling *\/$/;" m struct:__anon9 file: +punit_id include/bdbm_drv.h /^ uint64_t punit_id;$/;" m struct:__anon25 +punit_locks ftl/llm_mq.c /^ bdbm_sema_t* punit_locks;$/;" m struct:bdbm_llm_mq_private file: +punit_locks ftl/llm_noq_lock.c /^ bdbm_sema_t* punit_locks;$/;" m struct:bdbm_llm_noq_lock_private file: +punit_locks ftl/llm_rmq.c /^ bdbm_sema_t* punit_locks;$/;" m struct:bdbm_llm_rmq_private file: +punit_main_pages devices/common/dev_stub.c /^ uint8_t** punit_main_pages;$/;" m struct:__anon9 file: +punit_main_pages frontend/user/dev_proxy.c /^ uint8_t** punit_main_pages;$/;" m struct:__anon54 file: +punit_oob_pages devices/common/dev_stub.c /^ uint8_t** punit_oob_pages;$/;" m struct:__anon9 file: +punit_oob_pages frontend/user/dev_proxy.c /^ uint8_t** punit_oob_pages;$/;" m struct:__anon54 file: +punit_status examples/raw-flash/raw-flash.h /^ atomic_t* punit_status;$/;" m struct:__anon20 +punit_status examples/stub_test/main.c /^ uint8_t* punit_status;$/;" m struct:__anon23 file: +q devices/dumbssd/dev_hynix_nvme.h /^ struct request_queue *q;$/;" m struct:__anon16 typeref:struct:__anon16::request_queue +q ftl/hlm_buf.c /^ bdbm_queue_t* q;$/;" m struct:bdbm_hlm_buf_private file: +q ftl/hlm_dftl.c /^ bdbm_queue_t* q;$/;" m struct:__anon89 file: +q ftl/llm_mq.c /^ bdbm_prior_queue_t* q;$/;" m struct:bdbm_llm_mq_private file: +q ftl/llm_rmq.c /^ bdbm_rd_prior_queue_t* q;$/;" m struct:bdbm_llm_rmq_private file: +q_db tools/nvme/pci.c /^ u32 __iomem *q_db;$/;" m struct:nvme_queue file: +q_db tools/nvmedrv-v4.5.3/pci.c /^ u32 __iomem *q_db;$/;" m struct:nvme_queue file: +q_depth tools/nvme/pci.c /^ int q_depth;$/;" m struct:nvme_dev file: +q_depth tools/nvme/pci.c /^ u16 q_depth;$/;" m struct:nvme_queue file: +q_depth tools/nvmedrv-v4.5.3/pci.c /^ int q_depth;$/;" m struct:nvme_dev file: +q_depth tools/nvmedrv-v4.5.3/pci.c /^ u16 q_depth;$/;" m struct:nvme_queue file: +q_dmadev tools/nvme/pci.c /^ struct device *q_dmadev;$/;" m struct:nvme_queue typeref:struct:nvme_queue::device file: +q_dmadev tools/nvmedrv-v4.5.3/pci.c /^ struct device *q_dmadev;$/;" m struct:nvme_queue typeref:struct:nvme_queue::device file: +q_lock tools/nvme/pci.c /^ spinlock_t q_lock;$/;" m struct:nvme_queue file: +q_lock tools/nvmedrv-v4.5.3/pci.c /^ spinlock_t q_lock;$/;" m struct:nvme_queue file: +qic ftl/queue/prior_queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon72 +qic ftl/queue/queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon69 +qic ftl/queue/rd_prior_queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon76 +qid tools/nvme/pci.c /^ u16 qid;$/;" m struct:nvme_queue file: +qid tools/nvmedrv-v4.5.3/pci.c /^ u16 qid;$/;" m struct:nvme_queue file: +qlh ftl/queue/prior_queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon72 typeref:struct:__anon72::list_head +qlh ftl/queue/queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon69 typeref:struct:__anon69::list_head +qlh ftl/queue/rd_prior_queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon76 typeref:struct:__anon76::list_head +queue devices/dumbssd/dev_hynix_nvme.h /^ struct request_queue *queue;$/;" m struct:__anon16 typeref:struct:__anon16::request_queue +queue frontend/kernel/blkdev.c /^ struct request_queue *queue;$/;" m struct:bdbm_device_t typeref:struct:bdbm_device_t::request_queue file: +queue tools/nvme/nvme.h /^ struct request_queue *queue;$/;" m struct:nvme_ns typeref:struct:nvme_ns::request_queue +queue tools/nvmedrv-v4.5.3/nvme.h /^ struct request_queue *queue;$/;" m struct:nvme_ns typeref:struct:nvme_ns::request_queue +queue_count tools/nvme/pci.c /^ unsigned queue_count;$/;" m struct:nvme_dev file: +queue_count tools/nvmedrv-v4.5.3/pci.c /^ unsigned queue_count;$/;" m struct:nvme_dev file: +queue_request_irq tools/nvme/pci.c /^static int queue_request_irq(struct nvme_dev *dev, struct nvme_queue *nvmeq,$/;" f file: +queue_request_irq tools/nvmedrv-v4.5.3/pci.c /^static int queue_request_irq(struct nvme_dev *dev, struct nvme_queue *nvmeq,$/;" f file: +queueing_policy include/params.h /^ uint32_t queueing_policy;$/;" m struct:__anon45 +queues tools/nvme/pci.c /^ struct nvme_queue **queues;$/;" m struct:nvme_dev typeref:struct:nvme_dev::nvme_queue file: +queues tools/nvmedrv-v4.5.3/pci.c /^ struct nvme_queue **queues;$/;" m struct:nvme_dev typeref:struct:nvme_dev::nvme_queue file: +quirks tools/nvme/nvme.h /^ unsigned long quirks;$/;" m struct:nvme_ctrl +quirks tools/nvmedrv-v4.5.3/nvme.h /^ unsigned long quirks;$/;" m struct:nvme_ctrl +ramssd devices/ramdrive/dm_ramdrive.c /^ dev_ramssd_info_t *ramssd;$/;" m struct:__anon14 file: +ramssd_lock devices/ramdrive/dev_ramssd.h /^ bdbm_spinlock_t ramssd_lock;$/;" m struct:__anon13 +raw_flash_exit examples/raw-flash/kmain.c /^module_exit (raw_flash_exit);$/;" v +raw_flash_exit examples/raw-flash/kmain.c /^static void __exit raw_flash_exit (void)$/;" f file: +raw_flash_init examples/raw-flash/kmain.c /^module_init (raw_flash_init);$/;" v +raw_flash_init examples/raw-flash/kmain.c /^static int __init raw_flash_init (void)$/;" f file: +rblk tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_block *rblk;$/;" m struct:rrpc_addr typeref:struct:rrpc_addr::rrpc_block +rblk tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_block *rblk;$/;" m struct:rrpc_block_gc typeref:struct:rrpc_block_gc::rrpc_block +rblk tools/lightnvm/rrpc.h /^ struct rrpc_block *rblk;$/;" m struct:rrpc_addr typeref:struct:rrpc_addr::rrpc_block +rblk tools/lightnvm/rrpc.h /^ struct rrpc_block *rblk;$/;" m struct:rrpc_block_gc typeref:struct:rrpc_block_gc::rrpc_block +rblock_max_invalid tools/lightnvm-v4.5.3/rrpc.c /^static struct rrpc_block *rblock_max_invalid(struct rrpc_block *ra,$/;" f file: +rblock_max_invalid tools/lightnvm/rrpc.c /^static struct rrpc_block *rblock_max_invalid(struct rrpc_block *ra,$/;" f file: +rbuf devices/bluedbm/dm_bluedbm.c /^ uint8_t** rbuf;$/;" m struct:dm_bluedbm_private file: +rd_prior_iotype_t ftl/queue/rd_prior_queue.h /^} rd_prior_iotype_t;$/;" t typeref:enum:__anon73 +ref_cnt devices/common/dev_stub.c /^ uint32_t ref_cnt;$/;" m struct:__anon9 file: +ref_cnt frontend/hybrid/blkio_proxy.c /^ atomic_t ref_cnt; \/* # of the user-level FTLs that are linked to the kernel *\/$/;" m struct:__anon61 file: +reg_read32 tools/nvme/nvme.h /^ int (*reg_read32)(struct nvme_ctrl *ctrl, u32 off, u32 *val);$/;" m struct:nvme_ctrl_ops +reg_read32 tools/nvmedrv-v4.5.3/nvme.h /^ int (*reg_read32)(struct nvme_ctrl *ctrl, u32 off, u32 *val);$/;" m struct:nvme_ctrl_ops +reg_read64 tools/nvme/nvme.h /^ int (*reg_read64)(struct nvme_ctrl *ctrl, u32 off, u64 *val);$/;" m struct:nvme_ctrl_ops +reg_read64 tools/nvmedrv-v4.5.3/nvme.h /^ int (*reg_read64)(struct nvme_ctrl *ctrl, u32 off, u64 *val);$/;" m struct:nvme_ctrl_ops +reg_write32 tools/nvme/nvme.h /^ int (*reg_write32)(struct nvme_ctrl *ctrl, u32 off, u32 val);$/;" m struct:nvme_ctrl_ops +reg_write32 tools/nvmedrv-v4.5.3/nvme.h /^ int (*reg_write32)(struct nvme_ctrl *ctrl, u32 off, u32 val);$/;" m struct:nvme_ctrl_ops +remove_highest_priority_tag ftl/queue/prior_queue.c /^static void remove_highest_priority_tag ($/;" f file: +remove_highest_priority_tag ftl/queue/rd_prior_queue.c /^static void remove_highest_priority_tag ($/;" f file: +remove_work tools/nvme/pci.c /^ struct work_struct remove_work;$/;" m struct:nvme_dev typeref:struct:nvme_dev::work_struct file: +remove_work tools/nvmedrv-v4.5.3/pci.c /^ struct work_struct remove_work;$/;" m struct:nvme_dev typeref:struct:nvme_dev::work_struct file: +req devices/dumbssd/dev_hynix_nvme.h /^ bdbm_llm_req_t* req;$/;" m struct:__anon17 +req_thread_fn examples/stub_test/main.c /^void req_thread_fn (void* data)$/;" f +req_thread_t examples/stub_test/main.c /^} req_thread_t;$/;" t typeref:struct:__anon24 file: +req_type devices/common/dev_stub.h /^ uint32_t req_type; \/* read, write, or erase *\/$/;" m struct:__anon10 +req_type include/bdbm_drv.h /^ uint32_t req_type; \/* read, write, or trim *\/$/;" m struct:__anon31 +req_type include/bdbm_drv.h /^ uint32_t req_type; \/* read, write, or trim *\/$/;" m struct:__anon32 +req_type include/bdbm_drv.h /^ uint32_t req_type;$/;" m struct:__anon37 +reqs examples/stub_test/main.c /^bdbm_llm_req_t** reqs = NULL;$/;" v +reqs tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head reqs;$/;" m struct:rrpc_inflight typeref:struct:rrpc_inflight::list_head +reqs tools/lightnvm/rrpc.h /^ struct list_head reqs;$/;" m struct:rrpc_inflight typeref:struct:rrpc_inflight::list_head +reqs_pool frontend/hybrid/blkio_proxy.c /^ bdbm_proxy_reqs_pool_t* reqs_pool;$/;" m struct:__anon61 file: +request_intersects tools/lightnvm-v4.5.3/rrpc.h /^static inline int request_intersects(struct rrpc_inflight_rq *r,$/;" f +request_intersects tools/lightnvm/rrpc.h /^static inline int request_intersects(struct rrpc_inflight_rq *r,$/;" f +requeue_bios tools/lightnvm-v4.5.3/rrpc.h /^ struct bio_list requeue_bios;$/;" m struct:rrpc typeref:struct:rrpc::bio_list +requeue_bios tools/lightnvm/rrpc.h /^ struct bio_list requeue_bios;$/;" m struct:rrpc typeref:struct:rrpc::bio_list +res tools/nvme/lightnvm.c /^ __u8 res;$/;" m struct:nvme_nvm_id file: +res tools/nvme/lightnvm.c /^ __u8 res[4];$/;" m struct:nvme_nvm_addr_format file: +res tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 res;$/;" m struct:nvme_nvm_id file: +res tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 res[4];$/;" m struct:nvme_nvm_addr_format file: +res16 tools/nvme/lightnvm.c /^ __le16 res16;$/;" m struct:nvme_nvm_id_group file: +res16 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 res16;$/;" m struct:nvme_nvm_id_group file: +reserved tools/nvme/lightnvm.c /^ __u8 reserved[10];$/;" m struct:nvme_nvm_id_group file: +reserved tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 reserved[10];$/;" m struct:nvme_nvm_id_group file: +reserved_blocks tools/lightnvm-v4.5.3/gennvm.h /^ int reserved_blocks;$/;" m struct:gen_lun +reserved_blocks tools/lightnvm/gennvm.h /^ int reserved_blocks;$/;" m struct:gen_lun +reset_ctrl tools/nvme/nvme.h /^ int (*reset_ctrl)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops +reset_ctrl tools/nvmedrv-v4.5.3/nvme.h /^ int (*reset_ctrl)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops +reset_work tools/nvme/pci.c /^ struct work_struct reset_work;$/;" m struct:nvme_dev typeref:struct:nvme_dev::work_struct file: +reset_work tools/nvmedrv-v4.5.3/pci.c /^ struct work_struct reset_work;$/;" m struct:nvme_dev typeref:struct:nvme_dev::work_struct file: +resv tools/nvme/lightnvm.c /^ __le64 resv;$/;" m struct:nvme_nvm_erase_blk file: +resv tools/nvme/lightnvm.c /^ __le64 resv;$/;" m struct:nvme_nvm_ph_rw file: +resv tools/nvme/lightnvm.c /^ __u8 resv[228];$/;" m struct:nvme_nvm_id file: +resv tools/nvme/scsi.c /^ u32 resv;$/;" m struct:scsi_unmap_blk_desc file: +resv tools/nvme/scsi.c /^ u32 resv;$/;" m struct:scsi_unmap_parm_list file: +resv tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 resv;$/;" m struct:nvme_nvm_erase_blk file: +resv tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 resv;$/;" m struct:nvme_nvm_ph_rw file: +resv tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 resv[228];$/;" m struct:nvme_nvm_id file: +resv tools/nvmedrv-v4.5.3/scsi.c /^ u32 resv;$/;" m struct:scsi_unmap_blk_desc file: +resv tools/nvmedrv-v4.5.3/scsi.c /^ u32 resv;$/;" m struct:scsi_unmap_parm_list file: +ret devices/common/dev_stub.h /^ uint8_t ret; \/* return value *\/$/;" m struct:__anon10 +ret include/bdbm_drv.h /^ uint8_t ret; \/* old for GC *\/$/;" m struct:__anon31 +ret include/bdbm_drv.h /^ uint8_t ret; \/* a return value will be kept here *\/$/;" m struct:__anon26 +ret include/bdbm_drv.h /^ uint8_t ret;$/;" m struct:__anon32 +rev_lock tools/lightnvm-v4.5.3/rrpc.h /^ spinlock_t rev_lock;$/;" m struct:rrpc +rev_lock tools/lightnvm/rrpc.h /^ spinlock_t rev_lock;$/;" m struct:rrpc +rev_trans_map tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_rev_addr *rev_trans_map;$/;" m struct:rrpc typeref:struct:rrpc::rrpc_rev_addr +rev_trans_map tools/lightnvm/rrpc.h /^ struct rrpc_rev_addr *rev_trans_map;$/;" m struct:rrpc typeref:struct:rrpc::rrpc_rev_addr +revid tools/nvme/lightnvm.c /^ __le16 revid;$/;" m struct:nvme_nvm_bb_tbl file: +revid tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 revid;$/;" m struct:nvme_nvm_bb_tbl file: +rf examples/raw-flash/kmain.c /^bdbm_raw_flash_t* rf = NULL;$/;" v +ri devices/ramdrive/dev_ramssd.h /^ void* ri;$/;" m struct:__anon12 +risa_dev_bluedbm-y devices/bluedbm/Makefile /^risa_dev_bluedbm-y := \\$/;" m +risa_dev_exit devices/common/dev_main.c /^module_exit (risa_dev_exit);$/;" v +risa_dev_exit devices/common/dev_main.c /^static void __exit risa_dev_exit (void)$/;" f file: +risa_dev_init devices/common/dev_main.c /^module_init (risa_dev_init);$/;" v +risa_dev_init devices/common/dev_main.c /^static int __init risa_dev_init (void)$/;" f file: +risa_dev_ramdrive-y devices/ramdrive/Makefile /^risa_dev_ramdrive-y := \\$/;" m +risa_dev_ramdrive_timing-y devices/ramdrive_timing/Makefile /^risa_dev_ramdrive_timing-y := \\$/;" m +rlun tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_lun *rlun;$/;" m struct:rrpc_block typeref:struct:rrpc_block::rrpc_lun +rlun tools/lightnvm/rrpc.h /^ struct rrpc_lun *rlun;$/;" m struct:rrpc_block typeref:struct:rrpc_block::rrpc_lun +rmw_read_cnt include/bdbm_drv.h /^ atomic64_t rmw_read_cnt;$/;" m struct:__anon43 +rmw_write_cnt include/bdbm_drv.h /^ atomic64_t rmw_write_cnt;$/;" m struct:__anon43 +robusta_drv-y Makefile /^robusta_drv-y := \\$/;" m +robusta_drv-y frontend/kernel/Makefile /^robusta_drv-y := \\$/;" m +row tools/lightnvm-v4.5.3/sysblk.c /^ int row;$/;" m struct:sysblk_scan file: +row tools/lightnvm/sysblk.c /^ int row;$/;" m struct:sysblk_scan file: +rq_pool tools/lightnvm-v4.5.3/rrpc.h /^ mempool_t *rq_pool;$/;" m struct:rrpc +rq_pool tools/lightnvm/rrpc.h /^ mempool_t *rq_pool;$/;" m struct:rrpc +rr examples/raw-flash/raw-flash.h /^ bdbm_llm_req_t* rr;$/;" m struct:__anon20 +rrpc tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc *rrpc;$/;" m struct:rrpc_block_gc typeref:struct:rrpc_block_gc::rrpc +rrpc tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc *rrpc;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc +rrpc tools/lightnvm-v4.5.3/rrpc.h /^struct rrpc {$/;" s +rrpc tools/lightnvm/rrpc.h /^ struct rrpc *rrpc;$/;" m struct:rrpc_block_gc typeref:struct:rrpc_block_gc::rrpc +rrpc tools/lightnvm/rrpc.h /^ struct rrpc *rrpc;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc +rrpc tools/lightnvm/rrpc.h /^struct rrpc {$/;" s +rrpc_addr tools/lightnvm-v4.5.3/rrpc.h /^struct rrpc_addr {$/;" s +rrpc_addr tools/lightnvm/rrpc.h /^struct rrpc_addr {$/;" s +rrpc_alloc_addr tools/lightnvm-v4.5.3/rrpc.c /^static u64 rrpc_alloc_addr(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +rrpc_alloc_addr tools/lightnvm/rrpc.c /^static u64 rrpc_alloc_addr(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +rrpc_block tools/lightnvm-v4.5.3/rrpc.h /^struct rrpc_block {$/;" s +rrpc_block tools/lightnvm/rrpc.h /^struct rrpc_block {$/;" s +rrpc_block_gc tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_block_gc(struct work_struct *work)$/;" f file: +rrpc_block_gc tools/lightnvm-v4.5.3/rrpc.h /^struct rrpc_block_gc {$/;" s +rrpc_block_gc tools/lightnvm/rrpc.c /^static void rrpc_block_gc(struct work_struct *work)$/;" f file: +rrpc_block_gc tools/lightnvm/rrpc.h /^struct rrpc_block_gc {$/;" s +rrpc_block_map_update tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_block_map_update(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +rrpc_block_map_update tools/lightnvm/rrpc.c /^static void rrpc_block_map_update(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +rrpc_blocks_init tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_blocks_init(struct rrpc *rrpc)$/;" f file: +rrpc_blocks_init tools/lightnvm/rrpc.c /^static int rrpc_blocks_init(struct rrpc *rrpc)$/;" f file: +rrpc_capacity tools/lightnvm-v4.5.3/rrpc.c /^static sector_t rrpc_capacity(void *private)$/;" f file: +rrpc_capacity tools/lightnvm/rrpc.c /^static sector_t rrpc_capacity(void *private)$/;" f file: +rrpc_core_free tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_core_free(struct rrpc *rrpc)$/;" f file: +rrpc_core_free tools/lightnvm/rrpc.c /^static void rrpc_core_free(struct rrpc *rrpc)$/;" f file: +rrpc_core_init tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_core_init(struct rrpc *rrpc)$/;" f file: +rrpc_core_init tools/lightnvm/rrpc.c /^static int rrpc_core_init(struct rrpc *rrpc)$/;" f file: +rrpc_discard tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_discard(struct rrpc *rrpc, struct bio *bio)$/;" f file: +rrpc_discard tools/lightnvm/rrpc.c /^static void rrpc_discard(struct rrpc *rrpc, struct bio *bio)$/;" f file: +rrpc_end_io tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_end_io(struct nvm_rq *rqd)$/;" f file: +rrpc_end_io tools/lightnvm/rrpc.c /^static void rrpc_end_io(struct nvm_rq *rqd)$/;" f file: +rrpc_end_io_write tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_end_io_write(struct rrpc *rrpc, struct rrpc_rq *rrqd,$/;" f file: +rrpc_end_io_write tools/lightnvm/rrpc.c /^static void rrpc_end_io_write(struct rrpc *rrpc, struct rrpc_rq *rrqd,$/;" f file: +rrpc_end_sync_bio tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_end_sync_bio(struct bio *bio)$/;" f file: +rrpc_end_sync_bio tools/lightnvm/rrpc.c /^static void rrpc_end_sync_bio(struct bio *bio)$/;" f file: +rrpc_exit tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_exit(void *private)$/;" f file: +rrpc_exit tools/lightnvm/rrpc.c /^static void rrpc_exit(void *private)$/;" f file: +rrpc_fops tools/lightnvm-v4.5.3/rrpc.c /^static const struct block_device_operations rrpc_fops = {$/;" v typeref:struct:block_device_operations file: +rrpc_fops tools/lightnvm/rrpc.c /^static const struct block_device_operations rrpc_fops = {$/;" v typeref:struct:block_device_operations file: +rrpc_for_each_lun tools/lightnvm-v4.5.3/rrpc.c 25;" d file: +rrpc_for_each_lun tools/lightnvm/rrpc.c 25;" d file: +rrpc_free tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_free(struct rrpc *rrpc)$/;" f file: +rrpc_free tools/lightnvm/rrpc.c /^static void rrpc_free(struct rrpc *rrpc)$/;" f file: +rrpc_gc_free tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_gc_free(struct rrpc *rrpc)$/;" f file: +rrpc_gc_free tools/lightnvm/rrpc.c /^static void rrpc_gc_free(struct rrpc *rrpc)$/;" f file: +rrpc_gc_init tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_gc_init(struct rrpc *rrpc)$/;" f file: +rrpc_gc_init tools/lightnvm/rrpc.c /^static int rrpc_gc_init(struct rrpc *rrpc)$/;" f file: +rrpc_gc_kick tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_gc_kick(struct rrpc *rrpc)$/;" f file: +rrpc_gc_kick tools/lightnvm/rrpc.c /^static void rrpc_gc_kick(struct rrpc *rrpc)$/;" f file: +rrpc_gc_queue tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_gc_queue(struct work_struct *work)$/;" f file: +rrpc_gc_queue tools/lightnvm/rrpc.c /^static void rrpc_gc_queue(struct work_struct *work)$/;" f file: +rrpc_gc_timer tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_gc_timer(unsigned long data)$/;" f file: +rrpc_gc_timer tools/lightnvm/rrpc.c /^static void rrpc_gc_timer(unsigned long data)$/;" f file: +rrpc_gcb_cache tools/lightnvm-v4.5.3/rrpc.c /^static struct kmem_cache *rrpc_gcb_cache, *rrpc_rq_cache;$/;" v typeref:struct:kmem_cache file: +rrpc_gcb_cache tools/lightnvm/rrpc.c /^static struct kmem_cache *rrpc_gcb_cache, *rrpc_rq_cache;$/;" v typeref:struct:kmem_cache file: +rrpc_get_blk tools/lightnvm-v4.5.3/rrpc.c /^static struct rrpc_block *rrpc_get_blk(struct rrpc *rrpc, struct rrpc_lun *rlun,$/;" f file: +rrpc_get_blk tools/lightnvm/rrpc.c /^static struct rrpc_block *rrpc_get_blk(struct rrpc *rrpc, struct rrpc_lun *rlun,$/;" f file: +rrpc_get_inflight_rq tools/lightnvm-v4.5.3/rrpc.h /^static inline struct rrpc_inflight_rq *rrpc_get_inflight_rq(struct nvm_rq *rqd)$/;" f +rrpc_get_inflight_rq tools/lightnvm/rrpc.h /^static inline struct rrpc_inflight_rq *rrpc_get_inflight_rq(struct nvm_rq *rqd)$/;" f +rrpc_get_laddr tools/lightnvm-v4.5.3/rrpc.h /^static inline sector_t rrpc_get_laddr(struct bio *bio)$/;" f +rrpc_get_laddr tools/lightnvm/rrpc.h /^static inline sector_t rrpc_get_laddr(struct bio *bio)$/;" f +rrpc_get_lun_rr tools/lightnvm-v4.5.3/rrpc.c /^static struct rrpc_lun *rrpc_get_lun_rr(struct rrpc *rrpc, int is_gc)$/;" f file: +rrpc_get_lun_rr tools/lightnvm/rrpc.c /^static struct rrpc_lun *rrpc_get_lun_rr(struct rrpc *rrpc, int is_gc)$/;" f file: +rrpc_get_pages tools/lightnvm-v4.5.3/rrpc.h /^static inline unsigned int rrpc_get_pages(struct bio *bio)$/;" f +rrpc_get_pages tools/lightnvm/rrpc.h /^static inline unsigned int rrpc_get_pages(struct bio *bio)$/;" f +rrpc_get_sector tools/lightnvm-v4.5.3/rrpc.h /^static inline sector_t rrpc_get_sector(sector_t laddr)$/;" f +rrpc_get_sector tools/lightnvm/rrpc.h /^static inline sector_t rrpc_get_sector(sector_t laddr)$/;" f +rrpc_inflight tools/lightnvm-v4.5.3/rrpc.h /^struct rrpc_inflight {$/;" s +rrpc_inflight tools/lightnvm/rrpc.h /^struct rrpc_inflight {$/;" s +rrpc_inflight_laddr_acquire tools/lightnvm-v4.5.3/rrpc.c /^static struct nvm_rq *rrpc_inflight_laddr_acquire(struct rrpc *rrpc,$/;" f file: +rrpc_inflight_laddr_acquire tools/lightnvm/rrpc.c /^static struct nvm_rq *rrpc_inflight_laddr_acquire(struct rrpc *rrpc,$/;" f file: +rrpc_inflight_laddr_release tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_inflight_laddr_release(struct rrpc *rrpc, struct nvm_rq *rqd)$/;" f file: +rrpc_inflight_laddr_release tools/lightnvm/rrpc.c /^static void rrpc_inflight_laddr_release(struct rrpc *rrpc, struct nvm_rq *rqd)$/;" f file: +rrpc_inflight_rq tools/lightnvm-v4.5.3/rrpc.h /^struct rrpc_inflight_rq {$/;" s +rrpc_inflight_rq tools/lightnvm/rrpc.h /^struct rrpc_inflight_rq {$/;" s +rrpc_init tools/lightnvm-v4.5.3/rrpc.c /^static void *rrpc_init(struct nvm_dev *dev, struct gendisk *tdisk,$/;" f file: +rrpc_init tools/lightnvm/rrpc.c /^static void *rrpc_init(struct nvm_dev *dev, struct gendisk *tdisk,$/;" f file: +rrpc_invalidate_range tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_invalidate_range(struct rrpc *rrpc, sector_t slba,$/;" f file: +rrpc_invalidate_range tools/lightnvm/rrpc.c /^static void rrpc_invalidate_range(struct rrpc *rrpc, sector_t slba,$/;" f file: +rrpc_l2p_update tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_l2p_update(u64 slba, u32 nlb, __le64 *entries, void *private)$/;" f file: +rrpc_l2p_update tools/lightnvm/rrpc.c /^static int rrpc_l2p_update(u64 slba, u32 nlb, __le64 *entries, void *private)$/;" f file: +rrpc_lock_laddr tools/lightnvm-v4.5.3/rrpc.h /^static inline int rrpc_lock_laddr(struct rrpc *rrpc, sector_t laddr,$/;" f +rrpc_lock_laddr tools/lightnvm/rrpc.h /^static inline int rrpc_lock_laddr(struct rrpc *rrpc, sector_t laddr,$/;" f +rrpc_lock_rq tools/lightnvm-v4.5.3/rrpc.h /^static inline int rrpc_lock_rq(struct rrpc *rrpc, struct bio *bio,$/;" f +rrpc_lock_rq tools/lightnvm/rrpc.h /^static inline int rrpc_lock_rq(struct rrpc *rrpc, struct bio *bio,$/;" f +rrpc_lun tools/lightnvm-v4.5.3/rrpc.h /^struct rrpc_lun {$/;" s +rrpc_lun tools/lightnvm/rrpc.h /^struct rrpc_lun {$/;" s +rrpc_lun_gc tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_lun_gc(struct work_struct *work)$/;" f file: +rrpc_lun_gc tools/lightnvm/rrpc.c /^static void rrpc_lun_gc(struct work_struct *work)$/;" f file: +rrpc_luns_configure tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_luns_configure(struct rrpc *rrpc)$/;" f file: +rrpc_luns_configure tools/lightnvm/rrpc.c /^static int rrpc_luns_configure(struct rrpc *rrpc)$/;" f file: +rrpc_luns_free tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_luns_free(struct rrpc *rrpc)$/;" f file: +rrpc_luns_free tools/lightnvm/rrpc.c /^static void rrpc_luns_free(struct rrpc *rrpc)$/;" f file: +rrpc_luns_init tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_luns_init(struct rrpc *rrpc, int lun_begin, int lun_end)$/;" f file: +rrpc_luns_init tools/lightnvm/rrpc.c /^static int rrpc_luns_init(struct rrpc *rrpc, int lun_begin, int lun_end)$/;" f file: +rrpc_make_rq tools/lightnvm-v4.5.3/rrpc.c /^static blk_qc_t rrpc_make_rq(struct request_queue *q, struct bio *bio)$/;" f file: +rrpc_make_rq tools/lightnvm/rrpc.c /^static blk_qc_t rrpc_make_rq(struct request_queue *q, struct bio *bio)$/;" f file: +rrpc_map_free tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_map_free(struct rrpc *rrpc)$/;" f file: +rrpc_map_free tools/lightnvm/rrpc.c /^static void rrpc_map_free(struct rrpc *rrpc)$/;" f file: +rrpc_map_init tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_map_init(struct rrpc *rrpc)$/;" f file: +rrpc_map_init tools/lightnvm/rrpc.c /^static int rrpc_map_init(struct rrpc *rrpc)$/;" f file: +rrpc_map_page tools/lightnvm-v4.5.3/rrpc.c /^static struct rrpc_addr *rrpc_map_page(struct rrpc *rrpc, sector_t laddr,$/;" f file: +rrpc_map_page tools/lightnvm/rrpc.c /^static struct rrpc_addr *rrpc_map_page(struct rrpc *rrpc, sector_t laddr,$/;" f file: +rrpc_module_exit tools/lightnvm-v4.5.3/rrpc.c /^module_exit(rrpc_module_exit);$/;" v +rrpc_module_exit tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_module_exit(void)$/;" f file: +rrpc_module_exit tools/lightnvm/rrpc.c /^module_exit(rrpc_module_exit);$/;" v +rrpc_module_exit tools/lightnvm/rrpc.c /^static void rrpc_module_exit(void)$/;" f file: +rrpc_module_init tools/lightnvm-v4.5.3/rrpc.c /^module_init(rrpc_module_init);$/;" v +rrpc_module_init tools/lightnvm-v4.5.3/rrpc.c /^static int __init rrpc_module_init(void)$/;" f file: +rrpc_module_init tools/lightnvm/rrpc.c /^module_init(rrpc_module_init);$/;" v +rrpc_module_init tools/lightnvm/rrpc.c /^static int __init rrpc_module_init(void)$/;" f file: +rrpc_move_valid_pages tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_move_valid_pages(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +rrpc_move_valid_pages tools/lightnvm/rrpc.c /^static int rrpc_move_valid_pages(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +rrpc_page_invalidate tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_page_invalidate(struct rrpc *rrpc, struct rrpc_addr *a)$/;" f file: +rrpc_page_invalidate tools/lightnvm/rrpc.c /^static void rrpc_page_invalidate(struct rrpc *rrpc, struct rrpc_addr *a)$/;" f file: +rrpc_ppa_to_gaddr tools/lightnvm-v4.5.3/rrpc.c /^static struct ppa_addr rrpc_ppa_to_gaddr(struct nvm_dev *dev, u64 addr)$/;" f file: +rrpc_ppa_to_gaddr tools/lightnvm/rrpc.c /^static struct ppa_addr rrpc_ppa_to_gaddr(struct nvm_dev *dev, u64 addr)$/;" f file: +rrpc_put_blk tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_put_blk(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +rrpc_put_blk tools/lightnvm/rrpc.c /^static void rrpc_put_blk(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +rrpc_put_blks tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_put_blks(struct rrpc *rrpc)$/;" f file: +rrpc_put_blks tools/lightnvm/rrpc.c /^static void rrpc_put_blks(struct rrpc *rrpc)$/;" f file: +rrpc_read_ppalist_rq tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_read_ppalist_rq(struct rrpc *rrpc, struct bio *bio,$/;" f file: +rrpc_read_ppalist_rq tools/lightnvm/rrpc.c /^static int rrpc_read_ppalist_rq(struct rrpc *rrpc, struct bio *bio,$/;" f file: +rrpc_read_rq tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_read_rq(struct rrpc *rrpc, struct bio *bio, struct nvm_rq *rqd,$/;" f file: +rrpc_read_rq tools/lightnvm/rrpc.c /^static int rrpc_read_rq(struct rrpc *rrpc, struct bio *bio, struct nvm_rq *rqd,$/;" f file: +rrpc_requeue tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_requeue(struct work_struct *work)$/;" f file: +rrpc_requeue tools/lightnvm/rrpc.c /^static void rrpc_requeue(struct work_struct *work)$/;" f file: +rrpc_rev_addr tools/lightnvm-v4.5.3/rrpc.h /^struct rrpc_rev_addr {$/;" s +rrpc_rev_addr tools/lightnvm/rrpc.h /^struct rrpc_rev_addr {$/;" s +rrpc_rq tools/lightnvm-v4.5.3/rrpc.h /^struct rrpc_rq {$/;" s +rrpc_rq tools/lightnvm/rrpc.h /^struct rrpc_rq {$/;" s +rrpc_rq_cache tools/lightnvm-v4.5.3/rrpc.c /^static struct kmem_cache *rrpc_gcb_cache, *rrpc_rq_cache;$/;" v typeref:struct: file: +rrpc_rq_cache tools/lightnvm/rrpc.c /^static struct kmem_cache *rrpc_gcb_cache, *rrpc_rq_cache;$/;" v typeref:struct: file: +rrpc_run_gc tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_run_gc(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +rrpc_run_gc tools/lightnvm/rrpc.c /^static void rrpc_run_gc(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: +rrpc_set_lun_cur tools/lightnvm-v4.5.3/rrpc.c /^static void rrpc_set_lun_cur(struct rrpc_lun *rlun, struct rrpc_block *rblk)$/;" f file: +rrpc_set_lun_cur tools/lightnvm/rrpc.c /^static void rrpc_set_lun_cur(struct rrpc_lun *rlun, struct rrpc_block *rblk)$/;" f file: +rrpc_setup_rq tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_setup_rq(struct rrpc *rrpc, struct bio *bio,$/;" f file: +rrpc_setup_rq tools/lightnvm/rrpc.c /^static int rrpc_setup_rq(struct rrpc *rrpc, struct bio *bio,$/;" f file: +rrpc_submit_io tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_submit_io(struct rrpc *rrpc, struct bio *bio,$/;" f file: +rrpc_submit_io tools/lightnvm/rrpc.c /^static int rrpc_submit_io(struct rrpc *rrpc, struct bio *bio,$/;" f file: +rrpc_unlock_laddr tools/lightnvm-v4.5.3/rrpc.h /^static inline void rrpc_unlock_laddr(struct rrpc *rrpc,$/;" f +rrpc_unlock_laddr tools/lightnvm/rrpc.h /^static inline void rrpc_unlock_laddr(struct rrpc *rrpc,$/;" f +rrpc_unlock_rq tools/lightnvm-v4.5.3/rrpc.h /^static inline void rrpc_unlock_rq(struct rrpc *rrpc, struct nvm_rq *rqd)$/;" f +rrpc_unlock_rq tools/lightnvm/rrpc.h /^static inline void rrpc_unlock_rq(struct rrpc *rrpc, struct nvm_rq *rqd)$/;" f +rrpc_update_map tools/lightnvm-v4.5.3/rrpc.c /^static struct rrpc_addr *rrpc_update_map(struct rrpc *rrpc, sector_t laddr,$/;" f file: +rrpc_update_map tools/lightnvm/rrpc.c /^static struct rrpc_addr *rrpc_update_map(struct rrpc *rrpc, sector_t laddr,$/;" f file: +rrpc_write_ppalist_rq tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_write_ppalist_rq(struct rrpc *rrpc, struct bio *bio,$/;" f file: +rrpc_write_ppalist_rq tools/lightnvm/rrpc.c /^static int rrpc_write_ppalist_rq(struct rrpc *rrpc, struct bio *bio,$/;" f file: +rrpc_write_rq tools/lightnvm-v4.5.3/rrpc.c /^static int rrpc_write_rq(struct rrpc *rrpc, struct bio *bio,$/;" f file: +rrpc_write_rq tools/lightnvm/rrpc.c /^static int rrpc_write_rq(struct rrpc *rrpc, struct bio *bio,$/;" f file: +rsvd tools/nvme/lightnvm.c /^ __le64 rsvd[2];$/;" m struct:nvme_nvm_setbbtbl file: +rsvd tools/nvme/lightnvm.c /^ __u64 rsvd[2];$/;" m struct:nvme_nvm_erase_blk file: +rsvd tools/nvme/lightnvm.c /^ __u64 rsvd[2];$/;" m struct:nvme_nvm_getbbtbl file: +rsvd tools/nvme/lightnvm.c /^ __u64 rsvd[2];$/;" m struct:nvme_nvm_identity file: +rsvd tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 rsvd[2];$/;" m struct:nvme_nvm_setbbtbl file: +rsvd tools/nvmedrv-v4.5.3/lightnvm.c /^ __u64 rsvd[2];$/;" m struct:nvme_nvm_erase_blk file: +rsvd tools/nvmedrv-v4.5.3/lightnvm.c /^ __u64 rsvd[2];$/;" m struct:nvme_nvm_getbbtbl file: +rsvd tools/nvmedrv-v4.5.3/lightnvm.c /^ __u64 rsvd[2];$/;" m struct:nvme_nvm_identity file: +rsvd1 tools/nvme/lightnvm.c /^ __u8 rsvd1;$/;" m struct:nvme_nvm_id_group file: +rsvd1 tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 rsvd1;$/;" m struct:nvme_nvm_id_group file: +rsvd11 tools/nvme/lightnvm.c /^ __u32 rsvd11[5];$/;" m struct:nvme_nvm_identity file: +rsvd11 tools/nvmedrv-v4.5.3/lightnvm.c /^ __u32 rsvd11[5];$/;" m struct:nvme_nvm_identity file: +rsvd2 tools/nvme/lightnvm.c /^ __le16 rsvd2;$/;" m struct:nvme_nvm_id_group file: +rsvd2 tools/nvme/lightnvm.c /^ __le32 rsvd2[8];$/;" m struct:nvme_nvm_bb_tbl file: +rsvd2 tools/nvme/lightnvm.c /^ __u64 rsvd2;$/;" m struct:nvme_nvm_hb_rw file: +rsvd2 tools/nvme/lightnvm.c /^ __u64 rsvd2;$/;" m struct:nvme_nvm_ph_rw file: +rsvd2 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 rsvd2;$/;" m struct:nvme_nvm_id_group file: +rsvd2 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 rsvd2[8];$/;" m struct:nvme_nvm_bb_tbl file: +rsvd2 tools/nvmedrv-v4.5.3/lightnvm.c /^ __u64 rsvd2;$/;" m struct:nvme_nvm_hb_rw file: +rsvd2 tools/nvmedrv-v4.5.3/lightnvm.c /^ __u64 rsvd2;$/;" m struct:nvme_nvm_ph_rw file: +rsvd3 tools/nvme/lightnvm.c /^ __u8 rsvd3;$/;" m struct:nvme_nvm_setbbtbl file: +rsvd3 tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 rsvd3;$/;" m struct:nvme_nvm_setbbtbl file: +rsvd4 tools/nvme/lightnvm.c /^ __u32 rsvd4[3];$/;" m struct:nvme_nvm_setbbtbl file: +rsvd4 tools/nvme/lightnvm.c /^ __u32 rsvd4[4];$/;" m struct:nvme_nvm_getbbtbl file: +rsvd4 tools/nvmedrv-v4.5.3/lightnvm.c /^ __u32 rsvd4[3];$/;" m struct:nvme_nvm_setbbtbl file: +rsvd4 tools/nvmedrv-v4.5.3/lightnvm.c /^ __u32 rsvd4[4];$/;" m struct:nvme_nvm_getbbtbl file: +run_async_test examples/raw-flash/kmain.c /^static void run_async_test (bdbm_device_params_t* np, int check_value)$/;" f file: +run_sync_test examples/raw-flash/kmain.c /^static void run_sync_test (bdbm_device_params_t* np)$/;" f file: +rvsd1 tools/nvme/lightnvm.c /^ __le32 rvsd1;$/;" m struct:nvme_nvm_bb_tbl file: +rvsd1 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 rvsd1;$/;" m struct:nvme_nvm_bb_tbl file: +rw devices/dumbssd/dev_hynix_nvme.h /^ int rw;$/;" m struct:__anon17 +rw_pg_ofs ftl/algo/block_ftl.c /^ int64_t rw_pg_ofs; \/* recently-written page offset *\/$/;" m struct:__anon77 file: +scan_badblocks include/bdbm_drv.h /^ uint32_t (*scan_badblocks) (bdbm_drv_info_t* bdi);$/;" m struct:__anon42 +scan_ppa_idx tools/lightnvm-v4.5.3/sysblk.c /^static inline int scan_ppa_idx(int row, int blkid)$/;" f file: +scan_ppa_idx tools/lightnvm/sysblk.c /^static inline int scan_ppa_idx(int row, int blkid)$/;" f file: +scan_work tools/nvme/pci.c /^ struct work_struct scan_work;$/;" m struct:nvme_dev typeref:struct:nvme_dev::work_struct file: +scan_work tools/nvmedrv-v4.5.3/pci.c /^ struct work_struct scan_work;$/;" m struct:nvme_dev typeref:struct:nvme_dev::work_struct file: +scsi_unmap_blk_desc tools/nvme/scsi.c /^struct scsi_unmap_blk_desc {$/;" s file: +scsi_unmap_blk_desc tools/nvmedrv-v4.5.3/scsi.c /^struct scsi_unmap_blk_desc {$/;" s file: +scsi_unmap_parm_list tools/nvme/scsi.c /^struct scsi_unmap_parm_list {$/;" s file: +scsi_unmap_parm_list tools/nvmedrv-v4.5.3/scsi.c /^struct scsi_unmap_parm_list {$/;" s file: +search_pattern_directory examples/stringsearch/ss.c /^int search_pattern_directory (const char* pattern, const char* fname, int lvl)$/;" f +search_pattern_file examples/stringsearch/ss.c /^int search_pattern_file (const char* pattern, const char* fname) $/;" f +sect_len tools/nvme/lightnvm.c /^ __u8 sect_len;$/;" m struct:nvme_nvm_addr_format file: +sect_len tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 sect_len;$/;" m struct:nvme_nvm_addr_format file: +sect_offset tools/nvme/lightnvm.c /^ __u8 sect_offset;$/;" m struct:nvme_nvm_addr_format file: +sect_offset tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 sect_offset;$/;" m struct:nvme_nvm_addr_format file: +seg_buf ftl/hlm_rsd.c /^ segment_buf_t* seg_buf;$/;" m struct:__anon91 file: +seg_no ftl/hlm_rsd.c /^ uint32_t seg_no;$/;" m struct:__anon90 file: +segment_buf_t ftl/hlm_rsd.c /^} segment_buf_t;$/;" t typeref:struct:__anon90 file: +sem frontend/hybrid/blkio_proxy.c /^ struct semaphore sem;$/;" m struct:__anon61 typeref:struct:__anon61::semaphore file: +serial tools/nvme/core.c /^nvme_show_function(serial);$/;" v +serial tools/nvme/nvme.h /^ char serial[20];$/;" m struct:nvme_ctrl +serial tools/nvmedrv-v4.5.3/core.c /^nvme_show_function(serial);$/;" v +serial tools/nvmedrv-v4.5.3/nvme.h /^ char serial[20];$/;" m struct:nvme_ctrl +set_bb tools/nvme/lightnvm.c /^ struct nvme_nvm_setbbtbl set_bb;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_setbbtbl file: +set_bb tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_setbbtbl set_bb;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_setbbtbl file: +sg tools/nvme/pci.c /^ struct scatterlist *sg;$/;" m struct:nvme_iod typeref:struct:nvme_iod::scatterlist file: +sg tools/nvmedrv-v4.5.3/pci.c /^ struct scatterlist *sg;$/;" m struct:nvme_iod typeref:struct:nvme_iod::scatterlist file: +sg_version_num tools/nvme/scsi.c /^static int sg_version_num = 30534; \/* 2 digits for each component *\/$/;" v file: +sg_version_num tools/nvmedrv-v4.5.3/scsi.c /^static int sg_version_num = 30534; \/* 2 digits for each component *\/$/;" v file: +shutdown_lock tools/nvme/pci.c /^ struct mutex shutdown_lock;$/;" m struct:nvme_dev typeref:struct:nvme_dev::mutex file: +shutdown_lock tools/nvmedrv-v4.5.3/pci.c /^ struct mutex shutdown_lock;$/;" m struct:nvme_dev typeref:struct:nvme_dev::mutex file: +shutdown_timeout tools/nvme/pci.c /^unsigned char shutdown_timeout = 5;$/;" v +shutdown_timeout tools/nvmedrv-v4.5.3/pci.c /^unsigned char shutdown_timeout = 5;$/;" v +signal_callback frontend/hybrid/umain.c /^void signal_callback (int signum)$/;" f +signature common/3rd/uthash.h /^ uint32_t signature; \/* used only to find hash tables in external analysis *\/$/;" m struct:UT_hash_table +simple_erase devices/dumbssd/dev_hynix_nvme.c /^int simple_erase (dumb_ssd_dev_t* dev, hd_req_t* hc)$/;" f +simple_read devices/dumbssd/dev_hynix_nvme.c /^int simple_read (dumb_ssd_dev_t* dev, hd_req_t* hc)$/;" f +simple_write devices/dumbssd/dev_hynix_nvme.c /^int simple_write (dumb_ssd_dev_t* dev, hd_req_t* hc)$/;" f +slba tools/nvme/lightnvm.c /^ __le64 slba;$/;" m struct:nvme_nvm_hb_rw file: +slba tools/nvme/lightnvm.c /^ __le64 slba;$/;" m struct:nvme_nvm_l2ptbl file: +slba tools/nvme/scsi.c /^ __be64 slba;$/;" m struct:scsi_unmap_blk_desc file: +slba tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 slba;$/;" m struct:nvme_nvm_hb_rw file: +slba tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 slba;$/;" m struct:nvme_nvm_l2ptbl file: +slba tools/nvmedrv-v4.5.3/scsi.c /^ __be64 slba;$/;" m struct:scsi_unmap_blk_desc file: +snapshot include/params.h /^ uint32_t snapshot; \/* 0: disable (default), 1: enable *\/$/;" m struct:__anon45 +sos tools/nvme/lightnvm.c /^ __le16 sos;$/;" m struct:nvme_nvm_id_group file: +sos tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 sos;$/;" m struct:nvme_nvm_id_group file: +sp_off ftl/algo/page_ftl.c /^ uint8_t sp_off;$/;" m struct:__anon87 file: +spba tools/nvme/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_erase_blk file: +spba tools/nvme/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_getbbtbl file: +spba tools/nvme/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_hb_rw file: +spba tools/nvme/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_ph_rw file: +spba tools/nvme/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_setbbtbl file: +spba tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_erase_blk file: +spba tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_getbbtbl file: +spba tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_hb_rw file: +spba tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_ph_rw file: +spba tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_setbbtbl file: +sq_cmds tools/nvme/pci.c /^ struct nvme_command *sq_cmds;$/;" m struct:nvme_queue typeref:struct:nvme_queue::nvme_command file: +sq_cmds tools/nvmedrv-v4.5.3/pci.c /^ struct nvme_command *sq_cmds;$/;" m struct:nvme_queue typeref:struct:nvme_queue::nvme_command file: +sq_cmds_io tools/nvme/pci.c /^ struct nvme_command __iomem *sq_cmds_io;$/;" m struct:nvme_queue typeref:struct:nvme_queue::__iomem file: +sq_cmds_io tools/nvmedrv-v4.5.3/pci.c /^ struct nvme_command __iomem *sq_cmds_io;$/;" m struct:nvme_queue typeref:struct:nvme_queue::__iomem file: +sq_dma_addr tools/nvme/pci.c /^ dma_addr_t sq_dma_addr;$/;" m struct:nvme_queue file: +sq_dma_addr tools/nvmedrv-v4.5.3/pci.c /^ dma_addr_t sq_dma_addr;$/;" m struct:nvme_queue file: +sq_head tools/nvme/pci.c /^ u16 sq_head;$/;" m struct:nvme_queue file: +sq_head tools/nvmedrv-v4.5.3/pci.c /^ u16 sq_head;$/;" m struct:nvme_queue file: +sq_tail tools/nvme/pci.c /^ u16 sq_tail;$/;" m struct:nvme_queue file: +sq_tail tools/nvmedrv-v4.5.3/pci.c /^ u16 sq_tail;$/;" m struct:nvme_queue file: +start common/utils/utime.h /^ ktime_t start;$/;" m struct:__anon3 +status ftl/algo/abm.h /^ uint8_t status; \/* ABM_BLK_STATUS *\/$/;" m struct:__anon79 +status ftl/algo/block_ftl.c /^ uint8_t status; \/* BDBM_BFTL_BLOCK_STATUS *\/$/;" m struct:__anon77 file: +status ftl/algo/dftl_map.h /^ dir_stat status;$/;" m struct:__anon84 +status ftl/algo/dftl_map.h /^ uint8_t status;$/;" m struct:__anon83 +status ftl/algo/page_ftl.c /^ uint8_t status; \/* BDBM_PFTL_PAGE_STATUS *\/$/;" m struct:__anon87 file: +stop examples/stub_test/main.c /^ int stop;$/;" m struct:__anon23 file: +stop frontend/hybrid/blkio_stub.c /^ int stop;$/;" m struct:__anon64 file: +stop frontend/user/dev_proxy.c /^ int stop;$/;" m struct:__anon54 file: +store include/bdbm_drv.h /^ uint32_t (*store) (bdbm_drv_info_t* bdi, const char* fn);$/;" m struct:__anon41 +store include/bdbm_drv.h /^ uint32_t (*store) (bdbm_drv_info_t* bdi, const char* fn);$/;" m struct:__anon42 +str ftl/pmu.c /^char str[1024];$/;" v +stripe_size tools/nvme/nvme.h /^ u32 stripe_size;$/;" m struct:nvme_ctrl +stripe_size tools/nvmedrv-v4.5.3/nvme.h /^ u32 stripe_size;$/;" m struct:nvme_ctrl +stt frontend/hybrid/blkio_proxy_ioctl.h /^ bdbm_proxy_req_status_t stt;$/;" m struct:__anon63 +submit_io_done devices/dumbssd/dev_hynix_nvme.c /^static void submit_io_done (struct request *rq, int error)$/;" f file: +subsystem tools/nvme/nvme.h /^ bool subsystem;$/;" m struct:nvme_ctrl +subsystem tools/nvme/pci.c /^ bool subsystem;$/;" m struct:nvme_dev file: +subsystem tools/nvmedrv-v4.5.3/nvme.h /^ bool subsystem;$/;" m struct:nvme_ctrl +subsystem tools/nvmedrv-v4.5.3/pci.c /^ bool subsystem;$/;" m struct:nvme_dev file: +sw devices/ramdrive/dev_ramssd.h /^ bdbm_stopwatch_t sw;$/;" m struct:__anon11 +sw include/bdbm_drv.h /^ bdbm_stopwatch_t sw;$/;" m struct:__anon32 +sw_comp examples/stringsearch/ss_impl_sw.c /^int sw_comp (const int fd_dev, const char* pattern, const int start_blk, const int blks)$/;" f +sw_comp_display examples/stringsearch/ss_impl_sw.c /^int sw_comp_display (const int fd_dev, const char* pattern, const int start_blk, const int len)$/;" f +sysblk_get_free_blks tools/lightnvm-v4.5.3/sysblk.c /^static int sysblk_get_free_blks(struct ppa_addr ppa, int nr_blks, u8 *blks,$/;" f file: +sysblk_get_free_blks tools/lightnvm/sysblk.c /^static int sysblk_get_free_blks(struct ppa_addr ppa, int nr_blks, u8 *blks,$/;" f file: +sysblk_get_host_blks tools/lightnvm-v4.5.3/sysblk.c /^static int sysblk_get_host_blks(struct ppa_addr ppa, int nr_blks, u8 *blks,$/;" f file: +sysblk_get_host_blks tools/lightnvm/sysblk.c /^static int sysblk_get_host_blks(struct ppa_addr ppa, int nr_blks, u8 *blks,$/;" f file: +sysblk_scan tools/lightnvm-v4.5.3/sysblk.c /^struct sysblk_scan {$/;" s file: +sysblk_scan tools/lightnvm/sysblk.c /^struct sysblk_scan {$/;" s file: +sz common/3rd/utarray.h /^ size_t sz;$/;" m struct:__anon4 +tag ftl/queue/prior_queue.h /^ uint64_t tag;$/;" m struct:__anon70 +tag ftl/queue/rd_prior_queue.h /^ uint64_t tag;$/;" m struct:__anon74 +tags tools/nvme/pci.c /^ struct blk_mq_tags **tags;$/;" m struct:nvme_queue typeref:struct:nvme_queue::blk_mq_tags file: +tags tools/nvmedrv-v4.5.3/pci.c /^ struct blk_mq_tags **tags;$/;" m struct:nvme_queue typeref:struct:nvme_queue::blk_mq_tags file: +tagset tools/nvme/nvme.h /^ struct blk_mq_tag_set *tagset;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::blk_mq_tag_set +tagset tools/nvme/pci.c /^ struct blk_mq_tag_set tagset;$/;" m struct:nvme_dev typeref:struct:nvme_dev::blk_mq_tag_set file: +tagset tools/nvmedrv-v4.5.3/nvme.h /^ struct blk_mq_tag_set *tagset;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::blk_mq_tag_set +tagset tools/nvmedrv-v4.5.3/pci.c /^ struct blk_mq_tag_set tagset;$/;" m struct:nvme_dev typeref:struct:nvme_dev::blk_mq_tag_set file: +tail common/3rd/uthash.h /^ struct UT_hash_handle *tail; \/* tail hh in app order, for fast append *\/$/;" m struct:UT_hash_table typeref:struct:UT_hash_table::UT_hash_handle +target_elapsed_time_us devices/ramdrive/dev_ramssd.h /^ int64_t target_elapsed_time_us;$/;" m struct:__anon11 +task frontend/kernel/blkdev.c /^static struct task_struct *task = NULL;$/;" v typeref:struct:task_struct file: +task_completion frontend/kernel/blkdev.c /^DECLARE_COMPLETION (task_completion);$/;" v +tbem tools/nvme/lightnvm.c /^ __le32 tbem;$/;" m struct:nvme_nvm_id_group file: +tbem tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 tbem;$/;" m struct:nvme_nvm_id_group file: +tbet tools/nvme/lightnvm.c /^ __le32 tbet;$/;" m struct:nvme_nvm_id_group file: +tbet tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 tbet;$/;" m struct:nvme_nvm_id_group file: +tbl common/3rd/uthash.h /^ struct UT_hash_table *tbl;$/;" m struct:UT_hash_handle typeref:struct:UT_hash_handle::UT_hash_table +tblid tools/nvme/lightnvm.c /^ __u8 tblid[4];$/;" m struct:nvme_nvm_bb_tbl file: +tblid tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 tblid[4];$/;" m struct:nvme_nvm_bb_tbl file: +tblks tools/nvme/lightnvm.c /^ __le32 tblks;$/;" m struct:nvme_nvm_bb_tbl file: +tblks tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 tblks;$/;" m struct:nvme_nvm_bb_tbl file: +tdresv tools/nvme/lightnvm.c /^ __le32 tdresv;$/;" m struct:nvme_nvm_bb_tbl file: +tdresv tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 tdresv;$/;" m struct:nvme_nvm_bb_tbl file: +temp_main examples/raw-flash/kmain.c /^uint8_t* temp_main = NULL;$/;" v +temp_oob examples/raw-flash/kmain.c /^uint8_t* temp_oob = NULL;$/;" v +test frontend/df-user/dev_proxy.c /^ int test;$/;" m struct:__anon57 file: +test_erase tools/dumbssd-format/dumbssd-format.c /^void test_erase (int32_t dev_h, int die, int block)$/;" f +test_erase tools/dumbssd-test/dumbssd-test.c /^void test_erase (int32_t dev_h, int die, int block)$/;" f +test_read tools/dumbssd-format/dumbssd-format.c /^void test_read (int32_t dev_h, int die, int block, int wu)$/;" f +test_read tools/dumbssd-test/dumbssd-test.c /^void test_read (int32_t dev_h, int die, int block, int wu)$/;" f +test_write tools/dumbssd-format/dumbssd-format.c /^void test_write (int32_t dev_h, int die, int block, int wu)$/;" f +test_write tools/dumbssd-test/dumbssd-test.c /^void test_write (int32_t dev_h, int die, int block, int wu)$/;" f +tfact tools/nvme/lightnvm.c /^ __le32 tfact;$/;" m struct:nvme_nvm_bb_tbl file: +tfact tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 tfact;$/;" m struct:nvme_nvm_bb_tbl file: +tgrown tools/nvme/lightnvm.c /^ __le32 tgrown;$/;" m struct:nvme_nvm_bb_tbl file: +tgrown tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 tgrown;$/;" m struct:nvme_nvm_bb_tbl file: +thread common/utils/uthread.h /^ pthread_t thread;$/;" m struct:__anon2 +thread common/utils/uthread.h /^ struct task_struct* thread;$/;" m struct:__anon1 typeref:struct:__anon1::task_struct +thread_con common/utils/uthread.h /^ pthread_cond_t thread_con;$/;" m struct:__anon2 +thread_done common/utils/uthread.h /^ bdbm_mutex_t thread_done;$/;" m struct:__anon1 +thread_done common/utils/uthread.h /^ bdbm_mutex_t thread_done;$/;" m struct:__anon2 +thread_sleep common/utils/uthread.h /^ bdbm_mutex_t thread_sleep;$/;" m struct:__anon2 +thresv tools/nvme/lightnvm.c /^ __le32 thresv;$/;" m struct:nvme_nvm_bb_tbl file: +thresv tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 thresv;$/;" m struct:nvme_nvm_bb_tbl file: +time_gc_q include/bdbm_drv.h /^ uint64_t time_gc_q;$/;" m struct:__anon43 +time_gc_sw include/bdbm_drv.h /^ uint64_t time_gc_sw;$/;" m struct:__anon43 +time_gc_tot include/bdbm_drv.h /^ uint64_t time_gc_tot;$/;" m struct:__anon43 +time_get_timestamp_in_sec common/utils/utime.c /^uint32_t time_get_timestamp_in_sec (void)$/;" f +time_get_timestamp_in_us common/utils/utime.c /^uint32_t time_get_timestamp_in_us (void)$/;" f +time_init common/utils/utime.c /^void time_init (void)$/;" f +time_r_q include/bdbm_drv.h /^ uint64_t time_r_q;$/;" m struct:__anon43 +time_r_sw include/bdbm_drv.h /^ uint64_t time_r_sw;$/;" m struct:__anon43 +time_r_tot include/bdbm_drv.h /^ uint64_t time_r_tot;$/;" m struct:__anon43 +time_rmw_q include/bdbm_drv.h /^ uint64_t time_rmw_q;$/;" m struct:__anon43 +time_rmw_sw include/bdbm_drv.h /^ uint64_t time_rmw_sw;$/;" m struct:__anon43 +time_rmw_tot include/bdbm_drv.h /^ uint64_t time_rmw_tot;$/;" m struct:__anon43 +time_w_q include/bdbm_drv.h /^ uint64_t time_w_q;$/;" m struct:__anon43 +time_w_sw include/bdbm_drv.h /^ uint64_t time_w_sw;$/;" m struct:__anon43 +time_w_tot include/bdbm_drv.h /^ uint64_t time_w_tot;$/;" m struct:__anon43 +timeval_subtract common/utils/utime.c /^int timeval_subtract ($/;" f +tmp_hr ftl/hlm_nobuf.c /^ bdbm_hlm_req_t tmp_hr;$/;" m struct:__anon65 file: +to_nvme_dev tools/nvme/pci.c /^static inline struct nvme_dev *to_nvme_dev(struct nvme_ctrl *ctrl)$/;" f file: +to_nvme_dev tools/nvmedrv-v4.5.3/pci.c /^static inline struct nvme_dev *to_nvme_dev(struct nvme_ctrl *ctrl)$/;" f file: +total_blocks tools/lightnvm-v4.5.3/rrpc.h /^ unsigned long total_blocks;$/;" m struct:rrpc +total_blocks tools/lightnvm/rrpc.h /^ unsigned long total_blocks;$/;" m struct:rrpc +tprm tools/nvme/lightnvm.c /^ __le32 tprm;$/;" m struct:nvme_nvm_id_group file: +tprm tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 tprm;$/;" m struct:nvme_nvm_id_group file: +tprt tools/nvme/lightnvm.c /^ __le32 tprt;$/;" m struct:nvme_nvm_id_group file: +tprt tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 tprt;$/;" m struct:nvme_nvm_id_group file: +trans_map tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_addr *trans_map;$/;" m struct:rrpc typeref:struct:rrpc::rrpc_addr +trans_map tools/lightnvm/rrpc.h /^ struct rrpc_addr *trans_map;$/;" m struct:rrpc typeref:struct:rrpc::rrpc_addr +trdm tools/nvme/lightnvm.c /^ __le32 trdm;$/;" m struct:nvme_nvm_id_group file: +trdm tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 trdm;$/;" m struct:nvme_nvm_id_group file: +trdt tools/nvme/lightnvm.c /^ __le32 trdt;$/;" m struct:nvme_nvm_id_group file: +trdt tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 trdt;$/;" m struct:nvme_nvm_id_group file: +trim include/params.h /^ uint32_t trim;$/;" m struct:__anon45 +tt_rrpc tools/lightnvm-v4.5.3/rrpc.c /^static struct nvm_tgt_type tt_rrpc = {$/;" v typeref:struct:nvm_tgt_type file: +tt_rrpc tools/lightnvm-v4.5.3/rrpc.c /^static struct nvm_tgt_type tt_rrpc;$/;" v typeref:struct:nvm_tgt_type file: +tt_rrpc tools/lightnvm/rrpc.c /^static struct nvm_tgt_type tt_rrpc = {$/;" v typeref:struct:nvm_tgt_type file: +tt_rrpc tools/lightnvm/rrpc.c /^static struct nvm_tgt_type tt_rrpc;$/;" v typeref:struct:nvm_tgt_type file: +type ftl/queue/rd_prior_queue.h /^ rd_prior_iotype_t type;$/;" m struct:__anon74 +type tools/nvme/nvme.h /^ int type;$/;" m struct:nvme_ns +type tools/nvmedrv-v4.5.3/nvme.h /^ int type;$/;" m struct:nvme_ns +uint32_t common/3rd/uthash.h /^typedef unsigned int uint32_t;$/;" t +uint64_t common/3rd/uthash.h /^typedef unsigned int int uint64_t;$/;" t +uint8_t common/3rd/uthash.h /^typedef unsigned char uint8_t;$/;" t +unmap_blk_desc_data_len tools/nvme/scsi.c /^ __be16 unmap_blk_desc_data_len;$/;" m struct:scsi_unmap_parm_list file: +unmap_blk_desc_data_len tools/nvmedrv-v4.5.3/scsi.c /^ __be16 unmap_blk_desc_data_len;$/;" m struct:scsi_unmap_parm_list file: +unmap_data_len tools/nvme/scsi.c /^ __be16 unmap_data_len;$/;" m struct:scsi_unmap_parm_list file: +unmap_data_len tools/nvmedrv-v4.5.3/scsi.c /^ __be16 unmap_data_len;$/;" m struct:scsi_unmap_parm_list file: +ur devices/common/dev_stub.c /^ bdbm_llm_req_ioctl_t** ur;$/;" m struct:__anon9 file: +use_cmb_sqes tools/nvme/pci.c /^static bool use_cmb_sqes = true;$/;" v file: +use_cmb_sqes tools/nvmedrv-v4.5.3/pci.c /^static bool use_cmb_sqes = true;$/;" v file: +use_threaded_interrupts tools/nvme/pci.c /^static int use_threaded_interrupts;$/;" v file: +use_threaded_interrupts tools/nvmedrv-v4.5.3/pci.c /^static int use_threaded_interrupts;$/;" v file: +used_list frontend/hybrid/blkio_proxy_reqs_pool.h /^ struct list_head used_list;$/;" m struct:__anon58 typeref:struct:__anon58::list_head +used_list ftl/hlm_reqs_pool.h /^ struct list_head used_list;$/;" m struct:__anon66 typeref:struct:__anon66::list_head +used_list tools/lightnvm-v4.5.3/gennvm.h /^ struct list_head used_list; \/* In-use blocks *\/$/;" m struct:gen_lun typeref:struct:gen_lun::list_head +used_list tools/lightnvm/gennvm.h /^ struct list_head used_list; \/* In-use blocks *\/$/;" m struct:gen_lun typeref:struct:gen_lun::list_head +user devices/bluedbm/dm_bluedbm.c /^ void* user;$/;" m struct:__anon15 file: +user include/bdbm_drv.h /^ void* user; \/* keep user's data structure *\/$/;" m struct:__anon26 +user_data common/utils/uthread.h /^ void* user_data;$/;" m struct:__anon1 +user_data common/utils/uthread.h /^ void* user_data;$/;" m struct:__anon2 +user_threadfn common/utils/uthread.h /^ int (*user_threadfn)(void *data);$/;" m struct:__anon1 +user_threadfn common/utils/uthread.h /^ int (*user_threadfn)(void *data);$/;" m struct:__anon2 +userio_close frontend/df-user/userio.c /^void userio_close (bdbm_drv_info_t* bdi)$/;" f +userio_close frontend/user/userio.c /^void userio_close (bdbm_drv_info_t* bdi)$/;" f +userio_end_req frontend/df-user/userio.c /^void userio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req)$/;" f +userio_end_req frontend/user/userio.c /^void userio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req)$/;" f +userio_make_req frontend/df-user/userio.c /^void userio_make_req (bdbm_drv_info_t* bdi, void *bio)$/;" f +userio_make_req frontend/user/userio.c /^void userio_make_req (bdbm_drv_info_t* bdi, void *bio)$/;" f +userio_open frontend/df-user/userio.c /^uint32_t userio_open (bdbm_drv_info_t* bdi)$/;" f +userio_open frontend/user/userio.c /^uint32_t userio_open (bdbm_drv_info_t* bdi)$/;" f +utarray_back common/3rd/utarray.h 215;" d +utarray_clear common/3rd/utarray.h 194;" d +utarray_concat common/3rd/utarray.h 171;" d +utarray_done common/3rd/utarray.h 64;" d +utarray_eltidx common/3rd/utarray.h 216;" d +utarray_eltptr common/3rd/utarray.h 114;" d +utarray_erase common/3rd/utarray.h 175;" d +utarray_extend_back common/3rd/utarray.h 105;" d +utarray_find common/3rd/utarray.h 210;" d +utarray_free common/3rd/utarray.h 82;" d +utarray_front common/3rd/utarray.h 212;" d +utarray_init common/3rd/utarray.h 59;" d +utarray_insert common/3rd/utarray.h 117;" d +utarray_inserta common/3rd/utarray.h 129;" d +utarray_len common/3rd/utarray.h 112;" d +utarray_new common/3rd/utarray.h 77;" d +utarray_next common/3rd/utarray.h 213;" d +utarray_pop_back common/3rd/utarray.h 100;" d +utarray_prev common/3rd/utarray.h 214;" d +utarray_push_back common/3rd/utarray.h 94;" d +utarray_renew common/3rd/utarray.h 189;" d +utarray_reserve common/3rd/utarray.h 87;" d +utarray_resize common/3rd/utarray.h 150;" d +utarray_sort common/3rd/utarray.h 206;" d +utarray_str_cpy common/3rd/utarray.h /^static void utarray_str_cpy(void *dst, const void *src) {$/;" f +utarray_str_dtor common/3rd/utarray.h /^static void utarray_str_dtor(void *elt) {$/;" f +uthash_expand_fyi common/3rd/uthash.h 108;" d +uthash_fatal common/3rd/uthash.h 82;" d +uthash_fatal common/3rd/uthash.h 84;" d +uthash_free common/3rd/uthash.h 100;" d +uthash_free common/3rd/uthash.h 98;" d +uthash_malloc common/3rd/uthash.h 90;" d +uthash_malloc common/3rd/uthash.h 92;" d +uthash_noexpand_fyi common/3rd/uthash.h 105;" d +util_r include/bdbm_drv.h /^ atomic64_t* util_r;$/;" m struct:__anon43 +util_w include/bdbm_drv.h /^ atomic64_t* util_w;$/;" m struct:__anon43 +utstring_bincpy common/3rd/utstring.h 98;" d +utstring_body common/3rd/utstring.h 116;" d +utstring_clear common/3rd/utstring.h 92;" d +utstring_concat common/3rd/utstring.h 106;" d +utstring_done common/3rd/utstring.h 64;" d +utstring_find common/3rd/utstring.h /^_UNUSED_ static long utstring_find($/;" f +utstring_findR common/3rd/utstring.h /^_UNUSED_ static long utstring_findR($/;" f +utstring_free common/3rd/utstring.h 70;" d +utstring_init common/3rd/utstring.h 57;" d +utstring_len common/3rd/utstring.h 114;" d +utstring_new common/3rd/utstring.h 76;" d +utstring_printf common/3rd/utstring.h /^_UNUSED_ static void utstring_printf(UT_string *s, const char *fmt, ...) {$/;" f +utstring_printf_va common/3rd/utstring.h /^_UNUSED_ static void utstring_printf_va(UT_string *s, const char *fmt, va_list ap) {$/;" f +utstring_renew common/3rd/utstring.h 83;" d +utstring_reserve common/3rd/utstring.h 48;" d +uuid tools/nvme/nvme.h /^ u8 uuid[16];$/;" m struct:nvme_ns +uuid tools/nvmedrv-v4.5.3/nvme.h /^ u8 uuid[16];$/;" m struct:nvme_ns +uuid_show tools/nvme/core.c /^static ssize_t uuid_show(struct device *dev, struct device_attribute *attr,$/;" f file: +uuid_show tools/nvmedrv-v4.5.3/core.c /^static ssize_t uuid_show(struct device *dev, struct device_attribute *attr,$/;" f file: +value tools/nvme/lightnvm.c /^ __u8 value;$/;" m struct:nvme_nvm_setbbtbl file: +value tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 value;$/;" m struct:nvme_nvm_setbbtbl file: +ver_id tools/nvme/lightnvm.c /^ __u8 ver_id;$/;" m struct:nvme_nvm_id file: +ver_id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 ver_id;$/;" m struct:nvme_nvm_id file: +verid tools/nvme/lightnvm.c /^ __le16 verid;$/;" m struct:nvme_nvm_bb_tbl file: +verid tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 verid;$/;" m struct:nvme_nvm_bb_tbl file: +vlun tools/lightnvm-v4.5.3/gennvm.h /^ struct nvm_lun vlun;$/;" m struct:gen_lun typeref:struct:gen_lun::nvm_lun +vlun tools/lightnvm/gennvm.h /^ struct nvm_lun vlun;$/;" m struct:gen_lun typeref:struct:gen_lun::nvm_lun +vmnt tools/nvme/lightnvm.c /^ __u8 vmnt;$/;" m struct:nvme_nvm_id file: +vmnt tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 vmnt;$/;" m struct:nvme_nvm_id file: +vs tools/nvme/nvme.h /^ u32 vs;$/;" m struct:nvme_ctrl +vs tools/nvmedrv-v4.5.3/nvme.h /^ u32 vs;$/;" m struct:nvme_ctrl +vwc tools/nvme/nvme.h /^ u8 vwc;$/;" m struct:nvme_ctrl +vwc tools/nvmedrv-v4.5.3/nvme.h /^ u8 vwc;$/;" m struct:nvme_ctrl +w_cnt devices/libdummy/dm_dummy.c /^ uint64_t w_cnt;$/;" m struct:dm_user_private file: +w_cnt_done devices/libdummy/dm_dummy.c /^ uint64_t w_cnt_done;$/;" m struct:dm_user_private file: +wait common/utils/uthread.h /^ wait_queue_t* wait;$/;" m struct:__anon1 +wait frontend/hybrid/umain.c /^void wait ()$/;" f +wbuf devices/bluedbm/dm_bluedbm.c /^ uint8_t** wbuf;$/;" m struct:dm_bluedbm_private file: +wl_policy include/params.h /^ uint32_t wl_policy;$/;" m struct:__anon45 +work devices/bluedbm/dm_bluedbm.c /^ struct work_struct work; \/* it must be at the end of structre *\/$/;" m struct:__anon15 typeref:struct:__anon15::work_struct file: +work devices/ramdrive/dev_ramssd.h /^ struct work_struct work; \/* it must be at the end of structre *\/$/;" m struct:__anon12 typeref:struct:__anon12::work_struct +work frontend/hybrid/blkio_proxy.c /^ struct work_struct work; \/* it must be at the end of structre *\/$/;" m struct:__anon60 typeref:struct:__anon60::work_struct file: +works devices/bluedbm/dm_bluedbm.c /^ dm_bluedbm_wq_t works;$/;" m struct:dm_bluedbm_private file: +works devices/ramdrive/dev_ramssd.h /^ dev_ramssd_wq_t works;$/;" m struct:__anon13 +works frontend/hybrid/blkio_proxy.c /^ bdbm_blkio_proxy_wq_t* works;$/;" m struct:__anon61 file: +wq common/utils/uthread.h /^ wait_queue_head_t wq;$/;" m struct:__anon1 +wq devices/bluedbm/dm_bluedbm.c /^ struct workqueue_struct *wq;$/;" m struct:dm_bluedbm_private typeref:struct:dm_bluedbm_private::workqueue_struct file: +wq devices/ramdrive/dev_ramssd.h /^ struct workqueue_struct *wq;$/;" m struct:__anon13 typeref:struct:__anon13::workqueue_struct +wq frontend/hybrid/blkio_proxy.c /^ struct workqueue_struct *wq;$/;" m struct:__anon61 typeref:struct:__anon61::workqueue_struct file: +ws_gc tools/lightnvm-v4.5.3/rrpc.h /^ struct work_struct ws_gc;$/;" m struct:rrpc_block_gc typeref:struct:rrpc_block_gc::work_struct +ws_gc tools/lightnvm-v4.5.3/rrpc.h /^ struct work_struct ws_gc;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::work_struct +ws_gc tools/lightnvm/rrpc.h /^ struct work_struct ws_gc;$/;" m struct:rrpc_block_gc typeref:struct:rrpc_block_gc::work_struct +ws_gc tools/lightnvm/rrpc.h /^ struct work_struct ws_gc;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::work_struct +ws_requeue tools/lightnvm-v4.5.3/rrpc.h /^ struct work_struct ws_requeue;$/;" m struct:rrpc typeref:struct:rrpc::work_struct +ws_requeue tools/lightnvm/rrpc.h /^ struct work_struct ws_requeue;$/;" m struct:rrpc typeref:struct:rrpc::work_struct +wu devices/dumbssd/dev_hynix_nvme.h /^ uint64_t wu;$/;" m struct:__anon17 +wu devices/dumbssd/dm_dumbssd.h /^ int wu;$/;" m struct:__anon18 +xfer_len tools/nvme/scsi.c /^ u32 xfer_len;$/;" m struct:nvme_trans_io_cdb file: +xfer_len tools/nvmedrv-v4.5.3/scsi.c /^ u32 xfer_len;$/;" m struct:nvme_trans_io_cdb file: From 12157b62d02e9b55ecd03d31bd46498dd6a127c5 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 23 Oct 2016 20:38:59 +0900 Subject: [PATCH 31/51] params.h err --- common/.bdbm_main.o.cmd | 950 --------------------- common/bdbm_main.o | Bin 10264 -> 0 bytes common/err.dmesg | 987 ---------------------- common/utils/.ufile.o.cmd | 964 --------------------- common/utils/.umemory.o.cmd | 530 ------------ common/utils/.uthread.o.cmd | 751 ----------------- common/utils/.utime.o.cmd | 622 -------------- devices/bluedbm/.6221.tmp | Bin 0 -> 944 bytes devices/ramdrive/.dev_ramssd.o.cmd | 892 -------------------- devices/ramdrive/.dm_ramdrive.o.cmd | 631 -------------- devices/ramdrive/dev_ramssd.o | Bin 15768 -> 0 bytes devices/ramdrive/dm_ramdrive.o | Bin 6776 -> 0 bytes err.dmesg | 1194 +++++++++++++++++++++++++++ frontend/kernel/a.diff | 47 ++ include/bdbm_drv.h | 2 +- include/params.h | 4 +- 16 files changed, 1244 insertions(+), 6330 deletions(-) delete mode 100644 common/.bdbm_main.o.cmd delete mode 100644 common/bdbm_main.o delete mode 100644 common/err.dmesg delete mode 100644 common/utils/.ufile.o.cmd delete mode 100644 common/utils/.umemory.o.cmd delete mode 100644 common/utils/.uthread.o.cmd delete mode 100644 common/utils/.utime.o.cmd create mode 100644 devices/bluedbm/.6221.tmp delete mode 100644 devices/ramdrive/.dev_ramssd.o.cmd delete mode 100644 devices/ramdrive/.dm_ramdrive.o.cmd delete mode 100644 devices/ramdrive/dev_ramssd.o delete mode 100644 devices/ramdrive/dm_ramdrive.o create mode 100644 err.dmesg create mode 100644 frontend/kernel/a.diff diff --git a/common/.bdbm_main.o.cmd b/common/.bdbm_main.o.cmd deleted file mode 100644 index 64011d3..0000000 --- a/common/.bdbm_main.o.cmd +++ /dev/null @@ -1,950 +0,0 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/.bdbm_main.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(bdbm_main)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/.tmp_bdbm_main.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.c - -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.c - -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o := \ - include/linux/module.h \ - $(wildcard include/config/modules.h) \ - $(wildcard include/config/sysfs.h) \ - $(wildcard include/config/module/sig.h) \ - $(wildcard include/config/modules/tree/lookup.h) \ - $(wildcard include/config/unused/symbols.h) \ - $(wildcard include/config/generic/bug.h) \ - $(wildcard include/config/kallsyms.h) \ - $(wildcard include/config/smp.h) \ - $(wildcard include/config/tracepoints.h) \ - $(wildcard include/config/tracing.h) \ - $(wildcard include/config/event/tracing.h) \ - $(wildcard include/config/ftrace/mcount/record.h) \ - $(wildcard include/config/livepatch.h) \ - $(wildcard include/config/module/unload.h) \ - $(wildcard include/config/constructors.h) \ - $(wildcard include/config/debug/set/module/ronx.h) \ - include/linux/list.h \ - $(wildcard include/config/debug/list.h) \ - include/linux/types.h \ - $(wildcard include/config/have/uid16.h) \ - $(wildcard include/config/uid16.h) \ - $(wildcard include/config/lbdaf.h) \ - $(wildcard include/config/arch/dma/addr/t/64bit.h) \ - $(wildcard include/config/phys/addr/t/64bit.h) \ - $(wildcard include/config/64bit.h) \ - include/uapi/linux/types.h \ - arch/x86/include/uapi/asm/types.h \ - include/uapi/asm-generic/types.h \ - include/asm-generic/int-ll64.h \ - include/uapi/asm-generic/int-ll64.h \ - arch/x86/include/uapi/asm/bitsperlong.h \ - include/asm-generic/bitsperlong.h \ - include/uapi/asm-generic/bitsperlong.h \ - include/uapi/linux/posix_types.h \ - include/linux/stddef.h \ - include/uapi/linux/stddef.h \ - include/linux/compiler.h \ - $(wildcard include/config/sparse/rcu/pointer.h) \ - $(wildcard include/config/trace/branch/profiling.h) \ - $(wildcard include/config/profile/all/branches.h) \ - $(wildcard include/config/kasan.h) \ - $(wildcard include/config/enable/must/check.h) \ - $(wildcard include/config/enable/warn/deprecated.h) \ - $(wildcard include/config/kprobes.h) \ - include/linux/compiler-gcc.h \ - $(wildcard include/config/arch/supports/optimized/inlining.h) \ - $(wildcard include/config/optimize/inlining.h) \ - $(wildcard include/config/gcov/kernel.h) \ - $(wildcard include/config/arch/use/builtin/bswap.h) \ - arch/x86/include/asm/posix_types.h \ - $(wildcard include/config/x86/32.h) \ - arch/x86/include/uapi/asm/posix_types_64.h \ - include/uapi/asm-generic/posix_types.h \ - include/linux/poison.h \ - $(wildcard include/config/illegal/pointer/value.h) \ - include/uapi/linux/const.h \ - include/linux/kernel.h \ - $(wildcard include/config/preempt/voluntary.h) \ - $(wildcard include/config/debug/atomic/sleep.h) \ - $(wildcard include/config/mmu.h) \ - $(wildcard include/config/prove/locking.h) \ - $(wildcard include/config/panic/timeout.h) \ - /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ - include/linux/linkage.h \ - include/linux/stringify.h \ - include/linux/export.h \ - $(wildcard include/config/have/underscore/symbol/prefix.h) \ - $(wildcard include/config/modversions.h) \ - arch/x86/include/asm/linkage.h \ - $(wildcard include/config/x86/64.h) \ - $(wildcard include/config/x86/alignment/16.h) \ - include/linux/bitops.h \ - arch/x86/include/asm/bitops.h \ - $(wildcard include/config/x86/cmov.h) \ - arch/x86/include/asm/alternative.h \ - $(wildcard include/config/paravirt.h) \ - arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ - arch/x86/include/asm/rmwcc.h \ - arch/x86/include/asm/barrier.h \ - $(wildcard include/config/x86/ppro/fence.h) \ - arch/x86/include/asm/nops.h \ - $(wildcard include/config/mk7.h) \ - $(wildcard include/config/x86/p6/nop.h) \ - include/asm-generic/barrier.h \ - include/asm-generic/bitops/find.h \ - $(wildcard include/config/generic/find/first/bit.h) \ - include/asm-generic/bitops/sched.h \ - arch/x86/include/asm/arch_hweight.h \ - arch/x86/include/asm/cpufeatures.h \ - arch/x86/include/asm/required-features.h \ - $(wildcard include/config/x86/minimum/cpu/family.h) \ - $(wildcard include/config/math/emulation.h) \ - $(wildcard include/config/x86/cmpxchg64.h) \ - $(wildcard include/config/x86/use/3dnow.h) \ - $(wildcard include/config/matom.h) \ - arch/x86/include/asm/disabled-features.h \ - $(wildcard include/config/x86/intel/mpx.h) \ - include/asm-generic/bitops/const_hweight.h \ - include/asm-generic/bitops/le.h \ - arch/x86/include/uapi/asm/byteorder.h \ - include/linux/byteorder/little_endian.h \ - include/uapi/linux/byteorder/little_endian.h \ - include/linux/swab.h \ - include/uapi/linux/swab.h \ - arch/x86/include/uapi/asm/swab.h \ - include/linux/byteorder/generic.h \ - include/asm-generic/bitops/ext2-atomic-setbit.h \ - include/linux/log2.h \ - $(wildcard include/config/arch/has/ilog2/u32.h) \ - $(wildcard include/config/arch/has/ilog2/u64.h) \ - include/linux/typecheck.h \ - include/linux/printk.h \ - $(wildcard include/config/message/loglevel/default.h) \ - $(wildcard include/config/early/printk.h) \ - $(wildcard include/config/printk.h) \ - $(wildcard include/config/dynamic/debug.h) \ - include/linux/init.h \ - $(wildcard include/config/broken/rodata.h) \ - $(wildcard include/config/lto.h) \ - include/linux/kern_levels.h \ - include/linux/cache.h \ - $(wildcard include/config/arch/has/cache/line/size.h) \ - include/uapi/linux/kernel.h \ - include/uapi/linux/sysinfo.h \ - include/linux/dynamic_debug.h \ - include/linux/stat.h \ - arch/x86/include/uapi/asm/stat.h \ - include/uapi/linux/stat.h \ - include/linux/time.h \ - $(wildcard include/config/arch/uses/gettimeoffset.h) \ - include/linux/seqlock.h \ - $(wildcard include/config/debug/lock/alloc.h) \ - include/linux/spinlock.h \ - $(wildcard include/config/debug/spinlock.h) \ - $(wildcard include/config/generic/lockbreak.h) \ - $(wildcard include/config/preempt.h) \ - include/linux/preempt.h \ - $(wildcard include/config/preempt/count.h) \ - $(wildcard include/config/debug/preempt.h) \ - $(wildcard include/config/preempt/tracer.h) \ - $(wildcard include/config/preempt/notifiers.h) \ - arch/x86/include/asm/preempt.h \ - arch/x86/include/asm/percpu.h \ - $(wildcard include/config/x86/64/smp.h) \ - include/asm-generic/percpu.h \ - $(wildcard include/config/have/setup/per/cpu/area.h) \ - include/linux/threads.h \ - $(wildcard include/config/base/small.h) \ - include/linux/percpu-defs.h \ - $(wildcard include/config/debug/force/weak/per/cpu.h) \ - include/linux/thread_info.h \ - $(wildcard include/config/compat.h) \ - $(wildcard include/config/debug/stack/usage.h) \ - include/linux/bug.h \ - arch/x86/include/asm/bug.h \ - $(wildcard include/config/debug/bugverbose.h) \ - include/asm-generic/bug.h \ - $(wildcard include/config/bug.h) \ - $(wildcard include/config/generic/bug/relative/pointers.h) \ - arch/x86/include/asm/thread_info.h \ - $(wildcard include/config/ia32/emulation.h) \ - arch/x86/include/asm/page.h \ - arch/x86/include/asm/page_64.h \ - $(wildcard include/config/debug/virtual.h) \ - $(wildcard include/config/flatmem.h) \ - $(wildcard include/config/x86/vsyscall/emulation.h) \ - include/linux/range.h \ - include/asm-generic/memory_model.h \ - $(wildcard include/config/discontigmem.h) \ - $(wildcard include/config/sparsemem/vmemmap.h) \ - include/asm-generic/getorder.h \ - arch/x86/include/asm/cpufeature.h \ - $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ - arch/x86/include/asm/processor.h \ - $(wildcard include/config/m486.h) \ - $(wildcard include/config/xen.h) \ - arch/x86/include/asm/math_emu.h \ - arch/x86/include/uapi/asm/sigcontext.h \ - arch/x86/include/asm/current.h \ - arch/x86/include/asm/msr.h \ - arch/x86/include/asm/msr-index.h \ - $(wildcard include/config/tdp/nominal.h) \ - $(wildcard include/config/tdp/level/1.h) \ - $(wildcard include/config/tdp/level/2.h) \ - $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ - arch/x86/include/uapi/asm/errno.h \ - include/uapi/asm-generic/errno.h \ - include/uapi/asm-generic/errno-base.h \ - arch/x86/include/asm/cpumask.h \ - include/linux/cpumask.h \ - $(wildcard include/config/cpumask/offstack.h) \ - $(wildcard include/config/hotplug/cpu.h) \ - $(wildcard include/config/debug/per/cpu/maps.h) \ - include/linux/bitmap.h \ - include/linux/string.h \ - $(wildcard include/config/binary/printf.h) \ - include/uapi/linux/string.h \ - arch/x86/include/asm/string.h \ - arch/x86/include/asm/string_64.h \ - arch/x86/include/uapi/asm/msr.h \ - include/uapi/linux/ioctl.h \ - arch/x86/include/uapi/asm/ioctl.h \ - include/asm-generic/ioctl.h \ - include/uapi/asm-generic/ioctl.h \ - arch/x86/include/asm/paravirt.h \ - arch/x86/include/asm/special_insns.h \ - arch/x86/include/asm/fpu/types.h \ - include/linux/personality.h \ - include/uapi/linux/personality.h \ - include/linux/math64.h \ - $(wildcard include/config/arch/supports/int128.h) \ - arch/x86/include/asm/div64.h \ - include/asm-generic/div64.h \ - include/linux/err.h \ - include/linux/irqflags.h \ - $(wildcard include/config/trace/irqflags.h) \ - $(wildcard include/config/irqsoff/tracer.h) \ - $(wildcard include/config/trace/irqflags/support.h) \ - arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ - include/linux/bottom_half.h \ - include/linux/spinlock_types.h \ - include/linux/lockdep.h \ - $(wildcard include/config/lockdep.h) \ - $(wildcard include/config/lock/stat.h) \ - include/linux/rwlock_types.h \ - arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ - arch/x86/include/asm/qspinlock.h \ - include/asm-generic/qspinlock.h \ - arch/x86/include/asm/qrwlock.h \ - include/asm-generic/qrwlock.h \ - include/linux/rwlock.h \ - include/linux/spinlock_api_smp.h \ - $(wildcard include/config/inline/spin/lock.h) \ - $(wildcard include/config/inline/spin/lock/bh.h) \ - $(wildcard include/config/inline/spin/lock/irq.h) \ - $(wildcard include/config/inline/spin/lock/irqsave.h) \ - $(wildcard include/config/inline/spin/trylock.h) \ - $(wildcard include/config/inline/spin/trylock/bh.h) \ - $(wildcard include/config/uninline/spin/unlock.h) \ - $(wildcard include/config/inline/spin/unlock/bh.h) \ - $(wildcard include/config/inline/spin/unlock/irq.h) \ - $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ - include/linux/rwlock_api_smp.h \ - $(wildcard include/config/inline/read/lock.h) \ - $(wildcard include/config/inline/write/lock.h) \ - $(wildcard include/config/inline/read/lock/bh.h) \ - $(wildcard include/config/inline/write/lock/bh.h) \ - $(wildcard include/config/inline/read/lock/irq.h) \ - $(wildcard include/config/inline/write/lock/irq.h) \ - $(wildcard include/config/inline/read/lock/irqsave.h) \ - $(wildcard include/config/inline/write/lock/irqsave.h) \ - $(wildcard include/config/inline/read/trylock.h) \ - $(wildcard include/config/inline/write/trylock.h) \ - $(wildcard include/config/inline/read/unlock.h) \ - $(wildcard include/config/inline/write/unlock.h) \ - $(wildcard include/config/inline/read/unlock/bh.h) \ - $(wildcard include/config/inline/write/unlock/bh.h) \ - $(wildcard include/config/inline/read/unlock/irq.h) \ - $(wildcard include/config/inline/write/unlock/irq.h) \ - $(wildcard include/config/inline/read/unlock/irqrestore.h) \ - $(wildcard include/config/inline/write/unlock/irqrestore.h) \ - include/linux/time64.h \ - include/uapi/linux/time.h \ - include/linux/uidgid.h \ - $(wildcard include/config/multiuser.h) \ - $(wildcard include/config/user/ns.h) \ - include/linux/highuid.h \ - include/linux/kmod.h \ - include/linux/gfp.h \ - $(wildcard include/config/highmem.h) \ - $(wildcard include/config/zone/dma.h) \ - $(wildcard include/config/zone/dma32.h) \ - $(wildcard include/config/zone/device.h) \ - $(wildcard include/config/numa.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ - $(wildcard include/config/pm/sleep.h) \ - $(wildcard include/config/cma.h) \ - include/linux/mmdebug.h \ - $(wildcard include/config/debug/vm.h) \ - include/linux/mmzone.h \ - $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ - $(wildcard include/config/memcg.h) \ - $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ - $(wildcard include/config/flat/node/mem/map.h) \ - $(wildcard include/config/page/extension.h) \ - $(wildcard include/config/no/bootmem.h) \ - $(wildcard include/config/numa/balancing.h) \ - $(wildcard include/config/have/memory/present.h) \ - $(wildcard include/config/have/memoryless/nodes.h) \ - $(wildcard include/config/need/node/memmap/size.h) \ - $(wildcard include/config/have/memblock/node/map.h) \ - $(wildcard include/config/need/multiple/nodes.h) \ - $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ - $(wildcard include/config/sparsemem/extreme.h) \ - $(wildcard include/config/have/arch/pfn/valid.h) \ - $(wildcard include/config/holes/in/zone.h) \ - $(wildcard include/config/arch/has/holes/memorymodel.h) \ - include/linux/wait.h \ - include/uapi/linux/wait.h \ - include/linux/numa.h \ - $(wildcard include/config/nodes/shift.h) \ - include/linux/nodemask.h \ - $(wildcard include/config/movable/node.h) \ - include/linux/pageblock-flags.h \ - $(wildcard include/config/hugetlb/page.h) \ - $(wildcard include/config/hugetlb/page/size/variable.h) \ - include/linux/page-flags-layout.h \ - include/generated/bounds.h \ - include/linux/memory_hotplug.h \ - $(wildcard include/config/memory/hotremove.h) \ - $(wildcard include/config/have/arch/nodedata/extension.h) \ - $(wildcard include/config/have/bootmem/info/node.h) \ - include/linux/notifier.h \ - include/linux/errno.h \ - include/uapi/linux/errno.h \ - include/linux/mutex.h \ - $(wildcard include/config/debug/mutexes.h) \ - $(wildcard include/config/mutex/spin/on/owner.h) \ - include/linux/osq_lock.h \ - include/linux/rwsem.h \ - $(wildcard include/config/rwsem/spin/on/owner.h) \ - $(wildcard include/config/rwsem/generic/spinlock.h) \ - arch/x86/include/asm/rwsem.h \ - include/linux/srcu.h \ - include/linux/rcupdate.h \ - $(wildcard include/config/tiny/rcu.h) \ - $(wildcard include/config/tree/rcu.h) \ - $(wildcard include/config/preempt/rcu.h) \ - $(wildcard include/config/rcu/trace.h) \ - $(wildcard include/config/rcu/stall/common.h) \ - $(wildcard include/config/no/hz/full.h) \ - $(wildcard include/config/rcu/nocb/cpu.h) \ - $(wildcard include/config/tasks/rcu.h) \ - $(wildcard include/config/debug/objects/rcu/head.h) \ - $(wildcard include/config/prove/rcu.h) \ - $(wildcard include/config/rcu/boost.h) \ - $(wildcard include/config/rcu/nocb/cpu/all.h) \ - $(wildcard include/config/no/hz/full/sysidle.h) \ - include/linux/completion.h \ - include/linux/debugobjects.h \ - $(wildcard include/config/debug/objects.h) \ - $(wildcard include/config/debug/objects/free.h) \ - include/linux/ktime.h \ - include/linux/jiffies.h \ - include/linux/timex.h \ - include/uapi/linux/timex.h \ - include/uapi/linux/param.h \ - arch/x86/include/uapi/asm/param.h \ - include/asm-generic/param.h \ - $(wildcard include/config/hz.h) \ - include/uapi/asm-generic/param.h \ - arch/x86/include/asm/timex.h \ - arch/x86/include/asm/tsc.h \ - $(wildcard include/config/x86/tsc.h) \ - include/generated/timeconst.h \ - include/linux/timekeeping.h \ - include/linux/rcutree.h \ - include/linux/workqueue.h \ - $(wildcard include/config/debug/objects/work.h) \ - $(wildcard include/config/freezer.h) \ - include/linux/timer.h \ - $(wildcard include/config/timer/stats.h) \ - $(wildcard include/config/debug/objects/timers.h) \ - $(wildcard include/config/no/hz/common.h) \ - include/linux/sysctl.h \ - $(wildcard include/config/sysctl.h) \ - include/linux/rbtree.h \ - include/uapi/linux/sysctl.h \ - arch/x86/include/asm/mmzone.h \ - arch/x86/include/asm/mmzone_64.h \ - arch/x86/include/asm/smp.h \ - $(wildcard include/config/x86/io/apic.h) \ - $(wildcard include/config/x86/32/smp.h) \ - $(wildcard include/config/debug/nmi/selftest.h) \ - arch/x86/include/asm/mpspec.h \ - $(wildcard include/config/eisa.h) \ - $(wildcard include/config/x86/mpparse.h) \ - arch/x86/include/asm/mpspec_def.h \ - arch/x86/include/asm/x86_init.h \ - arch/x86/include/uapi/asm/bootparam.h \ - include/linux/screen_info.h \ - include/uapi/linux/screen_info.h \ - include/linux/apm_bios.h \ - include/uapi/linux/apm_bios.h \ - include/linux/edd.h \ - include/uapi/linux/edd.h \ - arch/x86/include/asm/e820.h \ - $(wildcard include/config/efi.h) \ - $(wildcard include/config/hibernation.h) \ - arch/x86/include/uapi/asm/e820.h \ - $(wildcard include/config/x86/pmem/legacy.h) \ - $(wildcard include/config/intel/txt.h) \ - include/linux/ioport.h \ - arch/x86/include/asm/ist.h \ - arch/x86/include/uapi/asm/ist.h \ - include/video/edid.h \ - $(wildcard include/config/x86.h) \ - include/uapi/video/edid.h \ - arch/x86/include/asm/apicdef.h \ - arch/x86/include/asm/apic.h \ - $(wildcard include/config/x86/x2apic.h) \ - include/linux/pm.h \ - $(wildcard include/config/vt/console/sleep.h) \ - $(wildcard include/config/pm.h) \ - $(wildcard include/config/pm/clk.h) \ - $(wildcard include/config/pm/generic/domains.h) \ - arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ - $(wildcard include/config/provide/ohci1394/dma/init.h) \ - $(wildcard include/config/pci/mmconfig.h) \ - $(wildcard include/config/x86/intel/mid.h) \ - arch/x86/include/asm/acpi.h \ - $(wildcard include/config/acpi/apei.h) \ - $(wildcard include/config/acpi.h) \ - $(wildcard include/config/acpi/numa.h) \ - include/acpi/pdc_intel.h \ - arch/x86/include/asm/numa.h \ - $(wildcard include/config/numa/emu.h) \ - arch/x86/include/asm/topology.h \ - include/asm-generic/topology.h \ - arch/x86/include/asm/mmu.h \ - $(wildcard include/config/modify/ldt/syscall.h) \ - arch/x86/include/asm/realmode.h \ - $(wildcard include/config/acpi/sleep.h) \ - arch/x86/include/asm/io.h \ - $(wildcard include/config/mtrr.h) \ - arch/x86/include/generated/asm/early_ioremap.h \ - include/asm-generic/early_ioremap.h \ - $(wildcard include/config/generic/early/ioremap.h) \ - include/asm-generic/iomap.h \ - $(wildcard include/config/has/ioport/map.h) \ - $(wildcard include/config/pci.h) \ - $(wildcard include/config/generic/iomap.h) \ - include/asm-generic/pci_iomap.h \ - $(wildcard include/config/no/generic/pci/ioport/map.h) \ - $(wildcard include/config/generic/pci/iomap.h) \ - include/xen/xen.h \ - $(wildcard include/config/xen/dom0.h) \ - $(wildcard include/config/xen/pvh.h) \ - include/xen/interface/xen.h \ - arch/x86/include/asm/xen/interface.h \ - arch/x86/include/asm/xen/interface_64.h \ - arch/x86/include/asm/pvclock-abi.h \ - arch/x86/include/asm/xen/hypervisor.h \ - include/xen/features.h \ - include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ - arch/x86/include/uapi/asm/vsyscall.h \ - include/asm-generic/fixmap.h \ - arch/x86/include/asm/idle.h \ - arch/x86/include/asm/io_apic.h \ - arch/x86/include/asm/irq_vectors.h \ - $(wildcard include/config/have/kvm.h) \ - $(wildcard include/config/pci/msi.h) \ - include/linux/topology.h \ - $(wildcard include/config/use/percpu/numa/node/id.h) \ - $(wildcard include/config/sched/smt.h) \ - include/linux/smp.h \ - $(wildcard include/config/up/late/init.h) \ - include/linux/llist.h \ - $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ - include/linux/percpu.h \ - $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ - $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ - include/linux/elf.h \ - arch/x86/include/asm/elf.h \ - $(wildcard include/config/x86/x32/abi.h) \ - arch/x86/include/asm/user.h \ - arch/x86/include/asm/user_64.h \ - arch/x86/include/uapi/asm/auxvec.h \ - arch/x86/include/asm/vdso.h \ - $(wildcard include/config/x86/x32.h) \ - include/linux/mm_types.h \ - $(wildcard include/config/split/ptlock/cpus.h) \ - $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ - $(wildcard include/config/have/cmpxchg/double.h) \ - $(wildcard include/config/have/aligned/struct/page.h) \ - $(wildcard include/config/transparent/hugepage.h) \ - $(wildcard include/config/userfaultfd.h) \ - $(wildcard include/config/aio.h) \ - $(wildcard include/config/mmu/notifier.h) \ - include/linux/auxvec.h \ - include/uapi/linux/auxvec.h \ - include/linux/uprobes.h \ - $(wildcard include/config/uprobes.h) \ - arch/x86/include/asm/uprobes.h \ - include/uapi/linux/elf.h \ - include/uapi/linux/elf-em.h \ - include/linux/kobject.h \ - $(wildcard include/config/uevent/helper.h) \ - $(wildcard include/config/debug/kobject/release.h) \ - include/linux/sysfs.h \ - include/linux/kernfs.h \ - $(wildcard include/config/kernfs.h) \ - include/linux/idr.h \ - include/linux/kobject_ns.h \ - include/linux/kref.h \ - include/linux/moduleparam.h \ - $(wildcard include/config/alpha.h) \ - $(wildcard include/config/ia64.h) \ - $(wildcard include/config/ppc64.h) \ - include/linux/rbtree_latch.h \ - arch/x86/include/asm/module.h \ - $(wildcard include/config/m586.h) \ - $(wildcard include/config/m586tsc.h) \ - $(wildcard include/config/m586mmx.h) \ - $(wildcard include/config/mcore2.h) \ - $(wildcard include/config/m686.h) \ - $(wildcard include/config/mpentiumii.h) \ - $(wildcard include/config/mpentiumiii.h) \ - $(wildcard include/config/mpentiumm.h) \ - $(wildcard include/config/mpentium4.h) \ - $(wildcard include/config/mk6.h) \ - $(wildcard include/config/mk8.h) \ - $(wildcard include/config/melan.h) \ - $(wildcard include/config/mcrusoe.h) \ - $(wildcard include/config/mefficeon.h) \ - $(wildcard include/config/mwinchipc6.h) \ - $(wildcard include/config/mwinchip3d.h) \ - $(wildcard include/config/mcyrixiii.h) \ - $(wildcard include/config/mviac3/2.h) \ - $(wildcard include/config/mviac7.h) \ - $(wildcard include/config/mgeodegx1.h) \ - $(wildcard include/config/mgeode/lx.h) \ - include/asm-generic/module.h \ - $(wildcard include/config/have/mod/arch/specific.h) \ - $(wildcard include/config/modules/use/elf/rel.h) \ - $(wildcard include/config/modules/use/elf/rela.h) \ - include/linux/blkdev.h \ - $(wildcard include/config/block.h) \ - $(wildcard include/config/blk/cgroup.h) \ - $(wildcard include/config/blk/dev/integrity.h) \ - $(wildcard include/config/blk/dev/io/trace.h) \ - $(wildcard include/config/blk/dev/bsg.h) \ - $(wildcard include/config/blk/dev/throttling.h) \ - $(wildcard include/config/bounce.h) \ - include/linux/sched.h \ - $(wildcard include/config/sched/debug.h) \ - $(wildcard include/config/lockup/detector.h) \ - $(wildcard include/config/detect/hung/task.h) \ - $(wildcard include/config/core/dump/default/elf/headers.h) \ - $(wildcard include/config/virt/cpu/accounting/native.h) \ - $(wildcard include/config/sched/autogroup.h) \ - $(wildcard include/config/bsd/process/acct.h) \ - $(wildcard include/config/taskstats.h) \ - $(wildcard include/config/audit.h) \ - $(wildcard include/config/inotify/user.h) \ - $(wildcard include/config/fanotify.h) \ - $(wildcard include/config/epoll.h) \ - $(wildcard include/config/posix/mqueue.h) \ - $(wildcard include/config/keys.h) \ - $(wildcard include/config/perf/events.h) \ - $(wildcard include/config/bpf/syscall.h) \ - $(wildcard include/config/sched/info.h) \ - $(wildcard include/config/task/delay/acct.h) \ - $(wildcard include/config/schedstats.h) \ - $(wildcard include/config/sched/mc.h) \ - $(wildcard include/config/fair/group/sched.h) \ - $(wildcard include/config/rt/group/sched.h) \ - $(wildcard include/config/cgroup/sched.h) \ - $(wildcard include/config/memcg/kmem.h) \ - $(wildcard include/config/compat/brk.h) \ - $(wildcard include/config/virt/cpu/accounting/gen.h) \ - $(wildcard include/config/sysvipc.h) \ - $(wildcard include/config/auditsyscall.h) \ - $(wildcard include/config/rt/mutexes.h) \ - $(wildcard include/config/task/xacct.h) \ - $(wildcard include/config/cpusets.h) \ - $(wildcard include/config/cgroups.h) \ - $(wildcard include/config/futex.h) \ - $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ - $(wildcard include/config/fault/injection.h) \ - $(wildcard include/config/latencytop.h) \ - $(wildcard include/config/function/graph/tracer.h) \ - $(wildcard include/config/bcache.h) \ - $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ - $(wildcard include/config/have/unstable/sched/clock.h) \ - $(wildcard include/config/irq/time/accounting.h) \ - $(wildcard include/config/stack/growsup.h) \ - $(wildcard include/config/have/copy/thread/tls.h) \ - include/uapi/linux/sched.h \ - include/linux/sched/prio.h \ - include/linux/capability.h \ - include/uapi/linux/capability.h \ - include/linux/plist.h \ - $(wildcard include/config/debug/pi/list.h) \ - include/linux/cputime.h \ - arch/x86/include/generated/asm/cputime.h \ - include/asm-generic/cputime.h \ - $(wildcard include/config/virt/cpu/accounting.h) \ - include/asm-generic/cputime_jiffies.h \ - include/linux/sem.h \ - include/uapi/linux/sem.h \ - include/linux/ipc.h \ - include/uapi/linux/ipc.h \ - arch/x86/include/uapi/asm/ipcbuf.h \ - include/uapi/asm-generic/ipcbuf.h \ - arch/x86/include/uapi/asm/sembuf.h \ - include/linux/shm.h \ - include/uapi/linux/shm.h \ - arch/x86/include/uapi/asm/shmbuf.h \ - include/uapi/asm-generic/shmbuf.h \ - arch/x86/include/asm/shmparam.h \ - include/linux/signal.h \ - $(wildcard include/config/old/sigaction.h) \ - include/uapi/linux/signal.h \ - arch/x86/include/asm/signal.h \ - arch/x86/include/uapi/asm/signal.h \ - include/uapi/asm-generic/signal-defs.h \ - arch/x86/include/uapi/asm/siginfo.h \ - include/asm-generic/siginfo.h \ - include/uapi/asm-generic/siginfo.h \ - include/linux/pid.h \ - include/linux/proportions.h \ - include/linux/percpu_counter.h \ - include/linux/seccomp.h \ - $(wildcard include/config/seccomp.h) \ - $(wildcard include/config/have/arch/seccomp/filter.h) \ - $(wildcard include/config/seccomp/filter.h) \ - $(wildcard include/config/checkpoint/restore.h) \ - include/uapi/linux/seccomp.h \ - arch/x86/include/asm/seccomp.h \ - arch/x86/include/asm/unistd.h \ - arch/x86/include/uapi/asm/unistd.h \ - arch/x86/include/generated/uapi/asm/unistd_64.h \ - arch/x86/include/generated/asm/unistd_64_x32.h \ - arch/x86/include/asm/ia32_unistd.h \ - arch/x86/include/generated/asm/unistd_32_ia32.h \ - include/asm-generic/seccomp.h \ - include/uapi/linux/unistd.h \ - include/linux/rculist.h \ - include/linux/rtmutex.h \ - $(wildcard include/config/debug/rt/mutexes.h) \ - include/linux/resource.h \ - include/uapi/linux/resource.h \ - arch/x86/include/uapi/asm/resource.h \ - include/asm-generic/resource.h \ - include/uapi/asm-generic/resource.h \ - include/linux/hrtimer.h \ - $(wildcard include/config/high/res/timers.h) \ - $(wildcard include/config/time/low/res.h) \ - $(wildcard include/config/timerfd.h) \ - include/linux/timerqueue.h \ - include/linux/task_io_accounting.h \ - $(wildcard include/config/task/io/accounting.h) \ - include/linux/latencytop.h \ - include/linux/cred.h \ - $(wildcard include/config/debug/credentials.h) \ - $(wildcard include/config/security.h) \ - include/linux/key.h \ - include/linux/assoc_array.h \ - $(wildcard include/config/associative/array.h) \ - include/linux/selinux.h \ - $(wildcard include/config/security/selinux.h) \ - include/uapi/linux/magic.h \ - include/linux/cgroup-defs.h \ - include/uapi/linux/limits.h \ - include/linux/percpu-refcount.h \ - include/linux/percpu-rwsem.h \ - include/linux/rcu_sync.h \ - include/linux/cgroup_subsys.h \ - $(wildcard include/config/cgroup/cpuacct.h) \ - $(wildcard include/config/cgroup/device.h) \ - $(wildcard include/config/cgroup/freezer.h) \ - $(wildcard include/config/cgroup/net/classid.h) \ - $(wildcard include/config/cgroup/perf.h) \ - $(wildcard include/config/cgroup/net/prio.h) \ - $(wildcard include/config/cgroup/hugetlb.h) \ - $(wildcard include/config/cgroup/pids.h) \ - $(wildcard include/config/cgroup/debug.h) \ - include/uapi/linux/major.h \ - include/linux/genhd.h \ - $(wildcard include/config/fail/make/request.h) \ - $(wildcard include/config/solaris/x86/partition.h) \ - $(wildcard include/config/bsd/disklabel.h) \ - $(wildcard include/config/unixware/disklabel.h) \ - $(wildcard include/config/minix/subpartition.h) \ - include/linux/kdev_t.h \ - include/uapi/linux/kdev_t.h \ - include/linux/slab.h \ - $(wildcard include/config/debug/slab.h) \ - $(wildcard include/config/failslab.h) \ - $(wildcard include/config/slab.h) \ - $(wildcard include/config/slub.h) \ - $(wildcard include/config/slob.h) \ - include/linux/kmemleak.h \ - $(wildcard include/config/debug/kmemleak.h) \ - include/linux/kasan.h \ - include/linux/device.h \ - $(wildcard include/config/debug/devres.h) \ - $(wildcard include/config/generic/msi/irq/domain.h) \ - $(wildcard include/config/pinctrl.h) \ - $(wildcard include/config/generic/msi/irq.h) \ - $(wildcard include/config/dma/cma.h) \ - $(wildcard include/config/of.h) \ - $(wildcard include/config/devtmpfs.h) \ - $(wildcard include/config/sysfs/deprecated.h) \ - include/linux/klist.h \ - include/linux/pinctrl/devinfo.h \ - include/linux/pinctrl/consumer.h \ - include/linux/seq_file.h \ - include/linux/pinctrl/pinctrl-state.h \ - include/linux/ratelimit.h \ - arch/x86/include/asm/device.h \ - $(wildcard include/config/x86/dev/dma/ops.h) \ - $(wildcard include/config/intel/iommu.h) \ - $(wildcard include/config/amd/iommu.h) \ - include/linux/pm_wakeup.h \ - include/linux/fs.h \ - $(wildcard include/config/fs/posix/acl.h) \ - $(wildcard include/config/cgroup/writeback.h) \ - $(wildcard include/config/ima.h) \ - $(wildcard include/config/fsnotify.h) \ - $(wildcard include/config/file/locking.h) \ - $(wildcard include/config/quota.h) \ - $(wildcard include/config/blk/dev/loop.h) \ - $(wildcard include/config/fs/dax.h) \ - $(wildcard include/config/migration.h) \ - include/linux/dcache.h \ - include/linux/rculist_bl.h \ - include/linux/list_bl.h \ - include/linux/bit_spinlock.h \ - include/linux/lockref.h \ - $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ - include/linux/path.h \ - include/linux/list_lru.h \ - include/linux/shrinker.h \ - include/linux/radix-tree.h \ - include/linux/semaphore.h \ - include/uapi/linux/fiemap.h \ - include/linux/migrate_mode.h \ - include/linux/blk_types.h \ - include/uapi/linux/fs.h \ - include/linux/quota.h \ - $(wildcard include/config/quota/netlink/interface.h) \ - include/uapi/linux/dqblk_xfs.h \ - include/linux/dqblk_v1.h \ - include/linux/dqblk_v2.h \ - include/linux/dqblk_qtree.h \ - include/linux/projid.h \ - include/uapi/linux/quota.h \ - include/linux/nfs_fs_i.h \ - include/linux/fcntl.h \ - include/uapi/linux/fcntl.h \ - arch/x86/include/uapi/asm/fcntl.h \ - include/uapi/asm-generic/fcntl.h \ - include/linux/pagemap.h \ - include/linux/mm.h \ - $(wildcard include/config/ppc.h) \ - $(wildcard include/config/parisc.h) \ - $(wildcard include/config/metag.h) \ - $(wildcard include/config/shmem.h) \ - $(wildcard include/config/debug/vm/rb.h) \ - $(wildcard include/config/debug/pagealloc.h) \ - $(wildcard include/config/hugetlbfs.h) \ - include/linux/debug_locks.h \ - $(wildcard include/config/debug/locking/api/selftests.h) \ - include/linux/page_ext.h \ - $(wildcard include/config/idle/page/tracking.h) \ - $(wildcard include/config/page/owner.h) \ - include/linux/stacktrace.h \ - $(wildcard include/config/stacktrace.h) \ - $(wildcard include/config/user/stacktrace/support.h) \ - arch/x86/include/asm/pgtable.h \ - $(wildcard include/config/debug/wx.h) \ - $(wildcard include/config/have/arch/soft/dirty.h) \ - arch/x86/include/asm/pgtable_64.h \ - include/asm-generic/pgtable.h \ - $(wildcard include/config/have/arch/huge/vmap.h) \ - include/linux/page-flags.h \ - $(wildcard include/config/arch/uses/pg/uncached.h) \ - $(wildcard include/config/memory/failure.h) \ - $(wildcard include/config/swap.h) \ - $(wildcard include/config/ksm.h) \ - include/linux/huge_mm.h \ - include/linux/vmstat.h \ - $(wildcard include/config/vm/event/counters.h) \ - $(wildcard include/config/debug/tlbflush.h) \ - $(wildcard include/config/debug/vm/vmacache.h) \ - include/linux/vm_event_item.h \ - $(wildcard include/config/memory/balloon.h) \ - $(wildcard include/config/balloon/compaction.h) \ - include/linux/highmem.h \ - include/linux/uaccess.h \ - arch/x86/include/asm/uaccess.h \ - $(wildcard include/config/x86/intel/usercopy.h) \ - $(wildcard include/config/debug/strict/user/copy/checks.h) \ - arch/x86/include/asm/smap.h \ - $(wildcard include/config/x86/smap.h) \ - arch/x86/include/asm/uaccess_64.h \ - include/linux/hardirq.h \ - include/linux/ftrace_irq.h \ - $(wildcard include/config/ftrace/nmi/enter.h) \ - include/linux/vtime.h \ - include/linux/context_tracking_state.h \ - $(wildcard include/config/context/tracking.h) \ - include/linux/static_key.h \ - arch/x86/include/asm/hardirq.h \ - $(wildcard include/config/x86/thermal/vector.h) \ - $(wildcard include/config/x86/mce/threshold.h) \ - $(wildcard include/config/x86/mce/amd.h) \ - $(wildcard include/config/hyperv.h) \ - include/linux/irq.h \ - $(wildcard include/config/irq/domain/hierarchy.h) \ - $(wildcard include/config/generic/pending/irq.h) \ - $(wildcard include/config/hardirqs/sw/resend.h) \ - $(wildcard include/config/generic/irq/legacy/alloc/hwirq.h) \ - $(wildcard include/config/generic/irq/legacy.h) \ - include/linux/irqhandler.h \ - include/linux/irqreturn.h \ - include/linux/irqnr.h \ - include/uapi/linux/irqnr.h \ - include/linux/io.h \ - arch/x86/include/asm/irq.h \ - arch/x86/include/asm/irq_regs.h \ - include/linux/irqdesc.h \ - $(wildcard include/config/irq/preflow/fasteoi.h) \ - $(wildcard include/config/sparse/irq.h) \ - $(wildcard include/config/handle/domain/irq.h) \ - arch/x86/include/asm/hw_irq.h \ - $(wildcard include/config/hpet/timer.h) \ - $(wildcard include/config/dmar/table.h) \ - $(wildcard include/config/ht/irq.h) \ - $(wildcard include/config/x86/uv.h) \ - include/linux/profile.h \ - $(wildcard include/config/profiling.h) \ - arch/x86/include/asm/sections.h \ - $(wildcard include/config/debug/rodata.h) \ - include/asm-generic/sections.h \ - arch/x86/include/asm/cacheflush.h \ - $(wildcard include/config/debug/rodata/test.h) \ - include/asm-generic/cacheflush.h \ - include/linux/hugetlb_inline.h \ - include/linux/backing-dev-defs.h \ - $(wildcard include/config/debug/fs.h) \ - include/linux/flex_proportions.h \ - include/linux/mempool.h \ - include/linux/bio.h \ - include/linux/ioprio.h \ - include/linux/iocontext.h \ - include/linux/bsg.h \ - include/uapi/linux/bsg.h \ - include/linux/scatterlist.h \ - $(wildcard include/config/debug/sg.h) \ - $(wildcard include/config/need/sg/dma/length.h) \ - include/linux/elevator.h \ - include/linux/hashtable.h \ - include/linux/hash.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ - include/generated/uapi/linux/version.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ - $(wildcard include/config/enable/msg.h) \ - $(wildcard include/config/enable/debug.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/ftl_params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/../devices/common/dev_params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/llm_noq.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/llm_mq.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_nobuf.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_buf.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_dftl.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_rsd.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/devices.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/pmu.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/no_ftl.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/block_ftl.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/page_ftl.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/dftl.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/../frontend/kernel/nvm_cache.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.h \ - include/linux/buffer_head.h \ - -/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o) - -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o): diff --git a/common/bdbm_main.o b/common/bdbm_main.o deleted file mode 100644 index 9fd57e0d42701d4a1530c020e68f4d90e7580b68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10264 zcmeHMeQXrR6<S}`pVH%kLX;+r`UMTGLPga?L>1sP!U?4~QKV26wNa}Urvg&fL?Wt6s8Zs-H~XG% zZoCUrsnq_#5Z}!F<~P6h=FOYgz00F(o7YV#E7Q1?X4g3}wzMVlB&t9Hl-$|( z^zD2WdO-8#&Oieg@8B?$?4woFe2>o*MykfEP9O%eBn=SA9Ft~@y#<{SUk+HLK=l62wO}X!=y!*)DE_d8F zL$*2mG1z?GojJJQ9S55ayN?`!$ZBoJqkE!$-~0h+(|)&N>V7TwV6YVvIR8;7d!f9! z@B(gbOYW?1;6<3XzHm=fxyanDQy|p4w*|&eK_2Hipoe1>V(d*E%b#(EUWLxuhVkt7 zT1XJw)#k!M+@O}+`}Q5{3mK5R zLeOEoj7Yxa6fr}EmQ%jm4-teTC(;fY3Z&IJJCKDrx|X9_N;PH{YGa;ebh=NZ8I6E?>4QZ8L#*I@xP8#B9Tfu^h7w8^mnj{^v%`j)zy)fJEZG~5$0B-HJfYkDJ!X+y>X-1NJ=1BVl0}MGLMe~+;@8k)Ueu0X z)vg*33V@x`d#qHusfYDwJe=;*BW7=`L-Jl-r?(F5Wb!I9TGB-)NUR&K$r$qPq*FicM`2U6uZj78}*Ny|sa0^6f zet7Q#`HzWMYWJ$=qZmip$F5Y`)?;u2t!TI;A-wjH4;&sB%j}G$VX7HfaGm=&G23xu zLDBcCulp+J(<9%~cFMwh6DKCz9yilEoPwJAOxmhXcZIFuT~yCI;oJ|`(2Kyq_t2rt zc0zGI@#~1E(q`oP`IebT_3{L9oBZb=_`b_!7dN2Z4}WgKaTet|L~+x!rZsC;>$R=z znWUZ3m;0Cb1B+K=M6cnS4J-VCW&R~~4z4c=G^_}$2z*hpT-t=Ek#>{z!FVa^^rpIg z!_%~>@XxJG1tqsKRh#ApgUZbw_$?mzbPs%n2Y%}$+(EqjnK_A%-w|(<;_zo;EQGpZ z5?j+2d*HYOZu|`%_!bX*s|UUlaP)HoYAmO5W1&0+f3smw)NVSbJ@7wy;A4QJ{t(ny_BfUHA=HRJOzUABe~NIkTLC!6VQ7jY z@D)ncyFB5YzG@Oas2HYSc3d;y ztpa@O)yT0<(}9tdOcmQ`#j%%6u`WN^3@ek=BC&K&Jlv03@S4R7VHD+P)jf#}hf4@V zEz>M6OgtYn7ZQ`@7zetM!V5Rz#0;!!nib9X0+w!d0EQ3VzX%(eCunsZ;nw*8&P&N&YSO&7fSei!Z{y?=s8s-@#XV-uf&(%f_fF4&%iDT7xxC~Kk1==K;?t4 zSYA}{KGHejp;JYd6vpTC@W=595YFpGZ7eGl{4(j^E$PT{cu?UxD)4Kqg7bN3_t5E4 z_^h){!MiALAMw!HrSMtjDFt6e>w4Bh=b*x8okI%VM|pYJLuXjwv(DQJ&hJO3J#@|~ zeAc<3;4e{pKJd`FqVO*he+s=P;d12toh{+=xvP=zYM8@$^^AlslJM^nK9O(a$B!hw zZ1<4D@1p!Z?7=@F@$o$Jx%-QRqe(s|?|JC_L*mQlx`G~}6aIr1mfICPKz`06T#aXg zgv;?N=)xEDXFh&Fp)d&?W6FL0#)mZgyPx>%Cw65%`^o&LiO=sCDqr)b`xAD! z9ctTh>Mm|sW<2b-%|2VhU#7yEzdfDS{8kD(NN@13(!{twlZ?l@&3HeI;v9$KbPRaa z?leF-ZkEn%(ERwbE_^4@{K=GU`kU@+T`b<|VM(93=%9chr}UlBYot~)im5)|DrNMXCbN^ zphn6P1?TzvJmO*YpJf|i0NZN(u5d!~M5=in!yBQ27^NS>nnpi)1d51gv3-W||7g3$ zpAvZw5i$N45}wcT4+G|AKS1`YXg*h}{|~`{oBabW_AwPy`w75MQ;q*dvcD3>xeU>K?sLuaxR2lQ)ZD|diiHm21*e+$ROe%V(%u8c z_W6Ah&mFp?#t&oaW`74d28F+GIlbb#x&ME8uZi2yFcKXp_-WL@Uq3!^(Ln)Yt)A0H zz_8r7=bSk3C+8XGYa reserved -[ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable -[ 0.000000] e820: last_pfn = 0x106f000 max_arch_pfn = 0x400000000 -[ 0.000000] MTRR default type: write-back -[ 0.000000] MTRR fixed ranges enabled: -[ 0.000000] 00000-9FFFF write-back -[ 0.000000] A0000-BFFFF uncachable -[ 0.000000] C0000-FFFFF write-protect -[ 0.000000] MTRR variable ranges enabled: -[ 0.000000] 0 base 00C0000000 mask 7FC0000000 uncachable -[ 0.000000] 1 base 00A0000000 mask 7FE0000000 uncachable -[ 0.000000] 2 base 0090000000 mask 7FF0000000 uncachable -[ 0.000000] 3 base 008C000000 mask 7FFC000000 uncachable -[ 0.000000] 4 base 008B800000 mask 7FFF800000 uncachable -[ 0.000000] 5 disabled -[ 0.000000] 6 disabled -[ 0.000000] 7 disabled -[ 0.000000] 8 disabled -[ 0.000000] 9 disabled -[ 0.000000] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WC UC- WT -[ 0.000000] e820: last_pfn = 0x8b400 max_arch_pfn = 0x400000000 -[ 0.000000] found SMP MP-table at [mem 0x000fcc70-0x000fcc7f] mapped at [ffff8800000fcc70] -[ 0.000000] Scanning 1 areas for low memory corruption -[ 0.000000] Base memory trampoline at [ffff880000096000] 96000 size 24576 -[ 0.000000] Using GB pages for direct mapping -[ 0.000000] BRK [0x03201000, 0x03201fff] PGTABLE -[ 0.000000] BRK [0x03202000, 0x03202fff] PGTABLE -[ 0.000000] BRK [0x03203000, 0x03203fff] PGTABLE -[ 0.000000] BRK [0x03204000, 0x03204fff] PGTABLE -[ 0.000000] BRK [0x03205000, 0x03205fff] PGTABLE -[ 0.000000] BRK [0x03206000, 0x03206fff] PGTABLE -[ 0.000000] RAMDISK: [mem 0x33aaa000-0x35d4cfff] -[ 0.000000] ACPI: Early table checksum verification disabled -[ 0.000000] ACPI: RSDP 0x000000008AD5C000 000024 (v02 ALASKA) -[ 0.000000] ACPI: XSDT 0x000000008AD5C098 0000B4 (v01 ALASKA A M I 01072009 AMI 00010013) -[ 0.000000] ACPI: FACP 0x000000008AD7E928 00010C (v05 ALASKA A M I 01072009 AMI 00010013) -[ 0.000000] ACPI: DSDT 0x000000008AD5C1E8 02273A (v02 ALASKA A M I 01072009 INTL 20120913) -[ 0.000000] ACPI: FACS 0x000000008ADA0F80 000040 -[ 0.000000] ACPI: APIC 0x000000008AD7EA38 000084 (v03 ALASKA A M I 01072009 AMI 00010013) -[ 0.000000] ACPI: FPDT 0x000000008AD7EAC0 000044 (v01 ALASKA A M I 01072009 AMI 00010013) -[ 0.000000] ACPI: FIDT 0x000000008AD7EB08 00009C (v01 ALASKA A M I 01072009 AMI 00010013) -[ 0.000000] ACPI: MCFG 0x000000008AD7EBA8 00003C (v01 ALASKA A M I 01072009 MSFT 00000097) -[ 0.000000] ACPI: HPET 0x000000008AD7EBE8 000038 (v01 ALASKA A M I 01072009 AMI. 0005000B) -[ 0.000000] ACPI: SSDT 0x000000008AD7EC20 00036D (v01 SataRe SataTabl 00001000 INTL 20120913) -[ 0.000000] ACPI: LPIT 0x000000008AD7EF90 000094 (v01 INTEL SKL 00000000 MSFT 0000005F) -[ 0.000000] ACPI: SSDT 0x000000008AD7F028 000248 (v02 INTEL sensrhub 00000000 INTL 20120913) -[ 0.000000] ACPI: SSDT 0x000000008AD7F270 002BAE (v02 INTEL PtidDevc 00001000 INTL 20120913) -[ 0.000000] ACPI: SSDT 0x000000008AD81E20 000C45 (v02 INTEL Ther_Rvp 00001000 INTL 20120913) -[ 0.000000] ACPI: DBGP 0x000000008AD82A68 000034 (v01 INTEL 00000000 MSFT 0000005F) -[ 0.000000] ACPI: DBG2 0x000000008AD82AA0 000054 (v00 INTEL 00000000 MSFT 0000005F) -[ 0.000000] ACPI: SSDT 0x000000008AD82AF8 000615 (v02 INTEL xh_rvp08 00000000 INTL 20120913) -[ 0.000000] ACPI: SSDT 0x000000008AD83110 0053B2 (v02 SaSsdt SaSsdt 00003000 INTL 20120913) -[ 0.000000] ACPI: UEFI 0x000000008AD884C8 000042 (v01 00000000 00000000) -[ 0.000000] ACPI: SSDT 0x000000008AD88510 000E9A (v02 CpuRef CpuSsdt 00003000 INTL 20120913) -[ 0.000000] ACPI: BGRT 0x000000008AD893B0 000038 (v01 ALASKA A M I 01072009 AMI 00010013) -[ 0.000000] ACPI: Local APIC address 0xfee00000 -[ 0.000000] No NUMA configuration found -[ 0.000000] Faking a node at [mem 0x0000000000000000-0x000000106effffff] -[ 0.000000] NODE_DATA(0) allocated [mem 0x106eff6000-0x106effafff] -[ 0.000000] Zone ranges: -[ 0.000000] DMA [mem 0x0000000000001000-0x0000000000ffffff] -[ 0.000000] DMA32 [mem 0x0000000001000000-0x00000000ffffffff] -[ 0.000000] Normal [mem 0x0000000100000000-0x000000106effffff] -[ 0.000000] Device empty -[ 0.000000] Movable zone start for each node -[ 0.000000] Early memory node ranges -[ 0.000000] node 0: [mem 0x0000000000001000-0x0000000000057fff] -[ 0.000000] node 0: [mem 0x0000000000059000-0x000000000009efff] -[ 0.000000] node 0: [mem 0x0000000000100000-0x000000008277cfff] -[ 0.000000] node 0: [mem 0x00000000827a8000-0x00000000827f9fff] -[ 0.000000] node 0: [mem 0x000000008303b000-0x000000008a2a5fff] -[ 0.000000] node 0: [mem 0x000000008a583000-0x000000008a749fff] -[ 0.000000] node 0: [mem 0x000000008b3ff000-0x000000008b3fffff] -[ 0.000000] node 0: [mem 0x0000000100000000-0x000000106effffff] -[ 0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000106effffff] -[ 0.000000] On node 0 totalpages: 16747423 -[ 0.000000] DMA zone: 64 pages used for memmap -[ 0.000000] DMA zone: 26 pages reserved -[ 0.000000] DMA zone: 3997 pages, LIFO batch:0 -[ 0.000000] DMA32 zone: 8753 pages used for memmap -[ 0.000000] DMA32 zone: 560130 pages, LIFO batch:31 -[ 0.000000] Normal zone: 252864 pages used for memmap -[ 0.000000] Normal zone: 16183296 pages, LIFO batch:31 -[ 0.000000] Reserving Intel graphics stolen memory at 0x8c000000-0x8fffffff -[ 0.000000] ACPI: PM-Timer IO Port: 0x1808 -[ 0.000000] ACPI: Local APIC address 0xfee00000 -[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) -[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1]) -[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1]) -[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x04] high edge lint[0x1]) -[ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-119 -[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) -[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) -[ 0.000000] ACPI: IRQ0 used by override. -[ 0.000000] ACPI: IRQ9 used by override. -[ 0.000000] Using ACPI (MADT) for SMP configuration information -[ 0.000000] ACPI: HPET id: 0x8086a701 base: 0xfed00000 -[ 0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs -[ 0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff] -[ 0.000000] PM: Registered nosave memory: [mem 0x00058000-0x00058fff] -[ 0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff] -[ 0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000fffff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8277d000-0x8277dfff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8277e000-0x827a7fff] -[ 0.000000] PM: Registered nosave memory: [mem 0x827fa000-0x8303afff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8a2a6000-0x8a582fff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8a74a000-0x8ada0fff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8ada1000-0x8b393fff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8b394000-0x8b3fefff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8b400000-0x8bffffff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8c000000-0x8fffffff] -[ 0.000000] PM: Registered nosave memory: [mem 0x90000000-0xdfffffff] -[ 0.000000] PM: Registered nosave memory: [mem 0xe0000000-0xefffffff] -[ 0.000000] PM: Registered nosave memory: [mem 0xf0000000-0xfdffffff] -[ 0.000000] PM: Registered nosave memory: [mem 0xfe000000-0xfe010fff] -[ 0.000000] PM: Registered nosave memory: [mem 0xfe011000-0xfebfffff] -[ 0.000000] PM: Registered nosave memory: [mem 0xfec00000-0xfec00fff] -[ 0.000000] PM: Registered nosave memory: [mem 0xfec01000-0xfedfffff] -[ 0.000000] PM: Registered nosave memory: [mem 0xfee00000-0xfee00fff] -[ 0.000000] PM: Registered nosave memory: [mem 0xfee01000-0xfeffffff] -[ 0.000000] PM: Registered nosave memory: [mem 0xff000000-0xffffffff] -[ 0.000000] e820: [mem 0x90000000-0xdfffffff] available for PCI devices -[ 0.000000] Booting paravirtualized kernel on bare hardware -[ 0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns -[ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:4 nr_node_ids:1 -[ 0.000000] PERCPU: Embedded 33 pages/cpu @ffff88106ec00000 s98008 r8192 d28968 u524288 -[ 0.000000] pcpu-alloc: s98008 r8192 d28968 u524288 alloc=1*2097152 -[ 0.000000] pcpu-alloc: [0] 0 1 2 3 -[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 16485716 -[ 0.000000] Policy zone: Normal -[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-42-generic.efi.signed root=UUID=f5bf218f-1f62-4a63-bcfe-1bdb8e06f01c ro quiet splash vt.handoff=7 -[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) -[ 0.000000] Calgary: detecting Calgary via BIOS EBDA area -[ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! -[ 0.000000] Memory: 65700716K/66989692K available (8409K kernel code, 1283K rwdata, 3944K rodata, 1480K init, 1292K bss, 1288976K reserved, 0K cma-reserved) -[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 -[ 0.000000] Hierarchical RCU implementation. -[ 0.000000] Build-time adjustment of leaf fanout to 64. -[ 0.000000] RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4. -[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=4 -[ 0.000000] NR_IRQS:16640 nr_irqs:1024 16 -[ 0.000000] spurious 8259A interrupt: IRQ7. -[ 0.000000] vt handoff: transparent VT on vt#7 -[ 0.000000] Console: colour dummy device 80x25 -[ 0.000000] console [tty0] enabled -[ 0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635855245 ns -[ 0.000000] hpet clockevent registered -[ 0.000000] tsc: PIT calibration matches HPET. 1 loops -[ 0.000000] tsc: Detected 3311.929 MHz processor -[ 0.000021] Calibrating delay loop (skipped), value calculated using timer frequency.. 6623.85 BogoMIPS (lpj=13247716) -[ 0.000023] pid_max: default: 32768 minimum: 301 -[ 0.000026] ACPI: Core revision 20150930 -[ 0.018754] ACPI Error: [\_SB_.PCI0.XHC_.RHUB.HS11] Namespace lookup failure, AE_NOT_FOUND (20150930/dswload-210) -[ 0.018757] ACPI Exception: AE_NOT_FOUND, During name lookup/catalog (20150930/psobject-227) -[ 0.018786] ACPI Exception: AE_NOT_FOUND, (SSDT:xh_rvp08) while loading table (20150930/tbxfload-193) -[ 0.024980] ACPI Error: 1 table load failures, 7 successful (20150930/tbxfload-214) -[ 0.026885] Security Framework initialized -[ 0.026886] Yama: becoming mindful. -[ 0.026895] AppArmor: AppArmor initialized -[ 0.029456] Dentry cache hash table entries: 8388608 (order: 14, 67108864 bytes) -[ 0.037862] Inode-cache hash table entries: 4194304 (order: 13, 33554432 bytes) -[ 0.041500] Mount-cache hash table entries: 131072 (order: 8, 1048576 bytes) -[ 0.041541] Mountpoint-cache hash table entries: 131072 (order: 8, 1048576 bytes) -[ 0.041817] Initializing cgroup subsys io -[ 0.041819] Initializing cgroup subsys memory -[ 0.041823] Initializing cgroup subsys devices -[ 0.041824] Initializing cgroup subsys freezer -[ 0.041825] Initializing cgroup subsys net_cls -[ 0.041827] Initializing cgroup subsys perf_event -[ 0.041828] Initializing cgroup subsys net_prio -[ 0.041830] Initializing cgroup subsys hugetlb -[ 0.041831] Initializing cgroup subsys pids -[ 0.041848] CPU: Physical Processor ID: 0 -[ 0.041849] CPU: Processor Core ID: 0 -[ 0.042757] mce: CPU supports 10 MCE banks -[ 0.042771] CPU0: Thermal monitoring enabled (TM1) -[ 0.042778] process: using mwait in idle threads -[ 0.042780] Last level iTLB entries: 4KB 128, 2MB 8, 4MB 8 -[ 0.042781] Last level dTLB entries: 4KB 64, 2MB 0, 4MB 0, 1GB 4 -[ 0.043036] Freeing SMP alternatives memory: 32K (ffffffff820b4000 - ffffffff820bc000) -[ 0.047017] ftrace: allocating 32007 entries in 126 pages -[ 0.056640] smpboot: Max logical packages: 1 -[ 0.056642] smpboot: APIC(0) Converting physical 0 to logical package 0 -[ 0.057900] x2apic: IRQ remapping doesn't support X2APIC mode -[ 0.060976] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0 -[ 0.100664] TSC deadline timer enabled -[ 0.100669] smpboot: CPU0: Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz (family: 0x6, model: 0x5e, stepping: 0x3) -[ 0.100680] Performance Events: PEBS fmt3+, 32-deep LBR, Skylake events, full-width counters, Intel PMU driver. -[ 0.100701] ... version: 4 -[ 0.100702] ... bit width: 48 -[ 0.100702] ... generic registers: 8 -[ 0.100703] ... value mask: 0000ffffffffffff -[ 0.100703] ... max period: 0000ffffffffffff -[ 0.100704] ... fixed-purpose events: 3 -[ 0.100705] ... event mask: 00000007000000ff -[ 0.101254] x86: Booting SMP configuration: -[ 0.101255] .... node #0, CPUs: #1 -[ 0.104611] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter. -[ 0.104654] #2 #3 -[ 0.111168] x86: Booted up 1 node, 4 CPUs -[ 0.111171] smpboot: Total of 4 processors activated (26495.43 BogoMIPS) -[ 0.113690] devtmpfs: initialized -[ 0.113728] memory block size : 128MB -[ 0.118576] evm: security.selinux -[ 0.118577] evm: security.SMACK64 -[ 0.118578] evm: security.SMACK64EXEC -[ 0.118578] evm: security.SMACK64TRANSMUTE -[ 0.118579] evm: security.SMACK64MMAP -[ 0.118580] evm: security.ima -[ 0.118580] evm: security.capability -[ 0.118618] PM: Registering ACPI NVS region [mem 0x8277d000-0x8277dfff] (4096 bytes) -[ 0.118618] PM: Registering ACPI NVS region [mem 0x8a74a000-0x8ada0fff] (6647808 bytes) -[ 0.118711] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns -[ 0.118768] pinctrl core: initialized pinctrl subsystem -[ 0.118914] RTC time: 8:20:37, date: 10/23/16 -[ 0.119707] NET: Registered protocol family 16 -[ 0.137549] cpuidle: using governor ladder -[ 0.149549] cpuidle: using governor menu -[ 0.149552] PCCT header not found. -[ 0.149597] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it -[ 0.149598] ACPI: bus type PCI registered -[ 0.149599] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 -[ 0.149647] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) -[ 0.149649] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 -[ 0.149657] PCI: Using configuration type 1 for base access -[ 0.161749] ACPI: Added _OSI(Module Device) -[ 0.161750] ACPI: Added _OSI(Processor Device) -[ 0.161751] ACPI: Added _OSI(3.0 _SCP Extensions) -[ 0.161752] ACPI: Added _OSI(Processor Aggregator Device) -[ 0.166925] ACPI: Executed 21 blocks of module-level executable AML code -[ 0.171116] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored -[ 0.173364] ACPI: Dynamic OEM Table Load: -[ 0.173370] ACPI: SSDT 0xFFFF8810270E3000 0006C3 (v02 PmRef Cpu0Ist 00003000 INTL 20120913) -[ 0.173993] ACPI: \_PR_.CPU0: _OSC native thermal LVT Acked -[ 0.175071] ACPI: Dynamic OEM Table Load: -[ 0.175075] ACPI: SSDT 0xFFFF88102712D800 00037F (v02 PmRef Cpu0Cst 00003001 INTL 20120913) -[ 0.176168] ACPI: Dynamic OEM Table Load: -[ 0.176172] ACPI: SSDT 0xFFFF8810270E3800 0005AA (v02 PmRef ApIst 00003000 INTL 20120913) -[ 0.176916] ACPI: Dynamic OEM Table Load: -[ 0.176919] ACPI: SSDT 0xFFFF881027161600 000119 (v02 PmRef ApCst 00003000 INTL 20120913) -[ 0.178988] ACPI: Interpreter enabled -[ 0.178995] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20150930/hwxface-580) -[ 0.179002] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20150930/hwxface-580) -[ 0.179017] ACPI: (supports S0 S3 S4 S5) -[ 0.179018] ACPI: Using IOAPIC for interrupt routing -[ 0.179041] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug -[ 0.180449] ACPI: Power Resource [PG00] (on) -[ 0.180723] ACPI: Power Resource [PG01] (on) -[ 0.180965] ACPI: Power Resource [PG02] (on) -[ 0.182031] ACPI: Power Resource [WRST] (off) -[ 0.182245] ACPI: Power Resource [WRST] (off) -[ 0.182464] ACPI: Power Resource [WRST] (off) -[ 0.182675] ACPI: Power Resource [WRST] (off) -[ 0.182887] ACPI: Power Resource [WRST] (off) -[ 0.183100] ACPI: Power Resource [WRST] (off) -[ 0.183316] ACPI: Power Resource [WRST] (off) -[ 0.183530] ACPI: Power Resource [WRST] (off) -[ 0.183742] ACPI: Power Resource [WRST] (off) -[ 0.183954] ACPI: Power Resource [WRST] (off) -[ 0.184167] ACPI: Power Resource [WRST] (off) -[ 0.184379] ACPI: Power Resource [WRST] (off) -[ 0.184591] ACPI: Power Resource [WRST] (off) -[ 0.184864] ACPI: Power Resource [WRST] (off) -[ 0.185077] ACPI: Power Resource [WRST] (off) -[ 0.185290] ACPI: Power Resource [WRST] (off) -[ 0.185504] ACPI: Power Resource [WRST] (off) -[ 0.185719] ACPI: Power Resource [WRST] (off) -[ 0.185940] ACPI: Power Resource [WRST] (off) -[ 0.186152] ACPI: Power Resource [WRST] (off) -[ 0.190920] ACPI: Power Resource [FN00] (off) -[ 0.190968] ACPI: Power Resource [FN01] (off) -[ 0.191014] ACPI: Power Resource [FN02] (off) -[ 0.191058] ACPI: Power Resource [FN03] (off) -[ 0.191103] ACPI: Power Resource [FN04] (off) -[ 0.191885] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe]) -[ 0.191889] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] -[ 0.191909] \_SB_.PCI0:_OSC invalid UUID -[ 0.191910] _OSC request data:1 1f 0 -[ 0.191912] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM -[ 0.192394] PCI host bridge to bus 0000:00 -[ 0.192396] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window] -[ 0.192397] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window] -[ 0.192398] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window] -[ 0.192399] pci_bus 0000:00: root bus resource [mem 0x91000000-0xdfffffff window] -[ 0.192400] pci_bus 0000:00: root bus resource [mem 0xfd000000-0xfe7fffff window] -[ 0.192401] pci_bus 0000:00: root bus resource [bus 00-fe] -[ 0.192407] pci 0000:00:00.0: [8086:191f] type 00 class 0x060000 -[ 0.192620] pci 0000:00:02.0: [8086:1912] type 00 class 0x030000 -[ 0.192630] pci 0000:00:02.0: reg 0x10: [mem 0xde000000-0xdeffffff 64bit] -[ 0.192634] pci 0000:00:02.0: reg 0x18: [mem 0xc0000000-0xcfffffff 64bit pref] -[ 0.192637] pci 0000:00:02.0: reg 0x20: [io 0xf000-0xf03f] -[ 0.192737] pci 0000:00:08.0: [8086:1911] type 00 class 0x088000 -[ 0.192747] pci 0000:00:08.0: reg 0x10: [mem 0xdf152000-0xdf152fff 64bit] -[ 0.192857] pci 0000:00:14.0: [8086:a12f] type 00 class 0x0c0330 -[ 0.192880] pci 0000:00:14.0: reg 0x10: [mem 0xdf130000-0xdf13ffff 64bit] -[ 0.192926] pci 0000:00:14.0: PME# supported from D3hot D3cold -[ 0.193000] pci 0000:00:14.0: System wakeup disabled by ACPI -[ 0.193027] pci 0000:00:14.2: [8086:a131] type 00 class 0x118000 -[ 0.193049] pci 0000:00:14.2: reg 0x10: [mem 0xdf151000-0xdf151fff 64bit] -[ 0.193203] pci 0000:00:15.0: [8086:a160] type 00 class 0x118000 -[ 0.193259] pci 0000:00:15.0: reg 0x10: [mem 0xdf150000-0xdf150fff 64bit] -[ 0.193471] pci 0000:00:15.1: [8086:a161] type 00 class 0x118000 -[ 0.193527] pci 0000:00:15.1: reg 0x10: [mem 0xdf14f000-0xdf14ffff 64bit] -[ 0.193726] pci 0000:00:16.0: [8086:a13a] type 00 class 0x078000 -[ 0.193775] pci 0000:00:16.0: reg 0x10: [mem 0xdf14e000-0xdf14efff 64bit] -[ 0.193862] pci 0000:00:16.0: PME# supported from D3hot -[ 0.193975] pci 0000:00:17.0: [8086:a102] type 00 class 0x010601 -[ 0.193993] pci 0000:00:17.0: reg 0x10: [mem 0xdf148000-0xdf149fff] -[ 0.193999] pci 0000:00:17.0: reg 0x14: [mem 0xdf14d000-0xdf14d0ff] -[ 0.194005] pci 0000:00:17.0: reg 0x18: [io 0xf090-0xf097] -[ 0.194011] pci 0000:00:17.0: reg 0x1c: [io 0xf080-0xf083] -[ 0.194017] pci 0000:00:17.0: reg 0x20: [io 0xf060-0xf07f] -[ 0.194023] pci 0000:00:17.0: reg 0x24: [mem 0xdf14c000-0xdf14c7ff] -[ 0.194048] pci 0000:00:17.0: PME# supported from D3hot -[ 0.194143] pci 0000:00:1b.0: [8086:a167] type 01 class 0x060400 -[ 0.194190] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold -[ 0.194271] pci 0000:00:1b.0: System wakeup disabled by ACPI -[ 0.194321] pci 0000:00:1d.0: [8086:a118] type 01 class 0x060400 -[ 0.194365] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold -[ 0.194440] pci 0000:00:1d.0: System wakeup disabled by ACPI -[ 0.194465] pci 0000:00:1d.2: [8086:a11a] type 01 class 0x060400 -[ 0.194512] pci 0000:00:1d.2: PME# supported from D0 D3hot D3cold -[ 0.194590] pci 0000:00:1d.2: System wakeup disabled by ACPI -[ 0.194668] pci 0000:00:1e.0: [8086:a127] type 00 class 0x118000 -[ 0.194722] pci 0000:00:1e.0: reg 0x10: [mem 0xdf14b000-0xdf14bfff 64bit] -[ 0.194920] pci 0000:00:1f.0: [8086:a145] type 00 class 0x060100 -[ 0.195093] pci 0000:00:1f.2: [8086:a121] type 00 class 0x058000 -[ 0.195102] pci 0000:00:1f.2: reg 0x10: [mem 0xdf144000-0xdf147fff] -[ 0.195217] pci 0000:00:1f.3: [8086:a170] type 00 class 0x040300 -[ 0.195246] pci 0000:00:1f.3: reg 0x10: [mem 0xdf140000-0xdf143fff 64bit] -[ 0.195268] pci 0000:00:1f.3: reg 0x20: [mem 0xdf120000-0xdf12ffff 64bit] -[ 0.195297] pci 0000:00:1f.3: PME# supported from D3hot D3cold -[ 0.195401] pci 0000:00:1f.3: System wakeup disabled by ACPI -[ 0.195431] pci 0000:00:1f.4: [8086:a123] type 00 class 0x0c0500 -[ 0.195484] pci 0000:00:1f.4: reg 0x10: [mem 0xdf14a000-0xdf14a0ff 64bit] -[ 0.195553] pci 0000:00:1f.4: reg 0x20: [io 0xf040-0xf05f] -[ 0.195704] pci 0000:00:1f.6: [8086:15b8] type 00 class 0x020000 -[ 0.195739] pci 0000:00:1f.6: reg 0x10: [mem 0xdf100000-0xdf11ffff] -[ 0.195826] pci 0000:00:1f.6: PME# supported from D0 D3hot D3cold -[ 0.195897] pci 0000:00:1f.6: System wakeup disabled by ACPI -[ 0.195986] pci 0000:01:00.0: [144d:a802] type 00 class 0x010802 -[ 0.196012] pci 0000:01:00.0: reg 0x10: [mem 0xdf010000-0xdf013fff 64bit] -[ 0.196018] pci 0000:01:00.0: reg 0x18: [io 0xe000-0xe0ff] -[ 0.196036] pci 0000:01:00.0: reg 0x30: [mem 0xdf000000-0xdf00ffff pref] -[ 0.196129] pci 0000:01:00.0: System wakeup disabled by ACPI -[ 0.201880] pci 0000:00:1b.0: PCI bridge to [bus 01] -[ 0.201882] pci 0000:00:1b.0: bridge window [io 0xe000-0xefff] -[ 0.201884] pci 0000:00:1b.0: bridge window [mem 0xdf000000-0xdf0fffff] -[ 0.201950] acpiphp: Slot [1] registered -[ 0.201953] pci 0000:00:1d.0: PCI bridge to [bus 02] -[ 0.202030] pci 0000:03:00.0: [1b21:1080] type 01 class 0x060400 -[ 0.202141] pci 0000:03:00.0: supports D1 D2 -[ 0.202142] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold -[ 0.202190] pci 0000:03:00.0: System wakeup disabled by ACPI -[ 0.209881] pci 0000:00:1d.2: PCI bridge to [bus 03-04] -[ 0.209985] pci 0000:03:00.0: PCI bridge to [bus 04] -[ 0.211306] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.211341] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 *10 11 12 14 15) -[ 0.211376] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.211410] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.211443] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.211477] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.211510] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.211543] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.211820] ACPI: Enabled 5 GPEs in block 00 to 7F -[ 0.211889] vgaarb: setting as boot device: PCI:0000:00:02.0 -[ 0.211890] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none -[ 0.211892] vgaarb: loaded -[ 0.211893] vgaarb: bridge control possible 0000:00:02.0 -[ 0.212017] SCSI subsystem initialized -[ 0.212035] libata version 3.00 loaded. -[ 0.212047] ACPI: bus type USB registered -[ 0.212058] usbcore: registered new interface driver usbfs -[ 0.212063] usbcore: registered new interface driver hub -[ 0.212071] usbcore: registered new device driver usb -[ 0.212178] PCI: Using ACPI for IRQ routing -[ 0.240042] PCI: pci_cache_line_size set to 64 bytes -[ 0.240144] e820: reserve RAM buffer [mem 0x00058000-0x0005ffff] -[ 0.240145] e820: reserve RAM buffer [mem 0x0009f000-0x0009ffff] -[ 0.240146] e820: reserve RAM buffer [mem 0x8277d000-0x83ffffff] -[ 0.240147] e820: reserve RAM buffer [mem 0x827fa000-0x83ffffff] -[ 0.240147] e820: reserve RAM buffer [mem 0x8a2a6000-0x8bffffff] -[ 0.240148] e820: reserve RAM buffer [mem 0x8a74a000-0x8bffffff] -[ 0.240149] e820: reserve RAM buffer [mem 0x8b400000-0x8bffffff] -[ 0.240150] e820: reserve RAM buffer [mem 0x106f000000-0x106fffffff] -[ 0.240222] NetLabel: Initializing -[ 0.240222] NetLabel: domain hash size = 128 -[ 0.240223] NetLabel: protocols = UNLABELED CIPSOv4 -[ 0.240230] NetLabel: unlabeled traffic allowed by default -[ 0.240304] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0 -[ 0.240307] hpet0: 8 comparators, 64-bit 24.000000 MHz counter -[ 0.242342] amd_nb: Cannot enumerate AMD northbridges -[ 0.242353] clocksource: Switched to clocksource hpet -[ 0.246127] AppArmor: AppArmor Filesystem Enabled -[ 0.246157] pnp: PnP ACPI init -[ 0.246337] system 00:00: [io 0x0a00-0x0a0f] has been reserved -[ 0.246386] system 00:00: [io 0x0a10-0x0a1f] has been reserved -[ 0.246388] system 00:00: [io 0x0a20-0x0a2f] has been reserved -[ 0.246389] system 00:00: [io 0x0a30-0x0a3f] has been reserved -[ 0.246391] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.246490] system 00:01: [io 0x0680-0x069f] has been reserved -[ 0.246491] system 00:01: [io 0xffff] has been reserved -[ 0.246492] system 00:01: [io 0xffff] has been reserved -[ 0.246493] system 00:01: [io 0xffff] has been reserved -[ 0.246494] system 00:01: [io 0x1800-0x18fe] could not be reserved -[ 0.246495] system 00:01: [io 0x164e-0x164f] has been reserved -[ 0.246497] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.246553] system 00:02: [io 0x0800-0x087f] has been reserved -[ 0.246554] system 00:02: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.246567] pnp 00:03: Plug and Play ACPI device, IDs PNP0b00 (active) -[ 0.246591] system 00:04: [io 0x1854-0x1857] has been reserved -[ 0.246592] system 00:04: Plug and Play ACPI device, IDs INT3f0d PNP0c02 (active) -[ 0.246728] system 00:05: [mem 0xfed10000-0xfed17fff] has been reserved -[ 0.246729] system 00:05: [mem 0xfed18000-0xfed18fff] has been reserved -[ 0.246730] system 00:05: [mem 0xfed19000-0xfed19fff] has been reserved -[ 0.246731] system 00:05: [mem 0xe0000000-0xefffffff] has been reserved -[ 0.246733] system 00:05: [mem 0xfed20000-0xfed3ffff] has been reserved -[ 0.246734] system 00:05: [mem 0xfed90000-0xfed93fff] has been reserved -[ 0.246735] system 00:05: [mem 0xfed45000-0xfed8ffff] has been reserved -[ 0.246736] system 00:05: [mem 0xff000000-0xffffffff] has been reserved -[ 0.246737] system 00:05: [mem 0xfee00000-0xfeefffff] could not be reserved -[ 0.246738] system 00:05: [mem 0xdffc0000-0xdffdffff] has been reserved -[ 0.246739] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.246765] system 00:06: [mem 0xfd000000-0xfdabffff] has been reserved -[ 0.246766] system 00:06: [mem 0xfdad0000-0xfdadffff] has been reserved -[ 0.246767] system 00:06: [mem 0xfdb00000-0xfdffffff] has been reserved -[ 0.246768] system 00:06: [mem 0xfe000000-0xfe01ffff] could not be reserved -[ 0.246769] system 00:06: [mem 0xfe036000-0xfe03bfff] has been reserved -[ 0.246770] system 00:06: [mem 0xfe03d000-0xfe3fffff] has been reserved -[ 0.246772] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.246950] system 00:07: [io 0xff00-0xfffe] has been reserved -[ 0.246952] system 00:07: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.247560] system 00:08: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.248106] pnp: PnP ACPI: found 9 devices -[ 0.256060] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns -[ 0.256088] pci 0000:00:1b.0: PCI bridge to [bus 01] -[ 0.256090] pci 0000:00:1b.0: bridge window [io 0xe000-0xefff] -[ 0.256093] pci 0000:00:1b.0: bridge window [mem 0xdf000000-0xdf0fffff] -[ 0.256097] pci 0000:00:1d.0: PCI bridge to [bus 02] -[ 0.256104] pci 0000:03:00.0: PCI bridge to [bus 04] -[ 0.256117] pci 0000:00:1d.2: PCI bridge to [bus 03-04] -[ 0.256124] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window] -[ 0.256125] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window] -[ 0.256126] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window] -[ 0.256127] pci_bus 0000:00: resource 7 [mem 0x91000000-0xdfffffff window] -[ 0.256128] pci_bus 0000:00: resource 8 [mem 0xfd000000-0xfe7fffff window] -[ 0.256129] pci_bus 0000:01: resource 0 [io 0xe000-0xefff] -[ 0.256130] pci_bus 0000:01: resource 1 [mem 0xdf000000-0xdf0fffff] -[ 0.256148] NET: Registered protocol family 2 -[ 0.256315] TCP established hash table entries: 524288 (order: 10, 4194304 bytes) -[ 0.256733] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) -[ 0.256816] TCP: Hash tables configured (established 524288 bind 65536) -[ 0.256850] UDP hash table entries: 32768 (order: 8, 1048576 bytes) -[ 0.256972] UDP-Lite hash table entries: 32768 (order: 8, 1048576 bytes) -[ 0.257081] NET: Registered protocol family 1 -[ 0.257091] pci 0000:00:02.0: Video device with shadowed ROM -[ 0.257293] PCI: CLS 0 bytes, default 64 -[ 0.257322] Trying to unpack rootfs image as initramfs... -[ 0.635884] Freeing initrd memory: 35468K (ffff880033aaa000 - ffff880035d4d000) -[ 0.635906] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) -[ 0.635908] software IO TLB [mem 0x7e3ab000-0x823ab000] (64MB) mapped at [ffff88007e3ab000-ffff8800823aafff] -[ 0.636030] Scanning for low memory corruption every 60 seconds -[ 0.636290] futex hash table entries: 1024 (order: 4, 65536 bytes) -[ 0.636309] audit: initializing netlink subsys (disabled) -[ 0.636319] audit: type=2000 audit(1477210837.640:1): initialized -[ 0.636575] Initialise system trusted keyring -[ 0.636708] HugeTLB registered 1 GB page size, pre-allocated 0 pages -[ 0.636708] HugeTLB registered 2 MB page size, pre-allocated 0 pages -[ 0.637581] zbud: loaded -[ 0.637737] VFS: Disk quotas dquot_6.6.0 -[ 0.637758] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) -[ 0.637913] squashfs: version 4.0 (2009/01/31) Phillip Lougher -[ 0.638102] fuse init (API version 7.23) -[ 0.638199] Key type big_key registered -[ 0.638219] Allocating IMA MOK and blacklist keyrings. -[ 0.639514] Key type asymmetric registered -[ 0.639517] Asymmetric key parser 'x509' registered -[ 0.639545] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249) -[ 0.639623] io scheduler noop registered -[ 0.639624] io scheduler deadline registered (default) -[ 0.639644] io scheduler cfq registered -[ 0.639978] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 -[ 0.639983] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 -[ 0.640005] efifb: probing for efifb -[ 0.640014] efifb: framebuffer at 0xc0000000, mapped to 0xffffc90006c00000, using 3072k, total 3072k -[ 0.640015] efifb: mode is 1024x768x32, linelength=4096, pages=1 -[ 0.640015] efifb: scrolling: redraw -[ 0.640016] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0 -[ 0.640102] Console: switching to colour frame buffer device 128x48 -[ 0.640110] fb0: EFI VGA frame buffer device -[ 0.640115] intel_idle: MWAIT substates: 0x142120 -[ 0.640116] intel_idle: v0.4.1 model 0x5E -[ 0.640117] intel_idle: lapic_timer_reliable_states 0xffffffff -[ 0.640299] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input0 -[ 0.640302] ACPI: Sleep Button [SLPB] -[ 0.640323] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1 -[ 0.640324] ACPI: Power Button [PWRB] -[ 0.640345] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 -[ 0.640346] ACPI: Power Button [PWRF] -[ 0.640900] thermal LNXTHERM:00: registered as thermal_zone0 -[ 0.640901] ACPI: Thermal Zone [TZ00] (28 C) -[ 0.640981] thermal LNXTHERM:01: registered as thermal_zone1 -[ 0.640981] ACPI: Thermal Zone [TZ01] (30 C) -[ 0.641007] GHES: HEST is not enabled! -[ 0.641108] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled -[ 0.661661] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A -[ 0.682254] serial8250: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A -[ 0.684886] Linux agpgart interface v0.103 -[ 0.688423] brd: module loaded -[ 0.690004] loop: module loaded -[ 0.690122] libphy: Fixed MDIO Bus: probed -[ 0.690124] tun: Universal TUN/TAP device driver, 1.6 -[ 0.690124] tun: (C) 1999-2004 Max Krasnyansky -[ 0.690173] PPP generic driver version 2.4.2 -[ 0.690236] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver -[ 0.690238] ehci-pci: EHCI PCI platform driver -[ 0.690244] ehci-platform: EHCI generic platform driver -[ 0.690250] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver -[ 0.690252] ohci-pci: OHCI PCI platform driver -[ 0.690259] ohci-platform: OHCI generic platform driver -[ 0.690263] uhci_hcd: USB Universal Host Controller Interface driver -[ 0.690419] xhci_hcd 0000:00:14.0: xHCI Host Controller -[ 0.690423] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1 -[ 0.691517] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x00109810 -[ 0.691521] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported -[ 0.691577] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 -[ 0.691578] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 -[ 0.691579] usb usb1: Product: xHCI Host Controller -[ 0.691579] usb usb1: Manufacturer: Linux 4.4.0-42-generic xhci-hcd -[ 0.691580] usb usb1: SerialNumber: 0000:00:14.0 -[ 0.691667] hub 1-0:1.0: USB hub found -[ 0.691681] hub 1-0:1.0: 16 ports detected -[ 0.699025] xhci_hcd 0000:00:14.0: xHCI Host Controller -[ 0.699027] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2 -[ 0.699045] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003 -[ 0.699046] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 -[ 0.699046] usb usb2: Product: xHCI Host Controller -[ 0.699047] usb usb2: Manufacturer: Linux 4.4.0-42-generic xhci-hcd -[ 0.699048] usb usb2: SerialNumber: 0000:00:14.0 -[ 0.699153] hub 2-0:1.0: USB hub found -[ 0.699163] hub 2-0:1.0: 10 ports detected -[ 0.703847] i8042: PNP: No PS/2 controller found. Probing ports directly. -[ 0.707209] serio: i8042 KBD port at 0x60,0x64 irq 1 -[ 0.707212] serio: i8042 AUX port at 0x60,0x64 irq 12 -[ 0.707401] mousedev: PS/2 mouse device common for all mice -[ 0.707745] rtc_cmos 00:03: RTC can wake from S4 -[ 0.708160] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 -[ 0.708240] rtc_cmos 00:03: alarms up to one month, y3k, 242 bytes nvram, hpet irqs -[ 0.708245] i2c /dev entries driver -[ 0.708275] device-mapper: uevent: version 1.0.3 -[ 0.708388] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@redhat.com -[ 0.708401] Intel P-state driver initializing. -[ 0.708403] intel_pstate: HWP enabled -[ 0.709291] ledtrig-cpu: registered to indicate activity on CPUs -[ 0.709294] EFI Variables Facility v0.08 2004-May-17 -[ 0.714723] NET: Registered protocol family 10 -[ 0.714993] NET: Registered protocol family 17 -[ 0.715015] Key type dns_resolver registered -[ 0.715231] microcode: CPU0 sig=0x506e3, pf=0x2, revision=0x33 -[ 0.715284] microcode: CPU1 sig=0x506e3, pf=0x2, revision=0x33 -[ 0.715338] microcode: CPU2 sig=0x506e3, pf=0x2, revision=0x33 -[ 0.715356] microcode: CPU3 sig=0x506e3, pf=0x2, revision=0x33 -[ 0.715447] microcode: Microcode Update Driver: v2.01 , Peter Oruba -[ 0.716063] registered taskstats version 1 -[ 0.716073] Loading compiled-in X.509 certificates -[ 0.716488] Loaded X.509 cert 'Build time autogenerated kernel key: e837129128998c98ce5a834cc756a195b6db2f40' -[ 0.716500] zswap: loaded using pool lzo/zbud -[ 0.718196] Key type trusted registered -[ 0.721807] Key type encrypted registered -[ 0.721810] AppArmor: AppArmor sha1 policy hashing enabled -[ 0.721812] ima: No TPM chip found, activating TPM-bypass! -[ 0.721824] evm: HMAC attrs: 0x1 -[ 0.722715] Magic number: 4:870:321 -[ 0.722742] tty tty46: hash matches -[ 0.722749] pci 0000:00:02.0: hash matches -[ 0.722795] memory memory175: hash matches -[ 0.723019] rtc_cmos 00:03: setting system clock to 2016-10-23 08:20:38 UTC (1477210838) -[ 0.723250] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found -[ 0.723251] EDD information not available. -[ 0.723314] PM: Hibernation image not present or could not be loaded. -[ 0.724203] Freeing unused kernel memory: 1480K (ffffffff81f42000 - ffffffff820b4000) -[ 0.724204] Write protecting the kernel read-only data: 14336k -[ 0.724824] Freeing unused kernel memory: 1820K (ffff880002839000 - ffff880002a00000) -[ 0.725165] Freeing unused kernel memory: 152K (ffff880002dda000 - ffff880002e00000) -[ 0.732081] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.732124] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.732131] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.732371] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.732396] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.732524] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.732550] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.732576] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.732600] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.732626] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.754986] FUJITSU Extended Socket Network Device Driver - version 1.0 - Copyright (c) 2015 FUJITSU LIMITED -[ 0.762026] wmi: Mapper loaded -[ 0.775311] hidraw: raw HID events driver (C) Jiri Kosina -[ 0.780566] ahci 0000:00:17.0: version 3.0 -[ 0.781076] nvme 0000:01:00.0: enabling device (0000 -> 0002) -[ 0.781484] [drm] Initialized drm 1.1.0 20060810 -[ 0.781649] pps_core: LinuxPPS API ver. 1 registered -[ 0.781650] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti -[ 0.782816] PTP clock support registered -[ 0.785406] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k -[ 0.785406] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. -[ 0.794522] ahci 0000:00:17.0: AHCI 0001.0301 32 slots 4 ports 6 Gbps 0xf impl SATA mode -[ 0.794525] ahci 0000:00:17.0: flags: 64bit ncq sntf led clo only pio slum part ems deso sadm sds apst -[ 0.818980] scsi host0: ahci -[ 0.819297] scsi host1: ahci -[ 0.819576] scsi host2: ahci -[ 0.819854] scsi host3: ahci -[ 0.819948] ata1: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c100 irq 313 -[ 0.819949] ata2: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c180 irq 313 -[ 0.819953] ata3: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c200 irq 313 -[ 0.819954] ata4: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c280 irq 313 -[ 0.820195] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode -[ 1.124436] e1000e 0000:00:1f.6 eth0: registered PHC clock -[ 1.124438] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) d8:cb:8a:c4:3a:78 -[ 1.124439] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection -[ 1.124520] e1000e 0000:00:1f.6 eth0: MAC: 12, PHY: 12, PBA No: FFFFFF-0FF -[ 1.125190] e1000e 0000:00:1f.6 enp0s31f6: renamed from eth0 -[ 1.125925] [drm] Memory usable by graphics device = 4096M -[ 1.125927] checking generic (c0000000 300000) vs hw (c0000000 10000000) -[ 1.125928] fb: switching to inteldrmfb from EFI VGA -[ 1.125943] Console: switching to colour dummy device 80x25 -[ 1.126165] [drm] Replacing VGA console driver -[ 1.131892] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). -[ 1.131893] [drm] Driver supports precise vblank timestamp query. -[ 1.138498] ata4: SATA link down (SStatus 4 SControl 300) -[ 1.138578] ata3: SATA link down (SStatus 4 SControl 300) -[ 1.138606] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300) -[ 1.139303] ata2.00: ATA-9: WDC WD10EZEX-00BN5A0, 01.01A01, max UDMA/133 -[ 1.139304] ata2.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA -[ 1.140185] ata2.00: configured for UDMA/133 -[ 1.140636] [drm] Finished loading i915/skl_dmc_ver1.bin (v1.26) -[ 1.142662] ata1: SATA link down (SStatus 4 SControl 300) -[ 1.143145] scsi 1:0:0:0: Direct-Access ATA WDC WD10EZEX-00B 1A01 PQ: 0 ANSI: 5 -[ 1.143482] sd 1:0:0:0: Attached scsi generic sg0 type 0 -[ 1.143567] sd 1:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB) -[ 1.143568] sd 1:0:0:0: [sda] 4096-byte physical blocks -[ 1.143723] sd 1:0:0:0: [sda] Write Protect is off -[ 1.143724] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00 -[ 1.143885] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA -[ 1.144682] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem -[ 1.153831] [drm] failed to retrieve link info, disabling eDP -[ 1.158554] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) -[ 1.158884] acpi device:0f: registered as cooling_device9 -[ 1.158933] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input6 -[ 1.159036] [drm] Initialized i915_bpo 1.6.0 20160425 for 0000:00:02.0 on minor 0 -[ 1.207544] sda: sda1 sda2 sda3 -[ 1.208885] sd 1:0:0:0: [sda] Attached SCSI disk -[ 1.300796] fbcon: inteldrmfb (fb0) is primary device -[ 1.300841] Console: switching to colour frame buffer device 160x64 -[ 1.300852] i915_bpo 0000:00:02.0: fb0: inteldrmfb frame buffer device -[ 1.634454] tsc: Refined TSC clocksource calibration: 3311.995 MHz -[ 1.634456] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x2fbd8f86518, max_idle_ns: 440795223266 ns -[ 2.634942] clocksource: Switched to clocksource tsc -[ 2.810846] [drm] RC6 on -[ 2.890503] random: nonblocking pool is initialized -[ 14.712329] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) -[ 15.617471] systemd[1]: systemd 229 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN) -[ 15.617545] systemd[1]: Detected architecture x86-64. -[ 15.625182] systemd[1]: Set hostname to . -[ 17.409293] systemd[1]: Reached target User and Group Name Lookups. -[ 17.409333] systemd[1]: Started Forward Password Requests to Wall Directory Watch. -[ 17.409378] systemd[1]: Created slice System Slice. -[ 17.409413] systemd[1]: Created slice system-getty.slice. -[ 17.409436] systemd[1]: Listening on Journal Socket. -[ 17.409454] systemd[1]: Listening on udev Control Socket. -[ 17.409480] systemd[1]: Created slice User and Session Slice. -[ 17.409484] systemd[1]: Reached target Slices. -[ 17.409493] systemd[1]: Listening on udev Kernel Socket. -[ 17.418854] systemd[1]: Mounting Debug File System... -[ 17.419162] systemd[1]: Started Read required files in advance. -[ 17.419581] systemd[1]: Mounting Huge Pages File System... -[ 17.419767] systemd[1]: Mounting POSIX Message Queue File System... -[ 17.419788] systemd[1]: Listening on fsck to fsckd communication Socket. -[ 17.419900] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point. -[ 17.420082] systemd[1]: Starting Braille Device Support... -[ 17.420288] systemd[1]: Starting Create list of required static device nodes for the current kernel... -[ 17.420309] systemd[1]: Listening on Syslog Socket. -[ 17.420347] systemd[1]: Created slice system-systemd\x2dfsck.slice. -[ 17.420549] systemd[1]: Starting Uncomplicated firewall... -[ 17.420559] systemd[1]: Reached target Remote File Systems (Pre). -[ 17.420567] systemd[1]: Reached target Remote File Systems. -[ 17.420599] systemd[1]: Listening on Journal Socket (/dev/log). -[ 17.516235] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe. -[ 17.646882] systemd[1]: Starting Load Kernel Modules... -[ 17.646898] systemd[1]: Reached target Encrypted Volumes. -[ 17.646946] systemd[1]: Listening on Journal Audit Socket. -[ 17.647220] systemd[1]: Starting Journal Service... -[ 17.748381] systemd[1]: Started Create list of required static device nodes for the current kernel. -[ 17.748483] systemd[1]: Started Uncomplicated firewall. -[ 17.759031] systemd[1]: Starting Create Static Device Nodes in /dev... -[ 18.215949] systemd[1]: Mounted Debug File System. -[ 18.215967] systemd[1]: Mounted Huge Pages File System. -[ 18.215974] systemd[1]: Mounted POSIX Message Queue File System. -[ 18.258925] systemd[1]: Started Journal Service. -[ 18.439772] lp: driver loaded but no devices found -[ 18.521355] ppdev: user-space parallel port driver -[ 18.671259] parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE,EPP] -[ 18.671891] parport0: irq 7 detected -[ 18.766991] lp0: using parport0 (polling). -[ 22.376281] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro -[ 22.498671] systemd-journald[238]: Received request to flush runtime journal from PID 1 -[ 22.847455] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 -[ 22.866818] intel-lpss 0000:00:15.0: enabling device (0000 -> 0002) -[ 22.948889] idma64 idma64.0: Found Intel integrated DMA 64-bit -[ 22.978819] intel-lpss 0000:00:15.1: enabling device (0000 -> 0002) -[ 22.978988] idma64 idma64.1: Found Intel integrated DMA 64-bit -[ 23.008378] Bluetooth: Core ver 2.21 -[ 23.008385] NET: Registered protocol family 31 -[ 23.008386] Bluetooth: HCI device and connection manager initialized -[ 23.008388] Bluetooth: HCI socket layer initialized -[ 23.008389] Bluetooth: L2CAP socket layer initialized -[ 23.008392] Bluetooth: SCO socket layer initialized -[ 23.010832] intel-lpss 0000:00:1e.0: enabling device (0000 -> 0002) -[ 23.011014] idma64 idma64.2: Found Intel integrated DMA 64-bit -[ 23.026840] mei_me 0000:00:16.0: enabling device (0000 -> 0002) -[ 23.073897] Bluetooth: HCI UART driver ver 2.3 -[ 23.073899] Bluetooth: HCI UART protocol H4 registered -[ 23.073899] Bluetooth: HCI UART protocol BCSP registered -[ 23.073900] Bluetooth: HCI UART protocol LL registered -[ 23.073900] Bluetooth: HCI UART protocol ATH3K registered -[ 23.073901] Bluetooth: HCI UART protocol Three-wire (H5) registered -[ 23.073919] Bluetooth: HCI UART protocol Intel registered -[ 23.073928] Bluetooth: HCI UART protocol BCM registered -[ 23.073928] Bluetooth: HCI UART protocol QCA registered -[ 23.290718] AVX2 version of gcm_enc/dec engaged. -[ 23.290720] AES CTR mode by8 optimization enabled -[ 23.414923] dw-apb-uart.2: ttyS4 at MMIO 0xdf14b000 (irq = 20, base_baud = 115200) is a 16550A -[ 23.855475] snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002) -[ 23.855589] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915_bpo]) -[ 23.932082] snd_hda_codec_realtek hdaudioC0D0: ALC1150: SKU not ready 0x00000000 -[ 23.932552] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC1150: line_outs=3 (0x14/0x15/0x16/0x0/0x0) type:line -[ 23.932554] snd_hda_codec_realtek hdaudioC0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) -[ 23.932555] snd_hda_codec_realtek hdaudioC0D0: hp_outs=1 (0x1b/0x0/0x0/0x0/0x0) -[ 23.932556] snd_hda_codec_realtek hdaudioC0D0: mono: mono_out=0x0 -[ 23.932557] snd_hda_codec_realtek hdaudioC0D0: dig-out=0x1e/0x0 -[ 23.932557] snd_hda_codec_realtek hdaudioC0D0: inputs: -[ 23.932558] snd_hda_codec_realtek hdaudioC0D0: Front Mic=0x19 -[ 23.932559] snd_hda_codec_realtek hdaudioC0D0: Rear Mic=0x18 -[ 23.932560] snd_hda_codec_realtek hdaudioC0D0: Line=0x1a -[ 23.969752] input: HDA Intel PCH Front Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input7 -[ 23.969796] input: HDA Intel PCH Rear Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input8 -[ 23.969825] input: HDA Intel PCH Line as /devices/pci0000:00/0000:00:1f.3/sound/card0/input9 -[ 23.969853] input: HDA Intel PCH Line Out Front as /devices/pci0000:00/0000:00:1f.3/sound/card0/input10 -[ 23.969882] input: HDA Intel PCH Line Out Surround as /devices/pci0000:00/0000:00:1f.3/sound/card0/input11 -[ 23.969934] input: HDA Intel PCH Line Out CLFE as /devices/pci0000:00/0000:00:1f.3/sound/card0/input12 -[ 23.969960] input: HDA Intel PCH Front Headphone as /devices/pci0000:00/0000:00:1f.3/sound/card0/input13 -[ 23.969988] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input14 -[ 23.970028] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input15 -[ 23.970055] input: HDA Intel PCH HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input16 -[ 24.218723] intel_rapl: Found RAPL domain package -[ 24.218724] intel_rapl: Found RAPL domain core -[ 24.218725] intel_rapl: Found RAPL domain uncore -[ 24.218726] intel_rapl: Found RAPL domain dram -[ 24.758534] Adding 8268796k swap on /dev/sda3. Priority:-1 extents:1 across:8268796k FS -[ 31.880642] audit: type=1400 audit(1477210869.651:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/ubuntu-core-launcher" pid=574 comm="apparmor_parser" -[ 31.881348] audit: type=1400 audit(1477210869.651:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/sbin/dhclient" pid=571 comm="apparmor_parser" -[ 31.881352] audit: type=1400 audit(1477210869.651:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=571 comm="apparmor_parser" -[ 31.881354] audit: type=1400 audit(1477210869.651:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-helper" pid=571 comm="apparmor_parser" -[ 31.881371] audit: type=1400 audit(1477210869.651:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=571 comm="apparmor_parser" -[ 31.881607] audit: type=1400 audit(1477210869.651:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/lightdm/lightdm-guest-session" pid=570 comm="apparmor_parser" -[ 31.881611] audit: type=1400 audit(1477210869.651:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/lightdm/lightdm-guest-session//chromium" pid=570 comm="apparmor_parser" -[ 31.882137] audit: type=1400 audit(1477210869.651:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/cups-browsed" pid=576 comm="apparmor_parser" -[ 31.882661] audit: type=1400 audit(1477210869.651:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/ippusbxd" pid=578 comm="apparmor_parser" -[ 31.883070] audit: type=1400 audit(1477210869.655:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/cups/backend/cups-pdf" pid=577 comm="apparmor_parser" -[ 34.361021] IPv6: ADDRCONF(NETDEV_UP): enp0s31f6: link is not ready -[ 34.567305] IPv6: ADDRCONF(NETDEV_UP): enp0s31f6: link is not ready -[ 37.101080] e1000e: enp0s31f6 NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx/Tx -[ 37.101083] e1000e 0000:00:1f.6 enp0s31f6: 10/100 speed: disabling TSO -[ 37.101130] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s31f6: link becomes ready -[ 42.295776] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 -[ 42.295778] Bluetooth: BNEP filters: protocol multicast -[ 42.295780] Bluetooth: BNEP socket layer initialized -[ 961.545502] risa_dev_ramdrive_timing: module verification failed: signature and/or required key missing - tainting kernel -[ 961.545821] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) -[ 961.549514] bdbm: ===================================================================== -[ 961.549516] bdbm: DEVICE PARAMETERS -[ 961.549517] bdbm: ===================================================================== -[ 961.549517] bdbm: # of channels = 64 -[ 961.549518] bdbm: # of chips per channel = 1 -[ 961.549519] bdbm: # of blocks per chip = 128 -[ 961.549519] bdbm: # of pages per block = 64 -[ 961.549520] bdbm: # of subpages per page = 1 -[ 961.549520] bdbm: page main size = 4096 bytes -[ 961.549521] bdbm: page oob size = 64 bytes -[ 961.549522] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) -[ 961.549522] bdbm: -[ 961.549523] bdbm: ===================================================================== -[ 961.549524] bdbm: RAM DISK INFO -[ 961.549525] bdbm: ===================================================================== -[ 961.549525] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) -[ 961.748300] bdbm: ramssd addr = ffffc90050001000 -[ 961.748302] bdbm: -[ 961.748302] bdbm: *** building ptr_ramssd_data begins for data curruption checks... -[ 961.941321] bdbm: *** building ptr_ramssd_data done -[ 961.941498] bdbm: [dm_ramdrive_probe] probe done! -[ 961.941499] bdbm: [dm_ramdrive_open] open done! -[ 962.043452] bdbm: TRIM is enabled -[ 962.043563] bdbm: ===================================================================== -[ 962.043565] bdbm: DEVICE PARAMETERS -[ 962.043565] bdbm: ===================================================================== -[ 962.043566] bdbm: # of channels = 64 -[ 962.043566] bdbm: # of chips per channel = 1 -[ 962.043567] bdbm: # of blocks per chip = 128 -[ 962.043567] bdbm: # of pages per block = 64 -[ 962.043568] bdbm: # of subpages per page = 1 -[ 962.043568] bdbm: page main size = 4096 bytes -[ 962.043569] bdbm: page oob size = 64 bytes -[ 962.043569] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) -[ 962.043570] bdbm: -[ 962.043570] bdbm: ===================================================================== -[ 962.043571] bdbm: FTL CONFIGURATION -[ 962.043571] bdbm: ===================================================================== -[ 962.043572] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) -[ 962.043572] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) -[ 962.043573] bdbm: wl policy = 1 (1: none, 2: swap) -[ 962.043573] bdbm: trim mode = 1 (1: enable, 2: disable) -[ 962.043574] bdbm: kernel sector = 512 bytes -[ 962.043574] bdbm: -[ 962.043575] bdbm: [bdbm_drv_main] bdbm_drv is registered! -[ 963.106395] bdbm: llm_make_req: 0, 1 -[ 964.164285] bdbm: llm_make_req: 50000, 96 -[ 964.526827] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard -[ 1829.207157] bdbm: ----------------------------------------------- -[ 1829.207158] bdbm: < PERFORMANCE SUMMARY > -[ 1829.207159] bdbm: [0] Execution Time (us): 867.111513 -[ 1829.207160] bdbm: -[ 1829.207161] bdbm: [1] Total I/Os -[ 1829.207161] bdbm: # of page reads: 6 -[ 1829.207162] bdbm: # of page writes: 74152 -[ 1829.207162] bdbm: # of block erase: 0 -[ 1829.207163] bdbm: -[ 1829.207163] bdbm: [2] Normal I/Os -[ 1829.207163] bdbm: # of page reads: 6 -[ 1829.207164] bdbm: # of page writes: 74152 -[ 1829.207164] bdbm: # of page rmw reads: 0 -[ 1829.207165] bdbm: # of page rmw writes: 0 -[ 1829.207165] bdbm: -[ 1829.207166] bdbm: [3] GC I/Os -[ 1829.207166] bdbm: # of GC invocation: 0 -[ 1829.207167] bdbm: # of page reads: 0 -[ 1829.207167] bdbm: # of page writes: 0 -[ 1829.207167] bdbm: # of block erase: 0 -[ 1829.207168] bdbm: -[ 1829.207168] bdbm: [4] Meta I/Os -[ 1829.207169] bdbm: # of meta page reads: 0 -[ 1829.207169] bdbm: # of meta page writes: 0 -[ 1829.207170] bdbm: -[ 1829.207170] bdbm: [5] Elapsed Time -[ 1829.207171] bdbm: page read (us): 106 (S:1 + Q:7 + D:98) -[ 1829.207171] bdbm: page write (us): 452 (S:0 + Q:1 + D:451) -[ 1829.207172] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) -[ 1829.207172] bdbm: -[ 1829.207173] bdbm: [6] Utilization (R) -[ 1829.207184] bdbm: 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -[ 1829.207185] bdbm: -[ 1829.207185] bdbm: [7] Utilization (W) -[ 1829.207196] bdbm: 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 -[ 1829.207197] bdbm: ----------------------------------------------- -[ 1829.207198] bdbm: ----------------------------------------------- -[ 1829.306834] bdbm: done -[ 1829.306836] bdbm: [dm_ramdrive_close] closed! -[ 1829.356041] bdbm: [bdbm_drv_main] bdbm_drv is closed -[ 1829.356043] bdbm: [bdbm_drv_main] bdbm_drv is removed -[ 1829.374251] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) -[ 1829.391384] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) -[ 1829.394666] robusta_drv: Unknown symbol _nvm_dev (err 0) -[ 1922.829635] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) -[ 1922.858588] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) -[ 1922.870686] robusta_drv: Unknown symbol _nvm_dev (err 0) -[ 2143.933277] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) -[ 2143.950373] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) -[ 2143.953885] bdbm: ===================================================================== -[ 2143.953886] bdbm: DEVICE PARAMETERS -[ 2143.953887] bdbm: ===================================================================== -[ 2143.953888] bdbm: # of channels = 64 -[ 2143.953888] bdbm: # of chips per channel = 1 -[ 2143.953889] bdbm: # of blocks per chip = 128 -[ 2143.953889] bdbm: # of pages per block = 64 -[ 2143.953890] bdbm: # of subpages per page = 1 -[ 2143.953890] bdbm: page main size = 4096 bytes -[ 2143.953891] bdbm: page oob size = 64 bytes -[ 2143.953892] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) -[ 2143.953892] bdbm: -[ 2143.953893] bdbm: ===================================================================== -[ 2143.953894] bdbm: RAM DISK INFO -[ 2143.953894] bdbm: ===================================================================== -[ 2143.953895] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) -[ 2144.158051] bdbm: ramssd addr = ffffc90050001000 -[ 2144.158053] bdbm: -[ 2144.158053] bdbm: *** building ptr_ramssd_data begins for data curruption checks... -[ 2144.356069] bdbm: *** building ptr_ramssd_data done -[ 2144.356200] bdbm: [dm_ramdrive_probe] probe done! -[ 2144.356201] bdbm: [dm_ramdrive_open] open done! -[ 2144.356202] bdbm: create succeeds -[ 2144.356203] bdbm-error: bdbm_bug_on [/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.c:220] -[ 2144.356232] ------------[ cut here ]------------ -[ 2144.356244] kernel BUG at /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.c:220! -[ 2144.356262] invalid opcode: 0000 [#1] SMP -[ 2144.356272] Modules linked in: robusta_drv(OE+) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal snd_hda_codec_hdmi snd_hda_codec_realtek intel_powerclamp snd_hda_codec_generic coretemp snd_hda_intel snd_hda_codec kvm_intel snd_hda_core kvm snd_hwdep snd_pcm snd_seq_midi irqbypass snd_seq_midi_event crct10dif_pclmul crc32_pclmul snd_rawmidi snd_seq snd_seq_device 8250_dw snd_timer snd i2c_designware_platform aesni_intel soundcore i2c_designware_core aes_x86_64 lrw gf128mul glue_helper ablk_helper hci_uart cryptd btbcm btqca btintel bluetooth serio_raw idma64 virt_dma acpi_als mei_me kfifo_buf mei industrialio intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_pad parport_pc ppdev lp parport autofs4 mxm_wmi i915_bpo psmouse intel_ips i2c_algo_bit drm_kms_helper -[ 2144.356442] e1000e syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core drm ahci nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] -[ 2144.356487] CPU: 0 PID: 23891 Comm: insmod Tainted: G OE 4.4.0-42-generic #62-Ubuntu -[ 2144.356502] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 -[ 2144.356517] task: ffff8800358e2c40 ti: ffff88007df8c000 task.ti: ffff88007df8c000 -[ 2144.356530] RIP: 0010:[] [] bdbm_drv_run+0x30a/0x380 [robusta_drv] -[ 2144.356551] RSP: 0018:ffff88007df8fc48 EFLAGS: 00010286 -[ 2144.356561] RAX: 000000000000006e RBX: ffffc90006b70000 RCX: 0000000000000006 -[ 2144.356574] RDX: 0000000000000000 RSI: 0000000000000246 RDI: ffff88106ec0dc70 -[ 2144.356586] RBP: ffff88007df8fc78 R08: 000000000000000a R09: 00000000000003b3 -[ 2144.356599] R10: 0000000000000002 R11: 00000000000003b3 R12: ffffffffc064f1e0 -[ 2144.356611] R13: ffffffffc06650d0 R14: ffffffffc05fe000 R15: 0000000000000000 -[ 2144.356624] FS: 00007fd90098f700(0000) GS:ffff88106ec00000(0000) knlGS:0000000000000000 -[ 2144.356638] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 -[ 2144.356649] CR2: 00007fe70ff3c000 CR3: 0000000f02881000 CR4: 00000000003406f0 -[ 2144.356661] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 -[ 2144.356674] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 -[ 2144.356686] Stack: -[ 2144.356690] ffff88007df8fc58 ffffffff81e11080 ffff8810207cbbe0 0000000000000000 -[ 2144.356706] ffffffffc05fe000 ffff881020b75000 ffff88007df8fc88 ffffffffc05fe0b3 -[ 2144.356722] ffff88007df8fd08 ffffffff81002123 ffffea003b89cf40 ffff88007df8fce0 -[ 2144.356737] Call Trace: -[ 2144.356743] [] ? 0xffffffffc05fe000 -[ 2144.356754] [] bdbm_drv_init+0xb3/0x1000 [robusta_drv] -[ 2144.356768] [] do_one_initcall+0xb3/0x200 -[ 2144.356780] [] ? kmem_cache_alloc_trace+0x183/0x1f0 -[ 2144.356794] [] do_init_module+0x5f/0x1cf -[ 2144.356805] [] load_module+0x166f/0x1c10 -[ 2144.356815] [] ? __symbol_put+0x60/0x60 -[ 2144.356827] [] ? kernel_read+0x50/0x80 -[ 2144.356837] [] SYSC_finit_module+0xb4/0xe0 -[ 2144.356848] [] SyS_finit_module+0xe/0x10 -[ 2144.356860] [] entry_SYSCALL_64_fastpath+0x16/0x71 -[ 2144.356871] Code: 66 c0 48 c7 c7 c8 2b 66 c0 e8 5a d4 b2 c0 e9 bd fd ff ff ba dc 00 00 00 48 c7 c6 60 2a 66 c0 48 c7 c7 50 2b 66 c0 e8 3d d4 b2 c0 <0f> 0b ba fb 00 00 00 48 c7 c6 60 2a 66 c0 48 c7 c7 98 2d 66 c0 -[ 2144.356947] RIP [] bdbm_drv_run+0x30a/0x380 [robusta_drv] -[ 2144.356963] RSP -[ 2144.359894] ---[ end trace 876c8904d8cc0f70 ]--- diff --git a/common/utils/.ufile.o.cmd b/common/utils/.ufile.o.cmd deleted file mode 100644 index f62fdee..0000000 --- a/common/utils/.ufile.o.cmd +++ /dev/null @@ -1,964 +0,0 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.ufile.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(ufile)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_ufile.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.c - -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.c - -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o := \ - include/linux/init.h \ - $(wildcard include/config/broken/rodata.h) \ - $(wildcard include/config/lto.h) \ - include/linux/compiler.h \ - $(wildcard include/config/sparse/rcu/pointer.h) \ - $(wildcard include/config/trace/branch/profiling.h) \ - $(wildcard include/config/profile/all/branches.h) \ - $(wildcard include/config/kasan.h) \ - $(wildcard include/config/enable/must/check.h) \ - $(wildcard include/config/enable/warn/deprecated.h) \ - $(wildcard include/config/kprobes.h) \ - include/linux/compiler-gcc.h \ - $(wildcard include/config/arch/supports/optimized/inlining.h) \ - $(wildcard include/config/optimize/inlining.h) \ - $(wildcard include/config/gcov/kernel.h) \ - $(wildcard include/config/arch/use/builtin/bswap.h) \ - include/uapi/linux/types.h \ - arch/x86/include/uapi/asm/types.h \ - include/uapi/asm-generic/types.h \ - include/asm-generic/int-ll64.h \ - include/uapi/asm-generic/int-ll64.h \ - arch/x86/include/uapi/asm/bitsperlong.h \ - include/asm-generic/bitsperlong.h \ - $(wildcard include/config/64bit.h) \ - include/uapi/asm-generic/bitsperlong.h \ - include/uapi/linux/posix_types.h \ - include/linux/stddef.h \ - include/uapi/linux/stddef.h \ - arch/x86/include/asm/posix_types.h \ - $(wildcard include/config/x86/32.h) \ - arch/x86/include/uapi/asm/posix_types_64.h \ - include/uapi/asm-generic/posix_types.h \ - include/linux/types.h \ - $(wildcard include/config/have/uid16.h) \ - $(wildcard include/config/uid16.h) \ - $(wildcard include/config/lbdaf.h) \ - $(wildcard include/config/arch/dma/addr/t/64bit.h) \ - $(wildcard include/config/phys/addr/t/64bit.h) \ - include/linux/module.h \ - $(wildcard include/config/modules.h) \ - $(wildcard include/config/sysfs.h) \ - $(wildcard include/config/module/sig.h) \ - $(wildcard include/config/modules/tree/lookup.h) \ - $(wildcard include/config/unused/symbols.h) \ - $(wildcard include/config/generic/bug.h) \ - $(wildcard include/config/kallsyms.h) \ - $(wildcard include/config/smp.h) \ - $(wildcard include/config/tracepoints.h) \ - $(wildcard include/config/tracing.h) \ - $(wildcard include/config/event/tracing.h) \ - $(wildcard include/config/ftrace/mcount/record.h) \ - $(wildcard include/config/livepatch.h) \ - $(wildcard include/config/module/unload.h) \ - $(wildcard include/config/constructors.h) \ - $(wildcard include/config/debug/set/module/ronx.h) \ - include/linux/list.h \ - $(wildcard include/config/debug/list.h) \ - include/linux/poison.h \ - $(wildcard include/config/illegal/pointer/value.h) \ - include/uapi/linux/const.h \ - include/linux/kernel.h \ - $(wildcard include/config/preempt/voluntary.h) \ - $(wildcard include/config/debug/atomic/sleep.h) \ - $(wildcard include/config/mmu.h) \ - $(wildcard include/config/prove/locking.h) \ - $(wildcard include/config/panic/timeout.h) \ - /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ - include/linux/linkage.h \ - include/linux/stringify.h \ - include/linux/export.h \ - $(wildcard include/config/have/underscore/symbol/prefix.h) \ - $(wildcard include/config/modversions.h) \ - arch/x86/include/asm/linkage.h \ - $(wildcard include/config/x86/64.h) \ - $(wildcard include/config/x86/alignment/16.h) \ - include/linux/bitops.h \ - arch/x86/include/asm/bitops.h \ - $(wildcard include/config/x86/cmov.h) \ - arch/x86/include/asm/alternative.h \ - $(wildcard include/config/paravirt.h) \ - arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ - arch/x86/include/asm/rmwcc.h \ - arch/x86/include/asm/barrier.h \ - $(wildcard include/config/x86/ppro/fence.h) \ - arch/x86/include/asm/nops.h \ - $(wildcard include/config/mk7.h) \ - $(wildcard include/config/x86/p6/nop.h) \ - include/asm-generic/barrier.h \ - include/asm-generic/bitops/find.h \ - $(wildcard include/config/generic/find/first/bit.h) \ - include/asm-generic/bitops/sched.h \ - arch/x86/include/asm/arch_hweight.h \ - arch/x86/include/asm/cpufeatures.h \ - arch/x86/include/asm/required-features.h \ - $(wildcard include/config/x86/minimum/cpu/family.h) \ - $(wildcard include/config/math/emulation.h) \ - $(wildcard include/config/x86/cmpxchg64.h) \ - $(wildcard include/config/x86/use/3dnow.h) \ - $(wildcard include/config/matom.h) \ - arch/x86/include/asm/disabled-features.h \ - $(wildcard include/config/x86/intel/mpx.h) \ - include/asm-generic/bitops/const_hweight.h \ - include/asm-generic/bitops/le.h \ - arch/x86/include/uapi/asm/byteorder.h \ - include/linux/byteorder/little_endian.h \ - include/uapi/linux/byteorder/little_endian.h \ - include/linux/swab.h \ - include/uapi/linux/swab.h \ - arch/x86/include/uapi/asm/swab.h \ - include/linux/byteorder/generic.h \ - include/asm-generic/bitops/ext2-atomic-setbit.h \ - include/linux/log2.h \ - $(wildcard include/config/arch/has/ilog2/u32.h) \ - $(wildcard include/config/arch/has/ilog2/u64.h) \ - include/linux/typecheck.h \ - include/linux/printk.h \ - $(wildcard include/config/message/loglevel/default.h) \ - $(wildcard include/config/early/printk.h) \ - $(wildcard include/config/printk.h) \ - $(wildcard include/config/dynamic/debug.h) \ - include/linux/kern_levels.h \ - include/linux/cache.h \ - $(wildcard include/config/arch/has/cache/line/size.h) \ - include/uapi/linux/kernel.h \ - include/uapi/linux/sysinfo.h \ - include/linux/dynamic_debug.h \ - include/linux/stat.h \ - arch/x86/include/uapi/asm/stat.h \ - include/uapi/linux/stat.h \ - include/linux/time.h \ - $(wildcard include/config/arch/uses/gettimeoffset.h) \ - include/linux/seqlock.h \ - $(wildcard include/config/debug/lock/alloc.h) \ - include/linux/spinlock.h \ - $(wildcard include/config/debug/spinlock.h) \ - $(wildcard include/config/generic/lockbreak.h) \ - $(wildcard include/config/preempt.h) \ - include/linux/preempt.h \ - $(wildcard include/config/preempt/count.h) \ - $(wildcard include/config/debug/preempt.h) \ - $(wildcard include/config/preempt/tracer.h) \ - $(wildcard include/config/preempt/notifiers.h) \ - arch/x86/include/asm/preempt.h \ - arch/x86/include/asm/percpu.h \ - $(wildcard include/config/x86/64/smp.h) \ - include/asm-generic/percpu.h \ - $(wildcard include/config/have/setup/per/cpu/area.h) \ - include/linux/threads.h \ - $(wildcard include/config/base/small.h) \ - include/linux/percpu-defs.h \ - $(wildcard include/config/debug/force/weak/per/cpu.h) \ - include/linux/thread_info.h \ - $(wildcard include/config/compat.h) \ - $(wildcard include/config/debug/stack/usage.h) \ - include/linux/bug.h \ - arch/x86/include/asm/bug.h \ - $(wildcard include/config/debug/bugverbose.h) \ - include/asm-generic/bug.h \ - $(wildcard include/config/bug.h) \ - $(wildcard include/config/generic/bug/relative/pointers.h) \ - arch/x86/include/asm/thread_info.h \ - $(wildcard include/config/ia32/emulation.h) \ - arch/x86/include/asm/page.h \ - arch/x86/include/asm/page_64.h \ - $(wildcard include/config/debug/virtual.h) \ - $(wildcard include/config/flatmem.h) \ - $(wildcard include/config/x86/vsyscall/emulation.h) \ - include/linux/range.h \ - include/asm-generic/memory_model.h \ - $(wildcard include/config/discontigmem.h) \ - $(wildcard include/config/sparsemem/vmemmap.h) \ - include/asm-generic/getorder.h \ - arch/x86/include/asm/cpufeature.h \ - $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ - arch/x86/include/asm/processor.h \ - $(wildcard include/config/m486.h) \ - $(wildcard include/config/xen.h) \ - arch/x86/include/asm/math_emu.h \ - arch/x86/include/uapi/asm/sigcontext.h \ - arch/x86/include/asm/current.h \ - arch/x86/include/asm/msr.h \ - arch/x86/include/asm/msr-index.h \ - $(wildcard include/config/tdp/nominal.h) \ - $(wildcard include/config/tdp/level/1.h) \ - $(wildcard include/config/tdp/level/2.h) \ - $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ - arch/x86/include/uapi/asm/errno.h \ - include/uapi/asm-generic/errno.h \ - include/uapi/asm-generic/errno-base.h \ - arch/x86/include/asm/cpumask.h \ - include/linux/cpumask.h \ - $(wildcard include/config/cpumask/offstack.h) \ - $(wildcard include/config/hotplug/cpu.h) \ - $(wildcard include/config/debug/per/cpu/maps.h) \ - include/linux/bitmap.h \ - include/linux/string.h \ - $(wildcard include/config/binary/printf.h) \ - include/uapi/linux/string.h \ - arch/x86/include/asm/string.h \ - arch/x86/include/asm/string_64.h \ - arch/x86/include/uapi/asm/msr.h \ - include/uapi/linux/ioctl.h \ - arch/x86/include/uapi/asm/ioctl.h \ - include/asm-generic/ioctl.h \ - include/uapi/asm-generic/ioctl.h \ - arch/x86/include/asm/paravirt.h \ - arch/x86/include/asm/special_insns.h \ - arch/x86/include/asm/fpu/types.h \ - include/linux/personality.h \ - include/uapi/linux/personality.h \ - include/linux/math64.h \ - $(wildcard include/config/arch/supports/int128.h) \ - arch/x86/include/asm/div64.h \ - include/asm-generic/div64.h \ - include/linux/err.h \ - include/linux/irqflags.h \ - $(wildcard include/config/trace/irqflags.h) \ - $(wildcard include/config/irqsoff/tracer.h) \ - $(wildcard include/config/trace/irqflags/support.h) \ - arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ - include/linux/bottom_half.h \ - include/linux/spinlock_types.h \ - include/linux/lockdep.h \ - $(wildcard include/config/lockdep.h) \ - $(wildcard include/config/lock/stat.h) \ - include/linux/rwlock_types.h \ - arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ - arch/x86/include/asm/qspinlock.h \ - include/asm-generic/qspinlock.h \ - arch/x86/include/asm/qrwlock.h \ - include/asm-generic/qrwlock.h \ - include/linux/rwlock.h \ - include/linux/spinlock_api_smp.h \ - $(wildcard include/config/inline/spin/lock.h) \ - $(wildcard include/config/inline/spin/lock/bh.h) \ - $(wildcard include/config/inline/spin/lock/irq.h) \ - $(wildcard include/config/inline/spin/lock/irqsave.h) \ - $(wildcard include/config/inline/spin/trylock.h) \ - $(wildcard include/config/inline/spin/trylock/bh.h) \ - $(wildcard include/config/uninline/spin/unlock.h) \ - $(wildcard include/config/inline/spin/unlock/bh.h) \ - $(wildcard include/config/inline/spin/unlock/irq.h) \ - $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ - include/linux/rwlock_api_smp.h \ - $(wildcard include/config/inline/read/lock.h) \ - $(wildcard include/config/inline/write/lock.h) \ - $(wildcard include/config/inline/read/lock/bh.h) \ - $(wildcard include/config/inline/write/lock/bh.h) \ - $(wildcard include/config/inline/read/lock/irq.h) \ - $(wildcard include/config/inline/write/lock/irq.h) \ - $(wildcard include/config/inline/read/lock/irqsave.h) \ - $(wildcard include/config/inline/write/lock/irqsave.h) \ - $(wildcard include/config/inline/read/trylock.h) \ - $(wildcard include/config/inline/write/trylock.h) \ - $(wildcard include/config/inline/read/unlock.h) \ - $(wildcard include/config/inline/write/unlock.h) \ - $(wildcard include/config/inline/read/unlock/bh.h) \ - $(wildcard include/config/inline/write/unlock/bh.h) \ - $(wildcard include/config/inline/read/unlock/irq.h) \ - $(wildcard include/config/inline/write/unlock/irq.h) \ - $(wildcard include/config/inline/read/unlock/irqrestore.h) \ - $(wildcard include/config/inline/write/unlock/irqrestore.h) \ - include/linux/time64.h \ - include/uapi/linux/time.h \ - include/linux/uidgid.h \ - $(wildcard include/config/multiuser.h) \ - $(wildcard include/config/user/ns.h) \ - include/linux/highuid.h \ - include/linux/kmod.h \ - include/linux/gfp.h \ - $(wildcard include/config/highmem.h) \ - $(wildcard include/config/zone/dma.h) \ - $(wildcard include/config/zone/dma32.h) \ - $(wildcard include/config/zone/device.h) \ - $(wildcard include/config/numa.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ - $(wildcard include/config/pm/sleep.h) \ - $(wildcard include/config/cma.h) \ - include/linux/mmdebug.h \ - $(wildcard include/config/debug/vm.h) \ - include/linux/mmzone.h \ - $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ - $(wildcard include/config/memcg.h) \ - $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ - $(wildcard include/config/flat/node/mem/map.h) \ - $(wildcard include/config/page/extension.h) \ - $(wildcard include/config/no/bootmem.h) \ - $(wildcard include/config/numa/balancing.h) \ - $(wildcard include/config/have/memory/present.h) \ - $(wildcard include/config/have/memoryless/nodes.h) \ - $(wildcard include/config/need/node/memmap/size.h) \ - $(wildcard include/config/have/memblock/node/map.h) \ - $(wildcard include/config/need/multiple/nodes.h) \ - $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ - $(wildcard include/config/sparsemem/extreme.h) \ - $(wildcard include/config/have/arch/pfn/valid.h) \ - $(wildcard include/config/holes/in/zone.h) \ - $(wildcard include/config/arch/has/holes/memorymodel.h) \ - include/linux/wait.h \ - include/uapi/linux/wait.h \ - include/linux/numa.h \ - $(wildcard include/config/nodes/shift.h) \ - include/linux/nodemask.h \ - $(wildcard include/config/movable/node.h) \ - include/linux/pageblock-flags.h \ - $(wildcard include/config/hugetlb/page.h) \ - $(wildcard include/config/hugetlb/page/size/variable.h) \ - include/linux/page-flags-layout.h \ - include/generated/bounds.h \ - include/linux/memory_hotplug.h \ - $(wildcard include/config/memory/hotremove.h) \ - $(wildcard include/config/have/arch/nodedata/extension.h) \ - $(wildcard include/config/have/bootmem/info/node.h) \ - include/linux/notifier.h \ - include/linux/errno.h \ - include/uapi/linux/errno.h \ - include/linux/mutex.h \ - $(wildcard include/config/debug/mutexes.h) \ - $(wildcard include/config/mutex/spin/on/owner.h) \ - include/linux/osq_lock.h \ - include/linux/rwsem.h \ - $(wildcard include/config/rwsem/spin/on/owner.h) \ - $(wildcard include/config/rwsem/generic/spinlock.h) \ - arch/x86/include/asm/rwsem.h \ - include/linux/srcu.h \ - include/linux/rcupdate.h \ - $(wildcard include/config/tiny/rcu.h) \ - $(wildcard include/config/tree/rcu.h) \ - $(wildcard include/config/preempt/rcu.h) \ - $(wildcard include/config/rcu/trace.h) \ - $(wildcard include/config/rcu/stall/common.h) \ - $(wildcard include/config/no/hz/full.h) \ - $(wildcard include/config/rcu/nocb/cpu.h) \ - $(wildcard include/config/tasks/rcu.h) \ - $(wildcard include/config/debug/objects/rcu/head.h) \ - $(wildcard include/config/prove/rcu.h) \ - $(wildcard include/config/rcu/boost.h) \ - $(wildcard include/config/rcu/nocb/cpu/all.h) \ - $(wildcard include/config/no/hz/full/sysidle.h) \ - include/linux/completion.h \ - include/linux/debugobjects.h \ - $(wildcard include/config/debug/objects.h) \ - $(wildcard include/config/debug/objects/free.h) \ - include/linux/ktime.h \ - include/linux/jiffies.h \ - include/linux/timex.h \ - include/uapi/linux/timex.h \ - include/uapi/linux/param.h \ - arch/x86/include/uapi/asm/param.h \ - include/asm-generic/param.h \ - $(wildcard include/config/hz.h) \ - include/uapi/asm-generic/param.h \ - arch/x86/include/asm/timex.h \ - arch/x86/include/asm/tsc.h \ - $(wildcard include/config/x86/tsc.h) \ - include/generated/timeconst.h \ - include/linux/timekeeping.h \ - include/linux/rcutree.h \ - include/linux/workqueue.h \ - $(wildcard include/config/debug/objects/work.h) \ - $(wildcard include/config/freezer.h) \ - include/linux/timer.h \ - $(wildcard include/config/timer/stats.h) \ - $(wildcard include/config/debug/objects/timers.h) \ - $(wildcard include/config/no/hz/common.h) \ - include/linux/sysctl.h \ - $(wildcard include/config/sysctl.h) \ - include/linux/rbtree.h \ - include/uapi/linux/sysctl.h \ - arch/x86/include/asm/mmzone.h \ - arch/x86/include/asm/mmzone_64.h \ - arch/x86/include/asm/smp.h \ - $(wildcard include/config/x86/io/apic.h) \ - $(wildcard include/config/x86/32/smp.h) \ - $(wildcard include/config/debug/nmi/selftest.h) \ - arch/x86/include/asm/mpspec.h \ - $(wildcard include/config/eisa.h) \ - $(wildcard include/config/x86/mpparse.h) \ - arch/x86/include/asm/mpspec_def.h \ - arch/x86/include/asm/x86_init.h \ - arch/x86/include/uapi/asm/bootparam.h \ - include/linux/screen_info.h \ - include/uapi/linux/screen_info.h \ - include/linux/apm_bios.h \ - include/uapi/linux/apm_bios.h \ - include/linux/edd.h \ - include/uapi/linux/edd.h \ - arch/x86/include/asm/e820.h \ - $(wildcard include/config/efi.h) \ - $(wildcard include/config/hibernation.h) \ - arch/x86/include/uapi/asm/e820.h \ - $(wildcard include/config/x86/pmem/legacy.h) \ - $(wildcard include/config/intel/txt.h) \ - include/linux/ioport.h \ - arch/x86/include/asm/ist.h \ - arch/x86/include/uapi/asm/ist.h \ - include/video/edid.h \ - $(wildcard include/config/x86.h) \ - include/uapi/video/edid.h \ - arch/x86/include/asm/apicdef.h \ - arch/x86/include/asm/apic.h \ - $(wildcard include/config/x86/x2apic.h) \ - include/linux/pm.h \ - $(wildcard include/config/vt/console/sleep.h) \ - $(wildcard include/config/pm.h) \ - $(wildcard include/config/pm/clk.h) \ - $(wildcard include/config/pm/generic/domains.h) \ - arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ - $(wildcard include/config/provide/ohci1394/dma/init.h) \ - $(wildcard include/config/pci/mmconfig.h) \ - $(wildcard include/config/x86/intel/mid.h) \ - arch/x86/include/asm/acpi.h \ - $(wildcard include/config/acpi/apei.h) \ - $(wildcard include/config/acpi.h) \ - $(wildcard include/config/acpi/numa.h) \ - include/acpi/pdc_intel.h \ - arch/x86/include/asm/numa.h \ - $(wildcard include/config/numa/emu.h) \ - arch/x86/include/asm/topology.h \ - include/asm-generic/topology.h \ - arch/x86/include/asm/mmu.h \ - $(wildcard include/config/modify/ldt/syscall.h) \ - arch/x86/include/asm/realmode.h \ - $(wildcard include/config/acpi/sleep.h) \ - arch/x86/include/asm/io.h \ - $(wildcard include/config/mtrr.h) \ - arch/x86/include/generated/asm/early_ioremap.h \ - include/asm-generic/early_ioremap.h \ - $(wildcard include/config/generic/early/ioremap.h) \ - include/asm-generic/iomap.h \ - $(wildcard include/config/has/ioport/map.h) \ - $(wildcard include/config/pci.h) \ - $(wildcard include/config/generic/iomap.h) \ - include/asm-generic/pci_iomap.h \ - $(wildcard include/config/no/generic/pci/ioport/map.h) \ - $(wildcard include/config/generic/pci/iomap.h) \ - include/xen/xen.h \ - $(wildcard include/config/xen/dom0.h) \ - $(wildcard include/config/xen/pvh.h) \ - include/xen/interface/xen.h \ - arch/x86/include/asm/xen/interface.h \ - arch/x86/include/asm/xen/interface_64.h \ - arch/x86/include/asm/pvclock-abi.h \ - arch/x86/include/asm/xen/hypervisor.h \ - include/xen/features.h \ - include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ - arch/x86/include/uapi/asm/vsyscall.h \ - include/asm-generic/fixmap.h \ - arch/x86/include/asm/idle.h \ - arch/x86/include/asm/io_apic.h \ - arch/x86/include/asm/irq_vectors.h \ - $(wildcard include/config/have/kvm.h) \ - $(wildcard include/config/pci/msi.h) \ - include/linux/topology.h \ - $(wildcard include/config/use/percpu/numa/node/id.h) \ - $(wildcard include/config/sched/smt.h) \ - include/linux/smp.h \ - $(wildcard include/config/up/late/init.h) \ - include/linux/llist.h \ - $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ - include/linux/percpu.h \ - $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ - $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ - include/linux/elf.h \ - arch/x86/include/asm/elf.h \ - $(wildcard include/config/x86/x32/abi.h) \ - arch/x86/include/asm/user.h \ - arch/x86/include/asm/user_64.h \ - arch/x86/include/uapi/asm/auxvec.h \ - arch/x86/include/asm/vdso.h \ - $(wildcard include/config/x86/x32.h) \ - include/linux/mm_types.h \ - $(wildcard include/config/split/ptlock/cpus.h) \ - $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ - $(wildcard include/config/have/cmpxchg/double.h) \ - $(wildcard include/config/have/aligned/struct/page.h) \ - $(wildcard include/config/transparent/hugepage.h) \ - $(wildcard include/config/userfaultfd.h) \ - $(wildcard include/config/aio.h) \ - $(wildcard include/config/mmu/notifier.h) \ - include/linux/auxvec.h \ - include/uapi/linux/auxvec.h \ - include/linux/uprobes.h \ - $(wildcard include/config/uprobes.h) \ - arch/x86/include/asm/uprobes.h \ - include/uapi/linux/elf.h \ - include/uapi/linux/elf-em.h \ - include/linux/kobject.h \ - $(wildcard include/config/uevent/helper.h) \ - $(wildcard include/config/debug/kobject/release.h) \ - include/linux/sysfs.h \ - include/linux/kernfs.h \ - $(wildcard include/config/kernfs.h) \ - include/linux/idr.h \ - include/linux/kobject_ns.h \ - include/linux/kref.h \ - include/linux/moduleparam.h \ - $(wildcard include/config/alpha.h) \ - $(wildcard include/config/ia64.h) \ - $(wildcard include/config/ppc64.h) \ - include/linux/rbtree_latch.h \ - arch/x86/include/asm/module.h \ - $(wildcard include/config/m586.h) \ - $(wildcard include/config/m586tsc.h) \ - $(wildcard include/config/m586mmx.h) \ - $(wildcard include/config/mcore2.h) \ - $(wildcard include/config/m686.h) \ - $(wildcard include/config/mpentiumii.h) \ - $(wildcard include/config/mpentiumiii.h) \ - $(wildcard include/config/mpentiumm.h) \ - $(wildcard include/config/mpentium4.h) \ - $(wildcard include/config/mk6.h) \ - $(wildcard include/config/mk8.h) \ - $(wildcard include/config/melan.h) \ - $(wildcard include/config/mcrusoe.h) \ - $(wildcard include/config/mefficeon.h) \ - $(wildcard include/config/mwinchipc6.h) \ - $(wildcard include/config/mwinchip3d.h) \ - $(wildcard include/config/mcyrixiii.h) \ - $(wildcard include/config/mviac3/2.h) \ - $(wildcard include/config/mviac7.h) \ - $(wildcard include/config/mgeodegx1.h) \ - $(wildcard include/config/mgeode/lx.h) \ - include/asm-generic/module.h \ - $(wildcard include/config/have/mod/arch/specific.h) \ - $(wildcard include/config/modules/use/elf/rel.h) \ - $(wildcard include/config/modules/use/elf/rela.h) \ - include/linux/syscalls.h \ - $(wildcard include/config/ftrace/syscalls.h) \ - $(wildcard include/config/old/sigsuspend.h) \ - $(wildcard include/config/old/sigsuspend3.h) \ - $(wildcard include/config/old/sigaction.h) \ - $(wildcard include/config/odd/rt/sigaction.h) \ - $(wildcard include/config/clone/backwards.h) \ - $(wildcard include/config/clone/backwards3.h) \ - include/uapi/linux/aio_abi.h \ - include/linux/capability.h \ - include/uapi/linux/capability.h \ - include/linux/signal.h \ - include/uapi/linux/signal.h \ - arch/x86/include/asm/signal.h \ - arch/x86/include/uapi/asm/signal.h \ - include/uapi/asm-generic/signal-defs.h \ - arch/x86/include/uapi/asm/siginfo.h \ - include/asm-generic/siginfo.h \ - include/uapi/asm-generic/siginfo.h \ - include/linux/sem.h \ - $(wildcard include/config/sysvipc.h) \ - include/uapi/linux/sem.h \ - include/linux/ipc.h \ - include/uapi/linux/ipc.h \ - arch/x86/include/uapi/asm/ipcbuf.h \ - include/uapi/asm-generic/ipcbuf.h \ - arch/x86/include/uapi/asm/sembuf.h \ - include/uapi/linux/unistd.h \ - arch/x86/include/asm/unistd.h \ - arch/x86/include/uapi/asm/unistd.h \ - arch/x86/include/generated/uapi/asm/unistd_64.h \ - arch/x86/include/generated/asm/unistd_64_x32.h \ - include/linux/quota.h \ - $(wildcard include/config/quota/netlink/interface.h) \ - include/linux/percpu_counter.h \ - include/uapi/linux/dqblk_xfs.h \ - include/linux/dqblk_v1.h \ - include/linux/dqblk_v2.h \ - include/linux/dqblk_qtree.h \ - include/linux/projid.h \ - include/uapi/linux/quota.h \ - include/linux/key.h \ - $(wildcard include/config/keys.h) \ - include/linux/assoc_array.h \ - $(wildcard include/config/associative/array.h) \ - include/trace/syscall.h \ - $(wildcard include/config/have/syscall/tracepoints.h) \ - include/linux/tracepoint.h \ - $(wildcard include/config/tracepoint.h) \ - include/linux/static_key.h \ - include/linux/trace_events.h \ - $(wildcard include/config/perf/events.h) \ - $(wildcard include/config/bpf/events.h) \ - include/linux/ring_buffer.h \ - $(wildcard include/config/ring/buffer/allow/swap.h) \ - include/linux/kmemcheck.h \ - include/linux/mm.h \ - $(wildcard include/config/ppc.h) \ - $(wildcard include/config/parisc.h) \ - $(wildcard include/config/metag.h) \ - $(wildcard include/config/stack/growsup.h) \ - $(wildcard include/config/shmem.h) \ - $(wildcard include/config/debug/vm/rb.h) \ - $(wildcard include/config/debug/pagealloc.h) \ - $(wildcard include/config/hugetlbfs.h) \ - include/linux/debug_locks.h \ - $(wildcard include/config/debug/locking/api/selftests.h) \ - include/linux/bit_spinlock.h \ - include/linux/shrinker.h \ - include/linux/resource.h \ - include/uapi/linux/resource.h \ - arch/x86/include/uapi/asm/resource.h \ - include/asm-generic/resource.h \ - include/uapi/asm-generic/resource.h \ - include/linux/page_ext.h \ - $(wildcard include/config/idle/page/tracking.h) \ - $(wildcard include/config/page/owner.h) \ - include/linux/stacktrace.h \ - $(wildcard include/config/stacktrace.h) \ - $(wildcard include/config/user/stacktrace/support.h) \ - arch/x86/include/asm/pgtable.h \ - $(wildcard include/config/debug/wx.h) \ - $(wildcard include/config/have/arch/soft/dirty.h) \ - arch/x86/include/asm/pgtable_64.h \ - include/asm-generic/pgtable.h \ - $(wildcard include/config/have/arch/huge/vmap.h) \ - include/linux/page-flags.h \ - $(wildcard include/config/arch/uses/pg/uncached.h) \ - $(wildcard include/config/memory/failure.h) \ - $(wildcard include/config/swap.h) \ - $(wildcard include/config/ksm.h) \ - include/linux/huge_mm.h \ - include/linux/vmstat.h \ - $(wildcard include/config/vm/event/counters.h) \ - $(wildcard include/config/debug/tlbflush.h) \ - $(wildcard include/config/debug/vm/vmacache.h) \ - include/linux/vm_event_item.h \ - $(wildcard include/config/migration.h) \ - $(wildcard include/config/memory/balloon.h) \ - $(wildcard include/config/balloon/compaction.h) \ - include/linux/seq_file.h \ - include/linux/poll.h \ - include/linux/fs.h \ - $(wildcard include/config/fs/posix/acl.h) \ - $(wildcard include/config/security.h) \ - $(wildcard include/config/cgroup/writeback.h) \ - $(wildcard include/config/ima.h) \ - $(wildcard include/config/fsnotify.h) \ - $(wildcard include/config/epoll.h) \ - $(wildcard include/config/file/locking.h) \ - $(wildcard include/config/quota.h) \ - $(wildcard include/config/blk/dev/loop.h) \ - $(wildcard include/config/fs/dax.h) \ - $(wildcard include/config/block.h) \ - include/linux/kdev_t.h \ - include/uapi/linux/kdev_t.h \ - include/linux/dcache.h \ - include/linux/rculist.h \ - include/linux/rculist_bl.h \ - include/linux/list_bl.h \ - include/linux/lockref.h \ - $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ - include/linux/path.h \ - include/linux/list_lru.h \ - $(wildcard include/config/memcg/kmem.h) \ - include/linux/radix-tree.h \ - include/linux/pid.h \ - include/linux/semaphore.h \ - include/uapi/linux/fiemap.h \ - include/linux/migrate_mode.h \ - include/linux/percpu-rwsem.h \ - include/linux/rcu_sync.h \ - include/linux/blk_types.h \ - $(wildcard include/config/blk/cgroup.h) \ - $(wildcard include/config/blk/dev/integrity.h) \ - include/uapi/linux/fs.h \ - include/uapi/linux/limits.h \ - include/linux/nfs_fs_i.h \ - include/linux/fcntl.h \ - include/uapi/linux/fcntl.h \ - arch/x86/include/uapi/asm/fcntl.h \ - include/uapi/asm-generic/fcntl.h \ - arch/x86/include/asm/uaccess.h \ - $(wildcard include/config/x86/intel/usercopy.h) \ - $(wildcard include/config/debug/strict/user/copy/checks.h) \ - arch/x86/include/asm/smap.h \ - $(wildcard include/config/x86/smap.h) \ - arch/x86/include/asm/uaccess_64.h \ - include/uapi/linux/poll.h \ - arch/x86/include/uapi/asm/poll.h \ - include/uapi/asm-generic/poll.h \ - include/linux/trace_seq.h \ - include/linux/seq_buf.h \ - include/linux/hardirq.h \ - include/linux/ftrace_irq.h \ - $(wildcard include/config/ftrace/nmi/enter.h) \ - include/linux/vtime.h \ - $(wildcard include/config/virt/cpu/accounting/native.h) \ - $(wildcard include/config/virt/cpu/accounting/gen.h) \ - $(wildcard include/config/virt/cpu/accounting.h) \ - $(wildcard include/config/irq/time/accounting.h) \ - include/linux/context_tracking_state.h \ - $(wildcard include/config/context/tracking.h) \ - arch/x86/include/asm/hardirq.h \ - $(wildcard include/config/x86/thermal/vector.h) \ - $(wildcard include/config/x86/mce/threshold.h) \ - $(wildcard include/config/x86/mce/amd.h) \ - $(wildcard include/config/hyperv.h) \ - include/linux/irq.h \ - $(wildcard include/config/irq/domain/hierarchy.h) \ - $(wildcard include/config/generic/pending/irq.h) \ - $(wildcard include/config/hardirqs/sw/resend.h) \ - $(wildcard include/config/generic/irq/legacy/alloc/hwirq.h) \ - $(wildcard include/config/generic/irq/legacy.h) \ - include/linux/irqhandler.h \ - include/linux/irqreturn.h \ - include/linux/irqnr.h \ - include/uapi/linux/irqnr.h \ - include/linux/io.h \ - arch/x86/include/asm/irq.h \ - arch/x86/include/asm/irq_regs.h \ - include/linux/irqdesc.h \ - $(wildcard include/config/irq/preflow/fasteoi.h) \ - $(wildcard include/config/sparse/irq.h) \ - $(wildcard include/config/handle/domain/irq.h) \ - arch/x86/include/asm/hw_irq.h \ - $(wildcard include/config/hpet/timer.h) \ - $(wildcard include/config/dmar/table.h) \ - $(wildcard include/config/ht/irq.h) \ - $(wildcard include/config/x86/uv.h) \ - include/linux/profile.h \ - $(wildcard include/config/profiling.h) \ - arch/x86/include/asm/sections.h \ - $(wildcard include/config/debug/rodata.h) \ - include/asm-generic/sections.h \ - include/linux/perf_event.h \ - $(wildcard include/config/have/hw/breakpoint.h) \ - $(wildcard include/config/function/tracer.h) \ - $(wildcard include/config/cgroup/perf.h) \ - $(wildcard include/config/cpu/sup/intel.h) \ - include/uapi/linux/perf_event.h \ - arch/x86/include/asm/perf_event.h \ - $(wildcard include/config/cpu/sup/amd.h) \ - arch/x86/include/asm/stacktrace.h \ - $(wildcard include/config/frame/pointer.h) \ - include/linux/uaccess.h \ - include/linux/sched.h \ - $(wildcard include/config/sched/debug.h) \ - $(wildcard include/config/lockup/detector.h) \ - $(wildcard include/config/detect/hung/task.h) \ - $(wildcard include/config/core/dump/default/elf/headers.h) \ - $(wildcard include/config/sched/autogroup.h) \ - $(wildcard include/config/bsd/process/acct.h) \ - $(wildcard include/config/taskstats.h) \ - $(wildcard include/config/audit.h) \ - $(wildcard include/config/inotify/user.h) \ - $(wildcard include/config/fanotify.h) \ - $(wildcard include/config/posix/mqueue.h) \ - $(wildcard include/config/bpf/syscall.h) \ - $(wildcard include/config/sched/info.h) \ - $(wildcard include/config/task/delay/acct.h) \ - $(wildcard include/config/schedstats.h) \ - $(wildcard include/config/sched/mc.h) \ - $(wildcard include/config/fair/group/sched.h) \ - $(wildcard include/config/rt/group/sched.h) \ - $(wildcard include/config/cgroup/sched.h) \ - $(wildcard include/config/blk/dev/io/trace.h) \ - $(wildcard include/config/compat/brk.h) \ - $(wildcard include/config/auditsyscall.h) \ - $(wildcard include/config/rt/mutexes.h) \ - $(wildcard include/config/task/xacct.h) \ - $(wildcard include/config/cpusets.h) \ - $(wildcard include/config/cgroups.h) \ - $(wildcard include/config/futex.h) \ - $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ - $(wildcard include/config/fault/injection.h) \ - $(wildcard include/config/latencytop.h) \ - $(wildcard include/config/function/graph/tracer.h) \ - $(wildcard include/config/bcache.h) \ - $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ - $(wildcard include/config/have/unstable/sched/clock.h) \ - $(wildcard include/config/have/copy/thread/tls.h) \ - include/uapi/linux/sched.h \ - include/linux/sched/prio.h \ - include/linux/plist.h \ - $(wildcard include/config/debug/pi/list.h) \ - include/linux/cputime.h \ - arch/x86/include/generated/asm/cputime.h \ - include/asm-generic/cputime.h \ - include/asm-generic/cputime_jiffies.h \ - include/linux/shm.h \ - include/uapi/linux/shm.h \ - arch/x86/include/uapi/asm/shmbuf.h \ - include/uapi/asm-generic/shmbuf.h \ - arch/x86/include/asm/shmparam.h \ - include/linux/proportions.h \ - include/linux/seccomp.h \ - $(wildcard include/config/seccomp.h) \ - $(wildcard include/config/have/arch/seccomp/filter.h) \ - $(wildcard include/config/seccomp/filter.h) \ - $(wildcard include/config/checkpoint/restore.h) \ - include/uapi/linux/seccomp.h \ - arch/x86/include/asm/seccomp.h \ - arch/x86/include/asm/ia32_unistd.h \ - arch/x86/include/generated/asm/unistd_32_ia32.h \ - include/asm-generic/seccomp.h \ - include/linux/rtmutex.h \ - $(wildcard include/config/debug/rt/mutexes.h) \ - include/linux/hrtimer.h \ - $(wildcard include/config/high/res/timers.h) \ - $(wildcard include/config/time/low/res.h) \ - $(wildcard include/config/timerfd.h) \ - include/linux/timerqueue.h \ - include/linux/task_io_accounting.h \ - $(wildcard include/config/task/io/accounting.h) \ - include/linux/latencytop.h \ - include/linux/cred.h \ - $(wildcard include/config/debug/credentials.h) \ - include/linux/selinux.h \ - $(wildcard include/config/security/selinux.h) \ - include/uapi/linux/magic.h \ - include/linux/cgroup-defs.h \ - include/linux/percpu-refcount.h \ - include/linux/cgroup_subsys.h \ - $(wildcard include/config/cgroup/cpuacct.h) \ - $(wildcard include/config/cgroup/device.h) \ - $(wildcard include/config/cgroup/freezer.h) \ - $(wildcard include/config/cgroup/net/classid.h) \ - $(wildcard include/config/cgroup/net/prio.h) \ - $(wildcard include/config/cgroup/hugetlb.h) \ - $(wildcard include/config/cgroup/pids.h) \ - $(wildcard include/config/cgroup/debug.h) \ - include/linux/ptrace.h \ - include/linux/pid_namespace.h \ - $(wildcard include/config/pid/ns.h) \ - include/linux/nsproxy.h \ - include/linux/ns_common.h \ - include/uapi/linux/ptrace.h \ - arch/x86/include/asm/local64.h \ - include/asm-generic/local64.h \ - arch/x86/include/asm/local.h \ - arch/x86/include/asm/hw_breakpoint.h \ - arch/x86/include/uapi/asm/hw_breakpoint.h \ - include/linux/kdebug.h \ - arch/x86/include/asm/kdebug.h \ - include/linux/ftrace.h \ - $(wildcard include/config/dynamic/ftrace/with/regs.h) \ - $(wildcard include/config/dynamic/ftrace.h) \ - $(wildcard include/config/stack/tracer.h) \ - include/linux/trace_clock.h \ - arch/x86/include/asm/trace_clock.h \ - include/linux/kallsyms.h \ - arch/x86/include/asm/ftrace.h \ - arch/x86/include/asm/compat.h \ - arch/x86/include/asm/user32.h \ - include/linux/cpu.h \ - $(wildcard include/config/pm/sleep/smp.h) \ - include/linux/node.h \ - $(wildcard include/config/memory/hotplug/sparse.h) \ - include/linux/device.h \ - $(wildcard include/config/debug/devres.h) \ - $(wildcard include/config/generic/msi/irq/domain.h) \ - $(wildcard include/config/pinctrl.h) \ - $(wildcard include/config/generic/msi/irq.h) \ - $(wildcard include/config/dma/cma.h) \ - $(wildcard include/config/of.h) \ - $(wildcard include/config/devtmpfs.h) \ - $(wildcard include/config/sysfs/deprecated.h) \ - include/linux/klist.h \ - include/linux/pinctrl/devinfo.h \ - include/linux/pinctrl/consumer.h \ - include/linux/pinctrl/pinctrl-state.h \ - include/linux/ratelimit.h \ - arch/x86/include/asm/device.h \ - $(wildcard include/config/x86/dev/dma/ops.h) \ - $(wildcard include/config/intel/iommu.h) \ - $(wildcard include/config/amd/iommu.h) \ - include/linux/pm_wakeup.h \ - include/linux/irq_work.h \ - $(wildcard include/config/irq/work.h) \ - arch/x86/include/asm/irq_work.h \ - include/linux/jump_label_ratelimit.h \ - include/linux/perf_regs.h \ - $(wildcard include/config/have/perf/regs.h) \ - arch/x86/include/uapi/asm/perf_regs.h \ - include/linux/cgroup.h \ - include/uapi/linux/cgroupstats.h \ - include/uapi/linux/taskstats.h \ - include/linux/user_namespace.h \ - $(wildcard include/config/persistent/keyrings.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ - $(wildcard include/config/enable/msg.h) \ - $(wildcard include/config/enable/debug.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.h \ - include/linux/buffer_head.h \ - include/linux/pagemap.h \ - include/linux/highmem.h \ - arch/x86/include/asm/cacheflush.h \ - $(wildcard include/config/debug/rodata/test.h) \ - include/asm-generic/cacheflush.h \ - include/linux/hugetlb_inline.h \ - -/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o) - -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o): diff --git a/common/utils/.umemory.o.cmd b/common/utils/.umemory.o.cmd deleted file mode 100644 index 954cd7e..0000000 --- a/common/utils/.umemory.o.cmd +++ /dev/null @@ -1,530 +0,0 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.umemory.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(umemory)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_umemory.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.c - -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.c - -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o := \ - include/linux/types.h \ - $(wildcard include/config/have/uid16.h) \ - $(wildcard include/config/uid16.h) \ - $(wildcard include/config/lbdaf.h) \ - $(wildcard include/config/arch/dma/addr/t/64bit.h) \ - $(wildcard include/config/phys/addr/t/64bit.h) \ - $(wildcard include/config/64bit.h) \ - include/uapi/linux/types.h \ - arch/x86/include/uapi/asm/types.h \ - include/uapi/asm-generic/types.h \ - include/asm-generic/int-ll64.h \ - include/uapi/asm-generic/int-ll64.h \ - arch/x86/include/uapi/asm/bitsperlong.h \ - include/asm-generic/bitsperlong.h \ - include/uapi/asm-generic/bitsperlong.h \ - include/uapi/linux/posix_types.h \ - include/linux/stddef.h \ - include/uapi/linux/stddef.h \ - include/linux/compiler.h \ - $(wildcard include/config/sparse/rcu/pointer.h) \ - $(wildcard include/config/trace/branch/profiling.h) \ - $(wildcard include/config/profile/all/branches.h) \ - $(wildcard include/config/kasan.h) \ - $(wildcard include/config/enable/must/check.h) \ - $(wildcard include/config/enable/warn/deprecated.h) \ - $(wildcard include/config/kprobes.h) \ - include/linux/compiler-gcc.h \ - $(wildcard include/config/arch/supports/optimized/inlining.h) \ - $(wildcard include/config/optimize/inlining.h) \ - $(wildcard include/config/gcov/kernel.h) \ - $(wildcard include/config/arch/use/builtin/bswap.h) \ - arch/x86/include/asm/posix_types.h \ - $(wildcard include/config/x86/32.h) \ - arch/x86/include/uapi/asm/posix_types_64.h \ - include/uapi/asm-generic/posix_types.h \ - include/linux/slab.h \ - $(wildcard include/config/debug/slab.h) \ - $(wildcard include/config/debug/objects.h) \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/failslab.h) \ - $(wildcard include/config/slab.h) \ - $(wildcard include/config/slub.h) \ - $(wildcard include/config/slob.h) \ - $(wildcard include/config/zone/dma.h) \ - $(wildcard include/config/numa.h) \ - $(wildcard include/config/tracing.h) \ - include/linux/gfp.h \ - $(wildcard include/config/highmem.h) \ - $(wildcard include/config/zone/dma32.h) \ - $(wildcard include/config/zone/device.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ - $(wildcard include/config/pm/sleep.h) \ - $(wildcard include/config/cma.h) \ - include/linux/mmdebug.h \ - $(wildcard include/config/debug/vm.h) \ - $(wildcard include/config/debug/virtual.h) \ - include/linux/bug.h \ - $(wildcard include/config/generic/bug.h) \ - arch/x86/include/asm/bug.h \ - $(wildcard include/config/debug/bugverbose.h) \ - include/asm-generic/bug.h \ - $(wildcard include/config/bug.h) \ - $(wildcard include/config/generic/bug/relative/pointers.h) \ - $(wildcard include/config/smp.h) \ - include/linux/kernel.h \ - $(wildcard include/config/preempt/voluntary.h) \ - $(wildcard include/config/debug/atomic/sleep.h) \ - $(wildcard include/config/mmu.h) \ - $(wildcard include/config/prove/locking.h) \ - $(wildcard include/config/panic/timeout.h) \ - $(wildcard include/config/ftrace/mcount/record.h) \ - /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ - include/linux/linkage.h \ - include/linux/stringify.h \ - include/linux/export.h \ - $(wildcard include/config/have/underscore/symbol/prefix.h) \ - $(wildcard include/config/modules.h) \ - $(wildcard include/config/modversions.h) \ - $(wildcard include/config/unused/symbols.h) \ - arch/x86/include/asm/linkage.h \ - $(wildcard include/config/x86/64.h) \ - $(wildcard include/config/x86/alignment/16.h) \ - include/linux/bitops.h \ - arch/x86/include/asm/bitops.h \ - $(wildcard include/config/x86/cmov.h) \ - arch/x86/include/asm/alternative.h \ - $(wildcard include/config/paravirt.h) \ - arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - include/uapi/linux/const.h \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ - arch/x86/include/asm/rmwcc.h \ - arch/x86/include/asm/barrier.h \ - $(wildcard include/config/x86/ppro/fence.h) \ - arch/x86/include/asm/nops.h \ - $(wildcard include/config/mk7.h) \ - $(wildcard include/config/x86/p6/nop.h) \ - include/asm-generic/barrier.h \ - include/asm-generic/bitops/find.h \ - $(wildcard include/config/generic/find/first/bit.h) \ - include/asm-generic/bitops/sched.h \ - arch/x86/include/asm/arch_hweight.h \ - arch/x86/include/asm/cpufeatures.h \ - arch/x86/include/asm/required-features.h \ - $(wildcard include/config/x86/minimum/cpu/family.h) \ - $(wildcard include/config/math/emulation.h) \ - $(wildcard include/config/x86/cmpxchg64.h) \ - $(wildcard include/config/x86/use/3dnow.h) \ - $(wildcard include/config/matom.h) \ - arch/x86/include/asm/disabled-features.h \ - $(wildcard include/config/x86/intel/mpx.h) \ - include/asm-generic/bitops/const_hweight.h \ - include/asm-generic/bitops/le.h \ - arch/x86/include/uapi/asm/byteorder.h \ - include/linux/byteorder/little_endian.h \ - include/uapi/linux/byteorder/little_endian.h \ - include/linux/swab.h \ - include/uapi/linux/swab.h \ - arch/x86/include/uapi/asm/swab.h \ - include/linux/byteorder/generic.h \ - include/asm-generic/bitops/ext2-atomic-setbit.h \ - include/linux/log2.h \ - $(wildcard include/config/arch/has/ilog2/u32.h) \ - $(wildcard include/config/arch/has/ilog2/u64.h) \ - include/linux/typecheck.h \ - include/linux/printk.h \ - $(wildcard include/config/message/loglevel/default.h) \ - $(wildcard include/config/early/printk.h) \ - $(wildcard include/config/printk.h) \ - $(wildcard include/config/dynamic/debug.h) \ - include/linux/init.h \ - $(wildcard include/config/broken/rodata.h) \ - $(wildcard include/config/lto.h) \ - include/linux/kern_levels.h \ - include/linux/cache.h \ - $(wildcard include/config/arch/has/cache/line/size.h) \ - include/uapi/linux/kernel.h \ - include/uapi/linux/sysinfo.h \ - include/linux/dynamic_debug.h \ - include/linux/mmzone.h \ - $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ - $(wildcard include/config/memcg.h) \ - $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ - $(wildcard include/config/discontigmem.h) \ - $(wildcard include/config/flat/node/mem/map.h) \ - $(wildcard include/config/page/extension.h) \ - $(wildcard include/config/no/bootmem.h) \ - $(wildcard include/config/numa/balancing.h) \ - $(wildcard include/config/have/memory/present.h) \ - $(wildcard include/config/have/memoryless/nodes.h) \ - $(wildcard include/config/need/node/memmap/size.h) \ - $(wildcard include/config/have/memblock/node/map.h) \ - $(wildcard include/config/need/multiple/nodes.h) \ - $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ - $(wildcard include/config/flatmem.h) \ - $(wildcard include/config/sparsemem/extreme.h) \ - $(wildcard include/config/have/arch/pfn/valid.h) \ - $(wildcard include/config/holes/in/zone.h) \ - $(wildcard include/config/arch/has/holes/memorymodel.h) \ - include/linux/spinlock.h \ - $(wildcard include/config/debug/spinlock.h) \ - $(wildcard include/config/generic/lockbreak.h) \ - $(wildcard include/config/preempt.h) \ - $(wildcard include/config/debug/lock/alloc.h) \ - include/linux/preempt.h \ - $(wildcard include/config/preempt/count.h) \ - $(wildcard include/config/debug/preempt.h) \ - $(wildcard include/config/preempt/tracer.h) \ - $(wildcard include/config/preempt/notifiers.h) \ - include/linux/list.h \ - $(wildcard include/config/debug/list.h) \ - include/linux/poison.h \ - $(wildcard include/config/illegal/pointer/value.h) \ - arch/x86/include/asm/preempt.h \ - arch/x86/include/asm/percpu.h \ - $(wildcard include/config/x86/64/smp.h) \ - include/asm-generic/percpu.h \ - $(wildcard include/config/have/setup/per/cpu/area.h) \ - include/linux/threads.h \ - $(wildcard include/config/base/small.h) \ - include/linux/percpu-defs.h \ - $(wildcard include/config/debug/force/weak/per/cpu.h) \ - include/linux/thread_info.h \ - $(wildcard include/config/compat.h) \ - $(wildcard include/config/debug/stack/usage.h) \ - arch/x86/include/asm/thread_info.h \ - $(wildcard include/config/ia32/emulation.h) \ - arch/x86/include/asm/page.h \ - arch/x86/include/asm/page_64.h \ - $(wildcard include/config/x86/vsyscall/emulation.h) \ - include/linux/range.h \ - include/asm-generic/memory_model.h \ - $(wildcard include/config/sparsemem/vmemmap.h) \ - include/asm-generic/getorder.h \ - arch/x86/include/asm/cpufeature.h \ - $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ - arch/x86/include/asm/processor.h \ - $(wildcard include/config/m486.h) \ - $(wildcard include/config/xen.h) \ - arch/x86/include/asm/math_emu.h \ - arch/x86/include/uapi/asm/sigcontext.h \ - arch/x86/include/asm/current.h \ - arch/x86/include/asm/msr.h \ - arch/x86/include/asm/msr-index.h \ - $(wildcard include/config/tdp/nominal.h) \ - $(wildcard include/config/tdp/level/1.h) \ - $(wildcard include/config/tdp/level/2.h) \ - $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ - arch/x86/include/uapi/asm/errno.h \ - include/uapi/asm-generic/errno.h \ - include/uapi/asm-generic/errno-base.h \ - arch/x86/include/asm/cpumask.h \ - include/linux/cpumask.h \ - $(wildcard include/config/cpumask/offstack.h) \ - $(wildcard include/config/hotplug/cpu.h) \ - $(wildcard include/config/debug/per/cpu/maps.h) \ - include/linux/bitmap.h \ - include/linux/string.h \ - $(wildcard include/config/binary/printf.h) \ - include/uapi/linux/string.h \ - arch/x86/include/asm/string.h \ - arch/x86/include/asm/string_64.h \ - arch/x86/include/uapi/asm/msr.h \ - include/uapi/linux/ioctl.h \ - arch/x86/include/uapi/asm/ioctl.h \ - include/asm-generic/ioctl.h \ - include/uapi/asm-generic/ioctl.h \ - arch/x86/include/asm/paravirt.h \ - arch/x86/include/asm/special_insns.h \ - arch/x86/include/asm/fpu/types.h \ - include/linux/personality.h \ - include/uapi/linux/personality.h \ - include/linux/math64.h \ - $(wildcard include/config/arch/supports/int128.h) \ - arch/x86/include/asm/div64.h \ - include/asm-generic/div64.h \ - include/linux/err.h \ - include/linux/irqflags.h \ - $(wildcard include/config/trace/irqflags.h) \ - $(wildcard include/config/irqsoff/tracer.h) \ - $(wildcard include/config/trace/irqflags/support.h) \ - arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ - include/linux/bottom_half.h \ - include/linux/spinlock_types.h \ - include/linux/lockdep.h \ - $(wildcard include/config/lockdep.h) \ - $(wildcard include/config/lock/stat.h) \ - include/linux/rwlock_types.h \ - arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ - arch/x86/include/asm/qspinlock.h \ - include/asm-generic/qspinlock.h \ - arch/x86/include/asm/qrwlock.h \ - include/asm-generic/qrwlock.h \ - include/linux/rwlock.h \ - include/linux/spinlock_api_smp.h \ - $(wildcard include/config/inline/spin/lock.h) \ - $(wildcard include/config/inline/spin/lock/bh.h) \ - $(wildcard include/config/inline/spin/lock/irq.h) \ - $(wildcard include/config/inline/spin/lock/irqsave.h) \ - $(wildcard include/config/inline/spin/trylock.h) \ - $(wildcard include/config/inline/spin/trylock/bh.h) \ - $(wildcard include/config/uninline/spin/unlock.h) \ - $(wildcard include/config/inline/spin/unlock/bh.h) \ - $(wildcard include/config/inline/spin/unlock/irq.h) \ - $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ - include/linux/rwlock_api_smp.h \ - $(wildcard include/config/inline/read/lock.h) \ - $(wildcard include/config/inline/write/lock.h) \ - $(wildcard include/config/inline/read/lock/bh.h) \ - $(wildcard include/config/inline/write/lock/bh.h) \ - $(wildcard include/config/inline/read/lock/irq.h) \ - $(wildcard include/config/inline/write/lock/irq.h) \ - $(wildcard include/config/inline/read/lock/irqsave.h) \ - $(wildcard include/config/inline/write/lock/irqsave.h) \ - $(wildcard include/config/inline/read/trylock.h) \ - $(wildcard include/config/inline/write/trylock.h) \ - $(wildcard include/config/inline/read/unlock.h) \ - $(wildcard include/config/inline/write/unlock.h) \ - $(wildcard include/config/inline/read/unlock/bh.h) \ - $(wildcard include/config/inline/write/unlock/bh.h) \ - $(wildcard include/config/inline/read/unlock/irq.h) \ - $(wildcard include/config/inline/write/unlock/irq.h) \ - $(wildcard include/config/inline/read/unlock/irqrestore.h) \ - $(wildcard include/config/inline/write/unlock/irqrestore.h) \ - include/linux/wait.h \ - include/uapi/linux/wait.h \ - include/linux/numa.h \ - $(wildcard include/config/nodes/shift.h) \ - include/linux/seqlock.h \ - include/linux/nodemask.h \ - $(wildcard include/config/movable/node.h) \ - include/linux/pageblock-flags.h \ - $(wildcard include/config/hugetlb/page.h) \ - $(wildcard include/config/hugetlb/page/size/variable.h) \ - include/linux/page-flags-layout.h \ - include/generated/bounds.h \ - include/linux/memory_hotplug.h \ - $(wildcard include/config/memory/hotremove.h) \ - $(wildcard include/config/have/arch/nodedata/extension.h) \ - $(wildcard include/config/have/bootmem/info/node.h) \ - include/linux/notifier.h \ - include/linux/errno.h \ - include/uapi/linux/errno.h \ - include/linux/mutex.h \ - $(wildcard include/config/debug/mutexes.h) \ - $(wildcard include/config/mutex/spin/on/owner.h) \ - include/linux/osq_lock.h \ - include/linux/rwsem.h \ - $(wildcard include/config/rwsem/spin/on/owner.h) \ - $(wildcard include/config/rwsem/generic/spinlock.h) \ - arch/x86/include/asm/rwsem.h \ - include/linux/srcu.h \ - include/linux/rcupdate.h \ - $(wildcard include/config/tiny/rcu.h) \ - $(wildcard include/config/tree/rcu.h) \ - $(wildcard include/config/preempt/rcu.h) \ - $(wildcard include/config/rcu/trace.h) \ - $(wildcard include/config/rcu/stall/common.h) \ - $(wildcard include/config/no/hz/full.h) \ - $(wildcard include/config/rcu/nocb/cpu.h) \ - $(wildcard include/config/tasks/rcu.h) \ - $(wildcard include/config/debug/objects/rcu/head.h) \ - $(wildcard include/config/prove/rcu.h) \ - $(wildcard include/config/rcu/boost.h) \ - $(wildcard include/config/rcu/nocb/cpu/all.h) \ - $(wildcard include/config/no/hz/full/sysidle.h) \ - include/linux/completion.h \ - include/linux/debugobjects.h \ - $(wildcard include/config/debug/objects/free.h) \ - include/linux/ktime.h \ - include/linux/time.h \ - $(wildcard include/config/arch/uses/gettimeoffset.h) \ - include/linux/time64.h \ - include/uapi/linux/time.h \ - include/linux/jiffies.h \ - include/linux/timex.h \ - include/uapi/linux/timex.h \ - include/uapi/linux/param.h \ - arch/x86/include/uapi/asm/param.h \ - include/asm-generic/param.h \ - $(wildcard include/config/hz.h) \ - include/uapi/asm-generic/param.h \ - arch/x86/include/asm/timex.h \ - arch/x86/include/asm/tsc.h \ - $(wildcard include/config/x86/tsc.h) \ - include/generated/timeconst.h \ - include/linux/timekeeping.h \ - include/linux/rcutree.h \ - include/linux/workqueue.h \ - $(wildcard include/config/debug/objects/work.h) \ - $(wildcard include/config/freezer.h) \ - $(wildcard include/config/sysfs.h) \ - include/linux/timer.h \ - $(wildcard include/config/timer/stats.h) \ - $(wildcard include/config/debug/objects/timers.h) \ - $(wildcard include/config/no/hz/common.h) \ - include/linux/sysctl.h \ - $(wildcard include/config/sysctl.h) \ - include/linux/rbtree.h \ - include/uapi/linux/sysctl.h \ - arch/x86/include/asm/mmzone.h \ - arch/x86/include/asm/mmzone_64.h \ - arch/x86/include/asm/smp.h \ - $(wildcard include/config/x86/io/apic.h) \ - $(wildcard include/config/x86/32/smp.h) \ - $(wildcard include/config/debug/nmi/selftest.h) \ - arch/x86/include/asm/mpspec.h \ - $(wildcard include/config/eisa.h) \ - $(wildcard include/config/x86/mpparse.h) \ - arch/x86/include/asm/mpspec_def.h \ - arch/x86/include/asm/x86_init.h \ - arch/x86/include/uapi/asm/bootparam.h \ - include/linux/screen_info.h \ - include/uapi/linux/screen_info.h \ - include/linux/apm_bios.h \ - include/uapi/linux/apm_bios.h \ - include/linux/edd.h \ - include/uapi/linux/edd.h \ - arch/x86/include/asm/e820.h \ - $(wildcard include/config/efi.h) \ - $(wildcard include/config/hibernation.h) \ - arch/x86/include/uapi/asm/e820.h \ - $(wildcard include/config/x86/pmem/legacy.h) \ - $(wildcard include/config/intel/txt.h) \ - include/linux/ioport.h \ - arch/x86/include/asm/ist.h \ - arch/x86/include/uapi/asm/ist.h \ - include/video/edid.h \ - $(wildcard include/config/x86.h) \ - include/uapi/video/edid.h \ - arch/x86/include/asm/apicdef.h \ - arch/x86/include/asm/apic.h \ - $(wildcard include/config/x86/x2apic.h) \ - include/linux/pm.h \ - $(wildcard include/config/vt/console/sleep.h) \ - $(wildcard include/config/pm.h) \ - $(wildcard include/config/pm/clk.h) \ - $(wildcard include/config/pm/generic/domains.h) \ - arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ - $(wildcard include/config/provide/ohci1394/dma/init.h) \ - $(wildcard include/config/pci/mmconfig.h) \ - $(wildcard include/config/x86/intel/mid.h) \ - arch/x86/include/asm/acpi.h \ - $(wildcard include/config/acpi/apei.h) \ - $(wildcard include/config/acpi.h) \ - $(wildcard include/config/acpi/numa.h) \ - include/acpi/pdc_intel.h \ - arch/x86/include/asm/numa.h \ - $(wildcard include/config/numa/emu.h) \ - arch/x86/include/asm/topology.h \ - include/asm-generic/topology.h \ - arch/x86/include/asm/mmu.h \ - $(wildcard include/config/modify/ldt/syscall.h) \ - arch/x86/include/asm/realmode.h \ - $(wildcard include/config/acpi/sleep.h) \ - arch/x86/include/asm/io.h \ - $(wildcard include/config/mtrr.h) \ - arch/x86/include/generated/asm/early_ioremap.h \ - include/asm-generic/early_ioremap.h \ - $(wildcard include/config/generic/early/ioremap.h) \ - include/asm-generic/iomap.h \ - $(wildcard include/config/has/ioport/map.h) \ - $(wildcard include/config/pci.h) \ - $(wildcard include/config/generic/iomap.h) \ - include/asm-generic/pci_iomap.h \ - $(wildcard include/config/no/generic/pci/ioport/map.h) \ - $(wildcard include/config/generic/pci/iomap.h) \ - include/xen/xen.h \ - $(wildcard include/config/xen/dom0.h) \ - $(wildcard include/config/xen/pvh.h) \ - include/xen/interface/xen.h \ - arch/x86/include/asm/xen/interface.h \ - arch/x86/include/asm/xen/interface_64.h \ - arch/x86/include/asm/pvclock-abi.h \ - arch/x86/include/asm/xen/hypervisor.h \ - include/xen/features.h \ - include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ - arch/x86/include/uapi/asm/vsyscall.h \ - include/asm-generic/fixmap.h \ - arch/x86/include/asm/idle.h \ - arch/x86/include/asm/io_apic.h \ - arch/x86/include/asm/irq_vectors.h \ - $(wildcard include/config/have/kvm.h) \ - $(wildcard include/config/pci/msi.h) \ - include/linux/topology.h \ - $(wildcard include/config/use/percpu/numa/node/id.h) \ - $(wildcard include/config/sched/smt.h) \ - include/linux/smp.h \ - $(wildcard include/config/up/late/init.h) \ - include/linux/llist.h \ - $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ - include/linux/percpu.h \ - $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ - $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ - include/linux/kmemleak.h \ - $(wildcard include/config/debug/kmemleak.h) \ - include/linux/kasan.h \ - include/linux/vmalloc.h \ - -/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o) - -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o): diff --git a/common/utils/.uthread.o.cmd b/common/utils/.uthread.o.cmd deleted file mode 100644 index 4f9dcb3..0000000 --- a/common/utils/.uthread.o.cmd +++ /dev/null @@ -1,751 +0,0 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.uthread.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(uthread)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_uthread.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.c - -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.c - -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o := \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ - $(wildcard include/config/enable/msg.h) \ - $(wildcard include/config/enable/debug.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ - include/generated/uapi/linux/version.h \ - include/linux/completion.h \ - $(wildcard include/config/lockdep.h) \ - include/linux/wait.h \ - include/linux/list.h \ - $(wildcard include/config/debug/list.h) \ - include/linux/types.h \ - $(wildcard include/config/have/uid16.h) \ - $(wildcard include/config/uid16.h) \ - $(wildcard include/config/lbdaf.h) \ - $(wildcard include/config/arch/dma/addr/t/64bit.h) \ - $(wildcard include/config/phys/addr/t/64bit.h) \ - $(wildcard include/config/64bit.h) \ - include/uapi/linux/types.h \ - arch/x86/include/uapi/asm/types.h \ - include/uapi/asm-generic/types.h \ - include/asm-generic/int-ll64.h \ - include/uapi/asm-generic/int-ll64.h \ - arch/x86/include/uapi/asm/bitsperlong.h \ - include/asm-generic/bitsperlong.h \ - include/uapi/asm-generic/bitsperlong.h \ - include/uapi/linux/posix_types.h \ - include/linux/stddef.h \ - include/uapi/linux/stddef.h \ - include/linux/compiler.h \ - $(wildcard include/config/sparse/rcu/pointer.h) \ - $(wildcard include/config/trace/branch/profiling.h) \ - $(wildcard include/config/profile/all/branches.h) \ - $(wildcard include/config/kasan.h) \ - $(wildcard include/config/enable/must/check.h) \ - $(wildcard include/config/enable/warn/deprecated.h) \ - $(wildcard include/config/kprobes.h) \ - include/linux/compiler-gcc.h \ - $(wildcard include/config/arch/supports/optimized/inlining.h) \ - $(wildcard include/config/optimize/inlining.h) \ - $(wildcard include/config/gcov/kernel.h) \ - $(wildcard include/config/arch/use/builtin/bswap.h) \ - arch/x86/include/asm/posix_types.h \ - $(wildcard include/config/x86/32.h) \ - arch/x86/include/uapi/asm/posix_types_64.h \ - include/uapi/asm-generic/posix_types.h \ - include/linux/poison.h \ - $(wildcard include/config/illegal/pointer/value.h) \ - include/uapi/linux/const.h \ - include/linux/kernel.h \ - $(wildcard include/config/preempt/voluntary.h) \ - $(wildcard include/config/debug/atomic/sleep.h) \ - $(wildcard include/config/mmu.h) \ - $(wildcard include/config/prove/locking.h) \ - $(wildcard include/config/panic/timeout.h) \ - $(wildcard include/config/tracing.h) \ - $(wildcard include/config/ftrace/mcount/record.h) \ - /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ - include/linux/linkage.h \ - include/linux/stringify.h \ - include/linux/export.h \ - $(wildcard include/config/have/underscore/symbol/prefix.h) \ - $(wildcard include/config/modules.h) \ - $(wildcard include/config/modversions.h) \ - $(wildcard include/config/unused/symbols.h) \ - arch/x86/include/asm/linkage.h \ - $(wildcard include/config/x86/64.h) \ - $(wildcard include/config/x86/alignment/16.h) \ - include/linux/bitops.h \ - arch/x86/include/asm/bitops.h \ - $(wildcard include/config/x86/cmov.h) \ - arch/x86/include/asm/alternative.h \ - $(wildcard include/config/smp.h) \ - $(wildcard include/config/paravirt.h) \ - arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ - arch/x86/include/asm/rmwcc.h \ - arch/x86/include/asm/barrier.h \ - $(wildcard include/config/x86/ppro/fence.h) \ - arch/x86/include/asm/nops.h \ - $(wildcard include/config/mk7.h) \ - $(wildcard include/config/x86/p6/nop.h) \ - include/asm-generic/barrier.h \ - include/asm-generic/bitops/find.h \ - $(wildcard include/config/generic/find/first/bit.h) \ - include/asm-generic/bitops/sched.h \ - arch/x86/include/asm/arch_hweight.h \ - arch/x86/include/asm/cpufeatures.h \ - arch/x86/include/asm/required-features.h \ - $(wildcard include/config/x86/minimum/cpu/family.h) \ - $(wildcard include/config/math/emulation.h) \ - $(wildcard include/config/x86/cmpxchg64.h) \ - $(wildcard include/config/x86/use/3dnow.h) \ - $(wildcard include/config/matom.h) \ - arch/x86/include/asm/disabled-features.h \ - $(wildcard include/config/x86/intel/mpx.h) \ - include/asm-generic/bitops/const_hweight.h \ - include/asm-generic/bitops/le.h \ - arch/x86/include/uapi/asm/byteorder.h \ - include/linux/byteorder/little_endian.h \ - include/uapi/linux/byteorder/little_endian.h \ - include/linux/swab.h \ - include/uapi/linux/swab.h \ - arch/x86/include/uapi/asm/swab.h \ - include/linux/byteorder/generic.h \ - include/asm-generic/bitops/ext2-atomic-setbit.h \ - include/linux/log2.h \ - $(wildcard include/config/arch/has/ilog2/u32.h) \ - $(wildcard include/config/arch/has/ilog2/u64.h) \ - include/linux/typecheck.h \ - include/linux/printk.h \ - $(wildcard include/config/message/loglevel/default.h) \ - $(wildcard include/config/early/printk.h) \ - $(wildcard include/config/printk.h) \ - $(wildcard include/config/dynamic/debug.h) \ - include/linux/init.h \ - $(wildcard include/config/broken/rodata.h) \ - $(wildcard include/config/lto.h) \ - include/linux/kern_levels.h \ - include/linux/cache.h \ - $(wildcard include/config/arch/has/cache/line/size.h) \ - include/uapi/linux/kernel.h \ - include/uapi/linux/sysinfo.h \ - include/linux/dynamic_debug.h \ - include/linux/spinlock.h \ - $(wildcard include/config/debug/spinlock.h) \ - $(wildcard include/config/generic/lockbreak.h) \ - $(wildcard include/config/preempt.h) \ - $(wildcard include/config/debug/lock/alloc.h) \ - include/linux/preempt.h \ - $(wildcard include/config/preempt/count.h) \ - $(wildcard include/config/debug/preempt.h) \ - $(wildcard include/config/preempt/tracer.h) \ - $(wildcard include/config/preempt/notifiers.h) \ - arch/x86/include/asm/preempt.h \ - arch/x86/include/asm/percpu.h \ - $(wildcard include/config/x86/64/smp.h) \ - include/asm-generic/percpu.h \ - $(wildcard include/config/have/setup/per/cpu/area.h) \ - include/linux/threads.h \ - $(wildcard include/config/base/small.h) \ - include/linux/percpu-defs.h \ - $(wildcard include/config/debug/force/weak/per/cpu.h) \ - include/linux/thread_info.h \ - $(wildcard include/config/compat.h) \ - $(wildcard include/config/debug/stack/usage.h) \ - include/linux/bug.h \ - $(wildcard include/config/generic/bug.h) \ - arch/x86/include/asm/bug.h \ - $(wildcard include/config/debug/bugverbose.h) \ - include/asm-generic/bug.h \ - $(wildcard include/config/bug.h) \ - $(wildcard include/config/generic/bug/relative/pointers.h) \ - arch/x86/include/asm/thread_info.h \ - $(wildcard include/config/ia32/emulation.h) \ - arch/x86/include/asm/page.h \ - arch/x86/include/asm/page_64.h \ - $(wildcard include/config/debug/virtual.h) \ - $(wildcard include/config/flatmem.h) \ - $(wildcard include/config/x86/vsyscall/emulation.h) \ - include/linux/range.h \ - include/asm-generic/memory_model.h \ - $(wildcard include/config/discontigmem.h) \ - $(wildcard include/config/sparsemem/vmemmap.h) \ - include/asm-generic/getorder.h \ - arch/x86/include/asm/cpufeature.h \ - $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ - arch/x86/include/asm/processor.h \ - $(wildcard include/config/m486.h) \ - $(wildcard include/config/xen.h) \ - arch/x86/include/asm/math_emu.h \ - arch/x86/include/uapi/asm/sigcontext.h \ - arch/x86/include/asm/current.h \ - arch/x86/include/asm/msr.h \ - arch/x86/include/asm/msr-index.h \ - $(wildcard include/config/tdp/nominal.h) \ - $(wildcard include/config/tdp/level/1.h) \ - $(wildcard include/config/tdp/level/2.h) \ - $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ - arch/x86/include/uapi/asm/errno.h \ - include/uapi/asm-generic/errno.h \ - include/uapi/asm-generic/errno-base.h \ - arch/x86/include/asm/cpumask.h \ - include/linux/cpumask.h \ - $(wildcard include/config/cpumask/offstack.h) \ - $(wildcard include/config/hotplug/cpu.h) \ - $(wildcard include/config/debug/per/cpu/maps.h) \ - include/linux/bitmap.h \ - include/linux/string.h \ - $(wildcard include/config/binary/printf.h) \ - include/uapi/linux/string.h \ - arch/x86/include/asm/string.h \ - arch/x86/include/asm/string_64.h \ - arch/x86/include/uapi/asm/msr.h \ - include/uapi/linux/ioctl.h \ - arch/x86/include/uapi/asm/ioctl.h \ - include/asm-generic/ioctl.h \ - include/uapi/asm-generic/ioctl.h \ - arch/x86/include/asm/paravirt.h \ - arch/x86/include/asm/special_insns.h \ - arch/x86/include/asm/fpu/types.h \ - include/linux/personality.h \ - include/uapi/linux/personality.h \ - include/linux/math64.h \ - $(wildcard include/config/arch/supports/int128.h) \ - arch/x86/include/asm/div64.h \ - include/asm-generic/div64.h \ - include/linux/err.h \ - include/linux/irqflags.h \ - $(wildcard include/config/trace/irqflags.h) \ - $(wildcard include/config/irqsoff/tracer.h) \ - $(wildcard include/config/trace/irqflags/support.h) \ - arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ - include/linux/bottom_half.h \ - include/linux/spinlock_types.h \ - include/linux/lockdep.h \ - $(wildcard include/config/lock/stat.h) \ - include/linux/rwlock_types.h \ - arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ - arch/x86/include/asm/qspinlock.h \ - include/asm-generic/qspinlock.h \ - arch/x86/include/asm/qrwlock.h \ - include/asm-generic/qrwlock.h \ - include/linux/rwlock.h \ - include/linux/spinlock_api_smp.h \ - $(wildcard include/config/inline/spin/lock.h) \ - $(wildcard include/config/inline/spin/lock/bh.h) \ - $(wildcard include/config/inline/spin/lock/irq.h) \ - $(wildcard include/config/inline/spin/lock/irqsave.h) \ - $(wildcard include/config/inline/spin/trylock.h) \ - $(wildcard include/config/inline/spin/trylock/bh.h) \ - $(wildcard include/config/uninline/spin/unlock.h) \ - $(wildcard include/config/inline/spin/unlock/bh.h) \ - $(wildcard include/config/inline/spin/unlock/irq.h) \ - $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ - include/linux/rwlock_api_smp.h \ - $(wildcard include/config/inline/read/lock.h) \ - $(wildcard include/config/inline/write/lock.h) \ - $(wildcard include/config/inline/read/lock/bh.h) \ - $(wildcard include/config/inline/write/lock/bh.h) \ - $(wildcard include/config/inline/read/lock/irq.h) \ - $(wildcard include/config/inline/write/lock/irq.h) \ - $(wildcard include/config/inline/read/lock/irqsave.h) \ - $(wildcard include/config/inline/write/lock/irqsave.h) \ - $(wildcard include/config/inline/read/trylock.h) \ - $(wildcard include/config/inline/write/trylock.h) \ - $(wildcard include/config/inline/read/unlock.h) \ - $(wildcard include/config/inline/write/unlock.h) \ - $(wildcard include/config/inline/read/unlock/bh.h) \ - $(wildcard include/config/inline/write/unlock/bh.h) \ - $(wildcard include/config/inline/read/unlock/irq.h) \ - $(wildcard include/config/inline/write/unlock/irq.h) \ - $(wildcard include/config/inline/read/unlock/irqrestore.h) \ - $(wildcard include/config/inline/write/unlock/irqrestore.h) \ - include/uapi/linux/wait.h \ - include/linux/semaphore.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.h \ - include/linux/delay.h \ - arch/x86/include/asm/delay.h \ - include/asm-generic/delay.h \ - include/linux/kthread.h \ - include/linux/sched.h \ - $(wildcard include/config/no/hz/common.h) \ - $(wildcard include/config/sched/debug.h) \ - $(wildcard include/config/prove/rcu.h) \ - $(wildcard include/config/lockup/detector.h) \ - $(wildcard include/config/detect/hung/task.h) \ - $(wildcard include/config/core/dump/default/elf/headers.h) \ - $(wildcard include/config/virt/cpu/accounting/native.h) \ - $(wildcard include/config/sched/autogroup.h) \ - $(wildcard include/config/bsd/process/acct.h) \ - $(wildcard include/config/taskstats.h) \ - $(wildcard include/config/audit.h) \ - $(wildcard include/config/inotify/user.h) \ - $(wildcard include/config/fanotify.h) \ - $(wildcard include/config/epoll.h) \ - $(wildcard include/config/posix/mqueue.h) \ - $(wildcard include/config/keys.h) \ - $(wildcard include/config/perf/events.h) \ - $(wildcard include/config/bpf/syscall.h) \ - $(wildcard include/config/sched/info.h) \ - $(wildcard include/config/task/delay/acct.h) \ - $(wildcard include/config/schedstats.h) \ - $(wildcard include/config/sched/smt.h) \ - $(wildcard include/config/sched/mc.h) \ - $(wildcard include/config/numa.h) \ - $(wildcard include/config/fair/group/sched.h) \ - $(wildcard include/config/rt/group/sched.h) \ - $(wildcard include/config/cgroup/sched.h) \ - $(wildcard include/config/blk/dev/io/trace.h) \ - $(wildcard include/config/preempt/rcu.h) \ - $(wildcard include/config/tasks/rcu.h) \ - $(wildcard include/config/memcg.h) \ - $(wildcard include/config/memcg/kmem.h) \ - $(wildcard include/config/compat/brk.h) \ - $(wildcard include/config/virt/cpu/accounting/gen.h) \ - $(wildcard include/config/sysvipc.h) \ - $(wildcard include/config/auditsyscall.h) \ - $(wildcard include/config/rt/mutexes.h) \ - $(wildcard include/config/debug/mutexes.h) \ - $(wildcard include/config/block.h) \ - $(wildcard include/config/task/xacct.h) \ - $(wildcard include/config/cpusets.h) \ - $(wildcard include/config/cgroups.h) \ - $(wildcard include/config/futex.h) \ - $(wildcard include/config/numa/balancing.h) \ - $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ - $(wildcard include/config/fault/injection.h) \ - $(wildcard include/config/latencytop.h) \ - $(wildcard include/config/function/graph/tracer.h) \ - $(wildcard include/config/uprobes.h) \ - $(wildcard include/config/bcache.h) \ - $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ - $(wildcard include/config/have/unstable/sched/clock.h) \ - $(wildcard include/config/irq/time/accounting.h) \ - $(wildcard include/config/no/hz/full.h) \ - $(wildcard include/config/stack/growsup.h) \ - $(wildcard include/config/have/copy/thread/tls.h) \ - include/uapi/linux/sched.h \ - include/linux/sched/prio.h \ - arch/x86/include/uapi/asm/param.h \ - include/asm-generic/param.h \ - $(wildcard include/config/hz.h) \ - include/uapi/asm-generic/param.h \ - include/linux/capability.h \ - $(wildcard include/config/multiuser.h) \ - include/uapi/linux/capability.h \ - include/linux/timex.h \ - include/uapi/linux/timex.h \ - include/linux/time.h \ - $(wildcard include/config/arch/uses/gettimeoffset.h) \ - include/linux/seqlock.h \ - include/linux/time64.h \ - include/uapi/linux/time.h \ - include/uapi/linux/param.h \ - arch/x86/include/asm/timex.h \ - arch/x86/include/asm/tsc.h \ - $(wildcard include/config/x86/tsc.h) \ - include/linux/jiffies.h \ - include/generated/timeconst.h \ - include/linux/plist.h \ - $(wildcard include/config/debug/pi/list.h) \ - include/linux/rbtree.h \ - include/linux/rcupdate.h \ - $(wildcard include/config/tiny/rcu.h) \ - $(wildcard include/config/tree/rcu.h) \ - $(wildcard include/config/rcu/trace.h) \ - $(wildcard include/config/rcu/stall/common.h) \ - $(wildcard include/config/rcu/nocb/cpu.h) \ - $(wildcard include/config/debug/objects/rcu/head.h) \ - $(wildcard include/config/rcu/boost.h) \ - $(wildcard include/config/rcu/nocb/cpu/all.h) \ - $(wildcard include/config/no/hz/full/sysidle.h) \ - include/linux/debugobjects.h \ - $(wildcard include/config/debug/objects.h) \ - $(wildcard include/config/debug/objects/free.h) \ - include/linux/ktime.h \ - include/linux/timekeeping.h \ - include/linux/rcutree.h \ - include/linux/errno.h \ - include/uapi/linux/errno.h \ - include/linux/nodemask.h \ - $(wildcard include/config/highmem.h) \ - $(wildcard include/config/movable/node.h) \ - include/linux/numa.h \ - $(wildcard include/config/nodes/shift.h) \ - include/linux/mm_types.h \ - $(wildcard include/config/split/ptlock/cpus.h) \ - $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ - $(wildcard include/config/have/cmpxchg/double.h) \ - $(wildcard include/config/have/aligned/struct/page.h) \ - $(wildcard include/config/transparent/hugepage.h) \ - $(wildcard include/config/userfaultfd.h) \ - $(wildcard include/config/aio.h) \ - $(wildcard include/config/mmu/notifier.h) \ - $(wildcard include/config/compaction.h) \ - $(wildcard include/config/hugetlb/page.h) \ - include/linux/auxvec.h \ - include/uapi/linux/auxvec.h \ - arch/x86/include/uapi/asm/auxvec.h \ - include/linux/rwsem.h \ - $(wildcard include/config/rwsem/spin/on/owner.h) \ - $(wildcard include/config/rwsem/generic/spinlock.h) \ - include/linux/osq_lock.h \ - arch/x86/include/asm/rwsem.h \ - include/linux/uprobes.h \ - arch/x86/include/asm/uprobes.h \ - include/linux/notifier.h \ - include/linux/mutex.h \ - $(wildcard include/config/mutex/spin/on/owner.h) \ - include/linux/srcu.h \ - include/linux/workqueue.h \ - $(wildcard include/config/debug/objects/work.h) \ - $(wildcard include/config/freezer.h) \ - $(wildcard include/config/sysfs.h) \ - include/linux/timer.h \ - $(wildcard include/config/timer/stats.h) \ - $(wildcard include/config/debug/objects/timers.h) \ - include/linux/sysctl.h \ - $(wildcard include/config/sysctl.h) \ - include/uapi/linux/sysctl.h \ - include/linux/page-flags-layout.h \ - include/generated/bounds.h \ - arch/x86/include/asm/mmu.h \ - $(wildcard include/config/modify/ldt/syscall.h) \ - include/linux/cputime.h \ - arch/x86/include/generated/asm/cputime.h \ - include/asm-generic/cputime.h \ - $(wildcard include/config/virt/cpu/accounting.h) \ - include/asm-generic/cputime_jiffies.h \ - include/linux/smp.h \ - $(wildcard include/config/up/late/init.h) \ - include/linux/llist.h \ - $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ - arch/x86/include/asm/smp.h \ - $(wildcard include/config/x86/io/apic.h) \ - $(wildcard include/config/x86/32/smp.h) \ - $(wildcard include/config/debug/nmi/selftest.h) \ - arch/x86/include/asm/mpspec.h \ - $(wildcard include/config/eisa.h) \ - $(wildcard include/config/x86/mpparse.h) \ - arch/x86/include/asm/mpspec_def.h \ - arch/x86/include/asm/x86_init.h \ - arch/x86/include/uapi/asm/bootparam.h \ - include/linux/screen_info.h \ - include/uapi/linux/screen_info.h \ - include/linux/apm_bios.h \ - include/uapi/linux/apm_bios.h \ - include/linux/edd.h \ - include/uapi/linux/edd.h \ - arch/x86/include/asm/e820.h \ - $(wildcard include/config/efi.h) \ - $(wildcard include/config/hibernation.h) \ - arch/x86/include/uapi/asm/e820.h \ - $(wildcard include/config/x86/pmem/legacy.h) \ - $(wildcard include/config/intel/txt.h) \ - include/linux/ioport.h \ - $(wildcard include/config/memory/hotremove.h) \ - arch/x86/include/asm/ist.h \ - arch/x86/include/uapi/asm/ist.h \ - include/video/edid.h \ - $(wildcard include/config/x86.h) \ - include/uapi/video/edid.h \ - arch/x86/include/asm/apicdef.h \ - arch/x86/include/asm/apic.h \ - $(wildcard include/config/x86/x2apic.h) \ - include/linux/pm.h \ - $(wildcard include/config/vt/console/sleep.h) \ - $(wildcard include/config/pm.h) \ - $(wildcard include/config/pm/sleep.h) \ - $(wildcard include/config/pm/clk.h) \ - $(wildcard include/config/pm/generic/domains.h) \ - arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ - $(wildcard include/config/provide/ohci1394/dma/init.h) \ - $(wildcard include/config/pci/mmconfig.h) \ - $(wildcard include/config/x86/intel/mid.h) \ - arch/x86/include/asm/acpi.h \ - $(wildcard include/config/acpi/apei.h) \ - $(wildcard include/config/acpi.h) \ - $(wildcard include/config/acpi/numa.h) \ - include/acpi/pdc_intel.h \ - arch/x86/include/asm/numa.h \ - $(wildcard include/config/numa/emu.h) \ - arch/x86/include/asm/topology.h \ - include/asm-generic/topology.h \ - $(wildcard include/config/have/memoryless/nodes.h) \ - arch/x86/include/asm/realmode.h \ - $(wildcard include/config/acpi/sleep.h) \ - arch/x86/include/asm/io.h \ - $(wildcard include/config/mtrr.h) \ - arch/x86/include/generated/asm/early_ioremap.h \ - include/asm-generic/early_ioremap.h \ - $(wildcard include/config/generic/early/ioremap.h) \ - include/asm-generic/iomap.h \ - $(wildcard include/config/has/ioport/map.h) \ - $(wildcard include/config/pci.h) \ - $(wildcard include/config/generic/iomap.h) \ - include/asm-generic/pci_iomap.h \ - $(wildcard include/config/no/generic/pci/ioport/map.h) \ - $(wildcard include/config/generic/pci/iomap.h) \ - include/xen/xen.h \ - $(wildcard include/config/xen/dom0.h) \ - $(wildcard include/config/xen/pvh.h) \ - include/xen/interface/xen.h \ - arch/x86/include/asm/xen/interface.h \ - arch/x86/include/asm/xen/interface_64.h \ - arch/x86/include/asm/pvclock-abi.h \ - arch/x86/include/asm/xen/hypervisor.h \ - include/xen/features.h \ - include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ - arch/x86/include/uapi/asm/vsyscall.h \ - include/asm-generic/fixmap.h \ - arch/x86/include/asm/idle.h \ - arch/x86/include/asm/io_apic.h \ - arch/x86/include/asm/irq_vectors.h \ - $(wildcard include/config/have/kvm.h) \ - $(wildcard include/config/pci/msi.h) \ - include/linux/sem.h \ - include/uapi/linux/sem.h \ - include/linux/ipc.h \ - include/linux/uidgid.h \ - $(wildcard include/config/user/ns.h) \ - include/linux/highuid.h \ - include/uapi/linux/ipc.h \ - arch/x86/include/uapi/asm/ipcbuf.h \ - include/uapi/asm-generic/ipcbuf.h \ - arch/x86/include/uapi/asm/sembuf.h \ - include/linux/shm.h \ - include/uapi/linux/shm.h \ - arch/x86/include/uapi/asm/shmbuf.h \ - include/uapi/asm-generic/shmbuf.h \ - arch/x86/include/asm/shmparam.h \ - include/linux/signal.h \ - $(wildcard include/config/old/sigaction.h) \ - include/uapi/linux/signal.h \ - arch/x86/include/asm/signal.h \ - arch/x86/include/uapi/asm/signal.h \ - include/uapi/asm-generic/signal-defs.h \ - arch/x86/include/uapi/asm/siginfo.h \ - include/asm-generic/siginfo.h \ - include/uapi/asm-generic/siginfo.h \ - include/linux/pid.h \ - include/linux/percpu.h \ - $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ - $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/mmdebug.h \ - $(wildcard include/config/debug/vm.h) \ - include/linux/pfn.h \ - include/linux/topology.h \ - $(wildcard include/config/use/percpu/numa/node/id.h) \ - include/linux/mmzone.h \ - $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/cma.h) \ - $(wildcard include/config/memory/isolation.h) \ - $(wildcard include/config/zone/dma.h) \ - $(wildcard include/config/zone/dma32.h) \ - $(wildcard include/config/zone/device.h) \ - $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/flat/node/mem/map.h) \ - $(wildcard include/config/page/extension.h) \ - $(wildcard include/config/no/bootmem.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ - $(wildcard include/config/have/memory/present.h) \ - $(wildcard include/config/need/node/memmap/size.h) \ - $(wildcard include/config/have/memblock/node/map.h) \ - $(wildcard include/config/need/multiple/nodes.h) \ - $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ - $(wildcard include/config/sparsemem/extreme.h) \ - $(wildcard include/config/have/arch/pfn/valid.h) \ - $(wildcard include/config/holes/in/zone.h) \ - $(wildcard include/config/arch/has/holes/memorymodel.h) \ - include/linux/pageblock-flags.h \ - $(wildcard include/config/hugetlb/page/size/variable.h) \ - include/linux/memory_hotplug.h \ - $(wildcard include/config/have/arch/nodedata/extension.h) \ - $(wildcard include/config/have/bootmem/info/node.h) \ - arch/x86/include/asm/mmzone.h \ - arch/x86/include/asm/mmzone_64.h \ - include/linux/proportions.h \ - include/linux/percpu_counter.h \ - include/linux/gfp.h \ - include/linux/seccomp.h \ - $(wildcard include/config/seccomp.h) \ - $(wildcard include/config/have/arch/seccomp/filter.h) \ - $(wildcard include/config/seccomp/filter.h) \ - $(wildcard include/config/checkpoint/restore.h) \ - include/uapi/linux/seccomp.h \ - arch/x86/include/asm/seccomp.h \ - arch/x86/include/asm/unistd.h \ - $(wildcard include/config/x86/x32/abi.h) \ - arch/x86/include/uapi/asm/unistd.h \ - arch/x86/include/generated/uapi/asm/unistd_64.h \ - arch/x86/include/generated/asm/unistd_64_x32.h \ - arch/x86/include/asm/ia32_unistd.h \ - arch/x86/include/generated/asm/unistd_32_ia32.h \ - include/asm-generic/seccomp.h \ - include/uapi/linux/unistd.h \ - include/linux/rculist.h \ - include/linux/rtmutex.h \ - $(wildcard include/config/debug/rt/mutexes.h) \ - include/linux/resource.h \ - include/uapi/linux/resource.h \ - arch/x86/include/uapi/asm/resource.h \ - include/asm-generic/resource.h \ - include/uapi/asm-generic/resource.h \ - include/linux/hrtimer.h \ - $(wildcard include/config/high/res/timers.h) \ - $(wildcard include/config/time/low/res.h) \ - $(wildcard include/config/timerfd.h) \ - include/linux/timerqueue.h \ - include/linux/task_io_accounting.h \ - $(wildcard include/config/task/io/accounting.h) \ - include/linux/latencytop.h \ - include/linux/cred.h \ - $(wildcard include/config/debug/credentials.h) \ - $(wildcard include/config/security.h) \ - include/linux/key.h \ - include/linux/assoc_array.h \ - $(wildcard include/config/associative/array.h) \ - include/linux/selinux.h \ - $(wildcard include/config/security/selinux.h) \ - include/uapi/linux/magic.h \ - include/linux/cgroup-defs.h \ - include/uapi/linux/limits.h \ - include/linux/idr.h \ - include/linux/percpu-refcount.h \ - include/linux/percpu-rwsem.h \ - include/linux/rcu_sync.h \ - include/linux/cgroup_subsys.h \ - $(wildcard include/config/cgroup/cpuacct.h) \ - $(wildcard include/config/blk/cgroup.h) \ - $(wildcard include/config/cgroup/device.h) \ - $(wildcard include/config/cgroup/freezer.h) \ - $(wildcard include/config/cgroup/net/classid.h) \ - $(wildcard include/config/cgroup/perf.h) \ - $(wildcard include/config/cgroup/net/prio.h) \ - $(wildcard include/config/cgroup/hugetlb.h) \ - $(wildcard include/config/cgroup/pids.h) \ - $(wildcard include/config/cgroup/debug.h) \ - include/linux/module.h \ - $(wildcard include/config/module/sig.h) \ - $(wildcard include/config/modules/tree/lookup.h) \ - $(wildcard include/config/kallsyms.h) \ - $(wildcard include/config/tracepoints.h) \ - $(wildcard include/config/event/tracing.h) \ - $(wildcard include/config/livepatch.h) \ - $(wildcard include/config/module/unload.h) \ - $(wildcard include/config/constructors.h) \ - $(wildcard include/config/debug/set/module/ronx.h) \ - include/linux/stat.h \ - arch/x86/include/uapi/asm/stat.h \ - include/uapi/linux/stat.h \ - include/linux/kmod.h \ - include/linux/elf.h \ - arch/x86/include/asm/elf.h \ - arch/x86/include/asm/user.h \ - arch/x86/include/asm/user_64.h \ - arch/x86/include/asm/vdso.h \ - $(wildcard include/config/x86/x32.h) \ - include/uapi/linux/elf.h \ - include/uapi/linux/elf-em.h \ - include/linux/kobject.h \ - $(wildcard include/config/uevent/helper.h) \ - $(wildcard include/config/debug/kobject/release.h) \ - include/linux/sysfs.h \ - include/linux/kernfs.h \ - $(wildcard include/config/kernfs.h) \ - include/linux/kobject_ns.h \ - include/linux/kref.h \ - include/linux/moduleparam.h \ - $(wildcard include/config/alpha.h) \ - $(wildcard include/config/ia64.h) \ - $(wildcard include/config/ppc64.h) \ - include/linux/rbtree_latch.h \ - arch/x86/include/asm/module.h \ - $(wildcard include/config/m586.h) \ - $(wildcard include/config/m586tsc.h) \ - $(wildcard include/config/m586mmx.h) \ - $(wildcard include/config/mcore2.h) \ - $(wildcard include/config/m686.h) \ - $(wildcard include/config/mpentiumii.h) \ - $(wildcard include/config/mpentiumiii.h) \ - $(wildcard include/config/mpentiumm.h) \ - $(wildcard include/config/mpentium4.h) \ - $(wildcard include/config/mk6.h) \ - $(wildcard include/config/mk8.h) \ - $(wildcard include/config/melan.h) \ - $(wildcard include/config/mcrusoe.h) \ - $(wildcard include/config/mefficeon.h) \ - $(wildcard include/config/mwinchipc6.h) \ - $(wildcard include/config/mwinchip3d.h) \ - $(wildcard include/config/mcyrixiii.h) \ - $(wildcard include/config/mviac3/2.h) \ - $(wildcard include/config/mviac7.h) \ - $(wildcard include/config/mgeodegx1.h) \ - $(wildcard include/config/mgeode/lx.h) \ - include/asm-generic/module.h \ - $(wildcard include/config/have/mod/arch/specific.h) \ - $(wildcard include/config/modules/use/elf/rel.h) \ - $(wildcard include/config/modules/use/elf/rela.h) \ - -/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o) - -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o): diff --git a/common/utils/.utime.o.cmd b/common/utils/.utime.o.cmd deleted file mode 100644 index ac8c93d..0000000 --- a/common/utils/.utime.o.cmd +++ /dev/null @@ -1,622 +0,0 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.utime.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(utime)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_utime.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.c - -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.c - -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o := \ - include/linux/module.h \ - $(wildcard include/config/modules.h) \ - $(wildcard include/config/sysfs.h) \ - $(wildcard include/config/module/sig.h) \ - $(wildcard include/config/modules/tree/lookup.h) \ - $(wildcard include/config/unused/symbols.h) \ - $(wildcard include/config/generic/bug.h) \ - $(wildcard include/config/kallsyms.h) \ - $(wildcard include/config/smp.h) \ - $(wildcard include/config/tracepoints.h) \ - $(wildcard include/config/tracing.h) \ - $(wildcard include/config/event/tracing.h) \ - $(wildcard include/config/ftrace/mcount/record.h) \ - $(wildcard include/config/livepatch.h) \ - $(wildcard include/config/module/unload.h) \ - $(wildcard include/config/constructors.h) \ - $(wildcard include/config/debug/set/module/ronx.h) \ - include/linux/list.h \ - $(wildcard include/config/debug/list.h) \ - include/linux/types.h \ - $(wildcard include/config/have/uid16.h) \ - $(wildcard include/config/uid16.h) \ - $(wildcard include/config/lbdaf.h) \ - $(wildcard include/config/arch/dma/addr/t/64bit.h) \ - $(wildcard include/config/phys/addr/t/64bit.h) \ - $(wildcard include/config/64bit.h) \ - include/uapi/linux/types.h \ - arch/x86/include/uapi/asm/types.h \ - include/uapi/asm-generic/types.h \ - include/asm-generic/int-ll64.h \ - include/uapi/asm-generic/int-ll64.h \ - arch/x86/include/uapi/asm/bitsperlong.h \ - include/asm-generic/bitsperlong.h \ - include/uapi/asm-generic/bitsperlong.h \ - include/uapi/linux/posix_types.h \ - include/linux/stddef.h \ - include/uapi/linux/stddef.h \ - include/linux/compiler.h \ - $(wildcard include/config/sparse/rcu/pointer.h) \ - $(wildcard include/config/trace/branch/profiling.h) \ - $(wildcard include/config/profile/all/branches.h) \ - $(wildcard include/config/kasan.h) \ - $(wildcard include/config/enable/must/check.h) \ - $(wildcard include/config/enable/warn/deprecated.h) \ - $(wildcard include/config/kprobes.h) \ - include/linux/compiler-gcc.h \ - $(wildcard include/config/arch/supports/optimized/inlining.h) \ - $(wildcard include/config/optimize/inlining.h) \ - $(wildcard include/config/gcov/kernel.h) \ - $(wildcard include/config/arch/use/builtin/bswap.h) \ - arch/x86/include/asm/posix_types.h \ - $(wildcard include/config/x86/32.h) \ - arch/x86/include/uapi/asm/posix_types_64.h \ - include/uapi/asm-generic/posix_types.h \ - include/linux/poison.h \ - $(wildcard include/config/illegal/pointer/value.h) \ - include/uapi/linux/const.h \ - include/linux/kernel.h \ - $(wildcard include/config/preempt/voluntary.h) \ - $(wildcard include/config/debug/atomic/sleep.h) \ - $(wildcard include/config/mmu.h) \ - $(wildcard include/config/prove/locking.h) \ - $(wildcard include/config/panic/timeout.h) \ - /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ - include/linux/linkage.h \ - include/linux/stringify.h \ - include/linux/export.h \ - $(wildcard include/config/have/underscore/symbol/prefix.h) \ - $(wildcard include/config/modversions.h) \ - arch/x86/include/asm/linkage.h \ - $(wildcard include/config/x86/64.h) \ - $(wildcard include/config/x86/alignment/16.h) \ - include/linux/bitops.h \ - arch/x86/include/asm/bitops.h \ - $(wildcard include/config/x86/cmov.h) \ - arch/x86/include/asm/alternative.h \ - $(wildcard include/config/paravirt.h) \ - arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ - arch/x86/include/asm/rmwcc.h \ - arch/x86/include/asm/barrier.h \ - $(wildcard include/config/x86/ppro/fence.h) \ - arch/x86/include/asm/nops.h \ - $(wildcard include/config/mk7.h) \ - $(wildcard include/config/x86/p6/nop.h) \ - include/asm-generic/barrier.h \ - include/asm-generic/bitops/find.h \ - $(wildcard include/config/generic/find/first/bit.h) \ - include/asm-generic/bitops/sched.h \ - arch/x86/include/asm/arch_hweight.h \ - arch/x86/include/asm/cpufeatures.h \ - arch/x86/include/asm/required-features.h \ - $(wildcard include/config/x86/minimum/cpu/family.h) \ - $(wildcard include/config/math/emulation.h) \ - $(wildcard include/config/x86/cmpxchg64.h) \ - $(wildcard include/config/x86/use/3dnow.h) \ - $(wildcard include/config/matom.h) \ - arch/x86/include/asm/disabled-features.h \ - $(wildcard include/config/x86/intel/mpx.h) \ - include/asm-generic/bitops/const_hweight.h \ - include/asm-generic/bitops/le.h \ - arch/x86/include/uapi/asm/byteorder.h \ - include/linux/byteorder/little_endian.h \ - include/uapi/linux/byteorder/little_endian.h \ - include/linux/swab.h \ - include/uapi/linux/swab.h \ - arch/x86/include/uapi/asm/swab.h \ - include/linux/byteorder/generic.h \ - include/asm-generic/bitops/ext2-atomic-setbit.h \ - include/linux/log2.h \ - $(wildcard include/config/arch/has/ilog2/u32.h) \ - $(wildcard include/config/arch/has/ilog2/u64.h) \ - include/linux/typecheck.h \ - include/linux/printk.h \ - $(wildcard include/config/message/loglevel/default.h) \ - $(wildcard include/config/early/printk.h) \ - $(wildcard include/config/printk.h) \ - $(wildcard include/config/dynamic/debug.h) \ - include/linux/init.h \ - $(wildcard include/config/broken/rodata.h) \ - $(wildcard include/config/lto.h) \ - include/linux/kern_levels.h \ - include/linux/cache.h \ - $(wildcard include/config/arch/has/cache/line/size.h) \ - include/uapi/linux/kernel.h \ - include/uapi/linux/sysinfo.h \ - include/linux/dynamic_debug.h \ - include/linux/stat.h \ - arch/x86/include/uapi/asm/stat.h \ - include/uapi/linux/stat.h \ - include/linux/time.h \ - $(wildcard include/config/arch/uses/gettimeoffset.h) \ - include/linux/seqlock.h \ - $(wildcard include/config/debug/lock/alloc.h) \ - include/linux/spinlock.h \ - $(wildcard include/config/debug/spinlock.h) \ - $(wildcard include/config/generic/lockbreak.h) \ - $(wildcard include/config/preempt.h) \ - include/linux/preempt.h \ - $(wildcard include/config/preempt/count.h) \ - $(wildcard include/config/debug/preempt.h) \ - $(wildcard include/config/preempt/tracer.h) \ - $(wildcard include/config/preempt/notifiers.h) \ - arch/x86/include/asm/preempt.h \ - arch/x86/include/asm/percpu.h \ - $(wildcard include/config/x86/64/smp.h) \ - include/asm-generic/percpu.h \ - $(wildcard include/config/have/setup/per/cpu/area.h) \ - include/linux/threads.h \ - $(wildcard include/config/base/small.h) \ - include/linux/percpu-defs.h \ - $(wildcard include/config/debug/force/weak/per/cpu.h) \ - include/linux/thread_info.h \ - $(wildcard include/config/compat.h) \ - $(wildcard include/config/debug/stack/usage.h) \ - include/linux/bug.h \ - arch/x86/include/asm/bug.h \ - $(wildcard include/config/debug/bugverbose.h) \ - include/asm-generic/bug.h \ - $(wildcard include/config/bug.h) \ - $(wildcard include/config/generic/bug/relative/pointers.h) \ - arch/x86/include/asm/thread_info.h \ - $(wildcard include/config/ia32/emulation.h) \ - arch/x86/include/asm/page.h \ - arch/x86/include/asm/page_64.h \ - $(wildcard include/config/debug/virtual.h) \ - $(wildcard include/config/flatmem.h) \ - $(wildcard include/config/x86/vsyscall/emulation.h) \ - include/linux/range.h \ - include/asm-generic/memory_model.h \ - $(wildcard include/config/discontigmem.h) \ - $(wildcard include/config/sparsemem/vmemmap.h) \ - include/asm-generic/getorder.h \ - arch/x86/include/asm/cpufeature.h \ - $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ - arch/x86/include/asm/processor.h \ - $(wildcard include/config/m486.h) \ - $(wildcard include/config/xen.h) \ - arch/x86/include/asm/math_emu.h \ - arch/x86/include/uapi/asm/sigcontext.h \ - arch/x86/include/asm/current.h \ - arch/x86/include/asm/msr.h \ - arch/x86/include/asm/msr-index.h \ - $(wildcard include/config/tdp/nominal.h) \ - $(wildcard include/config/tdp/level/1.h) \ - $(wildcard include/config/tdp/level/2.h) \ - $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ - arch/x86/include/uapi/asm/errno.h \ - include/uapi/asm-generic/errno.h \ - include/uapi/asm-generic/errno-base.h \ - arch/x86/include/asm/cpumask.h \ - include/linux/cpumask.h \ - $(wildcard include/config/cpumask/offstack.h) \ - $(wildcard include/config/hotplug/cpu.h) \ - $(wildcard include/config/debug/per/cpu/maps.h) \ - include/linux/bitmap.h \ - include/linux/string.h \ - $(wildcard include/config/binary/printf.h) \ - include/uapi/linux/string.h \ - arch/x86/include/asm/string.h \ - arch/x86/include/asm/string_64.h \ - arch/x86/include/uapi/asm/msr.h \ - include/uapi/linux/ioctl.h \ - arch/x86/include/uapi/asm/ioctl.h \ - include/asm-generic/ioctl.h \ - include/uapi/asm-generic/ioctl.h \ - arch/x86/include/asm/paravirt.h \ - arch/x86/include/asm/special_insns.h \ - arch/x86/include/asm/fpu/types.h \ - include/linux/personality.h \ - include/uapi/linux/personality.h \ - include/linux/math64.h \ - $(wildcard include/config/arch/supports/int128.h) \ - arch/x86/include/asm/div64.h \ - include/asm-generic/div64.h \ - include/linux/err.h \ - include/linux/irqflags.h \ - $(wildcard include/config/trace/irqflags.h) \ - $(wildcard include/config/irqsoff/tracer.h) \ - $(wildcard include/config/trace/irqflags/support.h) \ - arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ - include/linux/bottom_half.h \ - include/linux/spinlock_types.h \ - include/linux/lockdep.h \ - $(wildcard include/config/lockdep.h) \ - $(wildcard include/config/lock/stat.h) \ - include/linux/rwlock_types.h \ - arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ - arch/x86/include/asm/qspinlock.h \ - include/asm-generic/qspinlock.h \ - arch/x86/include/asm/qrwlock.h \ - include/asm-generic/qrwlock.h \ - include/linux/rwlock.h \ - include/linux/spinlock_api_smp.h \ - $(wildcard include/config/inline/spin/lock.h) \ - $(wildcard include/config/inline/spin/lock/bh.h) \ - $(wildcard include/config/inline/spin/lock/irq.h) \ - $(wildcard include/config/inline/spin/lock/irqsave.h) \ - $(wildcard include/config/inline/spin/trylock.h) \ - $(wildcard include/config/inline/spin/trylock/bh.h) \ - $(wildcard include/config/uninline/spin/unlock.h) \ - $(wildcard include/config/inline/spin/unlock/bh.h) \ - $(wildcard include/config/inline/spin/unlock/irq.h) \ - $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ - include/linux/rwlock_api_smp.h \ - $(wildcard include/config/inline/read/lock.h) \ - $(wildcard include/config/inline/write/lock.h) \ - $(wildcard include/config/inline/read/lock/bh.h) \ - $(wildcard include/config/inline/write/lock/bh.h) \ - $(wildcard include/config/inline/read/lock/irq.h) \ - $(wildcard include/config/inline/write/lock/irq.h) \ - $(wildcard include/config/inline/read/lock/irqsave.h) \ - $(wildcard include/config/inline/write/lock/irqsave.h) \ - $(wildcard include/config/inline/read/trylock.h) \ - $(wildcard include/config/inline/write/trylock.h) \ - $(wildcard include/config/inline/read/unlock.h) \ - $(wildcard include/config/inline/write/unlock.h) \ - $(wildcard include/config/inline/read/unlock/bh.h) \ - $(wildcard include/config/inline/write/unlock/bh.h) \ - $(wildcard include/config/inline/read/unlock/irq.h) \ - $(wildcard include/config/inline/write/unlock/irq.h) \ - $(wildcard include/config/inline/read/unlock/irqrestore.h) \ - $(wildcard include/config/inline/write/unlock/irqrestore.h) \ - include/linux/time64.h \ - include/uapi/linux/time.h \ - include/linux/uidgid.h \ - $(wildcard include/config/multiuser.h) \ - $(wildcard include/config/user/ns.h) \ - include/linux/highuid.h \ - include/linux/kmod.h \ - include/linux/gfp.h \ - $(wildcard include/config/highmem.h) \ - $(wildcard include/config/zone/dma.h) \ - $(wildcard include/config/zone/dma32.h) \ - $(wildcard include/config/zone/device.h) \ - $(wildcard include/config/numa.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ - $(wildcard include/config/pm/sleep.h) \ - $(wildcard include/config/cma.h) \ - include/linux/mmdebug.h \ - $(wildcard include/config/debug/vm.h) \ - include/linux/mmzone.h \ - $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ - $(wildcard include/config/memcg.h) \ - $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ - $(wildcard include/config/flat/node/mem/map.h) \ - $(wildcard include/config/page/extension.h) \ - $(wildcard include/config/no/bootmem.h) \ - $(wildcard include/config/numa/balancing.h) \ - $(wildcard include/config/have/memory/present.h) \ - $(wildcard include/config/have/memoryless/nodes.h) \ - $(wildcard include/config/need/node/memmap/size.h) \ - $(wildcard include/config/have/memblock/node/map.h) \ - $(wildcard include/config/need/multiple/nodes.h) \ - $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ - $(wildcard include/config/sparsemem/extreme.h) \ - $(wildcard include/config/have/arch/pfn/valid.h) \ - $(wildcard include/config/holes/in/zone.h) \ - $(wildcard include/config/arch/has/holes/memorymodel.h) \ - include/linux/wait.h \ - include/uapi/linux/wait.h \ - include/linux/numa.h \ - $(wildcard include/config/nodes/shift.h) \ - include/linux/nodemask.h \ - $(wildcard include/config/movable/node.h) \ - include/linux/pageblock-flags.h \ - $(wildcard include/config/hugetlb/page.h) \ - $(wildcard include/config/hugetlb/page/size/variable.h) \ - include/linux/page-flags-layout.h \ - include/generated/bounds.h \ - include/linux/memory_hotplug.h \ - $(wildcard include/config/memory/hotremove.h) \ - $(wildcard include/config/have/arch/nodedata/extension.h) \ - $(wildcard include/config/have/bootmem/info/node.h) \ - include/linux/notifier.h \ - include/linux/errno.h \ - include/uapi/linux/errno.h \ - include/linux/mutex.h \ - $(wildcard include/config/debug/mutexes.h) \ - $(wildcard include/config/mutex/spin/on/owner.h) \ - include/linux/osq_lock.h \ - include/linux/rwsem.h \ - $(wildcard include/config/rwsem/spin/on/owner.h) \ - $(wildcard include/config/rwsem/generic/spinlock.h) \ - arch/x86/include/asm/rwsem.h \ - include/linux/srcu.h \ - include/linux/rcupdate.h \ - $(wildcard include/config/tiny/rcu.h) \ - $(wildcard include/config/tree/rcu.h) \ - $(wildcard include/config/preempt/rcu.h) \ - $(wildcard include/config/rcu/trace.h) \ - $(wildcard include/config/rcu/stall/common.h) \ - $(wildcard include/config/no/hz/full.h) \ - $(wildcard include/config/rcu/nocb/cpu.h) \ - $(wildcard include/config/tasks/rcu.h) \ - $(wildcard include/config/debug/objects/rcu/head.h) \ - $(wildcard include/config/prove/rcu.h) \ - $(wildcard include/config/rcu/boost.h) \ - $(wildcard include/config/rcu/nocb/cpu/all.h) \ - $(wildcard include/config/no/hz/full/sysidle.h) \ - include/linux/completion.h \ - include/linux/debugobjects.h \ - $(wildcard include/config/debug/objects.h) \ - $(wildcard include/config/debug/objects/free.h) \ - include/linux/ktime.h \ - include/linux/jiffies.h \ - include/linux/timex.h \ - include/uapi/linux/timex.h \ - include/uapi/linux/param.h \ - arch/x86/include/uapi/asm/param.h \ - include/asm-generic/param.h \ - $(wildcard include/config/hz.h) \ - include/uapi/asm-generic/param.h \ - arch/x86/include/asm/timex.h \ - arch/x86/include/asm/tsc.h \ - $(wildcard include/config/x86/tsc.h) \ - include/generated/timeconst.h \ - include/linux/timekeeping.h \ - include/linux/rcutree.h \ - include/linux/workqueue.h \ - $(wildcard include/config/debug/objects/work.h) \ - $(wildcard include/config/freezer.h) \ - include/linux/timer.h \ - $(wildcard include/config/timer/stats.h) \ - $(wildcard include/config/debug/objects/timers.h) \ - $(wildcard include/config/no/hz/common.h) \ - include/linux/sysctl.h \ - $(wildcard include/config/sysctl.h) \ - include/linux/rbtree.h \ - include/uapi/linux/sysctl.h \ - arch/x86/include/asm/mmzone.h \ - arch/x86/include/asm/mmzone_64.h \ - arch/x86/include/asm/smp.h \ - $(wildcard include/config/x86/io/apic.h) \ - $(wildcard include/config/x86/32/smp.h) \ - $(wildcard include/config/debug/nmi/selftest.h) \ - arch/x86/include/asm/mpspec.h \ - $(wildcard include/config/eisa.h) \ - $(wildcard include/config/x86/mpparse.h) \ - arch/x86/include/asm/mpspec_def.h \ - arch/x86/include/asm/x86_init.h \ - arch/x86/include/uapi/asm/bootparam.h \ - include/linux/screen_info.h \ - include/uapi/linux/screen_info.h \ - include/linux/apm_bios.h \ - include/uapi/linux/apm_bios.h \ - include/linux/edd.h \ - include/uapi/linux/edd.h \ - arch/x86/include/asm/e820.h \ - $(wildcard include/config/efi.h) \ - $(wildcard include/config/hibernation.h) \ - arch/x86/include/uapi/asm/e820.h \ - $(wildcard include/config/x86/pmem/legacy.h) \ - $(wildcard include/config/intel/txt.h) \ - include/linux/ioport.h \ - arch/x86/include/asm/ist.h \ - arch/x86/include/uapi/asm/ist.h \ - include/video/edid.h \ - $(wildcard include/config/x86.h) \ - include/uapi/video/edid.h \ - arch/x86/include/asm/apicdef.h \ - arch/x86/include/asm/apic.h \ - $(wildcard include/config/x86/x2apic.h) \ - include/linux/pm.h \ - $(wildcard include/config/vt/console/sleep.h) \ - $(wildcard include/config/pm.h) \ - $(wildcard include/config/pm/clk.h) \ - $(wildcard include/config/pm/generic/domains.h) \ - arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ - $(wildcard include/config/provide/ohci1394/dma/init.h) \ - $(wildcard include/config/pci/mmconfig.h) \ - $(wildcard include/config/x86/intel/mid.h) \ - arch/x86/include/asm/acpi.h \ - $(wildcard include/config/acpi/apei.h) \ - $(wildcard include/config/acpi.h) \ - $(wildcard include/config/acpi/numa.h) \ - include/acpi/pdc_intel.h \ - arch/x86/include/asm/numa.h \ - $(wildcard include/config/numa/emu.h) \ - arch/x86/include/asm/topology.h \ - include/asm-generic/topology.h \ - arch/x86/include/asm/mmu.h \ - $(wildcard include/config/modify/ldt/syscall.h) \ - arch/x86/include/asm/realmode.h \ - $(wildcard include/config/acpi/sleep.h) \ - arch/x86/include/asm/io.h \ - $(wildcard include/config/mtrr.h) \ - arch/x86/include/generated/asm/early_ioremap.h \ - include/asm-generic/early_ioremap.h \ - $(wildcard include/config/generic/early/ioremap.h) \ - include/asm-generic/iomap.h \ - $(wildcard include/config/has/ioport/map.h) \ - $(wildcard include/config/pci.h) \ - $(wildcard include/config/generic/iomap.h) \ - include/asm-generic/pci_iomap.h \ - $(wildcard include/config/no/generic/pci/ioport/map.h) \ - $(wildcard include/config/generic/pci/iomap.h) \ - include/xen/xen.h \ - $(wildcard include/config/xen/dom0.h) \ - $(wildcard include/config/xen/pvh.h) \ - include/xen/interface/xen.h \ - arch/x86/include/asm/xen/interface.h \ - arch/x86/include/asm/xen/interface_64.h \ - arch/x86/include/asm/pvclock-abi.h \ - arch/x86/include/asm/xen/hypervisor.h \ - include/xen/features.h \ - include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ - arch/x86/include/uapi/asm/vsyscall.h \ - include/asm-generic/fixmap.h \ - arch/x86/include/asm/idle.h \ - arch/x86/include/asm/io_apic.h \ - arch/x86/include/asm/irq_vectors.h \ - $(wildcard include/config/have/kvm.h) \ - $(wildcard include/config/pci/msi.h) \ - include/linux/topology.h \ - $(wildcard include/config/use/percpu/numa/node/id.h) \ - $(wildcard include/config/sched/smt.h) \ - include/linux/smp.h \ - $(wildcard include/config/up/late/init.h) \ - include/linux/llist.h \ - $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ - include/linux/percpu.h \ - $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ - $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ - include/linux/elf.h \ - arch/x86/include/asm/elf.h \ - $(wildcard include/config/x86/x32/abi.h) \ - arch/x86/include/asm/user.h \ - arch/x86/include/asm/user_64.h \ - arch/x86/include/uapi/asm/auxvec.h \ - arch/x86/include/asm/vdso.h \ - $(wildcard include/config/x86/x32.h) \ - include/linux/mm_types.h \ - $(wildcard include/config/split/ptlock/cpus.h) \ - $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ - $(wildcard include/config/have/cmpxchg/double.h) \ - $(wildcard include/config/have/aligned/struct/page.h) \ - $(wildcard include/config/transparent/hugepage.h) \ - $(wildcard include/config/userfaultfd.h) \ - $(wildcard include/config/aio.h) \ - $(wildcard include/config/mmu/notifier.h) \ - include/linux/auxvec.h \ - include/uapi/linux/auxvec.h \ - include/linux/uprobes.h \ - $(wildcard include/config/uprobes.h) \ - arch/x86/include/asm/uprobes.h \ - include/uapi/linux/elf.h \ - include/uapi/linux/elf-em.h \ - include/linux/kobject.h \ - $(wildcard include/config/uevent/helper.h) \ - $(wildcard include/config/debug/kobject/release.h) \ - include/linux/sysfs.h \ - include/linux/kernfs.h \ - $(wildcard include/config/kernfs.h) \ - include/linux/idr.h \ - include/linux/kobject_ns.h \ - include/linux/kref.h \ - include/linux/moduleparam.h \ - $(wildcard include/config/alpha.h) \ - $(wildcard include/config/ia64.h) \ - $(wildcard include/config/ppc64.h) \ - include/linux/rbtree_latch.h \ - arch/x86/include/asm/module.h \ - $(wildcard include/config/m586.h) \ - $(wildcard include/config/m586tsc.h) \ - $(wildcard include/config/m586mmx.h) \ - $(wildcard include/config/mcore2.h) \ - $(wildcard include/config/m686.h) \ - $(wildcard include/config/mpentiumii.h) \ - $(wildcard include/config/mpentiumiii.h) \ - $(wildcard include/config/mpentiumm.h) \ - $(wildcard include/config/mpentium4.h) \ - $(wildcard include/config/mk6.h) \ - $(wildcard include/config/mk8.h) \ - $(wildcard include/config/melan.h) \ - $(wildcard include/config/mcrusoe.h) \ - $(wildcard include/config/mefficeon.h) \ - $(wildcard include/config/mwinchipc6.h) \ - $(wildcard include/config/mwinchip3d.h) \ - $(wildcard include/config/mcyrixiii.h) \ - $(wildcard include/config/mviac3/2.h) \ - $(wildcard include/config/mviac7.h) \ - $(wildcard include/config/mgeodegx1.h) \ - $(wildcard include/config/mgeode/lx.h) \ - include/asm-generic/module.h \ - $(wildcard include/config/have/mod/arch/specific.h) \ - $(wildcard include/config/modules/use/elf/rel.h) \ - $(wildcard include/config/modules/use/elf/rela.h) \ - include/linux/slab.h \ - $(wildcard include/config/debug/slab.h) \ - $(wildcard include/config/failslab.h) \ - $(wildcard include/config/slab.h) \ - $(wildcard include/config/slub.h) \ - $(wildcard include/config/slob.h) \ - include/linux/kmemleak.h \ - $(wildcard include/config/debug/kmemleak.h) \ - include/linux/kasan.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ - include/generated/uapi/linux/version.h \ - include/linux/semaphore.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ - $(wildcard include/config/enable/msg.h) \ - $(wildcard include/config/enable/debug.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ - -/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o) - -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o): diff --git a/devices/bluedbm/.6221.tmp b/devices/bluedbm/.6221.tmp new file mode 100644 index 0000000000000000000000000000000000000000..965c5e501c8d2a8c9a69c4e3e6202d134ddf7aa8 GIT binary patch literal 944 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 reserved +[ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable +[ 0.000000] e820: last_pfn = 0x106f000 max_arch_pfn = 0x400000000 +[ 0.000000] MTRR default type: write-back +[ 0.000000] MTRR fixed ranges enabled: +[ 0.000000] 00000-9FFFF write-back +[ 0.000000] A0000-BFFFF uncachable +[ 0.000000] C0000-FFFFF write-protect +[ 0.000000] MTRR variable ranges enabled: +[ 0.000000] 0 base 00C0000000 mask 7FC0000000 uncachable +[ 0.000000] 1 base 00A0000000 mask 7FE0000000 uncachable +[ 0.000000] 2 base 0090000000 mask 7FF0000000 uncachable +[ 0.000000] 3 base 008C000000 mask 7FFC000000 uncachable +[ 0.000000] 4 base 008B800000 mask 7FFF800000 uncachable +[ 0.000000] 5 disabled +[ 0.000000] 6 disabled +[ 0.000000] 7 disabled +[ 0.000000] 8 disabled +[ 0.000000] 9 disabled +[ 0.000000] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WC UC- WT +[ 0.000000] e820: last_pfn = 0x8b400 max_arch_pfn = 0x400000000 +[ 0.000000] found SMP MP-table at [mem 0x000fcc70-0x000fcc7f] mapped at [ffff8800000fcc70] +[ 0.000000] Scanning 1 areas for low memory corruption +[ 0.000000] Base memory trampoline at [ffff880000096000] 96000 size 24576 +[ 0.000000] Using GB pages for direct mapping +[ 0.000000] BRK [0x03201000, 0x03201fff] PGTABLE +[ 0.000000] BRK [0x03202000, 0x03202fff] PGTABLE +[ 0.000000] BRK [0x03203000, 0x03203fff] PGTABLE +[ 0.000000] BRK [0x03204000, 0x03204fff] PGTABLE +[ 0.000000] BRK [0x03205000, 0x03205fff] PGTABLE +[ 0.000000] BRK [0x03206000, 0x03206fff] PGTABLE +[ 0.000000] RAMDISK: [mem 0x33aaa000-0x35d4cfff] +[ 0.000000] ACPI: Early table checksum verification disabled +[ 0.000000] ACPI: RSDP 0x000000008AD5C000 000024 (v02 ALASKA) +[ 0.000000] ACPI: XSDT 0x000000008AD5C098 0000B4 (v01 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: FACP 0x000000008AD7E928 00010C (v05 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: DSDT 0x000000008AD5C1E8 02273A (v02 ALASKA A M I 01072009 INTL 20120913) +[ 0.000000] ACPI: FACS 0x000000008ADA0F80 000040 +[ 0.000000] ACPI: APIC 0x000000008AD7EA38 000084 (v03 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: FPDT 0x000000008AD7EAC0 000044 (v01 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: FIDT 0x000000008AD7EB08 00009C (v01 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: MCFG 0x000000008AD7EBA8 00003C (v01 ALASKA A M I 01072009 MSFT 00000097) +[ 0.000000] ACPI: HPET 0x000000008AD7EBE8 000038 (v01 ALASKA A M I 01072009 AMI. 0005000B) +[ 0.000000] ACPI: SSDT 0x000000008AD7EC20 00036D (v01 SataRe SataTabl 00001000 INTL 20120913) +[ 0.000000] ACPI: LPIT 0x000000008AD7EF90 000094 (v01 INTEL SKL 00000000 MSFT 0000005F) +[ 0.000000] ACPI: SSDT 0x000000008AD7F028 000248 (v02 INTEL sensrhub 00000000 INTL 20120913) +[ 0.000000] ACPI: SSDT 0x000000008AD7F270 002BAE (v02 INTEL PtidDevc 00001000 INTL 20120913) +[ 0.000000] ACPI: SSDT 0x000000008AD81E20 000C45 (v02 INTEL Ther_Rvp 00001000 INTL 20120913) +[ 0.000000] ACPI: DBGP 0x000000008AD82A68 000034 (v01 INTEL 00000000 MSFT 0000005F) +[ 0.000000] ACPI: DBG2 0x000000008AD82AA0 000054 (v00 INTEL 00000000 MSFT 0000005F) +[ 0.000000] ACPI: SSDT 0x000000008AD82AF8 000615 (v02 INTEL xh_rvp08 00000000 INTL 20120913) +[ 0.000000] ACPI: SSDT 0x000000008AD83110 0053B2 (v02 SaSsdt SaSsdt 00003000 INTL 20120913) +[ 0.000000] ACPI: UEFI 0x000000008AD884C8 000042 (v01 00000000 00000000) +[ 0.000000] ACPI: SSDT 0x000000008AD88510 000E9A (v02 CpuRef CpuSsdt 00003000 INTL 20120913) +[ 0.000000] ACPI: BGRT 0x000000008AD893B0 000038 (v01 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: Local APIC address 0xfee00000 +[ 0.000000] No NUMA configuration found +[ 0.000000] Faking a node at [mem 0x0000000000000000-0x000000106effffff] +[ 0.000000] NODE_DATA(0) allocated [mem 0x106eff6000-0x106effafff] +[ 0.000000] Zone ranges: +[ 0.000000] DMA [mem 0x0000000000001000-0x0000000000ffffff] +[ 0.000000] DMA32 [mem 0x0000000001000000-0x00000000ffffffff] +[ 0.000000] Normal [mem 0x0000000100000000-0x000000106effffff] +[ 0.000000] Device empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000000001000-0x0000000000057fff] +[ 0.000000] node 0: [mem 0x0000000000059000-0x000000000009efff] +[ 0.000000] node 0: [mem 0x0000000000100000-0x000000008277cfff] +[ 0.000000] node 0: [mem 0x00000000827a8000-0x00000000827f9fff] +[ 0.000000] node 0: [mem 0x000000008303b000-0x000000008a2a5fff] +[ 0.000000] node 0: [mem 0x000000008a583000-0x000000008a749fff] +[ 0.000000] node 0: [mem 0x000000008b3ff000-0x000000008b3fffff] +[ 0.000000] node 0: [mem 0x0000000100000000-0x000000106effffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000106effffff] +[ 0.000000] On node 0 totalpages: 16747423 +[ 0.000000] DMA zone: 64 pages used for memmap +[ 0.000000] DMA zone: 26 pages reserved +[ 0.000000] DMA zone: 3997 pages, LIFO batch:0 +[ 0.000000] DMA32 zone: 8753 pages used for memmap +[ 0.000000] DMA32 zone: 560130 pages, LIFO batch:31 +[ 0.000000] Normal zone: 252864 pages used for memmap +[ 0.000000] Normal zone: 16183296 pages, LIFO batch:31 +[ 0.000000] Reserving Intel graphics stolen memory at 0x8c000000-0x8fffffff +[ 0.000000] ACPI: PM-Timer IO Port: 0x1808 +[ 0.000000] ACPI: Local APIC address 0xfee00000 +[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) +[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1]) +[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1]) +[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x04] high edge lint[0x1]) +[ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-119 +[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) +[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) +[ 0.000000] ACPI: IRQ0 used by override. +[ 0.000000] ACPI: IRQ9 used by override. +[ 0.000000] Using ACPI (MADT) for SMP configuration information +[ 0.000000] ACPI: HPET id: 0x8086a701 base: 0xfed00000 +[ 0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs +[ 0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x00058000-0x00058fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff] +[ 0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000fffff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8277d000-0x8277dfff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8277e000-0x827a7fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x827fa000-0x8303afff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8a2a6000-0x8a582fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8a74a000-0x8ada0fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8ada1000-0x8b393fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8b394000-0x8b3fefff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8b400000-0x8bffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8c000000-0x8fffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0x90000000-0xdfffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xe0000000-0xefffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xf0000000-0xfdffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfe000000-0xfe010fff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfe011000-0xfebfffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfec00000-0xfec00fff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfec01000-0xfedfffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfee00000-0xfee00fff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfee01000-0xfeffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xff000000-0xffffffff] +[ 0.000000] e820: [mem 0x90000000-0xdfffffff] available for PCI devices +[ 0.000000] Booting paravirtualized kernel on bare hardware +[ 0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns +[ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:4 nr_node_ids:1 +[ 0.000000] PERCPU: Embedded 33 pages/cpu @ffff88106ec00000 s98008 r8192 d28968 u524288 +[ 0.000000] pcpu-alloc: s98008 r8192 d28968 u524288 alloc=1*2097152 +[ 0.000000] pcpu-alloc: [0] 0 1 2 3 +[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 16485716 +[ 0.000000] Policy zone: Normal +[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-42-generic.efi.signed root=UUID=f5bf218f-1f62-4a63-bcfe-1bdb8e06f01c ro quiet splash vt.handoff=7 +[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) +[ 0.000000] Calgary: detecting Calgary via BIOS EBDA area +[ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! +[ 0.000000] Memory: 65700716K/66989692K available (8409K kernel code, 1283K rwdata, 3944K rodata, 1480K init, 1292K bss, 1288976K reserved, 0K cma-reserved) +[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 +[ 0.000000] Hierarchical RCU implementation. +[ 0.000000] Build-time adjustment of leaf fanout to 64. +[ 0.000000] RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4. +[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=4 +[ 0.000000] NR_IRQS:16640 nr_irqs:1024 16 +[ 0.000000] spurious 8259A interrupt: IRQ7. +[ 0.000000] vt handoff: transparent VT on vt#7 +[ 0.000000] Console: colour dummy device 80x25 +[ 0.000000] console [tty0] enabled +[ 0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635855245 ns +[ 0.000000] hpet clockevent registered +[ 0.000000] tsc: PIT calibration matches HPET. 1 loops +[ 0.000000] tsc: Detected 3311.937 MHz processor +[ 0.000021] Calibrating delay loop (skipped), value calculated using timer frequency.. 6623.87 BogoMIPS (lpj=13247748) +[ 0.000023] pid_max: default: 32768 minimum: 301 +[ 0.000026] ACPI: Core revision 20150930 +[ 0.018747] ACPI Error: [\_SB_.PCI0.XHC_.RHUB.HS11] Namespace lookup failure, AE_NOT_FOUND (20150930/dswload-210) +[ 0.018751] ACPI Exception: AE_NOT_FOUND, During name lookup/catalog (20150930/psobject-227) +[ 0.018779] ACPI Exception: AE_NOT_FOUND, (SSDT:xh_rvp08) while loading table (20150930/tbxfload-193) +[ 0.024974] ACPI Error: 1 table load failures, 7 successful (20150930/tbxfload-214) +[ 0.026880] Security Framework initialized +[ 0.026881] Yama: becoming mindful. +[ 0.026889] AppArmor: AppArmor initialized +[ 0.029457] Dentry cache hash table entries: 8388608 (order: 14, 67108864 bytes) +[ 0.037884] Inode-cache hash table entries: 4194304 (order: 13, 33554432 bytes) +[ 0.041508] Mount-cache hash table entries: 131072 (order: 8, 1048576 bytes) +[ 0.041549] Mountpoint-cache hash table entries: 131072 (order: 8, 1048576 bytes) +[ 0.041828] Initializing cgroup subsys io +[ 0.041830] Initializing cgroup subsys memory +[ 0.041834] Initializing cgroup subsys devices +[ 0.041836] Initializing cgroup subsys freezer +[ 0.041837] Initializing cgroup subsys net_cls +[ 0.041838] Initializing cgroup subsys perf_event +[ 0.041840] Initializing cgroup subsys net_prio +[ 0.041841] Initializing cgroup subsys hugetlb +[ 0.041842] Initializing cgroup subsys pids +[ 0.041859] CPU: Physical Processor ID: 0 +[ 0.041859] CPU: Processor Core ID: 0 +[ 0.042768] mce: CPU supports 10 MCE banks +[ 0.042781] CPU0: Thermal monitoring enabled (TM1) +[ 0.042789] process: using mwait in idle threads +[ 0.042791] Last level iTLB entries: 4KB 128, 2MB 8, 4MB 8 +[ 0.042792] Last level dTLB entries: 4KB 64, 2MB 0, 4MB 0, 1GB 4 +[ 0.043045] Freeing SMP alternatives memory: 32K (ffffffff820b4000 - ffffffff820bc000) +[ 0.047036] ftrace: allocating 32007 entries in 126 pages +[ 0.056641] smpboot: Max logical packages: 1 +[ 0.056643] smpboot: APIC(0) Converting physical 0 to logical package 0 +[ 0.057904] x2apic: IRQ remapping doesn't support X2APIC mode +[ 0.060978] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0 +[ 0.100667] TSC deadline timer enabled +[ 0.100672] smpboot: CPU0: Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz (family: 0x6, model: 0x5e, stepping: 0x3) +[ 0.100683] Performance Events: PEBS fmt3+, 32-deep LBR, Skylake events, full-width counters, Intel PMU driver. +[ 0.100704] ... version: 4 +[ 0.100705] ... bit width: 48 +[ 0.100705] ... generic registers: 8 +[ 0.100706] ... value mask: 0000ffffffffffff +[ 0.100707] ... max period: 0000ffffffffffff +[ 0.100707] ... fixed-purpose events: 3 +[ 0.100708] ... event mask: 00000007000000ff +[ 0.101249] x86: Booting SMP configuration: +[ 0.101250] .... node #0, CPUs: #1 +[ 0.104595] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter. +[ 0.104639] #2 #3 +[ 0.111156] x86: Booted up 1 node, 4 CPUs +[ 0.111159] smpboot: Total of 4 processors activated (26495.49 BogoMIPS) +[ 0.113681] devtmpfs: initialized +[ 0.113720] memory block size : 128MB +[ 0.118569] evm: security.selinux +[ 0.118570] evm: security.SMACK64 +[ 0.118571] evm: security.SMACK64EXEC +[ 0.118571] evm: security.SMACK64TRANSMUTE +[ 0.118572] evm: security.SMACK64MMAP +[ 0.118572] evm: security.ima +[ 0.118573] evm: security.capability +[ 0.118610] PM: Registering ACPI NVS region [mem 0x8277d000-0x8277dfff] (4096 bytes) +[ 0.118611] PM: Registering ACPI NVS region [mem 0x8a74a000-0x8ada0fff] (6647808 bytes) +[ 0.118703] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.118759] pinctrl core: initialized pinctrl subsystem +[ 0.118905] RTC time: 11:25:23, date: 10/23/16 +[ 0.119700] NET: Registered protocol family 16 +[ 0.133540] cpuidle: using governor ladder +[ 0.145542] cpuidle: using governor menu +[ 0.145545] PCCT header not found. +[ 0.145589] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it +[ 0.145590] ACPI: bus type PCI registered +[ 0.145591] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 +[ 0.145639] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) +[ 0.145641] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 +[ 0.145649] PCI: Using configuration type 1 for base access +[ 0.157747] ACPI: Added _OSI(Module Device) +[ 0.157748] ACPI: Added _OSI(Processor Device) +[ 0.157749] ACPI: Added _OSI(3.0 _SCP Extensions) +[ 0.157750] ACPI: Added _OSI(Processor Aggregator Device) +[ 0.162929] ACPI: Executed 21 blocks of module-level executable AML code +[ 0.167095] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored +[ 0.169351] ACPI: Dynamic OEM Table Load: +[ 0.169358] ACPI: SSDT 0xFFFF8810270E3000 0006C3 (v02 PmRef Cpu0Ist 00003000 INTL 20120913) +[ 0.169980] ACPI: \_PR_.CPU0: _OSC native thermal LVT Acked +[ 0.171058] ACPI: Dynamic OEM Table Load: +[ 0.171062] ACPI: SSDT 0xFFFF88102712D800 00037F (v02 PmRef Cpu0Cst 00003001 INTL 20120913) +[ 0.172152] ACPI: Dynamic OEM Table Load: +[ 0.172156] ACPI: SSDT 0xFFFF8810270E3800 0005AA (v02 PmRef ApIst 00003000 INTL 20120913) +[ 0.172902] ACPI: Dynamic OEM Table Load: +[ 0.172905] ACPI: SSDT 0xFFFF881027161600 000119 (v02 PmRef ApCst 00003000 INTL 20120913) +[ 0.174970] ACPI: Interpreter enabled +[ 0.174977] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20150930/hwxface-580) +[ 0.174983] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20150930/hwxface-580) +[ 0.174998] ACPI: (supports S0 S3 S4 S5) +[ 0.174999] ACPI: Using IOAPIC for interrupt routing +[ 0.175022] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug +[ 0.176433] ACPI: Power Resource [PG00] (on) +[ 0.176706] ACPI: Power Resource [PG01] (on) +[ 0.176948] ACPI: Power Resource [PG02] (on) +[ 0.178015] ACPI: Power Resource [WRST] (off) +[ 0.178230] ACPI: Power Resource [WRST] (off) +[ 0.178449] ACPI: Power Resource [WRST] (off) +[ 0.178660] ACPI: Power Resource [WRST] (off) +[ 0.178872] ACPI: Power Resource [WRST] (off) +[ 0.179086] ACPI: Power Resource [WRST] (off) +[ 0.179303] ACPI: Power Resource [WRST] (off) +[ 0.179518] ACPI: Power Resource [WRST] (off) +[ 0.179730] ACPI: Power Resource [WRST] (off) +[ 0.179941] ACPI: Power Resource [WRST] (off) +[ 0.180154] ACPI: Power Resource [WRST] (off) +[ 0.180367] ACPI: Power Resource [WRST] (off) +[ 0.180586] ACPI: Power Resource [WRST] (off) +[ 0.180858] ACPI: Power Resource [WRST] (off) +[ 0.181072] ACPI: Power Resource [WRST] (off) +[ 0.181285] ACPI: Power Resource [WRST] (off) +[ 0.181499] ACPI: Power Resource [WRST] (off) +[ 0.181715] ACPI: Power Resource [WRST] (off) +[ 0.181936] ACPI: Power Resource [WRST] (off) +[ 0.182147] ACPI: Power Resource [WRST] (off) +[ 0.186918] ACPI: Power Resource [FN00] (off) +[ 0.186966] ACPI: Power Resource [FN01] (off) +[ 0.187012] ACPI: Power Resource [FN02] (off) +[ 0.187058] ACPI: Power Resource [FN03] (off) +[ 0.187104] ACPI: Power Resource [FN04] (off) +[ 0.187884] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe]) +[ 0.187888] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] +[ 0.187909] \_SB_.PCI0:_OSC invalid UUID +[ 0.187910] _OSC request data:1 1f 0 +[ 0.187912] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM +[ 0.188394] PCI host bridge to bus 0000:00 +[ 0.188396] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window] +[ 0.188397] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window] +[ 0.188398] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window] +[ 0.188399] pci_bus 0000:00: root bus resource [mem 0x91000000-0xdfffffff window] +[ 0.188400] pci_bus 0000:00: root bus resource [mem 0xfd000000-0xfe7fffff window] +[ 0.188401] pci_bus 0000:00: root bus resource [bus 00-fe] +[ 0.188407] pci 0000:00:00.0: [8086:191f] type 00 class 0x060000 +[ 0.188620] pci 0000:00:02.0: [8086:1912] type 00 class 0x030000 +[ 0.188630] pci 0000:00:02.0: reg 0x10: [mem 0xde000000-0xdeffffff 64bit] +[ 0.188634] pci 0000:00:02.0: reg 0x18: [mem 0xc0000000-0xcfffffff 64bit pref] +[ 0.188637] pci 0000:00:02.0: reg 0x20: [io 0xf000-0xf03f] +[ 0.188737] pci 0000:00:08.0: [8086:1911] type 00 class 0x088000 +[ 0.188746] pci 0000:00:08.0: reg 0x10: [mem 0xdf152000-0xdf152fff 64bit] +[ 0.188857] pci 0000:00:14.0: [8086:a12f] type 00 class 0x0c0330 +[ 0.188879] pci 0000:00:14.0: reg 0x10: [mem 0xdf130000-0xdf13ffff 64bit] +[ 0.188926] pci 0000:00:14.0: PME# supported from D3hot D3cold +[ 0.188999] pci 0000:00:14.0: System wakeup disabled by ACPI +[ 0.189026] pci 0000:00:14.2: [8086:a131] type 00 class 0x118000 +[ 0.189048] pci 0000:00:14.2: reg 0x10: [mem 0xdf151000-0xdf151fff 64bit] +[ 0.189201] pci 0000:00:15.0: [8086:a160] type 00 class 0x118000 +[ 0.189256] pci 0000:00:15.0: reg 0x10: [mem 0xdf150000-0xdf150fff 64bit] +[ 0.189464] pci 0000:00:15.1: [8086:a161] type 00 class 0x118000 +[ 0.189520] pci 0000:00:15.1: reg 0x10: [mem 0xdf14f000-0xdf14ffff 64bit] +[ 0.189720] pci 0000:00:16.0: [8086:a13a] type 00 class 0x078000 +[ 0.189769] pci 0000:00:16.0: reg 0x10: [mem 0xdf14e000-0xdf14efff 64bit] +[ 0.189858] pci 0000:00:16.0: PME# supported from D3hot +[ 0.189969] pci 0000:00:17.0: [8086:a102] type 00 class 0x010601 +[ 0.189987] pci 0000:00:17.0: reg 0x10: [mem 0xdf148000-0xdf149fff] +[ 0.189993] pci 0000:00:17.0: reg 0x14: [mem 0xdf14d000-0xdf14d0ff] +[ 0.189999] pci 0000:00:17.0: reg 0x18: [io 0xf090-0xf097] +[ 0.190005] pci 0000:00:17.0: reg 0x1c: [io 0xf080-0xf083] +[ 0.190011] pci 0000:00:17.0: reg 0x20: [io 0xf060-0xf07f] +[ 0.190017] pci 0000:00:17.0: reg 0x24: [mem 0xdf14c000-0xdf14c7ff] +[ 0.190042] pci 0000:00:17.0: PME# supported from D3hot +[ 0.190136] pci 0000:00:1b.0: [8086:a167] type 01 class 0x060400 +[ 0.190184] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold +[ 0.190265] pci 0000:00:1b.0: System wakeup disabled by ACPI +[ 0.190315] pci 0000:00:1d.0: [8086:a118] type 01 class 0x060400 +[ 0.190358] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold +[ 0.190434] pci 0000:00:1d.0: System wakeup disabled by ACPI +[ 0.190459] pci 0000:00:1d.2: [8086:a11a] type 01 class 0x060400 +[ 0.190506] pci 0000:00:1d.2: PME# supported from D0 D3hot D3cold +[ 0.190584] pci 0000:00:1d.2: System wakeup disabled by ACPI +[ 0.190662] pci 0000:00:1e.0: [8086:a127] type 00 class 0x118000 +[ 0.190717] pci 0000:00:1e.0: reg 0x10: [mem 0xdf14b000-0xdf14bfff 64bit] +[ 0.190917] pci 0000:00:1f.0: [8086:a145] type 00 class 0x060100 +[ 0.191090] pci 0000:00:1f.2: [8086:a121] type 00 class 0x058000 +[ 0.191100] pci 0000:00:1f.2: reg 0x10: [mem 0xdf144000-0xdf147fff] +[ 0.191215] pci 0000:00:1f.3: [8086:a170] type 00 class 0x040300 +[ 0.191243] pci 0000:00:1f.3: reg 0x10: [mem 0xdf140000-0xdf143fff 64bit] +[ 0.191265] pci 0000:00:1f.3: reg 0x20: [mem 0xdf120000-0xdf12ffff 64bit] +[ 0.191294] pci 0000:00:1f.3: PME# supported from D3hot D3cold +[ 0.191398] pci 0000:00:1f.3: System wakeup disabled by ACPI +[ 0.191428] pci 0000:00:1f.4: [8086:a123] type 00 class 0x0c0500 +[ 0.191481] pci 0000:00:1f.4: reg 0x10: [mem 0xdf14a000-0xdf14a0ff 64bit] +[ 0.191550] pci 0000:00:1f.4: reg 0x20: [io 0xf040-0xf05f] +[ 0.191701] pci 0000:00:1f.6: [8086:15b8] type 00 class 0x020000 +[ 0.191736] pci 0000:00:1f.6: reg 0x10: [mem 0xdf100000-0xdf11ffff] +[ 0.191822] pci 0000:00:1f.6: PME# supported from D0 D3hot D3cold +[ 0.191893] pci 0000:00:1f.6: System wakeup disabled by ACPI +[ 0.191982] pci 0000:01:00.0: [144d:a802] type 00 class 0x010802 +[ 0.192008] pci 0000:01:00.0: reg 0x10: [mem 0xdf010000-0xdf013fff 64bit] +[ 0.192013] pci 0000:01:00.0: reg 0x18: [io 0xe000-0xe0ff] +[ 0.192032] pci 0000:01:00.0: reg 0x30: [mem 0xdf000000-0xdf00ffff pref] +[ 0.192124] pci 0000:01:00.0: System wakeup disabled by ACPI +[ 0.197863] pci 0000:00:1b.0: PCI bridge to [bus 01] +[ 0.197865] pci 0000:00:1b.0: bridge window [io 0xe000-0xefff] +[ 0.197867] pci 0000:00:1b.0: bridge window [mem 0xdf000000-0xdf0fffff] +[ 0.197934] acpiphp: Slot [1] registered +[ 0.197937] pci 0000:00:1d.0: PCI bridge to [bus 02] +[ 0.198014] pci 0000:03:00.0: [1b21:1080] type 01 class 0x060400 +[ 0.198125] pci 0000:03:00.0: supports D1 D2 +[ 0.198126] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold +[ 0.198173] pci 0000:03:00.0: System wakeup disabled by ACPI +[ 0.205864] pci 0000:00:1d.2: PCI bridge to [bus 03-04] +[ 0.205968] pci 0000:03:00.0: PCI bridge to [bus 04] +[ 0.207291] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207326] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 *10 11 12 14 15) +[ 0.207361] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207395] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207428] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207462] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207495] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207528] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207803] ACPI: Enabled 5 GPEs in block 00 to 7F +[ 0.207873] vgaarb: setting as boot device: PCI:0000:00:02.0 +[ 0.207874] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none +[ 0.207876] vgaarb: loaded +[ 0.207877] vgaarb: bridge control possible 0000:00:02.0 +[ 0.208001] SCSI subsystem initialized +[ 0.208019] libata version 3.00 loaded. +[ 0.208031] ACPI: bus type USB registered +[ 0.208043] usbcore: registered new interface driver usbfs +[ 0.208047] usbcore: registered new interface driver hub +[ 0.208055] usbcore: registered new device driver usb +[ 0.208163] PCI: Using ACPI for IRQ routing +[ 0.236023] PCI: pci_cache_line_size set to 64 bytes +[ 0.236113] e820: reserve RAM buffer [mem 0x00058000-0x0005ffff] +[ 0.236114] e820: reserve RAM buffer [mem 0x0009f000-0x0009ffff] +[ 0.236115] e820: reserve RAM buffer [mem 0x8277d000-0x83ffffff] +[ 0.236115] e820: reserve RAM buffer [mem 0x827fa000-0x83ffffff] +[ 0.236116] e820: reserve RAM buffer [mem 0x8a2a6000-0x8bffffff] +[ 0.236117] e820: reserve RAM buffer [mem 0x8a74a000-0x8bffffff] +[ 0.236118] e820: reserve RAM buffer [mem 0x8b400000-0x8bffffff] +[ 0.236119] e820: reserve RAM buffer [mem 0x106f000000-0x106fffffff] +[ 0.236187] NetLabel: Initializing +[ 0.236188] NetLabel: domain hash size = 128 +[ 0.236188] NetLabel: protocols = UNLABELED CIPSOv4 +[ 0.236196] NetLabel: unlabeled traffic allowed by default +[ 0.236274] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0 +[ 0.236277] hpet0: 8 comparators, 64-bit 24.000000 MHz counter +[ 0.238312] amd_nb: Cannot enumerate AMD northbridges +[ 0.238322] clocksource: Switched to clocksource hpet +[ 0.242081] AppArmor: AppArmor Filesystem Enabled +[ 0.242112] pnp: PnP ACPI init +[ 0.242292] system 00:00: [io 0x0a00-0x0a0f] has been reserved +[ 0.242293] system 00:00: [io 0x0a10-0x0a1f] has been reserved +[ 0.242294] system 00:00: [io 0x0a20-0x0a2f] has been reserved +[ 0.242295] system 00:00: [io 0x0a30-0x0a3f] has been reserved +[ 0.242297] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242444] system 00:01: [io 0x0680-0x069f] has been reserved +[ 0.242445] system 00:01: [io 0xffff] has been reserved +[ 0.242446] system 00:01: [io 0xffff] has been reserved +[ 0.242447] system 00:01: [io 0xffff] has been reserved +[ 0.242448] system 00:01: [io 0x1800-0x18fe] could not be reserved +[ 0.242449] system 00:01: [io 0x164e-0x164f] has been reserved +[ 0.242451] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242507] system 00:02: [io 0x0800-0x087f] has been reserved +[ 0.242508] system 00:02: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242521] pnp 00:03: Plug and Play ACPI device, IDs PNP0b00 (active) +[ 0.242545] system 00:04: [io 0x1854-0x1857] has been reserved +[ 0.242546] system 00:04: Plug and Play ACPI device, IDs INT3f0d PNP0c02 (active) +[ 0.242682] system 00:05: [mem 0xfed10000-0xfed17fff] has been reserved +[ 0.242683] system 00:05: [mem 0xfed18000-0xfed18fff] has been reserved +[ 0.242684] system 00:05: [mem 0xfed19000-0xfed19fff] has been reserved +[ 0.242685] system 00:05: [mem 0xe0000000-0xefffffff] has been reserved +[ 0.242686] system 00:05: [mem 0xfed20000-0xfed3ffff] has been reserved +[ 0.242687] system 00:05: [mem 0xfed90000-0xfed93fff] has been reserved +[ 0.242688] system 00:05: [mem 0xfed45000-0xfed8ffff] has been reserved +[ 0.242690] system 00:05: [mem 0xff000000-0xffffffff] has been reserved +[ 0.242691] system 00:05: [mem 0xfee00000-0xfeefffff] could not be reserved +[ 0.242692] system 00:05: [mem 0xdffc0000-0xdffdffff] has been reserved +[ 0.242693] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242718] system 00:06: [mem 0xfd000000-0xfdabffff] has been reserved +[ 0.242720] system 00:06: [mem 0xfdad0000-0xfdadffff] has been reserved +[ 0.242721] system 00:06: [mem 0xfdb00000-0xfdffffff] has been reserved +[ 0.242722] system 00:06: [mem 0xfe000000-0xfe01ffff] could not be reserved +[ 0.242723] system 00:06: [mem 0xfe036000-0xfe03bfff] has been reserved +[ 0.242724] system 00:06: [mem 0xfe03d000-0xfe3fffff] has been reserved +[ 0.242725] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242903] system 00:07: [io 0xff00-0xfffe] has been reserved +[ 0.242904] system 00:07: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.243514] system 00:08: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.244060] pnp: PnP ACPI: found 9 devices +[ 0.251992] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns +[ 0.252019] pci 0000:00:1b.0: PCI bridge to [bus 01] +[ 0.252021] pci 0000:00:1b.0: bridge window [io 0xe000-0xefff] +[ 0.252024] pci 0000:00:1b.0: bridge window [mem 0xdf000000-0xdf0fffff] +[ 0.252028] pci 0000:00:1d.0: PCI bridge to [bus 02] +[ 0.252034] pci 0000:03:00.0: PCI bridge to [bus 04] +[ 0.252048] pci 0000:00:1d.2: PCI bridge to [bus 03-04] +[ 0.252055] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window] +[ 0.252056] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window] +[ 0.252057] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window] +[ 0.252058] pci_bus 0000:00: resource 7 [mem 0x91000000-0xdfffffff window] +[ 0.252059] pci_bus 0000:00: resource 8 [mem 0xfd000000-0xfe7fffff window] +[ 0.252060] pci_bus 0000:01: resource 0 [io 0xe000-0xefff] +[ 0.252061] pci_bus 0000:01: resource 1 [mem 0xdf000000-0xdf0fffff] +[ 0.252079] NET: Registered protocol family 2 +[ 0.252245] TCP established hash table entries: 524288 (order: 10, 4194304 bytes) +[ 0.252662] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) +[ 0.252747] TCP: Hash tables configured (established 524288 bind 65536) +[ 0.252781] UDP hash table entries: 32768 (order: 8, 1048576 bytes) +[ 0.252902] UDP-Lite hash table entries: 32768 (order: 8, 1048576 bytes) +[ 0.253011] NET: Registered protocol family 1 +[ 0.253021] pci 0000:00:02.0: Video device with shadowed ROM +[ 0.253221] PCI: CLS 0 bytes, default 64 +[ 0.253249] Trying to unpack rootfs image as initramfs... +[ 0.631706] Freeing initrd memory: 35468K (ffff880033aaa000 - ffff880035d4d000) +[ 0.631733] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) +[ 0.631735] software IO TLB [mem 0x7e3ab000-0x823ab000] (64MB) mapped at [ffff88007e3ab000-ffff8800823aafff] +[ 0.631859] Scanning for low memory corruption every 60 seconds +[ 0.632126] futex hash table entries: 1024 (order: 4, 65536 bytes) +[ 0.632146] audit: initializing netlink subsys (disabled) +[ 0.632157] audit: type=2000 audit(1477221923.636:1): initialized +[ 0.632405] Initialise system trusted keyring +[ 0.632558] HugeTLB registered 1 GB page size, pre-allocated 0 pages +[ 0.632559] HugeTLB registered 2 MB page size, pre-allocated 0 pages +[ 0.633438] zbud: loaded +[ 0.633592] VFS: Disk quotas dquot_6.6.0 +[ 0.633611] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) +[ 0.633765] squashfs: version 4.0 (2009/01/31) Phillip Lougher +[ 0.633957] fuse init (API version 7.23) +[ 0.634056] Key type big_key registered +[ 0.634074] Allocating IMA MOK and blacklist keyrings. +[ 0.635087] Key type asymmetric registered +[ 0.635088] Asymmetric key parser 'x509' registered +[ 0.635109] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249) +[ 0.635173] io scheduler noop registered +[ 0.635174] io scheduler deadline registered (default) +[ 0.635191] io scheduler cfq registered +[ 0.635518] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 +[ 0.635522] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 +[ 0.635544] efifb: probing for efifb +[ 0.635552] efifb: framebuffer at 0xc0000000, mapped to 0xffffc90006c00000, using 3072k, total 3072k +[ 0.635553] efifb: mode is 1024x768x32, linelength=4096, pages=1 +[ 0.635553] efifb: scrolling: redraw +[ 0.635554] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0 +[ 0.635620] Console: switching to colour frame buffer device 128x48 +[ 0.635627] fb0: EFI VGA frame buffer device +[ 0.635633] intel_idle: MWAIT substates: 0x142120 +[ 0.635633] intel_idle: v0.4.1 model 0x5E +[ 0.635634] intel_idle: lapic_timer_reliable_states 0xffffffff +[ 0.635808] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input0 +[ 0.635811] ACPI: Sleep Button [SLPB] +[ 0.635831] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1 +[ 0.635832] ACPI: Power Button [PWRB] +[ 0.635852] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 +[ 0.635854] ACPI: Power Button [PWRF] +[ 0.636393] thermal LNXTHERM:00: registered as thermal_zone0 +[ 0.636394] ACPI: Thermal Zone [TZ00] (28 C) +[ 0.636473] thermal LNXTHERM:01: registered as thermal_zone1 +[ 0.636474] ACPI: Thermal Zone [TZ01] (30 C) +[ 0.636498] GHES: HEST is not enabled! +[ 0.636588] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled +[ 0.657147] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A +[ 0.677768] serial8250: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A +[ 0.680637] Linux agpgart interface v0.103 +[ 0.684314] brd: module loaded +[ 0.685917] loop: module loaded +[ 0.686034] libphy: Fixed MDIO Bus: probed +[ 0.686036] tun: Universal TUN/TAP device driver, 1.6 +[ 0.686037] tun: (C) 1999-2004 Max Krasnyansky +[ 0.686086] PPP generic driver version 2.4.2 +[ 0.686149] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver +[ 0.686151] ehci-pci: EHCI PCI platform driver +[ 0.686157] ehci-platform: EHCI generic platform driver +[ 0.686164] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver +[ 0.686166] ohci-pci: OHCI PCI platform driver +[ 0.686171] ohci-platform: OHCI generic platform driver +[ 0.686177] uhci_hcd: USB Universal Host Controller Interface driver +[ 0.686273] xhci_hcd 0000:00:14.0: xHCI Host Controller +[ 0.686277] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1 +[ 0.687349] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x00109810 +[ 0.687352] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported +[ 0.687413] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 +[ 0.687414] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 +[ 0.687415] usb usb1: Product: xHCI Host Controller +[ 0.687416] usb usb1: Manufacturer: Linux 4.4.0-42-generic xhci-hcd +[ 0.687416] usb usb1: SerialNumber: 0000:00:14.0 +[ 0.687526] hub 1-0:1.0: USB hub found +[ 0.687539] hub 1-0:1.0: 16 ports detected +[ 0.694849] xhci_hcd 0000:00:14.0: xHCI Host Controller +[ 0.694851] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2 +[ 0.694870] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003 +[ 0.694871] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 +[ 0.694872] usb usb2: Product: xHCI Host Controller +[ 0.694873] usb usb2: Manufacturer: Linux 4.4.0-42-generic xhci-hcd +[ 0.694874] usb usb2: SerialNumber: 0000:00:14.0 +[ 0.694976] hub 2-0:1.0: USB hub found +[ 0.694986] hub 2-0:1.0: 10 ports detected +[ 0.699556] i8042: PNP: No PS/2 controller found. Probing ports directly. +[ 0.702863] serio: i8042 KBD port at 0x60,0x64 irq 1 +[ 0.702866] serio: i8042 AUX port at 0x60,0x64 irq 12 +[ 0.703056] mousedev: PS/2 mouse device common for all mice +[ 0.703397] rtc_cmos 00:03: RTC can wake from S4 +[ 0.703814] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 +[ 0.703897] rtc_cmos 00:03: alarms up to one month, y3k, 242 bytes nvram, hpet irqs +[ 0.703901] i2c /dev entries driver +[ 0.703932] device-mapper: uevent: version 1.0.3 +[ 0.704043] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@redhat.com +[ 0.704056] Intel P-state driver initializing. +[ 0.704058] intel_pstate: HWP enabled +[ 0.704860] ledtrig-cpu: registered to indicate activity on CPUs +[ 0.704864] EFI Variables Facility v0.08 2004-May-17 +[ 0.710231] NET: Registered protocol family 10 +[ 0.710645] NET: Registered protocol family 17 +[ 0.710654] Key type dns_resolver registered +[ 0.710859] microcode: CPU0 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.710878] microcode: CPU1 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.710939] microcode: CPU2 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.710942] microcode: CPU3 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.711084] microcode: Microcode Update Driver: v2.01 , Peter Oruba +[ 0.711683] registered taskstats version 1 +[ 0.711693] Loading compiled-in X.509 certificates +[ 0.712099] Loaded X.509 cert 'Build time autogenerated kernel key: e837129128998c98ce5a834cc756a195b6db2f40' +[ 0.712113] zswap: loaded using pool lzo/zbud +[ 0.714017] Key type trusted registered +[ 0.718138] Key type encrypted registered +[ 0.718142] AppArmor: AppArmor sha1 policy hashing enabled +[ 0.718144] ima: No TPM chip found, activating TPM-bypass! +[ 0.718157] evm: HMAC attrs: 0x1 +[ 0.719206] Magic number: 4:294:429 +[ 0.719515] rtc_cmos 00:03: setting system clock to 2016-10-23 11:25:24 UTC (1477221924) +[ 0.719807] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found +[ 0.719808] EDD information not available. +[ 0.719872] PM: Hibernation image not present or could not be loaded. +[ 0.720750] Freeing unused kernel memory: 1480K (ffffffff81f42000 - ffffffff820b4000) +[ 0.720751] Write protecting the kernel read-only data: 14336k +[ 0.721386] Freeing unused kernel memory: 1820K (ffff880002839000 - ffff880002a00000) +[ 0.721750] Freeing unused kernel memory: 152K (ffff880002dda000 - ffff880002e00000) +[ 0.729200] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.729238] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.729245] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.729513] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.729538] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.729670] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.729696] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.729724] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.729748] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.729775] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.753118] FUJITSU Extended Socket Network Device Driver - version 1.0 - Copyright (c) 2015 FUJITSU LIMITED +[ 0.759863] wmi: Mapper loaded +[ 0.773508] hidraw: raw HID events driver (C) Jiri Kosina +[ 0.779396] nvme 0000:01:00.0: enabling device (0000 -> 0002) +[ 0.779499] ahci 0000:00:17.0: version 3.0 +[ 0.780477] [drm] Initialized drm 1.1.0 20060810 +[ 0.780700] pps_core: LinuxPPS API ver. 1 registered +[ 0.780701] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti +[ 0.781447] PTP clock support registered +[ 0.783594] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k +[ 0.783595] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. +[ 0.794489] ahci 0000:00:17.0: AHCI 0001.0301 32 slots 4 ports 6 Gbps 0xf impl SATA mode +[ 0.794491] ahci 0000:00:17.0: flags: 64bit ncq sntf led clo only pio slum part ems deso sadm sds apst +[ 0.819116] scsi host0: ahci +[ 0.819450] scsi host1: ahci +[ 0.819817] scsi host2: ahci +[ 0.820195] scsi host3: ahci +[ 0.820250] ata1: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c100 irq 313 +[ 0.820255] ata2: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c180 irq 313 +[ 0.820259] ata3: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c200 irq 313 +[ 0.820263] ata4: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c280 irq 313 +[ 0.820598] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode +[ 1.124427] e1000e 0000:00:1f.6 eth0: registered PHC clock +[ 1.124429] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) d8:cb:8a:c4:3a:78 +[ 1.124430] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection +[ 1.124499] e1000e 0000:00:1f.6 eth0: MAC: 12, PHY: 12, PBA No: FFFFFF-0FF +[ 1.125111] e1000e 0000:00:1f.6 enp0s31f6: renamed from eth0 +[ 1.125856] [drm] Memory usable by graphics device = 4096M +[ 1.125858] checking generic (c0000000 300000) vs hw (c0000000 10000000) +[ 1.125859] fb: switching to inteldrmfb from EFI VGA +[ 1.125892] Console: switching to colour dummy device 80x25 +[ 1.126045] [drm] Replacing VGA console driver +[ 1.131852] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). +[ 1.131853] [drm] Driver supports precise vblank timestamp query. +[ 1.138531] ata4: SATA link down (SStatus 4 SControl 300) +[ 1.138550] ata3: SATA link down (SStatus 4 SControl 300) +[ 1.138580] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300) +[ 1.138606] ata1: SATA link down (SStatus 4 SControl 300) +[ 1.139223] ata2.00: ATA-9: WDC WD10EZEX-00BN5A0, 01.01A01, max UDMA/133 +[ 1.139225] ata2.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA +[ 1.140118] ata2.00: configured for UDMA/133 +[ 1.140613] scsi 1:0:0:0: Direct-Access ATA WDC WD10EZEX-00B 1A01 PQ: 0 ANSI: 5 +[ 1.140949] sd 1:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB) +[ 1.140951] sd 1:0:0:0: [sda] 4096-byte physical blocks +[ 1.141043] sd 1:0:0:0: [sda] Write Protect is off +[ 1.141045] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00 +[ 1.141087] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA +[ 1.141094] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem +[ 1.141283] sd 1:0:0:0: Attached scsi generic sg0 type 0 +[ 1.142008] [drm] Finished loading i915/skl_dmc_ver1.bin (v1.26) +[ 1.150083] [drm] failed to retrieve link info, disabling eDP +[ 1.154846] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) +[ 1.155169] acpi device:0f: registered as cooling_device9 +[ 1.155228] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input6 +[ 1.155426] [drm] Initialized i915_bpo 1.6.0 20160425 for 0000:00:02.0 on minor 0 +[ 1.197065] sda: sda1 sda2 sda3 +[ 1.198160] sd 1:0:0:0: [sda] Attached SCSI disk +[ 1.297300] fbcon: inteldrmfb (fb0) is primary device +[ 1.297334] Console: switching to colour frame buffer device 160x64 +[ 1.297344] i915_bpo 0000:00:02.0: fb0: inteldrmfb frame buffer device +[ 1.630399] tsc: Refined TSC clocksource calibration: 3311.999 MHz +[ 1.630407] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x2fbd936b72f, max_idle_ns: 440795283163 ns +[ 2.630983] clocksource: Switched to clocksource tsc +[ 2.810831] [drm] RC6 on +[ 3.345233] random: nonblocking pool is initialized +[ 3.587422] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) +[ 4.472976] systemd[1]: systemd 229 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN) +[ 4.473052] systemd[1]: Detected architecture x86-64. +[ 4.481311] systemd[1]: Set hostname to . +[ 5.956882] systemd[1]: Created slice User and Session Slice. +[ 5.956986] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point. +[ 5.956993] systemd[1]: Reached target Remote File Systems (Pre). +[ 5.956997] systemd[1]: Reached target Encrypted Volumes. +[ 5.957015] systemd[1]: Listening on Journal Socket (/dev/log). +[ 5.957030] systemd[1]: Listening on Journal Socket. +[ 5.957049] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe. +[ 5.957054] systemd[1]: Reached target Remote File Systems. +[ 5.957068] systemd[1]: Listening on udev Control Socket. +[ 5.957098] systemd[1]: Listening on Journal Audit Socket. +[ 5.957131] systemd[1]: Created slice System Slice. +[ 5.957166] systemd[1]: Created slice system-systemd\x2dfsck.slice. +[ 5.974640] systemd[1]: Starting Create list of required static device nodes for the current kernel... +[ 5.975159] systemd[1]: Starting Load Kernel Modules... +[ 5.975388] systemd[1]: Mounting Debug File System... +[ 5.975614] systemd[1]: Starting Uncomplicated firewall... +[ 5.975629] systemd[1]: Reached target Slices. +[ 5.975876] systemd[1]: Mounting POSIX Message Queue File System... +[ 5.976087] systemd[1]: Started Read required files in advance. +[ 5.976396] systemd[1]: Listening on udev Kernel Socket. +[ 5.976634] systemd[1]: Starting Braille Device Support... +[ 6.159500] systemd[1]: Listening on fsck to fsckd communication Socket. +[ 6.159545] systemd[1]: Started Forward Password Requests to Wall Directory Watch. +[ 6.170628] systemd[1]: Mounting Huge Pages File System... +[ 6.170639] systemd[1]: Reached target User and Group Name Lookups. +[ 6.170670] systemd[1]: Listening on Syslog Socket. +[ 6.170984] systemd[1]: Starting Journal Service... +[ 6.171028] systemd[1]: Created slice system-getty.slice. +[ 6.171778] systemd[1]: Started Uncomplicated firewall. +[ 6.296004] systemd[1]: Started Create list of required static device nodes for the current kernel. +[ 6.310712] systemd[1]: Starting Create Static Device Nodes in /dev... +[ 6.689904] systemd[1]: Started Journal Service. +[ 6.746002] lp: driver loaded but no devices found +[ 6.785636] ppdev: user-space parallel port driver +[ 6.869112] parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE,EPP] +[ 6.869753] parport0: irq 7 detected +[ 6.966721] lp0: using parport0 (polling). +[ 11.007302] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro +[ 11.161454] systemd-journald[238]: Received request to flush runtime journal from PID 1 +[ 11.484735] mei_me 0000:00:16.0: enabling device (0000 -> 0002) +[ 11.502544] intel-lpss 0000:00:15.0: enabling device (0000 -> 0002) +[ 11.546597] idma64 idma64.0: Found Intel integrated DMA 64-bit +[ 11.578614] intel-lpss 0000:00:15.1: enabling device (0000 -> 0002) +[ 11.578785] idma64 idma64.1: Found Intel integrated DMA 64-bit +[ 11.610578] intel-lpss 0000:00:1e.0: enabling device (0000 -> 0002) +[ 11.610771] idma64 idma64.2: Found Intel integrated DMA 64-bit +[ 11.626628] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 +[ 11.731283] Bluetooth: Core ver 2.21 +[ 11.731291] NET: Registered protocol family 31 +[ 11.731291] Bluetooth: HCI device and connection manager initialized +[ 11.731293] Bluetooth: HCI socket layer initialized +[ 11.731295] Bluetooth: L2CAP socket layer initialized +[ 11.731297] Bluetooth: SCO socket layer initialized +[ 11.914072] Bluetooth: HCI UART driver ver 2.3 +[ 11.914074] Bluetooth: HCI UART protocol H4 registered +[ 11.914075] Bluetooth: HCI UART protocol BCSP registered +[ 11.914076] Bluetooth: HCI UART protocol LL registered +[ 11.914076] Bluetooth: HCI UART protocol ATH3K registered +[ 11.914077] Bluetooth: HCI UART protocol Three-wire (H5) registered +[ 11.914108] Bluetooth: HCI UART protocol Intel registered +[ 11.914114] Bluetooth: HCI UART protocol BCM registered +[ 11.914115] Bluetooth: HCI UART protocol QCA registered +[ 12.038337] AVX2 version of gcm_enc/dec engaged. +[ 12.038339] AES CTR mode by8 optimization enabled +[ 12.038637] dw-apb-uart.2: ttyS4 at MMIO 0xdf14b000 (irq = 20, base_baud = 115200) is a 16550A +[ 12.308226] snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002) +[ 12.308350] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915_bpo]) +[ 12.466958] snd_hda_codec_realtek hdaudioC0D0: ALC1150: SKU not ready 0x00000000 +[ 12.467509] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC1150: line_outs=3 (0x14/0x15/0x16/0x0/0x0) type:line +[ 12.467510] snd_hda_codec_realtek hdaudioC0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) +[ 12.467511] snd_hda_codec_realtek hdaudioC0D0: hp_outs=1 (0x1b/0x0/0x0/0x0/0x0) +[ 12.467512] snd_hda_codec_realtek hdaudioC0D0: mono: mono_out=0x0 +[ 12.467513] snd_hda_codec_realtek hdaudioC0D0: dig-out=0x1e/0x0 +[ 12.467514] snd_hda_codec_realtek hdaudioC0D0: inputs: +[ 12.467515] snd_hda_codec_realtek hdaudioC0D0: Front Mic=0x19 +[ 12.467516] snd_hda_codec_realtek hdaudioC0D0: Rear Mic=0x18 +[ 12.467516] snd_hda_codec_realtek hdaudioC0D0: Line=0x1a +[ 12.500628] input: HDA Intel PCH Front Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input7 +[ 12.500660] input: HDA Intel PCH Rear Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input8 +[ 12.500687] input: HDA Intel PCH Line as /devices/pci0000:00/0000:00:1f.3/sound/card0/input9 +[ 12.500714] input: HDA Intel PCH Line Out Front as /devices/pci0000:00/0000:00:1f.3/sound/card0/input10 +[ 12.500741] input: HDA Intel PCH Line Out Surround as /devices/pci0000:00/0000:00:1f.3/sound/card0/input11 +[ 12.500768] input: HDA Intel PCH Line Out CLFE as /devices/pci0000:00/0000:00:1f.3/sound/card0/input12 +[ 12.500795] input: HDA Intel PCH Front Headphone as /devices/pci0000:00/0000:00:1f.3/sound/card0/input13 +[ 12.500821] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input14 +[ 12.500848] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input15 +[ 12.500874] input: HDA Intel PCH HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input16 +[ 13.091151] intel_rapl: Found RAPL domain package +[ 13.091153] intel_rapl: Found RAPL domain core +[ 13.091154] intel_rapl: Found RAPL domain uncore +[ 13.091155] intel_rapl: Found RAPL domain dram +[ 13.313805] Adding 8268796k swap on /dev/sda3. Priority:-1 extents:1 across:8268796k FS +[ 19.536711] audit: type=1400 audit(1477221943.311:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/ubuntu-core-launcher" pid=582 comm="apparmor_parser" +[ 19.537471] audit: type=1400 audit(1477221943.311:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/sbin/dhclient" pid=579 comm="apparmor_parser" +[ 19.537475] audit: type=1400 audit(1477221943.311:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=579 comm="apparmor_parser" +[ 19.537477] audit: type=1400 audit(1477221943.311:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-helper" pid=579 comm="apparmor_parser" +[ 19.537479] audit: type=1400 audit(1477221943.311:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=579 comm="apparmor_parser" +[ 19.537742] audit: type=1400 audit(1477221943.311:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/lightdm/lightdm-guest-session" pid=578 comm="apparmor_parser" +[ 19.537746] audit: type=1400 audit(1477221943.311:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/lightdm/lightdm-guest-session//chromium" pid=578 comm="apparmor_parser" +[ 19.538267] audit: type=1400 audit(1477221943.311:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/cups-browsed" pid=584 comm="apparmor_parser" +[ 19.538725] audit: type=1400 audit(1477221943.315:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/ippusbxd" pid=586 comm="apparmor_parser" +[ 19.539134] audit: type=1400 audit(1477221943.315:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/cups/backend/cups-pdf" pid=585 comm="apparmor_parser" +[ 21.996612] IPv6: ADDRCONF(NETDEV_UP): enp0s31f6: link is not ready +[ 22.202893] IPv6: ADDRCONF(NETDEV_UP): enp0s31f6: link is not ready +[ 24.736691] e1000e: enp0s31f6 NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx/Tx +[ 24.736694] e1000e 0000:00:1f.6 enp0s31f6: 10/100 speed: disabling TSO +[ 24.736741] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s31f6: link becomes ready +[ 29.199112] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 +[ 29.199114] Bluetooth: BNEP filters: protocol multicast +[ 29.199116] Bluetooth: BNEP socket layer initialized +[ 103.118165] risa_dev_ramdrive_timing: module verification failed: signature and/or required key missing - tainting kernel +[ 103.118908] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 103.126524] bdbm: ===================================================================== +[ 103.126525] bdbm: DEVICE PARAMETERS +[ 103.126526] bdbm: ===================================================================== +[ 103.126526] bdbm: # of channels = 64 +[ 103.126527] bdbm: # of chips per channel = 1 +[ 103.126527] bdbm: # of blocks per chip = 128 +[ 103.126528] bdbm: # of pages per block = 64 +[ 103.126528] bdbm: # of subpages per page = 1 +[ 103.126529] bdbm: page main size = 4096 bytes +[ 103.126529] bdbm: page oob size = 64 bytes +[ 103.126530] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 103.126530] bdbm: +[ 103.126531] bdbm: ===================================================================== +[ 103.126532] bdbm: RAM DISK INFO +[ 103.126532] bdbm: ===================================================================== +[ 103.126533] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) +[ 103.321939] bdbm: ramssd addr = ffffc90050001000 +[ 103.321940] bdbm: +[ 103.321941] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 103.516321] bdbm: *** building ptr_ramssd_data done +[ 103.516502] bdbm: [dm_ramdrive_probe] probe done! +[ 103.516503] bdbm: [dm_ramdrive_open] open done! +[ 103.618631] bdbm: TRIM is enabled +[ 103.618805] bdbm: ===================================================================== +[ 103.618806] bdbm: DEVICE PARAMETERS +[ 103.618807] bdbm: ===================================================================== +[ 103.618808] bdbm: # of channels = 64 +[ 103.618809] bdbm: # of chips per channel = 1 +[ 103.618809] bdbm: # of blocks per chip = 128 +[ 103.618810] bdbm: # of pages per block = 64 +[ 103.618810] bdbm: # of subpages per page = 1 +[ 103.618811] bdbm: page main size = 4096 bytes +[ 103.618811] bdbm: page oob size = 64 bytes +[ 103.618812] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 103.618812] bdbm: +[ 103.618813] bdbm: ===================================================================== +[ 103.618814] bdbm: FTL CONFIGURATION +[ 103.618815] bdbm: ===================================================================== +[ 103.618815] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 103.618816] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 103.618816] bdbm: wl policy = 1 (1: none, 2: swap) +[ 103.618817] bdbm: trim mode = 1 (1: enable, 2: disable) +[ 103.618817] bdbm: kernel sector = 512 bytes +[ 103.618818] bdbm: +[ 103.618819] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 104.678972] bdbm: llm_make_req: 0, 1 +[ 105.750335] bdbm: llm_make_req: 50000, 96 +[ 106.114075] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 190.039462] bdbm: ----------------------------------------------- +[ 190.039464] bdbm: < PERFORMANCE SUMMARY > +[ 190.039465] bdbm: [0] Execution Time (us): 86.420687 +[ 190.039465] bdbm: +[ 190.039466] bdbm: [1] Total I/Os +[ 190.039466] bdbm: # of page reads: 6 +[ 190.039467] bdbm: # of page writes: 74152 +[ 190.039467] bdbm: # of block erase: 0 +[ 190.039467] bdbm: +[ 190.039468] bdbm: [2] Normal I/Os +[ 190.039468] bdbm: # of page reads: 6 +[ 190.039469] bdbm: # of page writes: 74152 +[ 190.039469] bdbm: # of page rmw reads: 0 +[ 190.039470] bdbm: # of page rmw writes: 0 +[ 190.039470] bdbm: +[ 190.039471] bdbm: [3] GC I/Os +[ 190.039471] bdbm: # of GC invocation: 0 +[ 190.039471] bdbm: # of page reads: 0 +[ 190.039472] bdbm: # of page writes: 0 +[ 190.039472] bdbm: # of block erase: 0 +[ 190.039473] bdbm: +[ 190.039473] bdbm: [4] Meta I/Os +[ 190.039474] bdbm: # of meta page reads: 0 +[ 190.039474] bdbm: # of meta page writes: 0 +[ 190.039475] bdbm: +[ 190.039475] bdbm: [5] Elapsed Time +[ 190.039476] bdbm: page read (us): 111 (S:2 + Q:13 + D:96) +[ 190.039476] bdbm: page write (us): 452 (S:0 + Q:0 + D:452) +[ 190.039477] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 190.039477] bdbm: +[ 190.039478] bdbm: [6] Utilization (R) +[ 190.039489] bdbm: 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +[ 190.039490] bdbm: +[ 190.039490] bdbm: [7] Utilization (W) +[ 190.039502] bdbm: 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 +[ 190.039503] bdbm: ----------------------------------------------- +[ 190.039503] bdbm: ----------------------------------------------- +[ 190.126660] bdbm: done +[ 190.126663] bdbm: [dm_ramdrive_close] closed! +[ 190.176400] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 190.176402] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 190.190549] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 190.211450] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 190.216063] bdbm: ===================================================================== +[ 190.216064] bdbm: DEVICE PARAMETERS +[ 190.216065] bdbm: ===================================================================== +[ 190.216066] bdbm: # of channels = 64 +[ 190.216066] bdbm: # of chips per channel = 1 +[ 190.216067] bdbm: # of blocks per chip = 128 +[ 190.216067] bdbm: # of pages per block = 64 +[ 190.216068] bdbm: # of subpages per page = 1 +[ 190.216068] bdbm: page main size = 4096 bytes +[ 190.216069] bdbm: page oob size = 64 bytes +[ 190.216069] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 190.216070] bdbm: +[ 190.216071] bdbm: ===================================================================== +[ 190.216071] bdbm: RAM DISK INFO +[ 190.216071] bdbm: ===================================================================== +[ 190.216072] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) +[ 190.416513] bdbm: ramssd addr = ffffc90050001000 +[ 190.416515] bdbm: +[ 190.416516] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 190.613405] bdbm: *** building ptr_ramssd_data done +[ 190.613611] bdbm: [dm_ramdrive_probe] probe done! +[ 190.613612] bdbm: [dm_ramdrive_open] open done! +[ 190.699456] bdbm: TRIM is enabled +[ 190.699583] bdbm: ===================================================================== +[ 190.699584] bdbm: DEVICE PARAMETERS +[ 190.699585] bdbm: ===================================================================== +[ 190.699585] bdbm: # of channels = 64 +[ 190.699586] bdbm: # of chips per channel = 1 +[ 190.699586] bdbm: # of blocks per chip = 128 +[ 190.699587] bdbm: # of pages per block = 64 +[ 190.699587] bdbm: # of subpages per page = 1 +[ 190.699588] bdbm: page main size = 4096 bytes +[ 190.699588] bdbm: page oob size = 64 bytes +[ 190.699589] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 190.699589] bdbm: +[ 190.699590] bdbm: ===================================================================== +[ 190.699590] bdbm: FTL CONFIGURATION +[ 190.699591] bdbm: ===================================================================== +[ 190.699591] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 190.699592] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 190.699592] bdbm: wl policy = 1 (1: none, 2: swap) +[ 190.699593] bdbm: trim mode = 1 (1: enable, 2: disable) +[ 190.699593] bdbm: kernel sector = 512 bytes +[ 190.699594] bdbm: +[ 190.699595] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 191.713378] bdbm: llm_make_req: 0, 1 +[ 192.777107] bdbm: llm_make_req: 50000, 95 +[ 193.140330] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 270.199954] bdbm: ----------------------------------------------- +[ 270.199956] bdbm: < PERFORMANCE SUMMARY > +[ 270.199957] bdbm: [0] Execution Time (us): 79.499900 +[ 270.199957] bdbm: +[ 270.199958] bdbm: [1] Total I/Os +[ 270.199958] bdbm: # of page reads: 6 +[ 270.199959] bdbm: # of page writes: 74152 +[ 270.199959] bdbm: # of block erase: 0 +[ 270.199960] bdbm: +[ 270.199960] bdbm: [2] Normal I/Os +[ 270.199961] bdbm: # of page reads: 6 +[ 270.199961] bdbm: # of page writes: 74152 +[ 270.199962] bdbm: # of page rmw reads: 0 +[ 270.199962] bdbm: # of page rmw writes: 0 +[ 270.199962] bdbm: +[ 270.199963] bdbm: [3] GC I/Os +[ 270.199963] bdbm: # of GC invocation: 0 +[ 270.199964] bdbm: # of page reads: 0 +[ 270.199964] bdbm: # of page writes: 0 +[ 270.199965] bdbm: # of block erase: 0 +[ 270.199965] bdbm: +[ 270.199966] bdbm: [4] Meta I/Os +[ 270.199966] bdbm: # of meta page reads: 0 +[ 270.199966] bdbm: # of meta page writes: 0 +[ 270.199967] bdbm: +[ 270.199967] bdbm: [5] Elapsed Time +[ 270.199968] bdbm: page read (us): 107 (S:0 + Q:11 + D:96) +[ 270.199969] bdbm: page write (us): 452 (S:0 + Q:1 + D:451) +[ 270.199969] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 270.199970] bdbm: +[ 270.199970] bdbm: [6] Utilization (R) +[ 270.199982] bdbm: 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +[ 270.199983] bdbm: +[ 270.199983] bdbm: [7] Utilization (W) +[ 270.199995] bdbm: 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 +[ 270.199995] bdbm: ----------------------------------------------- +[ 270.199996] bdbm: ----------------------------------------------- +[ 270.291323] bdbm: done +[ 270.291325] bdbm: [dm_ramdrive_close] closed! +[ 270.340682] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 270.340686] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 270.358797] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 270.383544] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 270.387779] bdbm: ===================================================================== +[ 270.387781] bdbm: DEVICE PARAMETERS +[ 270.387781] bdbm: ===================================================================== +[ 270.387782] bdbm: # of channels = 64 +[ 270.387783] bdbm: # of chips per channel = 1 +[ 270.387783] bdbm: # of blocks per chip = 128 +[ 270.387784] bdbm: # of pages per block = 64 +[ 270.387784] bdbm: # of subpages per page = 1 +[ 270.387785] bdbm: page main size = 4096 bytes +[ 270.387786] bdbm: page oob size = 64 bytes +[ 270.387786] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 270.387787] bdbm: +[ 270.387788] bdbm: ===================================================================== +[ 270.387788] bdbm: RAM DISK INFO +[ 270.387789] bdbm: ===================================================================== +[ 270.387790] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) +[ 270.594094] bdbm: ramssd addr = ffffc90050001000 +[ 270.594096] bdbm: +[ 270.594096] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 270.792765] bdbm: *** building ptr_ramssd_data done +[ 270.792929] bdbm: [dm_ramdrive_probe] probe done! +[ 270.792931] bdbm: [dm_ramdrive_open] open done! +[ 270.895994] bdbm: TRIM is enabled +[ 270.896125] bdbm: ===================================================================== +[ 270.896127] bdbm: DEVICE PARAMETERS +[ 270.896127] bdbm: ===================================================================== +[ 270.896128] bdbm: # of channels = 64 +[ 270.896128] bdbm: # of chips per channel = 1 +[ 270.896129] bdbm: # of blocks per chip = 128 +[ 270.896129] bdbm: # of pages per block = 64 +[ 270.896130] bdbm: # of subpages per page = 1 +[ 270.896130] bdbm: page main size = 4096 bytes +[ 270.896131] bdbm: page oob size = 64 bytes +[ 270.896133] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 270.896133] bdbm: +[ 270.896134] bdbm: ===================================================================== +[ 270.896134] bdbm: FTL CONFIGURATION +[ 270.896135] bdbm: ===================================================================== +[ 270.896135] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 270.896136] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 270.896136] bdbm: wl policy = 1 (1: none, 2: swap) +[ 270.896137] bdbm: trim mode = 1 (1: enable, 2: disable) +[ 270.896138] bdbm: kernel sector = 512 bytes +[ 270.896139] bdbm: +[ 270.896140] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 271.911345] bdbm: llm_make_req: 0, 1 +[ 272.967629] bdbm: llm_make_req: 50000, 96 +[ 273.330139] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 298.699650] bdbm: ----------------------------------------------- +[ 298.699652] bdbm: < PERFORMANCE SUMMARY > +[ 298.699652] bdbm: [0] Execution Time (us): 27.803729 +[ 298.699653] bdbm: +[ 298.699653] bdbm: [1] Total I/Os +[ 298.699654] bdbm: # of page reads: 6 +[ 298.699654] bdbm: # of page writes: 74152 +[ 298.699655] bdbm: # of block erase: 0 +[ 298.699655] bdbm: +[ 298.699656] bdbm: [2] Normal I/Os +[ 298.699656] bdbm: # of page reads: 6 +[ 298.699657] bdbm: # of page writes: 74152 +[ 298.699657] bdbm: # of page rmw reads: 0 +[ 298.699658] bdbm: # of page rmw writes: 0 +[ 298.699658] bdbm: +[ 298.699658] bdbm: [3] GC I/Os +[ 298.699659] bdbm: # of GC invocation: 0 +[ 298.699659] bdbm: # of page reads: 0 +[ 298.699660] bdbm: # of page writes: 0 +[ 298.699660] bdbm: # of block erase: 0 +[ 298.699661] bdbm: +[ 298.699661] bdbm: [4] Meta I/Os +[ 298.699662] bdbm: # of meta page reads: 0 +[ 298.699662] bdbm: # of meta page writes: 0 +[ 298.699662] bdbm: +[ 298.699663] bdbm: [5] Elapsed Time +[ 298.699664] bdbm: page read (us): 106 (S:0 + Q:7 + D:99) +[ 298.699664] bdbm: page write (us): 452 (S:0 + Q:0 + D:452) +[ 298.699665] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 298.699665] bdbm: +[ 298.699666] bdbm: [6] Utilization (R) +[ 298.699677] bdbm: 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +[ 298.699678] bdbm: +[ 298.699678] bdbm: [7] Utilization (W) +[ 298.699689] bdbm: 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 +[ 298.699690] bdbm: ----------------------------------------------- +[ 298.699691] bdbm: ----------------------------------------------- +[ 298.792702] bdbm: done +[ 298.792717] bdbm: [dm_ramdrive_close] closed! +[ 298.842685] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 298.842688] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 298.858589] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 298.878671] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 298.883875] bdbm: ===================================================================== +[ 298.883877] bdbm: DEVICE PARAMETERS +[ 298.883877] bdbm: ===================================================================== +[ 298.883878] bdbm: # of channels = 64 +[ 298.883879] bdbm: # of chips per channel = 1 +[ 298.883879] bdbm: # of blocks per chip = 128 +[ 298.883879] bdbm: # of pages per block = 64 +[ 298.883880] bdbm: # of subpages per page = 1 +[ 298.883880] bdbm: page main size = 4096 bytes +[ 298.883881] bdbm: page oob size = 64 bytes +[ 298.883882] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 298.883882] bdbm: +[ 298.883883] bdbm: ===================================================================== +[ 298.883883] bdbm: RAM DISK INFO +[ 298.883884] bdbm: ===================================================================== +[ 298.883884] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) +[ 299.085482] bdbm: ramssd addr = ffffc90050001000 +[ 299.085484] bdbm: +[ 299.085484] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 299.287265] bdbm: *** building ptr_ramssd_data done +[ 299.287393] bdbm: [dm_ramdrive_probe] probe done! +[ 299.287409] bdbm: [dm_ramdrive_open] open done! +[ 299.397029] bdbm: TRIM is enabled +[ 299.397333] bdbm: ===================================================================== +[ 299.397334] bdbm: DEVICE PARAMETERS +[ 299.397334] bdbm: ===================================================================== +[ 299.397335] bdbm: # of channels = 64 +[ 299.397336] bdbm: # of chips per channel = 1 +[ 299.397336] bdbm: # of blocks per chip = 128 +[ 299.397337] bdbm: # of pages per block = 64 +[ 299.397337] bdbm: # of subpages per page = 1 +[ 299.397338] bdbm: page main size = 4096 bytes +[ 299.397338] bdbm: page oob size = 64 bytes +[ 299.397339] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 299.397339] bdbm: +[ 299.397340] bdbm: ===================================================================== +[ 299.397340] bdbm: FTL CONFIGURATION +[ 299.397341] bdbm: ===================================================================== +[ 299.397342] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 299.397342] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 299.397343] bdbm: wl policy = 1 (1: none, 2: swap) +[ 299.397343] bdbm: trim mode = 1 (1: enable, 2: disable) +[ 299.397344] bdbm: kernel sector = 512 bytes +[ 299.397344] bdbm: +[ 299.397345] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 300.413266] BUG: unable to handle kernel NULL pointer dereference at (null) +[ 300.413287] IP: [< (null)>] (null) +[ 300.413298] PGD fe9bf8067 PUD fe9b95067 PMD 0 +[ 300.413310] Oops: 0010 [#1] SMP +[ 300.413318] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel snd_hda_codec snd_hda_core crct10dif_pclmul crc32_pclmul snd_hwdep snd_pcm aesni_intel snd_seq_midi 8250_dw aes_x86_64 snd_seq_midi_event snd_rawmidi snd_seq snd_seq_device i2c_designware_platform lrw i2c_designware_core snd_timer hci_uart btbcm snd btqca gf128mul btintel soundcore bluetooth glue_helper ablk_helper cryptd serio_raw shpchp idma64 virt_dma acpi_als intel_lpss_pci intel_lpss_acpi kfifo_buf mei_me intel_lpss mei industrialio mac_hid acpi_pad parport_pc ppdev lp parport autofs4 mxm_wmi i915_bpo intel_ips i2c_algo_bit drm_kms_helper e1000e +[ 300.413502] syscopyarea psmouse sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 300.413549] CPU: 0 PID: 12046 Comm: mkfs.ext4 Tainted: G OE 4.4.0-42-generic #62-Ubuntu +[ 300.413567] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 300.413583] task: ffff8810200449c0 ti: ffff880f62da8000 task.ti: ffff880f62da8000 +[ 300.413597] RIP: 0010:[<0000000000000000>] [< (null)>] (null) +[ 300.413613] RSP: 0018:ffff880f62dab9a8 EFLAGS: 00010202 +[ 300.413623] RAX: ffffffffc0604140 RBX: ffffc90006b1e000 RCX: ffff880f62dab9c8 +[ 300.413637] RDX: ffffc900165c1068 RSI: 0000000000000000 RDI: ffffc90006b1e000 +[ 300.413650] RBP: ffff880f62daba00 R08: 0000000000000001 R09: ffff880f093e4000 +[ 300.413664] R10: 0000000000000001 R11: ffff880f093e4000 R12: 0000000000000000 +[ 300.413678] R13: ffffc900165c1058 R14: ffffc900165c1068 R15: ffffc900165c1038 +[ 300.413691] FS: 00007fa3e0306780(0000) GS:ffff88106ec00000(0000) knlGS:0000000000000000 +[ 300.413707] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 300.413718] CR2: 0000000000000000 CR3: 0000000fe9b31000 CR4: 00000000003406f0 +[ 300.413732] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 300.413746] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 300.413759] Stack: +[ 300.413764] ffffffffc05f4dd5 ffffc900165c1038 ffffc900165c1000 ffffffffc0604140 +[ 300.413781] ffffffff810f5dc9 00000000235f459e ffffc900165c1000 ffffc900165c1000 +[ 300.413798] ffffc90006b1e000 ffff880f09415a88 ffffc900165bd000 ffff880f62daba58 +[ 300.413814] Call Trace: +[ 300.413823] [] ? __hlm_nobuf_make_rw_req+0x185/0x3c0 [robusta_drv] +[ 300.413840] [] ? do_gettimeofday+0x29/0x90 +[ 300.413853] [] hlm_nobuf_make_req+0xb9/0xf0 [robusta_drv] +[ 300.413868] [] blkio_make_req+0xd5/0x330 [robusta_drv] +[ 300.413883] [] ? generic_make_request_checks+0x229/0x530 +[ 300.413897] [] __host_blkio_make_request_fn+0x15/0x20 [robusta_drv] +[ 300.413921] [] generic_make_request+0xf2/0x1d0 +[ 300.413934] [] submit_bio+0x76/0x170 +[ 300.413946] [] mpage_readpages+0x158/0x190 +[ 300.413957] [] ? I_BDEV+0x20/0x20 +[ 300.413968] [] ? I_BDEV+0x20/0x20 +[ 300.413978] [] blkdev_readpages+0x1d/0x20 +[ 300.413991] [] __do_page_cache_readahead+0x196/0x230 +[ 300.414004] [] ? call_rcu_sched+0x17/0x20 +[ 300.414017] [] ? radix_tree_lookup_slot+0x22/0x50 +[ 300.414030] [] force_page_cache_readahead+0xaa/0x100 +[ 300.414043] [] page_cache_sync_readahead+0x3f/0x50 +[ 300.414056] [] generic_file_read_iter+0x4ad/0x5c0 +[ 300.414070] [] ? do_filp_open+0xa5/0x100 +[ 300.414082] [] blkdev_read_iter+0x35/0x40 +[ 300.414094] [] new_sync_read+0x94/0xd0 +[ 300.414105] [] __vfs_read+0x26/0x40 +[ 300.414116] [] vfs_read+0x86/0x130 +[ 300.414127] [] SyS_read+0x55/0xc0 +[ 300.414138] [] entry_SYSCALL_64_fastpath+0x16/0x71 +[ 300.414150] Code: Bad RIP value. +[ 300.414160] RIP [< (null)>] (null) +[ 300.414171] RSP +[ 300.414178] CR2: 0000000000000000 +[ 300.417279] ---[ end trace ad2039f7bf3c219b ]--- diff --git a/frontend/kernel/a.diff b/frontend/kernel/a.diff new file mode 100644 index 0000000..78b26eb --- /dev/null +++ b/frontend/kernel/a.diff @@ -0,0 +1,47 @@ +54,55d53 +< #ifdef LAZY_INVALID_BACKGROUND_GC +< #else +57d54 +< #endif +68c65 +< bdbm_blkio_req_t* br = (bdbm_blkio_req_t*)bdbm_malloc (sizeof (bdbm_blkio_req_t)); +--- +> bdbm_blkio_req_t* br = (bdbm_blkio_req_t*)bdbm_malloc_atomic (sizeof (bdbm_blkio_req_t)); +100,101c97,98 +< bdbm_error ("oops! # of vectors in bio is larger than %u %llu (type=%llu)", +< BDBM_BLKIO_MAX_VECS, br->bi_bvec_cnt, br->bi_rw); +--- +> bdbm_error ("oops! # of vectors in bio is larger than %u %llu", +> BDBM_BLKIO_MAX_VECS, br->bi_bvec_cnt); +111c108 +< bdbm_free (br); +--- +> bdbm_free_atomic (br); +118c115 +< bdbm_free (br); +--- +> bdbm_free_atomic (br); +139c136 +< bdbm_error ("bdbm_malloc failed"); +--- +> bdbm_error ("bdbm_malloc_atomic failed"); +142,144d138 +< #ifdef LAZY_INVALID_BACKGROUND_GC +< bdbm_sema_init (&bdi->host_lock); +< #else +146d139 +< #endif +221,223d213 +< #ifdef LAZY_INVALID_BACKGROUND_GC +< bdbm_sema_lock (&bdi->host_lock); +< #else +225d214 +< #endif +241,243d229 +< #ifdef LAZY_INVALID_BACKGROUND_GC +< bdbm_sema_unlock (&bdi->host_lock); +< #else +245d230 +< #endif +255d239 +< diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 1819192..6926ee9 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -1,5 +1,5 @@ #define NVM_CACHE -//#define NVM_CACHE_PARAM +#define NVM_CACHE_PARAM /* The MIT License (MIT) diff --git a/include/params.h b/include/params.h index 9e4bfb9..6d6213d 100644 --- a/include/params.h +++ b/include/params.h @@ -130,9 +130,9 @@ typedef struct { uint64_t nr_subpages_per_block; uint64_t nr_subpages_per_page; uint64_t nr_subpages_per_ssd; /* subpage size must be4 KB */ -#ifdef NVM_CACHE_PARAM +//#ifdef NVM_CACHE_PARAM uint64_t nr_nvm_blocks; -#endif +//#endif } bdbm_device_params_t; #endif /* _BLUEDBM_PARAMS_H */ From 8c7e5938e2c2f96e463ae72c0004d14a6cd3709c Mon Sep 17 00:00:00 2001 From: root Date: Tue, 25 Oct 2016 17:24:22 +0900 Subject: [PATCH 32/51] nvm alloc success --- cc.sh | 3 + common/.bdbm_main.o.cmd | 950 +++++++++++++++++++++++++++ common/bdbm_main.c | 12 + common/bdbm_main.o | Bin 0 -> 10328 bytes common/utils/.ufile.o.cmd | 964 ++++++++++++++++++++++++++++ common/utils/.umemory.o.cmd | 530 +++++++++++++++ common/utils/.uthread.o.cmd | 751 ++++++++++++++++++++++ common/utils/.utime.o.cmd | 622 ++++++++++++++++++ devices/common/dev_params.c | 21 +- devices/ramdrive/.dev_ramssd.o.cmd | 892 +++++++++++++++++++++++++ devices/ramdrive/.dm_ramdrive.o.cmd | 631 ++++++++++++++++++ devices/ramdrive/dev_ramssd.o | Bin 0 -> 15768 bytes devices/ramdrive/dm_ramdrive.o | Bin 0 -> 6776 bytes frontend/kernel/nvm_cache.c | 131 +++- frontend/kernel/nvm_cache.h | 20 +- include/bdbm_drv.h | 4 +- include/params.h | 6 +- 17 files changed, 5513 insertions(+), 24 deletions(-) create mode 100755 cc.sh create mode 100644 common/.bdbm_main.o.cmd create mode 100644 common/bdbm_main.o create mode 100644 common/utils/.ufile.o.cmd create mode 100644 common/utils/.umemory.o.cmd create mode 100644 common/utils/.uthread.o.cmd create mode 100644 common/utils/.utime.o.cmd create mode 100644 devices/ramdrive/.dev_ramssd.o.cmd create mode 100644 devices/ramdrive/.dm_ramdrive.o.cmd create mode 100644 devices/ramdrive/dev_ramssd.o create mode 100644 devices/ramdrive/dm_ramdrive.o diff --git a/cc.sh b/cc.sh new file mode 100755 index 0000000..4bb2cd3 --- /dev/null +++ b/cc.sh @@ -0,0 +1,3 @@ +cd /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing; make clean +cd /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel; make clean + diff --git a/common/.bdbm_main.o.cmd b/common/.bdbm_main.o.cmd new file mode 100644 index 0000000..64011d3 --- /dev/null +++ b/common/.bdbm_main.o.cmd @@ -0,0 +1,950 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/.bdbm_main.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(bdbm_main)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/.tmp_bdbm_main.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o := \ + include/linux/module.h \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/blkdev.h \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/blk/dev/integrity.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/blk/dev/bsg.h) \ + $(wildcard include/config/blk/dev/throttling.h) \ + $(wildcard include/config/bounce.h) \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/memcg/kmem.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + include/linux/capability.h \ + include/uapi/linux/capability.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/pid.h \ + include/linux/proportions.h \ + include/linux/percpu_counter.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rculist.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + $(wildcard include/config/security.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + include/uapi/linux/limits.h \ + include/linux/percpu-refcount.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ + include/uapi/linux/major.h \ + include/linux/genhd.h \ + $(wildcard include/config/fail/make/request.h) \ + $(wildcard include/config/solaris/x86/partition.h) \ + $(wildcard include/config/bsd/disklabel.h) \ + $(wildcard include/config/unixware/disklabel.h) \ + $(wildcard include/config/minix/subpartition.h) \ + include/linux/kdev_t.h \ + include/uapi/linux/kdev_t.h \ + include/linux/slab.h \ + $(wildcard include/config/debug/slab.h) \ + $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slab.h) \ + $(wildcard include/config/slub.h) \ + $(wildcard include/config/slob.h) \ + include/linux/kmemleak.h \ + $(wildcard include/config/debug/kmemleak.h) \ + include/linux/kasan.h \ + include/linux/device.h \ + $(wildcard include/config/debug/devres.h) \ + $(wildcard include/config/generic/msi/irq/domain.h) \ + $(wildcard include/config/pinctrl.h) \ + $(wildcard include/config/generic/msi/irq.h) \ + $(wildcard include/config/dma/cma.h) \ + $(wildcard include/config/of.h) \ + $(wildcard include/config/devtmpfs.h) \ + $(wildcard include/config/sysfs/deprecated.h) \ + include/linux/klist.h \ + include/linux/pinctrl/devinfo.h \ + include/linux/pinctrl/consumer.h \ + include/linux/seq_file.h \ + include/linux/pinctrl/pinctrl-state.h \ + include/linux/ratelimit.h \ + arch/x86/include/asm/device.h \ + $(wildcard include/config/x86/dev/dma/ops.h) \ + $(wildcard include/config/intel/iommu.h) \ + $(wildcard include/config/amd/iommu.h) \ + include/linux/pm_wakeup.h \ + include/linux/fs.h \ + $(wildcard include/config/fs/posix/acl.h) \ + $(wildcard include/config/cgroup/writeback.h) \ + $(wildcard include/config/ima.h) \ + $(wildcard include/config/fsnotify.h) \ + $(wildcard include/config/file/locking.h) \ + $(wildcard include/config/quota.h) \ + $(wildcard include/config/blk/dev/loop.h) \ + $(wildcard include/config/fs/dax.h) \ + $(wildcard include/config/migration.h) \ + include/linux/dcache.h \ + include/linux/rculist_bl.h \ + include/linux/list_bl.h \ + include/linux/bit_spinlock.h \ + include/linux/lockref.h \ + $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ + include/linux/path.h \ + include/linux/list_lru.h \ + include/linux/shrinker.h \ + include/linux/radix-tree.h \ + include/linux/semaphore.h \ + include/uapi/linux/fiemap.h \ + include/linux/migrate_mode.h \ + include/linux/blk_types.h \ + include/uapi/linux/fs.h \ + include/linux/quota.h \ + $(wildcard include/config/quota/netlink/interface.h) \ + include/uapi/linux/dqblk_xfs.h \ + include/linux/dqblk_v1.h \ + include/linux/dqblk_v2.h \ + include/linux/dqblk_qtree.h \ + include/linux/projid.h \ + include/uapi/linux/quota.h \ + include/linux/nfs_fs_i.h \ + include/linux/fcntl.h \ + include/uapi/linux/fcntl.h \ + arch/x86/include/uapi/asm/fcntl.h \ + include/uapi/asm-generic/fcntl.h \ + include/linux/pagemap.h \ + include/linux/mm.h \ + $(wildcard include/config/ppc.h) \ + $(wildcard include/config/parisc.h) \ + $(wildcard include/config/metag.h) \ + $(wildcard include/config/shmem.h) \ + $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/debug/pagealloc.h) \ + $(wildcard include/config/hugetlbfs.h) \ + include/linux/debug_locks.h \ + $(wildcard include/config/debug/locking/api/selftests.h) \ + include/linux/page_ext.h \ + $(wildcard include/config/idle/page/tracking.h) \ + $(wildcard include/config/page/owner.h) \ + include/linux/stacktrace.h \ + $(wildcard include/config/stacktrace.h) \ + $(wildcard include/config/user/stacktrace/support.h) \ + arch/x86/include/asm/pgtable.h \ + $(wildcard include/config/debug/wx.h) \ + $(wildcard include/config/have/arch/soft/dirty.h) \ + arch/x86/include/asm/pgtable_64.h \ + include/asm-generic/pgtable.h \ + $(wildcard include/config/have/arch/huge/vmap.h) \ + include/linux/page-flags.h \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + $(wildcard include/config/ksm.h) \ + include/linux/huge_mm.h \ + include/linux/vmstat.h \ + $(wildcard include/config/vm/event/counters.h) \ + $(wildcard include/config/debug/tlbflush.h) \ + $(wildcard include/config/debug/vm/vmacache.h) \ + include/linux/vm_event_item.h \ + $(wildcard include/config/memory/balloon.h) \ + $(wildcard include/config/balloon/compaction.h) \ + include/linux/highmem.h \ + include/linux/uaccess.h \ + arch/x86/include/asm/uaccess.h \ + $(wildcard include/config/x86/intel/usercopy.h) \ + $(wildcard include/config/debug/strict/user/copy/checks.h) \ + arch/x86/include/asm/smap.h \ + $(wildcard include/config/x86/smap.h) \ + arch/x86/include/asm/uaccess_64.h \ + include/linux/hardirq.h \ + include/linux/ftrace_irq.h \ + $(wildcard include/config/ftrace/nmi/enter.h) \ + include/linux/vtime.h \ + include/linux/context_tracking_state.h \ + $(wildcard include/config/context/tracking.h) \ + include/linux/static_key.h \ + arch/x86/include/asm/hardirq.h \ + $(wildcard include/config/x86/thermal/vector.h) \ + $(wildcard include/config/x86/mce/threshold.h) \ + $(wildcard include/config/x86/mce/amd.h) \ + $(wildcard include/config/hyperv.h) \ + include/linux/irq.h \ + $(wildcard include/config/irq/domain/hierarchy.h) \ + $(wildcard include/config/generic/pending/irq.h) \ + $(wildcard include/config/hardirqs/sw/resend.h) \ + $(wildcard include/config/generic/irq/legacy/alloc/hwirq.h) \ + $(wildcard include/config/generic/irq/legacy.h) \ + include/linux/irqhandler.h \ + include/linux/irqreturn.h \ + include/linux/irqnr.h \ + include/uapi/linux/irqnr.h \ + include/linux/io.h \ + arch/x86/include/asm/irq.h \ + arch/x86/include/asm/irq_regs.h \ + include/linux/irqdesc.h \ + $(wildcard include/config/irq/preflow/fasteoi.h) \ + $(wildcard include/config/sparse/irq.h) \ + $(wildcard include/config/handle/domain/irq.h) \ + arch/x86/include/asm/hw_irq.h \ + $(wildcard include/config/hpet/timer.h) \ + $(wildcard include/config/dmar/table.h) \ + $(wildcard include/config/ht/irq.h) \ + $(wildcard include/config/x86/uv.h) \ + include/linux/profile.h \ + $(wildcard include/config/profiling.h) \ + arch/x86/include/asm/sections.h \ + $(wildcard include/config/debug/rodata.h) \ + include/asm-generic/sections.h \ + arch/x86/include/asm/cacheflush.h \ + $(wildcard include/config/debug/rodata/test.h) \ + include/asm-generic/cacheflush.h \ + include/linux/hugetlb_inline.h \ + include/linux/backing-dev-defs.h \ + $(wildcard include/config/debug/fs.h) \ + include/linux/flex_proportions.h \ + include/linux/mempool.h \ + include/linux/bio.h \ + include/linux/ioprio.h \ + include/linux/iocontext.h \ + include/linux/bsg.h \ + include/uapi/linux/bsg.h \ + include/linux/scatterlist.h \ + $(wildcard include/config/debug/sg.h) \ + $(wildcard include/config/need/sg/dma/length.h) \ + include/linux/elevator.h \ + include/linux/hashtable.h \ + include/linux/hash.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/ftl_params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/../devices/common/dev_params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/llm_noq.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/llm_mq.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_nobuf.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_buf.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_dftl.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_rsd.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/devices.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/pmu.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/no_ftl.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/block_ftl.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/page_ftl.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/dftl.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/../frontend/kernel/nvm_cache.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.h \ + include/linux/buffer_head.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o): diff --git a/common/bdbm_main.c b/common/bdbm_main.c index 8ea0f6b..a9807b2 100644 --- a/common/bdbm_main.c +++ b/common/bdbm_main.c @@ -263,6 +263,9 @@ int bdbm_drv_run (bdbm_drv_info_t* bdi) /* display default parameters */ display_device_params (&bdi->parm_dev); display_ftl_params (&bdi->parm_ftl); +#ifdef NVM_CACHE +// display_nvm_params (&bdi->nvm_dev); +#endif /* init performance monitor */ pmu_create (bdi); @@ -274,6 +277,10 @@ int bdbm_drv_run (bdbm_drv_info_t* bdi) fail: if (host && host->close) host->close (bdi); +#ifdef NVM_CACHE + if (nvm && nvm->destroy) + nvm->destroy (bdi); +#endif if (hlm && hlm->destroy) hlm->destroy (bdi); if (ftl && ftl->destroy) @@ -304,6 +311,11 @@ void bdbm_drv_close (bdbm_drv_info_t* bdi) if (bdi->ptr_host_inf) bdi->ptr_host_inf->close (bdi); +#ifdef NVM_CACHE + if (bdi->ptr_nvm_inf) + bdi->ptr_nvm_inf->destroy (bdi); +#endif + if (bdi->ptr_hlm_inf) bdi->ptr_hlm_inf->destroy (bdi); diff --git a/common/bdbm_main.o b/common/bdbm_main.o new file mode 100644 index 0000000000000000000000000000000000000000..af8a95883252c6d30b5a2f87b884c0187349de1e GIT binary patch literal 10328 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 BP3Qms literal 0 HcmV?d00001 diff --git a/common/utils/.ufile.o.cmd b/common/utils/.ufile.o.cmd new file mode 100644 index 0000000..f62fdee --- /dev/null +++ b/common/utils/.ufile.o.cmd @@ -0,0 +1,964 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.ufile.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(ufile)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_ufile.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o := \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + $(wildcard include/config/64bit.h) \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + include/linux/module.h \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/syscalls.h \ + $(wildcard include/config/ftrace/syscalls.h) \ + $(wildcard include/config/old/sigsuspend.h) \ + $(wildcard include/config/old/sigsuspend3.h) \ + $(wildcard include/config/old/sigaction.h) \ + $(wildcard include/config/odd/rt/sigaction.h) \ + $(wildcard include/config/clone/backwards.h) \ + $(wildcard include/config/clone/backwards3.h) \ + include/uapi/linux/aio_abi.h \ + include/linux/capability.h \ + include/uapi/linux/capability.h \ + include/linux/signal.h \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/sem.h \ + $(wildcard include/config/sysvipc.h) \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/uapi/linux/unistd.h \ + arch/x86/include/asm/unistd.h \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + include/linux/quota.h \ + $(wildcard include/config/quota/netlink/interface.h) \ + include/linux/percpu_counter.h \ + include/uapi/linux/dqblk_xfs.h \ + include/linux/dqblk_v1.h \ + include/linux/dqblk_v2.h \ + include/linux/dqblk_qtree.h \ + include/linux/projid.h \ + include/uapi/linux/quota.h \ + include/linux/key.h \ + $(wildcard include/config/keys.h) \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/trace/syscall.h \ + $(wildcard include/config/have/syscall/tracepoints.h) \ + include/linux/tracepoint.h \ + $(wildcard include/config/tracepoint.h) \ + include/linux/static_key.h \ + include/linux/trace_events.h \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/events.h) \ + include/linux/ring_buffer.h \ + $(wildcard include/config/ring/buffer/allow/swap.h) \ + include/linux/kmemcheck.h \ + include/linux/mm.h \ + $(wildcard include/config/ppc.h) \ + $(wildcard include/config/parisc.h) \ + $(wildcard include/config/metag.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/shmem.h) \ + $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/debug/pagealloc.h) \ + $(wildcard include/config/hugetlbfs.h) \ + include/linux/debug_locks.h \ + $(wildcard include/config/debug/locking/api/selftests.h) \ + include/linux/bit_spinlock.h \ + include/linux/shrinker.h \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/page_ext.h \ + $(wildcard include/config/idle/page/tracking.h) \ + $(wildcard include/config/page/owner.h) \ + include/linux/stacktrace.h \ + $(wildcard include/config/stacktrace.h) \ + $(wildcard include/config/user/stacktrace/support.h) \ + arch/x86/include/asm/pgtable.h \ + $(wildcard include/config/debug/wx.h) \ + $(wildcard include/config/have/arch/soft/dirty.h) \ + arch/x86/include/asm/pgtable_64.h \ + include/asm-generic/pgtable.h \ + $(wildcard include/config/have/arch/huge/vmap.h) \ + include/linux/page-flags.h \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + $(wildcard include/config/ksm.h) \ + include/linux/huge_mm.h \ + include/linux/vmstat.h \ + $(wildcard include/config/vm/event/counters.h) \ + $(wildcard include/config/debug/tlbflush.h) \ + $(wildcard include/config/debug/vm/vmacache.h) \ + include/linux/vm_event_item.h \ + $(wildcard include/config/migration.h) \ + $(wildcard include/config/memory/balloon.h) \ + $(wildcard include/config/balloon/compaction.h) \ + include/linux/seq_file.h \ + include/linux/poll.h \ + include/linux/fs.h \ + $(wildcard include/config/fs/posix/acl.h) \ + $(wildcard include/config/security.h) \ + $(wildcard include/config/cgroup/writeback.h) \ + $(wildcard include/config/ima.h) \ + $(wildcard include/config/fsnotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/file/locking.h) \ + $(wildcard include/config/quota.h) \ + $(wildcard include/config/blk/dev/loop.h) \ + $(wildcard include/config/fs/dax.h) \ + $(wildcard include/config/block.h) \ + include/linux/kdev_t.h \ + include/uapi/linux/kdev_t.h \ + include/linux/dcache.h \ + include/linux/rculist.h \ + include/linux/rculist_bl.h \ + include/linux/list_bl.h \ + include/linux/lockref.h \ + $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ + include/linux/path.h \ + include/linux/list_lru.h \ + $(wildcard include/config/memcg/kmem.h) \ + include/linux/radix-tree.h \ + include/linux/pid.h \ + include/linux/semaphore.h \ + include/uapi/linux/fiemap.h \ + include/linux/migrate_mode.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/blk_types.h \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/blk/dev/integrity.h) \ + include/uapi/linux/fs.h \ + include/uapi/linux/limits.h \ + include/linux/nfs_fs_i.h \ + include/linux/fcntl.h \ + include/uapi/linux/fcntl.h \ + arch/x86/include/uapi/asm/fcntl.h \ + include/uapi/asm-generic/fcntl.h \ + arch/x86/include/asm/uaccess.h \ + $(wildcard include/config/x86/intel/usercopy.h) \ + $(wildcard include/config/debug/strict/user/copy/checks.h) \ + arch/x86/include/asm/smap.h \ + $(wildcard include/config/x86/smap.h) \ + arch/x86/include/asm/uaccess_64.h \ + include/uapi/linux/poll.h \ + arch/x86/include/uapi/asm/poll.h \ + include/uapi/asm-generic/poll.h \ + include/linux/trace_seq.h \ + include/linux/seq_buf.h \ + include/linux/hardirq.h \ + include/linux/ftrace_irq.h \ + $(wildcard include/config/ftrace/nmi/enter.h) \ + include/linux/vtime.h \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/virt/cpu/accounting.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + include/linux/context_tracking_state.h \ + $(wildcard include/config/context/tracking.h) \ + arch/x86/include/asm/hardirq.h \ + $(wildcard include/config/x86/thermal/vector.h) \ + $(wildcard include/config/x86/mce/threshold.h) \ + $(wildcard include/config/x86/mce/amd.h) \ + $(wildcard include/config/hyperv.h) \ + include/linux/irq.h \ + $(wildcard include/config/irq/domain/hierarchy.h) \ + $(wildcard include/config/generic/pending/irq.h) \ + $(wildcard include/config/hardirqs/sw/resend.h) \ + $(wildcard include/config/generic/irq/legacy/alloc/hwirq.h) \ + $(wildcard include/config/generic/irq/legacy.h) \ + include/linux/irqhandler.h \ + include/linux/irqreturn.h \ + include/linux/irqnr.h \ + include/uapi/linux/irqnr.h \ + include/linux/io.h \ + arch/x86/include/asm/irq.h \ + arch/x86/include/asm/irq_regs.h \ + include/linux/irqdesc.h \ + $(wildcard include/config/irq/preflow/fasteoi.h) \ + $(wildcard include/config/sparse/irq.h) \ + $(wildcard include/config/handle/domain/irq.h) \ + arch/x86/include/asm/hw_irq.h \ + $(wildcard include/config/hpet/timer.h) \ + $(wildcard include/config/dmar/table.h) \ + $(wildcard include/config/ht/irq.h) \ + $(wildcard include/config/x86/uv.h) \ + include/linux/profile.h \ + $(wildcard include/config/profiling.h) \ + arch/x86/include/asm/sections.h \ + $(wildcard include/config/debug/rodata.h) \ + include/asm-generic/sections.h \ + include/linux/perf_event.h \ + $(wildcard include/config/have/hw/breakpoint.h) \ + $(wildcard include/config/function/tracer.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cpu/sup/intel.h) \ + include/uapi/linux/perf_event.h \ + arch/x86/include/asm/perf_event.h \ + $(wildcard include/config/cpu/sup/amd.h) \ + arch/x86/include/asm/stacktrace.h \ + $(wildcard include/config/frame/pointer.h) \ + include/linux/uaccess.h \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + include/asm-generic/cputime_jiffies.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/proportions.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + include/linux/percpu-refcount.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ + include/linux/ptrace.h \ + include/linux/pid_namespace.h \ + $(wildcard include/config/pid/ns.h) \ + include/linux/nsproxy.h \ + include/linux/ns_common.h \ + include/uapi/linux/ptrace.h \ + arch/x86/include/asm/local64.h \ + include/asm-generic/local64.h \ + arch/x86/include/asm/local.h \ + arch/x86/include/asm/hw_breakpoint.h \ + arch/x86/include/uapi/asm/hw_breakpoint.h \ + include/linux/kdebug.h \ + arch/x86/include/asm/kdebug.h \ + include/linux/ftrace.h \ + $(wildcard include/config/dynamic/ftrace/with/regs.h) \ + $(wildcard include/config/dynamic/ftrace.h) \ + $(wildcard include/config/stack/tracer.h) \ + include/linux/trace_clock.h \ + arch/x86/include/asm/trace_clock.h \ + include/linux/kallsyms.h \ + arch/x86/include/asm/ftrace.h \ + arch/x86/include/asm/compat.h \ + arch/x86/include/asm/user32.h \ + include/linux/cpu.h \ + $(wildcard include/config/pm/sleep/smp.h) \ + include/linux/node.h \ + $(wildcard include/config/memory/hotplug/sparse.h) \ + include/linux/device.h \ + $(wildcard include/config/debug/devres.h) \ + $(wildcard include/config/generic/msi/irq/domain.h) \ + $(wildcard include/config/pinctrl.h) \ + $(wildcard include/config/generic/msi/irq.h) \ + $(wildcard include/config/dma/cma.h) \ + $(wildcard include/config/of.h) \ + $(wildcard include/config/devtmpfs.h) \ + $(wildcard include/config/sysfs/deprecated.h) \ + include/linux/klist.h \ + include/linux/pinctrl/devinfo.h \ + include/linux/pinctrl/consumer.h \ + include/linux/pinctrl/pinctrl-state.h \ + include/linux/ratelimit.h \ + arch/x86/include/asm/device.h \ + $(wildcard include/config/x86/dev/dma/ops.h) \ + $(wildcard include/config/intel/iommu.h) \ + $(wildcard include/config/amd/iommu.h) \ + include/linux/pm_wakeup.h \ + include/linux/irq_work.h \ + $(wildcard include/config/irq/work.h) \ + arch/x86/include/asm/irq_work.h \ + include/linux/jump_label_ratelimit.h \ + include/linux/perf_regs.h \ + $(wildcard include/config/have/perf/regs.h) \ + arch/x86/include/uapi/asm/perf_regs.h \ + include/linux/cgroup.h \ + include/uapi/linux/cgroupstats.h \ + include/uapi/linux/taskstats.h \ + include/linux/user_namespace.h \ + $(wildcard include/config/persistent/keyrings.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.h \ + include/linux/buffer_head.h \ + include/linux/pagemap.h \ + include/linux/highmem.h \ + arch/x86/include/asm/cacheflush.h \ + $(wildcard include/config/debug/rodata/test.h) \ + include/asm-generic/cacheflush.h \ + include/linux/hugetlb_inline.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o): diff --git a/common/utils/.umemory.o.cmd b/common/utils/.umemory.o.cmd new file mode 100644 index 0000000..954cd7e --- /dev/null +++ b/common/utils/.umemory.o.cmd @@ -0,0 +1,530 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.umemory.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(umemory)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_umemory.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o := \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/slab.h \ + $(wildcard include/config/debug/slab.h) \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slab.h) \ + $(wildcard include/config/slub.h) \ + $(wildcard include/config/slob.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/tracing.h) \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/virtual.h) \ + include/linux/bug.h \ + $(wildcard include/config/generic/bug.h) \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + $(wildcard include/config/smp.h) \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/modversions.h) \ + $(wildcard include/config/unused/symbols.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + include/uapi/linux/const.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/seqlock.h \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + $(wildcard include/config/sysfs.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/kmemleak.h \ + $(wildcard include/config/debug/kmemleak.h) \ + include/linux/kasan.h \ + include/linux/vmalloc.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o): diff --git a/common/utils/.uthread.o.cmd b/common/utils/.uthread.o.cmd new file mode 100644 index 0000000..4f9dcb3 --- /dev/null +++ b/common/utils/.uthread.o.cmd @@ -0,0 +1,751 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.uthread.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(uthread)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_uthread.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o := \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h \ + include/linux/completion.h \ + $(wildcard include/config/lockdep.h) \ + include/linux/wait.h \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/modversions.h) \ + $(wildcard include/config/unused/symbols.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + $(wildcard include/config/generic/bug.h) \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/uapi/linux/wait.h \ + include/linux/semaphore.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.h \ + include/linux/delay.h \ + arch/x86/include/asm/delay.h \ + include/asm-generic/delay.h \ + include/linux/kthread.h \ + include/linux/sched.h \ + $(wildcard include/config/no/hz/common.h) \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/smt.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memcg/kmem.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/uprobes.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + include/linux/capability.h \ + $(wildcard include/config/multiuser.h) \ + include/uapi/linux/capability.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/uapi/linux/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/linux/jiffies.h \ + include/generated/timeconst.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/rbtree.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/nodemask.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/movable/node.h) \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/hugetlb/page.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + arch/x86/include/uapi/asm/auxvec.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + include/linux/osq_lock.h \ + arch/x86/include/asm/rwsem.h \ + include/linux/uprobes.h \ + arch/x86/include/asm/uprobes.h \ + include/linux/notifier.h \ + include/linux/mutex.h \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/srcu.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + $(wildcard include/config/sysfs.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/uapi/linux/sysctl.h \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + $(wildcard include/config/memory/hotremove.h) \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + $(wildcard include/config/have/memoryless/nodes.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/linux/uidgid.h \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/pid.h \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/pfn.h \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/cma.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + include/linux/proportions.h \ + include/linux/percpu_counter.h \ + include/linux/gfp.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rculist.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + $(wildcard include/config/security.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + include/uapi/linux/limits.h \ + include/linux/idr.h \ + include/linux/percpu-refcount.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ + include/linux/module.h \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/kmod.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o): diff --git a/common/utils/.utime.o.cmd b/common/utils/.utime.o.cmd new file mode 100644 index 0000000..ac8c93d --- /dev/null +++ b/common/utils/.utime.o.cmd @@ -0,0 +1,622 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.utime.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(utime)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_utime.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o := \ + include/linux/module.h \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/slab.h \ + $(wildcard include/config/debug/slab.h) \ + $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slab.h) \ + $(wildcard include/config/slub.h) \ + $(wildcard include/config/slob.h) \ + include/linux/kmemleak.h \ + $(wildcard include/config/debug/kmemleak.h) \ + include/linux/kasan.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h \ + include/linux/semaphore.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o): diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index 43dccd6..90f05ad 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -54,9 +54,10 @@ enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_PROG_TIME_US = 500, /* 1.3ms */ NAND_PAGE_READ_TIME_US = 100, /* 100us */ NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ -//#ifdef NVM_CACHE -// NR_NVM_BLOCKS = 100, /* 4KB * 1048576 = 4GB */ -//#endif +#ifdef NVM_CACHE + NR_NVM_PAGES = 100, /* 4KB * 1048576 = 4GB */ + NVM_PAGE_SIZE = 4096, /* 4KB */ +#endif }; int _param_nr_channels = NR_CHANNELS; @@ -70,9 +71,10 @@ int _param_chip_bus_trans_time_us = NAND_CHIP_BUS_TRANS_TIME_US; int _param_page_prog_time_us = NAND_PAGE_PROG_TIME_US; int _param_page_read_time_us = NAND_PAGE_READ_TIME_US; int _param_block_erase_time_us = NAND_BLOCK_ERASE_TIME_US; -//#ifdef NVM_CACHE -//int _param_nr_nvm_blocks = NR_NVM_BLOCKS; -//#endif +#ifdef NVM_CACHE +int _param_nr_nvm_pages = NR_NVM_PAGES; +int _param_nvm_page_size = NVM_PAGE_SIZE; +#endif /* TODO: Hmm... there might be a more fancy way than this... */ #if defined (CONFIG_DEVICE_TYPE_RAMDRIVE) @@ -135,9 +137,10 @@ bdbm_device_params_t get_default_device_params (void) p.page_prog_time_us = _param_page_prog_time_us; p.page_read_time_us = _param_page_read_time_us; p.block_erase_time_us = _param_block_erase_time_us; -//#ifdef NVM_CACHE -// p.nr_nvm_blocks = _param_nr_nvm_blocks; -//#endif +#ifdef NVM_CACHE + p.nr_nvm_pages = _param_nr_nvm_pages; + p.nvm_page_size = _param_nvm_page_size; +#endif /* other parameters derived from user parameters */ p.nr_blocks_per_channel = p.nr_chips_per_channel * p.nr_blocks_per_chip; p.nr_blocks_per_ssd = p.nr_channels * p.nr_chips_per_channel * p.nr_blocks_per_chip; diff --git a/devices/ramdrive/.dev_ramssd.o.cmd b/devices/ramdrive/.dev_ramssd.o.cmd new file mode 100644 index 0000000..1d14c8e --- /dev/null +++ b/devices/ramdrive/.dev_ramssd.o.cmd @@ -0,0 +1,892 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/.dev_ramssd.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(dev_ramssd)" -D"KBUILD_MODNAME=KBUILD_STR(risa_dev_ramdrive_timing)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/.tmp_dev_ramssd.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o := \ + include/linux/slab.h \ + $(wildcard include/config/debug/slab.h) \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slab.h) \ + $(wildcard include/config/slub.h) \ + $(wildcard include/config/slob.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/tracing.h) \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/virtual.h) \ + include/linux/bug.h \ + $(wildcard include/config/generic/bug.h) \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + $(wildcard include/config/x86/32.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + $(wildcard include/config/smp.h) \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + $(wildcard include/config/64bit.h) \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + arch/x86/include/asm/posix_types.h \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/kernel.h \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/modversions.h) \ + $(wildcard include/config/unused/symbols.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + include/uapi/linux/const.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/seqlock.h \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + $(wildcard include/config/sysfs.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/kmemleak.h \ + $(wildcard include/config/debug/kmemleak.h) \ + include/linux/kasan.h \ + include/linux/interrupt.h \ + $(wildcard include/config/irq/forced/threading.h) \ + $(wildcard include/config/generic/irq/probe.h) \ + include/linux/irqreturn.h \ + include/linux/irqnr.h \ + include/uapi/linux/irqnr.h \ + include/linux/hardirq.h \ + include/linux/ftrace_irq.h \ + $(wildcard include/config/ftrace/nmi/enter.h) \ + include/linux/vtime.h \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/virt/cpu/accounting.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + include/linux/context_tracking_state.h \ + $(wildcard include/config/context/tracking.h) \ + include/linux/static_key.h \ + arch/x86/include/asm/hardirq.h \ + $(wildcard include/config/x86/thermal/vector.h) \ + $(wildcard include/config/x86/mce/threshold.h) \ + $(wildcard include/config/x86/mce/amd.h) \ + $(wildcard include/config/hyperv.h) \ + include/linux/irq.h \ + $(wildcard include/config/irq/domain/hierarchy.h) \ + $(wildcard include/config/generic/pending/irq.h) \ + $(wildcard include/config/hardirqs/sw/resend.h) \ + $(wildcard include/config/generic/irq/legacy/alloc/hwirq.h) \ + $(wildcard include/config/generic/irq/legacy.h) \ + include/linux/irqhandler.h \ + include/linux/io.h \ + $(wildcard include/config/have/arch/huge/vmap.h) \ + arch/x86/include/asm/irq.h \ + arch/x86/include/asm/irq_regs.h \ + include/linux/irqdesc.h \ + $(wildcard include/config/irq/preflow/fasteoi.h) \ + $(wildcard include/config/sparse/irq.h) \ + $(wildcard include/config/handle/domain/irq.h) \ + arch/x86/include/asm/hw_irq.h \ + $(wildcard include/config/hpet/timer.h) \ + $(wildcard include/config/dmar/table.h) \ + $(wildcard include/config/ht/irq.h) \ + $(wildcard include/config/x86/uv.h) \ + include/linux/profile.h \ + $(wildcard include/config/profiling.h) \ + arch/x86/include/asm/sections.h \ + $(wildcard include/config/debug/rodata.h) \ + include/asm-generic/sections.h \ + arch/x86/include/asm/uaccess.h \ + $(wildcard include/config/x86/intel/usercopy.h) \ + $(wildcard include/config/debug/strict/user/copy/checks.h) \ + arch/x86/include/asm/smap.h \ + $(wildcard include/config/x86/smap.h) \ + arch/x86/include/asm/uaccess_64.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/kref.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/umemory.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/bdbm_drv.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/utime.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h \ + include/linux/semaphore.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/ufile.h \ + include/linux/fs.h \ + $(wildcard include/config/fs/posix/acl.h) \ + $(wildcard include/config/security.h) \ + $(wildcard include/config/cgroup/writeback.h) \ + $(wildcard include/config/ima.h) \ + $(wildcard include/config/fsnotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/file/locking.h) \ + $(wildcard include/config/quota.h) \ + $(wildcard include/config/blk/dev/loop.h) \ + $(wildcard include/config/fs/dax.h) \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/migration.h) \ + include/linux/kdev_t.h \ + include/uapi/linux/kdev_t.h \ + include/linux/dcache.h \ + include/linux/rculist.h \ + include/linux/rculist_bl.h \ + include/linux/list_bl.h \ + include/linux/bit_spinlock.h \ + include/linux/lockref.h \ + $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ + include/linux/path.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/list_lru.h \ + $(wildcard include/config/memcg/kmem.h) \ + include/linux/shrinker.h \ + include/linux/radix-tree.h \ + include/linux/pid.h \ + include/linux/capability.h \ + include/uapi/linux/capability.h \ + include/uapi/linux/fiemap.h \ + include/linux/migrate_mode.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/blk_types.h \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/blk/dev/integrity.h) \ + include/uapi/linux/fs.h \ + include/uapi/linux/limits.h \ + include/linux/quota.h \ + $(wildcard include/config/quota/netlink/interface.h) \ + include/linux/percpu_counter.h \ + include/uapi/linux/dqblk_xfs.h \ + include/linux/dqblk_v1.h \ + include/linux/dqblk_v2.h \ + include/linux/dqblk_qtree.h \ + include/linux/projid.h \ + include/uapi/linux/quota.h \ + include/linux/nfs_fs_i.h \ + include/linux/fcntl.h \ + include/uapi/linux/fcntl.h \ + arch/x86/include/uapi/asm/fcntl.h \ + include/uapi/asm-generic/fcntl.h \ + include/linux/buffer_head.h \ + include/linux/pagemap.h \ + include/linux/mm.h \ + $(wildcard include/config/ppc.h) \ + $(wildcard include/config/parisc.h) \ + $(wildcard include/config/metag.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/shmem.h) \ + $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/debug/pagealloc.h) \ + $(wildcard include/config/hugetlbfs.h) \ + include/linux/debug_locks.h \ + $(wildcard include/config/debug/locking/api/selftests.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + arch/x86/include/uapi/asm/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/page_ext.h \ + $(wildcard include/config/idle/page/tracking.h) \ + $(wildcard include/config/page/owner.h) \ + include/linux/stacktrace.h \ + $(wildcard include/config/stacktrace.h) \ + $(wildcard include/config/user/stacktrace/support.h) \ + arch/x86/include/asm/pgtable.h \ + $(wildcard include/config/debug/wx.h) \ + $(wildcard include/config/have/arch/soft/dirty.h) \ + arch/x86/include/asm/pgtable_64.h \ + include/asm-generic/pgtable.h \ + include/linux/page-flags.h \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + $(wildcard include/config/ksm.h) \ + include/linux/huge_mm.h \ + include/linux/vmstat.h \ + $(wildcard include/config/vm/event/counters.h) \ + $(wildcard include/config/debug/tlbflush.h) \ + $(wildcard include/config/debug/vm/vmacache.h) \ + include/linux/vm_event_item.h \ + $(wildcard include/config/memory/balloon.h) \ + $(wildcard include/config/balloon/compaction.h) \ + include/linux/highmem.h \ + include/linux/uaccess.h \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + include/asm-generic/cputime_jiffies.h \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/proportions.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + include/linux/idr.h \ + include/linux/percpu-refcount.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ + arch/x86/include/asm/cacheflush.h \ + $(wildcard include/config/debug/rodata/test.h) \ + include/asm-generic/cacheflush.h \ + include/linux/hugetlb_inline.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.h \ + include/linux/module.h \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/kmod.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/kobject_ns.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o): diff --git a/devices/ramdrive/.dm_ramdrive.o.cmd b/devices/ramdrive/.dm_ramdrive.o.cmd new file mode 100644 index 0000000..f2a6809 --- /dev/null +++ b/devices/ramdrive/.dm_ramdrive.o.cmd @@ -0,0 +1,631 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/.dm_ramdrive.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(dm_ramdrive)" -D"KBUILD_MODNAME=KBUILD_STR(risa_dev_ramdrive_timing)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/.tmp_dm_ramdrive.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o := \ + include/linux/module.h \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/debug.h \ + $(wildcard include/config/enable/msg.h) \ + $(wildcard include/config/enable/debug.h) \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/bdbm_drv.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/utime.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h \ + include/linux/semaphore.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_params.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.h \ + include/linux/slab.h \ + $(wildcard include/config/debug/slab.h) \ + $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slab.h) \ + $(wildcard include/config/slub.h) \ + $(wildcard include/config/slob.h) \ + include/linux/kmemleak.h \ + $(wildcard include/config/debug/kmemleak.h) \ + include/linux/kasan.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/umemory.h \ + /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/../../ftl/hlm_reqs_pool.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o): diff --git a/devices/ramdrive/dev_ramssd.o b/devices/ramdrive/dev_ramssd.o new file mode 100644 index 0000000000000000000000000000000000000000..8db9623aaa52746259df50ca23748e8510117a60 GIT binary patch literal 15768 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 + uint64_t nvm_size_in_bytes; + + nvm_size_in_bytes = + page_size_in_bytes * ptr_np->nr_nvm_pages; + + if((ptr_nvmram = (void*) bdbm_malloc + (nvm_size_in_bytes * sizeof(uint8_t))) == NULL) { + bdbm_error("bdbm_malloc failed (nvm size = %llu bytes)", nvm_size_in_bytes); + return NULL; + } + bdbm_memset ((uint8_t*) ptr_nvmram, 0xFF, nvm_size_in_bytes * sizeof (uint8_t)); + bdbm_msg("nvm cache addr = %p", ptr_nvmram); + + return (void*) ptr_nvmram; + +} + + +static void* __nvm_alloc_nvmram_tbl (bdbm_device_params_t* np) +{ + bdbm_nvm_page_t* me; + uint64_t i, j; + + /* allocate mapping entries */ + if ((me = (bdbm_nvm_page_t*) bdbm_zmalloc + (sizeof (bdbm_nvm_page_t) * np->nr_nvm_pages)) == NULL) { + return NULL; + } + + /* initialize a mapping table */ + for (i = 0; i < np->nr_nvm_pages; i++){ + me[i].logaddr.ofs = -1; + for (j = 0; j < np->nr_subpages_per_page; j ++){ + me[i].logaddr.lpa[j] = -1; + } + } + + return me; +} + + + + uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi){ -// if (bdi->ptr_nvm_inf) - bdbm_msg("create succeeds"); + + bdbm_nvm_dev_private_t* p = NULL; + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + + if (!bdi->ptr_nvm_inf) + return 1; + + /* create a private data structure */ + if ((p = (bdbm_nvm_dev_private_t*)bdbm_zmalloc + (sizeof (bdbm_nvm_dev_private_t))) == NULL) { + bdbm_error ("bdbm_malloc failed"); + bdbm_nvm_destroy(bdi); + return 1; + } + + /* assign p into ptr_private to destroy it properly upon a fail */ + _nvm_dev.ptr_private = (void*)p; + + p->nr_total_pages = np->nr_nvm_pages; + p->np = np; + + /* alloc ptr_nvmram_data: ptr_nvm_data */ + if((p->ptr_nvmram = __nvm_alloc_nvmram (np)) == NULL) { + bdbm_error ("__alloc_nvmram failed"); + bdbm_nvm_destroy(bdi); + return 1; + } + + /* alloc page table: ptr_nvm_tbl */ + if((p->ptr_nvm_tbl = __nvm_alloc_nvmram_tbl (np)) == NULL) { + bdbm_error ("__alloc_nvmram table failed"); + bdbm_nvm_destroy(bdi); + return 1; + } + + /* initialize lock and list */ + bdbm_spin_lock_init (&p->nvm_lock); + + if((p->lru_list = (struct list_head*) bdbm_zmalloc (sizeof(struct list_head))) == NULL) { + bdbm_error ("__alloc nvmram lru_list failed"); + bdbm_nvm_destroy(bdi); + return 1; + } + + bdbm_msg("=========================================================="); + bdbm_msg("NVM CONFIGURATION"); + bdbm_msg("=========================================================="); + bdbm_msg("total size = %llu, nr_nvm_pages = %llu, nvm_page_size = %llu", + np->nr_nvm_pages * np->nvm_page_size, np->nr_nvm_pages, np->nvm_page_size); + return 0; } + +void bdbm_nvm_destroy (bdbm_drv_info_t* bdi) +{ + bdbm_nvm_dev_private_t* p = _nvm_dev.ptr_private; + + if(!p) + return; + + if(p->ptr_nvmram) { + bdbm_free (p->ptr_nvmram); + } + + if(p->ptr_nvm_tbl) { + bdbm_free (p->ptr_nvmram); + } + + if(p->lru_list) { + bdbm_free (p->lru_list); + } + + bdbm_free(p); + + return; +} + #endif diff --git a/frontend/kernel/nvm_cache.h b/frontend/kernel/nvm_cache.h index e035035..4ee2acc 100644 --- a/frontend/kernel/nvm_cache.h +++ b/frontend/kernel/nvm_cache.h @@ -25,6 +25,9 @@ THE SOFTWARE. //#ifndef _BLUEDBM_HOST_BLKDEV_H //#define _BLUEDBM_HOST_BLKDEV_H + +#define NVM_BLK_SIZE 4096 + extern bdbm_nvm_inf_t _nvm_dev; @@ -32,25 +35,28 @@ typedef struct { uint8_t status; bdbm_logaddr_t logaddr; // bdbm_phyaddr_t phyaddr; -// struct list_head list; /* for lru list */ - void* ptr_nvmram_data; -} bdbm_nvm_block_t; + struct list_head lru_list; /* for lru list */ +} bdbm_nvm_page_t; typedef struct { bdbm_device_params_t* np; - uint64_t nr_total_blks; - bdbm_spinlock_t nvm_lock; + uint64_t nr_total_pages; - bdbm_nvm_block_t* ptr_nvm_tbl; void* ptr_nvmram; /* DRAM memory for nvm */ - struct list_head lru_list; +// bdbm_nvm_page_t* ptr_nvm_rb_tree; + bdbm_nvm_page_t* ptr_nvm_tbl; + + + bdbm_spinlock_t nvm_lock; + struct list_head* lru_list; // bdbm_nvm_block_t* ptr_lru_list; } bdbm_nvm_dev_private_t; uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi); +void bdbm_nvm_destroy (bdbm_drv_info_t* bdi); //#endif diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 6926ee9..6e86d80 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -1,5 +1,4 @@ #define NVM_CACHE -#define NVM_CACHE_PARAM /* The MIT License (MIT) @@ -256,8 +255,9 @@ typedef struct { typedef struct { void* ptr_private; uint32_t (*create) (bdbm_drv_info_t* bdi); -#if 0 void (*destroy) (bdbm_drv_info_t* bdi); + +#if 0 uint32_t (*get_free_ppa) (bdbm_drv_info_t* bdi, int64_t lpa, bdbm_phyaddr_t* ppa); uint32_t (*get_ppa) (bdbm_drv_info_t* bdi, int64_t lpa, bdbm_phyaddr_t* ppa, uint64_t* sp_off); uint32_t (*map_lpa_to_ppa) (bdbm_drv_info_t* bdi, bdbm_logaddr_t* logaddr, bdbm_phyaddr_t* ppa); diff --git a/include/params.h b/include/params.h index 6d6213d..dae3ac6 100644 --- a/include/params.h +++ b/include/params.h @@ -1,3 +1,4 @@ +//#include "bdbm_drv.h" /* The MIT License (MIT) @@ -130,8 +131,9 @@ typedef struct { uint64_t nr_subpages_per_block; uint64_t nr_subpages_per_page; uint64_t nr_subpages_per_ssd; /* subpage size must be4 KB */ -//#ifdef NVM_CACHE_PARAM - uint64_t nr_nvm_blocks; +//#ifdef NVM_CACHE + uint64_t nr_nvm_pages; + uint64_t nvm_page_size; //#endif } bdbm_device_params_t; From ff3d1d3d774fbf99a32855d78064a82f298f9546 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 25 Oct 2016 17:26:32 +0900 Subject: [PATCH 33/51] nvm alloc success - v0 --- cc.sh | 4 ++++ common/bdbm_main.o | Bin 10328 -> 0 bytes devices/ramdrive/dev_ramssd.o | Bin 15768 -> 0 bytes devices/ramdrive/dm_ramdrive.o | Bin 6776 -> 0 bytes 4 files changed, 4 insertions(+) delete mode 100644 common/bdbm_main.o delete mode 100644 devices/ramdrive/dev_ramssd.o delete mode 100644 devices/ramdrive/dm_ramdrive.o diff --git a/cc.sh b/cc.sh index 4bb2cd3..c233c01 100755 --- a/cc.sh +++ b/cc.sh @@ -1,3 +1,7 @@ cd /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing; make clean cd /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel; make clean +cd /home/ejlee/cooperate/bdbm_drv_dummy_gc/common; rm *.o *.cmd +cd /home/ejlee/cooperate/bdbm_drv_dummy_gc/common/utils; rm *.o *.cmd +cd /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive; rm *.o *.cmd + diff --git a/common/bdbm_main.o b/common/bdbm_main.o deleted file mode 100644 index af8a95883252c6d30b5a2f87b884c0187349de1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10328 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 BP3Qms diff --git a/devices/ramdrive/dev_ramssd.o b/devices/ramdrive/dev_ramssd.o deleted file mode 100644 index 8db9623aaa52746259df50ca23748e8510117a60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15768 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 Date: Sat, 29 Oct 2016 16:12:23 +0900 Subject: [PATCH 34/51] nvm cache with search & writeback (no trim, no skip for data serviced by nvm) --- frontend/kernel/blkio.c | 20 +- frontend/kernel/blkio.h | 9 + frontend/kernel/nvm_cache.c | 296 ++++++- frontend/kernel/nvm_cache.h | 10 +- frontend/kernel/nvm_cache_bak/nvm_cache.c | 255 ------ frontend/kernel/nvm_cache_bak/nvm_cache.h | 82 -- ftl/ftl_params.c | 4 + ftl/hlm_nobuf.c | 100 +++ ftl/hlm_nobuf.h | 4 + ftl/hlm_reqs_pool.c | 77 ++ ftl/hlm_reqs_pool.h | 4 +- include/bdbm_drv.h | 21 +- tags | 905 ++++++++++++---------- 13 files changed, 1027 insertions(+), 760 deletions(-) delete mode 100644 frontend/kernel/nvm_cache_bak/nvm_cache.c delete mode 100644 frontend/kernel/nvm_cache_bak/nvm_cache.h diff --git a/frontend/kernel/blkio.c b/frontend/kernel/blkio.c index 0e7e32a..0357384 100644 --- a/frontend/kernel/blkio.c +++ b/frontend/kernel/blkio.c @@ -36,8 +36,10 @@ THE SOFTWARE. #include "blkdev.h" #include "blkdev_ioctl.h" +#ifdef NVM_CACHE +#else #include "hlm_reqs_pool.h" - +#endif /*#define ENABLE_DISPLAY*/ extern bdbm_drv_info_t* _bdi; @@ -50,12 +52,14 @@ bdbm_host_inf_t _blkio_inf = { .end_req = blkio_end_req, }; +#ifdef NVM_CACHE +#else typedef struct { bdbm_sema_t host_lock; atomic_t nr_host_reqs; bdbm_hlm_reqs_pool_t* hlm_reqs_pool; } bdbm_blkio_private_t; - +#endif /* This is a call-back function invoked by a block-device layer */ static bdbm_blkio_req_t* __get_blkio_req (struct bio *bio) @@ -191,6 +195,9 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); bdbm_blkio_req_t* br = NULL; bdbm_hlm_req_t* hr = NULL; +#ifdef NVM_CACHE + int64_t remains = 0; +#endif /* get blkio */ if ((br = __get_blkio_req ((struct bio*)bio)) == NULL) { @@ -210,6 +217,14 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) goto fail; } +#ifdef NVM_CACHE + /* search cache */ + if(bdi->ptr_nvm_inf->make_req != NULL){ + remains = bdi->ptr_nvm_inf->make_req(bdi, hr); + bdbm_bug_on(remains < 0); + } +#endif + /* lock a global mutex -- this function must be finished as soon as possible */ bdbm_sema_lock (&p->host_lock); @@ -259,4 +274,3 @@ void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) /* decreate # of reqs */ atomic_dec (&p->nr_host_reqs); } - diff --git a/frontend/kernel/blkio.h b/frontend/kernel/blkio.h index 1e896f9..175ef11 100644 --- a/frontend/kernel/blkio.h +++ b/frontend/kernel/blkio.h @@ -32,5 +32,14 @@ void blkio_close (bdbm_drv_info_t* bdi); void blkio_make_req (bdbm_drv_info_t* bdi, void* req); void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req); +#ifdef NVM_CACHE +#include "hlm_reqs_pool.h" +typedef struct { + bdbm_sema_t host_lock; + atomic_t nr_host_reqs; + bdbm_hlm_reqs_pool_t* hlm_reqs_pool; +} bdbm_blkio_private_t; +#endif + #endif diff --git a/frontend/kernel/nvm_cache.c b/frontend/kernel/nvm_cache.c index 97bfb11..66f8528 100644 --- a/frontend/kernel/nvm_cache.c +++ b/frontend/kernel/nvm_cache.c @@ -32,6 +32,8 @@ THE SOFTWARE. #include "debug.h" #include "params.h" #include "umemory.h" +//#include "hlm_reqs_pool.h" +#include "blkio.h" //#include "blkdev.h" //#include "blkdev_ioctl.h" @@ -44,7 +46,7 @@ bdbm_nvm_inf_t _nvm_dev = { .ptr_private = NULL, .create = bdbm_nvm_create, .destroy = bdbm_nvm_destroy, -// .make_req = nvm_make_req, + .make_req = bdbm_nvm_make_req, // .end_req = nvm_end_req, }; @@ -85,6 +87,10 @@ static void* __nvm_alloc_nvmram_tbl (bdbm_device_params_t* np) /* initialize a mapping table */ for (i = 0; i < np->nr_nvm_pages; i++){ + // index + me[i].index = i; + + // logaddr me[i].logaddr.ofs = -1; for (j = 0; j < np->nr_subpages_per_page; j ++){ me[i].logaddr.lpa[j] = -1; @@ -101,6 +107,7 @@ uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi){ bdbm_nvm_dev_private_t* p = NULL; bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + uint64_t i; if (!bdi->ptr_nvm_inf) return 1; @@ -117,6 +124,8 @@ uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi){ _nvm_dev.ptr_private = (void*)p; p->nr_total_pages = np->nr_nvm_pages; + p->nr_free_pages = p->nr_total_pages; + p->nr_inuse_pages = 0; p->np = np; /* alloc ptr_nvmram_data: ptr_nvm_data */ @@ -134,13 +143,25 @@ uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi){ } /* initialize lock and list */ - bdbm_spin_lock_init (&p->nvm_lock); + bdbm_sema_init (&p->nvm_lock); if((p->lru_list = (struct list_head*) bdbm_zmalloc (sizeof(struct list_head))) == NULL) { bdbm_error ("__alloc nvmram lru_list failed"); bdbm_nvm_destroy(bdi); return 1; } + if((p->free_list = (struct list_head*) bdbm_zmalloc (sizeof(struct list_head))) == NULL) { + bdbm_error ("__alloc nvmram free_list failed"); + bdbm_nvm_destroy(bdi); + return 1; + } + + INIT_LIST_HEAD(p->lru_list); + INIT_LIST_HEAD(p->free_list); + + /* add all pages into free list */ + for (i=0; inr_total_pages; i++) + list_add (&p->ptr_nvm_tbl[i].list, p->free_list); bdbm_msg("=========================================================="); bdbm_msg("NVM CONFIGURATION"); @@ -164,16 +185,285 @@ void bdbm_nvm_destroy (bdbm_drv_info_t* bdi) } if(p->ptr_nvm_tbl) { - bdbm_free (p->ptr_nvmram); + bdbm_free (p->ptr_nvm_tbl); } if(p->lru_list) { bdbm_free (p->lru_list); } + if(p->free_list) { + bdbm_free (p->free_list); + } + + bdbm_free(p); return; } +int64_t bdbm_nvm_find_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) +{ + /* search nvm cache */ + bdbm_nvm_dev_private_t* p = _nvm_dev.ptr_private; + bdbm_nvm_page_t* nvm_tbl = p->ptr_nvm_tbl; + uint64_t i = 0; + int64_t found = -1; + uint64_t lpa; + + lpa = lr->logaddr.lpa[0]; + + for(i = 0; i < p->nr_total_pages; i++){ + if(nvm_tbl[i].logaddr.lpa[0] == lpa){ + bdbm_msg("read hit: lpa = %llu", lpa); + found = i; + break; + } + } + + return found; +} + +uint64_t bdbm_nvm_read_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) +{ + /* search nvm cache */ + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + bdbm_nvm_dev_private_t* p = _nvm_dev.ptr_private; + int64_t nvm_idx = -1; + uint8_t* ptr_nvmram_addr = NULL; + + + /* search data */ + nvm_idx = bdbm_nvm_find_data(bdi, lr); + + if(nvm_idx < 0){ + bdbm_msg("not found in nvm"); + return 0; // not found + } + + /* get data addr */ + bdbm_bug_on(np->nr_subpages_per_page != 1); + bdbm_bug_on(np->page_main_size / KERNEL_PAGE_SIZE != 1); + bdbm_bug_on(np->page_main_size != np->nvm_page_size); + + ptr_nvmram_addr = p->ptr_nvmram + (nvm_idx * np->nvm_page_size); + + bdbm_msg("nvm_idx =%d, ptr_nvm = %p, dst_addr= %p", + nvm_idx, ptr_nvmram_addr, lr->fmain.kp_ptr[0]); + + bdbm_bug_on(ptr_nvmram_addr == NULL); + + /* copy data */ + bdbm_bug_on(!lr); + bdbm_bug_on(!lr->fmain.kp_ptr[0]); + + bdbm_memcpy(lr->fmain.kp_ptr[0], ptr_nvmram_addr, KERNEL_PAGE_SIZE); + + /* update lr req's status */ + lr->serviced_by_nvm = 1; + return 1; +} + +static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) +{ + /* find nvm cache */ + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + bdbm_blkio_private_t* bp = (bdbm_blkio_private_t*) BDBM_HOST_PRIV(bdi); + bdbm_nvm_dev_private_t* p = _nvm_dev.ptr_private; + + bdbm_nvm_page_t* npage = NULL; + bdbm_nvm_page_t* epage = NULL; + uint8_t* edata_ptr = NULL; + bdbm_hlm_req_t* hr = NULL; + int64_t nindex = -1; + int64_t eindex = -1; + + /* get a free page */ +// if(p->nr_free_pages > LOW_WATERMARK){ + if(p->nr_free_pages > 0){ + bdbm_msg("get a free nvm buffer"); + bdbm_bug_on(list_empty(p->free_list)); + npage = list_last_entry(p->free_list, bdbm_nvm_page_t, list); + bdbm_bug_on(npage == NULL); + nindex = npage->index; + p->nr_free_pages --; + p->nr_inuse_pages ++; + } + else { // eviction is needed + bdbm_msg("nvm is full"); + bdbm_bug_on(!list_empty(p->free_list)); + epage = list_last_entry(p->lru_list, bdbm_nvm_page_t, list); + bdbm_bug_on(epage == NULL); + eindex = epage->index; + edata_ptr = p->ptr_nvmram + (eindex * np->nvm_page_size); + bdbm_bug_on(!edata_ptr); + + /* get a free hlm_req from the hlm_reqs_pool */ + if((hr = bdbm_hlm_reqs_pool_get_item(bp->hlm_reqs_pool)) == NULL){ + bdbm_error("bdbm_hlm_reqs_pool_get_item () failed"); + goto fail; + } + bdbm_msg("hr is created"); +// 여기에서 edata cpy 할 때 lock 걸어야 할듯. 일단은 global lock 사용해보자. + + /* build hlm_req with nvm_info */ + // 아래 함수에서 logaddr 을 많이 보내고, 그걸로 만들도록 하는게 좋을듯. + // 일단은 하나만 보내보자. + if (bdbm_hlm_reqs_pool_build_wb_req (hr, &epage->logaddr, edata_ptr) != 0) { + bdbm_error ("bdbm_hlm_reqs_pool_build_req () failed"); + goto fail; + } + + /* send req */ + bdbm_sema_lock (&bp->host_lock); +// atomic_inc (&bp->nr_host_reqs); // 이건 증가안시켜도 됨. + bdbm_msg("host_lock is acquired"); + + if(bdi->ptr_hlm_inf->make_wb_req (bdi, hr) != 0) { + bdbm_error ("'bdi->ptr_hlm_inf->make_req' failed"); + } + bdbm_sema_unlock (&bp->host_lock); + bdbm_msg("host_lock is released"); + + /* wait for writeback to be completed */ + bdbm_sema_lock (&hr->done); + bdbm_msg("writeback is completed"); + + bdbm_hlm_reqs_pool_free_item (bp->hlm_reqs_pool, hr); // release lock here + + + /* set new page index */ + nindex = eindex; + npage = epage; + } + + bdbm_bug_on(nindex == -1); + + // add new node into lru list + + list_del(&npage->list); + list_add(&npage->list, p->lru_list); + bdbm_msg("new nvm_buffer is added to lru_list"); + + bdbm_bug_on(p->nr_free_pages + p->nr_inuse_pages != p->nr_total_pages); + + return nindex; + +fail: + if (hr) + bdbm_hlm_reqs_pool_free_item (bp->hlm_reqs_pool, hr); + bdbm_bug_on(1); + + return -1; + +} + +uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) +{ + /* find nvm cache */ + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + bdbm_nvm_dev_private_t* p = _nvm_dev.ptr_private; + int64_t nvm_idx = -1; + uint8_t* ptr_nvmram_addr = NULL; + + /* find data */ + nvm_idx = bdbm_nvm_find_data(bdi, lr); + + /* write miss */ + if(nvm_idx < 0){ + bdbm_msg("alloc nvm for data write"); + nvm_idx = bdbm_nvm_alloc_slot(bdi, lr); + } + bdbm_bug_on(nvm_idx < 0); + + /* get data addr */ + bdbm_bug_on(np->nr_subpages_per_page != 1); + bdbm_bug_on(np->page_main_size / KERNEL_PAGE_SIZE != 1); + bdbm_bug_on(np->page_main_size != np->nvm_page_size); + + ptr_nvmram_addr = p->ptr_nvmram + (nvm_idx * np->nvm_page_size); + bdbm_bug_on(!ptr_nvmram_addr); + + /* copy data */ + bdbm_memcpy(ptr_nvmram_addr, lr->fmain.kp_ptr[0], KERNEL_PAGE_SIZE); + bdbm_msg("data write succeeds"); + + /* update lr req's status */ + lr->serviced_by_nvm = 1; + + /**********************************/ + /* */ + /* update page table or send trim */ + /* */ + /**********************************/ + + return 1; +} + + +int64_t bdbm_nvm_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr){ + + /* find nvm cache */ + bdbm_nvm_dev_private_t* p = _nvm_dev.ptr_private; + bdbm_llm_req_t* lr; + int64_t n, nr_remains; + + nr_remains = hr->nr_llm_reqs; + + bdbm_sema_lock (&p->nvm_lock); + + /* for nr_llm_reqs */ + for (n = 0; n < hr->nr_llm_reqs; n++) { + lr = &hr->llm_reqs[n]; + + if(lr->req_type == REQTYPE_READ){ + if(bdbm_nvm_read_data (bdi, &hr->llm_reqs[n])) + nr_remains --; + + }else if(lr->req_type == REQTYPE_WRITE){ + if(bdbm_nvm_write_data(bdi, &hr->llm_reqs[n])) + nr_remains --; + + else + bdbm_bug_on(1); + } + } + + bdbm_sema_unlock (&p->nvm_lock); + + bdbm_bug_on((hr->req_type == REQTYPE_WRITE) && (nr_remains != 0)); + + return nr_remains; + +} + + +#if 0 +static int __hlm_reqs_pool_create_trim_req ( + bdbm_hlm_reqs_pool_t* pool, + bdbm_hlm_req_t* hr, + bdbm_blkio_req_t* br) +{ + int64_t sec_start, sec_end; + + /* trim boundary sectors */ + sec_start = BDBM_ALIGN_UP (br->bi_offset, NR_KSECTORS_IN(pool->map_unit)); + sec_end = BDBM_ALIGN_DOWN (br->bi_offset + br->bi_size, NR_KSECTORS_IN(pool->map_unit)); + + /* initialize variables */ + hr->req_type = br->bi_rw; + bdbm_stopwatch_start (&hr->sw); + if (sec_start < sec_end) { + hr->lpa = (sec_start) / NR_KSECTORS_IN(pool->map_unit); + hr->len = (sec_end - sec_start) / NR_KSECTORS_IN(pool->map_unit); + } else { + hr->lpa = (sec_start) / NR_KSECTORS_IN(pool->map_unit); + hr->len = 0; + } + hr->blkio_req = (void*)br; + hr->ret = 0; + + return 0; +} #endif +#endif // ifdef NVM_CACHE diff --git a/frontend/kernel/nvm_cache.h b/frontend/kernel/nvm_cache.h index 4ee2acc..e8352ca 100644 --- a/frontend/kernel/nvm_cache.h +++ b/frontend/kernel/nvm_cache.h @@ -33,23 +33,26 @@ extern bdbm_nvm_inf_t _nvm_dev; typedef struct { uint8_t status; + int64_t index; bdbm_logaddr_t logaddr; // bdbm_phyaddr_t phyaddr; - struct list_head lru_list; /* for lru list */ + struct list_head list; /* for lru list */ } bdbm_nvm_page_t; typedef struct { bdbm_device_params_t* np; uint64_t nr_total_pages; - + uint64_t nr_free_pages; + uint64_t nr_inuse_pages; void* ptr_nvmram; /* DRAM memory for nvm */ // bdbm_nvm_page_t* ptr_nvm_rb_tree; bdbm_nvm_page_t* ptr_nvm_tbl; - bdbm_spinlock_t nvm_lock; + bdbm_sema_t nvm_lock; struct list_head* lru_list; + struct list_head* free_list; // bdbm_nvm_block_t* ptr_lru_list; @@ -57,6 +60,7 @@ typedef struct { uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi); void bdbm_nvm_destroy (bdbm_drv_info_t* bdi); +int64_t bdbm_nvm_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr); //#endif diff --git a/frontend/kernel/nvm_cache_bak/nvm_cache.c b/frontend/kernel/nvm_cache_bak/nvm_cache.c deleted file mode 100644 index d48037a..0000000 --- a/frontend/kernel/nvm_cache_bak/nvm_cache.c +++ /dev/null @@ -1,255 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 CSAIL, MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -//#include "debug.h" -//#include "params.h" -//#include "bdbm_drv.h" -//#include "utime.h" -//#include "umemory.h" - -#if 0 -#include "algo/no_ftl.h" -#include "algo/block_ftl.h" -#include "algo/page_ftl.h" -#endif - -#include "nvm_cache.h" - - -/* interface for nvm_dev */ -bdbm_nvm_inf_t _nvm_dev = { - .ptr_private = NULL, - .create = nvm_create, -// .destroy = nvm_destroy, -// .make_req = nvm_make_req, -// .end_req = nvm_end_req, -}; - - -uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi){ - if (bdi->ptr_nvm_inf) - bdbm_msg("create succeeds"); - else - bdbm_msg("something wrong happens"); - return 0; -} - -#if 0 - -uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi) -{ - bdbm_nvm_dev_private_t* p = NULL; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - - /* create a private data structure */ - if ((p = (bdbm_nvm_dev_private_t*)bdbm_zmalloc - (sizeof (bdbm_nvm_dev_private_t))) == NULL) { - bdbm_error ("bdbm_malloc failed"); - return 1; - } - - /* initialize */ - _nvm_dev.ptr_private = (void*)p; - - p->np = np; - p->nr_total_blks = np->nr_nvm_blocks; - bdbm_spin_lock_init (&p->nvm_lock); - - - /* allocate nvm block metadata structures */ - if ((p->ptr_nvm_tbl = bdbm_zmalloc(sizeof(bdbm_nvm_block_t) * p->nr_total_blks))==NULL){ - goto fail; - } - - /* allocate ram for nvm cache space */ - - - -} // end of bdbm_nvm_create - - - - - - - - /* create 'bdbm_abm_info' with pst */ - if ((p->bai = bdbm_abm_create (np, 1)) == NULL) { - bdbm_error ("bdbm_abm_create failed"); - bdbm_page_ftl_destroy (bdi); - return 1; - } - - /* create a mapping table */ - if ((p->ptr_mapping_table = __bdbm_page_ftl_create_mapping_table (np)) == NULL) { - bdbm_error ("__bdbm_page_ftl_create_mapping_table failed"); - bdbm_page_ftl_destroy (bdi); - return 1; - } - - /* allocate active blocks */ - if ((p->ac_bab = __bdbm_page_ftl_create_active_blocks (np, p->bai)) == NULL) { - bdbm_error ("__bdbm_page_ftl_create_active_blocks failed"); - bdbm_page_ftl_destroy (bdi); - return 1; - } - - /* allocate gc stuff */ - if ((p->gc_bab = (bdbm_abm_block_t**)bdbm_zmalloc - (sizeof (bdbm_abm_block_t*) * p->nr_punits)) == NULL) { - bdbm_error ("bdbm_zmalloc failed"); - bdbm_page_ftl_destroy (bdi); - return 1; - } - - if ((p->gc_hlm.llm_reqs = (bdbm_llm_req_t*)bdbm_zmalloc - (sizeof (bdbm_llm_req_t) * p->nr_punits_pages)) == NULL) { - bdbm_error ("bdbm_zmalloc failed"); - bdbm_page_ftl_destroy (bdi); - return 1; - } - bdbm_sema_init (&p->gc_hlm.done); - hlm_reqs_pool_allocate_llm_reqs (p->gc_hlm.llm_reqs, p->nr_punits_pages, RP_MEM_PHY); - - if ((p->gc_hlm_w.llm_reqs = (bdbm_llm_req_t*)bdbm_zmalloc - (sizeof (bdbm_llm_req_t) * p->nr_punits_pages)) == NULL) { - bdbm_error ("bdbm_zmalloc failed"); - bdbm_page_ftl_destroy (bdi); - return 1; - } - bdbm_sema_init (&p->gc_hlm_w.done); - hlm_reqs_pool_allocate_llm_reqs (p->gc_hlm_w.llm_reqs, p->nr_punits_pages, RP_MEM_PHY); - - return 0; -} - -void bdbm_page_ftl_destroy (bdbm_drv_info_t* bdi) -{ - bdbm_page_ftl_private_t* p = _ftl_page_ftl.ptr_private; - - if (!p) - return; - if (p->gc_hlm_w.llm_reqs) { - hlm_reqs_pool_release_llm_reqs (p->gc_hlm_w.llm_reqs, p->nr_punits_pages, RP_MEM_PHY); - bdbm_sema_free (&p->gc_hlm_w.done); - bdbm_free (p->gc_hlm_w.llm_reqs); - } - if (p->gc_hlm.llm_reqs) { - hlm_reqs_pool_release_llm_reqs (p->gc_hlm.llm_reqs, p->nr_punits_pages, RP_MEM_PHY); - bdbm_sema_free (&p->gc_hlm.done); - bdbm_free (p->gc_hlm.llm_reqs); - } - if (p->gc_bab) - bdbm_free (p->gc_bab); - if (p->ac_bab) - __bdbm_page_ftl_destroy_active_blocks (p->ac_bab); - if (p->ptr_mapping_table) - __bdbm_page_ftl_destroy_mapping_table (p->ptr_mapping_table); - if (p->bai) - bdbm_abm_destroy (p->bai); - bdbm_free (p); -} - -uint32_t bdbm_page_ftl_get_free_ppa ( - bdbm_drv_info_t* bdi, - int64_t lpa, - bdbm_phyaddr_t* ppa) -{ - bdbm_page_ftl_private_t* p = _ftl_page_ftl.ptr_private; - bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); - bdbm_abm_block_t* b = NULL; - uint64_t curr_channel; - uint64_t curr_chip; - - /* get the channel & chip numbers */ - curr_channel = p->curr_puid % np->nr_channels; - curr_chip = p->curr_puid / np->nr_channels; - - /* get the physical offset of the active blocks */ - b = p->ac_bab[curr_channel * np->nr_chips_per_channel + curr_chip]; - ppa->channel_no = b->channel_no; - ppa->chip_no = b->chip_no; - ppa->block_no = b->block_no; - ppa->page_no = p->curr_page_ofs; - ppa->punit_id = BDBM_GET_PUNIT_ID (bdi, ppa); - - /* check some error cases before returning the physical address */ - bdbm_bug_on (ppa->channel_no != curr_channel); - bdbm_bug_on (ppa->chip_no != curr_chip); - bdbm_bug_on (ppa->page_no >= np->nr_pages_per_block); - - /* go to the next parallel unit */ - if ((p->curr_puid + 1) == p->nr_punits) { - p->curr_puid = 0; - p->curr_page_ofs++; /* go to the next page */ - - /* see if there are sufficient free pages or not */ - if (p->curr_page_ofs == np->nr_pages_per_block) { - /* get active blocks */ - if (__bdbm_page_ftl_get_active_blocks (np, p->bai, p->ac_bab) != 0) { - bdbm_error ("__bdbm_page_ftl_get_active_blocks failed"); - return 1; - } - /* ok; go ahead with 0 offset */ - /*bdbm_msg ("curr_puid = %llu", p->curr_puid);*/ - p->curr_page_ofs = 0; - } - } else { - /*bdbm_msg ("curr_puid = %llu", p->curr_puid);*/ - p->curr_puid++; - } - - return 0; -} - - - - -bdbm_page_block_t* __bdbm_page_ftl_create_mapping_table ( - bdbm_device_params_t* np) -{ - bdbm_page_mapping_entry_t* me; - uint64_t loop; - - /* create a page-level mapping table */ - if ((me = (bdbm_page_mapping_entry_t*)bdbm_zmalloc - (sizeof (bdbm_page_mapping_entry_t) * np->nr_subpages_per_ssd)) == NULL) { - return NULL; - } - - /* initialize a page-level mapping table */ - for (loop = 0; loop < np->nr_subpages_per_ssd; loop++) { - me[loop].status = PFTL_PAGE_NOT_ALLOCATED; - me[loop].phyaddr.channel_no = PFTL_PAGE_INVALID_ADDR; - me[loop].phyaddr.chip_no = PFTL_PAGE_INVALID_ADDR; - me[loop].phyaddr.block_no = PFTL_PAGE_INVALID_ADDR; - me[loop].phyaddr.page_no = PFTL_PAGE_INVALID_ADDR; - me[loop].sp_off = -1; - } - - /* return a set of mapping entries */ - return me; -} - -#endif diff --git a/frontend/kernel/nvm_cache_bak/nvm_cache.h b/frontend/kernel/nvm_cache_bak/nvm_cache.h deleted file mode 100644 index 85e487a..0000000 --- a/frontend/kernel/nvm_cache_bak/nvm_cache.h +++ /dev/null @@ -1,82 +0,0 @@ -#if defined (KERNEL_MODE) -#include -//#include -//include -//#include - -#elif defined (USER_MODE) -#include -#include - -#else -#error Invalid Platform (KERNEL_MODE or USER_MODE) -#endif - -//#include "bdbm_drv.h" -//#include "debug.h" -//#include "umemory.h" -//#include "params.h" -//#include "utime.h" -//#include "uthread.h" - - -enum BDBM_NVM_BLK_STATUS { - BDBM_NVM_BLK_FREE = 0, - BDBM_NVM_BLK_CLEAN, - BDBM_NVM_BLK_DIRTY, -}; - -typedef struct { - uint8_t status; - bdbm_logaddr_t logaddr; -// bdbm_phyaddr_t phyaddr; -// struct list_head list; /* for lru list */ - void* ptr_nvmram_data; -} bdbm_nvm_block_t; - -typedef struct { - bdbm_device_params_t* np; - uint64_t nr_total_blks; - bdbm_spinlock_t nvm_lock; - - bdbm_nvm_block_t* ptr_nvm_tbl; - - void* ptr_nvmram; /* DRAM memory for nvm */ - struct list_head lru_list; - -// bdbm_nvm_block_t* ptr_lru_list; - -} bdbm_nvm_dev_private_t; - - -#if 0 -bdbm_abm_info_t* bdbm_abm_create (bdbm_device_params_t* np, uint8_t use_pst); -void bdbm_abm_destroy (bdbm_abm_info_t* bai); -bdbm_abm_block_t* bdbm_abm_get_block (bdbm_abm_info_t* bai, uint64_t channel_no, uint64_t chip_no, uint64_t block_no); -bdbm_abm_block_t* bdbm_abm_get_free_block_prepare (bdbm_abm_info_t* bai, uint64_t channel_no, uint64_t chip_no); -void bdbm_abm_get_free_block_rollback (bdbm_abm_info_t* bai, bdbm_abm_block_t* blk); -void bdbm_abm_get_free_block_commit (bdbm_abm_info_t* bai, bdbm_abm_block_t* blk); -void bdbm_abm_erase_block (bdbm_abm_info_t* bai, uint64_t channel_no, uint64_t chip_no, uint64_t block_no, uint8_t is_bad); -void bdbm_abm_invalidate_page (bdbm_abm_info_t* bai, uint64_t channel_no, uint64_t chip_no, uint64_t block_no, uint64_t page_no, uint64_t subpage_no); -void bdbm_abm_set_to_dirty_block (bdbm_abm_info_t* bai, uint64_t channel_no, uint64_t chip_no, uint64_t block_no); - -static inline uint64_t bdbm_abm_get_nr_free_blocks (bdbm_abm_info_t* bai) { return bai->nr_free_blks; } -static inline uint64_t bdbm_abm_get_nr_free_blocks_prepared (bdbm_abm_info_t* bai) { return bai->nr_free_blks_prepared; } -static inline uint64_t bdbm_abm_get_nr_clean_blocks (bdbm_abm_info_t* bai) { return bai->nr_clean_blks; } -static inline uint64_t bdbm_abm_get_nr_dirty_blocks (bdbm_abm_info_t* bai) { return bai->nr_dirty_blks; } -static inline uint64_t bdbm_abm_get_nr_total_blocks (bdbm_abm_info_t* bai) { return bai->nr_total_blks; } - -uint32_t bdbm_abm_load (bdbm_abm_info_t* bai, const char* fn); -uint32_t bdbm_abm_store (bdbm_abm_info_t* bai, const char* fn); - -#define bdbm_abm_list_for_each_dirty_block(pos, bai, channel_no, chip_no) \ - list_for_each (pos, &(bai->list_head_dirty[channel_no][chip_no])) -#define bdbm_abm_fetch_dirty_block(pos) \ - list_entry (pos, bdbm_abm_block_t, list) -/* (example:) - * bdbm_abm_list_for_each_dirty_block (pos, p->bai, j, k) { - b = bdbm_abm_fetch_dirty_block (pos); - } - */ - -#endif diff --git a/ftl/ftl_params.c b/ftl/ftl_params.c index c662138..2b43ecb 100644 --- a/ftl/ftl_params.c +++ b/ftl/ftl_params.c @@ -48,7 +48,11 @@ int _param_kernel_sector_size = KERNEL_SECTOR_SIZE; /* 512 Bytes */ int _param_gc_policy = GC_POLICY_GREEDY; int _param_wl_policy = WL_POLICY_NONE; int _param_queuing_policy = QUEUE_POLICY_MULTI_FIFO; +#ifdef NVM_CACHE +int _param_trim = TRIM_DISABLE; +#else int _param_trim = TRIM_ENABLE; +#endif int _param_snapshot = SNAPSHOT_DISABLE; int _param_mapping_type = MAPPING_POLICY_PAGE; /*int _param_mapping_type = MAPPING_POLICY_RSD;*/ diff --git a/ftl/hlm_nobuf.c b/ftl/hlm_nobuf.c index f4ac982..b82781e 100644 --- a/ftl/hlm_nobuf.c +++ b/ftl/hlm_nobuf.c @@ -54,6 +54,9 @@ bdbm_hlm_inf_t _hlm_nobuf_inf = { .destroy = hlm_nobuf_destroy, .make_req = hlm_nobuf_make_req, .end_req = hlm_nobuf_end_req, +#ifdef NVM_CACHE + .make_wb_req = hlm_nobuf_make_wb_req, +#endif /*.load = hlm_nobuf_load,*/ /*.store = hlm_nobuf_store,*/ }; @@ -232,6 +235,82 @@ void __hlm_nobuf_check_ondemand_gc (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) } } +#ifdef NVM_CACHE +uint32_t __hlm_nobuf_make_wb_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) +{ + bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS(bdi); + bdbm_ftl_inf_t* ftl = BDBM_GET_FTL_INF(bdi); + bdbm_llm_req_t* lr = NULL; + uint64_t i = 0, j = 0; + + bdbm_msg("make_wb_req() is called"); + + /* perform mapping with the FTL */ + bdbm_hlm_for_each_llm_req (lr, hr, i) { + /* (1) get the physical locations through the FTL */ + bdbm_msg("make llm req %d", i); + bdbm_bug_on(lr->req_type != REQTYPE_WRITE_BACK) + + if (ftl->get_free_ppa (bdi, lr->logaddr.lpa[0], &lr->phyaddr) != 0) { + bdbm_error ("`ftl->get_free_ppa' failed"); + goto fail; + } + if (ftl->map_lpa_to_ppa (bdi, &lr->logaddr, &lr->phyaddr) != 0) { + bdbm_error ("`ftl->map_lpa_to_ppa' failed"); + goto fail; + } + + /* (2) setup oob */ + for (j = 0; j < np->nr_subpages_per_page; j++) { + ((int64_t*)lr->foob.data)[j] = lr->logaddr.lpa[j]; + } + } + + /* (3) send llm_req to llm */ + if (bdi->ptr_llm_inf->make_reqs == NULL) { + /* send individual llm-reqs to llm */ + bdbm_hlm_for_each_llm_req (lr, hr, i) { + if (bdi->ptr_llm_inf->make_req (bdi, lr) != 0) { + bdbm_error ("oops! make_req () failed"); + bdbm_bug_on (1); + } + } + } else { + /* send a bulk of llm-reqs to llm if make_reqs is supported */ + if (bdi->ptr_llm_inf->make_reqs (bdi, hr) != 0) { + bdbm_error ("oops! make_reqs () failed"); + bdbm_bug_on (1); + } + } + + bdbm_bug_on (hr->nr_llm_reqs != i); + + return 0; + +fail: + return 1; +} +#endif + +#ifdef NVM_CACHE +uint32_t hlm_nobuf_make_wb_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) +{ + uint32_t ret; + bdbm_stopwatch_t sw; + bdbm_stopwatch_start (&sw); + + /* is req_type correct? */ + bdbm_bug_on (!bdbm_is_normal (hr->req_type)); + + + /* perform i/o */ + ret = __hlm_nobuf_make_wb_req (bdi, hr); + + return ret; +} +#endif + + uint32_t hlm_nobuf_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) { uint32_t ret; @@ -302,8 +381,29 @@ void __hlm_nobuf_end_gcio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) } } +#ifdef NVM_CACHE +void __hlm_nobuf_end_wb_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) +{ + bdbm_hlm_req_t* hr = (bdbm_hlm_req_t* )lr->ptr_hlm_req; + + atomic64_inc (&hr->nr_llm_reqs_done); + lr->req_type |= REQTYPE_DONE; + + if (atomic64_read (&hr->nr_llm_reqs_done) == hr->nr_llm_reqs) { + bdbm_sema_unlock (&hr->done); + } +} +#endif + + + void hlm_nobuf_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) { +#ifdef NVM_CACHE + if(bdbm_is_writeback(lr->req_type)){ + __hlm_nobuf_end_wb_req (bdi, lr); + }else +#endif if (bdbm_is_gc (lr->req_type)) { __hlm_nobuf_end_gcio_req (bdi, lr); } else { diff --git a/ftl/hlm_nobuf.h b/ftl/hlm_nobuf.h index 9712417..261a8af 100644 --- a/ftl/hlm_nobuf.h +++ b/ftl/hlm_nobuf.h @@ -34,5 +34,9 @@ void hlm_nobuf_destroy (bdbm_drv_info_t* bdi); uint32_t hlm_nobuf_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req); void hlm_nobuf_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req); +#ifdef NVM_CACHE +uint32_t hlm_nobuf_make_wb_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr); +#endif + #endif diff --git a/ftl/hlm_reqs_pool.c b/ftl/hlm_reqs_pool.c index c601334..9d309f3 100644 --- a/ftl/hlm_reqs_pool.c +++ b/ftl/hlm_reqs_pool.c @@ -315,6 +315,55 @@ void hlm_reqs_pool_reset_logaddr (bdbm_logaddr_t* logaddr) logaddr->ofs = 0; } + +#ifdef NVM_CACHE +static int __hlm_reqs_pool_create_wb_req ( + bdbm_hlm_req_t* hr, + bdbm_logaddr_t* logaddr, + uint8_t* ptr_data) +{ +// int64_t sec_start, sec_end, pg_start, pg_end; +// int64_t i = 0, j = 0, k = 0; +// int64_t hole = 0, bvec_cnt = 0, nr_llm_reqs; + int64_t nr_llm_reqs; + bdbm_flash_page_main_t* ptr_fm = NULL; + bdbm_llm_req_t* ptr_lr = NULL; + + nr_llm_reqs = 1; + + ptr_lr = &hr->llm_reqs[0]; + ptr_fm = &ptr_lr->fmain; + hlm_reqs_pool_reset_fmain (ptr_fm); + hlm_reqs_pool_reset_logaddr (&ptr_lr->logaddr); + + ptr_fm->kp_stt[0] = KP_STT_DATA; + ptr_fm->kp_ptr[0] = (uint8_t*) bdbm_zmalloc (sizeof(KPAGE_SIZE)); + + bdbm_memcpy (&ptr_lr->logaddr, logaddr, sizeof(bdbm_logaddr_t)); + bdbm_memcpy (ptr_fm->kp_ptr[0], ptr_data, sizeof(KPAGE_SIZE)); + + /* decide the reqtype for llm_req */ + ptr_lr->req_type = REQTYPE_WRITE_BACK; + + ptr_lr->ptr_hlm_req = (void*)hr; + + /* intialize hlm_req */ + hr->req_type = REQTYPE_WRITE_BACK; + bdbm_stopwatch_start (&hr->sw); + hr->nr_llm_reqs = nr_llm_reqs; + atomic64_set (&hr->nr_llm_reqs_done, 0); + bdbm_sema_lock (&hr->done); + hr->blkio_req = NULL; + //hr->blkio_req = (void*)br; + hr->ret = 0; + + return 0; +} +#endif + + + + static int __hlm_reqs_pool_create_write_req ( bdbm_hlm_reqs_pool_t* pool, bdbm_hlm_req_t* hr, @@ -455,6 +504,34 @@ static int __hlm_reqs_pool_create_read_req ( return 0; } +#ifdef NVM_CACHE +int bdbm_hlm_reqs_pool_build_wb_req ( + bdbm_hlm_req_t* hr, + bdbm_logaddr_t* logaddr, + uint8_t* ptr_data) +{ + int ret = 1; + + ret = __hlm_reqs_pool_create_wb_req (hr, logaddr, ptr_data); + +#if 0 + /* create a hlm_req using a bio */ + if (br->bi_rw == REQTYPE_TRIM) { + ret = __hlm_reqs_pool_create_trim_req (pool, hr, br); + } else if (br->bi_rw == REQTYPE_WRITE) { + ret = __hlm_reqs_pool_create_write_req (pool, hr, br); + } else if (br->bi_rw == REQTYPE_READ) { + ret = __hlm_reqs_pool_create_read_req (pool, hr, br); + } +#endif + /* are there any errors? */ + if (ret != 0) { + bdbm_msg("error: failed to make wb_req"); + } + + return 0; +} +#endif int bdbm_hlm_reqs_pool_build_req ( bdbm_hlm_reqs_pool_t* pool, diff --git a/ftl/hlm_reqs_pool.h b/ftl/hlm_reqs_pool.h index f38bcdb..b9838c8 100644 --- a/ftl/hlm_reqs_pool.h +++ b/ftl/hlm_reqs_pool.h @@ -53,5 +53,7 @@ void hlm_reqs_pool_reset_fmain (bdbm_flash_page_main_t* fmain); void hlm_reqs_pool_reset_logaddr (bdbm_logaddr_t* logaddr); void hlm_reqs_pool_relocate_kp (bdbm_llm_req_t* lr, uint64_t new_sp_ofs); void hlm_reqs_pool_write_compaction (bdbm_hlm_req_gc_t* dst, bdbm_hlm_req_gc_t* src, bdbm_device_params_t* np); - +#ifdef NVM_CACHE +int bdbm_hlm_reqs_pool_build_wb_req (bdbm_hlm_req_t* hr, bdbm_logaddr_t* logaddr, uint8_t* ptr_data); +#endif #endif diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 6e86d80..c7c7deb 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -101,6 +101,9 @@ enum BDBM_REQTYPE { REQTYPE_RMW = 0x000200, REQTYPE_GC = 0x000400, REQTYPE_META = 0x000800, +#ifdef NVM_CACHE + REQTYPE_INTERNAL = 0x001000, +#endif REQTYPE_READ = REQTYPE_NORNAL | REQTYPE_IO_READ, REQTYPE_READ_DUMMY = REQTYPE_NORNAL | REQTYPE_IO_READ_DUMMY, @@ -113,6 +116,9 @@ enum BDBM_REQTYPE { REQTYPE_GC_ERASE = REQTYPE_GC | REQTYPE_IO_ERASE, REQTYPE_META_READ = REQTYPE_META | REQTYPE_IO_READ, REQTYPE_META_WRITE = REQTYPE_META | REQTYPE_IO_WRITE, +#ifdef NVM_CACHE + REQTYPE_WRITE_BACK = REQTYPE_NORNAL | REQTYPE_IO_WRITE | REQTYPE_INTERNAL, +#endif }; #define bdbm_is_normal(type) (((type & REQTYPE_NORNAL) == REQTYPE_NORNAL) ? 1 : 0) @@ -124,6 +130,10 @@ enum BDBM_REQTYPE { #define bdbm_is_erase(type) (((type & REQTYPE_IO_ERASE) == REQTYPE_IO_ERASE) ? 1 : 0) #define bdbm_is_trim(type) (((type & REQTYPE_IO_TRIM) == REQTYPE_IO_TRIM) ? 1 : 0) +#ifdef NVM_CACHE +#define bdbm_is_writeback(type) (((type & REQTYPE_WRITE_BACK) == REQTYPE_WRITE_BACK) ? 1 : 0) +#endif + /* a physical address */ typedef struct { @@ -197,6 +207,11 @@ typedef struct { /* physical layout */ bdbm_flash_page_main_t fmain; bdbm_flash_page_oob_t foob; + +#ifdef NVM_CACHE + uint8_t serviced_by_nvm; +#endif + } bdbm_llm_req_t; typedef struct { @@ -256,14 +271,13 @@ typedef struct { void* ptr_private; uint32_t (*create) (bdbm_drv_info_t* bdi); void (*destroy) (bdbm_drv_info_t* bdi); - + uint64_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req); #if 0 uint32_t (*get_free_ppa) (bdbm_drv_info_t* bdi, int64_t lpa, bdbm_phyaddr_t* ppa); uint32_t (*get_ppa) (bdbm_drv_info_t* bdi, int64_t lpa, bdbm_phyaddr_t* ppa, uint64_t* sp_off); uint32_t (*map_lpa_to_ppa) (bdbm_drv_info_t* bdi, bdbm_logaddr_t* logaddr, bdbm_phyaddr_t* ppa); uint32_t (*invalidate_lpa) (bdbm_drv_info_t* bdi, int64_t lpa, uint64_t len); - uint32_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_nvm_req_t* req); void (*end_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req); #endif } bdbm_nvm_inf_t; @@ -276,6 +290,9 @@ typedef struct { void (*destroy) (bdbm_drv_info_t* bdi); uint32_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req); void (*end_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req); +#ifdef NVM_CACHE + uint32_t (*make_wb_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr); +#endif } bdbm_hlm_inf_t; /* a generic low-level memory manager interface */ diff --git a/tags b/tags index cdcf04e..6ac58c5 100644 --- a/tags +++ b/tags @@ -29,13 +29,13 @@ BDBM_ABM_BLK_FREE_PREPARE ftl/algo/abm.h /^ BDBM_ABM_BLK_FREE_PREPARE,$/;" e enu BDBM_ABM_BLK_STATUS ftl/algo/abm.h /^enum BDBM_ABM_BLK_STATUS {$/;" g BDBM_ABM_SUBPAGE_INVALID ftl/algo/abm.h /^ BDBM_ABM_SUBPAGE_INVALID,$/;" e enum:BDBM_ABM_SUBPAGE_STATUS BDBM_ABM_SUBPAGE_STATUS ftl/algo/abm.h /^enum BDBM_ABM_SUBPAGE_STATUS {$/;" g -BDBM_ALIGN_DOWN include/bdbm_drv.h 154;" d -BDBM_ALIGN_UP include/bdbm_drv.h 153;" d +BDBM_ALIGN_DOWN include/bdbm_drv.h 167;" d +BDBM_ALIGN_UP include/bdbm_drv.h 166;" d BDBM_BADBLOCK_SCAN frontend/kernel/blkdev_ioctl.h 28;" d BDBM_BADBLOCK_SCAN_CHECK frontend/kernel/blkdev_ioctl.h 29;" d BDBM_BFTL_BLOCK_STATUS ftl/algo/block_ftl.c /^enum BDBM_BFTL_BLOCK_STATUS {$/;" g file: BDBM_BFTL_PAGE_STATUS ftl/algo/block_ftl.c /^enum BDBM_BFTL_PAGE_STATUS {$/;" g file: -BDBM_BLKIO_MAX_VECS include/bdbm_drv.h 139;" d +BDBM_BLKIO_MAX_VECS include/bdbm_drv.h 152;" d BDBM_BLOCKIO_PROXY_IOCTL_DEVNAME frontend/hybrid/blkio_proxy_ioctl.h 51;" d BDBM_BLOCKIO_PROXY_IOCTL_DONE frontend/hybrid/blkio_proxy_ioctl.h 54;" d BDBM_BLOCKIO_PROXY_IOCTL_MAGIC frontend/hybrid/blkio_proxy_ioctl.h 52;" d @@ -52,30 +52,34 @@ BDBM_DM_IOCTL_NAME devices/common/dev_stub.h 59;" d BDBM_DM_IOCTL_OPEN devices/common/dev_stub.h 64;" d BDBM_DM_IOCTL_PROBE devices/common/dev_stub.h 63;" d BDBM_DM_IOCTL_STORE devices/common/dev_stub.h 69;" d -BDBM_DM_PRIV include/bdbm_drv.h 80;" d +BDBM_DM_PRIV include/bdbm_drv.h 82;" d BDBM_FLASH_PAGE_SIZE devices/bluedbm/dm_bluedbm.c 249;" d file: -BDBM_FTL_PRIV include/bdbm_drv.h 83;" d -BDBM_GB include/bdbm_drv.h 64;" d +BDBM_FTL_PRIV include/bdbm_drv.h 85;" d +BDBM_GB include/bdbm_drv.h 66;" d BDBM_GC_POLICY include/params.h /^enum BDBM_GC_POLICY {$/;" g -BDBM_GET_DEVICE_PARAMS include/bdbm_drv.h 75;" d -BDBM_GET_DM_INF include/bdbm_drv.h 72;" d -BDBM_GET_DRIVER_PARAMS include/bdbm_drv.h 76;" d -BDBM_GET_FTL_INF include/bdbm_drv.h 77;" d -BDBM_GET_HLM_INF include/bdbm_drv.h 73;" d -BDBM_GET_HOST_INF include/bdbm_drv.h 71;" d -BDBM_GET_LLM_INF include/bdbm_drv.h 74;" d -BDBM_GET_NR_PUNITS include/bdbm_drv.h 85;" d -BDBM_GET_PUNIT_ID include/bdbm_drv.h 87;" d -BDBM_HLM_PRIV include/bdbm_drv.h 81;" d +BDBM_GET_DEVICE_PARAMS include/bdbm_drv.h 77;" d +BDBM_GET_DM_INF include/bdbm_drv.h 74;" d +BDBM_GET_DRIVER_PARAMS include/bdbm_drv.h 78;" d +BDBM_GET_FTL_INF include/bdbm_drv.h 79;" d +BDBM_GET_HLM_INF include/bdbm_drv.h 75;" d +BDBM_GET_HOST_INF include/bdbm_drv.h 73;" d +BDBM_GET_LLM_INF include/bdbm_drv.h 76;" d +BDBM_GET_NR_PUNITS include/bdbm_drv.h 87;" d +BDBM_GET_PUNIT_ID include/bdbm_drv.h 89;" d +BDBM_HLM_PRIV include/bdbm_drv.h 83;" d BDBM_HLM_TYPE include/params.h /^enum BDBM_HLM_TYPE {$/;" g -BDBM_HOST_PRIV include/bdbm_drv.h 79;" d -BDBM_KB include/bdbm_drv.h 62;" d -BDBM_LLM_PRIV include/bdbm_drv.h 82;" d +BDBM_HOST_PRIV include/bdbm_drv.h 81;" d +BDBM_KB include/bdbm_drv.h 64;" d +BDBM_LLM_PRIV include/bdbm_drv.h 84;" d BDBM_LLM_TYPE include/params.h /^enum BDBM_LLM_TYPE {$/;" g BDBM_MAPPING_POLICY include/params.h /^enum BDBM_MAPPING_POLICY {$/;" g -BDBM_MAX_PAGES include/bdbm_drv.h 136;" d -BDBM_MB include/bdbm_drv.h 63;" d +BDBM_MAX_PAGES include/bdbm_drv.h 149;" d +BDBM_MB include/bdbm_drv.h 65;" d BDBM_NUM_TAGS devices/bluedbm/dm_bluedbm.c 250;" d file: +BDBM_NVM_BLK_CLEAN frontend/kernel/nvm_cache_bak/nvm_cache.h /^ BDBM_NVM_BLK_CLEAN,$/;" e enum:BDBM_NVM_BLK_STATUS +BDBM_NVM_BLK_DIRTY frontend/kernel/nvm_cache_bak/nvm_cache.h /^ BDBM_NVM_BLK_DIRTY,$/;" e enum:BDBM_NVM_BLK_STATUS +BDBM_NVM_BLK_FREE frontend/kernel/nvm_cache_bak/nvm_cache.h /^ BDBM_NVM_BLK_FREE = 0,$/;" e enum:BDBM_NVM_BLK_STATUS +BDBM_NVM_BLK_STATUS frontend/kernel/nvm_cache_bak/nvm_cache.h /^enum BDBM_NVM_BLK_STATUS {$/;" g BDBM_PFTL_PAGE_STATUS ftl/algo/page_ftl.c /^enum BDBM_PFTL_PAGE_STATUS {$/;" g file: BDBM_PRIOR_QUEUE_SIZE ftl/queue/prior_queue.h /^enum BDBM_PRIOR_QUEUE_SIZE {$/;" g BDBM_PROXY_MAX_REQS frontend/hybrid/blkio_proxy_ioctl.h 29;" d @@ -83,11 +87,11 @@ BDBM_QUEUE_POLICY include/params.h /^enum BDBM_QUEUE_POLICY {$/;" g BDBM_QUEUE_SIZE ftl/queue/queue.h /^enum BDBM_QUEUE_SIZE {$/;" g BDBM_RD_PRIOR_QUEUE_SIZE ftl/queue/rd_prior_queue.h /^enum BDBM_RD_PRIOR_QUEUE_SIZE {$/;" g BDBM_REQTYPE include/bdbm_drv.h /^enum BDBM_REQTYPE {$/;" g -BDBM_SIZE_GB include/bdbm_drv.h 69;" d -BDBM_SIZE_KB include/bdbm_drv.h 67;" d -BDBM_SIZE_MB include/bdbm_drv.h 68;" d +BDBM_SIZE_GB include/bdbm_drv.h 71;" d +BDBM_SIZE_KB include/bdbm_drv.h 69;" d +BDBM_SIZE_MB include/bdbm_drv.h 70;" d BDBM_SNAPSHOT include/params.h /^enum BDBM_SNAPSHOT {$/;" g -BDBM_TB include/bdbm_drv.h 65;" d +BDBM_TB include/bdbm_drv.h 67;" d BDBM_TRIM include/params.h /^enum BDBM_TRIM {$/;" g BDBM_WL_POLICY include/params.h /^enum BDBM_WL_POLICY {$/;" g BFTL_ALLOCATED ftl/algo/block_ftl.c /^ BFTL_ALLOCATED,$/;" e enum:BDBM_BFTL_BLOCK_STATUS file: @@ -181,25 +185,25 @@ DESC_FMT_SENSE_DATA_SIZE tools/nvme/scsi.c 91;" d file: DESC_FMT_SENSE_DATA_SIZE tools/nvmedrv-v4.5.3/scsi.c 91;" d file: DESC_FORMAT_SENSE_DATA tools/nvme/scsi.c 68;" d file: DESC_FORMAT_SENSE_DATA tools/nvmedrv-v4.5.3/scsi.c 68;" d file: -DEVICE_TYPE_BLUEDBM include/params.h /^ DEVICE_TYPE_BLUEDBM,$/;" e enum:__anon44 -DEVICE_TYPE_END include/params.h /^ DEVICE_TYPE_END,$/;" e enum:__anon44 -DEVICE_TYPE_NOT_SPECIFIED include/params.h /^ DEVICE_TYPE_NOT_SPECIFIED = 0,$/;" e enum:__anon44 -DEVICE_TYPE_RAMDRIVE include/params.h /^ DEVICE_TYPE_RAMDRIVE = 1,$/;" e enum:__anon44 -DEVICE_TYPE_RAMDRIVE_INTR include/params.h /^ DEVICE_TYPE_RAMDRIVE_INTR,$/;" e enum:__anon44 -DEVICE_TYPE_RAMDRIVE_TIMING include/params.h /^ DEVICE_TYPE_RAMDRIVE_TIMING, $/;" e enum:__anon44 -DEVICE_TYPE_USER_DUMMY include/params.h /^ DEVICE_TYPE_USER_DUMMY,$/;" e enum:__anon44 -DEVICE_TYPE_USER_RAMDRIVE include/params.h /^ DEVICE_TYPE_USER_RAMDRIVE,$/;" e enum:__anon44 +DEVICE_TYPE_BLUEDBM include/params.h /^ DEVICE_TYPE_BLUEDBM,$/;" e enum:__anon45 +DEVICE_TYPE_END include/params.h /^ DEVICE_TYPE_END,$/;" e enum:__anon45 +DEVICE_TYPE_NOT_SPECIFIED include/params.h /^ DEVICE_TYPE_NOT_SPECIFIED = 0,$/;" e enum:__anon45 +DEVICE_TYPE_RAMDRIVE include/params.h /^ DEVICE_TYPE_RAMDRIVE = 1,$/;" e enum:__anon45 +DEVICE_TYPE_RAMDRIVE_INTR include/params.h /^ DEVICE_TYPE_RAMDRIVE_INTR,$/;" e enum:__anon45 +DEVICE_TYPE_RAMDRIVE_TIMING include/params.h /^ DEVICE_TYPE_RAMDRIVE_TIMING, $/;" e enum:__anon45 +DEVICE_TYPE_USER_DUMMY include/params.h /^ DEVICE_TYPE_USER_DUMMY,$/;" e enum:__anon45 +DEVICE_TYPE_USER_RAMDRIVE include/params.h /^ DEVICE_TYPE_USER_RAMDRIVE,$/;" e enum:__anon45 DEV_COMMON devices/bluedbm/Makefile /^DEV_COMMON = ..\/common$/;" m DEV_COMMON devices/dragonfire/Makefile /^DEV_COMMON = ..\/common$/;" m DEV_COMMON devices/dumbssd/Makefile /^DEV_COMMON = ..\/common$/;" m DEV_COMMON devices/libdummy/Makefile /^DEV_COMMON = ..\/common$/;" m DEV_COMMON devices/ramdrive/Makefile /^DEV_COMMON = ..\/common$/;" m DEV_COMMON devices/ramdrive_timing/Makefile /^DEV_COMMON = ..\/common$/;" m -DFTL_DIR_CLEAN ftl/algo/dftl_map.h /^ DFTL_DIR_CLEAN = DFTL_DIR_DRAM | 0x1,$/;" e enum:__anon81 -DFTL_DIR_DIRTY ftl/algo/dftl_map.h /^ DFTL_DIR_DIRTY = DFTL_DIR_DRAM | 0x2,$/;" e enum:__anon81 -DFTL_DIR_DRAM ftl/algo/dftl_map.h /^ DFTL_DIR_DRAM = 0x200,$/;" e enum:__anon81 -DFTL_DIR_EMPTY ftl/algo/dftl_map.h /^ DFTL_DIR_EMPTY = 0,$/;" e enum:__anon81 -DFTL_DIR_FLASH ftl/algo/dftl_map.h /^ DFTL_DIR_FLASH = 0x100,$/;" e enum:__anon81 +DFTL_DIR_CLEAN ftl/algo/dftl_map.h /^ DFTL_DIR_CLEAN = DFTL_DIR_DRAM | 0x1,$/;" e enum:__anon86 +DFTL_DIR_DIRTY ftl/algo/dftl_map.h /^ DFTL_DIR_DIRTY = DFTL_DIR_DRAM | 0x2,$/;" e enum:__anon86 +DFTL_DIR_DRAM ftl/algo/dftl_map.h /^ DFTL_DIR_DRAM = 0x200,$/;" e enum:__anon86 +DFTL_DIR_EMPTY ftl/algo/dftl_map.h /^ DFTL_DIR_EMPTY = 0,$/;" e enum:__anon86 +DFTL_DIR_FLASH ftl/algo/dftl_map.h /^ DFTL_DIR_FLASH = 0x100,$/;" e enum:__anon86 DFTL_PAGE_INVALID ftl/algo/dftl_map.h /^ DFTL_PAGE_INVALID,$/;" e enum:BDBM_DFTL_PAGE_STATUS DFTL_PAGE_INVALID_ADDR ftl/algo/dftl_map.h /^ DFTL_PAGE_INVALID_ADDR = -1,$/;" e enum:BDBM_DFTL_PAGE_STATUS DFTL_PAGE_NOT_EXIST ftl/algo/dftl_map.h /^ DFTL_PAGE_NOT_EXIST = 0,$/;" e enum:BDBM_DFTL_PAGE_STATUS @@ -435,10 +439,10 @@ KBUILD_EXTRA_SYMBOLS tools/nvmedrv-v4.5.3/Makefile /^KBUILD_EXTRA_SYMBOLS := $(P KELVIN_TEMP_FACTOR tools/nvme/scsi.c 89;" d file: KELVIN_TEMP_FACTOR tools/nvmedrv-v4.5.3/scsi.c 89;" d file: KERN frontend/hybrid/Makefile /^KERN := ..\/kernel$/;" m -KERNEL_PAGE_SIZE include/bdbm_drv.h 30;" d -KERNEL_PAGE_SIZE include/bdbm_drv.h 44;" d -KERNEL_SECTOR_SIZE include/params.h 29;" d -KPAGE_SIZE include/bdbm_drv.h 57;" d +KERNEL_PAGE_SIZE include/bdbm_drv.h 32;" d +KERNEL_PAGE_SIZE include/bdbm_drv.h 46;" d +KERNEL_SECTOR_SIZE include/params.h 30;" d +KPAGE_SIZE include/bdbm_drv.h 59;" d KP_STT_DATA include/bdbm_drv.h /^ KP_STT_DATA = 0x20,$/;" e enum:__anon27 KP_STT_DATA_DONE include/bdbm_drv.h /^ KP_STT_DATA_DONE = KP_STT_DATA | KP_STT_DONE,$/;" e enum:__anon27 KP_STT_DONE include/bdbm_drv.h /^ KP_STT_DONE = 0x0F,$/;" e enum:__anon27 @@ -456,7 +460,7 @@ KROOT tools/lightnvm-v4.5.3/Makefile /^export KROOT=\/lib\/modules\/$(shell unam KROOT tools/lightnvm/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m KROOT tools/nvme/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m KROOT tools/nvmedrv-v4.5.3/Makefile /^export KROOT=\/lib\/modules\/$(shell uname -r)\/build$/;" m -KSECTOR_SIZE include/params.h 30;" d +KSECTOR_SIZE include/params.h 31;" d LDECLTYPE common/3rd/utlist.h 68;" d LDECLTYPE common/3rd/utlist.h 71;" d LDECLTYPE common/3rd/utlist.h 75;" d @@ -644,7 +648,7 @@ MODULE_PARAM_PREFIX tools/lightnvm-v4.5.3/core.c 896;" d file: MODULE_PARAM_PREFIX tools/lightnvm-v4.5.3/core.c 897;" d file: MODULE_PARAM_PREFIX tools/lightnvm/core.c 896;" d file: MODULE_PARAM_PREFIX tools/lightnvm/core.c 897;" d file: -MODULE_PARM_DESC include/bdbm_drv.h 43;" d +MODULE_PARM_DESC include/bdbm_drv.h 45;" d MUR_FMIX common/3rd/uthash.h 570;" d MUR_GETBLOCK common/3rd/uthash.h 548;" d MUR_GETBLOCK common/3rd/uthash.h 564;" d @@ -673,8 +677,9 @@ NR_BLOCKS_PER_CHIP devices/common/dev_params.c /^ NR_BLOCKS_PER_CHIP = 128,$/;" NR_CHANNELS devices/common/dev_params.c /^ NR_CHANNELS = 64,$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: NR_CHIPS_PER_CHANNEL devices/common/dev_params.c /^ NR_CHIPS_PER_CHANNEL = 1,$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: NR_DIES devices/dumbssd/dm_dumbssd.c 44;" d file: -NR_KPAGES_IN include/bdbm_drv.h 156;" d -NR_KSECTORS_IN include/bdbm_drv.h 155;" d +NR_KPAGES_IN include/bdbm_drv.h 169;" d +NR_KSECTORS_IN include/bdbm_drv.h 168;" d +NR_NVM_PAGES devices/common/dev_params.c /^ NR_NVM_PAGES = 100, \/* 4KB * 1048576 = 4GB *\/$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: NR_PAGES_PER_BLOCK devices/common/dev_params.c /^ NR_PAGES_PER_BLOCK = 64,$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: NR_PHY_IN_LOG tools/lightnvm-v4.5.3/rrpc.h 36;" d NR_PHY_IN_LOG tools/lightnvm/rrpc.h 36;" d @@ -703,12 +708,12 @@ NVME_NR_AEN_COMMANDS tools/nvme/pci.c 57;" d file: NVME_NR_AEN_COMMANDS tools/nvmedrv-v4.5.3/pci.c 57;" d file: NVME_NS_DEAD tools/nvme/nvme.h 123;" d NVME_NS_DEAD tools/nvmedrv-v4.5.3/nvme.h 123;" d -NVME_NS_HYNIX tools/nvme/nvme.h /^ NVME_NS_HYNIX = 2,$/;" e enum:__anon48 -NVME_NS_HYNIX tools/nvmedrv-v4.5.3/nvme.h /^ NVME_NS_HYNIX = 2,$/;" e enum:__anon51 -NVME_NS_LBA tools/nvme/nvme.h /^ NVME_NS_LBA = 0,$/;" e enum:__anon48 -NVME_NS_LBA tools/nvmedrv-v4.5.3/nvme.h /^ NVME_NS_LBA = 0,$/;" e enum:__anon51 -NVME_NS_LIGHTNVM tools/nvme/nvme.h /^ NVME_NS_LIGHTNVM = 1,$/;" e enum:__anon48 -NVME_NS_LIGHTNVM tools/nvmedrv-v4.5.3/nvme.h /^ NVME_NS_LIGHTNVM = 1,$/;" e enum:__anon51 +NVME_NS_HYNIX tools/nvme/nvme.h /^ NVME_NS_HYNIX = 2,$/;" e enum:__anon49 +NVME_NS_HYNIX tools/nvmedrv-v4.5.3/nvme.h /^ NVME_NS_HYNIX = 2,$/;" e enum:__anon52 +NVME_NS_LBA tools/nvme/nvme.h /^ NVME_NS_LBA = 0,$/;" e enum:__anon49 +NVME_NS_LBA tools/nvmedrv-v4.5.3/nvme.h /^ NVME_NS_LBA = 0,$/;" e enum:__anon52 +NVME_NS_LIGHTNVM tools/nvme/nvme.h /^ NVME_NS_LIGHTNVM = 1,$/;" e enum:__anon49 +NVME_NS_LIGHTNVM tools/nvmedrv-v4.5.3/nvme.h /^ NVME_NS_LIGHTNVM = 1,$/;" e enum:__anon52 NVME_NS_REMOVING tools/nvme/nvme.h 122;" d NVME_NS_REMOVING tools/nvmedrv-v4.5.3/nvme.h 122;" d NVME_NVM_LP_MLC_PAIRS tools/nvme/lightnvm.c 149;" d file: @@ -729,8 +734,11 @@ NVME_QUIRK_STRIPE_SIZE tools/nvme/nvme.h /^ NVME_QUIRK_STRIPE_SIZE = (1 << 0), NVME_QUIRK_STRIPE_SIZE tools/nvmedrv-v4.5.3/nvme.h /^ NVME_QUIRK_STRIPE_SIZE = (1 << 0),$/;" e enum:nvme_quirks NVME_Q_DEPTH tools/nvme/pci.c 48;" d file: NVME_Q_DEPTH tools/nvmedrv-v4.5.3/pci.c 48;" d file: -NVME_SC_CANCELLED tools/nvme/nvme.h /^ NVME_SC_CANCELLED = -EINTR,$/;" e enum:__anon47 -NVME_SC_CANCELLED tools/nvmedrv-v4.5.3/nvme.h /^ NVME_SC_CANCELLED = -EINTR,$/;" e enum:__anon50 +NVME_SC_CANCELLED tools/nvme/nvme.h /^ NVME_SC_CANCELLED = -EINTR,$/;" e enum:__anon48 +NVME_SC_CANCELLED tools/nvmedrv-v4.5.3/nvme.h /^ NVME_SC_CANCELLED = -EINTR,$/;" e enum:__anon51 +NVM_BLK_SIZE frontend/kernel/nvm_cache.h 29;" d +NVM_CACHE include/bdbm_drv.h 1;" d +NVM_PAGE_SIZE devices/common/dev_params.c /^ NVM_PAGE_SIZE = 4096, \/* 4KB *\/$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: OBJS examples/stringsearch/Makefile /^OBJS = ss.o ss_impl_sw.o ss_impl_hw.o$/;" m OBJS_FORMAT tools/dumbssd-format/Makefile /^OBJS_FORMAT=dumbssd-format.o $/;" m OBJS_FORMAT tools/dumbssd-test/Makefile /^OBJS_FORMAT=dumbssd-test.o $/;" m @@ -765,8 +773,8 @@ QUEUE_POLICY_NO include/params.h /^ QUEUE_POLICY_NO,$/;" e enum:BDBM_QUEUE_POLIC QUEUE_POLICY_NOT_SPECIFIED include/params.h /^ QUEUE_POLICY_NOT_SPECIFIED = 0,$/;" e enum:BDBM_QUEUE_POLICY QUEUE_POLICY_SINGLE_FIFO include/params.h /^ QUEUE_POLICY_SINGLE_FIFO,$/;" e enum:BDBM_QUEUE_POLICY QUICK_FIX_FOR_RWM ftl/llm_rmq.c 56;" d file: -RD_PRIORITY_READ ftl/queue/rd_prior_queue.h /^ RD_PRIORITY_READ = 0,$/;" e enum:__anon73 -RD_PRIORITY_WRITE ftl/queue/rd_prior_queue.h /^ RD_PRIORITY_WRITE = 1,$/;" e enum:__anon73 +RD_PRIORITY_READ ftl/queue/rd_prior_queue.h /^ RD_PRIORITY_READ = 0,$/;" e enum:__anon78 +RD_PRIORITY_WRITE ftl/queue/rd_prior_queue.h /^ RD_PRIORITY_WRITE = 1,$/;" e enum:__anon78 READ_CAP_10_RESP_SIZE tools/nvme/scsi.c 170;" d file: READ_CAP_10_RESP_SIZE tools/nvmedrv-v4.5.3/scsi.c 170;" d file: READ_CAP_16_RESP_SIZE tools/nvme/scsi.c 171;" d file: @@ -777,11 +785,13 @@ REMAINING_TEMP_PAGE_LENGTH tools/nvme/scsi.c 164;" d file: REMAINING_TEMP_PAGE_LENGTH tools/nvmedrv-v4.5.3/scsi.c 164;" d file: REPORT_LUNS_FIRST_LUN_OFFSET tools/nvme/scsi.c 178;" d file: REPORT_LUNS_FIRST_LUN_OFFSET tools/nvmedrv-v4.5.3/scsi.c 178;" d file: +REQTYOE_WRITE_BACK include/bdbm_drv.h /^ REQTYOE_WRITE_BACK = REQTYPE_NORMAL | REQTYPE_IO_WRITE | REQTYPE_INTERNAL$/;" e enum:BDBM_REQTYPE REQTYPE_DONE include/bdbm_drv.h /^ REQTYPE_DONE = 0xFF0000,$/;" e enum:BDBM_REQTYPE REQTYPE_GC include/bdbm_drv.h /^ REQTYPE_GC = 0x000400,$/;" e enum:BDBM_REQTYPE REQTYPE_GC_ERASE include/bdbm_drv.h /^ REQTYPE_GC_ERASE = REQTYPE_GC | REQTYPE_IO_ERASE,$/;" e enum:BDBM_REQTYPE REQTYPE_GC_READ include/bdbm_drv.h /^ REQTYPE_GC_READ = REQTYPE_GC | REQTYPE_IO_READ,$/;" e enum:BDBM_REQTYPE REQTYPE_GC_WRITE include/bdbm_drv.h /^ REQTYPE_GC_WRITE = REQTYPE_GC | REQTYPE_IO_WRITE,$/;" e enum:BDBM_REQTYPE +REQTYPE_INTERNAL include/bdbm_drv.h /^ REQTYPE_INTERNAL = 0x001000,$/;" e enum:BDBM_REQTYPE REQTYPE_IO_ERASE include/bdbm_drv.h /^ REQTYPE_IO_ERASE = 0x000008,$/;" e enum:BDBM_REQTYPE REQTYPE_IO_READ include/bdbm_drv.h /^ REQTYPE_IO_READ = 0x000001,$/;" e enum:BDBM_REQTYPE REQTYPE_IO_READ_DUMMY include/bdbm_drv.h /^ REQTYPE_IO_READ_DUMMY = 0x000002,$/;" e enum:BDBM_REQTYPE @@ -798,18 +808,18 @@ REQTYPE_RMW_READ include/bdbm_drv.h /^ REQTYPE_RMW_READ = REQTYPE_RMW | REQT REQTYPE_RMW_WRITE include/bdbm_drv.h /^ REQTYPE_RMW_WRITE = REQTYPE_RMW | REQTYPE_IO_WRITE,$/;" e enum:BDBM_REQTYPE REQTYPE_TRIM include/bdbm_drv.h /^ REQTYPE_TRIM = REQTYPE_NORNAL | REQTYPE_IO_TRIM,$/;" e enum:BDBM_REQTYPE REQTYPE_WRITE include/bdbm_drv.h /^ REQTYPE_WRITE = REQTYPE_NORNAL | REQTYPE_IO_WRITE,$/;" e enum:BDBM_REQTYPE -REQ_STT_ALLOC frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_ALLOC = 0x0100,$/;" e enum:__anon62 -REQ_STT_FREE frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_FREE = 0,$/;" e enum:__anon62 -REQ_STT_KERN_INIT frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_KERN_INIT = REQ_STT_ALLOC | 0x1, $/;" e enum:__anon62 -REQ_STT_KERN_SENT frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_KERN_SENT = REQ_STT_ALLOC | 0x2,$/;" e enum:__anon62 -REQ_STT_USER_DONE frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_USER_DONE = REQ_STT_ALLOC | 0x4,$/;" e enum:__anon62 -REQ_STT_USER_PROG frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_USER_PROG = REQ_STT_ALLOC | 0x3,$/;" e enum:__anon62 +REQ_STT_ALLOC frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_ALLOC = 0x0100,$/;" e enum:__anon67 +REQ_STT_FREE frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_FREE = 0,$/;" e enum:__anon67 +REQ_STT_KERN_INIT frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_KERN_INIT = REQ_STT_ALLOC | 0x1, $/;" e enum:__anon67 +REQ_STT_KERN_SENT frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_KERN_SENT = REQ_STT_ALLOC | 0x2,$/;" e enum:__anon67 +REQ_STT_USER_DONE frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_USER_DONE = REQ_STT_ALLOC | 0x4,$/;" e enum:__anon67 +REQ_STT_USER_PROG frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_USER_PROG = REQ_STT_ALLOC | 0x3,$/;" e enum:__anon67 RESERVED_FIELD tools/nvme/scsi.c 108;" d file: RESERVED_FIELD tools/nvmedrv-v4.5.3/scsi.c 108;" d file: RESTRICTED_LUNS_RETURNED tools/nvme/scsi.c 74;" d file: RESTRICTED_LUNS_RETURNED tools/nvmedrv-v4.5.3/scsi.c 74;" d file: -RP_MEM_PHY ftl/hlm_reqs_pool.h /^ RP_MEM_PHY = 1,$/;" e enum:__anon67 -RP_MEM_VIRT ftl/hlm_reqs_pool.h /^ RP_MEM_VIRT = 0,$/;" e enum:__anon67 +RP_MEM_PHY ftl/hlm_reqs_pool.h /^ RP_MEM_PHY = 1,$/;" e enum:__anon72 +RP_MEM_VIRT ftl/hlm_reqs_pool.h /^ RP_MEM_VIRT = 0,$/;" e enum:__anon72 RRPC_EXPOSED_PAGE_SIZE tools/lightnvm-v4.5.3/rrpc.h 34;" d RRPC_EXPOSED_PAGE_SIZE tools/lightnvm/rrpc.h 34;" d RRPC_H_ tools/lightnvm-v4.5.3/rrpc.h 18;" d @@ -946,7 +956,7 @@ _BLUEDBM_DM_BLUEDBM_H devices/bluedbm/dm_bluedbm.h 26;" d _BLUEDBM_DM_DF_H devices/dragonfire/dm_df.h 26;" d _BLUEDBM_DM_PARAMS_H devices/common/dev_params.h 26;" d _BLUEDBM_DM_USER_H devices/libdummy/dm_dummy.h 26;" d -_BLUEDBM_DRV_H include/bdbm_drv.h 26;" d +_BLUEDBM_DRV_H include/bdbm_drv.h 28;" d _BLUEDBM_ERROR_CODES_H ftl/error_codes.h 26;" d _BLUEDBM_FILE_H common/utils/ufile.h 26;" d _BLUEDBM_FTL_ABM_H ftl/algo/abm.h 26;" d @@ -968,7 +978,7 @@ _BLUEDBM_LLM_NOQ_LOCK_H ftl/llm_noq_lock.h 26;" d _BLUEDBM_LLM_NT_H ftl/llm_noq.h 26;" d _BLUEDBM_LLM_RMQ_H ftl/llm_rmq.h 26;" d _BLUEDBM_MEMORY_H common/utils/umemory.h 26;" d -_BLUEDBM_PARAMS_H include/params.h 26;" d +_BLUEDBM_PARAMS_H include/params.h 27;" d _BLUEDBM_PRIOR_QUEUE_MQ_H ftl/queue/prior_queue.h 26;" d _BLUEDBM_QUEUE_MQ_H ftl/queue/queue.h 26;" d _BLUEDBM_RD_PRIOR_QUEUE_MQ_H ftl/queue/rd_prior_queue.h 26;" d @@ -1080,10 +1090,13 @@ __hlm_dftl_thread ftl/hlm_dftl.c /^int __hlm_dftl_thread (void* arg)$/;" f __hlm_nobuf_check_ondemand_gc ftl/hlm_nobuf.c /^void __hlm_nobuf_check_ondemand_gc (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f __hlm_nobuf_end_blkio_req ftl/hlm_nobuf.c /^void __hlm_nobuf_end_blkio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f __hlm_nobuf_end_gcio_req ftl/hlm_nobuf.c /^void __hlm_nobuf_end_gcio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f +__hlm_nobuf_end_wb_req ftl/hlm_nobuf.c /^void __hlm_nobuf_end_wb_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f __hlm_nobuf_make_rw_req ftl/hlm_nobuf.c /^uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f __hlm_nobuf_make_trim_req ftl/hlm_nobuf.c /^uint32_t __hlm_nobuf_make_trim_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* ptr_hlm_req)$/;" f +__hlm_nobuf_make_wb_req ftl/hlm_nobuf.c /^uint32_t __hlm_nobuf_make_wb_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f __hlm_reqs_pool_create_read_req ftl/hlm_reqs_pool.c /^static int __hlm_reqs_pool_create_read_req ($/;" f file: __hlm_reqs_pool_create_trim_req ftl/hlm_reqs_pool.c /^static int __hlm_reqs_pool_create_trim_req ($/;" f file: +__hlm_reqs_pool_create_wb_req ftl/hlm_reqs_pool.c /^static int __hlm_reqs_pool_create_wb_req ($/;" f file: __hlm_reqs_pool_create_write_req ftl/hlm_reqs_pool.c /^static int __hlm_reqs_pool_create_write_req ($/;" f file: __hlm_rsd_delete_hlm_req ftl/hlm_rsd.c /^void __hlm_rsd_delete_hlm_req ($/;" f __hlm_rsd_duplicate_hlm_req ftl/hlm_rsd.c /^bdbm_hlm_req_t* __hlm_rsd_duplicate_hlm_req ($/;" f @@ -1102,6 +1115,8 @@ __list_for_each common/3rd/ulist.h 260;" d __list_splice common/3rd/ulist.h /^static inline void __list_splice(struct list_head *list,$/;" f __llm_mq_thread ftl/llm_mq.c /^int __llm_mq_thread (void* arg)$/;" f __llm_rmq_thread ftl/llm_rmq.c /^int __llm_rmq_thread (void* arg)$/;" f +__nvm_alloc_nvmram frontend/kernel/nvm_cache.c /^static void* __nvm_alloc_nvmram (bdbm_device_params_t* ptr_np) $/;" f file: +__nvm_alloc_nvmram_tbl frontend/kernel/nvm_cache.c /^static void* __nvm_alloc_nvmram_tbl (bdbm_device_params_t* np) $/;" f file: __nvm_configure_create tools/lightnvm-v4.5.3/core.c /^static int __nvm_configure_create(struct nvm_ioctl_create *create)$/;" f file: __nvm_configure_create tools/lightnvm/core.c /^static int __nvm_configure_create(struct nvm_ioctl_create *create)$/;" f file: __nvm_configure_remove tools/lightnvm-v4.5.3/core.c /^static int __nvm_configure_remove(struct nvm_ioctl_remove *remove)$/;" f file: @@ -1187,7 +1202,8 @@ _llm_noq_inf common/bdbm_main.c /^bdbm_llm_inf_t _llm_noq_inf;$/;" v _llm_noq_inf ftl/llm_noq.c /^bdbm_llm_inf_t _llm_noq_inf = {$/;" v _llm_noq_lock_inf ftl/llm_noq_lock.c /^bdbm_llm_inf_t _llm_noq_lock_inf = {$/;" v _llm_rmq_inf ftl/llm_rmq.c /^bdbm_llm_inf_t _llm_rmq_inf = {$/;" v -_nvcache_inf frontend/kernel/nvmcache.c /^bdbm_nvcache_inf_t _nvcache_inf = {$/;" v +_nvm_dev frontend/kernel/nvm_cache.c /^bdbm_nvm_inf_t _nvm_dev = {$/;" v +_nvm_dev frontend/kernel/nvm_cache_bak/nvm_cache.c /^bdbm_nvm_inf_t _nvm_dev = {$/;" v _nvm_misc devices/dumbssd/dm_dumbssd.c /^static struct miscdevice _nvm_misc = {$/;" v typeref:struct:miscdevice file: _nvm_misc tools/lightnvm-v4.5.3/core.c /^static struct miscdevice _nvm_misc = {$/;" v typeref:struct:miscdevice file: _nvm_misc tools/lightnvm/core.c /^static struct miscdevice _nvm_misc = {$/;" v typeref:struct:miscdevice file: @@ -1214,13 +1230,16 @@ _param_mapping_type ftl/ftl_params.c /^int _param_mapping_type = MAPPING_POLI _param_nr_blocks_per_chip devices/common/dev_params.c /^int _param_nr_blocks_per_chip = NR_BLOCKS_PER_CHIP;$/;" v _param_nr_channels devices/common/dev_params.c /^int _param_nr_channels = NR_CHANNELS;$/;" v _param_nr_chips_per_channel devices/common/dev_params.c /^int _param_nr_chips_per_channel = NR_CHIPS_PER_CHANNEL;$/;" v +_param_nr_nvm_pages devices/common/dev_params.c /^int _param_nr_nvm_pages = NR_NVM_PAGES;$/;" v _param_nr_pages_per_block devices/common/dev_params.c /^int _param_nr_pages_per_block = NR_PAGES_PER_BLOCK;$/;" v +_param_nvm_page_size devices/common/dev_params.c /^int _param_nvm_page_size = NVM_PAGE_SIZE;$/;" v _param_page_main_size devices/common/dev_params.c /^int _param_page_main_size = NAND_PAGE_SIZE;$/;" v _param_page_oob_size devices/common/dev_params.c /^int _param_page_oob_size = NAND_PAGE_OOB_SIZE;$/;" v _param_page_prog_time_us devices/common/dev_params.c /^int _param_page_prog_time_us = NAND_PAGE_PROG_TIME_US; $/;" v _param_page_read_time_us devices/common/dev_params.c /^int _param_page_read_time_us = NAND_PAGE_READ_TIME_US;$/;" v _param_queuing_policy ftl/ftl_params.c /^int _param_queuing_policy = QUEUE_POLICY_MULTI_FIFO;$/;" v _param_snapshot ftl/ftl_params.c /^int _param_snapshot = SNAPSHOT_DISABLE;$/;" v +_param_trim ftl/ftl_params.c /^int _param_trim = TRIM_DISABLE;$/;" v _param_trim ftl/ftl_params.c /^int _param_trim = TRIM_ENABLE;$/;" v _param_wl_policy ftl/ftl_params.c /^int _param_wl_policy = WL_POLICY_NONE;$/;" v _time_startup_timestamp common/utils/utime.c /^static uint32_t _time_startup_timestamp = 0;$/;" v file: @@ -1231,15 +1250,15 @@ _utstring_BuildTable common/3rd/utstring.h /^_UNUSED_ static void _utstring_Buil _utstring_BuildTableR common/3rd/utstring.h /^_UNUSED_ static void _utstring_BuildTableR($/;" f _utstring_find common/3rd/utstring.h /^_UNUSED_ static long _utstring_find($/;" f _utstring_findR common/3rd/utstring.h /^_UNUSED_ static long _utstring_findR($/;" f -abm ftl/algo/block_ftl.c /^ bdbm_abm_info_t* abm;$/;" m struct:__anon78 file: +abm ftl/algo/block_ftl.c /^ bdbm_abm_info_t* abm;$/;" m struct:__anon83 file: abort_endio tools/nvme/pci.c /^static void abort_endio(struct request *req, int error)$/;" f file: abort_endio tools/nvmedrv-v4.5.3/pci.c /^static void abort_endio(struct request *req, int error)$/;" f file: abort_limit tools/nvme/nvme.h /^ atomic_t abort_limit;$/;" m struct:nvme_ctrl abort_limit tools/nvmedrv-v4.5.3/nvme.h /^ atomic_t abort_limit;$/;" m struct:nvme_ctrl aborted tools/nvme/pci.c /^ int aborted;$/;" m struct:nvme_iod file: aborted tools/nvmedrv-v4.5.3/pci.c /^ int aborted;$/;" m struct:nvme_iod file: -ac_bab ftl/algo/dftl.c /^ bdbm_abm_block_t** ac_bab;$/;" m struct:__anon86 file: -ac_bab ftl/algo/page_ftl.c /^ bdbm_abm_block_t** ac_bab;$/;" m struct:__anon88 file: +ac_bab ftl/algo/dftl.c /^ bdbm_abm_block_t** ac_bab;$/;" m struct:__anon91 file: +ac_bab ftl/algo/page_ftl.c /^ bdbm_abm_block_t** ac_bab;$/;" m struct:__anon93 file: act_blk tools/lightnvm-v4.5.3/sysblk.c /^ int act_blk[MAX_SYSBLKS];$/;" m struct:sysblk_scan file: act_blk tools/lightnvm/sysblk.c /^ int act_blk[MAX_SYSBLKS];$/;" m struct:sysblk_scan file: adapter_alloc_cq tools/nvme/pci.c /^static int adapter_alloc_cq(struct nvme_dev *dev, u16 qid,$/;" f file: @@ -1289,16 +1308,17 @@ atomic_sub common/3rd/uatomic.h /^static inline void atomic_sub( int i, atomic_t atomic_sub_and_test common/3rd/uatomic.h /^static inline int atomic_sub_and_test( int i, atomic_t *v )$/;" f atomic_t common/3rd/uatomic.h /^} atomic_t;$/;" t typeref:struct:__anon7 babm_abm_subpage_t ftl/algo/abm.h /^typedef uint8_t babm_abm_subpage_t; \/* BDBM_ABM_PAGE_STATUS *\/$/;" t -badblk ftl/algo/dftl.c /^ bdbm_sema_t badblk;$/;" m struct:__anon86 file: -badblk ftl/algo/page_ftl.c /^ bdbm_sema_t badblk;$/;" m struct:__anon88 file: +badblk ftl/algo/dftl.c /^ bdbm_sema_t badblk;$/;" m struct:__anon91 file: +badblk ftl/algo/page_ftl.c /^ bdbm_sema_t badblk;$/;" m struct:__anon93 file: badblock_scan_thread_fn frontend/kernel/blkdev.c /^int badblock_scan_thread_fn (void* arg) $/;" f -bai ftl/algo/dftl.c /^ bdbm_abm_info_t* bai;$/;" m struct:__anon86 file: -bai ftl/algo/page_ftl.c /^ bdbm_abm_info_t* bai;$/;" m struct:__anon88 file: +badblock_scan_thread_fn frontend/kernel/blkdev_bak.c /^int badblock_scan_thread_fn (void* arg) $/;" f +bai ftl/algo/dftl.c /^ bdbm_abm_info_t* bai;$/;" m struct:__anon91 file: +bai ftl/algo/page_ftl.c /^ bdbm_abm_info_t* bai;$/;" m struct:__anon93 file: bar tools/nvme/pci.c /^ void __iomem *bar;$/;" m struct:nvme_dev file: bar tools/nvmedrv-v4.5.3/pci.c /^ void __iomem *bar;$/;" m struct:nvme_dev file: bb_list tools/lightnvm-v4.5.3/gennvm.h /^ struct list_head bb_list; \/* Bad blocks. Mutually exclusive with$/;" m struct:gen_lun typeref:struct:gen_lun::list_head bb_list tools/lightnvm/gennvm.h /^ struct list_head bb_list; \/* Bad blocks. Mutually exclusive with$/;" m struct:gen_lun typeref:struct:gen_lun::list_head -bdbm_abm_block_t ftl/algo/abm.h /^} bdbm_abm_block_t;$/;" t typeref:struct:__anon79 +bdbm_abm_block_t ftl/algo/abm.h /^} bdbm_abm_block_t;$/;" t typeref:struct:__anon84 bdbm_abm_create ftl/algo/abm.c /^bdbm_abm_info_t* bdbm_abm_create ($/;" f bdbm_abm_destroy ftl/algo/abm.c /^void bdbm_abm_destroy (bdbm_abm_info_t* bai) $/;" f bdbm_abm_erase_block ftl/algo/abm.c /^void bdbm_abm_erase_block ($/;" f @@ -1312,20 +1332,22 @@ bdbm_abm_get_nr_dirty_blocks ftl/algo/abm.h /^static inline uint64_t bdbm_abm_ge bdbm_abm_get_nr_free_blocks ftl/algo/abm.h /^static inline uint64_t bdbm_abm_get_nr_free_blocks (bdbm_abm_info_t* bai) { return bai->nr_free_blks; }$/;" f bdbm_abm_get_nr_free_blocks_prepared ftl/algo/abm.h /^static inline uint64_t bdbm_abm_get_nr_free_blocks_prepared (bdbm_abm_info_t* bai) { return bai->nr_free_blks_prepared; }$/;" f bdbm_abm_get_nr_total_blocks ftl/algo/abm.h /^static inline uint64_t bdbm_abm_get_nr_total_blocks (bdbm_abm_info_t* bai) { return bai->nr_total_blks; }$/;" f -bdbm_abm_info_t ftl/algo/abm.h /^} bdbm_abm_info_t;$/;" t typeref:struct:__anon80 +bdbm_abm_info_t ftl/algo/abm.h /^} bdbm_abm_info_t;$/;" t typeref:struct:__anon85 bdbm_abm_invalidate_page ftl/algo/abm.c /^void bdbm_abm_invalidate_page ($/;" f bdbm_abm_list_for_each_dirty_block ftl/algo/abm.h 109;" d bdbm_abm_load ftl/algo/abm.c /^uint32_t bdbm_abm_load (bdbm_abm_info_t* bai, const char* fn)$/;" f bdbm_abm_set_to_dirty_block ftl/algo/abm.c /^void bdbm_abm_set_to_dirty_block ($/;" f bdbm_abm_store ftl/algo/abm.c /^uint32_t bdbm_abm_store (bdbm_abm_info_t* bai, const char* fn)$/;" f bdbm_blk_getgeo frontend/kernel/blkdev.c /^int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo)$/;" f +bdbm_blk_getgeo frontend/kernel/blkdev_bak.c /^int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo)$/;" f bdbm_blk_ioctl frontend/kernel/blkdev.c /^int bdbm_blk_ioctl ($/;" f -bdbm_blkio_private_t frontend/kernel/blkio.c /^} bdbm_blkio_private_t;$/;" t typeref:struct:__anon55 file: -bdbm_blkio_proxy_req_t frontend/hybrid/blkio_proxy_ioctl.h /^} bdbm_blkio_proxy_req_t;$/;" t typeref:struct:__anon63 -bdbm_blkio_proxy_t frontend/hybrid/blkio_proxy.c /^} bdbm_blkio_proxy_t;$/;" t typeref:struct:__anon61 file: -bdbm_blkio_proxy_wq_t frontend/hybrid/blkio_proxy.c /^} bdbm_blkio_proxy_wq_t;$/;" t typeref:struct:__anon60 file: +bdbm_blk_ioctl frontend/kernel/blkdev_bak.c /^int bdbm_blk_ioctl ($/;" f +bdbm_blkio_private_t frontend/kernel/blkio.c /^} bdbm_blkio_private_t;$/;" t typeref:struct:__anon60 file: +bdbm_blkio_proxy_req_t frontend/hybrid/blkio_proxy_ioctl.h /^} bdbm_blkio_proxy_req_t;$/;" t typeref:struct:__anon68 +bdbm_blkio_proxy_t frontend/hybrid/blkio_proxy.c /^} bdbm_blkio_proxy_t;$/;" t typeref:struct:__anon66 file: +bdbm_blkio_proxy_wq_t frontend/hybrid/blkio_proxy.c /^} bdbm_blkio_proxy_wq_t;$/;" t typeref:struct:__anon65 file: bdbm_blkio_req_t include/bdbm_drv.h /^} bdbm_blkio_req_t;$/;" t typeref:struct:__anon26 -bdbm_blkio_stub_private_t frontend/hybrid/blkio_stub.c /^} bdbm_blkio_stub_private_t;$/;" t typeref:struct:__anon64 file: +bdbm_blkio_stub_private_t frontend/hybrid/blkio_stub.c /^} bdbm_blkio_stub_private_t;$/;" t typeref:struct:__anon69 file: bdbm_block_ftl_badblock_scan ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_badblock_scan (bdbm_drv_info_t* bdi)$/;" f bdbm_block_ftl_create ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_create (bdbm_drv_info_t* bdi)$/;" f bdbm_block_ftl_destroy ftl/algo/block_ftl.c /^void bdbm_block_ftl_destroy ($/;" f @@ -1337,9 +1359,9 @@ bdbm_block_ftl_invalidate_lpa ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_inv bdbm_block_ftl_is_gc_needed ftl/algo/block_ftl.c /^uint8_t bdbm_block_ftl_is_gc_needed (bdbm_drv_info_t* bdi, int64_t lpa)$/;" f bdbm_block_ftl_load ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_load (bdbm_drv_info_t* bdi, const char* fn)$/;" f bdbm_block_ftl_map_lpa_to_ppa ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_map_lpa_to_ppa ($/;" f -bdbm_block_ftl_private_t ftl/algo/block_ftl.c /^} bdbm_block_ftl_private_t;$/;" t typeref:struct:__anon78 file: +bdbm_block_ftl_private_t ftl/algo/block_ftl.c /^} bdbm_block_ftl_private_t;$/;" t typeref:struct:__anon83 file: bdbm_block_ftl_store ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f -bdbm_block_mapping_entry_t ftl/algo/block_ftl.c /^} bdbm_block_mapping_entry_t;$/;" t typeref:struct:__anon77 file: +bdbm_block_mapping_entry_t ftl/algo/block_ftl.c /^} bdbm_block_mapping_entry_t;$/;" t typeref:struct:__anon82 file: bdbm_bug_on include/debug.h 108;" d bdbm_bug_on include/debug.h 97;" d bdbm_complete common/utils/usync.h 37;" d @@ -1349,10 +1371,13 @@ bdbm_daemonize common/utils/uthread.h 40;" d bdbm_dbg_msg include/debug.h 103;" d bdbm_dbg_msg include/debug.h 109;" d bdbm_device frontend/kernel/blkdev.c /^} bdbm_device;$/;" v typeref:struct:bdbm_device_t file: +bdbm_device frontend/kernel/blkdev_bak.c /^} bdbm_device;$/;" v typeref:struct:bdbm_device_t file: bdbm_device_major_num frontend/kernel/blkdev.c /^static uint32_t bdbm_device_major_num = 0;$/;" v file: -bdbm_device_params_t include/params.h /^} bdbm_device_params_t;$/;" t typeref:struct:__anon46 +bdbm_device_major_num frontend/kernel/blkdev_bak.c /^static uint32_t bdbm_device_major_num = 0;$/;" v file: +bdbm_device_params_t include/params.h /^} bdbm_device_params_t;$/;" t typeref:struct:__anon47 bdbm_device_t frontend/kernel/blkdev.c /^static struct bdbm_device_t {$/;" s file: -bdbm_device_type_t include/params.h /^} bdbm_device_type_t;$/;" t typeref:enum:__anon44 +bdbm_device_t frontend/kernel/blkdev_bak.c /^static struct bdbm_device_t {$/;" s file: +bdbm_device_type_t include/params.h /^} bdbm_device_type_t;$/;" t typeref:enum:__anon45 bdbm_dftl_badblock_scan ftl/algo/dftl.c /^uint32_t bdbm_dftl_badblock_scan (bdbm_drv_info_t* bdi)$/;" f bdbm_dftl_check_mapblk ftl/algo/dftl.c /^uint8_t bdbm_dftl_check_mapblk ($/;" f bdbm_dftl_check_mapping_entry ftl/algo/dftl_map.c /^int bdbm_dftl_check_mapping_entry ($/;" f @@ -1379,7 +1404,7 @@ bdbm_dftl_missing_dir_prepare ftl/algo/dftl_map.c /^directory_slot_t* bdbm_dftl_ bdbm_dftl_prepare_mapblk_eviction ftl/algo/dftl.c /^bdbm_llm_req_t* bdbm_dftl_prepare_mapblk_eviction ($/;" f bdbm_dftl_prepare_mapblk_load ftl/algo/dftl.c /^bdbm_llm_req_t* bdbm_dftl_prepare_mapblk_load ($/;" f bdbm_dftl_prepare_victim_mapblk ftl/algo/dftl_map.c /^directory_slot_t* bdbm_dftl_prepare_victim_mapblk ($/;" f -bdbm_dftl_private_t ftl/algo/dftl.c /^} bdbm_dftl_private_t;$/;" t typeref:struct:__anon86 file: +bdbm_dftl_private_t ftl/algo/dftl.c /^} bdbm_dftl_private_t;$/;" t typeref:struct:__anon91 file: bdbm_dftl_set_mapping_entry ftl/algo/dftl_map.c /^int bdbm_dftl_set_mapping_entry (dftl_mapping_table_t* mt, uint64_t lpa, mapping_entry_t* me)$/;" f bdbm_dftl_store ftl/algo/dftl.c /^uint32_t bdbm_dftl_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f bdbm_dftl_update_dir_phyaddr ftl/algo/dftl_map.c /^void bdbm_dftl_update_dir_phyaddr ($/;" f @@ -1395,15 +1420,15 @@ bdbm_dm_get_inf devices/dumbssd/dm_dumbssd.c /^EXPORT_SYMBOL (bdbm_dm_get_inf);$ bdbm_dm_get_inf devices/dumbssd/dm_dumbssd.c /^bdbm_dm_inf_t* bdbm_dm_get_inf (bdbm_drv_info_t* bdi)$/;" f bdbm_dm_get_inf frontend/df-user/dev_proxy.c /^bdbm_dm_inf_t* bdbm_dm_get_inf (bdbm_drv_info_t* bdi)$/;" f bdbm_dm_get_inf frontend/user/dev_proxy.c /^bdbm_dm_inf_t* bdbm_dm_get_inf (bdbm_drv_info_t* bdi)$/;" f -bdbm_dm_inf_t include/bdbm_drv.h /^} bdbm_dm_inf_t;$/;" t typeref:struct:__anon41 +bdbm_dm_inf_t include/bdbm_drv.h /^} bdbm_dm_inf_t;$/;" t typeref:struct:__anon42 bdbm_dm_init devices/common/dev_main.c /^EXPORT_SYMBOL (bdbm_dm_init);$/;" v bdbm_dm_init devices/common/dev_main.c /^int bdbm_dm_init (bdbm_drv_info_t* bdi)$/;" f bdbm_dm_init devices/dumbssd/dm_dumbssd.c /^EXPORT_SYMBOL (bdbm_dm_init);$/;" v bdbm_dm_init devices/dumbssd/dm_dumbssd.c /^int bdbm_dm_init (bdbm_drv_info_t* bdi)$/;" f bdbm_dm_init frontend/df-user/dev_proxy.c /^int bdbm_dm_init (bdbm_drv_info_t* bdi)$/;" f bdbm_dm_init frontend/user/dev_proxy.c /^int bdbm_dm_init (bdbm_drv_info_t* bdi)$/;" f -bdbm_dm_proxy_t frontend/df-user/dev_proxy.c /^} bdbm_dm_proxy_t;$/;" t typeref:struct:__anon57 file: -bdbm_dm_proxy_t frontend/user/dev_proxy.c /^} bdbm_dm_proxy_t;$/;" t typeref:struct:__anon54 file: +bdbm_dm_proxy_t frontend/df-user/dev_proxy.c /^} bdbm_dm_proxy_t;$/;" t typeref:struct:__anon62 file: +bdbm_dm_proxy_t frontend/user/dev_proxy.c /^} bdbm_dm_proxy_t;$/;" t typeref:struct:__anon55 file: bdbm_dm_stub_exit devices/common/dev_stub.c /^void bdbm_dm_stub_exit (void)$/;" f bdbm_dm_stub_init devices/common/dev_stub.c /^int bdbm_dm_stub_init (void)$/;" f bdbm_dm_stub_t devices/common/dev_stub.c /^} bdbm_dm_stub_t;$/;" t typeref:struct:__anon9 file: @@ -1443,45 +1468,47 @@ bdbm_free_phy common/utils/umemory.c /^void bdbm_free_phy (void* addr) { free (a bdbm_free_phy common/utils/umemory.c /^void bdbm_free_phy (void* addr) { vfree (addr); } \/* for compatibility *\/$/;" f bdbm_free_phy frontend/df-user/df_umemory.c /^void bdbm_free_phy (void* addr) { $/;" f bdbm_fsync common/utils/ufile.c /^uint32_t bdbm_fsync (bdbm_file_t file) $/;" f -bdbm_ftl_inf_t include/bdbm_drv.h /^} bdbm_ftl_inf_t;$/;" t typeref:struct:__anon42 -bdbm_ftl_params include/params.h /^} bdbm_ftl_params;$/;" t typeref:struct:__anon45 +bdbm_ftl_inf_t include/bdbm_drv.h /^} bdbm_ftl_inf_t;$/;" t typeref:struct:__anon43 +bdbm_ftl_params include/params.h /^} bdbm_ftl_params;$/;" t typeref:struct:__anon46 bdbm_funlink common/utils/ufile.c /^uint32_t bdbm_funlink (bdbm_file_t file)$/;" f bdbm_fwrite common/utils/ufile.c /^uint64_t bdbm_fwrite (bdbm_file_t file, uint64_t offset, uint8_t* data, uint64_t size) $/;" f bdbm_hlm_buf_private ftl/hlm_buf.c /^struct bdbm_hlm_buf_private {$/;" s file: -bdbm_hlm_dftl_private_t ftl/hlm_dftl.c /^} bdbm_hlm_dftl_private_t;$/;" t typeref:struct:__anon89 file: -bdbm_hlm_for_each_llm_req include/bdbm_drv.h 226;" d -bdbm_hlm_inf_t include/bdbm_drv.h /^} bdbm_hlm_inf_t;$/;" t typeref:struct:__anon39 -bdbm_hlm_nobuf_private_t ftl/hlm_nobuf.c /^} bdbm_hlm_nobuf_private_t;$/;" t typeref:struct:__anon65 file: +bdbm_hlm_dftl_private_t ftl/hlm_dftl.c /^} bdbm_hlm_dftl_private_t;$/;" t typeref:struct:__anon94 file: +bdbm_hlm_for_each_llm_req include/bdbm_drv.h 245;" d +bdbm_hlm_inf_t include/bdbm_drv.h /^} bdbm_hlm_inf_t;$/;" t typeref:struct:__anon40 +bdbm_hlm_nobuf_private_t ftl/hlm_nobuf.c /^} bdbm_hlm_nobuf_private_t;$/;" t typeref:struct:__anon70 file: bdbm_hlm_req_gc_t include/bdbm_drv.h /^} bdbm_hlm_req_gc_t;$/;" t typeref:struct:__anon37 bdbm_hlm_req_t include/bdbm_drv.h /^} bdbm_hlm_req_t;$/;" t typeref:struct:__anon32 bdbm_hlm_reqs_pool_build_req ftl/hlm_reqs_pool.c /^int bdbm_hlm_reqs_pool_build_req ($/;" f +bdbm_hlm_reqs_pool_build_wb_req ftl/hlm_reqs_pool.c /^int bdbm_hlm_reqs_pool_build_wb_req ($/;" f bdbm_hlm_reqs_pool_create ftl/hlm_reqs_pool.c /^bdbm_hlm_reqs_pool_t* bdbm_hlm_reqs_pool_create ($/;" f bdbm_hlm_reqs_pool_destroy ftl/hlm_reqs_pool.c /^void bdbm_hlm_reqs_pool_destroy ($/;" f bdbm_hlm_reqs_pool_free_item ftl/hlm_reqs_pool.c /^void bdbm_hlm_reqs_pool_free_item ($/;" f bdbm_hlm_reqs_pool_get_item ftl/hlm_reqs_pool.c /^bdbm_hlm_req_t* bdbm_hlm_reqs_pool_get_item ($/;" f -bdbm_hlm_reqs_pool_t ftl/hlm_reqs_pool.h /^} bdbm_hlm_reqs_pool_t;$/;" t typeref:struct:__anon66 -bdbm_hlm_rsd_private_t ftl/hlm_rsd.c /^}bdbm_hlm_rsd_private_t;$/;" t typeref:struct:__anon91 file: +bdbm_hlm_reqs_pool_t ftl/hlm_reqs_pool.h /^} bdbm_hlm_reqs_pool_t;$/;" t typeref:struct:__anon71 +bdbm_hlm_rsd_private_t ftl/hlm_rsd.c /^}bdbm_hlm_rsd_private_t;$/;" t typeref:struct:__anon96 file: bdbm_host_inf_t include/bdbm_drv.h /^} bdbm_host_inf_t;$/;" t typeref:struct:__anon38 bdbm_init_completion common/utils/usync.h 34;" d -bdbm_is_erase include/bdbm_drv.h 122;" d -bdbm_is_gc include/bdbm_drv.h 118;" d -bdbm_is_meta include/bdbm_drv.h 119;" d -bdbm_is_normal include/bdbm_drv.h 116;" d -bdbm_is_read include/bdbm_drv.h 120;" d -bdbm_is_rmw include/bdbm_drv.h 117;" d -bdbm_is_trim include/bdbm_drv.h 123;" d -bdbm_is_write include/bdbm_drv.h 121;" d -bdbm_llm_get_logaddr include/bdbm_drv.h 229;" d -bdbm_llm_get_phyaddr include/bdbm_drv.h 231;" d -bdbm_llm_inf_t include/bdbm_drv.h /^} bdbm_llm_inf_t;$/;" t typeref:struct:__anon40 +bdbm_is_erase include/bdbm_drv.h 131;" d +bdbm_is_gc include/bdbm_drv.h 127;" d +bdbm_is_meta include/bdbm_drv.h 128;" d +bdbm_is_normal include/bdbm_drv.h 125;" d +bdbm_is_read include/bdbm_drv.h 129;" d +bdbm_is_rmw include/bdbm_drv.h 126;" d +bdbm_is_trim include/bdbm_drv.h 132;" d +bdbm_is_write include/bdbm_drv.h 130;" d +bdbm_is_writeback include/bdbm_drv.h 135;" d +bdbm_llm_get_logaddr include/bdbm_drv.h 248;" d +bdbm_llm_get_phyaddr include/bdbm_drv.h 250;" d +bdbm_llm_inf_t include/bdbm_drv.h /^} bdbm_llm_inf_t;$/;" t typeref:struct:__anon41 bdbm_llm_mq_private ftl/llm_mq.c /^struct bdbm_llm_mq_private {$/;" s file: bdbm_llm_noq_lock_private ftl/llm_noq_lock.c /^struct bdbm_llm_noq_lock_private {$/;" s file: bdbm_llm_noq_private ftl/llm_noq.c /^struct bdbm_llm_noq_private {$/;" s file: bdbm_llm_req_ioctl_t devices/common/dev_stub.h /^} bdbm_llm_req_ioctl_t;$/;" t typeref:struct:__anon10 bdbm_llm_req_t include/bdbm_drv.h /^} bdbm_llm_req_t;$/;" t typeref:struct:__anon31 bdbm_llm_rmq_private ftl/llm_rmq.c /^struct bdbm_llm_rmq_private {$/;" s file: -bdbm_llm_set_logaddr include/bdbm_drv.h 228;" d -bdbm_llm_set_phyaddr include/bdbm_drv.h 230;" d +bdbm_llm_set_logaddr include/bdbm_drv.h 247;" d +bdbm_llm_set_phyaddr include/bdbm_drv.h 249;" d bdbm_logaddr_t include/bdbm_drv.h /^} bdbm_logaddr_t;$/;" t typeref:struct:__anon28 bdbm_malloc common/utils/umemory.c /^void* bdbm_malloc (size_t size) { return calloc (1, size); }$/;" f bdbm_malloc common/utils/umemory.c /^void* bdbm_malloc (size_t size) { return vzalloc (size); }$/;" f @@ -1521,6 +1548,18 @@ bdbm_no_ftl_get_free_ppa ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_get_free_ppa ( bdbm_no_ftl_get_ppa ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_get_ppa (bdbm_drv_info_t* bdi, uint64_t lpa, bdbm_phyaddr_t* ppa)$/;" f bdbm_no_ftl_invalidate_lpa ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_invalidate_lpa (bdbm_drv_info_t* bdi, uint64_t lpa, uint64_t len)$/;" f bdbm_no_ftl_map_lpa_to_ppa ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_map_lpa_to_ppa (bdbm_drv_info_t* bdi, uint64_t lpa, bdbm_phyaddr_t* ptr_phyaddr)$/;" f +bdbm_nvm_alloc_slot frontend/kernel/nvm_cache.c /^uint64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f +bdbm_nvm_block_t frontend/kernel/nvm_cache_bak/nvm_cache.h /^} bdbm_nvm_block_t;$/;" t typeref:struct:__anon58 +bdbm_nvm_create frontend/kernel/nvm_cache.c /^uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi){$/;" f +bdbm_nvm_create frontend/kernel/nvm_cache_bak/nvm_cache.c /^uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi){$/;" f +bdbm_nvm_destroy frontend/kernel/nvm_cache.c /^void bdbm_nvm_destroy (bdbm_drv_info_t* bdi)$/;" f +bdbm_nvm_dev_private_t frontend/kernel/nvm_cache.h /^} bdbm_nvm_dev_private_t;$/;" t typeref:struct:__anon57 +bdbm_nvm_dev_private_t frontend/kernel/nvm_cache_bak/nvm_cache.h /^} bdbm_nvm_dev_private_t;$/;" t typeref:struct:__anon59 +bdbm_nvm_find_data frontend/kernel/nvm_cache.c /^uint64_t bdbm_nvm_find_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f +bdbm_nvm_inf_t include/bdbm_drv.h /^} bdbm_nvm_inf_t;$/;" t typeref:struct:__anon39 +bdbm_nvm_page_t frontend/kernel/nvm_cache.h /^} bdbm_nvm_page_t;$/;" t typeref:struct:__anon56 +bdbm_nvm_read_data frontend/kernel/nvm_cache.c /^uint64_t bdbm_nvm_read_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f +bdbm_nvm_write_data frontend/kernel/nvm_cache.c /^uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f bdbm_page_badblock_scan ftl/algo/page_ftl.c /^uint32_t bdbm_page_badblock_scan (bdbm_drv_info_t* bdi)$/;" f bdbm_page_ftl_create ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_create (bdbm_drv_info_t* bdi)$/;" f bdbm_page_ftl_destroy ftl/algo/page_ftl.c /^void bdbm_page_ftl_destroy (bdbm_drv_info_t* bdi)$/;" f @@ -1531,12 +1570,12 @@ bdbm_page_ftl_invalidate_lpa ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_invali bdbm_page_ftl_is_gc_needed ftl/algo/page_ftl.c /^uint8_t bdbm_page_ftl_is_gc_needed (bdbm_drv_info_t* bdi, int64_t lpa)$/;" f bdbm_page_ftl_load ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_load (bdbm_drv_info_t* bdi, const char* fn)$/;" f bdbm_page_ftl_map_lpa_to_ppa ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_map_lpa_to_ppa ($/;" f -bdbm_page_ftl_private_t ftl/algo/page_ftl.c /^} bdbm_page_ftl_private_t;$/;" t typeref:struct:__anon88 file: +bdbm_page_ftl_private_t ftl/algo/page_ftl.c /^} bdbm_page_ftl_private_t;$/;" t typeref:struct:__anon93 file: bdbm_page_ftl_store ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f -bdbm_page_mapping_entry_t ftl/algo/page_ftl.c /^} bdbm_page_mapping_entry_t;$/;" t typeref:struct:__anon87 file: -bdbm_perf_monitor_t include/bdbm_drv.h /^} bdbm_perf_monitor_t;$/;" t typeref:struct:__anon43 +bdbm_page_mapping_entry_t ftl/algo/page_ftl.c /^} bdbm_page_mapping_entry_t;$/;" t typeref:struct:__anon92 file: +bdbm_perf_monitor_t include/bdbm_drv.h /^} bdbm_perf_monitor_t;$/;" t typeref:struct:__anon44 bdbm_phyaddr_t include/bdbm_drv.h /^} bdbm_phyaddr_t;$/;" t typeref:struct:__anon25 -bdbm_prior_lpa_item_t ftl/queue/prior_queue.h /^} bdbm_prior_lpa_item_t;$/;" t typeref:struct:__anon71 +bdbm_prior_lpa_item_t ftl/queue/prior_queue.h /^} bdbm_prior_lpa_item_t;$/;" t typeref:struct:__anon76 bdbm_prior_queue_create ftl/queue/prior_queue.c /^bdbm_prior_queue_t* bdbm_prior_queue_create ($/;" f bdbm_prior_queue_dequeue ftl/queue/prior_queue.c /^void* bdbm_prior_queue_dequeue ($/;" f bdbm_prior_queue_destroy ftl/queue/prior_queue.c /^void bdbm_prior_queue_destroy (bdbm_prior_queue_t* mq)$/;" f @@ -1545,16 +1584,16 @@ bdbm_prior_queue_get_nr_items ftl/queue/prior_queue.c /^uint64_t bdbm_prior_queu bdbm_prior_queue_is_all_empty ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_is_all_empty (bdbm_prior_queue_t* mq)$/;" f bdbm_prior_queue_is_empty ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_is_empty ($/;" f bdbm_prior_queue_is_full ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_is_full (bdbm_prior_queue_t* mq)$/;" f -bdbm_prior_queue_item_t ftl/queue/prior_queue.h /^} bdbm_prior_queue_item_t;$/;" t typeref:struct:__anon70 +bdbm_prior_queue_item_t ftl/queue/prior_queue.h /^} bdbm_prior_queue_item_t;$/;" t typeref:struct:__anon75 bdbm_prior_queue_move ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_move ($/;" f bdbm_prior_queue_remove ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_remove ($/;" f -bdbm_prior_queue_t ftl/queue/prior_queue.h /^} bdbm_prior_queue_t;$/;" t typeref:struct:__anon72 -bdbm_proxy_req_status_t frontend/hybrid/blkio_proxy_ioctl.h /^} bdbm_proxy_req_status_t;$/;" t typeref:enum:__anon62 +bdbm_prior_queue_t ftl/queue/prior_queue.h /^} bdbm_prior_queue_t;$/;" t typeref:struct:__anon77 +bdbm_proxy_req_status_t frontend/hybrid/blkio_proxy_ioctl.h /^} bdbm_proxy_req_status_t;$/;" t typeref:enum:__anon67 bdbm_proxy_reqs_pool_alloc_item frontend/hybrid/blkio_proxy_reqs_pool.c /^bdbm_blkio_proxy_req_t* bdbm_proxy_reqs_pool_alloc_item ($/;" f bdbm_proxy_reqs_pool_create frontend/hybrid/blkio_proxy_reqs_pool.c /^bdbm_proxy_reqs_pool_t* bdbm_proxy_reqs_pool_create ($/;" f bdbm_proxy_reqs_pool_destroy frontend/hybrid/blkio_proxy_reqs_pool.c /^void bdbm_proxy_reqs_pool_destroy (bdbm_proxy_reqs_pool_t* pool)$/;" f bdbm_proxy_reqs_pool_free_item frontend/hybrid/blkio_proxy_reqs_pool.c /^void bdbm_proxy_reqs_pool_free_item ($/;" f -bdbm_proxy_reqs_pool_t frontend/hybrid/blkio_proxy_reqs_pool.h /^} bdbm_proxy_reqs_pool_t;$/;" t typeref:struct:__anon58 +bdbm_proxy_reqs_pool_t frontend/hybrid/blkio_proxy_reqs_pool.h /^} bdbm_proxy_reqs_pool_t;$/;" t typeref:struct:__anon63 bdbm_queue_create ftl/queue/queue.c /^bdbm_queue_t* bdbm_queue_create (uint64_t nr_queues, int64_t max_size)$/;" f bdbm_queue_dequeue ftl/queue/queue.c /^void* bdbm_queue_dequeue (bdbm_queue_t* mq, uint64_t qid)$/;" f bdbm_queue_destroy ftl/queue/queue.c /^void bdbm_queue_destroy (bdbm_queue_t* mq)$/;" f @@ -1564,8 +1603,8 @@ bdbm_queue_get_nr_items ftl/queue/queue.c /^uint64_t bdbm_queue_get_nr_items (bd bdbm_queue_is_all_empty ftl/queue/queue.c /^uint8_t bdbm_queue_is_all_empty (bdbm_queue_t* mq)$/;" f bdbm_queue_is_empty ftl/queue/queue.c /^uint8_t bdbm_queue_is_empty (bdbm_queue_t* mq, uint64_t qid)$/;" f bdbm_queue_is_full ftl/queue/queue.c /^uint8_t bdbm_queue_is_full (bdbm_queue_t* mq)$/;" f -bdbm_queue_item_t ftl/queue/queue.h /^} bdbm_queue_item_t;$/;" t typeref:struct:__anon68 -bdbm_queue_t ftl/queue/queue.h /^} bdbm_queue_t;$/;" t typeref:struct:__anon69 +bdbm_queue_item_t ftl/queue/queue.h /^} bdbm_queue_item_t;$/;" t typeref:struct:__anon73 +bdbm_queue_t ftl/queue/queue.h /^} bdbm_queue_t;$/;" t typeref:struct:__anon74 bdbm_raw_flash_erase_block examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_erase_block ($/;" f bdbm_raw_flash_erase_block_async examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_erase_block_async ($/;" f bdbm_raw_flash_exit examples/raw-flash/raw-flash.c /^void bdbm_raw_flash_exit (bdbm_raw_flash_t* rf)$/;" f @@ -1581,7 +1620,7 @@ bdbm_raw_flash_t examples/raw-flash/raw-flash.h /^} bdbm_raw_flash_t;$/;" t type bdbm_raw_flash_wait examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_wait ($/;" f bdbm_raw_flash_write_page examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_write_page ($/;" f bdbm_raw_flash_write_page_async examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_write_page_async ($/;" f -bdbm_rd_prior_lpa_item_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_lpa_item_t;$/;" t typeref:struct:__anon75 +bdbm_rd_prior_lpa_item_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_lpa_item_t;$/;" t typeref:struct:__anon80 bdbm_rd_prior_queue_create ftl/queue/rd_prior_queue.c /^bdbm_rd_prior_queue_t* bdbm_rd_prior_queue_create ($/;" f bdbm_rd_prior_queue_dequeue ftl/queue/rd_prior_queue.c /^void* bdbm_rd_prior_queue_dequeue ($/;" f bdbm_rd_prior_queue_destroy ftl/queue/rd_prior_queue.c /^void bdbm_rd_prior_queue_destroy (bdbm_rd_prior_queue_t* mq)$/;" f @@ -1590,15 +1629,15 @@ bdbm_rd_prior_queue_get_nr_items ftl/queue/rd_prior_queue.c /^uint64_t bdbm_rd_p bdbm_rd_prior_queue_is_all_empty ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_is_all_empty (bdbm_rd_prior_queue_t* mq)$/;" f bdbm_rd_prior_queue_is_empty ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_is_empty ($/;" f bdbm_rd_prior_queue_is_full ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_is_full (bdbm_rd_prior_queue_t* mq)$/;" f -bdbm_rd_prior_queue_item_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_queue_item_t;$/;" t typeref:struct:__anon74 +bdbm_rd_prior_queue_item_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_queue_item_t;$/;" t typeref:struct:__anon79 bdbm_rd_prior_queue_move ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_move ($/;" f bdbm_rd_prior_queue_remove ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_remove ($/;" f -bdbm_rd_prior_queue_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_queue_t;$/;" t typeref:struct:__anon76 +bdbm_rd_prior_queue_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_queue_t;$/;" t typeref:struct:__anon81 bdbm_register devices/dumbssd/dm_dumbssd.c /^EXPORT_SYMBOL (bdbm_register);$/;" v bdbm_register devices/dumbssd/dm_dumbssd.c /^int bdbm_register (struct request_queue* q, char* disk_name)$/;" f bdbm_reinit_completion common/utils/usync.h 39;" d bdbm_reinit_completion common/utils/usync.h 41;" d -bdbm_rp_mem ftl/hlm_reqs_pool.h /^} bdbm_rp_mem;$/;" t typeref:enum:__anon67 +bdbm_rp_mem ftl/hlm_reqs_pool.h /^} bdbm_rp_mem;$/;" t typeref:enum:__anon72 bdbm_sema_free common/utils/usync.h 103;" d bdbm_sema_free common/utils/usync.h 56;" d bdbm_sema_init common/utils/usync.h 47;" d @@ -1654,8 +1693,8 @@ bdbm_track include/debug.h 67;" d bdbm_try_wait_for_completion common/utils/usync.h 36;" d bdbm_unregister devices/dumbssd/dm_dumbssd.c /^EXPORT_SYMBOL(bdbm_unregister);$/;" v bdbm_unregister devices/dumbssd/dm_dumbssd.c /^void bdbm_unregister (char* disk_name)$/;" f -bdbm_userio_private_t frontend/df-user/userio.c /^} bdbm_userio_private_t;$/;" t typeref:struct:__anon56 file: -bdbm_userio_private_t frontend/user/userio.c /^} bdbm_userio_private_t;$/;" t typeref:struct:__anon53 file: +bdbm_userio_private_t frontend/df-user/userio.c /^} bdbm_userio_private_t;$/;" t typeref:struct:__anon61 file: +bdbm_userio_private_t frontend/user/userio.c /^} bdbm_userio_private_t;$/;" t typeref:struct:__anon54 file: bdbm_wait_for_completion common/utils/usync.h 35;" d bdbm_warn_on include/debug.h 88;" d bdbm_warning include/debug.h 42;" d @@ -1665,10 +1704,11 @@ bdbm_zmalloc common/utils/umemory.c /^void* bdbm_zmalloc (size_t size) { return bdbm_zmalloc frontend/df-user/df_umemory.c /^void* bdbm_zmalloc (size_t size) { return calloc (1, size); }$/;" f bdi devices/common/dev_stub.c /^ bdbm_drv_info_t* bdi;$/;" m struct:__anon9 file: bdi examples/raw-flash/raw-flash.h /^ bdbm_drv_info_t bdi; $/;" m struct:__anon20 -bdi frontend/hybrid/blkio_proxy.c /^ bdbm_drv_info_t* bdi;$/;" m struct:__anon60 file: +bdi frontend/hybrid/blkio_proxy.c /^ bdbm_drv_info_t* bdi;$/;" m struct:__anon65 file: bdops frontend/kernel/blkdev.c /^static struct block_device_operations bdops = {$/;" v typeref:struct:block_device_operations file: +bdops frontend/kernel/blkdev_bak.c /^static struct block_device_operations bdops = {$/;" v typeref:struct:block_device_operations file: bi_bvec_cnt include/bdbm_drv.h /^ uint64_t bi_bvec_cnt; \/* unit: kernel-page (4KB); it must be equal to 'bi_size \/ 8' *\/$/;" m struct:__anon26 -bi_bvec_ptr frontend/hybrid/blkio_proxy_ioctl.h /^ uint8_t bi_bvec_ptr[BDBM_BLKIO_MAX_VECS][KERNEL_PAGE_SIZE]; \/* keep data shared by both kernel and user *\/$/;" m struct:__anon63 +bi_bvec_ptr frontend/hybrid/blkio_proxy_ioctl.h /^ uint8_t bi_bvec_ptr[BDBM_BLKIO_MAX_VECS][KERNEL_PAGE_SIZE]; \/* keep data shared by both kernel and user *\/$/;" m struct:__anon68 bi_bvec_ptr include/bdbm_drv.h /^ uint8_t* bi_bvec_ptr[BDBM_BLKIO_MAX_VECS]; \/* an array of 4 KB data for bvec *\/$/;" m struct:__anon26 bi_offset include/bdbm_drv.h /^ uint64_t bi_offset; \/* unit: sector (512B) *\/$/;" m struct:__anon26 bi_rw include/bdbm_drv.h /^ uint64_t bi_rw; \/* REQTYPE_WRITE or REQTYPE_READ *\/$/;" m struct:__anon26 @@ -1700,7 +1740,7 @@ blkio_proxy_make_req frontend/hybrid/blkio_proxy.c /^void blkio_proxy_make_req ( blkio_proxy_mmap_close frontend/hybrid/blkio_proxy.c /^void blkio_proxy_mmap_close (struct vm_area_struct *vma)$/;" f blkio_proxy_mmap_open frontend/hybrid/blkio_proxy.c /^void blkio_proxy_mmap_open (struct vm_area_struct *vma)$/;" f blkio_proxy_open frontend/hybrid/blkio_proxy.c /^uint32_t blkio_proxy_open (bdbm_drv_info_t* bdi)$/;" f -blkio_req frontend/hybrid/blkio_proxy_ioctl.h /^ bdbm_blkio_req_t blkio_req; \/* must be at the top of the structure *\/$/;" m struct:__anon63 +blkio_req frontend/hybrid/blkio_proxy_ioctl.h /^ bdbm_blkio_req_t blkio_req; \/* must be at the top of the structure *\/$/;" m struct:__anon68 blkio_req include/bdbm_drv.h /^ void* blkio_req;$/;" m struct:__anon32 blkio_stub_close frontend/hybrid/blkio_stub.c /^void blkio_stub_close (bdbm_drv_info_t* bdi)$/;" f blkio_stub_end_req frontend/hybrid/blkio_stub.c /^void blkio_stub_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req)$/;" f @@ -1710,18 +1750,18 @@ blks tools/lightnvm-v4.5.3/sysblk.c /^ unsigned long *blks;$/;" m struct:factory blks tools/lightnvm/sysblk.c /^ unsigned long *blks;$/;" m struct:factory_blks file: block devices/dumbssd/dev_hynix_nvme.h /^ uint64_t block;$/;" m struct:__anon17 block devices/dumbssd/dm_dumbssd.h /^ int block;$/;" m struct:__anon18 -block_erase_time_us include/params.h /^ uint64_t block_erase_time_us;$/;" m struct:__anon46 +block_erase_time_us include/params.h /^ uint64_t block_erase_time_us;$/;" m struct:__anon47 block_is_full tools/lightnvm-v4.5.3/rrpc.c /^static int block_is_full(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: block_is_full tools/lightnvm/rrpc.c /^static int block_is_full(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: -block_no ftl/algo/abm.h /^ uint64_t block_no;$/;" m struct:__anon79 -block_no ftl/algo/block_ftl.c /^ uint64_t block_no;$/;" m struct:__anon77 file: -block_no ftl/algo/dftl_map.h /^ uint64_t block_no;$/;" m struct:__anon82 +block_no ftl/algo/abm.h /^ uint64_t block_no;$/;" m struct:__anon84 +block_no ftl/algo/block_ftl.c /^ uint64_t block_no;$/;" m struct:__anon82 file: +block_no ftl/algo/dftl_map.h /^ uint64_t block_no;$/;" m struct:__anon87 block_no include/bdbm_drv.h /^ uint64_t block_no;$/;" m struct:__anon25 block_prio_find_max tools/lightnvm-v4.5.3/rrpc.c /^static struct rrpc_block *block_prio_find_max(struct rrpc_lun *rlun)$/;" f file: block_prio_find_max tools/lightnvm/rrpc.c /^static struct rrpc_block *block_prio_find_max(struct rrpc_lun *rlun)$/;" f file: block_to_addr tools/lightnvm-v4.5.3/rrpc.c /^static u64 block_to_addr(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: block_to_addr tools/lightnvm/rrpc.c /^static u64 block_to_addr(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: -blocks ftl/algo/abm.h /^ bdbm_abm_block_t* blocks;$/;" m struct:__anon80 +blocks ftl/algo/abm.h /^ bdbm_abm_block_t* blocks;$/;" m struct:__anon85 blocks tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_block *blocks; \/* Reference to block allocation *\/$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc_block blocks tools/lightnvm/rrpc.h /^ struct rrpc_block *blocks; \/* Reference to block allocation *\/$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc_block bloom_bv common/3rd/uthash.h /^ uint8_t *bloom_bv;$/;" m struct:UT_hash_table @@ -1753,23 +1793,23 @@ ch_len tools/nvme/lightnvm.c /^ __u8 ch_len;$/;" m struct:nvme_nvm_addr_format ch_len tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 ch_len;$/;" m struct:nvme_nvm_addr_format file: ch_offset tools/nvme/lightnvm.c /^ __u8 ch_offset;$/;" m struct:nvme_nvm_addr_format file: ch_offset tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 ch_offset;$/;" m struct:nvme_nvm_addr_format file: -channel_no ftl/algo/abm.h /^ uint64_t channel_no;$/;" m struct:__anon79 -channel_no ftl/algo/block_ftl.c /^ uint64_t channel_no;$/;" m struct:__anon77 file: -channel_no ftl/algo/dftl_map.h /^ uint8_t channel_no;$/;" m struct:__anon82 +channel_no ftl/algo/abm.h /^ uint64_t channel_no;$/;" m struct:__anon84 +channel_no ftl/algo/block_ftl.c /^ uint64_t channel_no;$/;" m struct:__anon82 file: +channel_no ftl/algo/dftl_map.h /^ uint8_t channel_no;$/;" m struct:__anon87 channel_no include/bdbm_drv.h /^ uint64_t channel_no;$/;" m struct:__anon25 -check_mapblk include/bdbm_drv.h /^ uint8_t (*check_mapblk) (bdbm_drv_info_t* bdi, uint64_t lpa);$/;" m struct:__anon42 +check_mapblk include/bdbm_drv.h /^ uint8_t (*check_mapblk) (bdbm_drv_info_t* bdi, uint64_t lpa);$/;" m struct:__anon43 check_thread_fn examples/stub_test/main.c /^void check_thread_fn (void* data)$/;" f check_thread_t examples/stub_test/main.c /^} check_thread_t;$/;" t typeref:struct:__anon23 file: -chip_no ftl/algo/abm.h /^ uint64_t chip_no;$/;" m struct:__anon79 -chip_no ftl/algo/block_ftl.c /^ uint64_t chip_no;$/;" m struct:__anon77 file: -chip_no ftl/algo/dftl_map.h /^ uint8_t chip_no;$/;" m struct:__anon82 +chip_no ftl/algo/abm.h /^ uint64_t chip_no;$/;" m struct:__anon84 +chip_no ftl/algo/block_ftl.c /^ uint64_t chip_no;$/;" m struct:__anon82 file: +chip_no ftl/algo/dftl_map.h /^ uint8_t chip_no;$/;" m struct:__anon87 chip_no include/bdbm_drv.h /^ uint64_t chip_no;$/;" m struct:__anon25 chnl_off tools/nvme/lightnvm.c /^ __le32 chnl_off;$/;" m struct:nvme_nvm_identity file: chnl_off tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 chnl_off;$/;" m struct:nvme_nvm_identity file: cl devices/common/dev_stub.c /^static struct class *cl = NULL;$/;" v typeref:struct:class file: cl frontend/hybrid/blkio_proxy.c /^static struct class *cl = NULL;$/;" v typeref:struct:class file: close include/bdbm_drv.h /^ void (*close) (bdbm_drv_info_t* bdi);$/;" m struct:__anon38 -close include/bdbm_drv.h /^ void (*close) (bdbm_drv_info_t* bdi);$/;" m struct:__anon41 +close include/bdbm_drv.h /^ void (*close) (bdbm_drv_info_t* bdi);$/;" m struct:__anon42 closed_list tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head closed_list; \/* In-use closed blocks. These are$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::list_head closed_list tools/lightnvm/rrpc.h /^ struct list_head closed_list; \/* In-use closed blocks. These are$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::list_head cmb tools/nvme/pci.c /^ void __iomem *cmb;$/;" m struct:nvme_dev file: @@ -1794,8 +1834,8 @@ command_id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u16 command_id;$/;" m struct:n command_id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_l2ptbl file: command_id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_ph_rw file: command_id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u16 command_id;$/;" m struct:nvme_nvm_setbbtbl file: -common tools/nvme/lightnvm.c /^ struct nvme_common_command common;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_common_command file: -common tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_common_command common;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_common_command file: +common tools/nvme/lightnvm.c /^ struct nvme_common_command common;$/;" m union:nvme_nvm_command::__anon50 typeref:struct:nvme_nvm_command::__anon50::nvme_common_command file: +common tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_common_command common;$/;" m union:nvme_nvm_command::__anon53 typeref:struct:nvme_nvm_command::__anon53::nvme_common_command file: compr_func examples/stringsearch/ss.c /^typedef int (*compr_func)(const int fd_dev, const char* pattern, const int start_blk, const int len);$/;" t file: connectal_completion devices/bluedbm/dm_bluedbm.c /^ bdbm_completion_t connectal_completion;$/;" m struct:dm_bluedbm_private file: connectal_completion_init devices/bluedbm/dm_bluedbm.c /^ bdbm_completion_t connectal_completion_init;$/;" m struct:dm_bluedbm_private file: @@ -1828,7 +1868,8 @@ cqes tools/nvme/pci.c /^ volatile struct nvme_completion *cqes;$/;" m struct:nvm cqes tools/nvmedrv-v4.5.3/pci.c /^ volatile struct nvme_completion *cqes;$/;" m struct:nvme_queue typeref:struct:nvme_queue::nvme_completion file: create include/bdbm_drv.h /^ uint32_t (*create) (bdbm_drv_info_t* bdi);$/;" m struct:__anon39 create include/bdbm_drv.h /^ uint32_t (*create) (bdbm_drv_info_t* bdi);$/;" m struct:__anon40 -create include/bdbm_drv.h /^ uint32_t (*create) (bdbm_drv_info_t* bdi);$/;" m struct:__anon42 +create include/bdbm_drv.h /^ uint32_t (*create) (bdbm_drv_info_t* bdi);$/;" m struct:__anon41 +create include/bdbm_drv.h /^ uint32_t (*create) (bdbm_drv_info_t* bdi);$/;" m struct:__anon43 create_llm_req_r examples/stub_test/main.c /^bdbm_llm_req_t* create_llm_req_r (void)$/;" f create_llm_req_w examples/stub_test/main.c /^bdbm_llm_req_t* create_llm_req_w (void)$/;" f csecs tools/nvme/lightnvm.c /^ __le16 csecs;$/;" m struct:nvme_nvm_id_group file: @@ -1842,12 +1883,12 @@ ctrl_config tools/nvme/nvme.h /^ u32 ctrl_config;$/;" m struct:nvme_ctrl ctrl_config tools/nvmedrv-v4.5.3/nvme.h /^ u32 ctrl_config;$/;" m struct:nvme_ctrl cur tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_block *cur, *gc_cur;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc_block cur tools/lightnvm/rrpc.h /^ struct rrpc_block *cur, *gc_cur;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc_block -cur_tag ftl/queue/prior_queue.h /^ uint64_t cur_tag;$/;" m struct:__anon71 -cur_tag ftl/queue/rd_prior_queue.h /^ uint64_t cur_tag;$/;" m struct:__anon75 -curr_page_ofs ftl/algo/dftl.c /^ uint64_t curr_page_ofs;$/;" m struct:__anon86 file: -curr_page_ofs ftl/algo/page_ftl.c /^ uint64_t curr_page_ofs;$/;" m struct:__anon88 file: -curr_puid ftl/algo/dftl.c /^ uint64_t curr_puid;$/;" m struct:__anon86 file: -curr_puid ftl/algo/page_ftl.c /^ uint64_t curr_puid;$/;" m struct:__anon88 file: +cur_tag ftl/queue/prior_queue.h /^ uint64_t cur_tag;$/;" m struct:__anon76 +cur_tag ftl/queue/rd_prior_queue.h /^ uint64_t cur_tag;$/;" m struct:__anon80 +curr_page_ofs ftl/algo/dftl.c /^ uint64_t curr_page_ofs;$/;" m struct:__anon91 file: +curr_page_ofs ftl/algo/page_ftl.c /^ uint64_t curr_page_ofs;$/;" m struct:__anon93 file: +curr_puid ftl/algo/dftl.c /^ uint64_t curr_puid;$/;" m struct:__anon91 file: +curr_puid ftl/algo/page_ftl.c /^ uint64_t curr_puid;$/;" m struct:__anon93 file: d common/3rd/utarray.h /^ char *d; \/* n slots of size icd->sz*\/$/;" m struct:__anon5 d common/3rd/utstring.h /^ char *d;$/;" m struct:__anon8 data include/bdbm_drv.h /^ uint8_t* data;$/;" m struct:__anon30 @@ -1867,7 +1908,8 @@ desc tools/nvme/scsi.c /^ struct scsi_unmap_blk_desc desc[0];$/;" m struct:scsi_ desc tools/nvmedrv-v4.5.3/scsi.c /^ struct scsi_unmap_blk_desc desc[0];$/;" m struct:scsi_unmap_parm_list typeref:struct:scsi_unmap_parm_list::scsi_unmap_blk_desc file: destroy include/bdbm_drv.h /^ void (*destroy) (bdbm_drv_info_t* bdi);$/;" m struct:__anon39 destroy include/bdbm_drv.h /^ void (*destroy) (bdbm_drv_info_t* bdi);$/;" m struct:__anon40 -destroy include/bdbm_drv.h /^ void (*destroy) (bdbm_drv_info_t* bdi);$/;" m struct:__anon42 +destroy include/bdbm_drv.h /^ void (*destroy) (bdbm_drv_info_t* bdi);$/;" m struct:__anon41 +destroy include/bdbm_drv.h /^ void (*destroy) (bdbm_drv_info_t* bdi);$/;" m struct:__anon43 dev devices/dumbssd/dev_hynix_nvme.h /^ dumb_ssd_dev_t* dev;$/;" m struct:__anon17 dev tools/format/bdbm_format.c /^ char* dev;$/;" m struct:bdbm_format_args file: dev tools/lightnvm-v4.5.3/gennvm.h /^ struct nvm_dev *dev;$/;" m struct:gen_nvm typeref:struct:gen_nvm::nvm_dev @@ -1910,17 +1952,17 @@ dev_ramssd_store devices/ramdrive/dev_ramssd.c /^uint32_t dev_ramssd_store (dev_ dev_ramssd_wq_t devices/ramdrive/dev_ramssd.h /^} dev_ramssd_wq_t;$/;" t typeref:struct:__anon12 device tools/nvme/nvme.h /^ struct device *device; \/* char device *\/$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::device device tools/nvmedrv-v4.5.3/nvme.h /^ struct device *device; \/* char device *\/$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::device -device_capacity_in_byte include/params.h /^ uint64_t device_capacity_in_byte;$/;" m struct:__anon46 -device_type include/params.h /^ uint32_t device_type;$/;" m struct:__anon46 +device_capacity_in_byte include/params.h /^ uint64_t device_capacity_in_byte;$/;" m struct:__anon47 +device_type include/params.h /^ uint32_t device_type;$/;" m struct:__anon47 devnum devices/common/dev_stub.c /^static dev_t devnum = 0; $/;" v file: devnum frontend/hybrid/blkio_proxy.c /^static dev_t devnum = 0; $/;" v file: -dftl_mapping_table_t ftl/algo/dftl_map.h /^} dftl_mapping_table_t;$/;" t typeref:struct:__anon85 +dftl_mapping_table_t ftl/algo/dftl_map.h /^} dftl_mapping_table_t;$/;" t typeref:struct:__anon90 die devices/dumbssd/dev_hynix_nvme.h /^ uint64_t die;$/;" m struct:__anon17 die devices/dumbssd/dm_dumbssd.h /^ int die;$/;" m struct:__anon18 die_locks devices/dumbssd/dm_dumbssd.c /^bdbm_sema_t die_locks[NR_DIES];$/;" v -dir ftl/algo/dftl_map.h /^ directory_slot_t* dir; \/* always maintained in DRAM *\/$/;" m struct:__anon85 -dir_stat ftl/algo/dftl_map.h /^} dir_stat;$/;" t typeref:enum:__anon81 -directory_slot_t ftl/algo/dftl_map.h /^} directory_slot_t;$/;" t typeref:struct:__anon84 +dir ftl/algo/dftl_map.h /^ directory_slot_t* dir; \/* always maintained in DRAM *\/$/;" m struct:__anon90 +dir_stat ftl/algo/dftl_map.h /^} dir_stat;$/;" t typeref:enum:__anon86 +directory_slot_t ftl/algo/dftl_map.h /^} directory_slot_t;$/;" t typeref:struct:__anon89 disk tools/lightnvm-v4.5.3/rrpc.h /^ struct gendisk *disk;$/;" m struct:rrpc typeref:struct:rrpc::gendisk disk tools/lightnvm/rrpc.h /^ struct gendisk *disk;$/;" m struct:rrpc typeref:struct:rrpc::gendisk disk tools/nvme/nvme.h /^ struct gendisk *disk;$/;" m struct:nvme_ns typeref:struct:nvme_ns::gendisk @@ -1973,7 +2015,7 @@ dm_proxy_open frontend/user/dev_proxy.c /^uint32_t dm_proxy_open (bdbm_drv_info_ dm_proxy_probe frontend/df-user/dev_proxy.c /^uint32_t dm_proxy_probe ($/;" f dm_proxy_probe frontend/user/dev_proxy.c /^uint32_t dm_proxy_probe ($/;" f dm_proxy_store frontend/user/dev_proxy.c /^uint32_t dm_proxy_store ($/;" f -dm_proxy_thread frontend/user/dev_proxy.c /^ bdbm_thread_t* dm_proxy_thread;$/;" m struct:__anon54 file: +dm_proxy_thread frontend/user/dev_proxy.c /^ bdbm_thread_t* dm_proxy_thread;$/;" m struct:__anon55 file: dm_ramdrive_close devices/ramdrive/dm_ramdrive.c /^void dm_ramdrive_close (bdbm_drv_info_t* bdi)$/;" f dm_ramdrive_end_req devices/ramdrive/dm_ramdrive.c /^void dm_ramdrive_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req)$/;" f dm_ramdrive_load devices/ramdrive/dm_ramdrive.c /^uint32_t dm_ramdrive_load (bdbm_drv_info_t* bdi, const char* fn)$/;" f @@ -1997,7 +2039,7 @@ dm_user_private devices/libdummy/dm_dummy.c /^struct dm_user_private {$/;" s fil dm_user_probe devices/libdummy/dm_dummy.c /^uint32_t dm_user_probe (bdbm_drv_info_t* bdi, bdbm_device_params_t* params)$/;" f dm_user_store devices/libdummy/dm_dummy.c /^uint32_t dm_user_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f dma devices/bluedbm/dm_bluedbm.c /^ DmaManagerPrivate dma;$/;" m struct:dm_bluedbm_private file: -do_gc include/bdbm_drv.h /^ uint32_t (*do_gc) (bdbm_drv_info_t* bdi, int64_t lpa);$/;" m struct:__anon42 +do_gc include/bdbm_drv.h /^ uint32_t (*do_gc) (bdbm_drv_info_t* bdi, int64_t lpa);$/;" m struct:__anon43 do_gettimeofday common/utils/utime.c 42;" d file: dom tools/nvme/lightnvm.c /^ __le32 dom;$/;" m struct:nvme_nvm_id file: dom tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 dom;$/;" m struct:nvme_nvm_id file: @@ -2020,14 +2062,14 @@ dummy ftl/llm_noq.c /^ uint32_t dummy;$/;" m struct:bdbm_llm_noq_private file: dummy_fn devices/dumbssd/dm_dumbssd.c /^static blk_qc_t dummy_fn (struct request_queue *q, struct bio *bio)$/;" f file: emul_mode devices/ramdrive/dev_ramssd.h /^ uint8_t emul_mode;$/;" m struct:__anon13 end_req include/bdbm_drv.h /^ void (*end_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon38 -end_req include/bdbm_drv.h /^ void (*end_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon39 end_req include/bdbm_drv.h /^ void (*end_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon40 end_req include/bdbm_drv.h /^ void (*end_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon41 +end_req include/bdbm_drv.h /^ void (*end_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon42 entry tools/nvme/pci.c /^ struct msix_entry *entry;$/;" m struct:nvme_dev typeref:struct:nvme_dev::msix_entry file: entry tools/nvmedrv-v4.5.3/pci.c /^ struct msix_entry *entry;$/;" m struct:nvme_dev typeref:struct:nvme_dev::msix_entry file: -erase tools/nvme/lightnvm.c /^ struct nvme_nvm_erase_blk erase;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_erase_blk file: -erase tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_erase_blk erase;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_erase_blk file: -erase_count ftl/algo/abm.h /^ uint32_t erase_count;$/;" m struct:__anon79 +erase tools/nvme/lightnvm.c /^ struct nvme_nvm_erase_blk erase;$/;" m union:nvme_nvm_command::__anon50 typeref:struct:nvme_nvm_command::__anon50::nvme_nvm_erase_blk file: +erase tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_erase_blk erase;$/;" m union:nvme_nvm_command::__anon53 typeref:struct:nvme_nvm_command::__anon53::nvme_nvm_erase_blk file: +erase_count ftl/algo/abm.h /^ uint32_t erase_count;$/;" m struct:__anon84 eui tools/nvme/nvme.h /^ u8 eui[8];$/;" m struct:nvme_ns eui tools/nvmedrv-v4.5.3/nvme.h /^ u8 eui[8];$/;" m struct:nvme_ns eui_show tools/nvme/core.c /^static ssize_t eui_show(struct device *dev, struct device_attribute *attr,$/;" f file: @@ -2037,7 +2079,7 @@ event_handler_completion devices/bluedbm/dm_bluedbm.c /^ bdbm_completion_t event event_handler_fn devices/bluedbm/dm_bluedbm.c /^int event_handler_fn (void* arg) $/;" f event_limit tools/nvme/nvme.h /^ u8 event_limit;$/;" m struct:nvme_ctrl event_limit tools/nvmedrv-v4.5.3/nvme.h /^ u8 event_limit;$/;" m struct:nvme_ctrl -exetime include/bdbm_drv.h /^ bdbm_stopwatch_t exetime;$/;" m struct:__anon43 +exetime include/bdbm_drv.h /^ bdbm_stopwatch_t exetime;$/;" m struct:__anon44 exit_signal frontend/hybrid/umain.c /^bdbm_sema_t exit_signal;$/;" v expand_mult common/3rd/uthash.h /^ unsigned expand_mult;$/;" m struct:UT_hash_bucket ext tools/nvme/nvme.h /^ bool ext;$/;" m struct:nvme_ns @@ -2050,10 +2092,10 @@ factory_nblks tools/lightnvm-v4.5.3/sysblk.c /^static int factory_nblks(int nblk factory_nblks tools/lightnvm/sysblk.c /^static int factory_nblks(int nblks)$/;" f file: fd examples/stub_test/main.c /^ int fd;$/;" m struct:__anon23 file: fd examples/stub_test/main.c /^ int fd;$/;" m struct:__anon24 file: -fd frontend/hybrid/blkio_stub.c /^ int fd;$/;" m struct:__anon64 file: -fd frontend/user/dev_proxy.c /^ int fd;$/;" m struct:__anon54 file: -finish_mapblk_eviction include/bdbm_drv.h /^ void (*finish_mapblk_eviction) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r);$/;" m struct:__anon42 -finish_mapblk_load include/bdbm_drv.h /^ void (*finish_mapblk_load) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r);$/;" m struct:__anon42 +fd frontend/hybrid/blkio_stub.c /^ int fd;$/;" m struct:__anon69 file: +fd frontend/user/dev_proxy.c /^ int fd;$/;" m struct:__anon55 file: +finish_mapblk_eviction include/bdbm_drv.h /^ void (*finish_mapblk_eviction) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r);$/;" m struct:__anon43 +finish_mapblk_load include/bdbm_drv.h /^ void (*finish_mapblk_load) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r);$/;" m struct:__anon43 firmware_rev tools/nvme/core.c /^nvme_show_function(firmware_rev);$/;" v firmware_rev tools/nvme/nvme.h /^ char firmware_rev[8];$/;" m struct:nvme_ctrl firmware_rev tools/nvmedrv-v4.5.3/core.c /^nvme_show_function(firmware_rev);$/;" v @@ -2084,7 +2126,7 @@ flags tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 flags;$/;" m struct:nvme_nvm_set flags tools/nvmedrv-v4.5.3/nvme.h /^ unsigned long flags;$/;" m struct:nvme_ns flags tools/nvmedrv-v4.5.3/pci.c /^ unsigned long flags;$/;" m struct:nvme_dev file: flash_sem devices/bluedbm/dm_bluedbm.c /^ sem_t flash_sem;$/;" m struct:dm_bluedbm_private file: -flush include/bdbm_drv.h /^ void (*flush) (bdbm_drv_info_t* bdi);$/;" m struct:__anon40 +flush include/bdbm_drv.h /^ void (*flush) (bdbm_drv_info_t* bdi);$/;" m struct:__anon41 fmain include/bdbm_drv.h /^ bdbm_flash_page_main_t fmain;$/;" m struct:__anon31 fmtype tools/nvme/lightnvm.c /^ __u8 fmtype;$/;" m struct:nvme_nvm_id_group file: fmtype tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 fmtype;$/;" m struct:nvme_nvm_id_group file: @@ -2096,38 +2138,40 @@ fpg_sz tools/nvme/lightnvm.c /^ __le16 fpg_sz;$/;" m struct:nvme_nvm_id_group fpg_sz tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 fpg_sz;$/;" m struct:nvme_nvm_id_group file: free_ctrl tools/nvme/nvme.h /^ void (*free_ctrl)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops free_ctrl tools/nvmedrv-v4.5.3/nvme.h /^ void (*free_ctrl)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops -free_list frontend/hybrid/blkio_proxy_reqs_pool.h /^ struct list_head free_list;$/;" m struct:__anon58 typeref:struct:__anon58::list_head -free_list ftl/hlm_reqs_pool.h /^ struct list_head free_list;$/;" m struct:__anon66 typeref:struct:__anon66::list_head +free_list frontend/hybrid/blkio_proxy_reqs_pool.h /^ struct list_head free_list;$/;" m struct:__anon63 typeref:struct:__anon63::list_head +free_list frontend/kernel/nvm_cache.h /^ struct list_head* free_list;$/;" m struct:__anon57 typeref:struct:__anon57::list_head +free_list ftl/hlm_reqs_pool.h /^ struct list_head free_list;$/;" m struct:__anon71 typeref:struct:__anon71::list_head free_list tools/lightnvm-v4.5.3/gennvm.h /^ struct list_head free_list; \/* Not used blocks i.e. released$/;" m struct:gen_lun typeref:struct:gen_lun::list_head free_list tools/lightnvm/gennvm.h /^ struct list_head free_list; \/* Not used blocks i.e. released$/;" m struct:gen_lun typeref:struct:gen_lun::list_head free_page common/utils/upage.c /^void free_page (unsigned long addr) {$/;" f -ftl ftl/hlm_dftl.c /^ bdbm_ftl_inf_t* ftl; \/* for hlm_nobuff (it must be on top of this structure) *\/$/;" m struct:__anon89 file: -ftl_lock ftl/algo/block_ftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon78 file: -ftl_lock ftl/algo/dftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon86 file: -ftl_lock ftl/algo/page_ftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon88 file: -ftl_lock ftl/hlm_dftl.c /^ bdbm_sema_t ftl_lock;$/;" m struct:__anon89 file: +ftl ftl/hlm_dftl.c /^ bdbm_ftl_inf_t* ftl; \/* for hlm_nobuff (it must be on top of this structure) *\/$/;" m struct:__anon94 file: +ftl_lock ftl/algo/block_ftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon83 file: +ftl_lock ftl/algo/dftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon91 file: +ftl_lock ftl/algo/page_ftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon93 file: +ftl_lock ftl/hlm_dftl.c /^ bdbm_sema_t ftl_lock;$/;" m struct:__anon94 file: fua tools/nvme/scsi.c /^ u8 fua;$/;" m struct:nvme_trans_io_cdb file: fua tools/nvmedrv-v4.5.3/scsi.c /^ u8 fua;$/;" m struct:nvme_trans_io_cdb file: -gc_bab ftl/algo/block_ftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon78 file: -gc_bab ftl/algo/dftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon86 file: -gc_bab ftl/algo/page_ftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon88 file: -gc_cnt include/bdbm_drv.h /^ atomic64_t gc_cnt;$/;" m struct:__anon43 +gc_bab ftl/algo/block_ftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon83 file: +gc_bab ftl/algo/dftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon91 file: +gc_bab ftl/algo/page_ftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon93 file: +gc_cnt include/bdbm_drv.h /^ atomic64_t gc_cnt;$/;" m struct:__anon44 gc_cur tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_block *cur, *gc_cur;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun:: gc_cur tools/lightnvm/rrpc.h /^ struct rrpc_block *cur, *gc_cur;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun:: -gc_erase_cnt include/bdbm_drv.h /^ atomic64_t gc_erase_cnt;$/;" m struct:__anon43 -gc_hlm ftl/algo/block_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon78 file: -gc_hlm ftl/algo/dftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon86 file: -gc_hlm ftl/algo/page_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon88 file: -gc_hlm_w ftl/algo/page_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm_w;$/;" m struct:__anon88 file: -gc_policy include/params.h /^ uint32_t gc_policy;$/;" m struct:__anon45 -gc_read_cnt include/bdbm_drv.h /^ atomic64_t gc_read_cnt;$/;" m struct:__anon43 +gc_erase_cnt include/bdbm_drv.h /^ atomic64_t gc_erase_cnt;$/;" m struct:__anon44 +gc_hlm ftl/algo/block_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon83 file: +gc_hlm ftl/algo/dftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon91 file: +gc_hlm ftl/algo/page_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon93 file: +gc_hlm_w ftl/algo/page_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm_w;$/;" m struct:__anon93 file: +gc_policy include/params.h /^ uint32_t gc_policy;$/;" m struct:__anon46 +gc_read_cnt include/bdbm_drv.h /^ atomic64_t gc_read_cnt;$/;" m struct:__anon44 gc_timer tools/lightnvm-v4.5.3/rrpc.h /^ struct timer_list gc_timer;$/;" m struct:rrpc typeref:struct:rrpc::timer_list gc_timer tools/lightnvm/rrpc.h /^ struct timer_list gc_timer;$/;" m struct:rrpc typeref:struct:rrpc::timer_list -gc_write_cnt include/bdbm_drv.h /^ atomic64_t gc_write_cnt;$/;" m struct:__anon43 +gc_write_cnt include/bdbm_drv.h /^ atomic64_t gc_write_cnt;$/;" m struct:__anon44 gcb_pool tools/lightnvm-v4.5.3/rrpc.h /^ mempool_t *gcb_pool;$/;" m struct:rrpc gcb_pool tools/lightnvm/rrpc.h /^ mempool_t *gcb_pool;$/;" m struct:rrpc gd devices/dumbssd/dev_hynix_nvme.h /^ struct gendisk *gd;$/;" m struct:__anon16 typeref:struct:__anon16::gendisk gd frontend/kernel/blkdev.c /^ struct gendisk *gd;$/;" m struct:bdbm_device_t typeref:struct:bdbm_device_t::gendisk file: +gd frontend/kernel/blkdev_bak.c /^ struct gendisk *gd;$/;" m struct:bdbm_device_t typeref:struct:bdbm_device_t::gendisk file: gen_lun tools/lightnvm-v4.5.3/gennvm.h /^struct gen_lun {$/;" s gen_lun tools/lightnvm/gennvm.h /^struct gen_lun {$/;" s gen_nvm tools/lightnvm-v4.5.3/gennvm.h /^struct gen_nvm {$/;" s @@ -2187,33 +2231,33 @@ gennvm_unregister tools/lightnvm/gennvm.c /^static void gennvm_unregister(struct get16bits common/3rd/uthash.h 483;" d get16bits common/3rd/uthash.h 486;" d get16bits common/3rd/uthash.h 490;" d -get_bb tools/nvme/lightnvm.c /^ struct nvme_nvm_getbbtbl get_bb;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_getbbtbl file: -get_bb tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_getbbtbl get_bb;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_getbbtbl file: +get_bb tools/nvme/lightnvm.c /^ struct nvme_nvm_getbbtbl get_bb;$/;" m union:nvme_nvm_command::__anon50 typeref:struct:nvme_nvm_command::__anon50::nvme_nvm_getbbtbl file: +get_bb tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_getbbtbl get_bb;$/;" m union:nvme_nvm_command::__anon53 typeref:struct:nvme_nvm_command::__anon53::nvme_nvm_getbbtbl file: get_default_device_params devices/common/dev_params.c /^bdbm_device_params_t get_default_device_params (void)$/;" f get_default_ftl_params ftl/ftl_params.c /^bdbm_ftl_params get_default_ftl_params (void)$/;" f -get_free_ppa include/bdbm_drv.h /^ uint32_t (*get_free_ppa) (bdbm_drv_info_t* bdi, int64_t lpa, bdbm_phyaddr_t* ppa);$/;" m struct:__anon42 +get_free_ppa include/bdbm_drv.h /^ uint32_t (*get_free_ppa) (bdbm_drv_info_t* bdi, int64_t lpa, bdbm_phyaddr_t* ppa);$/;" m struct:__anon43 get_highest_priority_tag ftl/queue/prior_queue.c /^static uint64_t get_highest_priority_tag ($/;" f file: get_highest_priority_tag ftl/queue/rd_prior_queue.c /^static uint64_t get_highest_priority_tag ($/;" f file: get_new_priority_tag ftl/queue/prior_queue.c /^static uint64_t get_new_priority_tag ($/;" f file: get_new_priority_tag ftl/queue/rd_prior_queue.c /^static uint64_t get_new_priority_tag ($/;" f file: get_next_lun tools/lightnvm-v4.5.3/rrpc.c /^static struct rrpc_lun *get_next_lun(struct rrpc *rrpc)$/;" f file: get_next_lun tools/lightnvm/rrpc.c /^static struct rrpc_lun *get_next_lun(struct rrpc *rrpc)$/;" f file: -get_ppa include/bdbm_drv.h /^ uint32_t (*get_ppa) (bdbm_drv_info_t* bdi, int64_t lpa, bdbm_phyaddr_t* ppa, uint64_t* sp_off);$/;" m struct:__anon42 -get_segno include/bdbm_drv.h /^ uint64_t (*get_segno) (bdbm_drv_info_t* bdi, uint64_t lpa);$/;" m struct:__anon42 +get_ppa include/bdbm_drv.h /^ uint32_t (*get_ppa) (bdbm_drv_info_t* bdi, int64_t lpa, bdbm_phyaddr_t* ppa, uint64_t* sp_off);$/;" m struct:__anon43 +get_segno include/bdbm_drv.h /^ uint64_t (*get_segno) (bdbm_drv_info_t* bdi, uint64_t lpa);$/;" m struct:__anon43 get_unaligned_be24 tools/nvme/scsi.c /^static inline u32 get_unaligned_be24(u8 *buf)$/;" f file: get_unaligned_be24 tools/nvmedrv-v4.5.3/scsi.c /^static inline u32 get_unaligned_be24(u8 *buf)$/;" f file: get_zeroed_page common/utils/upage.c /^unsigned long get_zeroed_page (int gfp_mask) {$/;" f groups tools/nvme/lightnvm.c /^ struct nvme_nvm_id_group groups[4];$/;" m struct:nvme_nvm_id typeref:struct:nvme_nvm_id::nvme_nvm_id_group file: groups tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_id_group groups[4];$/;" m struct:nvme_nvm_id typeref:struct:nvme_nvm_id::nvme_nvm_id_group file: -hash_lpa ftl/queue/prior_queue.h /^ bdbm_prior_lpa_item_t* hash_lpa; \/* lpa hash *\/$/;" m struct:__anon72 -hash_lpa ftl/queue/rd_prior_queue.h /^ bdbm_rd_prior_lpa_item_t* hash_lpa; \/* lpa hash *\/$/;" m struct:__anon76 +hash_lpa ftl/queue/prior_queue.h /^ bdbm_prior_lpa_item_t* hash_lpa; \/* lpa hash *\/$/;" m struct:__anon77 +hash_lpa ftl/queue/rd_prior_queue.h /^ bdbm_rd_prior_lpa_item_t* hash_lpa; \/* lpa hash *\/$/;" m struct:__anon81 hashv common/3rd/uthash.h /^ unsigned hashv; \/* result of hash-fcn(key) *\/$/;" m struct:UT_hash_handle -hb_rw tools/nvme/lightnvm.c /^ struct nvme_nvm_hb_rw hb_rw;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_hb_rw file: -hb_rw tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_hb_rw hb_rw;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_hb_rw file: +hb_rw tools/nvme/lightnvm.c /^ struct nvme_nvm_hb_rw hb_rw;$/;" m union:nvme_nvm_command::__anon50 typeref:struct:nvme_nvm_command::__anon50::nvme_nvm_hb_rw file: +hb_rw tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_hb_rw hb_rw;$/;" m union:nvme_nvm_command::__anon53 typeref:struct:nvme_nvm_command::__anon53::nvme_nvm_hb_rw file: hd_req_t devices/dumbssd/dev_hynix_nvme.h /^} hd_req_t;$/;" t typeref:struct:__anon17 -hh ftl/hlm_rsd.c /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon90 file: -hh ftl/queue/prior_queue.h /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon71 -hh ftl/queue/rd_prior_queue.h /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon75 +hh ftl/hlm_rsd.c /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon95 file: +hh ftl/queue/prior_queue.h /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon76 +hh ftl/queue/rd_prior_queue.h /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon80 hh_head common/3rd/uthash.h /^ struct UT_hash_handle *hh_head;$/;" m struct:UT_hash_bucket typeref:struct:UT_hash_bucket::UT_hash_handle hh_next common/3rd/uthash.h /^ struct UT_hash_handle *hh_next; \/* next hh in bucket order *\/$/;" m struct:UT_hash_handle typeref:struct:UT_hash_handle::UT_hash_handle hh_prev common/3rd/uthash.h /^ struct UT_hash_handle *hh_prev; \/* previous hh in bucket order *\/$/;" m struct:UT_hash_handle typeref:struct:UT_hash_handle::UT_hash_handle @@ -2246,11 +2290,12 @@ hlm_nobuf_create ftl/hlm_nobuf.c /^uint32_t hlm_nobuf_create (bdbm_drv_info_t* b hlm_nobuf_destroy ftl/hlm_nobuf.c /^void hlm_nobuf_destroy (bdbm_drv_info_t* bdi)$/;" f hlm_nobuf_end_req ftl/hlm_nobuf.c /^void hlm_nobuf_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f hlm_nobuf_make_req ftl/hlm_nobuf.c /^uint32_t hlm_nobuf_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f -hlm_req ftl/hlm_rsd.c /^ bdbm_hlm_req_t* hlm_req;$/;" m struct:__anon90 file: -hlm_reqs_pool frontend/df-user/userio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon56 file: -hlm_reqs_pool frontend/hybrid/blkio_stub.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon64 file: -hlm_reqs_pool frontend/kernel/blkio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon55 file: -hlm_reqs_pool frontend/user/userio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon53 file: +hlm_nobuf_make_wb_req ftl/hlm_nobuf.c /^uint32_t hlm_nobuf_make_wb_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f +hlm_req ftl/hlm_rsd.c /^ bdbm_hlm_req_t* hlm_req;$/;" m struct:__anon95 file: +hlm_reqs_pool frontend/df-user/userio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon61 file: +hlm_reqs_pool frontend/hybrid/blkio_stub.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon69 file: +hlm_reqs_pool frontend/kernel/blkio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon60 file: +hlm_reqs_pool frontend/user/userio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon54 file: hlm_reqs_pool_allocate_llm_reqs ftl/hlm_reqs_pool.c /^void hlm_reqs_pool_allocate_llm_reqs ($/;" f hlm_reqs_pool_release_llm_reqs ftl/hlm_reqs_pool.c /^void hlm_reqs_pool_release_llm_reqs ($/;" f hlm_reqs_pool_relocate_kp ftl/hlm_reqs_pool.c /^void hlm_reqs_pool_relocate_kp (bdbm_llm_req_t* lr, uint64_t new_sp_ofs)$/;" f @@ -2262,15 +2307,17 @@ hlm_rsd_destroy ftl/hlm_rsd.c /^void hlm_rsd_destroy (bdbm_drv_info_t* bdi)$/;" hlm_rsd_end_req ftl/hlm_rsd.c /^void hlm_rsd_end_req ($/;" f hlm_rsd_make_req ftl/hlm_rsd.c /^uint32_t hlm_rsd_make_req ($/;" f hlm_thread ftl/hlm_buf.c /^ bdbm_thread_t* hlm_thread;$/;" m struct:bdbm_hlm_buf_private file: -hlm_thread ftl/hlm_dftl.c /^ bdbm_thread_t* hlm_thread;$/;" m struct:__anon89 file: -hlm_type include/params.h /^ uint32_t hlm_type;$/;" m struct:__anon45 +hlm_thread ftl/hlm_dftl.c /^ bdbm_thread_t* hlm_thread;$/;" m struct:__anon94 file: +hlm_type include/params.h /^ uint32_t hlm_type;$/;" m struct:__anon46 host_blkdev_register_device frontend/kernel/blkdev.c /^uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn)$/;" f +host_blkdev_register_device frontend/kernel/blkdev_bak.c /^uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn)$/;" f host_blkdev_unregister_block_device frontend/kernel/blkdev.c /^void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi)$/;" f -host_lock frontend/df-user/userio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon56 file: -host_lock frontend/hybrid/blkio_stub.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon64 file: -host_lock frontend/kernel/blkio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon55 file: -host_lock frontend/user/userio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon53 file: -host_stub_thread frontend/hybrid/blkio_stub.c /^ bdbm_thread_t* host_stub_thread; \/* polling the blockio proxy *\/$/;" m struct:__anon64 file: +host_blkdev_unregister_block_device frontend/kernel/blkdev_bak.c /^void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi)$/;" f +host_lock frontend/df-user/userio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon61 file: +host_lock frontend/hybrid/blkio_stub.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon69 file: +host_lock frontend/kernel/blkio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon60 file: +host_lock frontend/user/userio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon54 file: +host_stub_thread frontend/hybrid/blkio_stub.c /^ bdbm_thread_t* host_stub_thread; \/* polling the blockio proxy *\/$/;" m struct:__anon69 file: host_thread_fn_read frontend/df-user/main.c /^void host_thread_fn_read (void *data) $/;" f host_thread_fn_read frontend/user/main.c /^void host_thread_fn_read (void *data) $/;" f host_thread_fn_write frontend/df-user/main.c /^void host_thread_fn_write (void *data) $/;" f @@ -2280,18 +2327,20 @@ hrtimer devices/ramdrive/dev_ramssd.h /^ struct hrtimer hrtimer; \/* hrtimer mus hw_comp examples/stringsearch/ss_impl_hw.c /^int hw_comp (const int fd_dev, const char* pattern, const int start_blk, const int blks)$/;" f i common/3rd/utarray.h /^ unsigned i,n;\/* i: index of next available slot, n: num slots *\/$/;" m struct:__anon5 i common/3rd/utstring.h /^ size_t i; \/* index of first unused byte *\/$/;" m struct:__anon8 +i frontend/kernel/nvm_cache.c /^ uint64_t i, n, nr_remains;$/;" v icd common/3rd/utarray.h /^ UT_icd icd; \/* initializer, copy and destructor functions *\/$/;" m struct:__anon5 id examples/stub_test/main.c /^ int32_t id;$/;" m struct:__anon24 file: -id frontend/hybrid/blkio_proxy.c /^ int id;$/;" m struct:__anon60 file: -id frontend/hybrid/blkio_proxy_ioctl.h /^ uint32_t id;$/;" m struct:__anon63 -id ftl/algo/dftl_map.h /^ uint64_t id;$/;" m struct:__anon84 +id frontend/hybrid/blkio_proxy.c /^ int id;$/;" m struct:__anon65 file: +id frontend/hybrid/blkio_proxy_ioctl.h /^ uint32_t id;$/;" m struct:__anon68 +id ftl/algo/dftl_map.h /^ uint64_t id;$/;" m struct:__anon89 id tools/nvme/lightnvm.c /^ __u8 id[8];$/;" m struct:nvme_nvm_lp_tbl file: id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 id[8];$/;" m struct:nvme_nvm_lp_tbl file: ideal_chain_maxlen common/3rd/uthash.h /^ unsigned ideal_chain_maxlen;$/;" m struct:UT_hash_table -identity tools/nvme/lightnvm.c /^ struct nvme_nvm_identity identity;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_identity file: -identity tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_identity identity;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_identity file: +identity tools/nvme/lightnvm.c /^ struct nvme_nvm_identity identity;$/;" m union:nvme_nvm_command::__anon50 typeref:struct:nvme_nvm_command::__anon50::nvme_nvm_identity file: +identity tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_identity identity;$/;" m union:nvme_nvm_command::__anon53 typeref:struct:nvme_nvm_command::__anon53::nvme_nvm_identity file: ilog2 common/3rd/uilog.c /^int ilog2 (int x) {$/;" f -in_place_rmw ftl/hlm_reqs_pool.h /^ int8_t in_place_rmw; \/* if it is set (1), the FTL uses in-place-rmw *\/$/;" m struct:__anon66 +in_place_rmw ftl/hlm_reqs_pool.h /^ int8_t in_place_rmw; \/* if it is set (1), the FTL uses in-place-rmw *\/$/;" m struct:__anon71 +index frontend/kernel/nvm_cache.h /^ uint64_t index;$/;" m struct:__anon56 ineff_expands common/3rd/uthash.h /^ unsigned ineff_expands, noexpand;$/;" m struct:UT_hash_table inflight_rq tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_inflight_rq inflight_rq;$/;" m struct:rrpc_rq typeref:struct:rrpc_rq::rrpc_inflight_rq inflight_rq tools/lightnvm/rrpc.h /^ struct rrpc_inflight_rq inflight_rq;$/;" m struct:rrpc_rq typeref:struct:rrpc_rq::rrpc_inflight_rq @@ -2313,11 +2362,11 @@ intarr devices/bluedbm/dm_bluedbm.c /^ PortalInternal intarr[MAX_INDARRAY];$/;" intr_handler devices/ramdrive/dev_ramssd.h /^ void (*intr_handler) (void*);$/;" m struct:__anon13 invalid_pages tools/lightnvm-v4.5.3/rrpc.h /^ unsigned long invalid_pages[MAX_INVALID_PAGES_STORAGE];$/;" m struct:rrpc_block invalid_pages tools/lightnvm/rrpc.h /^ unsigned long invalid_pages[MAX_INVALID_PAGES_STORAGE];$/;" m struct:rrpc_block -invalidate_lpa include/bdbm_drv.h /^ uint32_t (*invalidate_lpa) (bdbm_drv_info_t* bdi, int64_t lpa, uint64_t len);$/;" m struct:__anon42 +invalidate_lpa include/bdbm_drv.h /^ uint32_t (*invalidate_lpa) (bdbm_drv_info_t* bdi, int64_t lpa, uint64_t len);$/;" m struct:__anon43 io_done devices/dumbssd/dm_dumbssd.c /^static void io_done (void* arg)$/;" f file: io_incapable tools/nvme/nvme.h /^ bool (*io_incapable)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops io_incapable tools/nvmedrv-v4.5.3/nvme.h /^ bool (*io_incapable)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops -io_unit ftl/hlm_reqs_pool.h /^ int32_t io_unit; \/* bytes *\/$/;" m struct:__anon66 +io_unit ftl/hlm_reqs_pool.h /^ int32_t io_unit; \/* bytes *\/$/;" m struct:__anon71 ioctl_io_done devices/dumbssd/dm_dumbssd.c /^static void ioctl_io_done (void* arg)$/;" f file: iod_list tools/nvme/pci.c /^static __le64 **iod_list(struct request *req)$/;" f file: iod_list tools/nvmedrv-v4.5.3/pci.c /^static __le64 **iod_list(struct request *req)$/;" f file: @@ -2325,10 +2374,10 @@ ioq_wait tools/nvme/pci.c /^ struct completion ioq_wait;$/;" m struct:nvme_dev t ioq_wait tools/nvmedrv-v4.5.3/pci.c /^ struct completion ioq_wait;$/;" m struct:nvme_dev typeref:struct:nvme_dev::completion file: irqname tools/nvme/pci.c /^ char irqname[24]; \/* nvme4294967295-65535\\0 *\/$/;" m struct:nvme_queue file: irqname tools/nvmedrv-v4.5.3/pci.c /^ char irqname[24]; \/* nvme4294967295-65535\\0 *\/$/;" m struct:nvme_queue file: -is_gc_needed include/bdbm_drv.h /^ uint8_t (*is_gc_needed) (bdbm_drv_info_t* bdi, int64_t lpa);$/;" m struct:__anon42 +is_gc_needed include/bdbm_drv.h /^ uint8_t (*is_gc_needed) (bdbm_drv_info_t* bdi, int64_t lpa);$/;" m struct:__anon43 is_init devices/ramdrive/dev_ramssd.h /^ uint8_t is_init; \/* 0: not initialized, 1: initialized *\/$/;" m struct:__anon13 -is_under_load ftl/algo/dftl_map.h /^ uint32_t is_under_load;$/;" m struct:__anon84 -kernel_sector_size include/params.h /^ uint32_t kernel_sector_size;$/;" m struct:__anon45 +is_under_load ftl/algo/dftl_map.h /^ uint32_t is_under_load;$/;" m struct:__anon89 +kernel_sector_size include/params.h /^ uint32_t kernel_sector_size;$/;" m struct:__anon46 key common/3rd/uthash.h /^ void *key; \/* ptr to enclosing struct's key *\/$/;" m struct:UT_hash_handle keylen common/3rd/uthash.h /^ unsigned keylen; \/* enclosing struct's key len *\/$/;" m struct:UT_hash_handle kgc_wq tools/lightnvm-v4.5.3/rrpc.h /^ struct workqueue_struct *kgc_wq;$/;" m struct:rrpc typeref:struct:rrpc::workqueue_struct @@ -2346,8 +2395,8 @@ kref tools/nvmedrv-v4.5.3/nvme.h /^ struct kref kref;$/;" m struct:nvme_ctrl typ kref tools/nvmedrv-v4.5.3/nvme.h /^ struct kref kref;$/;" m struct:nvme_ns typeref:struct:nvme_ns::kref krqd_wq tools/lightnvm-v4.5.3/rrpc.h /^ struct workqueue_struct *krqd_wq;$/;" m struct:rrpc typeref:struct:rrpc::workqueue_struct krqd_wq tools/lightnvm/rrpc.h /^ struct workqueue_struct *krqd_wq;$/;" m struct:rrpc typeref:struct:rrpc::workqueue_struct -l2p tools/nvme/lightnvm.c /^ struct nvme_nvm_l2ptbl l2p;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_l2ptbl file: -l2p tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_l2ptbl l2p;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_l2ptbl file: +l2p tools/nvme/lightnvm.c /^ struct nvme_nvm_l2ptbl l2p;$/;" m union:nvme_nvm_command::__anon50 typeref:struct:nvme_nvm_command::__anon50::nvme_nvm_l2ptbl file: +l2p tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_l2ptbl l2p;$/;" m union:nvme_nvm_command::__anon53 typeref:struct:nvme_nvm_command::__anon53::nvme_nvm_l2ptbl file: l_end tools/lightnvm-v4.5.3/rrpc.h /^ sector_t l_end;$/;" m struct:rrpc_inflight_rq l_end tools/lightnvm/rrpc.h /^ sector_t l_end;$/;" m struct:rrpc_inflight_rq l_start tools/lightnvm-v4.5.3/rrpc.h /^ sector_t l_start;$/;" m struct:rrpc_inflight_rq @@ -2369,14 +2418,15 @@ lightnvm-y tools/lightnvm-v4.5.3/Makefile /^lightnvm-y := core.o sysblk.o gennvm lightnvm-y tools/lightnvm/Makefile /^lightnvm-y := core.o sysblk.o gennvm.o rrpc.o$/;" m linear_to_generic_addr tools/lightnvm-v4.5.3/rrpc.c /^static struct ppa_addr linear_to_generic_addr(struct nvm_dev *dev,$/;" f file: linear_to_generic_addr tools/lightnvm/rrpc.c /^static struct ppa_addr linear_to_generic_addr(struct nvm_dev *dev,$/;" f file: -list frontend/hybrid/blkio_proxy_reqs_pool.c /^ struct list_head list;$/;" m struct:__anon59 typeref:struct:__anon59::list_head file: -list ftl/algo/abm.h /^ struct list_head list; \/* for list *\/$/;" m struct:__anon79 typeref:struct:__anon79::list_head -list ftl/algo/dftl_map.h /^ struct list_head list;$/;" m struct:__anon84 typeref:struct:__anon84::list_head -list ftl/queue/prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon71 typeref:struct:__anon71::list_head -list ftl/queue/prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon70 typeref:struct:__anon70::list_head -list ftl/queue/queue.h /^ struct list_head list;$/;" m struct:__anon68 typeref:struct:__anon68::list_head -list ftl/queue/rd_prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon75 typeref:struct:__anon75::list_head -list ftl/queue/rd_prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon74 typeref:struct:__anon74::list_head +list frontend/hybrid/blkio_proxy_reqs_pool.c /^ struct list_head list;$/;" m struct:__anon64 typeref:struct:__anon64::list_head file: +list frontend/kernel/nvm_cache.h /^ struct list_head list; \/* for lru list *\/$/;" m struct:__anon56 typeref:struct:__anon56::list_head +list ftl/algo/abm.h /^ struct list_head list; \/* for list *\/$/;" m struct:__anon84 typeref:struct:__anon84::list_head +list ftl/algo/dftl_map.h /^ struct list_head list;$/;" m struct:__anon89 typeref:struct:__anon89::list_head +list ftl/queue/prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon76 typeref:struct:__anon76::list_head +list ftl/queue/prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon75 typeref:struct:__anon75::list_head +list ftl/queue/queue.h /^ struct list_head list;$/;" m struct:__anon73 typeref:struct:__anon73::list_head +list ftl/queue/rd_prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon80 typeref:struct:__anon80::list_head +list ftl/queue/rd_prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon79 typeref:struct:__anon79::list_head list include/bdbm_drv.h /^ struct list_head list; \/* for hlm_reqs_pool *\/$/;" m struct:__anon32 typeref:struct:__anon32::list_head list tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head list;$/;" m struct:rrpc_block typeref:struct:rrpc_block::list_head list tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head list;$/;" m struct:rrpc_inflight_rq typeref:struct:rrpc_inflight_rq::list_head @@ -2400,10 +2450,10 @@ list_for_each_entry_safe_reverse common/3rd/ulist.h 361;" d list_for_each_prev common/3rd/ulist.h 268;" d list_for_each_safe common/3rd/ulist.h 278;" d list_head common/3rd/ulist.h /^struct list_head {$/;" s -list_head_bad ftl/algo/abm.h /^ struct list_head** list_head_bad;$/;" m struct:__anon80 typeref:struct:__anon80::list_head -list_head_clean ftl/algo/abm.h /^ struct list_head** list_head_clean;$/;" m struct:__anon80 typeref:struct:__anon80::list_head -list_head_dirty ftl/algo/abm.h /^ struct list_head** list_head_dirty;$/;" m struct:__anon80 typeref:struct:__anon80::list_head -list_head_free ftl/algo/abm.h /^ struct list_head** list_head_free;$/;" m struct:__anon80 typeref:struct:__anon80::list_head +list_head_bad ftl/algo/abm.h /^ struct list_head** list_head_bad;$/;" m struct:__anon85 typeref:struct:__anon85::list_head +list_head_clean ftl/algo/abm.h /^ struct list_head** list_head_clean;$/;" m struct:__anon85 typeref:struct:__anon85::list_head +list_head_dirty ftl/algo/abm.h /^ struct list_head** list_head_dirty;$/;" m struct:__anon85 typeref:struct:__anon85::list_head +list_head_free ftl/algo/abm.h /^ struct list_head** list_head_free;$/;" m struct:__anon85 typeref:struct:__anon85::list_head list_move common/3rd/ulist.h /^static inline void list_move(struct list_head *list, struct list_head *head)$/;" f list_move_tail common/3rd/ulist.h /^static inline void list_move_tail(struct list_head *list,$/;" f list_prepare_entry common/3rd/ulist.h 311;" d @@ -2426,7 +2476,7 @@ llm_noq_lock_make_req ftl/llm_noq_lock.c /^uint32_t llm_noq_lock_make_req (bdbm_ llm_noq_make_req ftl/llm_noq.c /^uint32_t llm_noq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* llm_req)$/;" f llm_noq_make_reqs ftl/llm_noq.c /^uint32_t llm_noq_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f llm_reqs devices/bluedbm/dm_bluedbm.c /^ bdbm_llm_req_t** llm_reqs;$/;" m struct:dm_bluedbm_private file: -llm_reqs frontend/user/dev_proxy.c /^ bdbm_llm_req_t** llm_reqs;$/;" m struct:__anon54 file: +llm_reqs frontend/user/dev_proxy.c /^ bdbm_llm_req_t** llm_reqs;$/;" m struct:__anon55 file: llm_reqs include/bdbm_drv.h /^ bdbm_llm_req_t llm_reqs[BDBM_BLKIO_MAX_VECS];$/;" m struct:__anon32::__anon33::__anon34 llm_reqs include/bdbm_drv.h /^ bdbm_llm_req_t* llm_reqs;$/;" m struct:__anon37 llm_rmq_create ftl/llm_rmq.c /^uint32_t llm_rmq_create (bdbm_drv_info_t* bdi)$/;" f @@ -2436,20 +2486,20 @@ llm_rmq_flush ftl/llm_rmq.c /^void llm_rmq_flush (bdbm_drv_info_t* bdi)$/;" f llm_rmq_make_req ftl/llm_rmq.c /^uint32_t llm_rmq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r)$/;" f llm_thread ftl/llm_mq.c /^ bdbm_thread_t* llm_thread;$/;" m struct:bdbm_llm_mq_private file: llm_thread ftl/llm_rmq.c /^ bdbm_thread_t* llm_thread;$/;" m struct:bdbm_llm_rmq_private file: -llm_type include/params.h /^ uint32_t llm_type;$/;" m struct:__anon45 -load include/bdbm_drv.h /^ uint32_t (*load) (bdbm_drv_info_t* bdi, const char* fn);$/;" m struct:__anon41 +llm_type include/params.h /^ uint32_t llm_type;$/;" m struct:__anon46 load include/bdbm_drv.h /^ uint32_t (*load) (bdbm_drv_info_t* bdi, const char* fn);$/;" m struct:__anon42 +load include/bdbm_drv.h /^ uint32_t (*load) (bdbm_drv_info_t* bdi, const char* fn);$/;" m struct:__anon43 lock devices/bluedbm/dm_bluedbm.c /^ bdbm_spinlock_t lock;$/;" m struct:dm_bluedbm_private file: lock devices/common/dev_stub.c /^ bdbm_spinlock_t lock;$/;" m struct:__anon9 file: -lock frontend/hybrid/blkio_proxy.c /^ bdbm_spinlock_t lock;$/;" m struct:__anon61 file: -lock frontend/hybrid/blkio_proxy_reqs_pool.h /^ bdbm_spinlock_t lock;$/;" m struct:__anon58 -lock frontend/user/dev_proxy.c /^ bdbm_spinlock_t lock;$/;" m struct:__anon54 file: -lock ftl/hlm_reqs_pool.h /^ bdbm_spinlock_t lock;$/;" m struct:__anon66 -lock ftl/queue/prior_queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon72 -lock ftl/queue/prior_queue.h /^ uint8_t lock;$/;" m struct:__anon70 -lock ftl/queue/queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon69 -lock ftl/queue/rd_prior_queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon76 -lock ftl/queue/rd_prior_queue.h /^ uint8_t lock;$/;" m struct:__anon74 +lock frontend/hybrid/blkio_proxy.c /^ bdbm_spinlock_t lock;$/;" m struct:__anon66 file: +lock frontend/hybrid/blkio_proxy_reqs_pool.h /^ bdbm_spinlock_t lock;$/;" m struct:__anon63 +lock frontend/user/dev_proxy.c /^ bdbm_spinlock_t lock;$/;" m struct:__anon55 file: +lock ftl/hlm_reqs_pool.h /^ bdbm_spinlock_t lock;$/;" m struct:__anon71 +lock ftl/queue/prior_queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon77 +lock ftl/queue/prior_queue.h /^ uint8_t lock;$/;" m struct:__anon75 +lock ftl/queue/queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon74 +lock ftl/queue/rd_prior_queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon81 +lock ftl/queue/rd_prior_queue.h /^ uint8_t lock;$/;" m struct:__anon79 lock tools/lightnvm-v4.5.3/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_block lock tools/lightnvm-v4.5.3/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_inflight lock tools/lightnvm-v4.5.3/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_lun @@ -2459,16 +2509,21 @@ lock tools/lightnvm/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_lun lock_busy devices/common/dev_stub.c /^ bdbm_spinlock_t lock_busy;$/;" m struct:__anon9 file: log2_num_buckets common/3rd/uthash.h /^ unsigned num_buckets, log2_num_buckets;$/;" m struct:UT_hash_table logaddr devices/common/dev_stub.h /^ bdbm_logaddr_t logaddr;$/;" m struct:__anon10 +logaddr frontend/kernel/nvm_cache.h /^ bdbm_logaddr_t logaddr;$/;" m struct:__anon56 +logaddr frontend/kernel/nvm_cache_bak/nvm_cache.h /^ bdbm_logaddr_t logaddr;$/;" m struct:__anon58 logaddr include/bdbm_drv.h /^ bdbm_logaddr_t logaddr;$/;" m struct:__anon31 -lpa ftl/queue/prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon70 -lpa ftl/queue/prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon71 -lpa ftl/queue/rd_prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon74 -lpa ftl/queue/rd_prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon75 +lpa ftl/queue/prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon75 +lpa ftl/queue/prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon76 +lpa ftl/queue/rd_prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon79 +lpa ftl/queue/rd_prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon80 lpa include/bdbm_drv.h /^ uint64_t lpa;$/;" m struct:__anon32::__anon33::__anon35 lpa include/bdbm_drv.h /^ int64_t lpa[BDBM_MAX_PAGES];$/;" m struct:__anon28 lptbl tools/nvme/lightnvm.c /^ struct nvme_nvm_lp_tbl lptbl;$/;" m struct:nvme_nvm_id_group typeref:struct:nvme_nvm_id_group::nvme_nvm_lp_tbl file: lptbl tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_lp_tbl lptbl;$/;" m struct:nvme_nvm_id_group typeref:struct:nvme_nvm_id_group::nvme_nvm_lp_tbl file: -lru_list ftl/algo/dftl_map.h /^ struct list_head lru_list; \/* dirty-list header *\/$/;" m struct:__anon85 typeref:struct:__anon85::list_head +lr frontend/kernel/nvm_cache.c /^ bdbm_llm_req_t* lr; $/;" v +lru_list frontend/kernel/nvm_cache.h /^ struct list_head* lru_list;$/;" m struct:__anon57 typeref:struct:__anon57::list_head +lru_list frontend/kernel/nvm_cache_bak/nvm_cache.h /^ struct list_head lru_list;$/;" m struct:__anon59 typeref:struct:__anon59::list_head +lru_list ftl/algo/dftl_map.h /^ struct list_head lru_list; \/* dirty-list header *\/$/;" m struct:__anon90 typeref:struct:__anon90::list_head lun_len tools/nvme/lightnvm.c /^ __u8 lun_len;$/;" m struct:nvme_nvm_addr_format file: lun_len tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 lun_len;$/;" m struct:nvme_nvm_addr_format file: lun_offset tools/lightnvm-v4.5.3/rrpc.h /^ int lun_offset;$/;" m struct:rrpc @@ -2488,37 +2543,38 @@ main tools/dumbssd-format/dumbssd-format.c /^int main (int argc, char** argv)$/; main tools/dumbssd-test/dumbssd-test.c /^int main (int argc, char** argv)$/;" f main tools/format/bdbm_format.c /^int main (int argc, char** argv)$/;" f main2 examples/stub_test/main.c /^int main2(int argc, char** argv)$/;" f -make_req include/bdbm_drv.h /^ uint32_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon39 -make_req include/bdbm_drv.h /^ uint32_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon40 +make_req include/bdbm_drv.h /^ uint32_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon40 make_req include/bdbm_drv.h /^ uint32_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon41 +make_req include/bdbm_drv.h /^ uint32_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon42 +make_req include/bdbm_drv.h /^ uint64_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon39 make_req include/bdbm_drv.h /^ void (*make_req) (bdbm_drv_info_t* bdi, void* req);$/;" m struct:__anon38 -make_reqs include/bdbm_drv.h /^ uint32_t (*make_reqs) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon40 make_reqs include/bdbm_drv.h /^ uint32_t (*make_reqs) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon41 +make_reqs include/bdbm_drv.h /^ uint32_t (*make_reqs) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon42 manual_event devices/bluedbm/dm_bluedbm.c /^void manual_event (struct dm_bluedbm_private* priv)$/;" f -map_lpa_to_ppa include/bdbm_drv.h /^ uint32_t (*map_lpa_to_ppa) (bdbm_drv_info_t* bdi, bdbm_logaddr_t* logaddr, bdbm_phyaddr_t* ppa);$/;" m struct:__anon42 -map_unit ftl/hlm_reqs_pool.h /^ int32_t map_unit; \/* bytes *\/$/;" m struct:__anon66 -mapblk_phyaddr_t ftl/algo/dftl_map.h /^} mapblk_phyaddr_t;$/;" t typeref:struct:__anon82 -mapping_entry_size ftl/algo/dftl_map.h /^ uint64_t mapping_entry_size;$/;" m struct:__anon85 -mapping_entry_t ftl/algo/dftl_map.h /^} mapping_entry_t;$/;" t typeref:struct:__anon83 -mapping_type include/params.h /^ uint32_t mapping_type;$/;" m struct:__anon45 -max_cached_dir_slots ftl/algo/dftl_map.h /^ uint64_t max_cached_dir_slots;$/;" m struct:__anon85 +map_lpa_to_ppa include/bdbm_drv.h /^ uint32_t (*map_lpa_to_ppa) (bdbm_drv_info_t* bdi, bdbm_logaddr_t* logaddr, bdbm_phyaddr_t* ppa);$/;" m struct:__anon43 +map_unit ftl/hlm_reqs_pool.h /^ int32_t map_unit; \/* bytes *\/$/;" m struct:__anon71 +mapblk_phyaddr_t ftl/algo/dftl_map.h /^} mapblk_phyaddr_t;$/;" t typeref:struct:__anon87 +mapping_entry_size ftl/algo/dftl_map.h /^ uint64_t mapping_entry_size;$/;" m struct:__anon90 +mapping_entry_t ftl/algo/dftl_map.h /^} mapping_entry_t;$/;" t typeref:struct:__anon88 +mapping_type include/params.h /^ uint32_t mapping_type;$/;" m struct:__anon46 +max_cached_dir_slots ftl/algo/dftl_map.h /^ uint64_t max_cached_dir_slots;$/;" m struct:__anon90 max_hw_sectors tools/nvme/nvme.h /^ u32 max_hw_sectors;$/;" m struct:nvme_ctrl max_hw_sectors tools/nvmedrv-v4.5.3/nvme.h /^ u32 max_hw_sectors;$/;" m struct:nvme_ctrl max_qid tools/nvme/pci.c /^ unsigned max_qid;$/;" m struct:nvme_dev file: max_qid tools/nvmedrv-v4.5.3/pci.c /^ unsigned max_qid;$/;" m struct:nvme_dev file: max_queue_items ftl/queue/queue.c /^static uint64_t max_queue_items = 0;$/;" v file: -max_size ftl/queue/prior_queue.h /^ int64_t max_size;$/;" m struct:__anon72 -max_size ftl/queue/queue.h /^ int64_t max_size;$/;" m struct:__anon69 -max_size ftl/queue/rd_prior_queue.h /^ int64_t max_size;$/;" m struct:__anon76 -max_tag ftl/queue/prior_queue.h /^ uint64_t max_tag;$/;" m struct:__anon71 -max_tag ftl/queue/rd_prior_queue.h /^ uint64_t max_tag;$/;" m struct:__anon75 +max_size ftl/queue/prior_queue.h /^ int64_t max_size;$/;" m struct:__anon77 +max_size ftl/queue/queue.h /^ int64_t max_size;$/;" m struct:__anon74 +max_size ftl/queue/rd_prior_queue.h /^ int64_t max_size;$/;" m struct:__anon81 +max_tag ftl/queue/prior_queue.h /^ uint64_t max_tag;$/;" m struct:__anon76 +max_tag ftl/queue/rd_prior_queue.h /^ uint64_t max_tag;$/;" m struct:__anon80 mccap tools/nvme/lightnvm.c /^ __le32 mccap;$/;" m struct:nvme_nvm_id_group file: mccap tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 mccap;$/;" m struct:nvme_nvm_id_group file: -me ftl/algo/dftl_map.h /^ mapping_entry_t* me; \/* the size of me is equal to a single flash size *\/$/;" m struct:__anon84 -meta_read_cnt include/bdbm_drv.h /^ atomic64_t meta_read_cnt;$/;" m struct:__anon43 +me ftl/algo/dftl_map.h /^ mapping_entry_t* me; \/* the size of me is equal to a single flash size *\/$/;" m struct:__anon89 +meta_read_cnt include/bdbm_drv.h /^ atomic64_t meta_read_cnt;$/;" m struct:__anon44 meta_sg tools/nvme/pci.c /^ struct scatterlist meta_sg; \/* metadata requires single contiguous buffer *\/$/;" m struct:nvme_iod typeref:struct:nvme_iod::scatterlist file: meta_sg tools/nvmedrv-v4.5.3/pci.c /^ struct scatterlist meta_sg; \/* metadata requires single contiguous buffer *\/$/;" m struct:nvme_iod typeref:struct:nvme_iod::scatterlist file: -meta_write_cnt include/bdbm_drv.h /^ atomic64_t meta_write_cnt;$/;" m struct:__anon43 +meta_write_cnt include/bdbm_drv.h /^ atomic64_t meta_write_cnt;$/;" m struct:__anon44 metadata tools/nvme/lightnvm.c /^ __le64 metadata;$/;" m struct:nvme_nvm_hb_rw file: metadata tools/nvme/lightnvm.c /^ __le64 metadata;$/;" m struct:nvme_nvm_ph_rw file: metadata tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 metadata;$/;" m struct:nvme_nvm_hb_rw file: @@ -2526,14 +2582,14 @@ metadata tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 metadata;$/;" m struct:nvme mlc tools/nvme/lightnvm.c /^ struct nvme_nvm_lp_mlc mlc;$/;" m struct:nvme_nvm_lp_tbl typeref:struct:nvme_nvm_lp_tbl::nvme_nvm_lp_mlc file: mlc tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_lp_mlc mlc;$/;" m struct:nvme_nvm_lp_tbl typeref:struct:nvme_nvm_lp_tbl::nvme_nvm_lp_mlc file: mmap_close devices/common/dev_stub.c /^void mmap_close (struct vm_area_struct *vma)$/;" f -mmap_nr_reqs frontend/hybrid/blkio_proxy.c /^ int64_t mmap_nr_reqs;$/;" m struct:__anon61 file: +mmap_nr_reqs frontend/hybrid/blkio_proxy.c /^ int64_t mmap_nr_reqs;$/;" m struct:__anon66 file: mmap_open devices/common/dev_stub.c /^void mmap_open (struct vm_area_struct *vma)$/;" f -mmap_req frontend/hybrid/blkio_proxy_reqs_pool.c /^ bdbm_blkio_proxy_req_t* mmap_req;$/;" m struct:__anon59 file: -mmap_reqs frontend/hybrid/blkio_proxy_reqs_pool.h /^ bdbm_blkio_proxy_req_t* mmap_reqs;$/;" m struct:__anon58 -mmap_reqs frontend/hybrid/blkio_stub.c /^ bdbm_blkio_proxy_req_t* mmap_reqs;$/;" m struct:__anon64 file: -mmap_reqs_buf frontend/hybrid/blkio_proxy.c /^ bdbm_blkio_proxy_req_t* mmap_reqs_buf;$/;" m struct:__anon61 file: +mmap_req frontend/hybrid/blkio_proxy_reqs_pool.c /^ bdbm_blkio_proxy_req_t* mmap_req;$/;" m struct:__anon64 file: +mmap_reqs frontend/hybrid/blkio_proxy_reqs_pool.h /^ bdbm_blkio_proxy_req_t* mmap_reqs;$/;" m struct:__anon63 +mmap_reqs frontend/hybrid/blkio_stub.c /^ bdbm_blkio_proxy_req_t* mmap_reqs;$/;" m struct:__anon69 file: +mmap_reqs_buf frontend/hybrid/blkio_proxy.c /^ bdbm_blkio_proxy_req_t* mmap_reqs_buf;$/;" m struct:__anon66 file: mmap_shared devices/common/dev_stub.c /^ uint8_t* mmap_shared;$/;" m struct:__anon9 file: -mmap_shared frontend/user/dev_proxy.c /^ uint8_t* mmap_shared;$/;" m struct:__anon54 file: +mmap_shared frontend/user/dev_proxy.c /^ uint8_t* mmap_shared;$/;" m struct:__anon55 file: mmap_shared_size devices/common/dev_stub.c /^ uint64_t mmap_shared_size;$/;" m struct:__anon9 file: mmap_vm_ops devices/common/dev_stub.c /^struct vm_operations_struct mmap_vm_ops = {$/;" v typeref:struct:vm_operations_struct mmap_vm_ops frontend/hybrid/blkio_proxy.c /^static struct vm_operations_struct mmap_vm_ops = {$/;" v typeref:struct:vm_operations_struct file: @@ -2546,18 +2602,19 @@ model tools/nvme/nvme.h /^ char model[40];$/;" m struct:nvme_ctrl model tools/nvmedrv-v4.5.3/core.c /^nvme_show_function(model);$/;" v model tools/nvmedrv-v4.5.3/nvme.h /^ char model[40];$/;" m struct:nvme_ctrl module_main-y examples/raw-flash/Makefile /^module_main-y := \\$/;" m -module_param include/bdbm_drv.h 42;" d +module_param include/bdbm_drv.h 44;" d mpos tools/nvme/lightnvm.c /^ __le32 mpos;$/;" m struct:nvme_nvm_id_group file: mpos tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 mpos;$/;" m struct:nvme_nvm_id_group file: ms tools/nvme/nvme.h /^ u16 ms;$/;" m struct:nvme_ns ms tools/nvmedrv-v4.5.3/nvme.h /^ u16 ms;$/;" m struct:nvme_ns -mt ftl/algo/block_ftl.c /^ bdbm_block_mapping_entry_t** mt;$/;" m struct:__anon78 file: -mt ftl/algo/dftl.c /^ dftl_mapping_table_t* mt;$/;" m struct:__anon86 file: +mt ftl/algo/block_ftl.c /^ bdbm_block_mapping_entry_t** mt;$/;" m struct:__anon83 file: +mt ftl/algo/dftl.c /^ dftl_mapping_table_t* mt;$/;" m struct:__anon91 file: mtype tools/nvme/lightnvm.c /^ __u8 mtype;$/;" m struct:nvme_nvm_id_group file: mtype tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 mtype;$/;" m struct:nvme_nvm_id_group file: -mutex frontend/hybrid/blkio_proxy.c /^ bdbm_sema_t mutex;$/;" m struct:__anon61 file: +mutex frontend/hybrid/blkio_proxy.c /^ bdbm_sema_t mutex;$/;" m struct:__anon66 file: n common/3rd/utarray.h /^ unsigned i,n;\/* i: index of next available slot, n: num slots *\/$/;" m struct:__anon5 n common/3rd/utstring.h /^ size_t n; \/* allocd size *\/$/;" m struct:__anon8 +n frontend/kernel/nvm_cache.c /^ uint64_t i, n, nr_remains;$/;" v name tools/nvme/nvme.h /^ char name[12];$/;" m struct:nvme_ctrl name tools/nvmedrv-v4.5.3/nvme.h /^ char name[12];$/;" m struct:nvme_ctrl namespaces tools/nvme/nvme.h /^ struct list_head namespaces;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::list_head @@ -2588,31 +2645,34 @@ nonideal_items common/3rd/uthash.h /^ unsigned nonideal_items;$/;" m struct:UT np devices/ramdrive/dev_ramssd.h /^ bdbm_device_params_t* np;$/;" m struct:__anon13 np examples/raw-flash/raw-flash.h /^ bdbm_device_params_t* np;$/;" m struct:__anon20 np examples/stub_test/main.c /^bdbm_device_params_t np;$/;" v -np ftl/algo/abm.h /^ bdbm_device_params_t* np;$/;" m struct:__anon80 +np frontend/kernel/nvm_cache.h /^ bdbm_device_params_t* np;$/;" m struct:__anon57 +np frontend/kernel/nvm_cache_bak/nvm_cache.h /^ bdbm_device_params_t* np;$/;" m struct:__anon59 +np ftl/algo/abm.h /^ bdbm_device_params_t* np;$/;" m struct:__anon85 npages tools/nvme/pci.c /^ int npages; \/* In the PRP list. 0 means small pool in use *\/$/;" m struct:nvme_iod file: npages tools/nvmedrv-v4.5.3/pci.c /^ int npages; \/* In the PRP list. 0 means small pool in use *\/$/;" m struct:nvme_iod file: -nr_bad_blks ftl/algo/abm.h /^ uint64_t nr_bad_blks;$/;" m struct:__anon80 -nr_blks_per_seg ftl/algo/block_ftl.c /^ uint64_t nr_blks_per_seg; \/* how many blocks belong to a segment *\/$/;" m struct:__anon78 file: -nr_blocks_per_channel include/params.h /^ uint64_t nr_blocks_per_channel;$/;" m struct:__anon46 -nr_blocks_per_chip include/params.h /^ uint64_t nr_blocks_per_chip;$/;" m struct:__anon46 -nr_blocks_per_ssd include/params.h /^ uint64_t nr_blocks_per_ssd;$/;" m struct:__anon46 -nr_cached_slots ftl/algo/dftl_map.h /^ atomic64_t nr_cached_slots;$/;" m struct:__anon85 -nr_channels include/params.h /^ uint64_t nr_channels;$/;" m struct:__anon46 -nr_chips_per_channel include/params.h /^ uint64_t nr_chips_per_channel;$/;" m struct:__anon46 -nr_chips_per_ssd include/params.h /^ uint64_t nr_chips_per_ssd;$/;" m struct:__anon46 -nr_clean_blks ftl/algo/abm.h /^ uint64_t nr_clean_blks;$/;" m struct:__anon80 -nr_dead_segs ftl/algo/block_ftl.c /^ int64_t nr_dead_segs;$/;" m struct:__anon78 file: -nr_dirty_blks ftl/algo/abm.h /^ uint64_t nr_dirty_blks;$/;" m struct:__anon80 -nr_entires_per_dir_slot ftl/algo/dftl_map.h /^ uint64_t nr_entires_per_dir_slot;$/;" m struct:__anon85 -nr_free_blks ftl/algo/abm.h /^ uint64_t nr_free_blks;$/;" m struct:__anon80 -nr_free_blks_prepared ftl/algo/abm.h /^ uint64_t nr_free_blks_prepared;$/;" m struct:__anon80 -nr_host_reqs frontend/df-user/userio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon56 file: -nr_host_reqs frontend/hybrid/blkio_stub.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon64 file: -nr_host_reqs frontend/kernel/blkio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon55 file: -nr_host_reqs frontend/user/userio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon53 file: +nr_bad_blks ftl/algo/abm.h /^ uint64_t nr_bad_blks;$/;" m struct:__anon85 +nr_blks_per_seg ftl/algo/block_ftl.c /^ uint64_t nr_blks_per_seg; \/* how many blocks belong to a segment *\/$/;" m struct:__anon83 file: +nr_blocks_per_channel include/params.h /^ uint64_t nr_blocks_per_channel;$/;" m struct:__anon47 +nr_blocks_per_chip include/params.h /^ uint64_t nr_blocks_per_chip;$/;" m struct:__anon47 +nr_blocks_per_ssd include/params.h /^ uint64_t nr_blocks_per_ssd;$/;" m struct:__anon47 +nr_cached_slots ftl/algo/dftl_map.h /^ atomic64_t nr_cached_slots;$/;" m struct:__anon90 +nr_channels include/params.h /^ uint64_t nr_channels;$/;" m struct:__anon47 +nr_chips_per_channel include/params.h /^ uint64_t nr_chips_per_channel;$/;" m struct:__anon47 +nr_chips_per_ssd include/params.h /^ uint64_t nr_chips_per_ssd;$/;" m struct:__anon47 +nr_clean_blks ftl/algo/abm.h /^ uint64_t nr_clean_blks;$/;" m struct:__anon85 +nr_dead_segs ftl/algo/block_ftl.c /^ int64_t nr_dead_segs;$/;" m struct:__anon83 file: +nr_dirty_blks ftl/algo/abm.h /^ uint64_t nr_dirty_blks;$/;" m struct:__anon85 +nr_entires_per_dir_slot ftl/algo/dftl_map.h /^ uint64_t nr_entires_per_dir_slot;$/;" m struct:__anon90 +nr_free_blks ftl/algo/abm.h /^ uint64_t nr_free_blks;$/;" m struct:__anon85 +nr_free_blks_prepared ftl/algo/abm.h /^ uint64_t nr_free_blks_prepared;$/;" m struct:__anon85 +nr_free_pages frontend/kernel/nvm_cache.h /^ uint64_t nr_free_pages;$/;" m struct:__anon57 +nr_host_reqs frontend/df-user/userio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon61 file: +nr_host_reqs frontend/hybrid/blkio_stub.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon69 file: +nr_host_reqs frontend/kernel/blkio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon60 file: +nr_host_reqs frontend/user/userio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon54 file: nr_invalid_pages tools/lightnvm-v4.5.3/rrpc.h /^ unsigned int nr_invalid_pages;$/;" m struct:rrpc_block nr_invalid_pages tools/lightnvm/rrpc.h /^ unsigned int nr_invalid_pages;$/;" m struct:rrpc_block -nr_invalid_subpages ftl/algo/abm.h /^ uint32_t nr_invalid_subpages;$/;" m struct:__anon79 +nr_invalid_subpages ftl/algo/abm.h /^ uint32_t nr_invalid_subpages;$/;" m struct:__anon84 nr_kp_per_fp examples/raw-flash/raw-flash.h /^ uint64_t nr_kp_per_fp;$/;" m struct:__anon20 nr_kp_per_fp examples/stub_test/main.c /^int nr_kp_per_fp = 1;$/;" v nr_llm_reqs include/bdbm_drv.h /^ uint64_t nr_llm_reqs;$/;" m struct:__anon32::__anon33::__anon34 @@ -2623,35 +2683,39 @@ nr_luns tools/lightnvm-v4.5.3/gennvm.h /^ int nr_luns;$/;" m struct:gen_nvm nr_luns tools/lightnvm-v4.5.3/rrpc.h /^ int nr_luns;$/;" m struct:rrpc nr_luns tools/lightnvm/gennvm.h /^ int nr_luns;$/;" m struct:gen_nvm nr_luns tools/lightnvm/rrpc.h /^ int nr_luns;$/;" m struct:rrpc -nr_out_reqs frontend/hybrid/blkio_proxy.c /^ atomic_t nr_out_reqs; \/* # of outstanding requests *\/$/;" m struct:__anon61 file: +nr_nvm_pages include/params.h /^ uint64_t nr_nvm_pages;$/;" m struct:__anon47 +nr_out_reqs frontend/hybrid/blkio_proxy.c /^ atomic_t nr_out_reqs; \/* # of outstanding requests *\/$/;" m struct:__anon66 file: nr_pages tools/lightnvm-v4.5.3/rrpc.h /^ unsigned long long nr_pages;$/;" m struct:rrpc nr_pages tools/lightnvm/rrpc.h /^ unsigned long long nr_pages;$/;" m struct:rrpc -nr_pages_per_block include/params.h /^ uint64_t nr_pages_per_block;$/;" m struct:__anon46 -nr_pages_per_ssd include/params.h /^ uint64_t nr_pages_per_ssd;$/;" m struct:__anon46 -nr_pgs_per_seg ftl/algo/block_ftl.c /^ uint64_t nr_pgs_per_seg; \/* how many pages belong to a segment *\/$/;" m struct:__anon78 file: +nr_pages_per_block include/params.h /^ uint64_t nr_pages_per_block;$/;" m struct:__anon47 +nr_pages_per_ssd include/params.h /^ uint64_t nr_pages_per_ssd;$/;" m struct:__anon47 +nr_pgs_per_seg ftl/algo/block_ftl.c /^ uint64_t nr_pgs_per_seg; \/* how many pages belong to a segment *\/$/;" m struct:__anon83 file: nr_ppas tools/lightnvm-v4.5.3/sysblk.c /^ int nr_ppas;$/;" m struct:sysblk_scan file: nr_ppas tools/lightnvm/sysblk.c /^ int nr_ppas;$/;" m struct:sysblk_scan file: nr_punits examples/raw-flash/raw-flash.h /^ uint64_t nr_punits;$/;" m struct:__anon20 -nr_punits ftl/algo/dftl.c /^ uint64_t nr_punits; $/;" m struct:__anon86 file: -nr_punits ftl/algo/page_ftl.c /^ uint64_t nr_punits;$/;" m struct:__anon88 file: +nr_punits ftl/algo/dftl.c /^ uint64_t nr_punits; $/;" m struct:__anon91 file: +nr_punits ftl/algo/page_ftl.c /^ uint64_t nr_punits;$/;" m struct:__anon93 file: nr_punits ftl/llm_mq.c /^ uint64_t nr_punits;$/;" m struct:bdbm_llm_mq_private file: nr_punits ftl/llm_noq_lock.c /^ uint64_t nr_punits;$/;" m struct:bdbm_llm_noq_lock_private file: nr_punits ftl/llm_rmq.c /^ uint64_t nr_punits;$/;" m struct:bdbm_llm_rmq_private file: -nr_punits_pages ftl/algo/page_ftl.c /^ uint64_t nr_punits_pages;$/;" m struct:__anon88 file: -nr_queues ftl/queue/prior_queue.h /^ uint64_t nr_queues;$/;" m struct:__anon72 -nr_queues ftl/queue/queue.h /^ uint64_t nr_queues;$/;" m struct:__anon69 -nr_queues ftl/queue/rd_prior_queue.h /^ uint64_t nr_queues;$/;" m struct:__anon76 -nr_reqs frontend/hybrid/blkio_proxy_reqs_pool.h /^ int64_t nr_reqs;$/;" m struct:__anon58 +nr_punits_pages ftl/algo/page_ftl.c /^ uint64_t nr_punits_pages;$/;" m struct:__anon93 file: +nr_queues ftl/queue/prior_queue.h /^ uint64_t nr_queues;$/;" m struct:__anon77 +nr_queues ftl/queue/queue.h /^ uint64_t nr_queues;$/;" m struct:__anon74 +nr_queues ftl/queue/rd_prior_queue.h /^ uint64_t nr_queues;$/;" m struct:__anon81 +nr_remains frontend/kernel/nvm_cache.c /^ uint64_t i, n, nr_remains;$/;" v +nr_reqs frontend/hybrid/blkio_proxy_reqs_pool.h /^ int64_t nr_reqs;$/;" m struct:__anon63 nr_rows tools/lightnvm-v4.5.3/sysblk.c /^ int nr_rows;$/;" m struct:sysblk_scan file: nr_rows tools/lightnvm/sysblk.c /^ int nr_rows;$/;" m struct:sysblk_scan file: -nr_segs ftl/algo/block_ftl.c /^ uint64_t nr_segs; \/* a segment is the unit of mapping *\/$/;" m struct:__anon78 file: -nr_subpages_per_block include/params.h /^ uint64_t nr_subpages_per_block;$/;" m struct:__anon46 -nr_subpages_per_page include/params.h /^ uint64_t nr_subpages_per_page;$/;" m struct:__anon46 -nr_subpages_per_ssd include/params.h /^ uint64_t nr_subpages_per_ssd; \/* subpage size must be4 KB *\/$/;" m struct:__anon46 -nr_total_blks ftl/algo/abm.h /^ uint64_t nr_total_blks;$/;" m struct:__anon80 -nr_total_dir_slots ftl/algo/dftl_map.h /^ uint64_t nr_total_dir_slots;$/;" m struct:__anon85 -nr_trim_pgs ftl/algo/block_ftl.c /^ uint64_t* nr_trim_pgs;$/;" m struct:__anon78 file: -nr_valid_pgs ftl/algo/block_ftl.c /^ uint64_t* nr_valid_pgs;$/;" m struct:__anon78 file: +nr_segs ftl/algo/block_ftl.c /^ uint64_t nr_segs; \/* a segment is the unit of mapping *\/$/;" m struct:__anon83 file: +nr_subpages_per_block include/params.h /^ uint64_t nr_subpages_per_block;$/;" m struct:__anon47 +nr_subpages_per_page include/params.h /^ uint64_t nr_subpages_per_page;$/;" m struct:__anon47 +nr_subpages_per_ssd include/params.h /^ uint64_t nr_subpages_per_ssd; \/* subpage size must be4 KB *\/$/;" m struct:__anon47 +nr_total_blks frontend/kernel/nvm_cache_bak/nvm_cache.h /^ uint64_t nr_total_blks;$/;" m struct:__anon59 +nr_total_blks ftl/algo/abm.h /^ uint64_t nr_total_blks;$/;" m struct:__anon85 +nr_total_dir_slots ftl/algo/dftl_map.h /^ uint64_t nr_total_dir_slots;$/;" m struct:__anon90 +nr_total_pages frontend/kernel/nvm_cache.h /^ uint64_t nr_total_pages;$/;" m struct:__anon57 +nr_trim_pgs ftl/algo/block_ftl.c /^ uint64_t* nr_trim_pgs;$/;" m struct:__anon83 file: +nr_valid_pgs ftl/algo/block_ftl.c /^ uint64_t* nr_valid_pgs;$/;" m struct:__anon83 file: ns_cmp tools/nvme/core.c /^static int ns_cmp(void *priv, struct list_head *a, struct list_head *b)$/;" f file: ns_cmp tools/nvmedrv-v4.5.3/core.c /^static int ns_cmp(void *priv, struct list_head *a, struct list_head *b)$/;" f file: ns_id tools/nvme/nvme.h /^ unsigned ns_id;$/;" m struct:nvme_ns @@ -2779,6 +2843,7 @@ nvm_get_blk_unlocked tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_get_blk_unlocked) nvm_get_blk_unlocked tools/lightnvm/core.c /^struct nvm_block *nvm_get_blk_unlocked(struct nvm_dev *dev, struct nvm_lun *lun,$/;" f nvm_get_sysblock tools/lightnvm-v4.5.3/sysblk.c /^int nvm_get_sysblock(struct nvm_dev *dev, struct nvm_sb_info *info)$/;" f nvm_get_sysblock tools/lightnvm/sysblk.c /^int nvm_get_sysblock(struct nvm_dev *dev, struct nvm_sb_info *info)$/;" f +nvm_idx frontend/kernel/nvm_cache.c /^ uint64_t nvm_idx = -1;$/;" v nvm_init tools/lightnvm-v4.5.3/core.c /^static int nvm_init(struct nvm_dev *dev)$/;" f file: nvm_init tools/lightnvm/core.c /^static int nvm_init(struct nvm_dev *dev)$/;" f file: nvm_init_mgr tools/lightnvm-v4.5.3/core.c /^struct nvmm_type *nvm_init_mgr(struct nvm_dev *dev)$/;" f @@ -2801,6 +2866,8 @@ nvm_ioctl_get_devices tools/lightnvm-v4.5.3/core.c /^static long nvm_ioctl_get_d nvm_ioctl_get_devices tools/lightnvm/core.c /^static long nvm_ioctl_get_devices(struct file *file, void __user *arg)$/;" f file: nvm_ioctl_info tools/lightnvm-v4.5.3/core.c /^static long nvm_ioctl_info(struct file *file, void __user *arg)$/;" f file: nvm_ioctl_info tools/lightnvm/core.c /^static long nvm_ioctl_info(struct file *file, void __user *arg)$/;" f file: +nvm_lock frontend/kernel/nvm_cache.h /^ bdbm_spinlock_t nvm_lock;$/;" m struct:__anon57 +nvm_lock frontend/kernel/nvm_cache_bak/nvm_cache.h /^ bdbm_spinlock_t nvm_lock;$/;" m struct:__anon59 nvm_mod_exit tools/lightnvm-v4.5.3/core.c /^module_exit(nvm_mod_exit);$/;" v nvm_mod_exit tools/lightnvm-v4.5.3/core.c /^static void __exit nvm_mod_exit(void)$/;" f file: nvm_mod_exit tools/lightnvm/core.c /^module_exit(nvm_mod_exit);$/;" v @@ -2809,6 +2876,7 @@ nvm_mod_init tools/lightnvm-v4.5.3/core.c /^module_init(nvm_mod_init);$/;" v nvm_mod_init tools/lightnvm-v4.5.3/core.c /^static int __init nvm_mod_init(void)$/;" f file: nvm_mod_init tools/lightnvm/core.c /^module_init(nvm_mod_init);$/;" v nvm_mod_init tools/lightnvm/core.c /^static int __init nvm_mod_init(void)$/;" f file: +nvm_page_size include/params.h /^ uint64_t nvm_page_size;$/;" m struct:__anon47 nvm_prepare_new_sysblks tools/lightnvm-v4.5.3/sysblk.c /^static int nvm_prepare_new_sysblks(struct nvm_dev *dev, struct sysblk_scan *s)$/;" f file: nvm_prepare_new_sysblks tools/lightnvm/sysblk.c /^static int nvm_prepare_new_sysblks(struct nvm_dev *dev, struct sysblk_scan *s)$/;" f file: nvm_put_blk tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_put_blk);$/;" v @@ -2857,6 +2925,7 @@ nvm_submit_ppa tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_submit_ppa);$/;" v nvm_submit_ppa tools/lightnvm/core.c /^int nvm_submit_ppa(struct nvm_dev *dev, struct ppa_addr *ppa, int nr_ppas,$/;" f nvm_sysblk_to_cpu tools/lightnvm-v4.5.3/sysblk.c /^void nvm_sysblk_to_cpu(struct nvm_sb_info *info, struct nvm_system_block *sb)$/;" f nvm_sysblk_to_cpu tools/lightnvm/sysblk.c /^void nvm_sysblk_to_cpu(struct nvm_sb_info *info, struct nvm_system_block *sb)$/;" f +nvm_tbl frontend/kernel/nvm_cache.c /^ bdbm_nvm_page_t* nvm_tbl = p->ptr_nvm_tbl;$/;" v nvm_unregister tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_unregister);$/;" v nvm_unregister tools/lightnvm-v4.5.3/core.c /^void nvm_unregister(char *disk_name)$/;" f nvm_unregister tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_unregister);$/;" v @@ -3472,23 +3541,24 @@ opcode tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_l opcode tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_ph_rw file: opcode tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 opcode;$/;" m struct:nvme_nvm_setbbtbl file: open include/bdbm_drv.h /^ uint32_t (*open) (bdbm_drv_info_t* bdi);$/;" m struct:__anon38 -open include/bdbm_drv.h /^ uint32_t (*open) (bdbm_drv_info_t* bdi);$/;" m struct:__anon41 +open include/bdbm_drv.h /^ uint32_t (*open) (bdbm_drv_info_t* bdi);$/;" m struct:__anon42 open_list tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head open_list; \/* In-use open blocks. These are blocks$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::list_head open_list tools/lightnvm/rrpc.h /^ struct list_head open_list; \/* In-use open blocks. These are blocks$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::list_head ops tools/nvme/nvme.h /^ const struct nvme_ctrl_ops *ops;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::nvme_ctrl_ops ops tools/nvmedrv-v4.5.3/nvme.h /^ const struct nvme_ctrl_ops *ops;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::nvme_ctrl_ops -page_main_size include/params.h /^ uint64_t page_main_size;$/;" m struct:__anon46 -page_no ftl/algo/dftl_map.h /^ uint64_t page_no;$/;" m struct:__anon82 +p frontend/kernel/nvm_cache.c /^ bdbm_nvm_dev_private_t* p = _nvm_dev.ptr_private;$/;" v +page_main_size include/params.h /^ uint64_t page_main_size;$/;" m struct:__anon47 +page_no ftl/algo/dftl_map.h /^ uint64_t page_no;$/;" m struct:__anon87 page_no include/bdbm_drv.h /^ uint64_t page_no;$/;" m struct:__anon25 -page_oob_size include/params.h /^ uint64_t page_oob_size;$/;" m struct:__anon46 +page_oob_size include/params.h /^ uint64_t page_oob_size;$/;" m struct:__anon47 page_pool tools/lightnvm-v4.5.3/rrpc.h /^ mempool_t *page_pool;$/;" m struct:rrpc page_pool tools/lightnvm/rrpc.h /^ mempool_t *page_pool;$/;" m struct:rrpc -page_prog_time_us include/params.h /^ uint64_t page_prog_time_us;$/;" m struct:__anon46 -page_read_cnt include/bdbm_drv.h /^ atomic64_t page_read_cnt;$/;" m struct:__anon43 -page_read_time_us include/params.h /^ uint64_t page_read_time_us;$/;" m struct:__anon46 +page_prog_time_us include/params.h /^ uint64_t page_prog_time_us;$/;" m struct:__anon47 +page_read_cnt include/bdbm_drv.h /^ atomic64_t page_read_cnt;$/;" m struct:__anon44 +page_read_time_us include/params.h /^ uint64_t page_read_time_us;$/;" m struct:__anon47 page_size tools/nvme/nvme.h /^ u32 page_size;$/;" m struct:nvme_ctrl page_size tools/nvmedrv-v4.5.3/nvme.h /^ u32 page_size;$/;" m struct:nvme_ctrl -page_write_cnt include/bdbm_drv.h /^ atomic64_t page_write_cnt;$/;" m struct:__anon43 +page_write_cnt include/bdbm_drv.h /^ atomic64_t page_write_cnt;$/;" m struct:__anon44 pairs tools/nvme/lightnvm.c /^ __u8 pairs[NVME_NVM_LP_MLC_PAIRS];$/;" m struct:nvme_nvm_lp_mlc file: pairs tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 pairs[NVME_NVM_LP_MLC_PAIRS];$/;" m struct:nvme_nvm_lp_mlc file: parent tools/lightnvm-v4.5.3/rrpc.h /^ struct nvm_block *parent;$/;" m struct:rrpc_block typeref:struct:rrpc_block::nvm_block @@ -3503,12 +3573,12 @@ pg_len tools/nvme/lightnvm.c /^ __u8 pg_len;$/;" m struct:nvme_nvm_addr_format pg_len tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 pg_len;$/;" m struct:nvme_nvm_addr_format file: pg_offset tools/nvme/lightnvm.c /^ __u8 pg_offset;$/;" m struct:nvme_nvm_addr_format file: pg_offset tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 pg_offset;$/;" m struct:nvme_nvm_addr_format file: -ph_rw tools/nvme/lightnvm.c /^ struct nvme_nvm_ph_rw ph_rw;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_ph_rw file: -ph_rw tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_ph_rw ph_rw;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_ph_rw file: +ph_rw tools/nvme/lightnvm.c /^ struct nvme_nvm_ph_rw ph_rw;$/;" m union:nvme_nvm_command::__anon50 typeref:struct:nvme_nvm_command::__anon50::nvme_nvm_ph_rw file: +ph_rw tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_ph_rw ph_rw;$/;" m union:nvme_nvm_command::__anon53 typeref:struct:nvme_nvm_command::__anon53::nvme_nvm_ph_rw file: phyaddr devices/common/dev_stub.h /^ bdbm_phyaddr_t phyaddr;$/;" m struct:__anon10 -phyaddr ftl/algo/dftl_map.h /^ bdbm_phyaddr_t phyaddr; \/* the physical location where mapping entries are stored *\/$/;" m struct:__anon84 -phyaddr ftl/algo/dftl_map.h /^ mapblk_phyaddr_t phyaddr; \/* physical location *\/$/;" m struct:__anon83 -phyaddr ftl/algo/page_ftl.c /^ bdbm_phyaddr_t phyaddr; \/* physical location *\/$/;" m struct:__anon87 file: +phyaddr ftl/algo/dftl_map.h /^ bdbm_phyaddr_t phyaddr; \/* the physical location where mapping entries are stored *\/$/;" m struct:__anon89 +phyaddr ftl/algo/dftl_map.h /^ mapblk_phyaddr_t phyaddr; \/* physical location *\/$/;" m struct:__anon88 +phyaddr ftl/algo/page_ftl.c /^ bdbm_phyaddr_t phyaddr; \/* physical location *\/$/;" m struct:__anon92 file: phyaddr include/bdbm_drv.h /^ bdbm_phyaddr_t phyaddr;$/;" m struct:__anon31 phyaddr_dst include/bdbm_drv.h /^ bdbm_phyaddr_t phyaddr_dst;$/;" m struct:__anon31 phyaddr_src include/bdbm_drv.h /^ bdbm_phyaddr_t phyaddr_src;$/;" m struct:__anon31 @@ -3551,7 +3621,7 @@ pmu_inc_util_w ftl/pmu.c /^void pmu_inc_util_w (bdbm_drv_info_t* bdi, uint64_t i pmu_inc_util_w ftl/pmu.c /^void pmu_inc_util_w (bdbm_drv_info_t* bdi, uint64_t id)$/;" f pmu_inc_write ftl/pmu.c /^void pmu_inc_write (bdbm_drv_info_t* bdi) $/;" f pmu_inc_write ftl/pmu.c /^void pmu_inc_write (bdbm_drv_info_t* bdi) {}$/;" f -pmu_lock include/bdbm_drv.h /^ bdbm_spinlock_t pmu_lock;$/;" m struct:__anon43 +pmu_lock include/bdbm_drv.h /^ bdbm_spinlock_t pmu_lock;$/;" m struct:__anon44 pmu_update_gc_q ftl/pmu.c /^void pmu_update_gc_q (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw)$/;" f pmu_update_gc_sw ftl/pmu.c /^void pmu_update_gc_sw (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) $/;" f pmu_update_gc_sw ftl/pmu.c /^void pmu_update_gc_sw (bdbm_drv_info_t* bdi, bdbm_stopwatch_t* sw) {}$/;" f @@ -3584,16 +3654,16 @@ pmu_update_w_tot ftl/pmu.c /^void pmu_update_w_tot (bdbm_drv_info_t* bdi, bdbm_s poffset tools/lightnvm-v4.5.3/rrpc.h /^ u64 poffset; \/* physical page offset *\/$/;" m struct:rrpc poffset tools/lightnvm/rrpc.h /^ u64 poffset; \/* physical page offset *\/$/;" m struct:rrpc pollwq devices/common/dev_stub.c /^ wait_queue_head_t pollwq;$/;" m struct:__anon9 file: -pollwq frontend/hybrid/blkio_proxy.c /^ wait_queue_head_t pollwq;$/;" m struct:__anon61 file: -pool_item_t frontend/hybrid/blkio_proxy_reqs_pool.c /^} pool_item_t;$/;" t typeref:struct:__anon59 file: -pool_size ftl/hlm_reqs_pool.h /^ int32_t pool_size; \/* # of items *\/$/;" m struct:__anon66 +pollwq frontend/hybrid/blkio_proxy.c /^ wait_queue_head_t pollwq;$/;" m struct:__anon66 file: +pool_item_t frontend/hybrid/blkio_proxy_reqs_pool.c /^} pool_item_t;$/;" t typeref:struct:__anon64 file: +pool_size ftl/hlm_reqs_pool.h /^ int32_t pool_size; \/* # of items *\/$/;" m struct:__anon71 ppaf tools/nvme/lightnvm.c /^ struct nvme_nvm_addr_format ppaf;$/;" m struct:nvme_nvm_id typeref:struct:nvme_nvm_id::nvme_nvm_addr_format file: ppaf tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_addr_format ppaf;$/;" m struct:nvme_nvm_id typeref:struct:nvme_nvm_id::nvme_nvm_addr_format file: ppas tools/lightnvm-v4.5.3/sysblk.c /^ struct ppa_addr ppas[MAX_SYSBLKS * MAX_BLKS_PR_SYSBLK];\/* all sysblks *\/$/;" m struct:sysblk_scan typeref:struct:sysblk_scan::ppa_addr file: ppas tools/lightnvm/sysblk.c /^ struct ppa_addr ppas[MAX_SYSBLKS * MAX_BLKS_PR_SYSBLK];\/* all sysblks *\/$/;" m struct:sysblk_scan typeref:struct:sysblk_scan::ppa_addr file: pprev common/3rd/ulist.h /^ struct hlist_node *next, **pprev;$/;" m struct:hlist_node typeref:struct:hlist_node:: -prepare_mapblk_eviction include/bdbm_drv.h /^ bdbm_llm_req_t* (*prepare_mapblk_eviction) (bdbm_drv_info_t* bdi);$/;" m struct:__anon42 -prepare_mapblk_load include/bdbm_drv.h /^ bdbm_llm_req_t* (*prepare_mapblk_load) (bdbm_drv_info_t* bdi, uint64_t lpa);$/;" m struct:__anon42 +prepare_mapblk_eviction include/bdbm_drv.h /^ bdbm_llm_req_t* (*prepare_mapblk_eviction) (bdbm_drv_info_t* bdi);$/;" m struct:__anon43 +prepare_mapblk_load include/bdbm_drv.h /^ bdbm_llm_req_t* (*prepare_mapblk_load) (bdbm_drv_info_t* bdi, uint64_t lpa);$/;" m struct:__anon43 prev common/3rd/ulist.h /^ struct list_head *next, *prev;$/;" m struct:list_head typeref:struct:list_head:: prev common/3rd/uthash.h /^ void *prev; \/* prev element in app order *\/$/;" m struct:UT_hash_handle prio tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head prio;$/;" m struct:rrpc_block typeref:struct:rrpc_block::list_head @@ -3601,7 +3671,7 @@ prio tools/lightnvm/rrpc.h /^ struct list_head prio;$/;" m struct:rrpc_block typ prio_list tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head prio_list; \/* Blocks that may be GC'ed *\/$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::list_head prio_list tools/lightnvm/rrpc.h /^ struct list_head prio_list; \/* Blocks that may be GC'ed *\/$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::list_head private_data include/bdbm_drv.h /^ void* private_data;$/;" m struct:_bdbm_drv_info_t -probe include/bdbm_drv.h /^ uint32_t (*probe) (bdbm_drv_info_t* bdi, bdbm_device_params_t* param);$/;" m struct:__anon41 +probe include/bdbm_drv.h /^ uint32_t (*probe) (bdbm_drv_info_t* bdi, bdbm_device_params_t* param);$/;" m struct:__anon42 problem_seg_no ftl/algo/block_ftl.c /^static uint64_t problem_seg_no = -1;$/;" v file: prot_info tools/nvme/scsi.c /^ u8 prot_info;$/;" m struct:nvme_trans_io_cdb file: prot_info tools/nvmedrv-v4.5.3/scsi.c /^ u8 prot_info;$/;" m struct:nvme_trans_io_cdb file: @@ -3637,9 +3707,9 @@ prp_page_pool tools/nvme/pci.c /^ struct dma_pool *prp_page_pool;$/;" m struct:n prp_page_pool tools/nvmedrv-v4.5.3/pci.c /^ struct dma_pool *prp_page_pool;$/;" m struct:nvme_dev typeref:struct:nvme_dev::dma_pool file: prp_small_pool tools/nvme/pci.c /^ struct dma_pool *prp_small_pool;$/;" m struct:nvme_dev typeref:struct:nvme_dev::dma_pool file: prp_small_pool tools/nvmedrv-v4.5.3/pci.c /^ struct dma_pool *prp_small_pool;$/;" m struct:nvme_dev typeref:struct:nvme_dev::dma_pool file: -ps frontend/user/dev_proxy.c /^ uint8_t* ps; \/* punit status *\/$/;" m struct:__anon54 file: -pst ftl/algo/abm.h /^ babm_abm_subpage_t* pst; \/* a page status table; used when the FTL requires *\/$/;" m struct:__anon79 -pst ftl/algo/block_ftl.c /^ uint8_t* pst; \/* status of pages in a block *\/$/;" m struct:__anon77 file: +ps frontend/user/dev_proxy.c /^ uint8_t* ps; \/* punit status *\/$/;" m struct:__anon55 file: +pst ftl/algo/abm.h /^ babm_abm_subpage_t* pst; \/* a page status table; used when the FTL requires *\/$/;" m struct:__anon84 +pst ftl/algo/block_ftl.c /^ uint8_t* pst; \/* status of pages in a block *\/$/;" m struct:__anon82 file: ptr_dm_inf include/bdbm_drv.h /^ bdbm_dm_inf_t* ptr_dm_inf;$/;" m struct:_bdbm_drv_info_t ptr_ftl_inf ftl/hlm_buf.c /^ bdbm_ftl_inf_t* ptr_ftl_inf; \/* for hlm_nobuff (it must be on top of this structure) *\/$/;" m struct:bdbm_hlm_buf_private file: ptr_ftl_inf include/bdbm_drv.h /^ bdbm_ftl_inf_t* ptr_ftl_inf;$/;" m struct:_bdbm_drv_info_t @@ -3647,21 +3717,28 @@ ptr_hlm_inf include/bdbm_drv.h /^ bdbm_hlm_inf_t* ptr_hlm_inf;$/;" m struct:_bdb ptr_hlm_req include/bdbm_drv.h /^ void* ptr_hlm_req;$/;" m struct:__anon31 ptr_host_inf include/bdbm_drv.h /^ bdbm_host_inf_t* ptr_host_inf; $/;" m struct:_bdbm_drv_info_t ptr_llm_inf include/bdbm_drv.h /^ bdbm_llm_inf_t* ptr_llm_inf;$/;" m struct:_bdbm_drv_info_t -ptr_mapping_table ftl/algo/page_ftl.c /^ bdbm_page_mapping_entry_t* ptr_mapping_table;$/;" m struct:__anon88 file: +ptr_mapping_table ftl/algo/page_ftl.c /^ bdbm_page_mapping_entry_t* ptr_mapping_table;$/;" m struct:__anon93 file: +ptr_nvm_inf include/bdbm_drv.h /^ bdbm_nvm_inf_t* ptr_nvm_inf;$/;" m struct:_bdbm_drv_info_t +ptr_nvm_tbl frontend/kernel/nvm_cache.h /^ bdbm_nvm_page_t* ptr_nvm_tbl;$/;" m struct:__anon57 +ptr_nvm_tbl frontend/kernel/nvm_cache_bak/nvm_cache.h /^ bdbm_nvm_block_t* ptr_nvm_tbl;$/;" m struct:__anon59 +ptr_nvmram frontend/kernel/nvm_cache.h /^ void* ptr_nvmram; \/* DRAM memory for nvm *\/$/;" m struct:__anon57 +ptr_nvmram frontend/kernel/nvm_cache_bak/nvm_cache.h /^ void* ptr_nvmram; \/* DRAM memory for nvm *\/$/;" m struct:__anon59 +ptr_nvmram_data frontend/kernel/nvm_cache_bak/nvm_cache.h /^ void* ptr_nvmram_data;$/;" m struct:__anon58 ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon38 ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon39 ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon40 ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon41 ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon42 +ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon43 ptr_punits devices/ramdrive/dev_ramssd.h /^ dev_ramssd_punit_t* ptr_punits; \/* parallel units *\/$/;" m struct:__anon13 ptr_qitem include/bdbm_drv.h /^ void* ptr_qitem;$/;" m struct:__anon31 ptr_req devices/ramdrive/dev_ramssd.h /^ void* ptr_req;$/;" m struct:__anon11 -ptr_req ftl/queue/prior_queue.h /^ void* ptr_req;$/;" m struct:__anon70 -ptr_req ftl/queue/queue.h /^ void* ptr_req;$/;" m struct:__anon68 -ptr_req ftl/queue/rd_prior_queue.h /^ void* ptr_req;$/;" m struct:__anon74 +ptr_req ftl/queue/prior_queue.h /^ void* ptr_req;$/;" m struct:__anon75 +ptr_req ftl/queue/queue.h /^ void* ptr_req;$/;" m struct:__anon73 +ptr_req ftl/queue/rd_prior_queue.h /^ void* ptr_req;$/;" m struct:__anon79 ptr_ssdram devices/ramdrive/dev_ramssd.h /^ void* ptr_ssdram; \/* DRAM memory for SSD *\/$/;" m struct:__anon13 punit devices/common/dev_stub.c /^ uint64_t punit;$/;" m struct:__anon9 file: -punit frontend/user/dev_proxy.c /^ int punit;$/;" m struct:__anon54 file: +punit frontend/user/dev_proxy.c /^ int punit;$/;" m struct:__anon55 file: punit_busy devices/common/dev_stub.c /^ uint8_t* punit_busy;$/;" m struct:__anon9 file: punit_done devices/common/dev_stub.c /^ uint8_t* punit_done; \/* punit_done is updated only in dm_fops_poll while poll () is calling *\/$/;" m struct:__anon9 file: punit_id include/bdbm_drv.h /^ uint64_t punit_id;$/;" m struct:__anon25 @@ -3669,14 +3746,14 @@ punit_locks ftl/llm_mq.c /^ bdbm_sema_t* punit_locks;$/;" m struct:bdbm_llm_mq_p punit_locks ftl/llm_noq_lock.c /^ bdbm_sema_t* punit_locks;$/;" m struct:bdbm_llm_noq_lock_private file: punit_locks ftl/llm_rmq.c /^ bdbm_sema_t* punit_locks;$/;" m struct:bdbm_llm_rmq_private file: punit_main_pages devices/common/dev_stub.c /^ uint8_t** punit_main_pages;$/;" m struct:__anon9 file: -punit_main_pages frontend/user/dev_proxy.c /^ uint8_t** punit_main_pages;$/;" m struct:__anon54 file: +punit_main_pages frontend/user/dev_proxy.c /^ uint8_t** punit_main_pages;$/;" m struct:__anon55 file: punit_oob_pages devices/common/dev_stub.c /^ uint8_t** punit_oob_pages;$/;" m struct:__anon9 file: -punit_oob_pages frontend/user/dev_proxy.c /^ uint8_t** punit_oob_pages;$/;" m struct:__anon54 file: +punit_oob_pages frontend/user/dev_proxy.c /^ uint8_t** punit_oob_pages;$/;" m struct:__anon55 file: punit_status examples/raw-flash/raw-flash.h /^ atomic_t* punit_status;$/;" m struct:__anon20 punit_status examples/stub_test/main.c /^ uint8_t* punit_status;$/;" m struct:__anon23 file: q devices/dumbssd/dev_hynix_nvme.h /^ struct request_queue *q;$/;" m struct:__anon16 typeref:struct:__anon16::request_queue q ftl/hlm_buf.c /^ bdbm_queue_t* q;$/;" m struct:bdbm_hlm_buf_private file: -q ftl/hlm_dftl.c /^ bdbm_queue_t* q;$/;" m struct:__anon89 file: +q ftl/hlm_dftl.c /^ bdbm_queue_t* q;$/;" m struct:__anon94 file: q ftl/llm_mq.c /^ bdbm_prior_queue_t* q;$/;" m struct:bdbm_llm_mq_private file: q ftl/llm_rmq.c /^ bdbm_rd_prior_queue_t* q;$/;" m struct:bdbm_llm_rmq_private file: q_db tools/nvme/pci.c /^ u32 __iomem *q_db;$/;" m struct:nvme_queue file: @@ -3689,23 +3766,24 @@ q_dmadev tools/nvme/pci.c /^ struct device *q_dmadev;$/;" m struct:nvme_queue ty q_dmadev tools/nvmedrv-v4.5.3/pci.c /^ struct device *q_dmadev;$/;" m struct:nvme_queue typeref:struct:nvme_queue::device file: q_lock tools/nvme/pci.c /^ spinlock_t q_lock;$/;" m struct:nvme_queue file: q_lock tools/nvmedrv-v4.5.3/pci.c /^ spinlock_t q_lock;$/;" m struct:nvme_queue file: -qic ftl/queue/prior_queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon72 -qic ftl/queue/queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon69 -qic ftl/queue/rd_prior_queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon76 +qic ftl/queue/prior_queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon77 +qic ftl/queue/queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon74 +qic ftl/queue/rd_prior_queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon81 qid tools/nvme/pci.c /^ u16 qid;$/;" m struct:nvme_queue file: qid tools/nvmedrv-v4.5.3/pci.c /^ u16 qid;$/;" m struct:nvme_queue file: -qlh ftl/queue/prior_queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon72 typeref:struct:__anon72::list_head -qlh ftl/queue/queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon69 typeref:struct:__anon69::list_head -qlh ftl/queue/rd_prior_queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon76 typeref:struct:__anon76::list_head +qlh ftl/queue/prior_queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon77 typeref:struct:__anon77::list_head +qlh ftl/queue/queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon74 typeref:struct:__anon74::list_head +qlh ftl/queue/rd_prior_queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon81 typeref:struct:__anon81::list_head queue devices/dumbssd/dev_hynix_nvme.h /^ struct request_queue *queue;$/;" m struct:__anon16 typeref:struct:__anon16::request_queue queue frontend/kernel/blkdev.c /^ struct request_queue *queue;$/;" m struct:bdbm_device_t typeref:struct:bdbm_device_t::request_queue file: +queue frontend/kernel/blkdev_bak.c /^ struct request_queue *queue;$/;" m struct:bdbm_device_t typeref:struct:bdbm_device_t::request_queue file: queue tools/nvme/nvme.h /^ struct request_queue *queue;$/;" m struct:nvme_ns typeref:struct:nvme_ns::request_queue queue tools/nvmedrv-v4.5.3/nvme.h /^ struct request_queue *queue;$/;" m struct:nvme_ns typeref:struct:nvme_ns::request_queue queue_count tools/nvme/pci.c /^ unsigned queue_count;$/;" m struct:nvme_dev file: queue_count tools/nvmedrv-v4.5.3/pci.c /^ unsigned queue_count;$/;" m struct:nvme_dev file: queue_request_irq tools/nvme/pci.c /^static int queue_request_irq(struct nvme_dev *dev, struct nvme_queue *nvmeq,$/;" f file: queue_request_irq tools/nvmedrv-v4.5.3/pci.c /^static int queue_request_irq(struct nvme_dev *dev, struct nvme_queue *nvmeq,$/;" f file: -queueing_policy include/params.h /^ uint32_t queueing_policy;$/;" m struct:__anon45 +queueing_policy include/params.h /^ uint32_t queueing_policy;$/;" m struct:__anon46 queues tools/nvme/pci.c /^ struct nvme_queue **queues;$/;" m struct:nvme_dev typeref:struct:nvme_dev::nvme_queue file: queues tools/nvmedrv-v4.5.3/pci.c /^ struct nvme_queue **queues;$/;" m struct:nvme_dev typeref:struct:nvme_dev::nvme_queue file: quirks tools/nvme/nvme.h /^ unsigned long quirks;$/;" m struct:nvme_ctrl @@ -3723,9 +3801,9 @@ rblk tools/lightnvm/rrpc.h /^ struct rrpc_block *rblk;$/;" m struct:rrpc_block_g rblock_max_invalid tools/lightnvm-v4.5.3/rrpc.c /^static struct rrpc_block *rblock_max_invalid(struct rrpc_block *ra,$/;" f file: rblock_max_invalid tools/lightnvm/rrpc.c /^static struct rrpc_block *rblock_max_invalid(struct rrpc_block *ra,$/;" f file: rbuf devices/bluedbm/dm_bluedbm.c /^ uint8_t** rbuf;$/;" m struct:dm_bluedbm_private file: -rd_prior_iotype_t ftl/queue/rd_prior_queue.h /^} rd_prior_iotype_t;$/;" t typeref:enum:__anon73 +rd_prior_iotype_t ftl/queue/rd_prior_queue.h /^} rd_prior_iotype_t;$/;" t typeref:enum:__anon78 ref_cnt devices/common/dev_stub.c /^ uint32_t ref_cnt;$/;" m struct:__anon9 file: -ref_cnt frontend/hybrid/blkio_proxy.c /^ atomic_t ref_cnt; \/* # of the user-level FTLs that are linked to the kernel *\/$/;" m struct:__anon61 file: +ref_cnt frontend/hybrid/blkio_proxy.c /^ atomic_t ref_cnt; \/* # of the user-level FTLs that are linked to the kernel *\/$/;" m struct:__anon66 file: reg_read32 tools/nvme/nvme.h /^ int (*reg_read32)(struct nvme_ctrl *ctrl, u32 off, u32 *val);$/;" m struct:nvme_ctrl_ops reg_read32 tools/nvmedrv-v4.5.3/nvme.h /^ int (*reg_read32)(struct nvme_ctrl *ctrl, u32 off, u32 *val);$/;" m struct:nvme_ctrl_ops reg_read64 tools/nvme/nvme.h /^ int (*reg_read64)(struct nvme_ctrl *ctrl, u32 off, u64 *val);$/;" m struct:nvme_ctrl_ops @@ -3746,7 +3824,7 @@ req_type include/bdbm_drv.h /^ uint32_t req_type;$/;" m struct:__anon37 reqs examples/stub_test/main.c /^bdbm_llm_req_t** reqs = NULL;$/;" v reqs tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head reqs;$/;" m struct:rrpc_inflight typeref:struct:rrpc_inflight::list_head reqs tools/lightnvm/rrpc.h /^ struct list_head reqs;$/;" m struct:rrpc_inflight typeref:struct:rrpc_inflight::list_head -reqs_pool frontend/hybrid/blkio_proxy.c /^ bdbm_proxy_reqs_pool_t* reqs_pool;$/;" m struct:__anon61 file: +reqs_pool frontend/hybrid/blkio_proxy.c /^ bdbm_proxy_reqs_pool_t* reqs_pool;$/;" m struct:__anon66 file: request_intersects tools/lightnvm-v4.5.3/rrpc.h /^static inline int request_intersects(struct rrpc_inflight_rq *r,$/;" f request_intersects tools/lightnvm/rrpc.h /^static inline int request_intersects(struct rrpc_inflight_rq *r,$/;" f requeue_bios tools/lightnvm-v4.5.3/rrpc.h /^ struct bio_list requeue_bios;$/;" m struct:rrpc typeref:struct:rrpc::bio_list @@ -3796,8 +3874,8 @@ risa_dev_ramdrive-y devices/ramdrive/Makefile /^risa_dev_ramdrive-y := \\$/;" m risa_dev_ramdrive_timing-y devices/ramdrive_timing/Makefile /^risa_dev_ramdrive_timing-y := \\$/;" m rlun tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_lun *rlun;$/;" m struct:rrpc_block typeref:struct:rrpc_block::rrpc_lun rlun tools/lightnvm/rrpc.h /^ struct rrpc_lun *rlun;$/;" m struct:rrpc_block typeref:struct:rrpc_block::rrpc_lun -rmw_read_cnt include/bdbm_drv.h /^ atomic64_t rmw_read_cnt;$/;" m struct:__anon43 -rmw_write_cnt include/bdbm_drv.h /^ atomic64_t rmw_write_cnt;$/;" m struct:__anon43 +rmw_read_cnt include/bdbm_drv.h /^ atomic64_t rmw_read_cnt;$/;" m struct:__anon44 +rmw_write_cnt include/bdbm_drv.h /^ atomic64_t rmw_write_cnt;$/;" m struct:__anon44 robusta_drv-y Makefile /^robusta_drv-y := \\$/;" m robusta_drv-y frontend/kernel/Makefile /^robusta_drv-y := \\$/;" m row tools/lightnvm-v4.5.3/sysblk.c /^ int row;$/;" m struct:sysblk_scan file: @@ -3986,8 +4064,8 @@ run_sync_test examples/raw-flash/kmain.c /^static void run_sync_test (bdbm_devic rvsd1 tools/nvme/lightnvm.c /^ __le32 rvsd1;$/;" m struct:nvme_nvm_bb_tbl file: rvsd1 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 rvsd1;$/;" m struct:nvme_nvm_bb_tbl file: rw devices/dumbssd/dev_hynix_nvme.h /^ int rw;$/;" m struct:__anon17 -rw_pg_ofs ftl/algo/block_ftl.c /^ int64_t rw_pg_ofs; \/* recently-written page offset *\/$/;" m struct:__anon77 file: -scan_badblocks include/bdbm_drv.h /^ uint32_t (*scan_badblocks) (bdbm_drv_info_t* bdi);$/;" m struct:__anon42 +rw_pg_ofs ftl/algo/block_ftl.c /^ int64_t rw_pg_ofs; \/* recently-written page offset *\/$/;" m struct:__anon82 file: +scan_badblocks include/bdbm_drv.h /^ uint32_t (*scan_badblocks) (bdbm_drv_info_t* bdi);$/;" m struct:__anon43 scan_ppa_idx tools/lightnvm-v4.5.3/sysblk.c /^static inline int scan_ppa_idx(int row, int blkid)$/;" f file: scan_ppa_idx tools/lightnvm/sysblk.c /^static inline int scan_ppa_idx(int row, int blkid)$/;" f file: scan_work tools/nvme/pci.c /^ struct work_struct scan_work;$/;" m struct:nvme_dev typeref:struct:nvme_dev::work_struct file: @@ -4002,16 +4080,17 @@ sect_len tools/nvme/lightnvm.c /^ __u8 sect_len;$/;" m struct:nvme_nvm_addr_fo sect_len tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 sect_len;$/;" m struct:nvme_nvm_addr_format file: sect_offset tools/nvme/lightnvm.c /^ __u8 sect_offset;$/;" m struct:nvme_nvm_addr_format file: sect_offset tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 sect_offset;$/;" m struct:nvme_nvm_addr_format file: -seg_buf ftl/hlm_rsd.c /^ segment_buf_t* seg_buf;$/;" m struct:__anon91 file: -seg_no ftl/hlm_rsd.c /^ uint32_t seg_no;$/;" m struct:__anon90 file: -segment_buf_t ftl/hlm_rsd.c /^} segment_buf_t;$/;" t typeref:struct:__anon90 file: -sem frontend/hybrid/blkio_proxy.c /^ struct semaphore sem;$/;" m struct:__anon61 typeref:struct:__anon61::semaphore file: +seg_buf ftl/hlm_rsd.c /^ segment_buf_t* seg_buf;$/;" m struct:__anon96 file: +seg_no ftl/hlm_rsd.c /^ uint32_t seg_no;$/;" m struct:__anon95 file: +segment_buf_t ftl/hlm_rsd.c /^} segment_buf_t;$/;" t typeref:struct:__anon95 file: +sem frontend/hybrid/blkio_proxy.c /^ struct semaphore sem;$/;" m struct:__anon66 typeref:struct:__anon66::semaphore file: serial tools/nvme/core.c /^nvme_show_function(serial);$/;" v serial tools/nvme/nvme.h /^ char serial[20];$/;" m struct:nvme_ctrl serial tools/nvmedrv-v4.5.3/core.c /^nvme_show_function(serial);$/;" v serial tools/nvmedrv-v4.5.3/nvme.h /^ char serial[20];$/;" m struct:nvme_ctrl -set_bb tools/nvme/lightnvm.c /^ struct nvme_nvm_setbbtbl set_bb;$/;" m union:nvme_nvm_command::__anon49 typeref:struct:nvme_nvm_command::__anon49::nvme_nvm_setbbtbl file: -set_bb tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_setbbtbl set_bb;$/;" m union:nvme_nvm_command::__anon52 typeref:struct:nvme_nvm_command::__anon52::nvme_nvm_setbbtbl file: +serviced_by_nvm include/bdbm_drv.h /^ uint8_t serviced_by_nvm;$/;" m struct:__anon31 +set_bb tools/nvme/lightnvm.c /^ struct nvme_nvm_setbbtbl set_bb;$/;" m union:nvme_nvm_command::__anon50 typeref:struct:nvme_nvm_command::__anon50::nvme_nvm_setbbtbl file: +set_bb tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_setbbtbl set_bb;$/;" m union:nvme_nvm_command::__anon53 typeref:struct:nvme_nvm_command::__anon53::nvme_nvm_setbbtbl file: sg tools/nvme/pci.c /^ struct scatterlist *sg;$/;" m struct:nvme_iod typeref:struct:nvme_iod::scatterlist file: sg tools/nvmedrv-v4.5.3/pci.c /^ struct scatterlist *sg;$/;" m struct:nvme_iod typeref:struct:nvme_iod::scatterlist file: sg_version_num tools/nvme/scsi.c /^static int sg_version_num = 30534; \/* 2 digits for each component *\/$/;" v file: @@ -4031,10 +4110,10 @@ slba tools/nvme/scsi.c /^ __be64 slba;$/;" m struct:scsi_unmap_blk_desc file: slba tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 slba;$/;" m struct:nvme_nvm_hb_rw file: slba tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 slba;$/;" m struct:nvme_nvm_l2ptbl file: slba tools/nvmedrv-v4.5.3/scsi.c /^ __be64 slba;$/;" m struct:scsi_unmap_blk_desc file: -snapshot include/params.h /^ uint32_t snapshot; \/* 0: disable (default), 1: enable *\/$/;" m struct:__anon45 +snapshot include/params.h /^ uint32_t snapshot; \/* 0: disable (default), 1: enable *\/$/;" m struct:__anon46 sos tools/nvme/lightnvm.c /^ __le16 sos;$/;" m struct:nvme_nvm_id_group file: sos tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 sos;$/;" m struct:nvme_nvm_id_group file: -sp_off ftl/algo/page_ftl.c /^ uint8_t sp_off;$/;" m struct:__anon87 file: +sp_off ftl/algo/page_ftl.c /^ uint8_t sp_off;$/;" m struct:__anon92 file: spba tools/nvme/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_erase_blk file: spba tools/nvme/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_getbbtbl file: spba tools/nvme/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_hb_rw file: @@ -4056,20 +4135,22 @@ sq_head tools/nvmedrv-v4.5.3/pci.c /^ u16 sq_head;$/;" m struct:nvme_queue file: sq_tail tools/nvme/pci.c /^ u16 sq_tail;$/;" m struct:nvme_queue file: sq_tail tools/nvmedrv-v4.5.3/pci.c /^ u16 sq_tail;$/;" m struct:nvme_queue file: start common/utils/utime.h /^ ktime_t start;$/;" m struct:__anon3 -status ftl/algo/abm.h /^ uint8_t status; \/* ABM_BLK_STATUS *\/$/;" m struct:__anon79 -status ftl/algo/block_ftl.c /^ uint8_t status; \/* BDBM_BFTL_BLOCK_STATUS *\/$/;" m struct:__anon77 file: -status ftl/algo/dftl_map.h /^ dir_stat status;$/;" m struct:__anon84 -status ftl/algo/dftl_map.h /^ uint8_t status;$/;" m struct:__anon83 -status ftl/algo/page_ftl.c /^ uint8_t status; \/* BDBM_PFTL_PAGE_STATUS *\/$/;" m struct:__anon87 file: +status frontend/kernel/nvm_cache.h /^ uint8_t status;$/;" m struct:__anon56 +status frontend/kernel/nvm_cache_bak/nvm_cache.h /^ uint8_t status;$/;" m struct:__anon58 +status ftl/algo/abm.h /^ uint8_t status; \/* ABM_BLK_STATUS *\/$/;" m struct:__anon84 +status ftl/algo/block_ftl.c /^ uint8_t status; \/* BDBM_BFTL_BLOCK_STATUS *\/$/;" m struct:__anon82 file: +status ftl/algo/dftl_map.h /^ dir_stat status;$/;" m struct:__anon89 +status ftl/algo/dftl_map.h /^ uint8_t status;$/;" m struct:__anon88 +status ftl/algo/page_ftl.c /^ uint8_t status; \/* BDBM_PFTL_PAGE_STATUS *\/$/;" m struct:__anon92 file: stop examples/stub_test/main.c /^ int stop;$/;" m struct:__anon23 file: -stop frontend/hybrid/blkio_stub.c /^ int stop;$/;" m struct:__anon64 file: -stop frontend/user/dev_proxy.c /^ int stop;$/;" m struct:__anon54 file: -store include/bdbm_drv.h /^ uint32_t (*store) (bdbm_drv_info_t* bdi, const char* fn);$/;" m struct:__anon41 +stop frontend/hybrid/blkio_stub.c /^ int stop;$/;" m struct:__anon69 file: +stop frontend/user/dev_proxy.c /^ int stop;$/;" m struct:__anon55 file: store include/bdbm_drv.h /^ uint32_t (*store) (bdbm_drv_info_t* bdi, const char* fn);$/;" m struct:__anon42 +store include/bdbm_drv.h /^ uint32_t (*store) (bdbm_drv_info_t* bdi, const char* fn);$/;" m struct:__anon43 str ftl/pmu.c /^char str[1024];$/;" v stripe_size tools/nvme/nvme.h /^ u32 stripe_size;$/;" m struct:nvme_ctrl stripe_size tools/nvmedrv-v4.5.3/nvme.h /^ u32 stripe_size;$/;" m struct:nvme_ctrl -stt frontend/hybrid/blkio_proxy_ioctl.h /^ bdbm_proxy_req_status_t stt;$/;" m struct:__anon63 +stt frontend/hybrid/blkio_proxy_ioctl.h /^ bdbm_proxy_req_status_t stt;$/;" m struct:__anon68 submit_io_done devices/dumbssd/dev_hynix_nvme.c /^static void submit_io_done (struct request *rq, int error)$/;" f file: subsystem tools/nvme/nvme.h /^ bool subsystem;$/;" m struct:nvme_ctrl subsystem tools/nvme/pci.c /^ bool subsystem;$/;" m struct:nvme_dev file: @@ -4086,8 +4167,8 @@ sysblk_get_host_blks tools/lightnvm/sysblk.c /^static int sysblk_get_host_blks(s sysblk_scan tools/lightnvm-v4.5.3/sysblk.c /^struct sysblk_scan {$/;" s file: sysblk_scan tools/lightnvm/sysblk.c /^struct sysblk_scan {$/;" s file: sz common/3rd/utarray.h /^ size_t sz;$/;" m struct:__anon4 -tag ftl/queue/prior_queue.h /^ uint64_t tag;$/;" m struct:__anon70 -tag ftl/queue/rd_prior_queue.h /^ uint64_t tag;$/;" m struct:__anon74 +tag ftl/queue/prior_queue.h /^ uint64_t tag;$/;" m struct:__anon75 +tag ftl/queue/rd_prior_queue.h /^ uint64_t tag;$/;" m struct:__anon79 tags tools/nvme/pci.c /^ struct blk_mq_tags **tags;$/;" m struct:nvme_queue typeref:struct:nvme_queue::blk_mq_tags file: tags tools/nvmedrv-v4.5.3/pci.c /^ struct blk_mq_tags **tags;$/;" m struct:nvme_queue typeref:struct:nvme_queue::blk_mq_tags file: tagset tools/nvme/nvme.h /^ struct blk_mq_tag_set *tagset;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::blk_mq_tag_set @@ -4097,7 +4178,9 @@ tagset tools/nvmedrv-v4.5.3/pci.c /^ struct blk_mq_tag_set tagset;$/;" m struct: tail common/3rd/uthash.h /^ struct UT_hash_handle *tail; \/* tail hh in app order, for fast append *\/$/;" m struct:UT_hash_table typeref:struct:UT_hash_table::UT_hash_handle target_elapsed_time_us devices/ramdrive/dev_ramssd.h /^ int64_t target_elapsed_time_us;$/;" m struct:__anon11 task frontend/kernel/blkdev.c /^static struct task_struct *task = NULL;$/;" v typeref:struct:task_struct file: +task frontend/kernel/blkdev_bak.c /^static struct task_struct *task = NULL;$/;" v typeref:struct:task_struct file: task_completion frontend/kernel/blkdev.c /^DECLARE_COMPLETION (task_completion);$/;" v +task_completion frontend/kernel/blkdev_bak.c /^DECLARE_COMPLETION (task_completion);$/;" v tbem tools/nvme/lightnvm.c /^ __le32 tbem;$/;" m struct:nvme_nvm_id_group file: tbem tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 tbem;$/;" m struct:nvme_nvm_id_group file: tbet tools/nvme/lightnvm.c /^ __le32 tbet;$/;" m struct:nvme_nvm_id_group file: @@ -4111,7 +4194,7 @@ tdresv tools/nvme/lightnvm.c /^ __le32 tdresv;$/;" m struct:nvme_nvm_bb_tbl file tdresv tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 tdresv;$/;" m struct:nvme_nvm_bb_tbl file: temp_main examples/raw-flash/kmain.c /^uint8_t* temp_main = NULL;$/;" v temp_oob examples/raw-flash/kmain.c /^uint8_t* temp_oob = NULL;$/;" v -test frontend/df-user/dev_proxy.c /^ int test;$/;" m struct:__anon57 file: +test frontend/df-user/dev_proxy.c /^ int test;$/;" m struct:__anon62 file: test_erase tools/dumbssd-format/dumbssd-format.c /^void test_erase (int32_t dev_h, int die, int block)$/;" f test_erase tools/dumbssd-test/dumbssd-test.c /^void test_erase (int32_t dev_h, int die, int block)$/;" f test_read tools/dumbssd-format/dumbssd-format.c /^void test_read (int32_t dev_h, int die, int block, int wu)$/;" f @@ -4130,23 +4213,23 @@ thread_done common/utils/uthread.h /^ bdbm_mutex_t thread_done;$/;" m struct:__a thread_sleep common/utils/uthread.h /^ bdbm_mutex_t thread_sleep;$/;" m struct:__anon2 thresv tools/nvme/lightnvm.c /^ __le32 thresv;$/;" m struct:nvme_nvm_bb_tbl file: thresv tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 thresv;$/;" m struct:nvme_nvm_bb_tbl file: -time_gc_q include/bdbm_drv.h /^ uint64_t time_gc_q;$/;" m struct:__anon43 -time_gc_sw include/bdbm_drv.h /^ uint64_t time_gc_sw;$/;" m struct:__anon43 -time_gc_tot include/bdbm_drv.h /^ uint64_t time_gc_tot;$/;" m struct:__anon43 +time_gc_q include/bdbm_drv.h /^ uint64_t time_gc_q;$/;" m struct:__anon44 +time_gc_sw include/bdbm_drv.h /^ uint64_t time_gc_sw;$/;" m struct:__anon44 +time_gc_tot include/bdbm_drv.h /^ uint64_t time_gc_tot;$/;" m struct:__anon44 time_get_timestamp_in_sec common/utils/utime.c /^uint32_t time_get_timestamp_in_sec (void)$/;" f time_get_timestamp_in_us common/utils/utime.c /^uint32_t time_get_timestamp_in_us (void)$/;" f time_init common/utils/utime.c /^void time_init (void)$/;" f -time_r_q include/bdbm_drv.h /^ uint64_t time_r_q;$/;" m struct:__anon43 -time_r_sw include/bdbm_drv.h /^ uint64_t time_r_sw;$/;" m struct:__anon43 -time_r_tot include/bdbm_drv.h /^ uint64_t time_r_tot;$/;" m struct:__anon43 -time_rmw_q include/bdbm_drv.h /^ uint64_t time_rmw_q;$/;" m struct:__anon43 -time_rmw_sw include/bdbm_drv.h /^ uint64_t time_rmw_sw;$/;" m struct:__anon43 -time_rmw_tot include/bdbm_drv.h /^ uint64_t time_rmw_tot;$/;" m struct:__anon43 -time_w_q include/bdbm_drv.h /^ uint64_t time_w_q;$/;" m struct:__anon43 -time_w_sw include/bdbm_drv.h /^ uint64_t time_w_sw;$/;" m struct:__anon43 -time_w_tot include/bdbm_drv.h /^ uint64_t time_w_tot;$/;" m struct:__anon43 +time_r_q include/bdbm_drv.h /^ uint64_t time_r_q;$/;" m struct:__anon44 +time_r_sw include/bdbm_drv.h /^ uint64_t time_r_sw;$/;" m struct:__anon44 +time_r_tot include/bdbm_drv.h /^ uint64_t time_r_tot;$/;" m struct:__anon44 +time_rmw_q include/bdbm_drv.h /^ uint64_t time_rmw_q;$/;" m struct:__anon44 +time_rmw_sw include/bdbm_drv.h /^ uint64_t time_rmw_sw;$/;" m struct:__anon44 +time_rmw_tot include/bdbm_drv.h /^ uint64_t time_rmw_tot;$/;" m struct:__anon44 +time_w_q include/bdbm_drv.h /^ uint64_t time_w_q;$/;" m struct:__anon44 +time_w_sw include/bdbm_drv.h /^ uint64_t time_w_sw;$/;" m struct:__anon44 +time_w_tot include/bdbm_drv.h /^ uint64_t time_w_tot;$/;" m struct:__anon44 timeval_subtract common/utils/utime.c /^int timeval_subtract ($/;" f -tmp_hr ftl/hlm_nobuf.c /^ bdbm_hlm_req_t tmp_hr;$/;" m struct:__anon65 file: +tmp_hr ftl/hlm_nobuf.c /^ bdbm_hlm_req_t tmp_hr;$/;" m struct:__anon70 file: to_nvme_dev tools/nvme/pci.c /^static inline struct nvme_dev *to_nvme_dev(struct nvme_ctrl *ctrl)$/;" f file: to_nvme_dev tools/nvmedrv-v4.5.3/pci.c /^static inline struct nvme_dev *to_nvme_dev(struct nvme_ctrl *ctrl)$/;" f file: total_blocks tools/lightnvm-v4.5.3/rrpc.h /^ unsigned long total_blocks;$/;" m struct:rrpc @@ -4161,12 +4244,12 @@ trdm tools/nvme/lightnvm.c /^ __le32 trdm;$/;" m struct:nvme_nvm_id_group file trdm tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 trdm;$/;" m struct:nvme_nvm_id_group file: trdt tools/nvme/lightnvm.c /^ __le32 trdt;$/;" m struct:nvme_nvm_id_group file: trdt tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 trdt;$/;" m struct:nvme_nvm_id_group file: -trim include/params.h /^ uint32_t trim;$/;" m struct:__anon45 +trim include/params.h /^ uint32_t trim;$/;" m struct:__anon46 tt_rrpc tools/lightnvm-v4.5.3/rrpc.c /^static struct nvm_tgt_type tt_rrpc = {$/;" v typeref:struct:nvm_tgt_type file: tt_rrpc tools/lightnvm-v4.5.3/rrpc.c /^static struct nvm_tgt_type tt_rrpc;$/;" v typeref:struct:nvm_tgt_type file: tt_rrpc tools/lightnvm/rrpc.c /^static struct nvm_tgt_type tt_rrpc = {$/;" v typeref:struct:nvm_tgt_type file: tt_rrpc tools/lightnvm/rrpc.c /^static struct nvm_tgt_type tt_rrpc;$/;" v typeref:struct:nvm_tgt_type file: -type ftl/queue/rd_prior_queue.h /^ rd_prior_iotype_t type;$/;" m struct:__anon74 +type ftl/queue/rd_prior_queue.h /^ rd_prior_iotype_t type;$/;" m struct:__anon79 type tools/nvme/nvme.h /^ int type;$/;" m struct:nvme_ns type tools/nvmedrv-v4.5.3/nvme.h /^ int type;$/;" m struct:nvme_ns uint32_t common/3rd/uthash.h /^typedef unsigned int uint32_t;$/;" t @@ -4181,8 +4264,8 @@ use_cmb_sqes tools/nvme/pci.c /^static bool use_cmb_sqes = true;$/;" v file: use_cmb_sqes tools/nvmedrv-v4.5.3/pci.c /^static bool use_cmb_sqes = true;$/;" v file: use_threaded_interrupts tools/nvme/pci.c /^static int use_threaded_interrupts;$/;" v file: use_threaded_interrupts tools/nvmedrv-v4.5.3/pci.c /^static int use_threaded_interrupts;$/;" v file: -used_list frontend/hybrid/blkio_proxy_reqs_pool.h /^ struct list_head used_list;$/;" m struct:__anon58 typeref:struct:__anon58::list_head -used_list ftl/hlm_reqs_pool.h /^ struct list_head used_list;$/;" m struct:__anon66 typeref:struct:__anon66::list_head +used_list frontend/hybrid/blkio_proxy_reqs_pool.h /^ struct list_head used_list;$/;" m struct:__anon63 typeref:struct:__anon63::list_head +used_list ftl/hlm_reqs_pool.h /^ struct list_head used_list;$/;" m struct:__anon71 typeref:struct:__anon71::list_head used_list tools/lightnvm-v4.5.3/gennvm.h /^ struct list_head used_list; \/* In-use blocks *\/$/;" m struct:gen_lun typeref:struct:gen_lun::list_head used_list tools/lightnvm/gennvm.h /^ struct list_head used_list; \/* In-use blocks *\/$/;" m struct:gen_lun typeref:struct:gen_lun::list_head user devices/bluedbm/dm_bluedbm.c /^ void* user;$/;" m struct:__anon15 file: @@ -4233,8 +4316,8 @@ uthash_free common/3rd/uthash.h 98;" d uthash_malloc common/3rd/uthash.h 90;" d uthash_malloc common/3rd/uthash.h 92;" d uthash_noexpand_fyi common/3rd/uthash.h 105;" d -util_r include/bdbm_drv.h /^ atomic64_t* util_r;$/;" m struct:__anon43 -util_w include/bdbm_drv.h /^ atomic64_t* util_w;$/;" m struct:__anon43 +util_r include/bdbm_drv.h /^ atomic64_t* util_r;$/;" m struct:__anon44 +util_w include/bdbm_drv.h /^ atomic64_t* util_w;$/;" m struct:__anon44 utstring_bincpy common/3rd/utstring.h 98;" d utstring_body common/3rd/utstring.h 116;" d utstring_clear common/3rd/utstring.h 92;" d @@ -4273,17 +4356,17 @@ w_cnt_done devices/libdummy/dm_dummy.c /^ uint64_t w_cnt_done;$/;" m struct:dm_u wait common/utils/uthread.h /^ wait_queue_t* wait;$/;" m struct:__anon1 wait frontend/hybrid/umain.c /^void wait ()$/;" f wbuf devices/bluedbm/dm_bluedbm.c /^ uint8_t** wbuf;$/;" m struct:dm_bluedbm_private file: -wl_policy include/params.h /^ uint32_t wl_policy;$/;" m struct:__anon45 +wl_policy include/params.h /^ uint32_t wl_policy;$/;" m struct:__anon46 work devices/bluedbm/dm_bluedbm.c /^ struct work_struct work; \/* it must be at the end of structre *\/$/;" m struct:__anon15 typeref:struct:__anon15::work_struct file: work devices/ramdrive/dev_ramssd.h /^ struct work_struct work; \/* it must be at the end of structre *\/$/;" m struct:__anon12 typeref:struct:__anon12::work_struct -work frontend/hybrid/blkio_proxy.c /^ struct work_struct work; \/* it must be at the end of structre *\/$/;" m struct:__anon60 typeref:struct:__anon60::work_struct file: +work frontend/hybrid/blkio_proxy.c /^ struct work_struct work; \/* it must be at the end of structre *\/$/;" m struct:__anon65 typeref:struct:__anon65::work_struct file: works devices/bluedbm/dm_bluedbm.c /^ dm_bluedbm_wq_t works;$/;" m struct:dm_bluedbm_private file: works devices/ramdrive/dev_ramssd.h /^ dev_ramssd_wq_t works;$/;" m struct:__anon13 -works frontend/hybrid/blkio_proxy.c /^ bdbm_blkio_proxy_wq_t* works;$/;" m struct:__anon61 file: +works frontend/hybrid/blkio_proxy.c /^ bdbm_blkio_proxy_wq_t* works;$/;" m struct:__anon66 file: wq common/utils/uthread.h /^ wait_queue_head_t wq;$/;" m struct:__anon1 wq devices/bluedbm/dm_bluedbm.c /^ struct workqueue_struct *wq;$/;" m struct:dm_bluedbm_private typeref:struct:dm_bluedbm_private::workqueue_struct file: wq devices/ramdrive/dev_ramssd.h /^ struct workqueue_struct *wq;$/;" m struct:__anon13 typeref:struct:__anon13::workqueue_struct -wq frontend/hybrid/blkio_proxy.c /^ struct workqueue_struct *wq;$/;" m struct:__anon61 typeref:struct:__anon61::workqueue_struct file: +wq frontend/hybrid/blkio_proxy.c /^ struct workqueue_struct *wq;$/;" m struct:__anon66 typeref:struct:__anon66::workqueue_struct file: ws_gc tools/lightnvm-v4.5.3/rrpc.h /^ struct work_struct ws_gc;$/;" m struct:rrpc_block_gc typeref:struct:rrpc_block_gc::work_struct ws_gc tools/lightnvm-v4.5.3/rrpc.h /^ struct work_struct ws_gc;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::work_struct ws_gc tools/lightnvm/rrpc.h /^ struct work_struct ws_gc;$/;" m struct:rrpc_block_gc typeref:struct:rrpc_block_gc::work_struct From 21c59f3a94d3fdcbfb02ec4372364b18641b112f Mon Sep 17 00:00:00 2001 From: root Date: Sat, 29 Oct 2016 18:41:16 +0900 Subject: [PATCH 35/51] nvm err ext4 corruption (with skip & wb) --- devices/ramdrive/dev_ramssd.c | 10 +- exec.sh | 2 +- frontend/kernel/a.diff | 47 ----- frontend/kernel/blkio.c | 1 + frontend/kernel/nvm_cache.c | 37 ++-- ftl/hlm_nobuf.c | 15 +- ftl/hlm_reqs_pool.c | 8 +- ftl/llm_mq.c | 4 +- ftl/llm_mq.c~ | 329 ++++++++++++++++++++++++++++++++++ include/bdbm_drv.h | 2 + llm_reqs_done | 0 11 files changed, 380 insertions(+), 75 deletions(-) delete mode 100644 frontend/kernel/a.diff create mode 100644 ftl/llm_mq.c~ create mode 100644 llm_reqs_done diff --git a/devices/ramdrive/dev_ramssd.c b/devices/ramdrive/dev_ramssd.c index 8960e3a..3fd6087 100644 --- a/devices/ramdrive/dev_ramssd.c +++ b/devices/ramdrive/dev_ramssd.c @@ -395,7 +395,10 @@ static uint32_t __ramssd_send_cmd ( use_oob, use_partial); break; - +#ifdef NVM_CACHE + case REQTYPE_WRITE_BACK: + bdbm_msg("REQTYPE_WRITE_BACK arrives"); +#endif case REQTYPE_RMW_WRITE: case REQTYPE_WRITE: case REQTYPE_META_WRITE: @@ -651,7 +654,6 @@ void dev_ramssd_destroy (dev_ramssd_info_t* ri) uint32_t dev_ramssd_send_cmd (dev_ramssd_info_t* ri, bdbm_llm_req_t* r) { uint32_t ret; - if ((ret = __ramssd_send_cmd (ri, r)) == 0) { int64_t target_elapsed_time_us = 0; uint64_t punit_id = r->phyaddr.punit_id; @@ -659,6 +661,10 @@ uint32_t dev_ramssd_send_cmd (dev_ramssd_info_t* ri, bdbm_llm_req_t* r) /* get the target elapsed time depending on the type of req */ if (ri->emul_mode == DEVICE_TYPE_RAMDRIVE_TIMING) { switch (r->req_type) { +#ifdef NVM_CACHE + case REQTYPE_WRITE_BACK: + bdbm_msg("REQTYPE_WRITE_BACK timing"); +#endif case REQTYPE_WRITE: case REQTYPE_GC_WRITE: case REQTYPE_RMW_WRITE: diff --git a/exec.sh b/exec.sh index 7b2b661..2044f9f 100755 --- a/exec.sh +++ b/exec.sh @@ -6,7 +6,7 @@ if [[ $# -lt 1 ]]; then fi if [[ $1 == "iozone" ]]; then - $BENCH_HOME/iozone3_420/src/current/iozone -R -l 1 -u 1 -r 4k -s 5g -I -F /media/robusta/d -i 0 + $BENCH_HOME/iozone3_420/src/current/iozone -R -l 1 -u 1 -r 4k -s 100m -I -F /media/robusta/d -i 0 fi if [[ $1 == "fio" ]]; then diff --git a/frontend/kernel/a.diff b/frontend/kernel/a.diff deleted file mode 100644 index 78b26eb..0000000 --- a/frontend/kernel/a.diff +++ /dev/null @@ -1,47 +0,0 @@ -54,55d53 -< #ifdef LAZY_INVALID_BACKGROUND_GC -< #else -57d54 -< #endif -68c65 -< bdbm_blkio_req_t* br = (bdbm_blkio_req_t*)bdbm_malloc (sizeof (bdbm_blkio_req_t)); ---- -> bdbm_blkio_req_t* br = (bdbm_blkio_req_t*)bdbm_malloc_atomic (sizeof (bdbm_blkio_req_t)); -100,101c97,98 -< bdbm_error ("oops! # of vectors in bio is larger than %u %llu (type=%llu)", -< BDBM_BLKIO_MAX_VECS, br->bi_bvec_cnt, br->bi_rw); ---- -> bdbm_error ("oops! # of vectors in bio is larger than %u %llu", -> BDBM_BLKIO_MAX_VECS, br->bi_bvec_cnt); -111c108 -< bdbm_free (br); ---- -> bdbm_free_atomic (br); -118c115 -< bdbm_free (br); ---- -> bdbm_free_atomic (br); -139c136 -< bdbm_error ("bdbm_malloc failed"); ---- -> bdbm_error ("bdbm_malloc_atomic failed"); -142,144d138 -< #ifdef LAZY_INVALID_BACKGROUND_GC -< bdbm_sema_init (&bdi->host_lock); -< #else -146d139 -< #endif -221,223d213 -< #ifdef LAZY_INVALID_BACKGROUND_GC -< bdbm_sema_lock (&bdi->host_lock); -< #else -225d214 -< #endif -241,243d229 -< #ifdef LAZY_INVALID_BACKGROUND_GC -< bdbm_sema_unlock (&bdi->host_lock); -< #else -245d230 -< #endif -255d239 -< diff --git a/frontend/kernel/blkio.c b/frontend/kernel/blkio.c index 0357384..a9ac9f3 100644 --- a/frontend/kernel/blkio.c +++ b/frontend/kernel/blkio.c @@ -223,6 +223,7 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) remains = bdi->ptr_nvm_inf->make_req(bdi, hr); bdbm_bug_on(remains < 0); } +// bdbm_msg("nvm search ends"); #endif /* lock a global mutex -- this function must be finished as soon as possible */ diff --git a/frontend/kernel/nvm_cache.c b/frontend/kernel/nvm_cache.c index 66f8528..2ff5ed2 100644 --- a/frontend/kernel/nvm_cache.c +++ b/frontend/kernel/nvm_cache.c @@ -37,8 +37,6 @@ THE SOFTWARE. //#include "blkdev.h" //#include "blkdev_ioctl.h" -#ifdef NVM_CACHE - #include "nvm_cache.h" /* interface for nvm_dev */ @@ -237,7 +235,7 @@ uint64_t bdbm_nvm_read_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) nvm_idx = bdbm_nvm_find_data(bdi, lr); if(nvm_idx < 0){ - bdbm_msg("not found in nvm"); +// bdbm_msg("not found in nvm"); return 0; // not found } @@ -248,8 +246,8 @@ uint64_t bdbm_nvm_read_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) ptr_nvmram_addr = p->ptr_nvmram + (nvm_idx * np->nvm_page_size); - bdbm_msg("nvm_idx =%d, ptr_nvm = %p, dst_addr= %p", - nvm_idx, ptr_nvmram_addr, lr->fmain.kp_ptr[0]); + //bdbm_msg("nvm_idx =%d, ptr_nvm = %p, dst_addr= %p", + // nvm_idx, ptr_nvmram_addr, lr->fmain.kp_ptr[0]); bdbm_bug_on(ptr_nvmram_addr == NULL); @@ -281,7 +279,7 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) /* get a free page */ // if(p->nr_free_pages > LOW_WATERMARK){ if(p->nr_free_pages > 0){ - bdbm_msg("get a free nvm buffer"); +// bdbm_msg("get a free nvm buffer"); bdbm_bug_on(list_empty(p->free_list)); npage = list_last_entry(p->free_list, bdbm_nvm_page_t, list); bdbm_bug_on(npage == NULL); @@ -291,6 +289,9 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) } else { // eviction is needed bdbm_msg("nvm is full"); +#ifndef NVM_CACHE_NO_WB + return -1; +#endif bdbm_bug_on(!list_empty(p->free_list)); epage = list_last_entry(p->lru_list, bdbm_nvm_page_t, list); bdbm_bug_on(epage == NULL); @@ -303,7 +304,7 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) bdbm_error("bdbm_hlm_reqs_pool_get_item () failed"); goto fail; } - bdbm_msg("hr is created"); + //bdbm_msg("hr is created"); // 여기에서 edata cpy 할 때 lock 걸어야 할듯. 일단은 global lock 사용해보자. /* build hlm_req with nvm_info */ @@ -316,16 +317,14 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) /* send req */ bdbm_sema_lock (&bp->host_lock); -// atomic_inc (&bp->nr_host_reqs); // 이건 증가안시켜도 됨. - bdbm_msg("host_lock is acquired"); if(bdi->ptr_hlm_inf->make_wb_req (bdi, hr) != 0) { bdbm_error ("'bdi->ptr_hlm_inf->make_req' failed"); } bdbm_sema_unlock (&bp->host_lock); - bdbm_msg("host_lock is released"); /* wait for writeback to be completed */ + bdbm_msg("try to get hr->done lock"); bdbm_sema_lock (&hr->done); bdbm_msg("writeback is completed"); @@ -343,7 +342,7 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) list_del(&npage->list); list_add(&npage->list, p->lru_list); - bdbm_msg("new nvm_buffer is added to lru_list"); +// bdbm_msg("new nvm_buffer is added to lru_list"); bdbm_bug_on(p->nr_free_pages + p->nr_inuse_pages != p->nr_total_pages); @@ -371,10 +370,12 @@ uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) /* write miss */ if(nvm_idx < 0){ - bdbm_msg("alloc nvm for data write"); - nvm_idx = bdbm_nvm_alloc_slot(bdi, lr); +// bdbm_msg("alloc nvm for data write"); + if((nvm_idx = bdbm_nvm_alloc_slot(bdi, lr)) < 0) + return 0; } - bdbm_bug_on(nvm_idx < 0); + if(nvm_idx < 0) + bdbm_msg("failed to alloc nvm buffer"); /* get data addr */ bdbm_bug_on(np->nr_subpages_per_page != 1); @@ -386,7 +387,7 @@ uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) /* copy data */ bdbm_memcpy(ptr_nvmram_addr, lr->fmain.kp_ptr[0], KERNEL_PAGE_SIZE); - bdbm_msg("data write succeeds"); +// bdbm_msg("data write succeeds"); /* update lr req's status */ lr->serviced_by_nvm = 1; @@ -423,15 +424,12 @@ int64_t bdbm_nvm_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr){ }else if(lr->req_type == REQTYPE_WRITE){ if(bdbm_nvm_write_data(bdi, &hr->llm_reqs[n])) nr_remains --; - - else - bdbm_bug_on(1); } } bdbm_sema_unlock (&p->nvm_lock); - bdbm_bug_on((hr->req_type == REQTYPE_WRITE) && (nr_remains != 0)); + //bdbm_bug_on((hr->req_type == REQTYPE_WRITE) && (nr_remains != 0)); return nr_remains; @@ -466,4 +464,3 @@ static int __hlm_reqs_pool_create_trim_req ( return 0; } #endif -#endif // ifdef NVM_CACHE diff --git a/ftl/hlm_nobuf.c b/ftl/hlm_nobuf.c index b82781e..681ee86 100644 --- a/ftl/hlm_nobuf.c +++ b/ftl/hlm_nobuf.c @@ -115,6 +115,13 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) /* perform mapping with the FTL */ bdbm_hlm_for_each_llm_req (lr, hr, i) { /* (1) get the physical locations through the FTL */ +#ifdef NVM_CACHE_SKIP + if(lr->serviced_by_nvm){ + bdbm_msg("skip lr serviced by nvm"); + hlm_nobuf_end_req (bdi, lr); + } + else +#endif if (bdbm_is_normal (lr->req_type)) { /* handling normal I/O operations */ if (bdbm_is_read (lr->req_type)) { @@ -362,6 +369,12 @@ void __hlm_nobuf_end_blkio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) /* increase # of reqs finished */ atomic64_inc (&hr->nr_llm_reqs_done); lr->req_type |= REQTYPE_DONE; +#ifdef NVM_CACHE + if(lr->serviced_by_nvm){ + bdbm_msg("lr serviced by nvm is completed"); + lr->serviced_by_nvm = 0; + } +#endif if (atomic64_read (&hr->nr_llm_reqs_done) == hr->nr_llm_reqs) { /* finish the host request */ @@ -395,8 +408,6 @@ void __hlm_nobuf_end_wb_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) } #endif - - void hlm_nobuf_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) { #ifdef NVM_CACHE diff --git a/ftl/hlm_reqs_pool.c b/ftl/hlm_reqs_pool.c index 9d309f3..7c1f48c 100644 --- a/ftl/hlm_reqs_pool.c +++ b/ftl/hlm_reqs_pool.c @@ -344,8 +344,8 @@ static int __hlm_reqs_pool_create_wb_req ( /* decide the reqtype for llm_req */ ptr_lr->req_type = REQTYPE_WRITE_BACK; - ptr_lr->ptr_hlm_req = (void*)hr; + ptr_lr->serviced_by_nvm = 0; /* intialize hlm_req */ hr->req_type = REQTYPE_WRITE_BACK; @@ -431,6 +431,9 @@ static int __hlm_reqs_pool_create_write_req ( ptr_lr->req_type = REQTYPE_RMW_READ; } +#ifdef NVM_CACHE + ptr_lr->serviced_by_nvm = 0; +#endif /* go to the next */ ptr_lr->ptr_hlm_req = (void*)hr; ptr_lr++; @@ -485,6 +488,9 @@ static int __hlm_reqs_pool_create_read_req ( else ptr_lr->logaddr.ofs = offset; /* it must be adjusted after getting physical locations */ ptr_lr->ptr_hlm_req = (void*)hr; +#ifdef NVM_CACHE + ptr_lr->serviced_by_nvm = 0; +#endif /* go to the next */ pg_start++; diff --git a/ftl/llm_mq.c b/ftl/llm_mq.c index 5dd9fd8..93ceb5c 100644 --- a/ftl/llm_mq.c +++ b/ftl/llm_mq.c @@ -122,9 +122,9 @@ int __llm_mq_thread (void* arg) pmu_update_q (bdi, r); - if (cnt % 50000 == 0) { +// if (cnt % 50000 == 0) { bdbm_msg ("llm_make_req: %llu, %llu", cnt, bdbm_prior_queue_get_nr_items (p->q)); - } +// } if (bdi->ptr_dm_inf->make_req (bdi, r)) { bdbm_sema_unlock (&p->punit_locks[loop]); diff --git a/ftl/llm_mq.c~ b/ftl/llm_mq.c~ new file mode 100644 index 0000000..5dd9fd8 --- /dev/null +++ b/ftl/llm_mq.c~ @@ -0,0 +1,329 @@ +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 CSAIL, MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#if defined (KERNEL_MODE) +#include +#include + +#elif defined (USER_MODE) +#include +#include + +#else +#error Invalid Platform (KERNEL_MODE or USER_MODE) +#endif + +#include "debug.h" +#include "umemory.h" +#include "params.h" +#include "bdbm_drv.h" +#include "uthread.h" +#include "pmu.h" +#include "utime.h" + +#include "queue/queue.h" +#include "queue/prior_queue.h" + +#include "llm_mq.h" + +/* NOTE: This serializes all of the requests from the host file system; + * it is useful for debugging */ +/*#define ENABLE_SEQ_DBG*/ + + +/* llm interface */ +bdbm_llm_inf_t _llm_mq_inf = { + .ptr_private = NULL, + .create = llm_mq_create, + .destroy = llm_mq_destroy, + .make_req = llm_mq_make_req, + .flush = llm_mq_flush, + .end_req = llm_mq_end_req, +}; + +/* private */ +struct bdbm_llm_mq_private { + uint64_t nr_punits; + bdbm_sema_t* punit_locks; + bdbm_prior_queue_t* q; + + /* for debugging */ +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_t dbg_seq; +#endif + + /* for thread management */ + bdbm_thread_t* llm_thread; +}; + +int __llm_mq_thread (void* arg) +{ + bdbm_drv_info_t* bdi = (bdbm_drv_info_t*)arg; + struct bdbm_llm_mq_private* p = (struct bdbm_llm_mq_private*)BDBM_LLM_PRIV(bdi); + uint64_t loop; + uint64_t cnt = 0; + + if (p == NULL || p->q == NULL || p->llm_thread == NULL) { + bdbm_msg ("invalid parameters (p=%p, p->q=%p, p->llm_thread=%p", + p, p->q, p->llm_thread); + return 0; + } + + for (;;) { + /* give a chance to other processes if Q is empty */ + if (bdbm_prior_queue_is_all_empty (p->q)) { + bdbm_thread_schedule_setup (p->llm_thread); + if (bdbm_prior_queue_is_all_empty (p->q)) { + /* ok... go to sleep */ + if (bdbm_thread_schedule_sleep (p->llm_thread) == SIGKILL) + break; + } else { + /* there are items in Q; wake up */ + bdbm_thread_schedule_cancel (p->llm_thread); + } + } + + /* send reqs until Q becomes empty */ + for (loop = 0; loop < p->nr_punits; loop++) { + bdbm_prior_queue_item_t* qitem = NULL; + bdbm_llm_req_t* r = NULL; + + /* if pu is busy, then go to the next pnit */ + if (!bdbm_sema_try_lock (&p->punit_locks[loop])) + continue; + + if ((r = (bdbm_llm_req_t*)bdbm_prior_queue_dequeue (p->q, loop, &qitem)) == NULL) { + bdbm_sema_unlock (&p->punit_locks[loop]); + continue; + } + + r->ptr_qitem = qitem; + + pmu_update_q (bdi, r); + + if (cnt % 50000 == 0) { + bdbm_msg ("llm_make_req: %llu, %llu", cnt, bdbm_prior_queue_get_nr_items (p->q)); + } + + if (bdi->ptr_dm_inf->make_req (bdi, r)) { + bdbm_sema_unlock (&p->punit_locks[loop]); + + /* TODO: I do not check whether it works well or not */ + bdi->ptr_llm_inf->end_req (bdi, r); + bdbm_warning ("oops! make_req failed"); + } + + cnt++; + } + } + + return 0; +} + +uint32_t llm_mq_create (bdbm_drv_info_t* bdi) +{ + struct bdbm_llm_mq_private* p; + uint64_t loop; + + /* create a private info for llm_nt */ + if ((p = (struct bdbm_llm_mq_private*)bdbm_malloc_atomic + (sizeof (struct bdbm_llm_mq_private))) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + return -1; + } + + /* get the total number of parallel units */ + p->nr_punits = BDBM_GET_NR_PUNITS (bdi->parm_dev); + + /* create queue */ + if ((p->q = bdbm_prior_queue_create (p->nr_punits, INFINITE_QUEUE)) == NULL) { + bdbm_error ("bdbm_prior_queue_create failed"); + goto fail; + } + + /* create completion locks for parallel units */ + if ((p->punit_locks = (bdbm_sema_t*)bdbm_malloc_atomic + (sizeof (bdbm_sema_t) * p->nr_punits)) == NULL) { + bdbm_error ("bdbm_malloc_atomic failed"); + goto fail; + } + for (loop = 0; loop < p->nr_punits; loop++) { + bdbm_sema_init (&p->punit_locks[loop]); + } + + /* keep the private structures for llm_nt */ + bdi->ptr_llm_inf->ptr_private = (void*)p; + + /* create & run a thread */ + if ((p->llm_thread = bdbm_thread_create ( + __llm_mq_thread, bdi, "__llm_mq_thread")) == NULL) { + bdbm_error ("kthread_create failed"); + goto fail; + } + bdbm_thread_run (p->llm_thread); + +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_init (&p->dbg_seq); +#endif + + return 0; + +fail: + if (p->punit_locks) + bdbm_free_atomic (p->punit_locks); + if (p->q) + bdbm_prior_queue_destroy (p->q); + if (p) + bdbm_free_atomic (p); + return -1; +} + +/* NOTE: we assume that all of the host requests are completely served. + * the host adapter must be first closed before this function is called. + * if not, it would work improperly. */ +void llm_mq_destroy (bdbm_drv_info_t* bdi) +{ + uint64_t loop; + struct bdbm_llm_mq_private* p = (struct bdbm_llm_mq_private*)BDBM_LLM_PRIV(bdi); + + if (p == NULL) + return; + + /* wait until Q becomes empty */ + while (!bdbm_prior_queue_is_all_empty (p->q)) { + bdbm_msg ("llm items = %llu", bdbm_prior_queue_get_nr_items (p->q)); + bdbm_thread_msleep (1); + } + + /* kill kthread */ + bdbm_thread_stop (p->llm_thread); + + for (loop = 0; loop < p->nr_punits; loop++) { + bdbm_sema_lock (&p->punit_locks[loop]); + } + + /* release all the relevant data structures */ + if (p->q) + bdbm_prior_queue_destroy (p->q); + if (p) + bdbm_free_atomic (p); + bdbm_msg ("done"); +} + +uint32_t llm_mq_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) +{ + uint32_t ret; + struct bdbm_llm_mq_private* p = (struct bdbm_llm_mq_private*)BDBM_LLM_PRIV(bdi); + +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_lock (&p->dbg_seq); +#endif + + /* obtain the elapsed time taken by FTL algorithms */ + pmu_update_sw (bdi, r); + + /* wait until there are enough free slots in Q */ + while (bdbm_prior_queue_get_nr_items (p->q) >= 96) { + bdbm_thread_yield (); + } + + /* put a request into Q */ + if (bdbm_is_rmw (r->req_type) && bdbm_is_read (r->req_type)) { + /* step 1: put READ first */ + r->phyaddr = r->phyaddr_src; + if ((ret = bdbm_prior_queue_enqueue (p->q, r->phyaddr_src.punit_id, r->logaddr.lpa[0], (void*)r))) { + bdbm_msg ("bdbm_prior_queue_enqueue failed"); + } + /* step 2: put WRITE second with the same LPA */ + if ((ret = bdbm_prior_queue_enqueue (p->q, r->phyaddr_dst.punit_id, r->logaddr.lpa[0], (void*)r))) { + bdbm_msg ("bdbm_prior_queue_enqueue failed"); + } + } else if (bdbm_is_rmw (r->req_type) && bdbm_is_read (r->req_type)) { + bdbm_bug_on (1); + } else { + if ((ret = bdbm_prior_queue_enqueue (p->q, r->phyaddr.punit_id, r->logaddr.lpa[0], (void*)r))) { + bdbm_msg ("bdbm_prior_queue_enqueue failed"); + } + } + + /* wake up thread if it sleeps */ + bdbm_thread_wakeup (p->llm_thread); + + return ret; +} + +void llm_mq_flush (bdbm_drv_info_t* bdi) +{ + struct bdbm_llm_mq_private* p = (struct bdbm_llm_mq_private*)BDBM_LLM_PRIV(bdi); + + while (bdbm_prior_queue_is_all_empty (p->q) != 1) { + /*cond_resched ();*/ + bdbm_thread_yield (); + } +} + +void llm_mq_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r) +{ + struct bdbm_llm_mq_private* p = (struct bdbm_llm_mq_private*)BDBM_LLM_PRIV(bdi); + bdbm_prior_queue_item_t* qitem = (bdbm_prior_queue_item_t*)r->ptr_qitem; + + if (bdbm_is_rmw (r->req_type) && bdbm_is_read(r->req_type)) { + /* get a parallel unit ID */ + /*bdbm_msg ("unlock: %lld", r->phyaddr.punit_id);*/ + bdbm_sema_unlock (&p->punit_locks[r->phyaddr.punit_id]); + + /*bdbm_msg ("LLM Done: lpa=%llu", r->logaddr.lpa[0]);*/ + + pmu_inc (bdi, r); + + /* change its type to WRITE if req_type is RMW */ + r->req_type = REQTYPE_RMW_WRITE; + r->phyaddr = r->phyaddr_dst; + + /* remove it from the Q; this automatically triggers another request to be sent to NAND flash */ + bdbm_prior_queue_remove (p->q, qitem); + + /* wake up thread if it sleeps */ + bdbm_thread_wakeup (p->llm_thread); + } else { + /* get a parallel unit ID */ + bdbm_prior_queue_remove (p->q, qitem); + + /* complete a lock */ + /*bdbm_msg ("unlock: %lld", r->phyaddr.punit_id);*/ + bdbm_sema_unlock (&p->punit_locks[r->phyaddr.punit_id]); + + /* update the elapsed time taken by NAND devices */ + pmu_update_tot (bdi, r); + pmu_inc (bdi, r); + + /* finish a request */ + bdi->ptr_hlm_inf->end_req (bdi, r); + + +#if defined(ENABLE_SEQ_DBG) + bdbm_sema_unlock (&p->dbg_seq); +#endif + } +} diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index c7c7deb..11bacd8 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -1,4 +1,6 @@ #define NVM_CACHE +#define NVM_CACHE_WB +#define NVM_CACHE_SKIP /* The MIT License (MIT) diff --git a/llm_reqs_done b/llm_reqs_done new file mode 100644 index 0000000..e69de29 From 77c496a8a3ab469c1b5097bc0fd9fcae355e7d77 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 29 Oct 2016 19:45:35 +0900 Subject: [PATCH 36/51] nvm cache working well (wb & skip, no trim) --- devices/ramdrive/dev_ramssd.c | 1 + frontend/kernel/.nvm_cache.c.swp | Bin 0 -> 28672 bytes frontend/kernel/nvm_cache.c | 26 +++++++++++++++++++------- ftl/hlm_nobuf.c | 16 +++++++++++----- ftl/llm_mq.c | 4 ++-- include/bdbm_drv.h | 2 +- 6 files changed, 34 insertions(+), 15 deletions(-) create mode 100644 frontend/kernel/.nvm_cache.c.swp diff --git a/devices/ramdrive/dev_ramssd.c b/devices/ramdrive/dev_ramssd.c index 3fd6087..23c74b2 100644 --- a/devices/ramdrive/dev_ramssd.c +++ b/devices/ramdrive/dev_ramssd.c @@ -435,6 +435,7 @@ static uint32_t __ramssd_send_cmd ( default: bdbm_error ("invalid command"); + bdbm_msg("%x", ptr_req->req_type); ret = 1; break; } diff --git a/frontend/kernel/.nvm_cache.c.swp b/frontend/kernel/.nvm_cache.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..9df309a2cbd230f50a6931f16d479173eb406a03 GIT binary patch literal 28672 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 VXIw%#qM+-sz3u8@oC_PA{{cX%Jn;Yk literal 0 HcmV?d00001 diff --git a/frontend/kernel/nvm_cache.c b/frontend/kernel/nvm_cache.c index 2ff5ed2..4f751d7 100644 --- a/frontend/kernel/nvm_cache.c +++ b/frontend/kernel/nvm_cache.c @@ -64,7 +64,7 @@ static void* __nvm_alloc_nvmram (bdbm_device_params_t* ptr_np) bdbm_error("bdbm_malloc failed (nvm size = %llu bytes)", nvm_size_in_bytes); return NULL; } - bdbm_memset ((uint8_t*) ptr_nvmram, 0xFF, nvm_size_in_bytes * sizeof (uint8_t)); + bdbm_memset ((uint8_t*) ptr_nvmram, 0x00, nvm_size_in_bytes * sizeof (uint8_t)); bdbm_msg("nvm cache addr = %p", ptr_nvmram); return (void*) ptr_nvmram; @@ -207,13 +207,14 @@ int64_t bdbm_nvm_find_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) bdbm_nvm_page_t* nvm_tbl = p->ptr_nvm_tbl; uint64_t i = 0; int64_t found = -1; - uint64_t lpa; + int64_t lpa; lpa = lr->logaddr.lpa[0]; for(i = 0; i < p->nr_total_pages; i++){ + bdbm_msg("nvm_tbl[%llu] lpa = %d, tlpa = %d", i, nvm_tbl[i].logaddr.lpa[0], lpa); if(nvm_tbl[i].logaddr.lpa[0] == lpa){ - bdbm_msg("read hit: lpa = %llu", lpa); + bdbm_msg("hit: lpa = %llu", lpa); found = i; break; } @@ -288,8 +289,8 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) p->nr_inuse_pages ++; } else { // eviction is needed - bdbm_msg("nvm is full"); -#ifndef NVM_CACHE_NO_WB +// bdbm_msg("nvm is full"); +#ifndef NVM_CACHE_WB return -1; #endif bdbm_bug_on(!list_empty(p->free_list)); @@ -324,9 +325,9 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) bdbm_sema_unlock (&bp->host_lock); /* wait for writeback to be completed */ - bdbm_msg("try to get hr->done lock"); +// bdbm_msg("try to get hr->done lock"); bdbm_sema_lock (&hr->done); - bdbm_msg("writeback is completed"); +// bdbm_msg("writeback is completed"); bdbm_hlm_reqs_pool_free_item (bp->hlm_reqs_pool, hr); // release lock here @@ -362,8 +363,11 @@ uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) /* find nvm cache */ bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); bdbm_nvm_dev_private_t* p = _nvm_dev.ptr_private; + bdbm_nvm_page_t* nvm_tbl = p->ptr_nvm_tbl; int64_t nvm_idx = -1; uint8_t* ptr_nvmram_addr = NULL; + uint64_t i; + /* find data */ nvm_idx = bdbm_nvm_find_data(bdi, lr); @@ -387,7 +391,15 @@ uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) /* copy data */ bdbm_memcpy(ptr_nvmram_addr, lr->fmain.kp_ptr[0], KERNEL_PAGE_SIZE); + + + /* update logaddr */ + nvm_tbl[nvm_idx].logaddr.lpa[0] = lr->logaddr.lpa[0]; + // bdbm_msg("data write succeeds"); + for(i = 0; i < p->nr_total_pages; i++){ + bdbm_msg("nvm_tbl[%llu] lpa = %d", i, nvm_tbl[i].logaddr.lpa[0]); + } /* update lr req's status */ lr->serviced_by_nvm = 1; diff --git a/ftl/hlm_nobuf.c b/ftl/hlm_nobuf.c index 681ee86..efc7cbb 100644 --- a/ftl/hlm_nobuf.c +++ b/ftl/hlm_nobuf.c @@ -113,14 +113,14 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) uint64_t i = 0, j = 0, sp_ofs; /* perform mapping with the FTL */ + bdbm_hlm_for_each_llm_req (lr, hr, i) { /* (1) get the physical locations through the FTL */ #ifdef NVM_CACHE_SKIP if(lr->serviced_by_nvm){ - bdbm_msg("skip lr serviced by nvm"); - hlm_nobuf_end_req (bdi, lr); - } - else +// bdbm_msg("skip mapping of lr serviced by nvm"); +// hlm_nobuf_end_req (bdi, lr); + }else #endif if (bdbm_is_normal (lr->req_type)) { /* handling normal I/O operations */ @@ -182,6 +182,12 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) if (bdi->ptr_llm_inf->make_reqs == NULL) { /* send individual llm-reqs to llm */ bdbm_hlm_for_each_llm_req (lr, hr, i) { +#ifdef NVM_CACHE_SKIP + if(lr->serviced_by_nvm){ +// bdbm_msg("skip send request serviced by nvm"); + hlm_nobuf_end_req (bdi, lr); + }else +#endif if (bdi->ptr_llm_inf->make_req (bdi, lr) != 0) { bdbm_error ("oops! make_req () failed"); bdbm_bug_on (1); @@ -371,7 +377,7 @@ void __hlm_nobuf_end_blkio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) lr->req_type |= REQTYPE_DONE; #ifdef NVM_CACHE if(lr->serviced_by_nvm){ - bdbm_msg("lr serviced by nvm is completed"); +// bdbm_msg("lr serviced by nvm is completed"); lr->serviced_by_nvm = 0; } #endif diff --git a/ftl/llm_mq.c b/ftl/llm_mq.c index 93ceb5c..5dd9fd8 100644 --- a/ftl/llm_mq.c +++ b/ftl/llm_mq.c @@ -122,9 +122,9 @@ int __llm_mq_thread (void* arg) pmu_update_q (bdi, r); -// if (cnt % 50000 == 0) { + if (cnt % 50000 == 0) { bdbm_msg ("llm_make_req: %llu, %llu", cnt, bdbm_prior_queue_get_nr_items (p->q)); -// } + } if (bdi->ptr_dm_inf->make_req (bdi, r)) { bdbm_sema_unlock (&p->punit_locks[loop]); diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 11bacd8..e7ecdb5 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -1,5 +1,5 @@ #define NVM_CACHE -#define NVM_CACHE_WB +//#define NVM_CACHE_WB #define NVM_CACHE_SKIP /* From 5d4a749ffaa644bbbed1dd7fbd47292d0d8c2b5b Mon Sep 17 00:00:00 2001 From: root Date: Sun, 30 Oct 2016 11:47:21 +0900 Subject: [PATCH 37/51] wb err fix. working well (no trim) --- devices/common/dev_params.c | 2 +- devices/ramdrive/.risa_dev_ramdrive.ko.cmd | 1 + devices/ramdrive/.risa_dev_ramdrive.mod.o.cmd | 604 ++ devices/ramdrive/.risa_dev_ramdrive.o.cmd | 1 + .../.tmp_versions/risa_dev_ramdrive.mod | 2 + devices/ramdrive/Module.symvers | 3 + devices/ramdrive/dev_ramssd.c | 55 +- devices/ramdrive/dev_ramssd.h | 7 + devices/ramdrive/dm_ramdrive.c | 11 + devices/ramdrive/dm_ramdrive.h | 6 + devices/ramdrive/modules.order | 1 + devices/ramdrive/risa_dev_ramdrive.ko | Bin 0 -> 63600 bytes devices/ramdrive/risa_dev_ramdrive.mod.c | 87 + err.dmesg | 6176 +++++++++++++---- err1.dmesg | 4657 +++++++++++++ err2.dmesg | 4636 +++++++++++++ frontend/kernel/.nvm_cache.c.swp | Bin 28672 -> 0 bytes frontend/kernel/blkio.c | 26 + frontend/kernel/nvm_cache.c | 89 +- ftl/hlm_nobuf.c | 17 +- ftl/hlm_reqs_pool.c | 20 +- include/bdbm_drv.h | 7 +- 22 files changed, 15193 insertions(+), 1215 deletions(-) create mode 100644 devices/ramdrive/.risa_dev_ramdrive.ko.cmd create mode 100644 devices/ramdrive/.risa_dev_ramdrive.mod.o.cmd create mode 100644 devices/ramdrive/.risa_dev_ramdrive.o.cmd create mode 100644 devices/ramdrive/.tmp_versions/risa_dev_ramdrive.mod create mode 100644 devices/ramdrive/Module.symvers create mode 100644 devices/ramdrive/modules.order create mode 100755 devices/ramdrive/risa_dev_ramdrive.ko create mode 100644 devices/ramdrive/risa_dev_ramdrive.mod.c create mode 100644 err1.dmesg create mode 100644 err2.dmesg delete mode 100644 frontend/kernel/.nvm_cache.c.swp diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index 90f05ad..7f7ef6a 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -55,7 +55,7 @@ enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_READ_TIME_US = 100, /* 100us */ NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ #ifdef NVM_CACHE - NR_NVM_PAGES = 100, /* 4KB * 1048576 = 4GB */ + NR_NVM_PAGES = 3, /* 4KB * 1048576 = 4GB */ NVM_PAGE_SIZE = 4096, /* 4KB */ #endif }; diff --git a/devices/ramdrive/.risa_dev_ramdrive.ko.cmd b/devices/ramdrive/.risa_dev_ramdrive.ko.cmd new file mode 100644 index 0000000..e0892fa --- /dev/null +++ b/devices/ramdrive/.risa_dev_ramdrive.ko.cmd @@ -0,0 +1 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.ko := ld -r -m elf_x86_64 -T ./scripts/module-common.lds --build-id -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.ko /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o diff --git a/devices/ramdrive/.risa_dev_ramdrive.mod.o.cmd b/devices/ramdrive/.risa_dev_ramdrive.mod.o.cmd new file mode 100644 index 0000000..11809e3 --- /dev/null +++ b/devices/ramdrive/.risa_dev_ramdrive.mod.o.cmd @@ -0,0 +1,604 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/.risa_dev_ramdrive.mod.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE -D KERNEL_MODE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(risa_dev_ramdrive.mod)" -D"KBUILD_MODNAME=KBUILD_STR(risa_dev_ramdrive)" -DMODULE -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.c + +source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.c + +deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o := \ + $(wildcard include/config/module/unload.h) \ + include/linux/module.h \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + include/asm-generic/barrier.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + $(wildcard include/config/tdp/nominal.h) \ + $(wildcard include/config/tdp/level/1.h) \ + $(wildcard include/config/tdp/level/2.h) \ + $(wildcard include/config/tdp/control.h) \ + $(wildcard include/config/tdp/level1.h) \ + $(wildcard include/config/tdp/level2.h) \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/zone/device.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi/apei.h) \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/probe.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/vermagic.h \ + include/generated/utsrelease.h \ + +/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o) + +$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o): diff --git a/devices/ramdrive/.risa_dev_ramdrive.o.cmd b/devices/ramdrive/.risa_dev_ramdrive.o.cmd new file mode 100644 index 0000000..44fd1fb --- /dev/null +++ b/devices/ramdrive/.risa_dev_ramdrive.o.cmd @@ -0,0 +1 @@ +cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.o := ld -m elf_x86_64 -r -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/ufile.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/utime.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/uthread.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/umemory.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common/dev_main.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common/dev_params.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common/dev_stub.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/dev_ramssd.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/dm_ramdrive.o diff --git a/devices/ramdrive/.tmp_versions/risa_dev_ramdrive.mod b/devices/ramdrive/.tmp_versions/risa_dev_ramdrive.mod new file mode 100644 index 0000000..2265c15 --- /dev/null +++ b/devices/ramdrive/.tmp_versions/risa_dev_ramdrive.mod @@ -0,0 +1,2 @@ +/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.ko +/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/ufile.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/utime.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/uthread.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/umemory.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common/dev_main.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common/dev_params.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common/dev_stub.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/dev_ramssd.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/dm_ramdrive.o diff --git a/devices/ramdrive/Module.symvers b/devices/ramdrive/Module.symvers new file mode 100644 index 0000000..a721a42 --- /dev/null +++ b/devices/ramdrive/Module.symvers @@ -0,0 +1,3 @@ +0x80143265 bdbm_dm_get_inf /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive EXPORT_SYMBOL +0xdf2f9a5e bdbm_dm_exit /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive EXPORT_SYMBOL +0xcaa5608a bdbm_dm_init /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive EXPORT_SYMBOL diff --git a/devices/ramdrive/dev_ramssd.c b/devices/ramdrive/dev_ramssd.c index 23c74b2..ca6acfd 100644 --- a/devices/ramdrive/dev_ramssd.c +++ b/devices/ramdrive/dev_ramssd.c @@ -45,7 +45,9 @@ THE SOFTWARE. #define DATA_CHECK #if defined (DATA_CHECK) + static void* __ptr_ramssd_data = NULL; + static uint8_t* __get_ramssd_data_addr (dev_ramssd_info_t* ri, uint64_t lpa) { uint64_t ramssd_addr = -1; @@ -55,13 +57,13 @@ static uint8_t* __get_ramssd_data_addr (dev_ramssd_info_t* ri, uint64_t lpa) ramssd_addr = KPAGE_SIZE * lpa; return ((uint8_t*)__ptr_ramssd_data) + ramssd_addr; } + static void __display_hex_values (uint8_t* host, uint8_t* back) { bdbm_msg (" * HOST: %x %x %x %x %x != FLASH: %x %x %x %x %x", host[0], host[1], host[2], host[3], host[4], back[0], back[1], back[2], back[3], back[4]); } -#if 0 static void __display_hex_values_all (uint8_t* host, uint8_t* back) { int i = 0; @@ -71,7 +73,34 @@ static void __display_hex_values_all (uint8_t* host, uint8_t* back) back[i+0], back[i+1], back[i+2], back[i+3]); } } -#endif + + +static void __display_hex_values_all_host (uint8_t* host) +{ + int i = 0; + for (i = 0; i < KPAGE_SIZE; i+=4) { + bdbm_msg (" * FLASH: %x %x %x %x", + host[i+0], host[i+1], host[i+2], host[i+3]); + } +} +static void __display_hex_values_all_range (uint8_t* host, uint8_t* back, int size) +{ + int i = 0; + for (i = 0; i < size; i+=4) { + bdbm_msg (" * HOST: %x %x %x %x != FLASH: %x %x %x %x", + host[i+0], host[i+1], host[i+2], host[i+3], + back[i+0], back[i+1], back[i+2], back[i+3]); + } +} +static void __display_hex_values_all_host_range (uint8_t* host, int size) +{ + int i = 0; + for (i = 0; i < size; i+=4) { + bdbm_msg (" * FLASH: %x %x %x %x", + host[i+0], host[i+1], host[i+2], host[i+3]); + } +} + #endif /* Functions for Managing DRAM SSD */ @@ -397,7 +426,13 @@ static uint32_t __ramssd_send_cmd ( break; #ifdef NVM_CACHE case REQTYPE_WRITE_BACK: - bdbm_msg("REQTYPE_WRITE_BACK arrives"); + if(ptr_req->logaddr.lpa[0] == 1){ + bdbm_msg("REQTYPE_WRITE_BACK arrives: logaddr = %d", ptr_req->logaddr.lpa[0]); +// bdbm_msg ("%llu %llu %llu %llu, fmain.kp_ptr = %p, foob.data = %p, ", +// ptr_req->phyaddr.channel_no, ptr_req->phyaddr.chip_no, ptr_req->phyaddr.block_no, ptr_req->phyaddr.page_no, +// ptr_req->fmain.kp_ptr, ptr_req->foob.da; + __display_hex_values_all_host_range(ptr_req->fmain.kp_ptr[0], 16); + } #endif case REQTYPE_RMW_WRITE: case REQTYPE_WRITE: @@ -664,7 +699,7 @@ uint32_t dev_ramssd_send_cmd (dev_ramssd_info_t* ri, bdbm_llm_req_t* r) switch (r->req_type) { #ifdef NVM_CACHE case REQTYPE_WRITE_BACK: - bdbm_msg("REQTYPE_WRITE_BACK timing"); +// bdbm_msg("REQTYPE_WRITE_BACK timing: logaddr = %d", r->logaddr.lpa[0]); #endif case REQTYPE_WRITE: case REQTYPE_GC_WRITE: @@ -781,3 +816,15 @@ uint32_t dev_ramssd_store (dev_ramssd_info_t* ri, const char* fn) return 0; } + +#ifdef NVM_CACHE_DEBUG +uint8_t* dev_ramssd_get_data (dev_ramssd_info_t* ri, int64_t lpa) +{ + int64_t ramssd_addr = -1; + if (ri->np->nr_subpages_per_page == 1) + ramssd_addr = ri->np->page_main_size * lpa; + else + ramssd_addr = KPAGE_SIZE * lpa; + return ((uint8_t*)__ptr_ramssd_data) + ramssd_addr; +} +#endif diff --git a/devices/ramdrive/dev_ramssd.h b/devices/ramdrive/dev_ramssd.h index 0608c90..976096c 100644 --- a/devices/ramdrive/dev_ramssd.h +++ b/devices/ramdrive/dev_ramssd.h @@ -1,3 +1,4 @@ + /* The MIT License (MIT) @@ -57,6 +58,7 @@ typedef struct { } dev_ramssd_wq_t; #endif + typedef struct { uint8_t is_init; /* 0: not initialized, 1: initialized */ uint8_t emul_mode; @@ -73,6 +75,7 @@ typedef struct { #endif } dev_ramssd_info_t; + dev_ramssd_info_t* dev_ramssd_create (bdbm_device_params_t* np, void (*intr_handler)(void*)); void dev_ramssd_destroy (dev_ramssd_info_t* ptr_ramssd_info); uint32_t dev_ramssd_send_cmd (dev_ramssd_info_t* ptr_ramssd_info, bdbm_llm_req_t* ptr_llm_req ); @@ -168,4 +171,8 @@ uint8_t dev_ramssd_is_init (dev_ramssd_info_t* ptr_ramssd_info) { return 1; } +#ifdef NVM_CACHE_DEBUG +uint8_t* dev_ramssd_get_data (dev_ramssd_info_t* ptr_ramssd_info, int64_t lpa); +#endif + #endif /* _BLUEDBM_DEV_RAMSSD_H */ diff --git a/devices/ramdrive/dm_ramdrive.c b/devices/ramdrive/dm_ramdrive.c index b1d5363..e8e0132 100644 --- a/devices/ramdrive/dm_ramdrive.c +++ b/devices/ramdrive/dm_ramdrive.c @@ -53,6 +53,9 @@ bdbm_dm_inf_t _bdbm_dm_inf = { .end_req = dm_ramdrive_end_req, .load = dm_ramdrive_load, .store = dm_ramdrive_store, +#ifdef NVM_CACHE_DEBUG + .get_data = dm_ramdrive_get_data, +#endif }; /* private data structure for dm */ @@ -186,3 +189,11 @@ uint32_t dm_ramdrive_store (bdbm_drv_info_t* bdi, const char* fn) return dev_ramssd_store (p->ramssd, fn); } +#ifdef NVM_CACHE_DEBUG +uint8_t* dm_ramdrive_get_data (bdbm_drv_info_t* bdi, int64_t lpa) +{ + dev_ramssd_info_t* ri = bdi->ptr_dm_inf->ptr_private; + + return dev_ramssd_get_data(ri, lpa); +} +#endif diff --git a/devices/ramdrive/dm_ramdrive.h b/devices/ramdrive/dm_ramdrive.h index aedff7e..e4593aa 100644 --- a/devices/ramdrive/dm_ramdrive.h +++ b/devices/ramdrive/dm_ramdrive.h @@ -40,5 +40,11 @@ void dm_ramdrive_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req); uint32_t dm_ramdrive_load (bdbm_drv_info_t* bdi, const char* fn); uint32_t dm_ramdrive_store (bdbm_drv_info_t* bdi, const char* fn); + +#ifdef NVM_CACHE_DEBUG +uint8_t* dm_ramdrive_get_data (bdbm_drv_info_t* bdi, int64_t lpa); +void* __ptr_ramssd_data_to_nvm = NULL; +#endif + #endif diff --git a/devices/ramdrive/modules.order b/devices/ramdrive/modules.order new file mode 100644 index 0000000..91eb05b --- /dev/null +++ b/devices/ramdrive/modules.order @@ -0,0 +1 @@ +kernel//home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.ko diff --git a/devices/ramdrive/risa_dev_ramdrive.ko b/devices/ramdrive/risa_dev_ramdrive.ko new file mode 100755 index 0000000000000000000000000000000000000000..38f8a4df1431dc18fba3159141fb755e1c6e759d GIT binary patch literal 63600 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 uxBnWefOVO5>=5taTz?&}YrYJO<| +#include +#include + +MODULE_INFO(vermagic, VERMAGIC_STRING); + +__visible struct module __this_module +__attribute__((section(".gnu.linkonce.this_module"))) = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +static const struct modversion_info ____versions[] +__used +__attribute__((section("__versions"))) = { + { 0xc6c01fa, __VMLINUX_SYMBOL_STR(module_layout) }, + { 0x3356b90b, __VMLINUX_SYMBOL_STR(cpu_tss) }, + { 0x5289a70c, __VMLINUX_SYMBOL_STR(cdev_del) }, + { 0xd2b09ce5, __VMLINUX_SYMBOL_STR(__kmalloc) }, + { 0x47bc50ec, __VMLINUX_SYMBOL_STR(cdev_init) }, + { 0xf9a482f9, __VMLINUX_SYMBOL_STR(msleep) }, + { 0x6bf1c17f, __VMLINUX_SYMBOL_STR(pv_lock_ops) }, + { 0x16abfc10, __VMLINUX_SYMBOL_STR(param_ops_int) }, + { 0x754d539c, __VMLINUX_SYMBOL_STR(strlen) }, + { 0x43a53735, __VMLINUX_SYMBOL_STR(__alloc_workqueue_key) }, + { 0xf33780ea, __VMLINUX_SYMBOL_STR(send_sig) }, + { 0x8526c35a, __VMLINUX_SYMBOL_STR(remove_wait_queue) }, + { 0xa50a80c2, __VMLINUX_SYMBOL_STR(boot_cpu_data) }, + { 0xe418fde4, __VMLINUX_SYMBOL_STR(hrtimer_cancel) }, + { 0xbf7ea475, __VMLINUX_SYMBOL_STR(device_destroy) }, + { 0x28438de8, __VMLINUX_SYMBOL_STR(filp_close) }, + { 0xf0bcdce2, __VMLINUX_SYMBOL_STR(vfs_fsync) }, + { 0x7485e15e, __VMLINUX_SYMBOL_STR(unregister_chrdev_region) }, + { 0x999e8297, __VMLINUX_SYMBOL_STR(vfree) }, + { 0x75e82745, __VMLINUX_SYMBOL_STR(kthread_create_on_node) }, + { 0x9e88526, __VMLINUX_SYMBOL_STR(__init_waitqueue_head) }, + { 0x4f8b5ddb, __VMLINUX_SYMBOL_STR(_copy_to_user) }, + { 0xffd5a395, __VMLINUX_SYMBOL_STR(default_wake_function) }, + { 0x763f6ebe, __VMLINUX_SYMBOL_STR(vfs_read) }, + { 0xd45ea32f, __VMLINUX_SYMBOL_STR(hrtimer_start_range_ns) }, + { 0xfb578fc5, __VMLINUX_SYMBOL_STR(memset) }, + { 0x3744cf36, __VMLINUX_SYMBOL_STR(vmalloc_to_pfn) }, + { 0x94d77f1e, __VMLINUX_SYMBOL_STR(current_task) }, + { 0x27e1a049, __VMLINUX_SYMBOL_STR(printk) }, + { 0x449ad0a7, __VMLINUX_SYMBOL_STR(memcmp) }, + { 0x8c03d20c, __VMLINUX_SYMBOL_STR(destroy_workqueue) }, + { 0x6dc6dd56, __VMLINUX_SYMBOL_STR(down) }, + { 0xe2d432f9, __VMLINUX_SYMBOL_STR(device_create) }, + { 0xf4eace01, __VMLINUX_SYMBOL_STR(cdev_add) }, + { 0x40a9b349, __VMLINUX_SYMBOL_STR(vzalloc) }, + { 0x5944d015, __VMLINUX_SYMBOL_STR(__cachemode2pte_tbl) }, + { 0xdb7305a1, __VMLINUX_SYMBOL_STR(__stack_chk_fail) }, + { 0x1000e51, __VMLINUX_SYMBOL_STR(schedule) }, + { 0xeebc9775, __VMLINUX_SYMBOL_STR(wake_up_process) }, + { 0xbdfb6dbb, __VMLINUX_SYMBOL_STR(__fentry__) }, + { 0xe259ae9e, __VMLINUX_SYMBOL_STR(_raw_spin_lock) }, + { 0xa6bbd805, __VMLINUX_SYMBOL_STR(__wake_up) }, + { 0x4f68e5c9, __VMLINUX_SYMBOL_STR(do_gettimeofday) }, + { 0xc9fef317, __VMLINUX_SYMBOL_STR(add_wait_queue) }, + { 0x37a0cba, __VMLINUX_SYMBOL_STR(kfree) }, + { 0x662fa11f, __VMLINUX_SYMBOL_STR(remap_pfn_range) }, + { 0x69acdf38, __VMLINUX_SYMBOL_STR(memcpy) }, + { 0x6df1aaf1, __VMLINUX_SYMBOL_STR(kernel_sigaction) }, + { 0x83ba5fbb, __VMLINUX_SYMBOL_STR(hrtimer_init) }, + { 0x78e739aa, __VMLINUX_SYMBOL_STR(up) }, + { 0x67e6ac0a, __VMLINUX_SYMBOL_STR(class_destroy) }, + { 0x2e0d2f7f, __VMLINUX_SYMBOL_STR(queue_work_on) }, + { 0xa1711d91, __VMLINUX_SYMBOL_STR(vmalloc_to_page) }, + { 0x4f6b400b, __VMLINUX_SYMBOL_STR(_copy_from_user) }, + { 0x5b1b1532, __VMLINUX_SYMBOL_STR(__class_create) }, + { 0x29537c9e, __VMLINUX_SYMBOL_STR(alloc_chrdev_region) }, + { 0x760a0f4f, __VMLINUX_SYMBOL_STR(yield) }, + { 0xab132e4b, __VMLINUX_SYMBOL_STR(vfs_write) }, + { 0x1493a5bd, __VMLINUX_SYMBOL_STR(filp_open) }, +}; + +static const char __module_depends[] +__used +__attribute__((section(".modinfo"))) = +"depends="; + + +MODULE_INFO(srcversion, "BEAD42C3269FA379C9E38A6"); diff --git a/err.dmesg b/err.dmesg index 2108920..c0ce0cd 100644 --- a/err.dmesg +++ b/err.dmesg @@ -1,1194 +1,4982 @@ -[ 0.000000] Initializing cgroup subsys cpuset -[ 0.000000] Initializing cgroup subsys cpu -[ 0.000000] Initializing cgroup subsys cpuacct -[ 0.000000] Linux version 4.4.0-42-generic (buildd@lgw01-13) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.2) ) #62-Ubuntu SMP Fri Oct 7 23:11:45 UTC 2016 (Ubuntu 4.4.0-42.62-generic 4.4.21) -[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-42-generic.efi.signed root=UUID=f5bf218f-1f62-4a63-bcfe-1bdb8e06f01c ro quiet splash vt.handoff=7 -[ 0.000000] KERNEL supported cpus: -[ 0.000000] Intel GenuineIntel -[ 0.000000] AMD AuthenticAMD -[ 0.000000] Centaur CentaurHauls -[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256 -[ 0.000000] x86/fpu: xstate_offset[3]: 960, xstate_sizes[3]: 64 -[ 0.000000] x86/fpu: xstate_offset[4]: 1024, xstate_sizes[4]: 64 -[ 0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers' -[ 0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers' -[ 0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers' -[ 0.000000] x86/fpu: Supporting XSAVE feature 0x08: 'MPX bounds registers' -[ 0.000000] x86/fpu: Supporting XSAVE feature 0x10: 'MPX CSR' -[ 0.000000] x86/fpu: Enabled xstate features 0x1f, context size is 1088 bytes, using 'standard' format. -[ 0.000000] x86/fpu: Using 'eager' FPU context switches. -[ 0.000000] e820: BIOS-provided physical RAM map: -[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x0000000000057fff] usable -[ 0.000000] BIOS-e820: [mem 0x0000000000058000-0x0000000000058fff] reserved -[ 0.000000] BIOS-e820: [mem 0x0000000000059000-0x000000000009efff] usable -[ 0.000000] BIOS-e820: [mem 0x000000000009f000-0x000000000009ffff] reserved -[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000008277cfff] usable -[ 0.000000] BIOS-e820: [mem 0x000000008277d000-0x000000008277dfff] ACPI NVS -[ 0.000000] BIOS-e820: [mem 0x000000008277e000-0x00000000827a7fff] reserved -[ 0.000000] BIOS-e820: [mem 0x00000000827a8000-0x00000000827f9fff] usable -[ 0.000000] BIOS-e820: [mem 0x00000000827fa000-0x000000008303afff] reserved -[ 0.000000] BIOS-e820: [mem 0x000000008303b000-0x000000008a2a5fff] usable -[ 0.000000] BIOS-e820: [mem 0x000000008a2a6000-0x000000008a582fff] reserved -[ 0.000000] BIOS-e820: [mem 0x000000008a583000-0x000000008a749fff] usable -[ 0.000000] BIOS-e820: [mem 0x000000008a74a000-0x000000008ada0fff] ACPI NVS -[ 0.000000] BIOS-e820: [mem 0x000000008ada1000-0x000000008b393fff] reserved -[ 0.000000] BIOS-e820: [mem 0x000000008b394000-0x000000008b3fefff] type 20 -[ 0.000000] BIOS-e820: [mem 0x000000008b3ff000-0x000000008b3fffff] usable -[ 0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved -[ 0.000000] BIOS-e820: [mem 0x00000000fe000000-0x00000000fe010fff] reserved -[ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved -[ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved -[ 0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved -[ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000106effffff] usable -[ 0.000000] NX (Execute Disable) protection: active -[ 0.000000] efi: EFI v2.40 by American Megatrends -[ 0.000000] efi: ESRT=0x8b25af98 ACPI=0x8ad5c000 ACPI 2.0=0x8ad5c000 SMBIOS=0xf05e0 MPS=0xfc9d0 -[ 0.000000] esrt: Reserving ESRT space from 0x000000008b25af98 to 0x000000008b25afd0. -[ 0.000000] SMBIOS 3.0 present. -[ 0.000000] DMI: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 -[ 0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved -[ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable -[ 0.000000] e820: last_pfn = 0x106f000 max_arch_pfn = 0x400000000 -[ 0.000000] MTRR default type: write-back -[ 0.000000] MTRR fixed ranges enabled: -[ 0.000000] 00000-9FFFF write-back -[ 0.000000] A0000-BFFFF uncachable -[ 0.000000] C0000-FFFFF write-protect -[ 0.000000] MTRR variable ranges enabled: -[ 0.000000] 0 base 00C0000000 mask 7FC0000000 uncachable -[ 0.000000] 1 base 00A0000000 mask 7FE0000000 uncachable -[ 0.000000] 2 base 0090000000 mask 7FF0000000 uncachable -[ 0.000000] 3 base 008C000000 mask 7FFC000000 uncachable -[ 0.000000] 4 base 008B800000 mask 7FFF800000 uncachable -[ 0.000000] 5 disabled -[ 0.000000] 6 disabled -[ 0.000000] 7 disabled -[ 0.000000] 8 disabled -[ 0.000000] 9 disabled -[ 0.000000] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WC UC- WT -[ 0.000000] e820: last_pfn = 0x8b400 max_arch_pfn = 0x400000000 -[ 0.000000] found SMP MP-table at [mem 0x000fcc70-0x000fcc7f] mapped at [ffff8800000fcc70] -[ 0.000000] Scanning 1 areas for low memory corruption -[ 0.000000] Base memory trampoline at [ffff880000096000] 96000 size 24576 -[ 0.000000] Using GB pages for direct mapping -[ 0.000000] BRK [0x03201000, 0x03201fff] PGTABLE -[ 0.000000] BRK [0x03202000, 0x03202fff] PGTABLE -[ 0.000000] BRK [0x03203000, 0x03203fff] PGTABLE -[ 0.000000] BRK [0x03204000, 0x03204fff] PGTABLE -[ 0.000000] BRK [0x03205000, 0x03205fff] PGTABLE -[ 0.000000] BRK [0x03206000, 0x03206fff] PGTABLE -[ 0.000000] RAMDISK: [mem 0x33aaa000-0x35d4cfff] -[ 0.000000] ACPI: Early table checksum verification disabled -[ 0.000000] ACPI: RSDP 0x000000008AD5C000 000024 (v02 ALASKA) -[ 0.000000] ACPI: XSDT 0x000000008AD5C098 0000B4 (v01 ALASKA A M I 01072009 AMI 00010013) -[ 0.000000] ACPI: FACP 0x000000008AD7E928 00010C (v05 ALASKA A M I 01072009 AMI 00010013) -[ 0.000000] ACPI: DSDT 0x000000008AD5C1E8 02273A (v02 ALASKA A M I 01072009 INTL 20120913) -[ 0.000000] ACPI: FACS 0x000000008ADA0F80 000040 -[ 0.000000] ACPI: APIC 0x000000008AD7EA38 000084 (v03 ALASKA A M I 01072009 AMI 00010013) -[ 0.000000] ACPI: FPDT 0x000000008AD7EAC0 000044 (v01 ALASKA A M I 01072009 AMI 00010013) -[ 0.000000] ACPI: FIDT 0x000000008AD7EB08 00009C (v01 ALASKA A M I 01072009 AMI 00010013) -[ 0.000000] ACPI: MCFG 0x000000008AD7EBA8 00003C (v01 ALASKA A M I 01072009 MSFT 00000097) -[ 0.000000] ACPI: HPET 0x000000008AD7EBE8 000038 (v01 ALASKA A M I 01072009 AMI. 0005000B) -[ 0.000000] ACPI: SSDT 0x000000008AD7EC20 00036D (v01 SataRe SataTabl 00001000 INTL 20120913) -[ 0.000000] ACPI: LPIT 0x000000008AD7EF90 000094 (v01 INTEL SKL 00000000 MSFT 0000005F) -[ 0.000000] ACPI: SSDT 0x000000008AD7F028 000248 (v02 INTEL sensrhub 00000000 INTL 20120913) -[ 0.000000] ACPI: SSDT 0x000000008AD7F270 002BAE (v02 INTEL PtidDevc 00001000 INTL 20120913) -[ 0.000000] ACPI: SSDT 0x000000008AD81E20 000C45 (v02 INTEL Ther_Rvp 00001000 INTL 20120913) -[ 0.000000] ACPI: DBGP 0x000000008AD82A68 000034 (v01 INTEL 00000000 MSFT 0000005F) -[ 0.000000] ACPI: DBG2 0x000000008AD82AA0 000054 (v00 INTEL 00000000 MSFT 0000005F) -[ 0.000000] ACPI: SSDT 0x000000008AD82AF8 000615 (v02 INTEL xh_rvp08 00000000 INTL 20120913) -[ 0.000000] ACPI: SSDT 0x000000008AD83110 0053B2 (v02 SaSsdt SaSsdt 00003000 INTL 20120913) -[ 0.000000] ACPI: UEFI 0x000000008AD884C8 000042 (v01 00000000 00000000) -[ 0.000000] ACPI: SSDT 0x000000008AD88510 000E9A (v02 CpuRef CpuSsdt 00003000 INTL 20120913) -[ 0.000000] ACPI: BGRT 0x000000008AD893B0 000038 (v01 ALASKA A M I 01072009 AMI 00010013) -[ 0.000000] ACPI: Local APIC address 0xfee00000 -[ 0.000000] No NUMA configuration found -[ 0.000000] Faking a node at [mem 0x0000000000000000-0x000000106effffff] -[ 0.000000] NODE_DATA(0) allocated [mem 0x106eff6000-0x106effafff] -[ 0.000000] Zone ranges: -[ 0.000000] DMA [mem 0x0000000000001000-0x0000000000ffffff] -[ 0.000000] DMA32 [mem 0x0000000001000000-0x00000000ffffffff] -[ 0.000000] Normal [mem 0x0000000100000000-0x000000106effffff] -[ 0.000000] Device empty -[ 0.000000] Movable zone start for each node -[ 0.000000] Early memory node ranges -[ 0.000000] node 0: [mem 0x0000000000001000-0x0000000000057fff] -[ 0.000000] node 0: [mem 0x0000000000059000-0x000000000009efff] -[ 0.000000] node 0: [mem 0x0000000000100000-0x000000008277cfff] -[ 0.000000] node 0: [mem 0x00000000827a8000-0x00000000827f9fff] -[ 0.000000] node 0: [mem 0x000000008303b000-0x000000008a2a5fff] -[ 0.000000] node 0: [mem 0x000000008a583000-0x000000008a749fff] -[ 0.000000] node 0: [mem 0x000000008b3ff000-0x000000008b3fffff] -[ 0.000000] node 0: [mem 0x0000000100000000-0x000000106effffff] -[ 0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000106effffff] -[ 0.000000] On node 0 totalpages: 16747423 -[ 0.000000] DMA zone: 64 pages used for memmap -[ 0.000000] DMA zone: 26 pages reserved -[ 0.000000] DMA zone: 3997 pages, LIFO batch:0 -[ 0.000000] DMA32 zone: 8753 pages used for memmap -[ 0.000000] DMA32 zone: 560130 pages, LIFO batch:31 -[ 0.000000] Normal zone: 252864 pages used for memmap -[ 0.000000] Normal zone: 16183296 pages, LIFO batch:31 -[ 0.000000] Reserving Intel graphics stolen memory at 0x8c000000-0x8fffffff -[ 0.000000] ACPI: PM-Timer IO Port: 0x1808 -[ 0.000000] ACPI: Local APIC address 0xfee00000 -[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) -[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1]) -[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1]) -[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x04] high edge lint[0x1]) -[ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-119 -[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) -[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) -[ 0.000000] ACPI: IRQ0 used by override. -[ 0.000000] ACPI: IRQ9 used by override. -[ 0.000000] Using ACPI (MADT) for SMP configuration information -[ 0.000000] ACPI: HPET id: 0x8086a701 base: 0xfed00000 -[ 0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs -[ 0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff] -[ 0.000000] PM: Registered nosave memory: [mem 0x00058000-0x00058fff] -[ 0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff] -[ 0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000fffff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8277d000-0x8277dfff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8277e000-0x827a7fff] -[ 0.000000] PM: Registered nosave memory: [mem 0x827fa000-0x8303afff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8a2a6000-0x8a582fff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8a74a000-0x8ada0fff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8ada1000-0x8b393fff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8b394000-0x8b3fefff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8b400000-0x8bffffff] -[ 0.000000] PM: Registered nosave memory: [mem 0x8c000000-0x8fffffff] -[ 0.000000] PM: Registered nosave memory: [mem 0x90000000-0xdfffffff] -[ 0.000000] PM: Registered nosave memory: [mem 0xe0000000-0xefffffff] -[ 0.000000] PM: Registered nosave memory: [mem 0xf0000000-0xfdffffff] -[ 0.000000] PM: Registered nosave memory: [mem 0xfe000000-0xfe010fff] -[ 0.000000] PM: Registered nosave memory: [mem 0xfe011000-0xfebfffff] -[ 0.000000] PM: Registered nosave memory: [mem 0xfec00000-0xfec00fff] -[ 0.000000] PM: Registered nosave memory: [mem 0xfec01000-0xfedfffff] -[ 0.000000] PM: Registered nosave memory: [mem 0xfee00000-0xfee00fff] -[ 0.000000] PM: Registered nosave memory: [mem 0xfee01000-0xfeffffff] -[ 0.000000] PM: Registered nosave memory: [mem 0xff000000-0xffffffff] -[ 0.000000] e820: [mem 0x90000000-0xdfffffff] available for PCI devices -[ 0.000000] Booting paravirtualized kernel on bare hardware -[ 0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns -[ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:4 nr_node_ids:1 -[ 0.000000] PERCPU: Embedded 33 pages/cpu @ffff88106ec00000 s98008 r8192 d28968 u524288 -[ 0.000000] pcpu-alloc: s98008 r8192 d28968 u524288 alloc=1*2097152 -[ 0.000000] pcpu-alloc: [0] 0 1 2 3 -[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 16485716 -[ 0.000000] Policy zone: Normal -[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-42-generic.efi.signed root=UUID=f5bf218f-1f62-4a63-bcfe-1bdb8e06f01c ro quiet splash vt.handoff=7 -[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) -[ 0.000000] Calgary: detecting Calgary via BIOS EBDA area -[ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! -[ 0.000000] Memory: 65700716K/66989692K available (8409K kernel code, 1283K rwdata, 3944K rodata, 1480K init, 1292K bss, 1288976K reserved, 0K cma-reserved) -[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 -[ 0.000000] Hierarchical RCU implementation. -[ 0.000000] Build-time adjustment of leaf fanout to 64. -[ 0.000000] RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4. -[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=4 -[ 0.000000] NR_IRQS:16640 nr_irqs:1024 16 -[ 0.000000] spurious 8259A interrupt: IRQ7. -[ 0.000000] vt handoff: transparent VT on vt#7 -[ 0.000000] Console: colour dummy device 80x25 -[ 0.000000] console [tty0] enabled -[ 0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635855245 ns -[ 0.000000] hpet clockevent registered -[ 0.000000] tsc: PIT calibration matches HPET. 1 loops -[ 0.000000] tsc: Detected 3311.937 MHz processor -[ 0.000021] Calibrating delay loop (skipped), value calculated using timer frequency.. 6623.87 BogoMIPS (lpj=13247748) -[ 0.000023] pid_max: default: 32768 minimum: 301 -[ 0.000026] ACPI: Core revision 20150930 -[ 0.018747] ACPI Error: [\_SB_.PCI0.XHC_.RHUB.HS11] Namespace lookup failure, AE_NOT_FOUND (20150930/dswload-210) -[ 0.018751] ACPI Exception: AE_NOT_FOUND, During name lookup/catalog (20150930/psobject-227) -[ 0.018779] ACPI Exception: AE_NOT_FOUND, (SSDT:xh_rvp08) while loading table (20150930/tbxfload-193) -[ 0.024974] ACPI Error: 1 table load failures, 7 successful (20150930/tbxfload-214) -[ 0.026880] Security Framework initialized -[ 0.026881] Yama: becoming mindful. -[ 0.026889] AppArmor: AppArmor initialized -[ 0.029457] Dentry cache hash table entries: 8388608 (order: 14, 67108864 bytes) -[ 0.037884] Inode-cache hash table entries: 4194304 (order: 13, 33554432 bytes) -[ 0.041508] Mount-cache hash table entries: 131072 (order: 8, 1048576 bytes) -[ 0.041549] Mountpoint-cache hash table entries: 131072 (order: 8, 1048576 bytes) -[ 0.041828] Initializing cgroup subsys io -[ 0.041830] Initializing cgroup subsys memory -[ 0.041834] Initializing cgroup subsys devices -[ 0.041836] Initializing cgroup subsys freezer -[ 0.041837] Initializing cgroup subsys net_cls -[ 0.041838] Initializing cgroup subsys perf_event -[ 0.041840] Initializing cgroup subsys net_prio -[ 0.041841] Initializing cgroup subsys hugetlb -[ 0.041842] Initializing cgroup subsys pids -[ 0.041859] CPU: Physical Processor ID: 0 -[ 0.041859] CPU: Processor Core ID: 0 -[ 0.042768] mce: CPU supports 10 MCE banks -[ 0.042781] CPU0: Thermal monitoring enabled (TM1) -[ 0.042789] process: using mwait in idle threads -[ 0.042791] Last level iTLB entries: 4KB 128, 2MB 8, 4MB 8 -[ 0.042792] Last level dTLB entries: 4KB 64, 2MB 0, 4MB 0, 1GB 4 -[ 0.043045] Freeing SMP alternatives memory: 32K (ffffffff820b4000 - ffffffff820bc000) -[ 0.047036] ftrace: allocating 32007 entries in 126 pages -[ 0.056641] smpboot: Max logical packages: 1 -[ 0.056643] smpboot: APIC(0) Converting physical 0 to logical package 0 -[ 0.057904] x2apic: IRQ remapping doesn't support X2APIC mode -[ 0.060978] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0 -[ 0.100667] TSC deadline timer enabled -[ 0.100672] smpboot: CPU0: Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz (family: 0x6, model: 0x5e, stepping: 0x3) -[ 0.100683] Performance Events: PEBS fmt3+, 32-deep LBR, Skylake events, full-width counters, Intel PMU driver. -[ 0.100704] ... version: 4 -[ 0.100705] ... bit width: 48 -[ 0.100705] ... generic registers: 8 -[ 0.100706] ... value mask: 0000ffffffffffff -[ 0.100707] ... max period: 0000ffffffffffff -[ 0.100707] ... fixed-purpose events: 3 -[ 0.100708] ... event mask: 00000007000000ff -[ 0.101249] x86: Booting SMP configuration: -[ 0.101250] .... node #0, CPUs: #1 -[ 0.104595] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter. -[ 0.104639] #2 #3 -[ 0.111156] x86: Booted up 1 node, 4 CPUs -[ 0.111159] smpboot: Total of 4 processors activated (26495.49 BogoMIPS) -[ 0.113681] devtmpfs: initialized -[ 0.113720] memory block size : 128MB -[ 0.118569] evm: security.selinux -[ 0.118570] evm: security.SMACK64 -[ 0.118571] evm: security.SMACK64EXEC -[ 0.118571] evm: security.SMACK64TRANSMUTE -[ 0.118572] evm: security.SMACK64MMAP -[ 0.118572] evm: security.ima -[ 0.118573] evm: security.capability -[ 0.118610] PM: Registering ACPI NVS region [mem 0x8277d000-0x8277dfff] (4096 bytes) -[ 0.118611] PM: Registering ACPI NVS region [mem 0x8a74a000-0x8ada0fff] (6647808 bytes) -[ 0.118703] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns -[ 0.118759] pinctrl core: initialized pinctrl subsystem -[ 0.118905] RTC time: 11:25:23, date: 10/23/16 -[ 0.119700] NET: Registered protocol family 16 -[ 0.133540] cpuidle: using governor ladder -[ 0.145542] cpuidle: using governor menu -[ 0.145545] PCCT header not found. -[ 0.145589] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it -[ 0.145590] ACPI: bus type PCI registered -[ 0.145591] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 -[ 0.145639] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) -[ 0.145641] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 -[ 0.145649] PCI: Using configuration type 1 for base access -[ 0.157747] ACPI: Added _OSI(Module Device) -[ 0.157748] ACPI: Added _OSI(Processor Device) -[ 0.157749] ACPI: Added _OSI(3.0 _SCP Extensions) -[ 0.157750] ACPI: Added _OSI(Processor Aggregator Device) -[ 0.162929] ACPI: Executed 21 blocks of module-level executable AML code -[ 0.167095] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored -[ 0.169351] ACPI: Dynamic OEM Table Load: -[ 0.169358] ACPI: SSDT 0xFFFF8810270E3000 0006C3 (v02 PmRef Cpu0Ist 00003000 INTL 20120913) -[ 0.169980] ACPI: \_PR_.CPU0: _OSC native thermal LVT Acked -[ 0.171058] ACPI: Dynamic OEM Table Load: -[ 0.171062] ACPI: SSDT 0xFFFF88102712D800 00037F (v02 PmRef Cpu0Cst 00003001 INTL 20120913) -[ 0.172152] ACPI: Dynamic OEM Table Load: -[ 0.172156] ACPI: SSDT 0xFFFF8810270E3800 0005AA (v02 PmRef ApIst 00003000 INTL 20120913) -[ 0.172902] ACPI: Dynamic OEM Table Load: -[ 0.172905] ACPI: SSDT 0xFFFF881027161600 000119 (v02 PmRef ApCst 00003000 INTL 20120913) -[ 0.174970] ACPI: Interpreter enabled -[ 0.174977] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20150930/hwxface-580) -[ 0.174983] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20150930/hwxface-580) -[ 0.174998] ACPI: (supports S0 S3 S4 S5) -[ 0.174999] ACPI: Using IOAPIC for interrupt routing -[ 0.175022] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug -[ 0.176433] ACPI: Power Resource [PG00] (on) -[ 0.176706] ACPI: Power Resource [PG01] (on) -[ 0.176948] ACPI: Power Resource [PG02] (on) -[ 0.178015] ACPI: Power Resource [WRST] (off) -[ 0.178230] ACPI: Power Resource [WRST] (off) -[ 0.178449] ACPI: Power Resource [WRST] (off) -[ 0.178660] ACPI: Power Resource [WRST] (off) -[ 0.178872] ACPI: Power Resource [WRST] (off) -[ 0.179086] ACPI: Power Resource [WRST] (off) -[ 0.179303] ACPI: Power Resource [WRST] (off) -[ 0.179518] ACPI: Power Resource [WRST] (off) -[ 0.179730] ACPI: Power Resource [WRST] (off) -[ 0.179941] ACPI: Power Resource [WRST] (off) -[ 0.180154] ACPI: Power Resource [WRST] (off) -[ 0.180367] ACPI: Power Resource [WRST] (off) -[ 0.180586] ACPI: Power Resource [WRST] (off) -[ 0.180858] ACPI: Power Resource [WRST] (off) -[ 0.181072] ACPI: Power Resource [WRST] (off) -[ 0.181285] ACPI: Power Resource [WRST] (off) -[ 0.181499] ACPI: Power Resource [WRST] (off) -[ 0.181715] ACPI: Power Resource [WRST] (off) -[ 0.181936] ACPI: Power Resource [WRST] (off) -[ 0.182147] ACPI: Power Resource [WRST] (off) -[ 0.186918] ACPI: Power Resource [FN00] (off) -[ 0.186966] ACPI: Power Resource [FN01] (off) -[ 0.187012] ACPI: Power Resource [FN02] (off) -[ 0.187058] ACPI: Power Resource [FN03] (off) -[ 0.187104] ACPI: Power Resource [FN04] (off) -[ 0.187884] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe]) -[ 0.187888] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] -[ 0.187909] \_SB_.PCI0:_OSC invalid UUID -[ 0.187910] _OSC request data:1 1f 0 -[ 0.187912] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM -[ 0.188394] PCI host bridge to bus 0000:00 -[ 0.188396] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window] -[ 0.188397] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window] -[ 0.188398] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window] -[ 0.188399] pci_bus 0000:00: root bus resource [mem 0x91000000-0xdfffffff window] -[ 0.188400] pci_bus 0000:00: root bus resource [mem 0xfd000000-0xfe7fffff window] -[ 0.188401] pci_bus 0000:00: root bus resource [bus 00-fe] -[ 0.188407] pci 0000:00:00.0: [8086:191f] type 00 class 0x060000 -[ 0.188620] pci 0000:00:02.0: [8086:1912] type 00 class 0x030000 -[ 0.188630] pci 0000:00:02.0: reg 0x10: [mem 0xde000000-0xdeffffff 64bit] -[ 0.188634] pci 0000:00:02.0: reg 0x18: [mem 0xc0000000-0xcfffffff 64bit pref] -[ 0.188637] pci 0000:00:02.0: reg 0x20: [io 0xf000-0xf03f] -[ 0.188737] pci 0000:00:08.0: [8086:1911] type 00 class 0x088000 -[ 0.188746] pci 0000:00:08.0: reg 0x10: [mem 0xdf152000-0xdf152fff 64bit] -[ 0.188857] pci 0000:00:14.0: [8086:a12f] type 00 class 0x0c0330 -[ 0.188879] pci 0000:00:14.0: reg 0x10: [mem 0xdf130000-0xdf13ffff 64bit] -[ 0.188926] pci 0000:00:14.0: PME# supported from D3hot D3cold -[ 0.188999] pci 0000:00:14.0: System wakeup disabled by ACPI -[ 0.189026] pci 0000:00:14.2: [8086:a131] type 00 class 0x118000 -[ 0.189048] pci 0000:00:14.2: reg 0x10: [mem 0xdf151000-0xdf151fff 64bit] -[ 0.189201] pci 0000:00:15.0: [8086:a160] type 00 class 0x118000 -[ 0.189256] pci 0000:00:15.0: reg 0x10: [mem 0xdf150000-0xdf150fff 64bit] -[ 0.189464] pci 0000:00:15.1: [8086:a161] type 00 class 0x118000 -[ 0.189520] pci 0000:00:15.1: reg 0x10: [mem 0xdf14f000-0xdf14ffff 64bit] -[ 0.189720] pci 0000:00:16.0: [8086:a13a] type 00 class 0x078000 -[ 0.189769] pci 0000:00:16.0: reg 0x10: [mem 0xdf14e000-0xdf14efff 64bit] -[ 0.189858] pci 0000:00:16.0: PME# supported from D3hot -[ 0.189969] pci 0000:00:17.0: [8086:a102] type 00 class 0x010601 -[ 0.189987] pci 0000:00:17.0: reg 0x10: [mem 0xdf148000-0xdf149fff] -[ 0.189993] pci 0000:00:17.0: reg 0x14: [mem 0xdf14d000-0xdf14d0ff] -[ 0.189999] pci 0000:00:17.0: reg 0x18: [io 0xf090-0xf097] -[ 0.190005] pci 0000:00:17.0: reg 0x1c: [io 0xf080-0xf083] -[ 0.190011] pci 0000:00:17.0: reg 0x20: [io 0xf060-0xf07f] -[ 0.190017] pci 0000:00:17.0: reg 0x24: [mem 0xdf14c000-0xdf14c7ff] -[ 0.190042] pci 0000:00:17.0: PME# supported from D3hot -[ 0.190136] pci 0000:00:1b.0: [8086:a167] type 01 class 0x060400 -[ 0.190184] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold -[ 0.190265] pci 0000:00:1b.0: System wakeup disabled by ACPI -[ 0.190315] pci 0000:00:1d.0: [8086:a118] type 01 class 0x060400 -[ 0.190358] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold -[ 0.190434] pci 0000:00:1d.0: System wakeup disabled by ACPI -[ 0.190459] pci 0000:00:1d.2: [8086:a11a] type 01 class 0x060400 -[ 0.190506] pci 0000:00:1d.2: PME# supported from D0 D3hot D3cold -[ 0.190584] pci 0000:00:1d.2: System wakeup disabled by ACPI -[ 0.190662] pci 0000:00:1e.0: [8086:a127] type 00 class 0x118000 -[ 0.190717] pci 0000:00:1e.0: reg 0x10: [mem 0xdf14b000-0xdf14bfff 64bit] -[ 0.190917] pci 0000:00:1f.0: [8086:a145] type 00 class 0x060100 -[ 0.191090] pci 0000:00:1f.2: [8086:a121] type 00 class 0x058000 -[ 0.191100] pci 0000:00:1f.2: reg 0x10: [mem 0xdf144000-0xdf147fff] -[ 0.191215] pci 0000:00:1f.3: [8086:a170] type 00 class 0x040300 -[ 0.191243] pci 0000:00:1f.3: reg 0x10: [mem 0xdf140000-0xdf143fff 64bit] -[ 0.191265] pci 0000:00:1f.3: reg 0x20: [mem 0xdf120000-0xdf12ffff 64bit] -[ 0.191294] pci 0000:00:1f.3: PME# supported from D3hot D3cold -[ 0.191398] pci 0000:00:1f.3: System wakeup disabled by ACPI -[ 0.191428] pci 0000:00:1f.4: [8086:a123] type 00 class 0x0c0500 -[ 0.191481] pci 0000:00:1f.4: reg 0x10: [mem 0xdf14a000-0xdf14a0ff 64bit] -[ 0.191550] pci 0000:00:1f.4: reg 0x20: [io 0xf040-0xf05f] -[ 0.191701] pci 0000:00:1f.6: [8086:15b8] type 00 class 0x020000 -[ 0.191736] pci 0000:00:1f.6: reg 0x10: [mem 0xdf100000-0xdf11ffff] -[ 0.191822] pci 0000:00:1f.6: PME# supported from D0 D3hot D3cold -[ 0.191893] pci 0000:00:1f.6: System wakeup disabled by ACPI -[ 0.191982] pci 0000:01:00.0: [144d:a802] type 00 class 0x010802 -[ 0.192008] pci 0000:01:00.0: reg 0x10: [mem 0xdf010000-0xdf013fff 64bit] -[ 0.192013] pci 0000:01:00.0: reg 0x18: [io 0xe000-0xe0ff] -[ 0.192032] pci 0000:01:00.0: reg 0x30: [mem 0xdf000000-0xdf00ffff pref] -[ 0.192124] pci 0000:01:00.0: System wakeup disabled by ACPI -[ 0.197863] pci 0000:00:1b.0: PCI bridge to [bus 01] -[ 0.197865] pci 0000:00:1b.0: bridge window [io 0xe000-0xefff] -[ 0.197867] pci 0000:00:1b.0: bridge window [mem 0xdf000000-0xdf0fffff] -[ 0.197934] acpiphp: Slot [1] registered -[ 0.197937] pci 0000:00:1d.0: PCI bridge to [bus 02] -[ 0.198014] pci 0000:03:00.0: [1b21:1080] type 01 class 0x060400 -[ 0.198125] pci 0000:03:00.0: supports D1 D2 -[ 0.198126] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold -[ 0.198173] pci 0000:03:00.0: System wakeup disabled by ACPI -[ 0.205864] pci 0000:00:1d.2: PCI bridge to [bus 03-04] -[ 0.205968] pci 0000:03:00.0: PCI bridge to [bus 04] -[ 0.207291] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.207326] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 *10 11 12 14 15) -[ 0.207361] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.207395] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.207428] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.207462] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.207495] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.207528] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 *11 12 14 15) -[ 0.207803] ACPI: Enabled 5 GPEs in block 00 to 7F -[ 0.207873] vgaarb: setting as boot device: PCI:0000:00:02.0 -[ 0.207874] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none -[ 0.207876] vgaarb: loaded -[ 0.207877] vgaarb: bridge control possible 0000:00:02.0 -[ 0.208001] SCSI subsystem initialized -[ 0.208019] libata version 3.00 loaded. -[ 0.208031] ACPI: bus type USB registered -[ 0.208043] usbcore: registered new interface driver usbfs -[ 0.208047] usbcore: registered new interface driver hub -[ 0.208055] usbcore: registered new device driver usb -[ 0.208163] PCI: Using ACPI for IRQ routing -[ 0.236023] PCI: pci_cache_line_size set to 64 bytes -[ 0.236113] e820: reserve RAM buffer [mem 0x00058000-0x0005ffff] -[ 0.236114] e820: reserve RAM buffer [mem 0x0009f000-0x0009ffff] -[ 0.236115] e820: reserve RAM buffer [mem 0x8277d000-0x83ffffff] -[ 0.236115] e820: reserve RAM buffer [mem 0x827fa000-0x83ffffff] -[ 0.236116] e820: reserve RAM buffer [mem 0x8a2a6000-0x8bffffff] -[ 0.236117] e820: reserve RAM buffer [mem 0x8a74a000-0x8bffffff] -[ 0.236118] e820: reserve RAM buffer [mem 0x8b400000-0x8bffffff] -[ 0.236119] e820: reserve RAM buffer [mem 0x106f000000-0x106fffffff] -[ 0.236187] NetLabel: Initializing -[ 0.236188] NetLabel: domain hash size = 128 -[ 0.236188] NetLabel: protocols = UNLABELED CIPSOv4 -[ 0.236196] NetLabel: unlabeled traffic allowed by default -[ 0.236274] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0 -[ 0.236277] hpet0: 8 comparators, 64-bit 24.000000 MHz counter -[ 0.238312] amd_nb: Cannot enumerate AMD northbridges -[ 0.238322] clocksource: Switched to clocksource hpet -[ 0.242081] AppArmor: AppArmor Filesystem Enabled -[ 0.242112] pnp: PnP ACPI init -[ 0.242292] system 00:00: [io 0x0a00-0x0a0f] has been reserved -[ 0.242293] system 00:00: [io 0x0a10-0x0a1f] has been reserved -[ 0.242294] system 00:00: [io 0x0a20-0x0a2f] has been reserved -[ 0.242295] system 00:00: [io 0x0a30-0x0a3f] has been reserved -[ 0.242297] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.242444] system 00:01: [io 0x0680-0x069f] has been reserved -[ 0.242445] system 00:01: [io 0xffff] has been reserved -[ 0.242446] system 00:01: [io 0xffff] has been reserved -[ 0.242447] system 00:01: [io 0xffff] has been reserved -[ 0.242448] system 00:01: [io 0x1800-0x18fe] could not be reserved -[ 0.242449] system 00:01: [io 0x164e-0x164f] has been reserved -[ 0.242451] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.242507] system 00:02: [io 0x0800-0x087f] has been reserved -[ 0.242508] system 00:02: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.242521] pnp 00:03: Plug and Play ACPI device, IDs PNP0b00 (active) -[ 0.242545] system 00:04: [io 0x1854-0x1857] has been reserved -[ 0.242546] system 00:04: Plug and Play ACPI device, IDs INT3f0d PNP0c02 (active) -[ 0.242682] system 00:05: [mem 0xfed10000-0xfed17fff] has been reserved -[ 0.242683] system 00:05: [mem 0xfed18000-0xfed18fff] has been reserved -[ 0.242684] system 00:05: [mem 0xfed19000-0xfed19fff] has been reserved -[ 0.242685] system 00:05: [mem 0xe0000000-0xefffffff] has been reserved -[ 0.242686] system 00:05: [mem 0xfed20000-0xfed3ffff] has been reserved -[ 0.242687] system 00:05: [mem 0xfed90000-0xfed93fff] has been reserved -[ 0.242688] system 00:05: [mem 0xfed45000-0xfed8ffff] has been reserved -[ 0.242690] system 00:05: [mem 0xff000000-0xffffffff] has been reserved -[ 0.242691] system 00:05: [mem 0xfee00000-0xfeefffff] could not be reserved -[ 0.242692] system 00:05: [mem 0xdffc0000-0xdffdffff] has been reserved -[ 0.242693] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.242718] system 00:06: [mem 0xfd000000-0xfdabffff] has been reserved -[ 0.242720] system 00:06: [mem 0xfdad0000-0xfdadffff] has been reserved -[ 0.242721] system 00:06: [mem 0xfdb00000-0xfdffffff] has been reserved -[ 0.242722] system 00:06: [mem 0xfe000000-0xfe01ffff] could not be reserved -[ 0.242723] system 00:06: [mem 0xfe036000-0xfe03bfff] has been reserved -[ 0.242724] system 00:06: [mem 0xfe03d000-0xfe3fffff] has been reserved -[ 0.242725] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.242903] system 00:07: [io 0xff00-0xfffe] has been reserved -[ 0.242904] system 00:07: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.243514] system 00:08: Plug and Play ACPI device, IDs PNP0c02 (active) -[ 0.244060] pnp: PnP ACPI: found 9 devices -[ 0.251992] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns -[ 0.252019] pci 0000:00:1b.0: PCI bridge to [bus 01] -[ 0.252021] pci 0000:00:1b.0: bridge window [io 0xe000-0xefff] -[ 0.252024] pci 0000:00:1b.0: bridge window [mem 0xdf000000-0xdf0fffff] -[ 0.252028] pci 0000:00:1d.0: PCI bridge to [bus 02] -[ 0.252034] pci 0000:03:00.0: PCI bridge to [bus 04] -[ 0.252048] pci 0000:00:1d.2: PCI bridge to [bus 03-04] -[ 0.252055] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window] -[ 0.252056] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window] -[ 0.252057] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window] -[ 0.252058] pci_bus 0000:00: resource 7 [mem 0x91000000-0xdfffffff window] -[ 0.252059] pci_bus 0000:00: resource 8 [mem 0xfd000000-0xfe7fffff window] -[ 0.252060] pci_bus 0000:01: resource 0 [io 0xe000-0xefff] -[ 0.252061] pci_bus 0000:01: resource 1 [mem 0xdf000000-0xdf0fffff] -[ 0.252079] NET: Registered protocol family 2 -[ 0.252245] TCP established hash table entries: 524288 (order: 10, 4194304 bytes) -[ 0.252662] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) -[ 0.252747] TCP: Hash tables configured (established 524288 bind 65536) -[ 0.252781] UDP hash table entries: 32768 (order: 8, 1048576 bytes) -[ 0.252902] UDP-Lite hash table entries: 32768 (order: 8, 1048576 bytes) -[ 0.253011] NET: Registered protocol family 1 -[ 0.253021] pci 0000:00:02.0: Video device with shadowed ROM -[ 0.253221] PCI: CLS 0 bytes, default 64 -[ 0.253249] Trying to unpack rootfs image as initramfs... -[ 0.631706] Freeing initrd memory: 35468K (ffff880033aaa000 - ffff880035d4d000) -[ 0.631733] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) -[ 0.631735] software IO TLB [mem 0x7e3ab000-0x823ab000] (64MB) mapped at [ffff88007e3ab000-ffff8800823aafff] -[ 0.631859] Scanning for low memory corruption every 60 seconds -[ 0.632126] futex hash table entries: 1024 (order: 4, 65536 bytes) -[ 0.632146] audit: initializing netlink subsys (disabled) -[ 0.632157] audit: type=2000 audit(1477221923.636:1): initialized -[ 0.632405] Initialise system trusted keyring -[ 0.632558] HugeTLB registered 1 GB page size, pre-allocated 0 pages -[ 0.632559] HugeTLB registered 2 MB page size, pre-allocated 0 pages -[ 0.633438] zbud: loaded -[ 0.633592] VFS: Disk quotas dquot_6.6.0 -[ 0.633611] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) -[ 0.633765] squashfs: version 4.0 (2009/01/31) Phillip Lougher -[ 0.633957] fuse init (API version 7.23) -[ 0.634056] Key type big_key registered -[ 0.634074] Allocating IMA MOK and blacklist keyrings. -[ 0.635087] Key type asymmetric registered -[ 0.635088] Asymmetric key parser 'x509' registered -[ 0.635109] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249) -[ 0.635173] io scheduler noop registered -[ 0.635174] io scheduler deadline registered (default) -[ 0.635191] io scheduler cfq registered -[ 0.635518] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 -[ 0.635522] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 -[ 0.635544] efifb: probing for efifb -[ 0.635552] efifb: framebuffer at 0xc0000000, mapped to 0xffffc90006c00000, using 3072k, total 3072k -[ 0.635553] efifb: mode is 1024x768x32, linelength=4096, pages=1 -[ 0.635553] efifb: scrolling: redraw -[ 0.635554] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0 -[ 0.635620] Console: switching to colour frame buffer device 128x48 -[ 0.635627] fb0: EFI VGA frame buffer device -[ 0.635633] intel_idle: MWAIT substates: 0x142120 -[ 0.635633] intel_idle: v0.4.1 model 0x5E -[ 0.635634] intel_idle: lapic_timer_reliable_states 0xffffffff -[ 0.635808] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input0 -[ 0.635811] ACPI: Sleep Button [SLPB] -[ 0.635831] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1 -[ 0.635832] ACPI: Power Button [PWRB] -[ 0.635852] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 -[ 0.635854] ACPI: Power Button [PWRF] -[ 0.636393] thermal LNXTHERM:00: registered as thermal_zone0 -[ 0.636394] ACPI: Thermal Zone [TZ00] (28 C) -[ 0.636473] thermal LNXTHERM:01: registered as thermal_zone1 -[ 0.636474] ACPI: Thermal Zone [TZ01] (30 C) -[ 0.636498] GHES: HEST is not enabled! -[ 0.636588] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled -[ 0.657147] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A -[ 0.677768] serial8250: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A -[ 0.680637] Linux agpgart interface v0.103 -[ 0.684314] brd: module loaded -[ 0.685917] loop: module loaded -[ 0.686034] libphy: Fixed MDIO Bus: probed -[ 0.686036] tun: Universal TUN/TAP device driver, 1.6 -[ 0.686037] tun: (C) 1999-2004 Max Krasnyansky -[ 0.686086] PPP generic driver version 2.4.2 -[ 0.686149] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver -[ 0.686151] ehci-pci: EHCI PCI platform driver -[ 0.686157] ehci-platform: EHCI generic platform driver -[ 0.686164] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver -[ 0.686166] ohci-pci: OHCI PCI platform driver -[ 0.686171] ohci-platform: OHCI generic platform driver -[ 0.686177] uhci_hcd: USB Universal Host Controller Interface driver -[ 0.686273] xhci_hcd 0000:00:14.0: xHCI Host Controller -[ 0.686277] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1 -[ 0.687349] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x00109810 -[ 0.687352] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported -[ 0.687413] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 -[ 0.687414] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 -[ 0.687415] usb usb1: Product: xHCI Host Controller -[ 0.687416] usb usb1: Manufacturer: Linux 4.4.0-42-generic xhci-hcd -[ 0.687416] usb usb1: SerialNumber: 0000:00:14.0 -[ 0.687526] hub 1-0:1.0: USB hub found -[ 0.687539] hub 1-0:1.0: 16 ports detected -[ 0.694849] xhci_hcd 0000:00:14.0: xHCI Host Controller -[ 0.694851] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2 -[ 0.694870] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003 -[ 0.694871] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 -[ 0.694872] usb usb2: Product: xHCI Host Controller -[ 0.694873] usb usb2: Manufacturer: Linux 4.4.0-42-generic xhci-hcd -[ 0.694874] usb usb2: SerialNumber: 0000:00:14.0 -[ 0.694976] hub 2-0:1.0: USB hub found -[ 0.694986] hub 2-0:1.0: 10 ports detected -[ 0.699556] i8042: PNP: No PS/2 controller found. Probing ports directly. -[ 0.702863] serio: i8042 KBD port at 0x60,0x64 irq 1 -[ 0.702866] serio: i8042 AUX port at 0x60,0x64 irq 12 -[ 0.703056] mousedev: PS/2 mouse device common for all mice -[ 0.703397] rtc_cmos 00:03: RTC can wake from S4 -[ 0.703814] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 -[ 0.703897] rtc_cmos 00:03: alarms up to one month, y3k, 242 bytes nvram, hpet irqs -[ 0.703901] i2c /dev entries driver -[ 0.703932] device-mapper: uevent: version 1.0.3 -[ 0.704043] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@redhat.com -[ 0.704056] Intel P-state driver initializing. -[ 0.704058] intel_pstate: HWP enabled -[ 0.704860] ledtrig-cpu: registered to indicate activity on CPUs -[ 0.704864] EFI Variables Facility v0.08 2004-May-17 -[ 0.710231] NET: Registered protocol family 10 -[ 0.710645] NET: Registered protocol family 17 -[ 0.710654] Key type dns_resolver registered -[ 0.710859] microcode: CPU0 sig=0x506e3, pf=0x2, revision=0x33 -[ 0.710878] microcode: CPU1 sig=0x506e3, pf=0x2, revision=0x33 -[ 0.710939] microcode: CPU2 sig=0x506e3, pf=0x2, revision=0x33 -[ 0.710942] microcode: CPU3 sig=0x506e3, pf=0x2, revision=0x33 -[ 0.711084] microcode: Microcode Update Driver: v2.01 , Peter Oruba -[ 0.711683] registered taskstats version 1 -[ 0.711693] Loading compiled-in X.509 certificates -[ 0.712099] Loaded X.509 cert 'Build time autogenerated kernel key: e837129128998c98ce5a834cc756a195b6db2f40' -[ 0.712113] zswap: loaded using pool lzo/zbud -[ 0.714017] Key type trusted registered -[ 0.718138] Key type encrypted registered -[ 0.718142] AppArmor: AppArmor sha1 policy hashing enabled -[ 0.718144] ima: No TPM chip found, activating TPM-bypass! -[ 0.718157] evm: HMAC attrs: 0x1 -[ 0.719206] Magic number: 4:294:429 -[ 0.719515] rtc_cmos 00:03: setting system clock to 2016-10-23 11:25:24 UTC (1477221924) -[ 0.719807] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found -[ 0.719808] EDD information not available. -[ 0.719872] PM: Hibernation image not present or could not be loaded. -[ 0.720750] Freeing unused kernel memory: 1480K (ffffffff81f42000 - ffffffff820b4000) -[ 0.720751] Write protecting the kernel read-only data: 14336k -[ 0.721386] Freeing unused kernel memory: 1820K (ffff880002839000 - ffff880002a00000) -[ 0.721750] Freeing unused kernel memory: 152K (ffff880002dda000 - ffff880002e00000) -[ 0.729200] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.729238] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.729245] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.729513] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.729538] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.729670] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.729696] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.729724] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.729748] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.729775] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) -[ 0.753118] FUJITSU Extended Socket Network Device Driver - version 1.0 - Copyright (c) 2015 FUJITSU LIMITED -[ 0.759863] wmi: Mapper loaded -[ 0.773508] hidraw: raw HID events driver (C) Jiri Kosina -[ 0.779396] nvme 0000:01:00.0: enabling device (0000 -> 0002) -[ 0.779499] ahci 0000:00:17.0: version 3.0 -[ 0.780477] [drm] Initialized drm 1.1.0 20060810 -[ 0.780700] pps_core: LinuxPPS API ver. 1 registered -[ 0.780701] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti -[ 0.781447] PTP clock support registered -[ 0.783594] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k -[ 0.783595] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. -[ 0.794489] ahci 0000:00:17.0: AHCI 0001.0301 32 slots 4 ports 6 Gbps 0xf impl SATA mode -[ 0.794491] ahci 0000:00:17.0: flags: 64bit ncq sntf led clo only pio slum part ems deso sadm sds apst -[ 0.819116] scsi host0: ahci -[ 0.819450] scsi host1: ahci -[ 0.819817] scsi host2: ahci -[ 0.820195] scsi host3: ahci -[ 0.820250] ata1: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c100 irq 313 -[ 0.820255] ata2: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c180 irq 313 -[ 0.820259] ata3: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c200 irq 313 -[ 0.820263] ata4: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c280 irq 313 -[ 0.820598] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode -[ 1.124427] e1000e 0000:00:1f.6 eth0: registered PHC clock -[ 1.124429] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) d8:cb:8a:c4:3a:78 -[ 1.124430] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection -[ 1.124499] e1000e 0000:00:1f.6 eth0: MAC: 12, PHY: 12, PBA No: FFFFFF-0FF -[ 1.125111] e1000e 0000:00:1f.6 enp0s31f6: renamed from eth0 -[ 1.125856] [drm] Memory usable by graphics device = 4096M -[ 1.125858] checking generic (c0000000 300000) vs hw (c0000000 10000000) -[ 1.125859] fb: switching to inteldrmfb from EFI VGA -[ 1.125892] Console: switching to colour dummy device 80x25 -[ 1.126045] [drm] Replacing VGA console driver -[ 1.131852] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). -[ 1.131853] [drm] Driver supports precise vblank timestamp query. -[ 1.138531] ata4: SATA link down (SStatus 4 SControl 300) -[ 1.138550] ata3: SATA link down (SStatus 4 SControl 300) -[ 1.138580] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300) -[ 1.138606] ata1: SATA link down (SStatus 4 SControl 300) -[ 1.139223] ata2.00: ATA-9: WDC WD10EZEX-00BN5A0, 01.01A01, max UDMA/133 -[ 1.139225] ata2.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA -[ 1.140118] ata2.00: configured for UDMA/133 -[ 1.140613] scsi 1:0:0:0: Direct-Access ATA WDC WD10EZEX-00B 1A01 PQ: 0 ANSI: 5 -[ 1.140949] sd 1:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB) -[ 1.140951] sd 1:0:0:0: [sda] 4096-byte physical blocks -[ 1.141043] sd 1:0:0:0: [sda] Write Protect is off -[ 1.141045] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00 -[ 1.141087] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA -[ 1.141094] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem -[ 1.141283] sd 1:0:0:0: Attached scsi generic sg0 type 0 -[ 1.142008] [drm] Finished loading i915/skl_dmc_ver1.bin (v1.26) -[ 1.150083] [drm] failed to retrieve link info, disabling eDP -[ 1.154846] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) -[ 1.155169] acpi device:0f: registered as cooling_device9 -[ 1.155228] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input6 -[ 1.155426] [drm] Initialized i915_bpo 1.6.0 20160425 for 0000:00:02.0 on minor 0 -[ 1.197065] sda: sda1 sda2 sda3 -[ 1.198160] sd 1:0:0:0: [sda] Attached SCSI disk -[ 1.297300] fbcon: inteldrmfb (fb0) is primary device -[ 1.297334] Console: switching to colour frame buffer device 160x64 -[ 1.297344] i915_bpo 0000:00:02.0: fb0: inteldrmfb frame buffer device -[ 1.630399] tsc: Refined TSC clocksource calibration: 3311.999 MHz -[ 1.630407] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x2fbd936b72f, max_idle_ns: 440795283163 ns -[ 2.630983] clocksource: Switched to clocksource tsc -[ 2.810831] [drm] RC6 on -[ 3.345233] random: nonblocking pool is initialized -[ 3.587422] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) -[ 4.472976] systemd[1]: systemd 229 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN) -[ 4.473052] systemd[1]: Detected architecture x86-64. -[ 4.481311] systemd[1]: Set hostname to . -[ 5.956882] systemd[1]: Created slice User and Session Slice. -[ 5.956986] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point. -[ 5.956993] systemd[1]: Reached target Remote File Systems (Pre). -[ 5.956997] systemd[1]: Reached target Encrypted Volumes. -[ 5.957015] systemd[1]: Listening on Journal Socket (/dev/log). -[ 5.957030] systemd[1]: Listening on Journal Socket. -[ 5.957049] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe. -[ 5.957054] systemd[1]: Reached target Remote File Systems. -[ 5.957068] systemd[1]: Listening on udev Control Socket. -[ 5.957098] systemd[1]: Listening on Journal Audit Socket. -[ 5.957131] systemd[1]: Created slice System Slice. -[ 5.957166] systemd[1]: Created slice system-systemd\x2dfsck.slice. -[ 5.974640] systemd[1]: Starting Create list of required static device nodes for the current kernel... -[ 5.975159] systemd[1]: Starting Load Kernel Modules... -[ 5.975388] systemd[1]: Mounting Debug File System... -[ 5.975614] systemd[1]: Starting Uncomplicated firewall... -[ 5.975629] systemd[1]: Reached target Slices. -[ 5.975876] systemd[1]: Mounting POSIX Message Queue File System... -[ 5.976087] systemd[1]: Started Read required files in advance. -[ 5.976396] systemd[1]: Listening on udev Kernel Socket. -[ 5.976634] systemd[1]: Starting Braille Device Support... -[ 6.159500] systemd[1]: Listening on fsck to fsckd communication Socket. -[ 6.159545] systemd[1]: Started Forward Password Requests to Wall Directory Watch. -[ 6.170628] systemd[1]: Mounting Huge Pages File System... -[ 6.170639] systemd[1]: Reached target User and Group Name Lookups. -[ 6.170670] systemd[1]: Listening on Syslog Socket. -[ 6.170984] systemd[1]: Starting Journal Service... -[ 6.171028] systemd[1]: Created slice system-getty.slice. -[ 6.171778] systemd[1]: Started Uncomplicated firewall. -[ 6.296004] systemd[1]: Started Create list of required static device nodes for the current kernel. -[ 6.310712] systemd[1]: Starting Create Static Device Nodes in /dev... -[ 6.689904] systemd[1]: Started Journal Service. -[ 6.746002] lp: driver loaded but no devices found -[ 6.785636] ppdev: user-space parallel port driver -[ 6.869112] parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE,EPP] -[ 6.869753] parport0: irq 7 detected -[ 6.966721] lp0: using parport0 (polling). -[ 11.007302] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro -[ 11.161454] systemd-journald[238]: Received request to flush runtime journal from PID 1 -[ 11.484735] mei_me 0000:00:16.0: enabling device (0000 -> 0002) -[ 11.502544] intel-lpss 0000:00:15.0: enabling device (0000 -> 0002) -[ 11.546597] idma64 idma64.0: Found Intel integrated DMA 64-bit -[ 11.578614] intel-lpss 0000:00:15.1: enabling device (0000 -> 0002) -[ 11.578785] idma64 idma64.1: Found Intel integrated DMA 64-bit -[ 11.610578] intel-lpss 0000:00:1e.0: enabling device (0000 -> 0002) -[ 11.610771] idma64 idma64.2: Found Intel integrated DMA 64-bit -[ 11.626628] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 -[ 11.731283] Bluetooth: Core ver 2.21 -[ 11.731291] NET: Registered protocol family 31 -[ 11.731291] Bluetooth: HCI device and connection manager initialized -[ 11.731293] Bluetooth: HCI socket layer initialized -[ 11.731295] Bluetooth: L2CAP socket layer initialized -[ 11.731297] Bluetooth: SCO socket layer initialized -[ 11.914072] Bluetooth: HCI UART driver ver 2.3 -[ 11.914074] Bluetooth: HCI UART protocol H4 registered -[ 11.914075] Bluetooth: HCI UART protocol BCSP registered -[ 11.914076] Bluetooth: HCI UART protocol LL registered -[ 11.914076] Bluetooth: HCI UART protocol ATH3K registered -[ 11.914077] Bluetooth: HCI UART protocol Three-wire (H5) registered -[ 11.914108] Bluetooth: HCI UART protocol Intel registered -[ 11.914114] Bluetooth: HCI UART protocol BCM registered -[ 11.914115] Bluetooth: HCI UART protocol QCA registered -[ 12.038337] AVX2 version of gcm_enc/dec engaged. -[ 12.038339] AES CTR mode by8 optimization enabled -[ 12.038637] dw-apb-uart.2: ttyS4 at MMIO 0xdf14b000 (irq = 20, base_baud = 115200) is a 16550A -[ 12.308226] snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002) -[ 12.308350] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915_bpo]) -[ 12.466958] snd_hda_codec_realtek hdaudioC0D0: ALC1150: SKU not ready 0x00000000 -[ 12.467509] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC1150: line_outs=3 (0x14/0x15/0x16/0x0/0x0) type:line -[ 12.467510] snd_hda_codec_realtek hdaudioC0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) -[ 12.467511] snd_hda_codec_realtek hdaudioC0D0: hp_outs=1 (0x1b/0x0/0x0/0x0/0x0) -[ 12.467512] snd_hda_codec_realtek hdaudioC0D0: mono: mono_out=0x0 -[ 12.467513] snd_hda_codec_realtek hdaudioC0D0: dig-out=0x1e/0x0 -[ 12.467514] snd_hda_codec_realtek hdaudioC0D0: inputs: -[ 12.467515] snd_hda_codec_realtek hdaudioC0D0: Front Mic=0x19 -[ 12.467516] snd_hda_codec_realtek hdaudioC0D0: Rear Mic=0x18 -[ 12.467516] snd_hda_codec_realtek hdaudioC0D0: Line=0x1a -[ 12.500628] input: HDA Intel PCH Front Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input7 -[ 12.500660] input: HDA Intel PCH Rear Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input8 -[ 12.500687] input: HDA Intel PCH Line as /devices/pci0000:00/0000:00:1f.3/sound/card0/input9 -[ 12.500714] input: HDA Intel PCH Line Out Front as /devices/pci0000:00/0000:00:1f.3/sound/card0/input10 -[ 12.500741] input: HDA Intel PCH Line Out Surround as /devices/pci0000:00/0000:00:1f.3/sound/card0/input11 -[ 12.500768] input: HDA Intel PCH Line Out CLFE as /devices/pci0000:00/0000:00:1f.3/sound/card0/input12 -[ 12.500795] input: HDA Intel PCH Front Headphone as /devices/pci0000:00/0000:00:1f.3/sound/card0/input13 -[ 12.500821] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input14 -[ 12.500848] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input15 -[ 12.500874] input: HDA Intel PCH HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input16 -[ 13.091151] intel_rapl: Found RAPL domain package -[ 13.091153] intel_rapl: Found RAPL domain core -[ 13.091154] intel_rapl: Found RAPL domain uncore -[ 13.091155] intel_rapl: Found RAPL domain dram -[ 13.313805] Adding 8268796k swap on /dev/sda3. Priority:-1 extents:1 across:8268796k FS -[ 19.536711] audit: type=1400 audit(1477221943.311:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/ubuntu-core-launcher" pid=582 comm="apparmor_parser" -[ 19.537471] audit: type=1400 audit(1477221943.311:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/sbin/dhclient" pid=579 comm="apparmor_parser" -[ 19.537475] audit: type=1400 audit(1477221943.311:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=579 comm="apparmor_parser" -[ 19.537477] audit: type=1400 audit(1477221943.311:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-helper" pid=579 comm="apparmor_parser" -[ 19.537479] audit: type=1400 audit(1477221943.311:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=579 comm="apparmor_parser" -[ 19.537742] audit: type=1400 audit(1477221943.311:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/lightdm/lightdm-guest-session" pid=578 comm="apparmor_parser" -[ 19.537746] audit: type=1400 audit(1477221943.311:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/lightdm/lightdm-guest-session//chromium" pid=578 comm="apparmor_parser" -[ 19.538267] audit: type=1400 audit(1477221943.311:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/cups-browsed" pid=584 comm="apparmor_parser" -[ 19.538725] audit: type=1400 audit(1477221943.315:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/ippusbxd" pid=586 comm="apparmor_parser" -[ 19.539134] audit: type=1400 audit(1477221943.315:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/cups/backend/cups-pdf" pid=585 comm="apparmor_parser" -[ 21.996612] IPv6: ADDRCONF(NETDEV_UP): enp0s31f6: link is not ready -[ 22.202893] IPv6: ADDRCONF(NETDEV_UP): enp0s31f6: link is not ready -[ 24.736691] e1000e: enp0s31f6 NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx/Tx -[ 24.736694] e1000e 0000:00:1f.6 enp0s31f6: 10/100 speed: disabling TSO -[ 24.736741] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s31f6: link becomes ready -[ 29.199112] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 -[ 29.199114] Bluetooth: BNEP filters: protocol multicast -[ 29.199116] Bluetooth: BNEP socket layer initialized -[ 103.118165] risa_dev_ramdrive_timing: module verification failed: signature and/or required key missing - tainting kernel -[ 103.118908] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) -[ 103.126524] bdbm: ===================================================================== -[ 103.126525] bdbm: DEVICE PARAMETERS -[ 103.126526] bdbm: ===================================================================== -[ 103.126526] bdbm: # of channels = 64 -[ 103.126527] bdbm: # of chips per channel = 1 -[ 103.126527] bdbm: # of blocks per chip = 128 -[ 103.126528] bdbm: # of pages per block = 64 -[ 103.126528] bdbm: # of subpages per page = 1 -[ 103.126529] bdbm: page main size = 4096 bytes -[ 103.126529] bdbm: page oob size = 64 bytes -[ 103.126530] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) -[ 103.126530] bdbm: -[ 103.126531] bdbm: ===================================================================== -[ 103.126532] bdbm: RAM DISK INFO -[ 103.126532] bdbm: ===================================================================== -[ 103.126533] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) -[ 103.321939] bdbm: ramssd addr = ffffc90050001000 -[ 103.321940] bdbm: -[ 103.321941] bdbm: *** building ptr_ramssd_data begins for data curruption checks... -[ 103.516321] bdbm: *** building ptr_ramssd_data done -[ 103.516502] bdbm: [dm_ramdrive_probe] probe done! -[ 103.516503] bdbm: [dm_ramdrive_open] open done! -[ 103.618631] bdbm: TRIM is enabled -[ 103.618805] bdbm: ===================================================================== -[ 103.618806] bdbm: DEVICE PARAMETERS -[ 103.618807] bdbm: ===================================================================== -[ 103.618808] bdbm: # of channels = 64 -[ 103.618809] bdbm: # of chips per channel = 1 -[ 103.618809] bdbm: # of blocks per chip = 128 -[ 103.618810] bdbm: # of pages per block = 64 -[ 103.618810] bdbm: # of subpages per page = 1 -[ 103.618811] bdbm: page main size = 4096 bytes -[ 103.618811] bdbm: page oob size = 64 bytes -[ 103.618812] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) -[ 103.618812] bdbm: -[ 103.618813] bdbm: ===================================================================== -[ 103.618814] bdbm: FTL CONFIGURATION -[ 103.618815] bdbm: ===================================================================== -[ 103.618815] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) -[ 103.618816] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) -[ 103.618816] bdbm: wl policy = 1 (1: none, 2: swap) -[ 103.618817] bdbm: trim mode = 1 (1: enable, 2: disable) -[ 103.618817] bdbm: kernel sector = 512 bytes -[ 103.618818] bdbm: -[ 103.618819] bdbm: [bdbm_drv_main] bdbm_drv is registered! -[ 104.678972] bdbm: llm_make_req: 0, 1 -[ 105.750335] bdbm: llm_make_req: 50000, 96 -[ 106.114075] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard -[ 190.039462] bdbm: ----------------------------------------------- -[ 190.039464] bdbm: < PERFORMANCE SUMMARY > -[ 190.039465] bdbm: [0] Execution Time (us): 86.420687 -[ 190.039465] bdbm: -[ 190.039466] bdbm: [1] Total I/Os -[ 190.039466] bdbm: # of page reads: 6 -[ 190.039467] bdbm: # of page writes: 74152 -[ 190.039467] bdbm: # of block erase: 0 -[ 190.039467] bdbm: -[ 190.039468] bdbm: [2] Normal I/Os -[ 190.039468] bdbm: # of page reads: 6 -[ 190.039469] bdbm: # of page writes: 74152 -[ 190.039469] bdbm: # of page rmw reads: 0 -[ 190.039470] bdbm: # of page rmw writes: 0 -[ 190.039470] bdbm: -[ 190.039471] bdbm: [3] GC I/Os -[ 190.039471] bdbm: # of GC invocation: 0 -[ 190.039471] bdbm: # of page reads: 0 -[ 190.039472] bdbm: # of page writes: 0 -[ 190.039472] bdbm: # of block erase: 0 -[ 190.039473] bdbm: -[ 190.039473] bdbm: [4] Meta I/Os -[ 190.039474] bdbm: # of meta page reads: 0 -[ 190.039474] bdbm: # of meta page writes: 0 -[ 190.039475] bdbm: -[ 190.039475] bdbm: [5] Elapsed Time -[ 190.039476] bdbm: page read (us): 111 (S:2 + Q:13 + D:96) -[ 190.039476] bdbm: page write (us): 452 (S:0 + Q:0 + D:452) -[ 190.039477] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) -[ 190.039477] bdbm: -[ 190.039478] bdbm: [6] Utilization (R) -[ 190.039489] bdbm: 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -[ 190.039490] bdbm: -[ 190.039490] bdbm: [7] Utilization (W) -[ 190.039502] bdbm: 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 -[ 190.039503] bdbm: ----------------------------------------------- -[ 190.039503] bdbm: ----------------------------------------------- -[ 190.126660] bdbm: done -[ 190.126663] bdbm: [dm_ramdrive_close] closed! -[ 190.176400] bdbm: [bdbm_drv_main] bdbm_drv is closed -[ 190.176402] bdbm: [bdbm_drv_main] bdbm_drv is removed -[ 190.190549] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) -[ 190.211450] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) -[ 190.216063] bdbm: ===================================================================== -[ 190.216064] bdbm: DEVICE PARAMETERS -[ 190.216065] bdbm: ===================================================================== -[ 190.216066] bdbm: # of channels = 64 -[ 190.216066] bdbm: # of chips per channel = 1 -[ 190.216067] bdbm: # of blocks per chip = 128 -[ 190.216067] bdbm: # of pages per block = 64 -[ 190.216068] bdbm: # of subpages per page = 1 -[ 190.216068] bdbm: page main size = 4096 bytes -[ 190.216069] bdbm: page oob size = 64 bytes -[ 190.216069] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) -[ 190.216070] bdbm: -[ 190.216071] bdbm: ===================================================================== -[ 190.216071] bdbm: RAM DISK INFO -[ 190.216071] bdbm: ===================================================================== -[ 190.216072] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) -[ 190.416513] bdbm: ramssd addr = ffffc90050001000 -[ 190.416515] bdbm: -[ 190.416516] bdbm: *** building ptr_ramssd_data begins for data curruption checks... -[ 190.613405] bdbm: *** building ptr_ramssd_data done -[ 190.613611] bdbm: [dm_ramdrive_probe] probe done! -[ 190.613612] bdbm: [dm_ramdrive_open] open done! -[ 190.699456] bdbm: TRIM is enabled -[ 190.699583] bdbm: ===================================================================== -[ 190.699584] bdbm: DEVICE PARAMETERS -[ 190.699585] bdbm: ===================================================================== -[ 190.699585] bdbm: # of channels = 64 -[ 190.699586] bdbm: # of chips per channel = 1 -[ 190.699586] bdbm: # of blocks per chip = 128 -[ 190.699587] bdbm: # of pages per block = 64 -[ 190.699587] bdbm: # of subpages per page = 1 -[ 190.699588] bdbm: page main size = 4096 bytes -[ 190.699588] bdbm: page oob size = 64 bytes -[ 190.699589] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) -[ 190.699589] bdbm: -[ 190.699590] bdbm: ===================================================================== -[ 190.699590] bdbm: FTL CONFIGURATION -[ 190.699591] bdbm: ===================================================================== -[ 190.699591] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) -[ 190.699592] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) -[ 190.699592] bdbm: wl policy = 1 (1: none, 2: swap) -[ 190.699593] bdbm: trim mode = 1 (1: enable, 2: disable) -[ 190.699593] bdbm: kernel sector = 512 bytes -[ 190.699594] bdbm: -[ 190.699595] bdbm: [bdbm_drv_main] bdbm_drv is registered! -[ 191.713378] bdbm: llm_make_req: 0, 1 -[ 192.777107] bdbm: llm_make_req: 50000, 95 -[ 193.140330] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard -[ 270.199954] bdbm: ----------------------------------------------- -[ 270.199956] bdbm: < PERFORMANCE SUMMARY > -[ 270.199957] bdbm: [0] Execution Time (us): 79.499900 -[ 270.199957] bdbm: -[ 270.199958] bdbm: [1] Total I/Os -[ 270.199958] bdbm: # of page reads: 6 -[ 270.199959] bdbm: # of page writes: 74152 -[ 270.199959] bdbm: # of block erase: 0 -[ 270.199960] bdbm: -[ 270.199960] bdbm: [2] Normal I/Os -[ 270.199961] bdbm: # of page reads: 6 -[ 270.199961] bdbm: # of page writes: 74152 -[ 270.199962] bdbm: # of page rmw reads: 0 -[ 270.199962] bdbm: # of page rmw writes: 0 -[ 270.199962] bdbm: -[ 270.199963] bdbm: [3] GC I/Os -[ 270.199963] bdbm: # of GC invocation: 0 -[ 270.199964] bdbm: # of page reads: 0 -[ 270.199964] bdbm: # of page writes: 0 -[ 270.199965] bdbm: # of block erase: 0 -[ 270.199965] bdbm: -[ 270.199966] bdbm: [4] Meta I/Os -[ 270.199966] bdbm: # of meta page reads: 0 -[ 270.199966] bdbm: # of meta page writes: 0 -[ 270.199967] bdbm: -[ 270.199967] bdbm: [5] Elapsed Time -[ 270.199968] bdbm: page read (us): 107 (S:0 + Q:11 + D:96) -[ 270.199969] bdbm: page write (us): 452 (S:0 + Q:1 + D:451) -[ 270.199969] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) -[ 270.199970] bdbm: -[ 270.199970] bdbm: [6] Utilization (R) -[ 270.199982] bdbm: 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -[ 270.199983] bdbm: -[ 270.199983] bdbm: [7] Utilization (W) -[ 270.199995] bdbm: 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 -[ 270.199995] bdbm: ----------------------------------------------- -[ 270.199996] bdbm: ----------------------------------------------- -[ 270.291323] bdbm: done -[ 270.291325] bdbm: [dm_ramdrive_close] closed! -[ 270.340682] bdbm: [bdbm_drv_main] bdbm_drv is closed -[ 270.340686] bdbm: [bdbm_drv_main] bdbm_drv is removed -[ 270.358797] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) -[ 270.383544] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) -[ 270.387779] bdbm: ===================================================================== -[ 270.387781] bdbm: DEVICE PARAMETERS -[ 270.387781] bdbm: ===================================================================== -[ 270.387782] bdbm: # of channels = 64 -[ 270.387783] bdbm: # of chips per channel = 1 -[ 270.387783] bdbm: # of blocks per chip = 128 -[ 270.387784] bdbm: # of pages per block = 64 -[ 270.387784] bdbm: # of subpages per page = 1 -[ 270.387785] bdbm: page main size = 4096 bytes -[ 270.387786] bdbm: page oob size = 64 bytes -[ 270.387786] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) -[ 270.387787] bdbm: -[ 270.387788] bdbm: ===================================================================== -[ 270.387788] bdbm: RAM DISK INFO -[ 270.387789] bdbm: ===================================================================== -[ 270.387790] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) -[ 270.594094] bdbm: ramssd addr = ffffc90050001000 -[ 270.594096] bdbm: -[ 270.594096] bdbm: *** building ptr_ramssd_data begins for data curruption checks... -[ 270.792765] bdbm: *** building ptr_ramssd_data done -[ 270.792929] bdbm: [dm_ramdrive_probe] probe done! -[ 270.792931] bdbm: [dm_ramdrive_open] open done! -[ 270.895994] bdbm: TRIM is enabled -[ 270.896125] bdbm: ===================================================================== -[ 270.896127] bdbm: DEVICE PARAMETERS -[ 270.896127] bdbm: ===================================================================== -[ 270.896128] bdbm: # of channels = 64 -[ 270.896128] bdbm: # of chips per channel = 1 -[ 270.896129] bdbm: # of blocks per chip = 128 -[ 270.896129] bdbm: # of pages per block = 64 -[ 270.896130] bdbm: # of subpages per page = 1 -[ 270.896130] bdbm: page main size = 4096 bytes -[ 270.896131] bdbm: page oob size = 64 bytes -[ 270.896133] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) -[ 270.896133] bdbm: -[ 270.896134] bdbm: ===================================================================== -[ 270.896134] bdbm: FTL CONFIGURATION -[ 270.896135] bdbm: ===================================================================== -[ 270.896135] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) -[ 270.896136] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) -[ 270.896136] bdbm: wl policy = 1 (1: none, 2: swap) -[ 270.896137] bdbm: trim mode = 1 (1: enable, 2: disable) -[ 270.896138] bdbm: kernel sector = 512 bytes -[ 270.896139] bdbm: -[ 270.896140] bdbm: [bdbm_drv_main] bdbm_drv is registered! -[ 271.911345] bdbm: llm_make_req: 0, 1 -[ 272.967629] bdbm: llm_make_req: 50000, 96 -[ 273.330139] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard -[ 298.699650] bdbm: ----------------------------------------------- -[ 298.699652] bdbm: < PERFORMANCE SUMMARY > -[ 298.699652] bdbm: [0] Execution Time (us): 27.803729 -[ 298.699653] bdbm: -[ 298.699653] bdbm: [1] Total I/Os -[ 298.699654] bdbm: # of page reads: 6 -[ 298.699654] bdbm: # of page writes: 74152 -[ 298.699655] bdbm: # of block erase: 0 -[ 298.699655] bdbm: -[ 298.699656] bdbm: [2] Normal I/Os -[ 298.699656] bdbm: # of page reads: 6 -[ 298.699657] bdbm: # of page writes: 74152 -[ 298.699657] bdbm: # of page rmw reads: 0 -[ 298.699658] bdbm: # of page rmw writes: 0 -[ 298.699658] bdbm: -[ 298.699658] bdbm: [3] GC I/Os -[ 298.699659] bdbm: # of GC invocation: 0 -[ 298.699659] bdbm: # of page reads: 0 -[ 298.699660] bdbm: # of page writes: 0 -[ 298.699660] bdbm: # of block erase: 0 -[ 298.699661] bdbm: -[ 298.699661] bdbm: [4] Meta I/Os -[ 298.699662] bdbm: # of meta page reads: 0 -[ 298.699662] bdbm: # of meta page writes: 0 -[ 298.699662] bdbm: -[ 298.699663] bdbm: [5] Elapsed Time -[ 298.699664] bdbm: page read (us): 106 (S:0 + Q:7 + D:99) -[ 298.699664] bdbm: page write (us): 452 (S:0 + Q:0 + D:452) -[ 298.699665] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) -[ 298.699665] bdbm: -[ 298.699666] bdbm: [6] Utilization (R) -[ 298.699677] bdbm: 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -[ 298.699678] bdbm: -[ 298.699678] bdbm: [7] Utilization (W) -[ 298.699689] bdbm: 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1159 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 1158 -[ 298.699690] bdbm: ----------------------------------------------- -[ 298.699691] bdbm: ----------------------------------------------- -[ 298.792702] bdbm: done -[ 298.792717] bdbm: [dm_ramdrive_close] closed! -[ 298.842685] bdbm: [bdbm_drv_main] bdbm_drv is closed -[ 298.842688] bdbm: [bdbm_drv_main] bdbm_drv is removed -[ 298.858589] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) -[ 298.878671] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) -[ 298.883875] bdbm: ===================================================================== -[ 298.883877] bdbm: DEVICE PARAMETERS -[ 298.883877] bdbm: ===================================================================== -[ 298.883878] bdbm: # of channels = 64 -[ 298.883879] bdbm: # of chips per channel = 1 -[ 298.883879] bdbm: # of blocks per chip = 128 -[ 298.883879] bdbm: # of pages per block = 64 -[ 298.883880] bdbm: # of subpages per page = 1 -[ 298.883880] bdbm: page main size = 4096 bytes -[ 298.883881] bdbm: page oob size = 64 bytes -[ 298.883882] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) -[ 298.883882] bdbm: -[ 298.883883] bdbm: ===================================================================== -[ 298.883883] bdbm: RAM DISK INFO -[ 298.883884] bdbm: ===================================================================== -[ 298.883884] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) -[ 299.085482] bdbm: ramssd addr = ffffc90050001000 -[ 299.085484] bdbm: -[ 299.085484] bdbm: *** building ptr_ramssd_data begins for data curruption checks... -[ 299.287265] bdbm: *** building ptr_ramssd_data done -[ 299.287393] bdbm: [dm_ramdrive_probe] probe done! -[ 299.287409] bdbm: [dm_ramdrive_open] open done! -[ 299.397029] bdbm: TRIM is enabled -[ 299.397333] bdbm: ===================================================================== -[ 299.397334] bdbm: DEVICE PARAMETERS -[ 299.397334] bdbm: ===================================================================== -[ 299.397335] bdbm: # of channels = 64 -[ 299.397336] bdbm: # of chips per channel = 1 -[ 299.397336] bdbm: # of blocks per chip = 128 -[ 299.397337] bdbm: # of pages per block = 64 -[ 299.397337] bdbm: # of subpages per page = 1 -[ 299.397338] bdbm: page main size = 4096 bytes -[ 299.397338] bdbm: page oob size = 64 bytes -[ 299.397339] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) -[ 299.397339] bdbm: -[ 299.397340] bdbm: ===================================================================== -[ 299.397340] bdbm: FTL CONFIGURATION -[ 299.397341] bdbm: ===================================================================== -[ 299.397342] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) -[ 299.397342] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) -[ 299.397343] bdbm: wl policy = 1 (1: none, 2: swap) -[ 299.397343] bdbm: trim mode = 1 (1: enable, 2: disable) -[ 299.397344] bdbm: kernel sector = 512 bytes -[ 299.397344] bdbm: -[ 299.397345] bdbm: [bdbm_drv_main] bdbm_drv is registered! -[ 300.413266] BUG: unable to handle kernel NULL pointer dereference at (null) -[ 300.413287] IP: [< (null)>] (null) -[ 300.413298] PGD fe9bf8067 PUD fe9b95067 PMD 0 -[ 300.413310] Oops: 0010 [#1] SMP -[ 300.413318] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel snd_hda_codec snd_hda_core crct10dif_pclmul crc32_pclmul snd_hwdep snd_pcm aesni_intel snd_seq_midi 8250_dw aes_x86_64 snd_seq_midi_event snd_rawmidi snd_seq snd_seq_device i2c_designware_platform lrw i2c_designware_core snd_timer hci_uart btbcm snd btqca gf128mul btintel soundcore bluetooth glue_helper ablk_helper cryptd serio_raw shpchp idma64 virt_dma acpi_als intel_lpss_pci intel_lpss_acpi kfifo_buf mei_me intel_lpss mei industrialio mac_hid acpi_pad parport_pc ppdev lp parport autofs4 mxm_wmi i915_bpo intel_ips i2c_algo_bit drm_kms_helper e1000e -[ 300.413502] syscopyarea psmouse sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] -[ 300.413549] CPU: 0 PID: 12046 Comm: mkfs.ext4 Tainted: G OE 4.4.0-42-generic #62-Ubuntu -[ 300.413567] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 -[ 300.413583] task: ffff8810200449c0 ti: ffff880f62da8000 task.ti: ffff880f62da8000 -[ 300.413597] RIP: 0010:[<0000000000000000>] [< (null)>] (null) -[ 300.413613] RSP: 0018:ffff880f62dab9a8 EFLAGS: 00010202 -[ 300.413623] RAX: ffffffffc0604140 RBX: ffffc90006b1e000 RCX: ffff880f62dab9c8 -[ 300.413637] RDX: ffffc900165c1068 RSI: 0000000000000000 RDI: ffffc90006b1e000 -[ 300.413650] RBP: ffff880f62daba00 R08: 0000000000000001 R09: ffff880f093e4000 -[ 300.413664] R10: 0000000000000001 R11: ffff880f093e4000 R12: 0000000000000000 -[ 300.413678] R13: ffffc900165c1058 R14: ffffc900165c1068 R15: ffffc900165c1038 -[ 300.413691] FS: 00007fa3e0306780(0000) GS:ffff88106ec00000(0000) knlGS:0000000000000000 -[ 300.413707] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 -[ 300.413718] CR2: 0000000000000000 CR3: 0000000fe9b31000 CR4: 00000000003406f0 -[ 300.413732] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 -[ 300.413746] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 -[ 300.413759] Stack: -[ 300.413764] ffffffffc05f4dd5 ffffc900165c1038 ffffc900165c1000 ffffffffc0604140 -[ 300.413781] ffffffff810f5dc9 00000000235f459e ffffc900165c1000 ffffc900165c1000 -[ 300.413798] ffffc90006b1e000 ffff880f09415a88 ffffc900165bd000 ffff880f62daba58 -[ 300.413814] Call Trace: -[ 300.413823] [] ? __hlm_nobuf_make_rw_req+0x185/0x3c0 [robusta_drv] -[ 300.413840] [] ? do_gettimeofday+0x29/0x90 -[ 300.413853] [] hlm_nobuf_make_req+0xb9/0xf0 [robusta_drv] -[ 300.413868] [] blkio_make_req+0xd5/0x330 [robusta_drv] -[ 300.413883] [] ? generic_make_request_checks+0x229/0x530 -[ 300.413897] [] __host_blkio_make_request_fn+0x15/0x20 [robusta_drv] -[ 300.413921] [] generic_make_request+0xf2/0x1d0 -[ 300.413934] [] submit_bio+0x76/0x170 -[ 300.413946] [] mpage_readpages+0x158/0x190 -[ 300.413957] [] ? I_BDEV+0x20/0x20 -[ 300.413968] [] ? I_BDEV+0x20/0x20 -[ 300.413978] [] blkdev_readpages+0x1d/0x20 -[ 300.413991] [] __do_page_cache_readahead+0x196/0x230 -[ 300.414004] [] ? call_rcu_sched+0x17/0x20 -[ 300.414017] [] ? radix_tree_lookup_slot+0x22/0x50 -[ 300.414030] [] force_page_cache_readahead+0xaa/0x100 -[ 300.414043] [] page_cache_sync_readahead+0x3f/0x50 -[ 300.414056] [] generic_file_read_iter+0x4ad/0x5c0 -[ 300.414070] [] ? do_filp_open+0xa5/0x100 -[ 300.414082] [] blkdev_read_iter+0x35/0x40 -[ 300.414094] [] new_sync_read+0x94/0xd0 -[ 300.414105] [] __vfs_read+0x26/0x40 -[ 300.414116] [] vfs_read+0x86/0x130 -[ 300.414127] [] SyS_read+0x55/0xc0 -[ 300.414138] [] entry_SYSCALL_64_fastpath+0x16/0x71 -[ 300.414150] Code: Bad RIP value. -[ 300.414160] RIP [< (null)>] (null) -[ 300.414171] RSP -[ 300.414178] CR2: 0000000000000000 -[ 300.417279] ---[ end trace ad2039f7bf3c219b ]--- +[11176.658656] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204704 +[11176.658656] bdbm: nvm_tbl[1] lpa = 204701, tlpa = 204704 +[11176.658657] bdbm: nvm_tbl[2] lpa = 204702, tlpa = 204704 +[11176.658657] bdbm: [EUNJI] miss +[11176.659121] bdbm: [EUNJI] write hit: 0 remains +[11176.659121] bdbm: [EUNJI] skip :0 +[11176.659122] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659123] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204704 +[11176.659123] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204704 +[11176.659124] bdbm: [EUNJI] write hit: 0 remains +[11176.659124] bdbm: [EUNJI] skip :0 +[11176.659125] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659126] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204704 +[11176.659126] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204704 +[11176.659127] bdbm: [EUNJI] write hit: 0 remains +[11176.659128] bdbm: [EUNJI] skip :0 +[11176.659128] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659129] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204704 +[11176.659130] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204704 +[11176.659130] bdbm: [EUNJI] write hit: 0 remains +[11176.659131] bdbm: [EUNJI] skip :0 +[11176.659132] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659132] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204704 +[11176.659133] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204704 +[11176.659133] bdbm: [EUNJI] write hit: 0 remains +[11176.659134] bdbm: [EUNJI] skip :0 +[11176.659135] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659135] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204704 +[11176.659136] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204704 +[11176.659136] bdbm: [EUNJI] write hit: 0 remains +[11176.659137] bdbm: [EUNJI] skip :0 +[11176.659138] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659138] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204704 +[11176.659139] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204704 +[11176.659139] bdbm: [EUNJI] write hit: 0 remains +[11176.659140] bdbm: [EUNJI] skip :0 +[11176.659141] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659142] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204704 +[11176.659142] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204704 +[11176.659143] bdbm: [EUNJI] write hit: 0 remains +[11176.659143] bdbm: [EUNJI] skip :0 +[11176.659145] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659145] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204705 +[11176.659146] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204705 +[11176.659146] bdbm: nvm_tbl[2] lpa = 204702, tlpa = 204705 +[11176.659147] bdbm: [EUNJI] miss +[11176.659612] bdbm: [EUNJI] write hit: 0 remains +[11176.659613] bdbm: [EUNJI] skip :0 +[11176.659614] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659614] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204705 +[11176.659615] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204705 +[11176.659615] bdbm: nvm_tbl[2] lpa = 204705, tlpa = 204705 +[11176.659616] bdbm: [EUNJI] write hit: 0 remains +[11176.659616] bdbm: [EUNJI] skip :0 +[11176.659617] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659618] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204705 +[11176.659619] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204705 +[11176.659619] bdbm: nvm_tbl[2] lpa = 204705, tlpa = 204705 +[11176.659620] bdbm: [EUNJI] write hit: 0 remains +[11176.659620] bdbm: [EUNJI] skip :0 +[11176.659621] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659622] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204705 +[11176.659622] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204705 +[11176.659623] bdbm: nvm_tbl[2] lpa = 204705, tlpa = 204705 +[11176.659623] bdbm: [EUNJI] write hit: 0 remains +[11176.659624] bdbm: [EUNJI] skip :0 +[11176.659625] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659625] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204705 +[11176.659626] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204705 +[11176.659626] bdbm: nvm_tbl[2] lpa = 204705, tlpa = 204705 +[11176.659627] bdbm: [EUNJI] write hit: 0 remains +[11176.659627] bdbm: [EUNJI] skip :0 +[11176.659628] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659629] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204705 +[11176.659629] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204705 +[11176.659630] bdbm: nvm_tbl[2] lpa = 204705, tlpa = 204705 +[11176.659631] bdbm: [EUNJI] write hit: 0 remains +[11176.659631] bdbm: [EUNJI] skip :0 +[11176.659632] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659632] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204705 +[11176.659633] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204705 +[11176.659634] bdbm: nvm_tbl[2] lpa = 204705, tlpa = 204705 +[11176.659634] bdbm: [EUNJI] write hit: 0 remains +[11176.659635] bdbm: [EUNJI] skip :0 +[11176.659636] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659636] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204705 +[11176.659637] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204705 +[11176.659637] bdbm: nvm_tbl[2] lpa = 204705, tlpa = 204705 +[11176.659638] bdbm: [EUNJI] write hit: 0 remains +[11176.659638] bdbm: [EUNJI] skip :0 +[11176.659641] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.659642] bdbm: nvm_tbl[0] lpa = 204703, tlpa = 204706 +[11176.659642] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204706 +[11176.659643] bdbm: nvm_tbl[2] lpa = 204705, tlpa = 204706 +[11176.659643] bdbm: [EUNJI] miss +[11176.660109] bdbm: [EUNJI] write hit: 0 remains +[11176.660109] bdbm: [EUNJI] skip :0 +[11176.660110] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660111] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204706 +[11176.660111] bdbm: [EUNJI] write hit: 0 remains +[11176.660112] bdbm: [EUNJI] skip :0 +[11176.660113] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660113] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204706 +[11176.660114] bdbm: [EUNJI] write hit: 0 remains +[11176.660115] bdbm: [EUNJI] skip :0 +[11176.660116] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660116] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204706 +[11176.660117] bdbm: [EUNJI] write hit: 0 remains +[11176.660117] bdbm: [EUNJI] skip :0 +[11176.660118] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660119] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204706 +[11176.660119] bdbm: [EUNJI] write hit: 0 remains +[11176.660120] bdbm: [EUNJI] skip :0 +[11176.660121] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660121] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204706 +[11176.660122] bdbm: [EUNJI] write hit: 0 remains +[11176.660122] bdbm: [EUNJI] skip :0 +[11176.660123] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660124] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204706 +[11176.660124] bdbm: [EUNJI] write hit: 0 remains +[11176.660125] bdbm: [EUNJI] skip :0 +[11176.660126] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660126] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204706 +[11176.660127] bdbm: [EUNJI] write hit: 0 remains +[11176.660127] bdbm: [EUNJI] skip :0 +[11176.660129] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660129] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204707 +[11176.660130] bdbm: nvm_tbl[1] lpa = 204704, tlpa = 204707 +[11176.660130] bdbm: nvm_tbl[2] lpa = 204705, tlpa = 204707 +[11176.660131] bdbm: [EUNJI] miss +[11176.660594] bdbm: [EUNJI] write hit: 0 remains +[11176.660595] bdbm: [EUNJI] skip :0 +[11176.660596] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660597] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204707 +[11176.660597] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204707 +[11176.660598] bdbm: [EUNJI] write hit: 0 remains +[11176.660598] bdbm: [EUNJI] skip :0 +[11176.660599] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660600] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204707 +[11176.660600] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204707 +[11176.660601] bdbm: [EUNJI] write hit: 0 remains +[11176.660601] bdbm: [EUNJI] skip :0 +[11176.660602] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660603] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204707 +[11176.660603] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204707 +[11176.660604] bdbm: [EUNJI] write hit: 0 remains +[11176.660604] bdbm: [EUNJI] skip :0 +[11176.660605] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660606] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204707 +[11176.660606] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204707 +[11176.660607] bdbm: [EUNJI] write hit: 0 remains +[11176.660608] bdbm: [EUNJI] skip :0 +[11176.660608] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660609] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204707 +[11176.660610] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204707 +[11176.660610] bdbm: [EUNJI] write hit: 0 remains +[11176.660611] bdbm: [EUNJI] skip :0 +[11176.660612] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660612] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204707 +[11176.660613] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204707 +[11176.660613] bdbm: [EUNJI] write hit: 0 remains +[11176.660614] bdbm: [EUNJI] skip :0 +[11176.660615] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660615] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204707 +[11176.660616] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204707 +[11176.660616] bdbm: [EUNJI] write hit: 0 remains +[11176.660617] bdbm: [EUNJI] skip :0 +[11176.660619] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.660619] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204708 +[11176.660620] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204708 +[11176.660620] bdbm: nvm_tbl[2] lpa = 204705, tlpa = 204708 +[11176.660621] bdbm: [EUNJI] miss +[11176.661085] bdbm: [EUNJI] write hit: 0 remains +[11176.661086] bdbm: [EUNJI] skip :0 +[11176.661087] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661088] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204708 +[11176.661088] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204708 +[11176.661089] bdbm: nvm_tbl[2] lpa = 204708, tlpa = 204708 +[11176.661089] bdbm: [EUNJI] write hit: 0 remains +[11176.661090] bdbm: [EUNJI] skip :0 +[11176.661091] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661091] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204708 +[11176.661092] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204708 +[11176.661092] bdbm: nvm_tbl[2] lpa = 204708, tlpa = 204708 +[11176.661093] bdbm: [EUNJI] write hit: 0 remains +[11176.661093] bdbm: [EUNJI] skip :0 +[11176.661094] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661095] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204708 +[11176.661095] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204708 +[11176.661096] bdbm: nvm_tbl[2] lpa = 204708, tlpa = 204708 +[11176.661097] bdbm: [EUNJI] write hit: 0 remains +[11176.661097] bdbm: [EUNJI] skip :0 +[11176.661098] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661099] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204708 +[11176.661099] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204708 +[11176.661100] bdbm: nvm_tbl[2] lpa = 204708, tlpa = 204708 +[11176.661100] bdbm: [EUNJI] write hit: 0 remains +[11176.661101] bdbm: [EUNJI] skip :0 +[11176.661102] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661102] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204708 +[11176.661103] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204708 +[11176.661103] bdbm: nvm_tbl[2] lpa = 204708, tlpa = 204708 +[11176.661104] bdbm: [EUNJI] write hit: 0 remains +[11176.661104] bdbm: [EUNJI] skip :0 +[11176.661105] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661106] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204708 +[11176.661107] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204708 +[11176.661107] bdbm: nvm_tbl[2] lpa = 204708, tlpa = 204708 +[11176.661108] bdbm: [EUNJI] write hit: 0 remains +[11176.661108] bdbm: [EUNJI] skip :0 +[11176.661109] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661110] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204708 +[11176.661110] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204708 +[11176.661111] bdbm: nvm_tbl[2] lpa = 204708, tlpa = 204708 +[11176.661111] bdbm: [EUNJI] write hit: 0 remains +[11176.661112] bdbm: [EUNJI] skip :0 +[11176.661113] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661114] bdbm: nvm_tbl[0] lpa = 204706, tlpa = 204709 +[11176.661114] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204709 +[11176.661115] bdbm: nvm_tbl[2] lpa = 204708, tlpa = 204709 +[11176.661115] bdbm: [EUNJI] miss +[11176.661579] bdbm: [EUNJI] write hit: 0 remains +[11176.661579] bdbm: [EUNJI] skip :0 +[11176.661580] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661581] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204709 +[11176.661582] bdbm: [EUNJI] write hit: 0 remains +[11176.661582] bdbm: [EUNJI] skip :0 +[11176.661583] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661584] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204709 +[11176.661584] bdbm: [EUNJI] write hit: 0 remains +[11176.661585] bdbm: [EUNJI] skip :0 +[11176.661586] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661586] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204709 +[11176.661587] bdbm: [EUNJI] write hit: 0 remains +[11176.661587] bdbm: [EUNJI] skip :0 +[11176.661588] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661589] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204709 +[11176.661589] bdbm: [EUNJI] write hit: 0 remains +[11176.661590] bdbm: [EUNJI] skip :0 +[11176.661591] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661591] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204709 +[11176.661592] bdbm: [EUNJI] write hit: 0 remains +[11176.661592] bdbm: [EUNJI] skip :0 +[11176.661593] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661594] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204709 +[11176.661594] bdbm: [EUNJI] write hit: 0 remains +[11176.661595] bdbm: [EUNJI] skip :0 +[11176.661596] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661596] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204709 +[11176.661597] bdbm: [EUNJI] write hit: 0 remains +[11176.661597] bdbm: [EUNJI] skip :0 +[11176.661599] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.661600] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204710 +[11176.661600] bdbm: nvm_tbl[1] lpa = 204707, tlpa = 204710 +[11176.661601] bdbm: nvm_tbl[2] lpa = 204708, tlpa = 204710 +[11176.661601] bdbm: [EUNJI] miss +[11176.662165] bdbm: [EUNJI] write hit: 0 remains +[11176.662166] bdbm: [EUNJI] skip :0 +[11176.662167] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662168] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204710 +[11176.662169] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204710 +[11176.662169] bdbm: [EUNJI] write hit: 0 remains +[11176.662170] bdbm: [EUNJI] skip :0 +[11176.662171] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662172] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204710 +[11176.662172] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204710 +[11176.662173] bdbm: [EUNJI] write hit: 0 remains +[11176.662173] bdbm: [EUNJI] skip :0 +[11176.662174] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662175] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204710 +[11176.662175] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204710 +[11176.662176] bdbm: [EUNJI] write hit: 0 remains +[11176.662176] bdbm: [EUNJI] skip :0 +[11176.662178] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662178] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204710 +[11176.662179] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204710 +[11176.662179] bdbm: [EUNJI] write hit: 0 remains +[11176.662180] bdbm: [EUNJI] skip :0 +[11176.662181] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662181] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204710 +[11176.662182] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204710 +[11176.662182] bdbm: [EUNJI] write hit: 0 remains +[11176.662183] bdbm: [EUNJI] skip :0 +[11176.662184] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662184] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204710 +[11176.662185] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204710 +[11176.662186] bdbm: [EUNJI] write hit: 0 remains +[11176.662187] bdbm: [EUNJI] skip :0 +[11176.662187] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662188] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204710 +[11176.662189] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204710 +[11176.662189] bdbm: [EUNJI] write hit: 0 remains +[11176.662190] bdbm: [EUNJI] skip :0 +[11176.662191] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662192] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204711 +[11176.662192] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204711 +[11176.662193] bdbm: nvm_tbl[2] lpa = 204708, tlpa = 204711 +[11176.662193] bdbm: [EUNJI] miss +[11176.662659] bdbm: [EUNJI] write hit: 0 remains +[11176.662660] bdbm: [EUNJI] skip :0 +[11176.662661] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662662] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204711 +[11176.662663] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204711 +[11176.662663] bdbm: nvm_tbl[2] lpa = 204711, tlpa = 204711 +[11176.662664] bdbm: [EUNJI] write hit: 0 remains +[11176.662664] bdbm: [EUNJI] skip :0 +[11176.662665] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662666] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204711 +[11176.662666] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204711 +[11176.662667] bdbm: nvm_tbl[2] lpa = 204711, tlpa = 204711 +[11176.662667] bdbm: [EUNJI] write hit: 0 remains +[11176.662668] bdbm: [EUNJI] skip :0 +[11176.662669] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662670] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204711 +[11176.662671] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204711 +[11176.662671] bdbm: nvm_tbl[2] lpa = 204711, tlpa = 204711 +[11176.662672] bdbm: [EUNJI] write hit: 0 remains +[11176.662672] bdbm: [EUNJI] skip :0 +[11176.662673] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662674] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204711 +[11176.662674] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204711 +[11176.662675] bdbm: nvm_tbl[2] lpa = 204711, tlpa = 204711 +[11176.662675] bdbm: [EUNJI] write hit: 0 remains +[11176.662676] bdbm: [EUNJI] skip :0 +[11176.662677] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662677] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204711 +[11176.662678] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204711 +[11176.662679] bdbm: nvm_tbl[2] lpa = 204711, tlpa = 204711 +[11176.662679] bdbm: [EUNJI] write hit: 0 remains +[11176.662680] bdbm: [EUNJI] skip :0 +[11176.662681] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662682] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204711 +[11176.662682] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204711 +[11176.662683] bdbm: nvm_tbl[2] lpa = 204711, tlpa = 204711 +[11176.662683] bdbm: [EUNJI] write hit: 0 remains +[11176.662684] bdbm: [EUNJI] skip :0 +[11176.662685] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662685] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204711 +[11176.662686] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204711 +[11176.662687] bdbm: nvm_tbl[2] lpa = 204711, tlpa = 204711 +[11176.662687] bdbm: [EUNJI] write hit: 0 remains +[11176.662688] bdbm: [EUNJI] skip :0 +[11176.662690] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.662690] bdbm: nvm_tbl[0] lpa = 204709, tlpa = 204712 +[11176.662691] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204712 +[11176.662691] bdbm: nvm_tbl[2] lpa = 204711, tlpa = 204712 +[11176.662692] bdbm: [EUNJI] miss +[11176.663156] bdbm: [EUNJI] write hit: 0 remains +[11176.663157] bdbm: [EUNJI] skip :0 +[11176.663158] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663158] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204712 +[11176.663159] bdbm: [EUNJI] write hit: 0 remains +[11176.663160] bdbm: [EUNJI] skip :0 +[11176.663161] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663161] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204712 +[11176.663162] bdbm: [EUNJI] write hit: 0 remains +[11176.663162] bdbm: [EUNJI] skip :0 +[11176.663163] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663164] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204712 +[11176.663165] bdbm: [EUNJI] write hit: 0 remains +[11176.663165] bdbm: [EUNJI] skip :0 +[11176.663166] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663167] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204712 +[11176.663167] bdbm: [EUNJI] write hit: 0 remains +[11176.663168] bdbm: [EUNJI] skip :0 +[11176.663169] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663170] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204712 +[11176.663170] bdbm: [EUNJI] write hit: 0 remains +[11176.663171] bdbm: [EUNJI] skip :0 +[11176.663172] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663172] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204712 +[11176.663173] bdbm: [EUNJI] write hit: 0 remains +[11176.663173] bdbm: [EUNJI] skip :0 +[11176.663174] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663175] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204712 +[11176.663175] bdbm: [EUNJI] write hit: 0 remains +[11176.663176] bdbm: [EUNJI] skip :0 +[11176.663178] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663178] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204713 +[11176.663179] bdbm: nvm_tbl[1] lpa = 204710, tlpa = 204713 +[11176.663179] bdbm: nvm_tbl[2] lpa = 204711, tlpa = 204713 +[11176.663180] bdbm: [EUNJI] miss +[11176.663644] bdbm: [EUNJI] write hit: 0 remains +[11176.663644] bdbm: [EUNJI] skip :0 +[11176.663645] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663646] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204713 +[11176.663646] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204713 +[11176.663647] bdbm: [EUNJI] write hit: 0 remains +[11176.663648] bdbm: [EUNJI] skip :0 +[11176.663649] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663649] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204713 +[11176.663650] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204713 +[11176.663650] bdbm: [EUNJI] write hit: 0 remains +[11176.663651] bdbm: [EUNJI] skip :0 +[11176.663652] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663653] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204713 +[11176.663653] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204713 +[11176.663654] bdbm: [EUNJI] write hit: 0 remains +[11176.663654] bdbm: [EUNJI] skip :0 +[11176.663655] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663656] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204713 +[11176.663656] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204713 +[11176.663657] bdbm: [EUNJI] write hit: 0 remains +[11176.663658] bdbm: [EUNJI] skip :0 +[11176.663659] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663659] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204713 +[11176.663660] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204713 +[11176.663661] bdbm: [EUNJI] write hit: 0 remains +[11176.663662] bdbm: [EUNJI] skip :0 +[11176.663663] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663663] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204713 +[11176.663664] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204713 +[11176.663664] bdbm: [EUNJI] write hit: 0 remains +[11176.663665] bdbm: [EUNJI] skip :0 +[11176.663666] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663666] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204713 +[11176.663667] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204713 +[11176.663668] bdbm: [EUNJI] write hit: 0 remains +[11176.663668] bdbm: [EUNJI] skip :0 +[11176.663670] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.663671] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204714 +[11176.663671] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204714 +[11176.663672] bdbm: nvm_tbl[2] lpa = 204711, tlpa = 204714 +[11176.663672] bdbm: [EUNJI] miss +[11176.664137] bdbm: [EUNJI] write hit: 0 remains +[11176.664137] bdbm: [EUNJI] skip :0 +[11176.664138] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664139] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204714 +[11176.664140] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204714 +[11176.664140] bdbm: nvm_tbl[2] lpa = 204714, tlpa = 204714 +[11176.664141] bdbm: [EUNJI] write hit: 0 remains +[11176.664141] bdbm: [EUNJI] skip :0 +[11176.664142] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664143] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204714 +[11176.664143] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204714 +[11176.664144] bdbm: nvm_tbl[2] lpa = 204714, tlpa = 204714 +[11176.664145] bdbm: [EUNJI] write hit: 0 remains +[11176.664145] bdbm: [EUNJI] skip :0 +[11176.664146] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664147] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204714 +[11176.664147] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204714 +[11176.664148] bdbm: nvm_tbl[2] lpa = 204714, tlpa = 204714 +[11176.664149] bdbm: [EUNJI] write hit: 0 remains +[11176.664149] bdbm: [EUNJI] skip :0 +[11176.664150] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664151] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204714 +[11176.664151] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204714 +[11176.664152] bdbm: nvm_tbl[2] lpa = 204714, tlpa = 204714 +[11176.664153] bdbm: [EUNJI] write hit: 0 remains +[11176.664153] bdbm: [EUNJI] skip :0 +[11176.664154] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664155] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204714 +[11176.664155] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204714 +[11176.664156] bdbm: nvm_tbl[2] lpa = 204714, tlpa = 204714 +[11176.664156] bdbm: [EUNJI] write hit: 0 remains +[11176.664157] bdbm: [EUNJI] skip :0 +[11176.664158] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664158] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204714 +[11176.664159] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204714 +[11176.664159] bdbm: nvm_tbl[2] lpa = 204714, tlpa = 204714 +[11176.664160] bdbm: [EUNJI] write hit: 0 remains +[11176.664161] bdbm: [EUNJI] skip :0 +[11176.664162] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664162] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204714 +[11176.664163] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204714 +[11176.664164] bdbm: nvm_tbl[2] lpa = 204714, tlpa = 204714 +[11176.664164] bdbm: [EUNJI] write hit: 0 remains +[11176.664165] bdbm: [EUNJI] skip :0 +[11176.664166] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664167] bdbm: nvm_tbl[0] lpa = 204712, tlpa = 204715 +[11176.664167] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204715 +[11176.664168] bdbm: nvm_tbl[2] lpa = 204714, tlpa = 204715 +[11176.664168] bdbm: [EUNJI] miss +[11176.664634] bdbm: [EUNJI] write hit: 0 remains +[11176.664634] bdbm: [EUNJI] skip :0 +[11176.664635] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664636] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204715 +[11176.664637] bdbm: [EUNJI] write hit: 0 remains +[11176.664637] bdbm: [EUNJI] skip :0 +[11176.664638] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664639] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204715 +[11176.664639] bdbm: [EUNJI] write hit: 0 remains +[11176.664640] bdbm: [EUNJI] skip :0 +[11176.664641] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664641] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204715 +[11176.664642] bdbm: [EUNJI] write hit: 0 remains +[11176.664643] bdbm: [EUNJI] skip :0 +[11176.664644] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664644] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204715 +[11176.664645] bdbm: [EUNJI] write hit: 0 remains +[11176.664645] bdbm: [EUNJI] skip :0 +[11176.664646] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664647] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204715 +[11176.664647] bdbm: [EUNJI] write hit: 0 remains +[11176.664648] bdbm: [EUNJI] skip :0 +[11176.664649] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664650] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204715 +[11176.664650] bdbm: [EUNJI] write hit: 0 remains +[11176.664651] bdbm: [EUNJI] skip :0 +[11176.664652] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664652] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204715 +[11176.664653] bdbm: [EUNJI] write hit: 0 remains +[11176.664653] bdbm: [EUNJI] skip :0 +[11176.664655] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.664656] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204716 +[11176.664657] bdbm: nvm_tbl[1] lpa = 204713, tlpa = 204716 +[11176.664658] bdbm: nvm_tbl[2] lpa = 204714, tlpa = 204716 +[11176.664658] bdbm: [EUNJI] miss +[11176.665125] bdbm: [EUNJI] write hit: 0 remains +[11176.665125] bdbm: [EUNJI] skip :0 +[11176.665127] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665128] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204716 +[11176.665129] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204716 +[11176.665129] bdbm: [EUNJI] write hit: 0 remains +[11176.665130] bdbm: [EUNJI] skip :0 +[11176.665131] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665131] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204716 +[11176.665132] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204716 +[11176.665132] bdbm: [EUNJI] write hit: 0 remains +[11176.665133] bdbm: [EUNJI] skip :0 +[11176.665134] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665134] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204716 +[11176.665135] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204716 +[11176.665135] bdbm: [EUNJI] write hit: 0 remains +[11176.665136] bdbm: [EUNJI] skip :0 +[11176.665137] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665138] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204716 +[11176.665139] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204716 +[11176.665139] bdbm: [EUNJI] write hit: 0 remains +[11176.665140] bdbm: [EUNJI] skip :0 +[11176.665141] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665141] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204716 +[11176.665142] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204716 +[11176.665142] bdbm: [EUNJI] write hit: 0 remains +[11176.665143] bdbm: [EUNJI] skip :0 +[11176.665144] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665145] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204716 +[11176.665145] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204716 +[11176.665146] bdbm: [EUNJI] write hit: 0 remains +[11176.665146] bdbm: [EUNJI] skip :0 +[11176.665147] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665148] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204716 +[11176.665148] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204716 +[11176.665149] bdbm: [EUNJI] write hit: 0 remains +[11176.665149] bdbm: [EUNJI] skip :0 +[11176.665151] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665152] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204717 +[11176.665152] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204717 +[11176.665153] bdbm: nvm_tbl[2] lpa = 204714, tlpa = 204717 +[11176.665153] bdbm: [EUNJI] miss +[11176.665616] bdbm: [EUNJI] write hit: 0 remains +[11176.665617] bdbm: [EUNJI] skip :0 +[11176.665618] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665619] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204717 +[11176.665619] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204717 +[11176.665620] bdbm: nvm_tbl[2] lpa = 204717, tlpa = 204717 +[11176.665620] bdbm: [EUNJI] write hit: 0 remains +[11176.665621] bdbm: [EUNJI] skip :0 +[11176.665622] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665623] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204717 +[11176.665623] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204717 +[11176.665624] bdbm: nvm_tbl[2] lpa = 204717, tlpa = 204717 +[11176.665625] bdbm: [EUNJI] write hit: 0 remains +[11176.665625] bdbm: [EUNJI] skip :0 +[11176.665626] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665627] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204717 +[11176.665627] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204717 +[11176.665628] bdbm: nvm_tbl[2] lpa = 204717, tlpa = 204717 +[11176.665628] bdbm: [EUNJI] write hit: 0 remains +[11176.665629] bdbm: [EUNJI] skip :0 +[11176.665630] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665631] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204717 +[11176.665631] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204717 +[11176.665632] bdbm: nvm_tbl[2] lpa = 204717, tlpa = 204717 +[11176.665632] bdbm: [EUNJI] write hit: 0 remains +[11176.665633] bdbm: [EUNJI] skip :0 +[11176.665634] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665634] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204717 +[11176.665635] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204717 +[11176.665636] bdbm: nvm_tbl[2] lpa = 204717, tlpa = 204717 +[11176.665636] bdbm: [EUNJI] write hit: 0 remains +[11176.665637] bdbm: [EUNJI] skip :0 +[11176.665638] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665639] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204717 +[11176.665639] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204717 +[11176.665640] bdbm: nvm_tbl[2] lpa = 204717, tlpa = 204717 +[11176.665640] bdbm: [EUNJI] write hit: 0 remains +[11176.665641] bdbm: [EUNJI] skip :0 +[11176.665642] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665643] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204717 +[11176.665643] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204717 +[11176.665644] bdbm: nvm_tbl[2] lpa = 204717, tlpa = 204717 +[11176.665644] bdbm: [EUNJI] write hit: 0 remains +[11176.665645] bdbm: [EUNJI] skip :0 +[11176.665647] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.665648] bdbm: nvm_tbl[0] lpa = 204715, tlpa = 204718 +[11176.665648] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204718 +[11176.665649] bdbm: nvm_tbl[2] lpa = 204717, tlpa = 204718 +[11176.665649] bdbm: [EUNJI] miss +[11176.666190] bdbm: [EUNJI] write hit: 0 remains +[11176.666191] bdbm: [EUNJI] skip :0 +[11176.666193] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666193] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204718 +[11176.666194] bdbm: [EUNJI] write hit: 0 remains +[11176.666194] bdbm: [EUNJI] skip :0 +[11176.666195] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666196] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204718 +[11176.666196] bdbm: [EUNJI] write hit: 0 remains +[11176.666197] bdbm: [EUNJI] skip :0 +[11176.666198] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666199] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204718 +[11176.666200] bdbm: [EUNJI] write hit: 0 remains +[11176.666200] bdbm: [EUNJI] skip :0 +[11176.666201] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666202] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204718 +[11176.666202] bdbm: [EUNJI] write hit: 0 remains +[11176.666203] bdbm: [EUNJI] skip :0 +[11176.666204] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666204] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204718 +[11176.666205] bdbm: [EUNJI] write hit: 0 remains +[11176.666206] bdbm: [EUNJI] skip :0 +[11176.666207] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666207] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204718 +[11176.666208] bdbm: [EUNJI] write hit: 0 remains +[11176.666208] bdbm: [EUNJI] skip :0 +[11176.666209] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666210] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204718 +[11176.666210] bdbm: [EUNJI] write hit: 0 remains +[11176.666211] bdbm: [EUNJI] skip :0 +[11176.666213] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666213] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204719 +[11176.666214] bdbm: nvm_tbl[1] lpa = 204716, tlpa = 204719 +[11176.666215] bdbm: nvm_tbl[2] lpa = 204717, tlpa = 204719 +[11176.666215] bdbm: [EUNJI] miss +[11176.666684] bdbm: [EUNJI] write hit: 0 remains +[11176.666685] bdbm: [EUNJI] skip :0 +[11176.666687] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666689] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204719 +[11176.666690] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204719 +[11176.666690] bdbm: [EUNJI] write hit: 0 remains +[11176.666691] bdbm: [EUNJI] skip :0 +[11176.666692] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666693] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204719 +[11176.666693] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204719 +[11176.666695] bdbm: [EUNJI] write hit: 0 remains +[11176.666695] bdbm: [EUNJI] skip :0 +[11176.666696] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666697] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204719 +[11176.666697] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204719 +[11176.666698] bdbm: [EUNJI] write hit: 0 remains +[11176.666699] bdbm: [EUNJI] skip :0 +[11176.666701] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666701] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204719 +[11176.666702] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204719 +[11176.666702] bdbm: [EUNJI] write hit: 0 remains +[11176.666703] bdbm: [EUNJI] skip :0 +[11176.666704] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666705] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204719 +[11176.666705] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204719 +[11176.666707] bdbm: [EUNJI] write hit: 0 remains +[11176.666708] bdbm: [EUNJI] skip :0 +[11176.666709] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666709] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204719 +[11176.666710] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204719 +[11176.666710] bdbm: [EUNJI] write hit: 0 remains +[11176.666711] bdbm: [EUNJI] skip :0 +[11176.666713] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666713] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204719 +[11176.666714] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204719 +[11176.666715] bdbm: [EUNJI] write hit: 0 remains +[11176.666715] bdbm: [EUNJI] skip :0 +[11176.666719] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.666720] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204720 +[11176.666721] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204720 +[11176.666721] bdbm: nvm_tbl[2] lpa = 204717, tlpa = 204720 +[11176.666722] bdbm: [EUNJI] miss +[11176.667195] bdbm: [EUNJI] write hit: 0 remains +[11176.667196] bdbm: [EUNJI] skip :0 +[11176.667197] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667198] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204720 +[11176.667198] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204720 +[11176.667199] bdbm: nvm_tbl[2] lpa = 204720, tlpa = 204720 +[11176.667200] bdbm: [EUNJI] write hit: 0 remains +[11176.667201] bdbm: [EUNJI] skip :0 +[11176.667202] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667202] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204720 +[11176.667203] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204720 +[11176.667204] bdbm: nvm_tbl[2] lpa = 204720, tlpa = 204720 +[11176.667204] bdbm: [EUNJI] write hit: 0 remains +[11176.667206] bdbm: [EUNJI] skip :0 +[11176.667207] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667208] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204720 +[11176.667208] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204720 +[11176.667209] bdbm: nvm_tbl[2] lpa = 204720, tlpa = 204720 +[11176.667209] bdbm: [EUNJI] write hit: 0 remains +[11176.667210] bdbm: [EUNJI] skip :0 +[11176.667211] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667212] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204720 +[11176.667213] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204720 +[11176.667213] bdbm: nvm_tbl[2] lpa = 204720, tlpa = 204720 +[11176.667214] bdbm: [EUNJI] write hit: 0 remains +[11176.667214] bdbm: [EUNJI] skip :0 +[11176.667215] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667216] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204720 +[11176.667216] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204720 +[11176.667218] bdbm: nvm_tbl[2] lpa = 204720, tlpa = 204720 +[11176.667219] bdbm: [EUNJI] write hit: 0 remains +[11176.667219] bdbm: [EUNJI] skip :0 +[11176.667221] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667221] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204720 +[11176.667222] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204720 +[11176.667222] bdbm: nvm_tbl[2] lpa = 204720, tlpa = 204720 +[11176.667224] bdbm: [EUNJI] write hit: 0 remains +[11176.667224] bdbm: [EUNJI] skip :0 +[11176.667225] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667226] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204720 +[11176.667226] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204720 +[11176.667227] bdbm: nvm_tbl[2] lpa = 204720, tlpa = 204720 +[11176.667228] bdbm: [EUNJI] write hit: 0 remains +[11176.667229] bdbm: [EUNJI] skip :0 +[11176.667231] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667232] bdbm: nvm_tbl[0] lpa = 204718, tlpa = 204721 +[11176.667232] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204721 +[11176.667233] bdbm: nvm_tbl[2] lpa = 204720, tlpa = 204721 +[11176.667233] bdbm: [EUNJI] miss +[11176.667705] bdbm: [EUNJI] write hit: 0 remains +[11176.667706] bdbm: [EUNJI] skip :0 +[11176.667707] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667707] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204721 +[11176.667708] bdbm: [EUNJI] write hit: 0 remains +[11176.667708] bdbm: [EUNJI] skip :0 +[11176.667710] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667711] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204721 +[11176.667712] bdbm: [EUNJI] write hit: 0 remains +[11176.667712] bdbm: [EUNJI] skip :0 +[11176.667713] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667714] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204721 +[11176.667714] bdbm: [EUNJI] write hit: 0 remains +[11176.667715] bdbm: [EUNJI] skip :0 +[11176.667717] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667718] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204721 +[11176.667718] bdbm: [EUNJI] write hit: 0 remains +[11176.667719] bdbm: [EUNJI] skip :0 +[11176.667720] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667721] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204721 +[11176.667722] bdbm: [EUNJI] write hit: 0 remains +[11176.667723] bdbm: [EUNJI] skip :0 +[11176.667724] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667724] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204721 +[11176.667725] bdbm: [EUNJI] write hit: 0 remains +[11176.667725] bdbm: [EUNJI] skip :0 +[11176.667726] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667728] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204721 +[11176.667729] bdbm: [EUNJI] write hit: 0 remains +[11176.667729] bdbm: [EUNJI] skip :0 +[11176.667731] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.667731] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204722 +[11176.667732] bdbm: nvm_tbl[1] lpa = 204719, tlpa = 204722 +[11176.667732] bdbm: nvm_tbl[2] lpa = 204720, tlpa = 204722 +[11176.667734] bdbm: [EUNJI] miss +[11176.668203] bdbm: [EUNJI] write hit: 0 remains +[11176.668204] bdbm: [EUNJI] skip :0 +[11176.668205] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668206] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204722 +[11176.668206] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204722 +[11176.668207] bdbm: [EUNJI] write hit: 0 remains +[11176.668207] bdbm: [EUNJI] skip :0 +[11176.668209] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668210] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204722 +[11176.668211] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204722 +[11176.668211] bdbm: [EUNJI] write hit: 0 remains +[11176.668212] bdbm: [EUNJI] skip :0 +[11176.668213] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668215] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204722 +[11176.668215] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204722 +[11176.668216] bdbm: [EUNJI] write hit: 0 remains +[11176.668216] bdbm: [EUNJI] skip :0 +[11176.668217] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668218] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204722 +[11176.668219] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204722 +[11176.668220] bdbm: [EUNJI] write hit: 0 remains +[11176.668221] bdbm: [EUNJI] skip :0 +[11176.668222] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668222] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204722 +[11176.668223] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204722 +[11176.668224] bdbm: [EUNJI] write hit: 0 remains +[11176.668224] bdbm: [EUNJI] skip :0 +[11176.668226] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668227] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204722 +[11176.668228] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204722 +[11176.668228] bdbm: [EUNJI] write hit: 0 remains +[11176.668229] bdbm: [EUNJI] skip :0 +[11176.668230] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668230] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204722 +[11176.668231] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204722 +[11176.668232] bdbm: [EUNJI] write hit: 0 remains +[11176.668233] bdbm: [EUNJI] skip :0 +[11176.668235] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668236] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204723 +[11176.668236] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204723 +[11176.668237] bdbm: nvm_tbl[2] lpa = 204720, tlpa = 204723 +[11176.668238] bdbm: [EUNJI] miss +[11176.668708] bdbm: [EUNJI] write hit: 0 remains +[11176.668709] bdbm: [EUNJI] skip :0 +[11176.668710] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668710] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204723 +[11176.668711] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204723 +[11176.668711] bdbm: nvm_tbl[2] lpa = 204723, tlpa = 204723 +[11176.668712] bdbm: [EUNJI] write hit: 0 remains +[11176.668714] bdbm: [EUNJI] skip :0 +[11176.668715] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668716] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204723 +[11176.668716] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204723 +[11176.668717] bdbm: nvm_tbl[2] lpa = 204723, tlpa = 204723 +[11176.668717] bdbm: [EUNJI] write hit: 0 remains +[11176.668718] bdbm: [EUNJI] skip :0 +[11176.668720] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668720] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204723 +[11176.668721] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204723 +[11176.668721] bdbm: nvm_tbl[2] lpa = 204723, tlpa = 204723 +[11176.668722] bdbm: [EUNJI] write hit: 0 remains +[11176.668723] bdbm: [EUNJI] skip :0 +[11176.668724] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668725] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204723 +[11176.668726] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204723 +[11176.668726] bdbm: nvm_tbl[2] lpa = 204723, tlpa = 204723 +[11176.668727] bdbm: [EUNJI] write hit: 0 remains +[11176.668728] bdbm: [EUNJI] skip :0 +[11176.668728] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668729] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204723 +[11176.668730] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204723 +[11176.668731] bdbm: nvm_tbl[2] lpa = 204723, tlpa = 204723 +[11176.668732] bdbm: [EUNJI] write hit: 0 remains +[11176.668732] bdbm: [EUNJI] skip :0 +[11176.668733] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668734] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204723 +[11176.668734] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204723 +[11176.668735] bdbm: nvm_tbl[2] lpa = 204723, tlpa = 204723 +[11176.668735] bdbm: [EUNJI] write hit: 0 remains +[11176.668737] bdbm: [EUNJI] skip :0 +[11176.668738] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668739] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204723 +[11176.668739] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204723 +[11176.668740] bdbm: nvm_tbl[2] lpa = 204723, tlpa = 204723 +[11176.668740] bdbm: [EUNJI] write hit: 0 remains +[11176.668741] bdbm: [EUNJI] skip :0 +[11176.668744] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.668744] bdbm: nvm_tbl[0] lpa = 204721, tlpa = 204724 +[11176.668745] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204724 +[11176.668745] bdbm: nvm_tbl[2] lpa = 204723, tlpa = 204724 +[11176.668746] bdbm: [EUNJI] miss +[11176.669211] bdbm: [EUNJI] write hit: 0 remains +[11176.669212] bdbm: [EUNJI] skip :0 +[11176.669213] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669214] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204724 +[11176.669214] bdbm: [EUNJI] write hit: 0 remains +[11176.669215] bdbm: [EUNJI] skip :0 +[11176.669216] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669217] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204724 +[11176.669218] bdbm: [EUNJI] write hit: 0 remains +[11176.669218] bdbm: [EUNJI] skip :0 +[11176.669219] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669220] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204724 +[11176.669221] bdbm: [EUNJI] write hit: 0 remains +[11176.669221] bdbm: [EUNJI] skip :0 +[11176.669223] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669224] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204724 +[11176.669224] bdbm: [EUNJI] write hit: 0 remains +[11176.669225] bdbm: [EUNJI] skip :0 +[11176.669226] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669226] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204724 +[11176.669227] bdbm: [EUNJI] write hit: 0 remains +[11176.669227] bdbm: [EUNJI] skip :0 +[11176.669229] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669230] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204724 +[11176.669230] bdbm: [EUNJI] write hit: 0 remains +[11176.669231] bdbm: [EUNJI] skip :0 +[11176.669232] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669233] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204724 +[11176.669233] bdbm: [EUNJI] write hit: 0 remains +[11176.669235] bdbm: [EUNJI] skip :0 +[11176.669236] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669237] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204725 +[11176.669237] bdbm: nvm_tbl[1] lpa = 204722, tlpa = 204725 +[11176.669238] bdbm: nvm_tbl[2] lpa = 204723, tlpa = 204725 +[11176.669238] bdbm: [EUNJI] miss +[11176.669705] bdbm: [EUNJI] write hit: 0 remains +[11176.669706] bdbm: [EUNJI] skip :0 +[11176.669707] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669708] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204725 +[11176.669708] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204725 +[11176.669709] bdbm: [EUNJI] write hit: 0 remains +[11176.669709] bdbm: [EUNJI] skip :0 +[11176.669711] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669712] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204725 +[11176.669712] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204725 +[11176.669713] bdbm: [EUNJI] write hit: 0 remains +[11176.669713] bdbm: [EUNJI] skip :0 +[11176.669714] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669715] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204725 +[11176.669715] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204725 +[11176.669717] bdbm: [EUNJI] write hit: 0 remains +[11176.669718] bdbm: [EUNJI] skip :0 +[11176.669719] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669719] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204725 +[11176.669720] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204725 +[11176.669720] bdbm: [EUNJI] write hit: 0 remains +[11176.669721] bdbm: [EUNJI] skip :0 +[11176.669723] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669723] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204725 +[11176.669724] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204725 +[11176.669724] bdbm: [EUNJI] write hit: 0 remains +[11176.669725] bdbm: [EUNJI] skip :0 +[11176.669726] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669726] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204725 +[11176.669727] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204725 +[11176.669729] bdbm: [EUNJI] write hit: 0 remains +[11176.669729] bdbm: [EUNJI] skip :0 +[11176.669730] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669731] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204725 +[11176.669731] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204725 +[11176.669732] bdbm: [EUNJI] write hit: 0 remains +[11176.669732] bdbm: [EUNJI] skip :0 +[11176.669735] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.669736] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204726 +[11176.669736] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204726 +[11176.669737] bdbm: nvm_tbl[2] lpa = 204723, tlpa = 204726 +[11176.669737] bdbm: [EUNJI] miss +[11176.670205] bdbm: [EUNJI] write hit: 0 remains +[11176.670206] bdbm: [EUNJI] skip :0 +[11176.670208] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670208] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204726 +[11176.670209] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204726 +[11176.670210] bdbm: nvm_tbl[2] lpa = 204726, tlpa = 204726 +[11176.670210] bdbm: [EUNJI] write hit: 0 remains +[11176.670211] bdbm: [EUNJI] skip :0 +[11176.670212] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670213] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204726 +[11176.670213] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204726 +[11176.670214] bdbm: nvm_tbl[2] lpa = 204726, tlpa = 204726 +[11176.670214] bdbm: [EUNJI] write hit: 0 remains +[11176.670215] bdbm: [EUNJI] skip :0 +[11176.670216] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670216] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204726 +[11176.670217] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204726 +[11176.670218] bdbm: nvm_tbl[2] lpa = 204726, tlpa = 204726 +[11176.670218] bdbm: [EUNJI] write hit: 0 remains +[11176.670219] bdbm: [EUNJI] skip :0 +[11176.670220] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670220] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204726 +[11176.670221] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204726 +[11176.670221] bdbm: nvm_tbl[2] lpa = 204726, tlpa = 204726 +[11176.670222] bdbm: [EUNJI] write hit: 0 remains +[11176.670222] bdbm: [EUNJI] skip :0 +[11176.670223] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670224] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204726 +[11176.670224] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204726 +[11176.670225] bdbm: nvm_tbl[2] lpa = 204726, tlpa = 204726 +[11176.670226] bdbm: [EUNJI] write hit: 0 remains +[11176.670226] bdbm: [EUNJI] skip :0 +[11176.670227] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670228] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204726 +[11176.670228] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204726 +[11176.670229] bdbm: nvm_tbl[2] lpa = 204726, tlpa = 204726 +[11176.670230] bdbm: [EUNJI] write hit: 0 remains +[11176.670230] bdbm: [EUNJI] skip :0 +[11176.670231] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670232] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204726 +[11176.670232] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204726 +[11176.670233] bdbm: nvm_tbl[2] lpa = 204726, tlpa = 204726 +[11176.670234] bdbm: [EUNJI] write hit: 0 remains +[11176.670234] bdbm: [EUNJI] skip :0 +[11176.670236] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670237] bdbm: nvm_tbl[0] lpa = 204724, tlpa = 204727 +[11176.670237] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204727 +[11176.670238] bdbm: nvm_tbl[2] lpa = 204726, tlpa = 204727 +[11176.670238] bdbm: [EUNJI] miss +[11176.670710] bdbm: [EUNJI] write hit: 0 remains +[11176.670710] bdbm: [EUNJI] skip :0 +[11176.670711] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670712] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204727 +[11176.670713] bdbm: [EUNJI] write hit: 0 remains +[11176.670713] bdbm: [EUNJI] skip :0 +[11176.670714] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670715] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204727 +[11176.670715] bdbm: [EUNJI] write hit: 0 remains +[11176.670716] bdbm: [EUNJI] skip :0 +[11176.670717] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670718] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204727 +[11176.670718] bdbm: [EUNJI] write hit: 0 remains +[11176.670719] bdbm: [EUNJI] skip :0 +[11176.670720] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670720] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204727 +[11176.670721] bdbm: [EUNJI] write hit: 0 remains +[11176.670721] bdbm: [EUNJI] skip :0 +[11176.670722] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670723] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204727 +[11176.670723] bdbm: [EUNJI] write hit: 0 remains +[11176.670724] bdbm: [EUNJI] skip :0 +[11176.670725] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670726] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204727 +[11176.670726] bdbm: [EUNJI] write hit: 0 remains +[11176.670727] bdbm: [EUNJI] skip :0 +[11176.670728] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670728] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204727 +[11176.670729] bdbm: [EUNJI] write hit: 0 remains +[11176.670729] bdbm: [EUNJI] skip :0 +[11176.670731] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.670731] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204728 +[11176.670732] bdbm: nvm_tbl[1] lpa = 204725, tlpa = 204728 +[11176.670733] bdbm: nvm_tbl[2] lpa = 204726, tlpa = 204728 +[11176.670733] bdbm: [EUNJI] miss +[11176.671198] bdbm: [EUNJI] write hit: 0 remains +[11176.671198] bdbm: [EUNJI] skip :0 +[11176.671200] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671200] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204728 +[11176.671201] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204728 +[11176.671201] bdbm: [EUNJI] write hit: 0 remains +[11176.671202] bdbm: [EUNJI] skip :0 +[11176.671203] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671203] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204728 +[11176.671204] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204728 +[11176.671204] bdbm: [EUNJI] write hit: 0 remains +[11176.671205] bdbm: [EUNJI] skip :0 +[11176.671206] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671206] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204728 +[11176.671207] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204728 +[11176.671207] bdbm: [EUNJI] write hit: 0 remains +[11176.671208] bdbm: [EUNJI] skip :0 +[11176.671209] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671209] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204728 +[11176.671210] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204728 +[11176.671210] bdbm: [EUNJI] write hit: 0 remains +[11176.671211] bdbm: [EUNJI] skip :0 +[11176.671212] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671212] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204728 +[11176.671213] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204728 +[11176.671214] bdbm: [EUNJI] write hit: 0 remains +[11176.671214] bdbm: [EUNJI] skip :0 +[11176.671215] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671216] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204728 +[11176.671216] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204728 +[11176.671217] bdbm: [EUNJI] write hit: 0 remains +[11176.671217] bdbm: [EUNJI] skip :0 +[11176.671218] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671219] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204728 +[11176.671219] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204728 +[11176.671220] bdbm: [EUNJI] write hit: 0 remains +[11176.671220] bdbm: [EUNJI] skip :0 +[11176.671222] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671222] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204729 +[11176.671223] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204729 +[11176.671224] bdbm: nvm_tbl[2] lpa = 204726, tlpa = 204729 +[11176.671224] bdbm: [EUNJI] miss +[11176.671692] bdbm: [EUNJI] write hit: 0 remains +[11176.671692] bdbm: [EUNJI] skip :0 +[11176.671693] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671694] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204729 +[11176.671694] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204729 +[11176.671695] bdbm: nvm_tbl[2] lpa = 204729, tlpa = 204729 +[11176.671695] bdbm: [EUNJI] write hit: 0 remains +[11176.671696] bdbm: [EUNJI] skip :0 +[11176.671697] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671697] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204729 +[11176.671698] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204729 +[11176.671699] bdbm: nvm_tbl[2] lpa = 204729, tlpa = 204729 +[11176.671699] bdbm: [EUNJI] write hit: 0 remains +[11176.671700] bdbm: [EUNJI] skip :0 +[11176.671701] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671701] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204729 +[11176.671702] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204729 +[11176.671702] bdbm: nvm_tbl[2] lpa = 204729, tlpa = 204729 +[11176.671703] bdbm: [EUNJI] write hit: 0 remains +[11176.671703] bdbm: [EUNJI] skip :0 +[11176.671704] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671705] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204729 +[11176.671706] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204729 +[11176.671706] bdbm: nvm_tbl[2] lpa = 204729, tlpa = 204729 +[11176.671707] bdbm: [EUNJI] write hit: 0 remains +[11176.671707] bdbm: [EUNJI] skip :0 +[11176.671708] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671709] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204729 +[11176.671709] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204729 +[11176.671710] bdbm: nvm_tbl[2] lpa = 204729, tlpa = 204729 +[11176.671710] bdbm: [EUNJI] write hit: 0 remains +[11176.671711] bdbm: [EUNJI] skip :0 +[11176.671712] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671712] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204729 +[11176.671713] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204729 +[11176.671713] bdbm: nvm_tbl[2] lpa = 204729, tlpa = 204729 +[11176.671714] bdbm: [EUNJI] write hit: 0 remains +[11176.671714] bdbm: [EUNJI] skip :0 +[11176.671715] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671716] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204729 +[11176.671717] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204729 +[11176.671717] bdbm: nvm_tbl[2] lpa = 204729, tlpa = 204729 +[11176.671718] bdbm: [EUNJI] write hit: 0 remains +[11176.671718] bdbm: [EUNJI] skip :0 +[11176.671720] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.671720] bdbm: nvm_tbl[0] lpa = 204727, tlpa = 204730 +[11176.671721] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204730 +[11176.671721] bdbm: nvm_tbl[2] lpa = 204729, tlpa = 204730 +[11176.671722] bdbm: [EUNJI] miss +[11176.672191] bdbm: [EUNJI] write hit: 0 remains +[11176.672191] bdbm: [EUNJI] skip :0 +[11176.672192] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672193] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204730 +[11176.672194] bdbm: [EUNJI] write hit: 0 remains +[11176.672194] bdbm: [EUNJI] skip :0 +[11176.672195] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672196] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204730 +[11176.672196] bdbm: [EUNJI] write hit: 0 remains +[11176.672197] bdbm: [EUNJI] skip :0 +[11176.672198] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672198] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204730 +[11176.672199] bdbm: [EUNJI] write hit: 0 remains +[11176.672199] bdbm: [EUNJI] skip :0 +[11176.672200] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672201] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204730 +[11176.672201] bdbm: [EUNJI] write hit: 0 remains +[11176.672202] bdbm: [EUNJI] skip :0 +[11176.672203] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672203] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204730 +[11176.672204] bdbm: [EUNJI] write hit: 0 remains +[11176.672204] bdbm: [EUNJI] skip :0 +[11176.672205] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672206] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204730 +[11176.672207] bdbm: [EUNJI] write hit: 0 remains +[11176.672207] bdbm: [EUNJI] skip :0 +[11176.672208] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672209] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204730 +[11176.672209] bdbm: [EUNJI] write hit: 0 remains +[11176.672210] bdbm: [EUNJI] skip :0 +[11176.672211] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672212] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204731 +[11176.672212] bdbm: nvm_tbl[1] lpa = 204728, tlpa = 204731 +[11176.672213] bdbm: nvm_tbl[2] lpa = 204729, tlpa = 204731 +[11176.672213] bdbm: [EUNJI] miss +[11176.672678] bdbm: [EUNJI] write hit: 0 remains +[11176.672679] bdbm: [EUNJI] skip :0 +[11176.672680] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672681] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204731 +[11176.672681] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204731 +[11176.672682] bdbm: [EUNJI] write hit: 0 remains +[11176.672682] bdbm: [EUNJI] skip :0 +[11176.672683] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672684] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204731 +[11176.672684] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204731 +[11176.672685] bdbm: [EUNJI] write hit: 0 remains +[11176.672686] bdbm: [EUNJI] skip :0 +[11176.672687] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672687] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204731 +[11176.672688] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204731 +[11176.672688] bdbm: [EUNJI] write hit: 0 remains +[11176.672689] bdbm: [EUNJI] skip :0 +[11176.672690] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672690] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204731 +[11176.672691] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204731 +[11176.672691] bdbm: [EUNJI] write hit: 0 remains +[11176.672692] bdbm: [EUNJI] skip :0 +[11176.672693] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672693] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204731 +[11176.672694] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204731 +[11176.672694] bdbm: [EUNJI] write hit: 0 remains +[11176.672695] bdbm: [EUNJI] skip :0 +[11176.672696] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672696] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204731 +[11176.672697] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204731 +[11176.672697] bdbm: [EUNJI] write hit: 0 remains +[11176.672698] bdbm: [EUNJI] skip :0 +[11176.672699] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672699] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204731 +[11176.672700] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204731 +[11176.672700] bdbm: [EUNJI] write hit: 0 remains +[11176.672701] bdbm: [EUNJI] skip :0 +[11176.672703] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.672703] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204732 +[11176.672704] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204732 +[11176.672704] bdbm: nvm_tbl[2] lpa = 204729, tlpa = 204732 +[11176.672705] bdbm: [EUNJI] miss +[11176.673172] bdbm: [EUNJI] write hit: 0 remains +[11176.673173] bdbm: [EUNJI] skip :0 +[11176.673174] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673174] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204732 +[11176.673175] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204732 +[11176.673175] bdbm: nvm_tbl[2] lpa = 204732, tlpa = 204732 +[11176.673176] bdbm: [EUNJI] write hit: 0 remains +[11176.673176] bdbm: [EUNJI] skip :0 +[11176.673177] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673178] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204732 +[11176.673178] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204732 +[11176.673179] bdbm: nvm_tbl[2] lpa = 204732, tlpa = 204732 +[11176.673180] bdbm: [EUNJI] write hit: 0 remains +[11176.673180] bdbm: [EUNJI] skip :0 +[11176.673181] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673182] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204732 +[11176.673182] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204732 +[11176.673183] bdbm: nvm_tbl[2] lpa = 204732, tlpa = 204732 +[11176.673183] bdbm: [EUNJI] write hit: 0 remains +[11176.673184] bdbm: [EUNJI] skip :0 +[11176.673185] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673185] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204732 +[11176.673186] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204732 +[11176.673186] bdbm: nvm_tbl[2] lpa = 204732, tlpa = 204732 +[11176.673187] bdbm: [EUNJI] write hit: 0 remains +[11176.673187] bdbm: [EUNJI] skip :0 +[11176.673188] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673189] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204732 +[11176.673189] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204732 +[11176.673190] bdbm: nvm_tbl[2] lpa = 204732, tlpa = 204732 +[11176.673190] bdbm: [EUNJI] write hit: 0 remains +[11176.673191] bdbm: [EUNJI] skip :0 +[11176.673192] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673192] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204732 +[11176.673193] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204732 +[11176.673193] bdbm: nvm_tbl[2] lpa = 204732, tlpa = 204732 +[11176.673194] bdbm: [EUNJI] write hit: 0 remains +[11176.673194] bdbm: [EUNJI] skip :0 +[11176.673195] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673196] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204732 +[11176.673196] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204732 +[11176.673197] bdbm: nvm_tbl[2] lpa = 204732, tlpa = 204732 +[11176.673197] bdbm: [EUNJI] write hit: 0 remains +[11176.673198] bdbm: [EUNJI] skip :0 +[11176.673200] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673200] bdbm: nvm_tbl[0] lpa = 204730, tlpa = 204733 +[11176.673201] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204733 +[11176.673201] bdbm: nvm_tbl[2] lpa = 204732, tlpa = 204733 +[11176.673202] bdbm: [EUNJI] miss +[11176.673665] bdbm: [EUNJI] write hit: 0 remains +[11176.673665] bdbm: [EUNJI] skip :0 +[11176.673666] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673667] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204733 +[11176.673668] bdbm: [EUNJI] write hit: 0 remains +[11176.673668] bdbm: [EUNJI] skip :0 +[11176.673669] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673670] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204733 +[11176.673670] bdbm: [EUNJI] write hit: 0 remains +[11176.673671] bdbm: [EUNJI] skip :0 +[11176.673672] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673672] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204733 +[11176.673673] bdbm: [EUNJI] write hit: 0 remains +[11176.673673] bdbm: [EUNJI] skip :0 +[11176.673674] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673675] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204733 +[11176.673675] bdbm: [EUNJI] write hit: 0 remains +[11176.673676] bdbm: [EUNJI] skip :0 +[11176.673677] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673678] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204733 +[11176.673678] bdbm: [EUNJI] write hit: 0 remains +[11176.673679] bdbm: [EUNJI] skip :0 +[11176.673680] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673680] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204733 +[11176.673681] bdbm: [EUNJI] write hit: 0 remains +[11176.673681] bdbm: [EUNJI] skip :0 +[11176.673682] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673683] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204733 +[11176.673683] bdbm: [EUNJI] write hit: 0 remains +[11176.673684] bdbm: [EUNJI] skip :0 +[11176.673686] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.673687] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204734 +[11176.673687] bdbm: nvm_tbl[1] lpa = 204731, tlpa = 204734 +[11176.673688] bdbm: nvm_tbl[2] lpa = 204732, tlpa = 204734 +[11176.673688] bdbm: [EUNJI] miss +[11176.674185] bdbm: [EUNJI] write hit: 0 remains +[11176.674186] bdbm: [EUNJI] skip :0 +[11176.674187] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674188] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204734 +[11176.674188] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204734 +[11176.674189] bdbm: [EUNJI] write hit: 0 remains +[11176.674190] bdbm: [EUNJI] skip :0 +[11176.674191] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674191] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204734 +[11176.674192] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204734 +[11176.674192] bdbm: [EUNJI] write hit: 0 remains +[11176.674193] bdbm: [EUNJI] skip :0 +[11176.674194] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674195] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204734 +[11176.674195] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204734 +[11176.674196] bdbm: [EUNJI] write hit: 0 remains +[11176.674196] bdbm: [EUNJI] skip :0 +[11176.674198] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674198] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204734 +[11176.674199] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204734 +[11176.674199] bdbm: [EUNJI] write hit: 0 remains +[11176.674200] bdbm: [EUNJI] skip :0 +[11176.674201] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674201] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204734 +[11176.674202] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204734 +[11176.674203] bdbm: [EUNJI] write hit: 0 remains +[11176.674203] bdbm: [EUNJI] skip :0 +[11176.674204] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674205] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204734 +[11176.674205] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204734 +[11176.674206] bdbm: [EUNJI] write hit: 0 remains +[11176.674207] bdbm: [EUNJI] skip :0 +[11176.674208] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674208] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204734 +[11176.674209] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204734 +[11176.674209] bdbm: [EUNJI] write hit: 0 remains +[11176.674210] bdbm: [EUNJI] skip :0 +[11176.674212] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674212] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204735 +[11176.674213] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204735 +[11176.674213] bdbm: nvm_tbl[2] lpa = 204732, tlpa = 204735 +[11176.674214] bdbm: [EUNJI] miss +[11176.674682] bdbm: [EUNJI] write hit: 0 remains +[11176.674683] bdbm: [EUNJI] skip :0 +[11176.674685] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674686] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204735 +[11176.674686] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204735 +[11176.674688] bdbm: nvm_tbl[2] lpa = 204735, tlpa = 204735 +[11176.674688] bdbm: [EUNJI] write hit: 0 remains +[11176.674689] bdbm: [EUNJI] skip :0 +[11176.674690] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674690] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204735 +[11176.674691] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204735 +[11176.674692] bdbm: nvm_tbl[2] lpa = 204735, tlpa = 204735 +[11176.674692] bdbm: [EUNJI] write hit: 0 remains +[11176.674694] bdbm: [EUNJI] skip :0 +[11176.674695] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674695] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204735 +[11176.674696] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204735 +[11176.674696] bdbm: nvm_tbl[2] lpa = 204735, tlpa = 204735 +[11176.674697] bdbm: [EUNJI] write hit: 0 remains +[11176.674698] bdbm: [EUNJI] skip :0 +[11176.674700] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674700] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204735 +[11176.674701] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204735 +[11176.674701] bdbm: nvm_tbl[2] lpa = 204735, tlpa = 204735 +[11176.674702] bdbm: [EUNJI] write hit: 0 remains +[11176.674702] bdbm: [EUNJI] skip :0 +[11176.674703] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674705] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204735 +[11176.674706] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204735 +[11176.674707] bdbm: nvm_tbl[2] lpa = 204735, tlpa = 204735 +[11176.674707] bdbm: [EUNJI] write hit: 0 remains +[11176.674708] bdbm: [EUNJI] skip :0 +[11176.674709] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674709] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204735 +[11176.674711] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204735 +[11176.674711] bdbm: nvm_tbl[2] lpa = 204735, tlpa = 204735 +[11176.674712] bdbm: [EUNJI] write hit: 0 remains +[11176.674713] bdbm: [EUNJI] skip :0 +[11176.674714] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674714] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204735 +[11176.674715] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204735 +[11176.674715] bdbm: nvm_tbl[2] lpa = 204735, tlpa = 204735 +[11176.674717] bdbm: [EUNJI] write hit: 0 remains +[11176.674718] bdbm: [EUNJI] skip :0 +[11176.674719] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.674720] bdbm: nvm_tbl[0] lpa = 204733, tlpa = 204736 +[11176.674721] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204736 +[11176.674721] bdbm: nvm_tbl[2] lpa = 204735, tlpa = 204736 +[11176.674723] bdbm: [EUNJI] miss +[11176.675188] bdbm: [EUNJI] write hit: 0 remains +[11176.675189] bdbm: [EUNJI] skip :0 +[11176.675191] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675192] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204736 +[11176.675192] bdbm: [EUNJI] write hit: 0 remains +[11176.675193] bdbm: [EUNJI] skip :0 +[11176.675195] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675195] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204736 +[11176.675196] bdbm: [EUNJI] write hit: 0 remains +[11176.675196] bdbm: [EUNJI] skip :0 +[11176.675197] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675198] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204736 +[11176.675199] bdbm: [EUNJI] write hit: 0 remains +[11176.675199] bdbm: [EUNJI] skip :0 +[11176.675201] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675202] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204736 +[11176.675203] bdbm: [EUNJI] write hit: 0 remains +[11176.675203] bdbm: [EUNJI] skip :0 +[11176.675204] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675205] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204736 +[11176.675205] bdbm: [EUNJI] write hit: 0 remains +[11176.675207] bdbm: [EUNJI] skip :0 +[11176.675208] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675209] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204736 +[11176.675209] bdbm: [EUNJI] write hit: 0 remains +[11176.675210] bdbm: [EUNJI] skip :0 +[11176.675211] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675211] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204736 +[11176.675213] bdbm: [EUNJI] write hit: 0 remains +[11176.675213] bdbm: [EUNJI] skip :0 +[11176.675215] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675216] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204737 +[11176.675217] bdbm: nvm_tbl[1] lpa = 204734, tlpa = 204737 +[11176.675218] bdbm: nvm_tbl[2] lpa = 204735, tlpa = 204737 +[11176.675219] bdbm: [EUNJI] miss +[11176.675684] bdbm: [EUNJI] write hit: 0 remains +[11176.675686] bdbm: [EUNJI] skip :0 +[11176.675687] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675687] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204737 +[11176.675688] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204737 +[11176.675689] bdbm: [EUNJI] write hit: 0 remains +[11176.675689] bdbm: [EUNJI] skip :0 +[11176.675692] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675692] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204737 +[11176.675693] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204737 +[11176.675693] bdbm: [EUNJI] write hit: 0 remains +[11176.675694] bdbm: [EUNJI] skip :0 +[11176.675695] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675695] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204737 +[11176.675697] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204737 +[11176.675698] bdbm: [EUNJI] write hit: 0 remains +[11176.675699] bdbm: [EUNJI] skip :0 +[11176.675700] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675700] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204737 +[11176.675701] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204737 +[11176.675701] bdbm: [EUNJI] write hit: 0 remains +[11176.675703] bdbm: [EUNJI] skip :0 +[11176.675704] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675704] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204737 +[11176.675705] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204737 +[11176.675706] bdbm: [EUNJI] write hit: 0 remains +[11176.675706] bdbm: [EUNJI] skip :0 +[11176.675707] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675709] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204737 +[11176.675709] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204737 +[11176.675710] bdbm: [EUNJI] write hit: 0 remains +[11176.675711] bdbm: [EUNJI] skip :0 +[11176.675711] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675712] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204737 +[11176.675713] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204737 +[11176.675714] bdbm: [EUNJI] write hit: 0 remains +[11176.675715] bdbm: [EUNJI] skip :0 +[11176.675717] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.675717] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204738 +[11176.675718] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204738 +[11176.675718] bdbm: nvm_tbl[2] lpa = 204735, tlpa = 204738 +[11176.675719] bdbm: [EUNJI] miss +[11176.676182] bdbm: [EUNJI] write hit: 0 remains +[11176.676183] bdbm: [EUNJI] skip :0 +[11176.676184] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676185] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204738 +[11176.676185] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204738 +[11176.676186] bdbm: nvm_tbl[2] lpa = 204738, tlpa = 204738 +[11176.676186] bdbm: [EUNJI] write hit: 0 remains +[11176.676187] bdbm: [EUNJI] skip :0 +[11176.676189] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676190] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204738 +[11176.676190] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204738 +[11176.676191] bdbm: nvm_tbl[2] lpa = 204738, tlpa = 204738 +[11176.676191] bdbm: [EUNJI] write hit: 0 remains +[11176.676192] bdbm: [EUNJI] skip :0 +[11176.676193] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676194] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204738 +[11176.676195] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204738 +[11176.676195] bdbm: nvm_tbl[2] lpa = 204738, tlpa = 204738 +[11176.676196] bdbm: [EUNJI] write hit: 0 remains +[11176.676197] bdbm: [EUNJI] skip :0 +[11176.676198] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676198] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204738 +[11176.676200] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204738 +[11176.676200] bdbm: nvm_tbl[2] lpa = 204738, tlpa = 204738 +[11176.676201] bdbm: [EUNJI] write hit: 0 remains +[11176.676202] bdbm: [EUNJI] skip :0 +[11176.676202] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676203] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204738 +[11176.676204] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204738 +[11176.676206] bdbm: nvm_tbl[2] lpa = 204738, tlpa = 204738 +[11176.676206] bdbm: [EUNJI] write hit: 0 remains +[11176.676207] bdbm: [EUNJI] skip :0 +[11176.676208] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676208] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204738 +[11176.676209] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204738 +[11176.676209] bdbm: nvm_tbl[2] lpa = 204738, tlpa = 204738 +[11176.676210] bdbm: [EUNJI] write hit: 0 remains +[11176.676212] bdbm: [EUNJI] skip :0 +[11176.676213] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676213] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204738 +[11176.676214] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204738 +[11176.676214] bdbm: nvm_tbl[2] lpa = 204738, tlpa = 204738 +[11176.676215] bdbm: [EUNJI] write hit: 0 remains +[11176.676216] bdbm: [EUNJI] skip :0 +[11176.676218] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676219] bdbm: nvm_tbl[0] lpa = 204736, tlpa = 204739 +[11176.676219] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204739 +[11176.676220] bdbm: nvm_tbl[2] lpa = 204738, tlpa = 204739 +[11176.676220] bdbm: [EUNJI] miss +[11176.676686] bdbm: [EUNJI] write hit: 0 remains +[11176.676687] bdbm: [EUNJI] skip :0 +[11176.676688] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676689] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204739 +[11176.676690] bdbm: [EUNJI] write hit: 0 remains +[11176.676690] bdbm: [EUNJI] skip :0 +[11176.676691] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676693] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204739 +[11176.676693] bdbm: [EUNJI] write hit: 0 remains +[11176.676694] bdbm: [EUNJI] skip :0 +[11176.676695] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676695] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204739 +[11176.676696] bdbm: [EUNJI] write hit: 0 remains +[11176.676696] bdbm: [EUNJI] skip :0 +[11176.676697] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676699] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204739 +[11176.676700] bdbm: [EUNJI] write hit: 0 remains +[11176.676700] bdbm: [EUNJI] skip :0 +[11176.676701] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676702] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204739 +[11176.676702] bdbm: [EUNJI] write hit: 0 remains +[11176.676703] bdbm: [EUNJI] skip :0 +[11176.676705] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676705] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204739 +[11176.676706] bdbm: [EUNJI] write hit: 0 remains +[11176.676706] bdbm: [EUNJI] skip :0 +[11176.676707] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676708] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204739 +[11176.676709] bdbm: [EUNJI] write hit: 0 remains +[11176.676710] bdbm: [EUNJI] skip :0 +[11176.676712] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.676712] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204740 +[11176.676713] bdbm: nvm_tbl[1] lpa = 204737, tlpa = 204740 +[11176.676713] bdbm: nvm_tbl[2] lpa = 204738, tlpa = 204740 +[11176.676714] bdbm: [EUNJI] miss +[11176.677178] bdbm: [EUNJI] write hit: 0 remains +[11176.677180] bdbm: [EUNJI] skip :0 +[11176.677181] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677181] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204740 +[11176.677182] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204740 +[11176.677183] bdbm: [EUNJI] write hit: 0 remains +[11176.677183] bdbm: [EUNJI] skip :0 +[11176.677185] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677186] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204740 +[11176.677187] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204740 +[11176.677187] bdbm: [EUNJI] write hit: 0 remains +[11176.677188] bdbm: [EUNJI] skip :0 +[11176.677189] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677189] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204740 +[11176.677190] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204740 +[11176.677191] bdbm: [EUNJI] write hit: 0 remains +[11176.677192] bdbm: [EUNJI] skip :0 +[11176.677193] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677194] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204740 +[11176.677194] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204740 +[11176.677195] bdbm: [EUNJI] write hit: 0 remains +[11176.677195] bdbm: [EUNJI] skip :0 +[11176.677197] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677198] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204740 +[11176.677199] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204740 +[11176.677199] bdbm: [EUNJI] write hit: 0 remains +[11176.677200] bdbm: [EUNJI] skip :0 +[11176.677201] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677201] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204740 +[11176.677203] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204740 +[11176.677204] bdbm: [EUNJI] write hit: 0 remains +[11176.677204] bdbm: [EUNJI] skip :0 +[11176.677205] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677206] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204740 +[11176.677206] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204740 +[11176.677207] bdbm: [EUNJI] write hit: 0 remains +[11176.677207] bdbm: [EUNJI] skip :0 +[11176.677210] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677211] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204741 +[11176.677211] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204741 +[11176.677212] bdbm: nvm_tbl[2] lpa = 204738, tlpa = 204741 +[11176.677212] bdbm: [EUNJI] miss +[11176.677677] bdbm: [EUNJI] write hit: 0 remains +[11176.677678] bdbm: [EUNJI] skip :0 +[11176.677679] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677680] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204741 +[11176.677680] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204741 +[11176.677681] bdbm: nvm_tbl[2] lpa = 204741, tlpa = 204741 +[11176.677682] bdbm: [EUNJI] write hit: 0 remains +[11176.677682] bdbm: [EUNJI] skip :0 +[11176.677684] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677685] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204741 +[11176.677685] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204741 +[11176.677686] bdbm: nvm_tbl[2] lpa = 204741, tlpa = 204741 +[11176.677686] bdbm: [EUNJI] write hit: 0 remains +[11176.677687] bdbm: [EUNJI] skip :0 +[11176.677688] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677688] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204741 +[11176.677690] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204741 +[11176.677690] bdbm: nvm_tbl[2] lpa = 204741, tlpa = 204741 +[11176.677691] bdbm: [EUNJI] write hit: 0 remains +[11176.677692] bdbm: [EUNJI] skip :0 +[11176.677693] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677693] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204741 +[11176.677694] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204741 +[11176.677695] bdbm: nvm_tbl[2] lpa = 204741, tlpa = 204741 +[11176.677696] bdbm: [EUNJI] write hit: 0 remains +[11176.677697] bdbm: [EUNJI] skip :0 +[11176.677698] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677698] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204741 +[11176.677699] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204741 +[11176.677700] bdbm: nvm_tbl[2] lpa = 204741, tlpa = 204741 +[11176.677700] bdbm: [EUNJI] write hit: 0 remains +[11176.677702] bdbm: [EUNJI] skip :0 +[11176.677703] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677703] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204741 +[11176.677704] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204741 +[11176.677704] bdbm: nvm_tbl[2] lpa = 204741, tlpa = 204741 +[11176.677705] bdbm: [EUNJI] write hit: 0 remains +[11176.677705] bdbm: [EUNJI] skip :0 +[11176.677707] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677708] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204741 +[11176.677709] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204741 +[11176.677709] bdbm: nvm_tbl[2] lpa = 204741, tlpa = 204741 +[11176.677710] bdbm: [EUNJI] write hit: 0 remains +[11176.677710] bdbm: [EUNJI] skip :0 +[11176.677712] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.677713] bdbm: nvm_tbl[0] lpa = 204739, tlpa = 204742 +[11176.677714] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204742 +[11176.677714] bdbm: nvm_tbl[2] lpa = 204741, tlpa = 204742 +[11176.677715] bdbm: [EUNJI] miss +[11176.678180] bdbm: [EUNJI] write hit: 0 remains +[11176.678181] bdbm: [EUNJI] skip :0 +[11176.678183] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678183] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204742 +[11176.678184] bdbm: [EUNJI] write hit: 0 remains +[11176.678185] bdbm: [EUNJI] skip :0 +[11176.678187] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678187] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204742 +[11176.678188] bdbm: [EUNJI] write hit: 0 remains +[11176.678188] bdbm: [EUNJI] skip :0 +[11176.678189] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678190] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204742 +[11176.678190] bdbm: [EUNJI] write hit: 0 remains +[11176.678191] bdbm: [EUNJI] skip :0 +[11176.678192] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678193] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204742 +[11176.678194] bdbm: [EUNJI] write hit: 0 remains +[11176.678194] bdbm: [EUNJI] skip :0 +[11176.678195] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678195] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204742 +[11176.678196] bdbm: [EUNJI] write hit: 0 remains +[11176.678197] bdbm: [EUNJI] skip :0 +[11176.678198] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678199] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204742 +[11176.678199] bdbm: [EUNJI] write hit: 0 remains +[11176.678200] bdbm: [EUNJI] skip :0 +[11176.678201] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678201] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204742 +[11176.678202] bdbm: [EUNJI] write hit: 0 remains +[11176.678203] bdbm: [EUNJI] skip :0 +[11176.678205] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678205] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204743 +[11176.678206] bdbm: nvm_tbl[1] lpa = 204740, tlpa = 204743 +[11176.678206] bdbm: nvm_tbl[2] lpa = 204741, tlpa = 204743 +[11176.678207] bdbm: [EUNJI] miss +[11176.678676] bdbm: [EUNJI] write hit: 0 remains +[11176.678677] bdbm: [EUNJI] skip :0 +[11176.678679] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678680] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204743 +[11176.678680] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204743 +[11176.678681] bdbm: [EUNJI] write hit: 0 remains +[11176.678681] bdbm: [EUNJI] skip :0 +[11176.678682] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678683] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204743 +[11176.678683] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204743 +[11176.678684] bdbm: [EUNJI] write hit: 0 remains +[11176.678684] bdbm: [EUNJI] skip :0 +[11176.678686] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678686] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204743 +[11176.678687] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204743 +[11176.678687] bdbm: [EUNJI] write hit: 0 remains +[11176.678688] bdbm: [EUNJI] skip :0 +[11176.678689] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678689] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204743 +[11176.678690] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204743 +[11176.678691] bdbm: [EUNJI] write hit: 0 remains +[11176.678691] bdbm: [EUNJI] skip :0 +[11176.678692] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678693] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204743 +[11176.678693] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204743 +[11176.678694] bdbm: [EUNJI] write hit: 0 remains +[11176.678695] bdbm: [EUNJI] skip :0 +[11176.678696] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678696] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204743 +[11176.678697] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204743 +[11176.678697] bdbm: [EUNJI] write hit: 0 remains +[11176.678698] bdbm: [EUNJI] skip :0 +[11176.678699] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678699] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204743 +[11176.678700] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204743 +[11176.678700] bdbm: [EUNJI] write hit: 0 remains +[11176.678701] bdbm: [EUNJI] skip :0 +[11176.678703] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.678704] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204744 +[11176.678704] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204744 +[11176.678705] bdbm: nvm_tbl[2] lpa = 204741, tlpa = 204744 +[11176.678705] bdbm: [EUNJI] miss +[11176.679172] bdbm: [EUNJI] write hit: 0 remains +[11176.679172] bdbm: [EUNJI] skip :0 +[11176.679174] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679174] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204744 +[11176.679175] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204744 +[11176.679175] bdbm: nvm_tbl[2] lpa = 204744, tlpa = 204744 +[11176.679176] bdbm: [EUNJI] write hit: 0 remains +[11176.679176] bdbm: [EUNJI] skip :0 +[11176.679177] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679178] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204744 +[11176.679178] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204744 +[11176.679179] bdbm: nvm_tbl[2] lpa = 204744, tlpa = 204744 +[11176.679179] bdbm: [EUNJI] write hit: 0 remains +[11176.679180] bdbm: [EUNJI] skip :0 +[11176.679181] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679181] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204744 +[11176.679182] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204744 +[11176.679182] bdbm: nvm_tbl[2] lpa = 204744, tlpa = 204744 +[11176.679183] bdbm: [EUNJI] write hit: 0 remains +[11176.679184] bdbm: [EUNJI] skip :0 +[11176.679184] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679185] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204744 +[11176.679186] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204744 +[11176.679186] bdbm: nvm_tbl[2] lpa = 204744, tlpa = 204744 +[11176.679187] bdbm: [EUNJI] write hit: 0 remains +[11176.679187] bdbm: [EUNJI] skip :0 +[11176.679188] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679189] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204744 +[11176.679189] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204744 +[11176.679190] bdbm: nvm_tbl[2] lpa = 204744, tlpa = 204744 +[11176.679190] bdbm: [EUNJI] write hit: 0 remains +[11176.679191] bdbm: [EUNJI] skip :0 +[11176.679192] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679192] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204744 +[11176.679193] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204744 +[11176.679193] bdbm: nvm_tbl[2] lpa = 204744, tlpa = 204744 +[11176.679194] bdbm: [EUNJI] write hit: 0 remains +[11176.679194] bdbm: [EUNJI] skip :0 +[11176.679195] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679196] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204744 +[11176.679196] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204744 +[11176.679197] bdbm: nvm_tbl[2] lpa = 204744, tlpa = 204744 +[11176.679198] bdbm: [EUNJI] write hit: 0 remains +[11176.679198] bdbm: [EUNJI] skip :0 +[11176.679200] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679200] bdbm: nvm_tbl[0] lpa = 204742, tlpa = 204745 +[11176.679201] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204745 +[11176.679201] bdbm: nvm_tbl[2] lpa = 204744, tlpa = 204745 +[11176.679202] bdbm: [EUNJI] miss +[11176.679664] bdbm: [EUNJI] write hit: 0 remains +[11176.679664] bdbm: [EUNJI] skip :0 +[11176.679665] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679666] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204745 +[11176.679667] bdbm: [EUNJI] write hit: 0 remains +[11176.679667] bdbm: [EUNJI] skip :0 +[11176.679668] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679669] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204745 +[11176.679669] bdbm: [EUNJI] write hit: 0 remains +[11176.679670] bdbm: [EUNJI] skip :0 +[11176.679671] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679671] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204745 +[11176.679672] bdbm: [EUNJI] write hit: 0 remains +[11176.679672] bdbm: [EUNJI] skip :0 +[11176.679673] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679674] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204745 +[11176.679674] bdbm: [EUNJI] write hit: 0 remains +[11176.679675] bdbm: [EUNJI] skip :0 +[11176.679676] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679676] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204745 +[11176.679677] bdbm: [EUNJI] write hit: 0 remains +[11176.679677] bdbm: [EUNJI] skip :0 +[11176.679678] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679679] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204745 +[11176.679680] bdbm: [EUNJI] write hit: 0 remains +[11176.679680] bdbm: [EUNJI] skip :0 +[11176.679681] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679682] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204745 +[11176.679682] bdbm: [EUNJI] write hit: 0 remains +[11176.679683] bdbm: [EUNJI] skip :0 +[11176.679684] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.679685] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204746 +[11176.679685] bdbm: nvm_tbl[1] lpa = 204743, tlpa = 204746 +[11176.679686] bdbm: nvm_tbl[2] lpa = 204744, tlpa = 204746 +[11176.679686] bdbm: [EUNJI] miss +[11176.680149] bdbm: [EUNJI] write hit: 0 remains +[11176.680150] bdbm: [EUNJI] skip :0 +[11176.680151] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680151] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204746 +[11176.680152] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204746 +[11176.680152] bdbm: [EUNJI] write hit: 0 remains +[11176.680153] bdbm: [EUNJI] skip :0 +[11176.680154] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680154] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204746 +[11176.680155] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204746 +[11176.680156] bdbm: [EUNJI] write hit: 0 remains +[11176.680156] bdbm: [EUNJI] skip :0 +[11176.680157] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680158] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204746 +[11176.680158] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204746 +[11176.680159] bdbm: [EUNJI] write hit: 0 remains +[11176.680159] bdbm: [EUNJI] skip :0 +[11176.680160] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680161] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204746 +[11176.680161] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204746 +[11176.680162] bdbm: [EUNJI] write hit: 0 remains +[11176.680162] bdbm: [EUNJI] skip :0 +[11176.680163] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680164] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204746 +[11176.680164] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204746 +[11176.680165] bdbm: [EUNJI] write hit: 0 remains +[11176.680165] bdbm: [EUNJI] skip :0 +[11176.680166] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680167] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204746 +[11176.680167] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204746 +[11176.680168] bdbm: [EUNJI] write hit: 0 remains +[11176.680168] bdbm: [EUNJI] skip :0 +[11176.680169] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680170] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204746 +[11176.680171] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204746 +[11176.680171] bdbm: [EUNJI] write hit: 0 remains +[11176.680172] bdbm: [EUNJI] skip :0 +[11176.680173] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680174] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204747 +[11176.680174] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204747 +[11176.680175] bdbm: nvm_tbl[2] lpa = 204744, tlpa = 204747 +[11176.680175] bdbm: [EUNJI] miss +[11176.680640] bdbm: [EUNJI] write hit: 0 remains +[11176.680641] bdbm: [EUNJI] skip :0 +[11176.680642] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680642] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204747 +[11176.680643] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204747 +[11176.680643] bdbm: nvm_tbl[2] lpa = 204747, tlpa = 204747 +[11176.680644] bdbm: [EUNJI] write hit: 0 remains +[11176.680644] bdbm: [EUNJI] skip :0 +[11176.680645] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680646] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204747 +[11176.680646] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204747 +[11176.680647] bdbm: nvm_tbl[2] lpa = 204747, tlpa = 204747 +[11176.680648] bdbm: [EUNJI] write hit: 0 remains +[11176.680648] bdbm: [EUNJI] skip :0 +[11176.680649] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680650] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204747 +[11176.680650] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204747 +[11176.680651] bdbm: nvm_tbl[2] lpa = 204747, tlpa = 204747 +[11176.680651] bdbm: [EUNJI] write hit: 0 remains +[11176.680652] bdbm: [EUNJI] skip :0 +[11176.680653] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680653] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204747 +[11176.680654] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204747 +[11176.680654] bdbm: nvm_tbl[2] lpa = 204747, tlpa = 204747 +[11176.680655] bdbm: [EUNJI] write hit: 0 remains +[11176.680655] bdbm: [EUNJI] skip :0 +[11176.680656] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680657] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204747 +[11176.680657] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204747 +[11176.680658] bdbm: nvm_tbl[2] lpa = 204747, tlpa = 204747 +[11176.680658] bdbm: [EUNJI] write hit: 0 remains +[11176.680659] bdbm: [EUNJI] skip :0 +[11176.680660] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680660] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204747 +[11176.680661] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204747 +[11176.680661] bdbm: nvm_tbl[2] lpa = 204747, tlpa = 204747 +[11176.680662] bdbm: [EUNJI] write hit: 0 remains +[11176.680663] bdbm: [EUNJI] skip :0 +[11176.680663] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680664] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204747 +[11176.680665] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204747 +[11176.680665] bdbm: nvm_tbl[2] lpa = 204747, tlpa = 204747 +[11176.680666] bdbm: [EUNJI] write hit: 0 remains +[11176.680666] bdbm: [EUNJI] skip :0 +[11176.680668] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.680669] bdbm: nvm_tbl[0] lpa = 204745, tlpa = 204748 +[11176.680670] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204748 +[11176.680670] bdbm: nvm_tbl[2] lpa = 204747, tlpa = 204748 +[11176.680671] bdbm: [EUNJI] miss +[11176.681132] bdbm: [EUNJI] write hit: 0 remains +[11176.681132] bdbm: [EUNJI] skip :0 +[11176.681133] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681134] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204748 +[11176.681135] bdbm: [EUNJI] write hit: 0 remains +[11176.681135] bdbm: [EUNJI] skip :0 +[11176.681136] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681137] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204748 +[11176.681137] bdbm: [EUNJI] write hit: 0 remains +[11176.681138] bdbm: [EUNJI] skip :0 +[11176.681139] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681139] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204748 +[11176.681140] bdbm: [EUNJI] write hit: 0 remains +[11176.681140] bdbm: [EUNJI] skip :0 +[11176.681141] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681142] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204748 +[11176.681142] bdbm: [EUNJI] write hit: 0 remains +[11176.681143] bdbm: [EUNJI] skip :0 +[11176.681144] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681144] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204748 +[11176.681145] bdbm: [EUNJI] write hit: 0 remains +[11176.681145] bdbm: [EUNJI] skip :0 +[11176.681146] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681147] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204748 +[11176.681147] bdbm: [EUNJI] write hit: 0 remains +[11176.681148] bdbm: [EUNJI] skip :0 +[11176.681149] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681149] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204748 +[11176.681150] bdbm: [EUNJI] write hit: 0 remains +[11176.681150] bdbm: [EUNJI] skip :0 +[11176.681152] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681152] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204749 +[11176.681153] bdbm: nvm_tbl[1] lpa = 204746, tlpa = 204749 +[11176.681153] bdbm: nvm_tbl[2] lpa = 204747, tlpa = 204749 +[11176.681154] bdbm: [EUNJI] miss +[11176.681617] bdbm: [EUNJI] write hit: 0 remains +[11176.681618] bdbm: [EUNJI] skip :0 +[11176.681619] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681619] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204749 +[11176.681620] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204749 +[11176.681620] bdbm: [EUNJI] write hit: 0 remains +[11176.681621] bdbm: [EUNJI] skip :0 +[11176.681622] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681622] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204749 +[11176.681623] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204749 +[11176.681623] bdbm: [EUNJI] write hit: 0 remains +[11176.681624] bdbm: [EUNJI] skip :0 +[11176.681625] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681625] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204749 +[11176.681626] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204749 +[11176.681626] bdbm: [EUNJI] write hit: 0 remains +[11176.681627] bdbm: [EUNJI] skip :0 +[11176.681628] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681629] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204749 +[11176.681629] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204749 +[11176.681630] bdbm: [EUNJI] write hit: 0 remains +[11176.681630] bdbm: [EUNJI] skip :0 +[11176.681631] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681632] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204749 +[11176.681632] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204749 +[11176.681633] bdbm: [EUNJI] write hit: 0 remains +[11176.681633] bdbm: [EUNJI] skip :0 +[11176.681634] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681635] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204749 +[11176.681635] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204749 +[11176.681636] bdbm: [EUNJI] write hit: 0 remains +[11176.681637] bdbm: [EUNJI] skip :0 +[11176.681637] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681638] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204749 +[11176.681639] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204749 +[11176.681639] bdbm: [EUNJI] write hit: 0 remains +[11176.681640] bdbm: [EUNJI] skip :0 +[11176.681641] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.681642] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204750 +[11176.681642] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204750 +[11176.681643] bdbm: nvm_tbl[2] lpa = 204747, tlpa = 204750 +[11176.681643] bdbm: [EUNJI] miss +[11176.682187] bdbm: [EUNJI] write hit: 0 remains +[11176.682188] bdbm: [EUNJI] skip :0 +[11176.682191] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682191] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204750 +[11176.682192] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204750 +[11176.682192] bdbm: nvm_tbl[2] lpa = 204750, tlpa = 204750 +[11176.682193] bdbm: [EUNJI] write hit: 0 remains +[11176.682194] bdbm: [EUNJI] skip :0 +[11176.682195] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682197] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204750 +[11176.682197] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204750 +[11176.682198] bdbm: nvm_tbl[2] lpa = 204750, tlpa = 204750 +[11176.682198] bdbm: [EUNJI] write hit: 0 remains +[11176.682199] bdbm: [EUNJI] skip :0 +[11176.682200] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682200] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204750 +[11176.682201] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204750 +[11176.682203] bdbm: nvm_tbl[2] lpa = 204750, tlpa = 204750 +[11176.682203] bdbm: [EUNJI] write hit: 0 remains +[11176.682204] bdbm: [EUNJI] skip :0 +[11176.682205] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682205] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204750 +[11176.682206] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204750 +[11176.682207] bdbm: nvm_tbl[2] lpa = 204750, tlpa = 204750 +[11176.682208] bdbm: [EUNJI] write hit: 0 remains +[11176.682209] bdbm: [EUNJI] skip :0 +[11176.682210] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682210] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204750 +[11176.682211] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204750 +[11176.682211] bdbm: nvm_tbl[2] lpa = 204750, tlpa = 204750 +[11176.682212] bdbm: [EUNJI] write hit: 0 remains +[11176.682212] bdbm: [EUNJI] skip :0 +[11176.682214] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682215] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204750 +[11176.682215] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204750 +[11176.682216] bdbm: nvm_tbl[2] lpa = 204750, tlpa = 204750 +[11176.682217] bdbm: [EUNJI] write hit: 0 remains +[11176.682217] bdbm: [EUNJI] skip :0 +[11176.682220] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682220] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204750 +[11176.682221] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204750 +[11176.682221] bdbm: nvm_tbl[2] lpa = 204750, tlpa = 204750 +[11176.682222] bdbm: [EUNJI] write hit: 0 remains +[11176.682222] bdbm: [EUNJI] skip :0 +[11176.682224] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682226] bdbm: nvm_tbl[0] lpa = 204748, tlpa = 204751 +[11176.682227] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204751 +[11176.682227] bdbm: nvm_tbl[2] lpa = 204750, tlpa = 204751 +[11176.682227] bdbm: [EUNJI] miss +[11176.682699] bdbm: [EUNJI] write hit: 0 remains +[11176.682700] bdbm: [EUNJI] skip :0 +[11176.682701] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682702] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204751 +[11176.682702] bdbm: [EUNJI] write hit: 0 remains +[11176.682703] bdbm: [EUNJI] skip :0 +[11176.682705] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682705] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204751 +[11176.682706] bdbm: [EUNJI] write hit: 0 remains +[11176.682706] bdbm: [EUNJI] skip :0 +[11176.682707] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682708] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204751 +[11176.682709] bdbm: [EUNJI] write hit: 0 remains +[11176.682710] bdbm: [EUNJI] skip :0 +[11176.682711] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682712] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204751 +[11176.682712] bdbm: [EUNJI] write hit: 0 remains +[11176.682713] bdbm: [EUNJI] skip :0 +[11176.682714] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682714] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204751 +[11176.682716] bdbm: [EUNJI] write hit: 0 remains +[11176.682717] bdbm: [EUNJI] skip :0 +[11176.682718] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682719] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204751 +[11176.682719] bdbm: [EUNJI] write hit: 0 remains +[11176.682720] bdbm: [EUNJI] skip :0 +[11176.682722] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682722] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204751 +[11176.682723] bdbm: [EUNJI] write hit: 0 remains +[11176.682723] bdbm: [EUNJI] skip :0 +[11176.682725] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.682726] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204752 +[11176.682726] bdbm: nvm_tbl[1] lpa = 204749, tlpa = 204752 +[11176.682728] bdbm: nvm_tbl[2] lpa = 204750, tlpa = 204752 +[11176.682728] bdbm: [EUNJI] miss +[11176.683197] bdbm: [EUNJI] write hit: 0 remains +[11176.683198] bdbm: [EUNJI] skip :0 +[11176.683199] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683200] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204752 +[11176.683200] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204752 +[11176.683201] bdbm: [EUNJI] write hit: 0 remains +[11176.683202] bdbm: [EUNJI] skip :0 +[11176.683204] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683204] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204752 +[11176.683205] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204752 +[11176.683205] bdbm: [EUNJI] write hit: 0 remains +[11176.683206] bdbm: [EUNJI] skip :0 +[11176.683207] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683209] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204752 +[11176.683209] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204752 +[11176.683210] bdbm: [EUNJI] write hit: 0 remains +[11176.683211] bdbm: [EUNJI] skip :0 +[11176.683212] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683212] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204752 +[11176.683213] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204752 +[11176.683213] bdbm: [EUNJI] write hit: 0 remains +[11176.683215] bdbm: [EUNJI] skip :0 +[11176.683216] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683216] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204752 +[11176.683217] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204752 +[11176.683217] bdbm: [EUNJI] write hit: 0 remains +[11176.683218] bdbm: [EUNJI] skip :0 +[11176.683219] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683221] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204752 +[11176.683221] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204752 +[11176.683222] bdbm: [EUNJI] write hit: 0 remains +[11176.683223] bdbm: [EUNJI] skip :0 +[11176.683224] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683224] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204752 +[11176.683225] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204752 +[11176.683226] bdbm: [EUNJI] write hit: 0 remains +[11176.683227] bdbm: [EUNJI] skip :0 +[11176.683229] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683229] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204753 +[11176.683230] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204753 +[11176.683231] bdbm: nvm_tbl[2] lpa = 204750, tlpa = 204753 +[11176.683232] bdbm: [EUNJI] miss +[11176.683695] bdbm: [EUNJI] write hit: 0 remains +[11176.683696] bdbm: [EUNJI] skip :0 +[11176.683698] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683698] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204753 +[11176.683699] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204753 +[11176.683700] bdbm: nvm_tbl[2] lpa = 204753, tlpa = 204753 +[11176.683700] bdbm: [EUNJI] write hit: 0 remains +[11176.683701] bdbm: [EUNJI] skip :0 +[11176.683703] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683703] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204753 +[11176.683704] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204753 +[11176.683704] bdbm: nvm_tbl[2] lpa = 204753, tlpa = 204753 +[11176.683705] bdbm: [EUNJI] write hit: 0 remains +[11176.683705] bdbm: [EUNJI] skip :0 +[11176.683707] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683708] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204753 +[11176.683709] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204753 +[11176.683709] bdbm: nvm_tbl[2] lpa = 204753, tlpa = 204753 +[11176.683710] bdbm: [EUNJI] write hit: 0 remains +[11176.683710] bdbm: [EUNJI] skip :0 +[11176.683711] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683712] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204753 +[11176.683712] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204753 +[11176.683714] bdbm: nvm_tbl[2] lpa = 204753, tlpa = 204753 +[11176.683715] bdbm: [EUNJI] write hit: 0 remains +[11176.683715] bdbm: [EUNJI] skip :0 +[11176.683716] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683717] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204753 +[11176.683718] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204753 +[11176.683718] bdbm: nvm_tbl[2] lpa = 204753, tlpa = 204753 +[11176.683720] bdbm: [EUNJI] write hit: 0 remains +[11176.683720] bdbm: [EUNJI] skip :0 +[11176.683721] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683722] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204753 +[11176.683722] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204753 +[11176.683723] bdbm: nvm_tbl[2] lpa = 204753, tlpa = 204753 +[11176.683724] bdbm: [EUNJI] write hit: 0 remains +[11176.683725] bdbm: [EUNJI] skip :0 +[11176.683726] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683727] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204753 +[11176.683727] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204753 +[11176.683728] bdbm: nvm_tbl[2] lpa = 204753, tlpa = 204753 +[11176.683729] bdbm: [EUNJI] write hit: 0 remains +[11176.683729] bdbm: [EUNJI] skip :0 +[11176.683732] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.683732] bdbm: nvm_tbl[0] lpa = 204751, tlpa = 204754 +[11176.683733] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204754 +[11176.683733] bdbm: nvm_tbl[2] lpa = 204753, tlpa = 204754 +[11176.683734] bdbm: [EUNJI] miss +[11176.684197] bdbm: [EUNJI] write hit: 0 remains +[11176.684198] bdbm: [EUNJI] skip :0 +[11176.684200] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684200] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204754 +[11176.684201] bdbm: [EUNJI] write hit: 0 remains +[11176.684201] bdbm: [EUNJI] skip :0 +[11176.684202] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684203] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204754 +[11176.684204] bdbm: [EUNJI] write hit: 0 remains +[11176.684205] bdbm: [EUNJI] skip :0 +[11176.684206] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684207] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204754 +[11176.684207] bdbm: [EUNJI] write hit: 0 remains +[11176.684208] bdbm: [EUNJI] skip :0 +[11176.684209] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684210] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204754 +[11176.684211] bdbm: [EUNJI] write hit: 0 remains +[11176.684211] bdbm: [EUNJI] skip :0 +[11176.684212] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684213] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204754 +[11176.684214] bdbm: [EUNJI] write hit: 0 remains +[11176.684216] bdbm: [EUNJI] skip :0 +[11176.684217] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684217] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204754 +[11176.684218] bdbm: [EUNJI] write hit: 0 remains +[11176.684218] bdbm: [EUNJI] skip :0 +[11176.684219] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684220] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204754 +[11176.684221] bdbm: [EUNJI] write hit: 0 remains +[11176.684222] bdbm: [EUNJI] skip :0 +[11176.684224] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684224] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204755 +[11176.684225] bdbm: nvm_tbl[1] lpa = 204752, tlpa = 204755 +[11176.684225] bdbm: nvm_tbl[2] lpa = 204753, tlpa = 204755 +[11176.684226] bdbm: [EUNJI] miss +[11176.684696] bdbm: [EUNJI] write hit: 0 remains +[11176.684696] bdbm: [EUNJI] skip :0 +[11176.684697] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684698] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204755 +[11176.684699] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204755 +[11176.684699] bdbm: [EUNJI] write hit: 0 remains +[11176.684700] bdbm: [EUNJI] skip :0 +[11176.684702] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684702] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204755 +[11176.684703] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204755 +[11176.684704] bdbm: [EUNJI] write hit: 0 remains +[11176.684704] bdbm: [EUNJI] skip :0 +[11176.684705] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684706] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204755 +[11176.684707] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204755 +[11176.684708] bdbm: [EUNJI] write hit: 0 remains +[11176.684709] bdbm: [EUNJI] skip :0 +[11176.684710] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684710] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204755 +[11176.684711] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204755 +[11176.684711] bdbm: [EUNJI] write hit: 0 remains +[11176.684713] bdbm: [EUNJI] skip :0 +[11176.684714] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684714] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204755 +[11176.684715] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204755 +[11176.684716] bdbm: [EUNJI] write hit: 0 remains +[11176.684716] bdbm: [EUNJI] skip :0 +[11176.684718] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684719] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204755 +[11176.684720] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204755 +[11176.684720] bdbm: [EUNJI] write hit: 0 remains +[11176.684721] bdbm: [EUNJI] skip :0 +[11176.684722] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684722] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204755 +[11176.684723] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204755 +[11176.684723] bdbm: [EUNJI] write hit: 0 remains +[11176.684725] bdbm: [EUNJI] skip :0 +[11176.684726] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.684727] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204756 +[11176.684728] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204756 +[11176.684728] bdbm: nvm_tbl[2] lpa = 204753, tlpa = 204756 +[11176.684728] bdbm: [EUNJI] miss +[11176.685193] bdbm: [EUNJI] write hit: 0 remains +[11176.685194] bdbm: [EUNJI] skip :0 +[11176.685196] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685196] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204756 +[11176.685197] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204756 +[11176.685197] bdbm: nvm_tbl[2] lpa = 204756, tlpa = 204756 +[11176.685198] bdbm: [EUNJI] write hit: 0 remains +[11176.685198] bdbm: [EUNJI] skip :0 +[11176.685200] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685201] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204756 +[11176.685202] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204756 +[11176.685202] bdbm: nvm_tbl[2] lpa = 204756, tlpa = 204756 +[11176.685203] bdbm: [EUNJI] write hit: 0 remains +[11176.685204] bdbm: [EUNJI] skip :0 +[11176.685204] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685206] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204756 +[11176.685207] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204756 +[11176.685207] bdbm: nvm_tbl[2] lpa = 204756, tlpa = 204756 +[11176.685208] bdbm: [EUNJI] write hit: 0 remains +[11176.685208] bdbm: [EUNJI] skip :0 +[11176.685209] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685210] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204756 +[11176.685210] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204756 +[11176.685212] bdbm: nvm_tbl[2] lpa = 204756, tlpa = 204756 +[11176.685212] bdbm: [EUNJI] write hit: 0 remains +[11176.685213] bdbm: [EUNJI] skip :0 +[11176.685214] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685215] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204756 +[11176.685215] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204756 +[11176.685216] bdbm: nvm_tbl[2] lpa = 204756, tlpa = 204756 +[11176.685216] bdbm: [EUNJI] write hit: 0 remains +[11176.685218] bdbm: [EUNJI] skip :0 +[11176.685219] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685219] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204756 +[11176.685220] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204756 +[11176.685220] bdbm: nvm_tbl[2] lpa = 204756, tlpa = 204756 +[11176.685221] bdbm: [EUNJI] write hit: 0 remains +[11176.685221] bdbm: [EUNJI] skip :0 +[11176.685223] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685224] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204756 +[11176.685224] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204756 +[11176.685225] bdbm: nvm_tbl[2] lpa = 204756, tlpa = 204756 +[11176.685226] bdbm: [EUNJI] write hit: 0 remains +[11176.685226] bdbm: [EUNJI] skip :0 +[11176.685229] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685230] bdbm: nvm_tbl[0] lpa = 204754, tlpa = 204757 +[11176.685230] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204757 +[11176.685231] bdbm: nvm_tbl[2] lpa = 204756, tlpa = 204757 +[11176.685231] bdbm: [EUNJI] miss +[11176.685700] bdbm: [EUNJI] write hit: 0 remains +[11176.685700] bdbm: [EUNJI] skip :0 +[11176.685702] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685702] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204757 +[11176.685703] bdbm: [EUNJI] write hit: 0 remains +[11176.685703] bdbm: [EUNJI] skip :0 +[11176.685704] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685706] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204757 +[11176.685706] bdbm: [EUNJI] write hit: 0 remains +[11176.685707] bdbm: [EUNJI] skip :0 +[11176.685708] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685708] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204757 +[11176.685709] bdbm: [EUNJI] write hit: 0 remains +[11176.685710] bdbm: [EUNJI] skip :0 +[11176.685712] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685712] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204757 +[11176.685713] bdbm: [EUNJI] write hit: 0 remains +[11176.685714] bdbm: [EUNJI] skip :0 +[11176.685714] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685715] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204757 +[11176.685716] bdbm: [EUNJI] write hit: 0 remains +[11176.685716] bdbm: [EUNJI] skip :0 +[11176.685718] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685719] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204757 +[11176.685719] bdbm: [EUNJI] write hit: 0 remains +[11176.685720] bdbm: [EUNJI] skip :0 +[11176.685721] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685721] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204757 +[11176.685722] bdbm: [EUNJI] write hit: 0 remains +[11176.685723] bdbm: [EUNJI] skip :0 +[11176.685725] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.685726] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204758 +[11176.685726] bdbm: nvm_tbl[1] lpa = 204755, tlpa = 204758 +[11176.685727] bdbm: nvm_tbl[2] lpa = 204756, tlpa = 204758 +[11176.685727] bdbm: [EUNJI] miss +[11176.686193] bdbm: [EUNJI] write hit: 0 remains +[11176.686194] bdbm: [EUNJI] skip :0 +[11176.686195] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686196] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204758 +[11176.686196] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204758 +[11176.686197] bdbm: [EUNJI] write hit: 0 remains +[11176.686198] bdbm: [EUNJI] skip :0 +[11176.686199] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686200] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204758 +[11176.686200] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204758 +[11176.686201] bdbm: [EUNJI] write hit: 0 remains +[11176.686202] bdbm: [EUNJI] skip :0 +[11176.686203] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686204] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204758 +[11176.686205] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204758 +[11176.686205] bdbm: [EUNJI] write hit: 0 remains +[11176.686206] bdbm: [EUNJI] skip :0 +[11176.686207] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686208] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204758 +[11176.686208] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204758 +[11176.686210] bdbm: [EUNJI] write hit: 0 remains +[11176.686211] bdbm: [EUNJI] skip :0 +[11176.686212] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686212] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204758 +[11176.686213] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204758 +[11176.686214] bdbm: [EUNJI] write hit: 0 remains +[11176.686214] bdbm: [EUNJI] skip :0 +[11176.686216] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686217] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204758 +[11176.686217] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204758 +[11176.686218] bdbm: [EUNJI] write hit: 0 remains +[11176.686219] bdbm: [EUNJI] skip :0 +[11176.686220] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686220] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204758 +[11176.686222] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204758 +[11176.686222] bdbm: [EUNJI] write hit: 0 remains +[11176.686223] bdbm: [EUNJI] skip :0 +[11176.686224] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686225] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204759 +[11176.686226] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204759 +[11176.686227] bdbm: nvm_tbl[2] lpa = 204756, tlpa = 204759 +[11176.686228] bdbm: [EUNJI] miss +[11176.686693] bdbm: [EUNJI] write hit: 0 remains +[11176.686694] bdbm: [EUNJI] skip :0 +[11176.686696] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686697] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204759 +[11176.686697] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204759 +[11176.686698] bdbm: nvm_tbl[2] lpa = 204759, tlpa = 204759 +[11176.686698] bdbm: [EUNJI] write hit: 0 remains +[11176.686700] bdbm: [EUNJI] skip :0 +[11176.686701] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686701] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204759 +[11176.686702] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204759 +[11176.686702] bdbm: nvm_tbl[2] lpa = 204759, tlpa = 204759 +[11176.686703] bdbm: [EUNJI] write hit: 0 remains +[11176.686703] bdbm: [EUNJI] skip :0 +[11176.686706] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686707] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204759 +[11176.686707] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204759 +[11176.686708] bdbm: nvm_tbl[2] lpa = 204759, tlpa = 204759 +[11176.686708] bdbm: [EUNJI] write hit: 0 remains +[11176.686709] bdbm: [EUNJI] skip :0 +[11176.686710] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686710] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204759 +[11176.686712] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204759 +[11176.686713] bdbm: nvm_tbl[2] lpa = 204759, tlpa = 204759 +[11176.686714] bdbm: [EUNJI] write hit: 0 remains +[11176.686714] bdbm: [EUNJI] skip :0 +[11176.686715] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686716] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204759 +[11176.686716] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204759 +[11176.686718] bdbm: nvm_tbl[2] lpa = 204759, tlpa = 204759 +[11176.686718] bdbm: [EUNJI] write hit: 0 remains +[11176.686719] bdbm: [EUNJI] skip :0 +[11176.686720] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686721] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204759 +[11176.686721] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204759 +[11176.686722] bdbm: nvm_tbl[2] lpa = 204759, tlpa = 204759 +[11176.686723] bdbm: [EUNJI] write hit: 0 remains +[11176.686724] bdbm: [EUNJI] skip :0 +[11176.686725] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686725] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204759 +[11176.686726] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204759 +[11176.686726] bdbm: nvm_tbl[2] lpa = 204759, tlpa = 204759 +[11176.686727] bdbm: [EUNJI] write hit: 0 remains +[11176.686728] bdbm: [EUNJI] skip :0 +[11176.686730] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.686731] bdbm: nvm_tbl[0] lpa = 204757, tlpa = 204760 +[11176.686731] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204760 +[11176.686732] bdbm: nvm_tbl[2] lpa = 204759, tlpa = 204760 +[11176.686732] bdbm: [EUNJI] miss +[11176.687201] bdbm: [EUNJI] write hit: 0 remains +[11176.687202] bdbm: [EUNJI] skip :0 +[11176.687203] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687203] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204760 +[11176.687204] bdbm: [EUNJI] write hit: 0 remains +[11176.687204] bdbm: [EUNJI] skip :0 +[11176.687205] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687207] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204760 +[11176.687207] bdbm: [EUNJI] write hit: 0 remains +[11176.687208] bdbm: [EUNJI] skip :0 +[11176.687209] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687210] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204760 +[11176.687210] bdbm: [EUNJI] write hit: 0 remains +[11176.687211] bdbm: [EUNJI] skip :0 +[11176.687213] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687213] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204760 +[11176.687214] bdbm: [EUNJI] write hit: 0 remains +[11176.687214] bdbm: [EUNJI] skip :0 +[11176.687215] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687216] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204760 +[11176.687217] bdbm: [EUNJI] write hit: 0 remains +[11176.687217] bdbm: [EUNJI] skip :0 +[11176.687219] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687220] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204760 +[11176.687220] bdbm: [EUNJI] write hit: 0 remains +[11176.687221] bdbm: [EUNJI] skip :0 +[11176.687222] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687222] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204760 +[11176.687223] bdbm: [EUNJI] write hit: 0 remains +[11176.687224] bdbm: [EUNJI] skip :0 +[11176.687226] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687227] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204761 +[11176.687227] bdbm: nvm_tbl[1] lpa = 204758, tlpa = 204761 +[11176.687228] bdbm: nvm_tbl[2] lpa = 204759, tlpa = 204761 +[11176.687228] bdbm: [EUNJI] miss +[11176.687694] bdbm: [EUNJI] write hit: 0 remains +[11176.687694] bdbm: [EUNJI] skip :0 +[11176.687695] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687696] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204761 +[11176.687696] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204761 +[11176.687697] bdbm: [EUNJI] write hit: 0 remains +[11176.687697] bdbm: [EUNJI] skip :0 +[11176.687700] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687700] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204761 +[11176.687701] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204761 +[11176.687701] bdbm: [EUNJI] write hit: 0 remains +[11176.687702] bdbm: [EUNJI] skip :0 +[11176.687703] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687703] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204761 +[11176.687704] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204761 +[11176.687705] bdbm: [EUNJI] write hit: 0 remains +[11176.687706] bdbm: [EUNJI] skip :0 +[11176.687707] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687707] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204761 +[11176.687708] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204761 +[11176.687709] bdbm: [EUNJI] write hit: 0 remains +[11176.687709] bdbm: [EUNJI] skip :0 +[11176.687711] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687712] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204761 +[11176.687712] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204761 +[11176.687713] bdbm: [EUNJI] write hit: 0 remains +[11176.687713] bdbm: [EUNJI] skip :0 +[11176.687714] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687715] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204761 +[11176.687715] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204761 +[11176.687717] bdbm: [EUNJI] write hit: 0 remains +[11176.687717] bdbm: [EUNJI] skip :0 +[11176.687718] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687719] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204761 +[11176.687720] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204761 +[11176.687720] bdbm: [EUNJI] write hit: 0 remains +[11176.687721] bdbm: [EUNJI] skip :0 +[11176.687724] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.687725] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204762 +[11176.687725] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204762 +[11176.687726] bdbm: nvm_tbl[2] lpa = 204759, tlpa = 204762 +[11176.687726] bdbm: [EUNJI] miss +[11176.688191] bdbm: [EUNJI] write hit: 0 remains +[11176.688192] bdbm: [EUNJI] skip :0 +[11176.688194] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688194] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204762 +[11176.688195] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204762 +[11176.688195] bdbm: nvm_tbl[2] lpa = 204762, tlpa = 204762 +[11176.688196] bdbm: [EUNJI] write hit: 0 remains +[11176.688196] bdbm: [EUNJI] skip :0 +[11176.688198] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688199] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204762 +[11176.688199] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204762 +[11176.688200] bdbm: nvm_tbl[2] lpa = 204762, tlpa = 204762 +[11176.688200] bdbm: [EUNJI] write hit: 0 remains +[11176.688201] bdbm: [EUNJI] skip :0 +[11176.688202] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688204] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204762 +[11176.688204] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204762 +[11176.688205] bdbm: nvm_tbl[2] lpa = 204762, tlpa = 204762 +[11176.688205] bdbm: [EUNJI] write hit: 0 remains +[11176.688206] bdbm: [EUNJI] skip :0 +[11176.688207] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688207] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204762 +[11176.688208] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204762 +[11176.688209] bdbm: nvm_tbl[2] lpa = 204762, tlpa = 204762 +[11176.688210] bdbm: [EUNJI] write hit: 0 remains +[11176.688210] bdbm: [EUNJI] skip :0 +[11176.688211] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688212] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204762 +[11176.688213] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204762 +[11176.688213] bdbm: nvm_tbl[2] lpa = 204762, tlpa = 204762 +[11176.688214] bdbm: [EUNJI] write hit: 0 remains +[11176.688215] bdbm: [EUNJI] skip :0 +[11176.688216] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688217] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204762 +[11176.688217] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204762 +[11176.688218] bdbm: nvm_tbl[2] lpa = 204762, tlpa = 204762 +[11176.688218] bdbm: [EUNJI] write hit: 0 remains +[11176.688219] bdbm: [EUNJI] skip :0 +[11176.688221] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688222] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204762 +[11176.688222] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204762 +[11176.688223] bdbm: nvm_tbl[2] lpa = 204762, tlpa = 204762 +[11176.688223] bdbm: [EUNJI] write hit: 0 remains +[11176.688224] bdbm: [EUNJI] skip :0 +[11176.688225] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688227] bdbm: nvm_tbl[0] lpa = 204760, tlpa = 204763 +[11176.688227] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204763 +[11176.688228] bdbm: nvm_tbl[2] lpa = 204762, tlpa = 204763 +[11176.688228] bdbm: [EUNJI] miss +[11176.688692] bdbm: [EUNJI] write hit: 0 remains +[11176.688694] bdbm: [EUNJI] skip :0 +[11176.688695] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688696] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204763 +[11176.688696] bdbm: [EUNJI] write hit: 0 remains +[11176.688697] bdbm: [EUNJI] skip :0 +[11176.688698] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688698] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204763 +[11176.688700] bdbm: [EUNJI] write hit: 0 remains +[11176.688700] bdbm: [EUNJI] skip :0 +[11176.688701] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688702] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204763 +[11176.688702] bdbm: [EUNJI] write hit: 0 remains +[11176.688703] bdbm: [EUNJI] skip :0 +[11176.688704] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688706] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204763 +[11176.688706] bdbm: [EUNJI] write hit: 0 remains +[11176.688707] bdbm: [EUNJI] skip :0 +[11176.688708] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688708] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204763 +[11176.688709] bdbm: [EUNJI] write hit: 0 remains +[11176.688709] bdbm: [EUNJI] skip :0 +[11176.688711] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688712] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204763 +[11176.688712] bdbm: [EUNJI] write hit: 0 remains +[11176.688713] bdbm: [EUNJI] skip :0 +[11176.688714] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688715] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204763 +[11176.688715] bdbm: [EUNJI] write hit: 0 remains +[11176.688716] bdbm: [EUNJI] skip :0 +[11176.688718] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.688719] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204764 +[11176.688719] bdbm: nvm_tbl[1] lpa = 204761, tlpa = 204764 +[11176.688720] bdbm: nvm_tbl[2] lpa = 204762, tlpa = 204764 +[11176.688720] bdbm: [EUNJI] miss +[11176.689193] bdbm: [EUNJI] write hit: 0 remains +[11176.689193] bdbm: [EUNJI] skip :0 +[11176.689194] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689195] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204764 +[11176.689195] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204764 +[11176.689196] bdbm: [EUNJI] write hit: 0 remains +[11176.689196] bdbm: [EUNJI] skip :0 +[11176.689198] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689199] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204764 +[11176.689199] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204764 +[11176.689200] bdbm: [EUNJI] write hit: 0 remains +[11176.689201] bdbm: [EUNJI] skip :0 +[11176.689202] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689202] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204764 +[11176.689203] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204764 +[11176.689204] bdbm: [EUNJI] write hit: 0 remains +[11176.689205] bdbm: [EUNJI] skip :0 +[11176.689206] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689206] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204764 +[11176.689207] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204764 +[11176.689207] bdbm: [EUNJI] write hit: 0 remains +[11176.689208] bdbm: [EUNJI] skip :0 +[11176.689210] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689210] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204764 +[11176.689211] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204764 +[11176.689211] bdbm: [EUNJI] write hit: 0 remains +[11176.689212] bdbm: [EUNJI] skip :0 +[11176.689213] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689214] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204764 +[11176.689214] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204764 +[11176.689216] bdbm: [EUNJI] write hit: 0 remains +[11176.689216] bdbm: [EUNJI] skip :0 +[11176.689217] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689218] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204764 +[11176.689218] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204764 +[11176.689219] bdbm: [EUNJI] write hit: 0 remains +[11176.689219] bdbm: [EUNJI] skip :0 +[11176.689222] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689222] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204765 +[11176.689223] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204765 +[11176.689223] bdbm: nvm_tbl[2] lpa = 204762, tlpa = 204765 +[11176.689224] bdbm: [EUNJI] miss +[11176.689692] bdbm: [EUNJI] write hit: 0 remains +[11176.689693] bdbm: [EUNJI] skip :0 +[11176.689694] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689695] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204765 +[11176.689695] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204765 +[11176.689696] bdbm: nvm_tbl[2] lpa = 204765, tlpa = 204765 +[11176.689696] bdbm: [EUNJI] write hit: 0 remains +[11176.689697] bdbm: [EUNJI] skip :0 +[11176.689699] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689699] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204765 +[11176.689700] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204765 +[11176.689700] bdbm: nvm_tbl[2] lpa = 204765, tlpa = 204765 +[11176.689701] bdbm: [EUNJI] write hit: 0 remains +[11176.689701] bdbm: [EUNJI] skip :0 +[11176.689702] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689704] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204765 +[11176.689705] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204765 +[11176.689705] bdbm: nvm_tbl[2] lpa = 204765, tlpa = 204765 +[11176.689706] bdbm: [EUNJI] write hit: 0 remains +[11176.689706] bdbm: [EUNJI] skip :0 +[11176.689707] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689708] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204765 +[11176.689708] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204765 +[11176.689710] bdbm: nvm_tbl[2] lpa = 204765, tlpa = 204765 +[11176.689710] bdbm: [EUNJI] write hit: 0 remains +[11176.689711] bdbm: [EUNJI] skip :0 +[11176.689712] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689712] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204765 +[11176.689713] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204765 +[11176.689713] bdbm: nvm_tbl[2] lpa = 204765, tlpa = 204765 +[11176.689714] bdbm: [EUNJI] write hit: 0 remains +[11176.689716] bdbm: [EUNJI] skip :0 +[11176.689716] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689717] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204765 +[11176.689718] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204765 +[11176.689718] bdbm: nvm_tbl[2] lpa = 204765, tlpa = 204765 +[11176.689719] bdbm: [EUNJI] write hit: 0 remains +[11176.689719] bdbm: [EUNJI] skip :0 +[11176.689721] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689722] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204765 +[11176.689722] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204765 +[11176.689723] bdbm: nvm_tbl[2] lpa = 204765, tlpa = 204765 +[11176.689723] bdbm: [EUNJI] write hit: 0 remains +[11176.689724] bdbm: [EUNJI] skip :0 +[11176.689726] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.689726] bdbm: nvm_tbl[0] lpa = 204763, tlpa = 204766 +[11176.689728] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204766 +[11176.689728] bdbm: nvm_tbl[2] lpa = 204765, tlpa = 204766 +[11176.689729] bdbm: [EUNJI] miss +[11176.690197] bdbm: [EUNJI] write hit: 0 remains +[11176.690198] bdbm: [EUNJI] skip :0 +[11176.690200] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690201] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204766 +[11176.690202] bdbm: [EUNJI] write hit: 0 remains +[11176.690202] bdbm: [EUNJI] skip :0 +[11176.690203] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690204] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204766 +[11176.690205] bdbm: [EUNJI] write hit: 0 remains +[11176.690206] bdbm: [EUNJI] skip :0 +[11176.690207] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690208] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204766 +[11176.690208] bdbm: [EUNJI] write hit: 0 remains +[11176.690209] bdbm: [EUNJI] skip :0 +[11176.690210] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690211] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204766 +[11176.690212] bdbm: [EUNJI] write hit: 0 remains +[11176.690213] bdbm: [EUNJI] skip :0 +[11176.690214] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690214] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204766 +[11176.690215] bdbm: [EUNJI] write hit: 0 remains +[11176.690216] bdbm: [EUNJI] skip :0 +[11176.690218] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690218] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204766 +[11176.690219] bdbm: [EUNJI] write hit: 0 remains +[11176.690219] bdbm: [EUNJI] skip :0 +[11176.690220] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690221] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204766 +[11176.690221] bdbm: [EUNJI] write hit: 0 remains +[11176.690223] bdbm: [EUNJI] skip :0 +[11176.690225] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690225] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204767 +[11176.690226] bdbm: nvm_tbl[1] lpa = 204764, tlpa = 204767 +[11176.690226] bdbm: nvm_tbl[2] lpa = 204765, tlpa = 204767 +[11176.690227] bdbm: [EUNJI] miss +[11176.690696] bdbm: [EUNJI] write hit: 0 remains +[11176.690697] bdbm: [EUNJI] skip :0 +[11176.690699] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690699] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204767 +[11176.690700] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204767 +[11176.690700] bdbm: [EUNJI] write hit: 0 remains +[11176.690701] bdbm: [EUNJI] skip :0 +[11176.690702] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690703] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204767 +[11176.690704] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204767 +[11176.690704] bdbm: [EUNJI] write hit: 0 remains +[11176.690705] bdbm: [EUNJI] skip :0 +[11176.690706] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690706] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204767 +[11176.690707] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204767 +[11176.690707] bdbm: [EUNJI] write hit: 0 remains +[11176.690708] bdbm: [EUNJI] skip :0 +[11176.690709] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690710] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204767 +[11176.690710] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204767 +[11176.690711] bdbm: [EUNJI] write hit: 0 remains +[11176.690712] bdbm: [EUNJI] skip :0 +[11176.690713] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690713] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204767 +[11176.690714] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204767 +[11176.690714] bdbm: [EUNJI] write hit: 0 remains +[11176.690715] bdbm: [EUNJI] skip :0 +[11176.690716] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690716] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204767 +[11176.690717] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204767 +[11176.690717] bdbm: [EUNJI] write hit: 0 remains +[11176.690718] bdbm: [EUNJI] skip :0 +[11176.690719] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690720] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204767 +[11176.690720] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204767 +[11176.690721] bdbm: [EUNJI] write hit: 0 remains +[11176.690721] bdbm: [EUNJI] skip :0 +[11176.690723] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.690724] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204768 +[11176.690724] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204768 +[11176.690725] bdbm: nvm_tbl[2] lpa = 204765, tlpa = 204768 +[11176.690725] bdbm: [EUNJI] miss +[11176.691192] bdbm: [EUNJI] write hit: 0 remains +[11176.691193] bdbm: [EUNJI] skip :0 +[11176.691194] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691195] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204768 +[11176.691195] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204768 +[11176.691196] bdbm: nvm_tbl[2] lpa = 204768, tlpa = 204768 +[11176.691197] bdbm: [EUNJI] write hit: 0 remains +[11176.691197] bdbm: [EUNJI] skip :0 +[11176.691198] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691199] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204768 +[11176.691199] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204768 +[11176.691200] bdbm: nvm_tbl[2] lpa = 204768, tlpa = 204768 +[11176.691200] bdbm: [EUNJI] write hit: 0 remains +[11176.691201] bdbm: [EUNJI] skip :0 +[11176.691202] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691202] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204768 +[11176.691203] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204768 +[11176.691204] bdbm: nvm_tbl[2] lpa = 204768, tlpa = 204768 +[11176.691204] bdbm: [EUNJI] write hit: 0 remains +[11176.691205] bdbm: [EUNJI] skip :0 +[11176.691206] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691206] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204768 +[11176.691207] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204768 +[11176.691208] bdbm: nvm_tbl[2] lpa = 204768, tlpa = 204768 +[11176.691208] bdbm: [EUNJI] write hit: 0 remains +[11176.691209] bdbm: [EUNJI] skip :0 +[11176.691210] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691210] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204768 +[11176.691211] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204768 +[11176.691211] bdbm: nvm_tbl[2] lpa = 204768, tlpa = 204768 +[11176.691212] bdbm: [EUNJI] write hit: 0 remains +[11176.691213] bdbm: [EUNJI] skip :0 +[11176.691214] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691214] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204768 +[11176.691215] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204768 +[11176.691215] bdbm: nvm_tbl[2] lpa = 204768, tlpa = 204768 +[11176.691216] bdbm: [EUNJI] write hit: 0 remains +[11176.691216] bdbm: [EUNJI] skip :0 +[11176.691217] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691218] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204768 +[11176.691218] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204768 +[11176.691219] bdbm: nvm_tbl[2] lpa = 204768, tlpa = 204768 +[11176.691220] bdbm: [EUNJI] write hit: 0 remains +[11176.691220] bdbm: [EUNJI] skip :0 +[11176.691222] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691222] bdbm: nvm_tbl[0] lpa = 204766, tlpa = 204769 +[11176.691223] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204769 +[11176.691223] bdbm: nvm_tbl[2] lpa = 204768, tlpa = 204769 +[11176.691224] bdbm: [EUNJI] miss +[11176.691689] bdbm: [EUNJI] write hit: 0 remains +[11176.691689] bdbm: [EUNJI] skip :0 +[11176.691691] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691691] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204769 +[11176.691692] bdbm: [EUNJI] write hit: 0 remains +[11176.691692] bdbm: [EUNJI] skip :0 +[11176.691693] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691694] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204769 +[11176.691695] bdbm: [EUNJI] write hit: 0 remains +[11176.691695] bdbm: [EUNJI] skip :0 +[11176.691696] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691697] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204769 +[11176.691697] bdbm: [EUNJI] write hit: 0 remains +[11176.691698] bdbm: [EUNJI] skip :0 +[11176.691699] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691699] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204769 +[11176.691700] bdbm: [EUNJI] write hit: 0 remains +[11176.691700] bdbm: [EUNJI] skip :0 +[11176.691701] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691702] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204769 +[11176.691703] bdbm: [EUNJI] write hit: 0 remains +[11176.691703] bdbm: [EUNJI] skip :0 +[11176.691704] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691705] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204769 +[11176.691705] bdbm: [EUNJI] write hit: 0 remains +[11176.691706] bdbm: [EUNJI] skip :0 +[11176.691707] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691708] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204769 +[11176.691708] bdbm: [EUNJI] write hit: 0 remains +[11176.691709] bdbm: [EUNJI] skip :0 +[11176.691710] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.691711] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204770 +[11176.691712] bdbm: nvm_tbl[1] lpa = 204767, tlpa = 204770 +[11176.691712] bdbm: nvm_tbl[2] lpa = 204768, tlpa = 204770 +[11176.691713] bdbm: [EUNJI] miss +[11176.692175] bdbm: [EUNJI] write hit: 0 remains +[11176.692176] bdbm: [EUNJI] skip :0 +[11176.692177] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692177] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204770 +[11176.692178] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204770 +[11176.692179] bdbm: [EUNJI] write hit: 0 remains +[11176.692179] bdbm: [EUNJI] skip :0 +[11176.692180] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692181] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204770 +[11176.692181] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204770 +[11176.692182] bdbm: [EUNJI] write hit: 0 remains +[11176.692182] bdbm: [EUNJI] skip :0 +[11176.692183] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692184] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204770 +[11176.692184] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204770 +[11176.692185] bdbm: [EUNJI] write hit: 0 remains +[11176.692185] bdbm: [EUNJI] skip :0 +[11176.692186] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692187] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204770 +[11176.692188] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204770 +[11176.692188] bdbm: [EUNJI] write hit: 0 remains +[11176.692189] bdbm: [EUNJI] skip :0 +[11176.692190] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692191] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204770 +[11176.692191] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204770 +[11176.692192] bdbm: [EUNJI] write hit: 0 remains +[11176.692192] bdbm: [EUNJI] skip :0 +[11176.692193] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692194] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204770 +[11176.692194] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204770 +[11176.692195] bdbm: [EUNJI] write hit: 0 remains +[11176.692195] bdbm: [EUNJI] skip :0 +[11176.692196] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692197] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204770 +[11176.692198] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204770 +[11176.692198] bdbm: [EUNJI] write hit: 0 remains +[11176.692199] bdbm: [EUNJI] skip :0 +[11176.692201] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692201] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204771 +[11176.692202] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204771 +[11176.692202] bdbm: nvm_tbl[2] lpa = 204768, tlpa = 204771 +[11176.692203] bdbm: [EUNJI] miss +[11176.692667] bdbm: [EUNJI] write hit: 0 remains +[11176.692667] bdbm: [EUNJI] skip :0 +[11176.692668] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692669] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204771 +[11176.692670] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204771 +[11176.692670] bdbm: nvm_tbl[2] lpa = 204771, tlpa = 204771 +[11176.692671] bdbm: [EUNJI] write hit: 0 remains +[11176.692671] bdbm: [EUNJI] skip :0 +[11176.692672] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692673] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204771 +[11176.692673] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204771 +[11176.692674] bdbm: nvm_tbl[2] lpa = 204771, tlpa = 204771 +[11176.692675] bdbm: [EUNJI] write hit: 0 remains +[11176.692675] bdbm: [EUNJI] skip :0 +[11176.692676] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692677] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204771 +[11176.692677] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204771 +[11176.692678] bdbm: nvm_tbl[2] lpa = 204771, tlpa = 204771 +[11176.692679] bdbm: [EUNJI] write hit: 0 remains +[11176.692679] bdbm: [EUNJI] skip :0 +[11176.692680] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692681] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204771 +[11176.692681] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204771 +[11176.692682] bdbm: nvm_tbl[2] lpa = 204771, tlpa = 204771 +[11176.692683] bdbm: [EUNJI] write hit: 0 remains +[11176.692683] bdbm: [EUNJI] skip :0 +[11176.692684] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692685] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204771 +[11176.692685] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204771 +[11176.692686] bdbm: nvm_tbl[2] lpa = 204771, tlpa = 204771 +[11176.692687] bdbm: [EUNJI] write hit: 0 remains +[11176.692687] bdbm: [EUNJI] skip :0 +[11176.692688] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692689] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204771 +[11176.692689] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204771 +[11176.692690] bdbm: nvm_tbl[2] lpa = 204771, tlpa = 204771 +[11176.692690] bdbm: [EUNJI] write hit: 0 remains +[11176.692691] bdbm: [EUNJI] skip :0 +[11176.692692] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692692] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204771 +[11176.692693] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204771 +[11176.692693] bdbm: nvm_tbl[2] lpa = 204771, tlpa = 204771 +[11176.692694] bdbm: [EUNJI] write hit: 0 remains +[11176.692695] bdbm: [EUNJI] skip :0 +[11176.692697] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.692697] bdbm: nvm_tbl[0] lpa = 204769, tlpa = 204772 +[11176.692698] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204772 +[11176.692698] bdbm: nvm_tbl[2] lpa = 204771, tlpa = 204772 +[11176.692699] bdbm: [EUNJI] miss +[11176.693163] bdbm: [EUNJI] write hit: 0 remains +[11176.693164] bdbm: [EUNJI] skip :0 +[11176.693165] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693165] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204772 +[11176.693166] bdbm: [EUNJI] write hit: 0 remains +[11176.693167] bdbm: [EUNJI] skip :0 +[11176.693167] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693168] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204772 +[11176.693169] bdbm: [EUNJI] write hit: 0 remains +[11176.693169] bdbm: [EUNJI] skip :0 +[11176.693170] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693171] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204772 +[11176.693172] bdbm: [EUNJI] write hit: 0 remains +[11176.693172] bdbm: [EUNJI] skip :0 +[11176.693173] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693174] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204772 +[11176.693174] bdbm: [EUNJI] write hit: 0 remains +[11176.693175] bdbm: [EUNJI] skip :0 +[11176.693176] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693176] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204772 +[11176.693177] bdbm: [EUNJI] write hit: 0 remains +[11176.693178] bdbm: [EUNJI] skip :0 +[11176.693179] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693179] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204772 +[11176.693180] bdbm: [EUNJI] write hit: 0 remains +[11176.693180] bdbm: [EUNJI] skip :0 +[11176.693181] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693182] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204772 +[11176.693182] bdbm: [EUNJI] write hit: 0 remains +[11176.693183] bdbm: [EUNJI] skip :0 +[11176.693184] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693185] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204773 +[11176.693186] bdbm: nvm_tbl[1] lpa = 204770, tlpa = 204773 +[11176.693186] bdbm: nvm_tbl[2] lpa = 204771, tlpa = 204773 +[11176.693187] bdbm: [EUNJI] miss +[11176.693654] bdbm: [EUNJI] write hit: 0 remains +[11176.693655] bdbm: [EUNJI] skip :0 +[11176.693656] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693657] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204773 +[11176.693657] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204773 +[11176.693658] bdbm: [EUNJI] write hit: 0 remains +[11176.693658] bdbm: [EUNJI] skip :0 +[11176.693659] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693660] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204773 +[11176.693661] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204773 +[11176.693661] bdbm: [EUNJI] write hit: 0 remains +[11176.693662] bdbm: [EUNJI] skip :0 +[11176.693663] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693663] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204773 +[11176.693664] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204773 +[11176.693665] bdbm: [EUNJI] write hit: 0 remains +[11176.693665] bdbm: [EUNJI] skip :0 +[11176.693666] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693667] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204773 +[11176.693667] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204773 +[11176.693668] bdbm: [EUNJI] write hit: 0 remains +[11176.693668] bdbm: [EUNJI] skip :0 +[11176.693669] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693670] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204773 +[11176.693671] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204773 +[11176.693671] bdbm: [EUNJI] write hit: 0 remains +[11176.693672] bdbm: [EUNJI] skip :0 +[11176.693673] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693673] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204773 +[11176.693674] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204773 +[11176.693674] bdbm: [EUNJI] write hit: 0 remains +[11176.693675] bdbm: [EUNJI] skip :0 +[11176.693676] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693676] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204773 +[11176.693677] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204773 +[11176.693677] bdbm: [EUNJI] write hit: 0 remains +[11176.693678] bdbm: [EUNJI] skip :0 +[11176.693680] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.693681] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204774 +[11176.693681] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204774 +[11176.693682] bdbm: nvm_tbl[2] lpa = 204771, tlpa = 204774 +[11176.693682] bdbm: [EUNJI] miss +[11176.694181] bdbm: [EUNJI] write hit: 0 remains +[11176.694182] bdbm: [EUNJI] skip :0 +[11176.694183] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694184] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204774 +[11176.694185] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204774 +[11176.694185] bdbm: nvm_tbl[2] lpa = 204774, tlpa = 204774 +[11176.694186] bdbm: [EUNJI] write hit: 0 remains +[11176.694186] bdbm: [EUNJI] skip :0 +[11176.694187] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694188] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204774 +[11176.694188] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204774 +[11176.694189] bdbm: nvm_tbl[2] lpa = 204774, tlpa = 204774 +[11176.694189] bdbm: [EUNJI] write hit: 0 remains +[11176.694190] bdbm: [EUNJI] skip :0 +[11176.694191] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694192] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204774 +[11176.694192] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204774 +[11176.694193] bdbm: nvm_tbl[2] lpa = 204774, tlpa = 204774 +[11176.694193] bdbm: [EUNJI] write hit: 0 remains +[11176.694194] bdbm: [EUNJI] skip :0 +[11176.694195] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694195] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204774 +[11176.694196] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204774 +[11176.694196] bdbm: nvm_tbl[2] lpa = 204774, tlpa = 204774 +[11176.694197] bdbm: [EUNJI] write hit: 0 remains +[11176.694198] bdbm: [EUNJI] skip :0 +[11176.694199] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694199] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204774 +[11176.694200] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204774 +[11176.694201] bdbm: nvm_tbl[2] lpa = 204774, tlpa = 204774 +[11176.694201] bdbm: [EUNJI] write hit: 0 remains +[11176.694202] bdbm: [EUNJI] skip :0 +[11176.694203] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694203] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204774 +[11176.694204] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204774 +[11176.694204] bdbm: nvm_tbl[2] lpa = 204774, tlpa = 204774 +[11176.694205] bdbm: [EUNJI] write hit: 0 remains +[11176.694205] bdbm: [EUNJI] skip :0 +[11176.694207] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694207] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204774 +[11176.694208] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204774 +[11176.694208] bdbm: nvm_tbl[2] lpa = 204774, tlpa = 204774 +[11176.694209] bdbm: [EUNJI] write hit: 0 remains +[11176.694209] bdbm: [EUNJI] skip :0 +[11176.694211] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694212] bdbm: nvm_tbl[0] lpa = 204772, tlpa = 204775 +[11176.694212] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204775 +[11176.694213] bdbm: nvm_tbl[2] lpa = 204774, tlpa = 204775 +[11176.694213] bdbm: [EUNJI] miss +[11176.694681] bdbm: [EUNJI] write hit: 0 remains +[11176.694682] bdbm: [EUNJI] skip :0 +[11176.694684] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694685] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204775 +[11176.694686] bdbm: [EUNJI] write hit: 0 remains +[11176.694687] bdbm: [EUNJI] skip :0 +[11176.694688] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694689] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204775 +[11176.694689] bdbm: [EUNJI] write hit: 0 remains +[11176.694690] bdbm: [EUNJI] skip :0 +[11176.694691] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694692] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204775 +[11176.694693] bdbm: [EUNJI] write hit: 0 remains +[11176.694693] bdbm: [EUNJI] skip :0 +[11176.694694] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694695] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204775 +[11176.694695] bdbm: [EUNJI] write hit: 0 remains +[11176.694696] bdbm: [EUNJI] skip :0 +[11176.694698] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694699] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204775 +[11176.694699] bdbm: [EUNJI] write hit: 0 remains +[11176.694700] bdbm: [EUNJI] skip :0 +[11176.694701] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694702] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204775 +[11176.694703] bdbm: [EUNJI] write hit: 0 remains +[11176.694704] bdbm: [EUNJI] skip :0 +[11176.694705] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694706] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204775 +[11176.694706] bdbm: [EUNJI] write hit: 0 remains +[11176.694707] bdbm: [EUNJI] skip :0 +[11176.694710] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.694711] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204776 +[11176.694711] bdbm: nvm_tbl[1] lpa = 204773, tlpa = 204776 +[11176.694712] bdbm: nvm_tbl[2] lpa = 204774, tlpa = 204776 +[11176.694712] bdbm: [EUNJI] miss +[11176.695185] bdbm: [EUNJI] write hit: 0 remains +[11176.695186] bdbm: [EUNJI] skip :0 +[11176.695187] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695188] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204776 +[11176.695188] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204776 +[11176.695189] bdbm: [EUNJI] write hit: 0 remains +[11176.695189] bdbm: [EUNJI] skip :0 +[11176.695191] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695192] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204776 +[11176.695192] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204776 +[11176.695193] bdbm: [EUNJI] write hit: 0 remains +[11176.695193] bdbm: [EUNJI] skip :0 +[11176.695194] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695195] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204776 +[11176.695196] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204776 +[11176.695197] bdbm: [EUNJI] write hit: 0 remains +[11176.695198] bdbm: [EUNJI] skip :0 +[11176.695199] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695199] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204776 +[11176.695200] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204776 +[11176.695200] bdbm: [EUNJI] write hit: 0 remains +[11176.695201] bdbm: [EUNJI] skip :0 +[11176.695203] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695203] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204776 +[11176.695204] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204776 +[11176.695205] bdbm: [EUNJI] write hit: 0 remains +[11176.695205] bdbm: [EUNJI] skip :0 +[11176.695206] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695207] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204776 +[11176.695207] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204776 +[11176.695209] bdbm: [EUNJI] write hit: 0 remains +[11176.695209] bdbm: [EUNJI] skip :0 +[11176.695210] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695211] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204776 +[11176.695211] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204776 +[11176.695212] bdbm: [EUNJI] write hit: 0 remains +[11176.695212] bdbm: [EUNJI] skip :0 +[11176.695215] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695216] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204777 +[11176.695216] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204777 +[11176.695217] bdbm: nvm_tbl[2] lpa = 204774, tlpa = 204777 +[11176.695217] bdbm: [EUNJI] miss +[11176.695688] bdbm: [EUNJI] write hit: 0 remains +[11176.695688] bdbm: [EUNJI] skip :0 +[11176.695689] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695690] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204777 +[11176.695691] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204777 +[11176.695691] bdbm: nvm_tbl[2] lpa = 204777, tlpa = 204777 +[11176.695692] bdbm: [EUNJI] write hit: 0 remains +[11176.695692] bdbm: [EUNJI] skip :0 +[11176.695694] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695695] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204777 +[11176.695695] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204777 +[11176.695696] bdbm: nvm_tbl[2] lpa = 204777, tlpa = 204777 +[11176.695696] bdbm: [EUNJI] write hit: 0 remains +[11176.695697] bdbm: [EUNJI] skip :0 +[11176.695698] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695699] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204777 +[11176.695700] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204777 +[11176.695701] bdbm: nvm_tbl[2] lpa = 204777, tlpa = 204777 +[11176.695701] bdbm: [EUNJI] write hit: 0 remains +[11176.695702] bdbm: [EUNJI] skip :0 +[11176.695703] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695703] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204777 +[11176.695704] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204777 +[11176.695705] bdbm: nvm_tbl[2] lpa = 204777, tlpa = 204777 +[11176.695706] bdbm: [EUNJI] write hit: 0 remains +[11176.695706] bdbm: [EUNJI] skip :0 +[11176.695707] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695708] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204777 +[11176.695708] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204777 +[11176.695709] bdbm: nvm_tbl[2] lpa = 204777, tlpa = 204777 +[11176.695709] bdbm: [EUNJI] write hit: 0 remains +[11176.695711] bdbm: [EUNJI] skip :0 +[11176.695712] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695713] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204777 +[11176.695713] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204777 +[11176.695714] bdbm: nvm_tbl[2] lpa = 204777, tlpa = 204777 +[11176.695714] bdbm: [EUNJI] write hit: 0 remains +[11176.695715] bdbm: [EUNJI] skip :0 +[11176.695716] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695717] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204777 +[11176.695718] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204777 +[11176.695718] bdbm: nvm_tbl[2] lpa = 204777, tlpa = 204777 +[11176.695719] bdbm: [EUNJI] write hit: 0 remains +[11176.695719] bdbm: [EUNJI] skip :0 +[11176.695721] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.695722] bdbm: nvm_tbl[0] lpa = 204775, tlpa = 204778 +[11176.695723] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204778 +[11176.695724] bdbm: nvm_tbl[2] lpa = 204777, tlpa = 204778 +[11176.695724] bdbm: [EUNJI] miss +[11176.696191] bdbm: [EUNJI] write hit: 0 remains +[11176.696192] bdbm: [EUNJI] skip :0 +[11176.696193] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696194] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204778 +[11176.696194] bdbm: [EUNJI] write hit: 0 remains +[11176.696195] bdbm: [EUNJI] skip :0 +[11176.696196] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696197] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204778 +[11176.696198] bdbm: [EUNJI] write hit: 0 remains +[11176.696198] bdbm: [EUNJI] skip :0 +[11176.696199] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696200] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204778 +[11176.696201] bdbm: [EUNJI] write hit: 0 remains +[11176.696201] bdbm: [EUNJI] skip :0 +[11176.696203] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696204] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204778 +[11176.696204] bdbm: [EUNJI] write hit: 0 remains +[11176.696205] bdbm: [EUNJI] skip :0 +[11176.696206] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696206] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204778 +[11176.696207] bdbm: [EUNJI] write hit: 0 remains +[11176.696207] bdbm: [EUNJI] skip :0 +[11176.696209] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696210] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204778 +[11176.696211] bdbm: [EUNJI] write hit: 0 remains +[11176.696211] bdbm: [EUNJI] skip :0 +[11176.696212] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696213] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204778 +[11176.696213] bdbm: [EUNJI] write hit: 0 remains +[11176.696215] bdbm: [EUNJI] skip :0 +[11176.696216] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696217] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204779 +[11176.696217] bdbm: nvm_tbl[1] lpa = 204776, tlpa = 204779 +[11176.696218] bdbm: nvm_tbl[2] lpa = 204777, tlpa = 204779 +[11176.696218] bdbm: [EUNJI] miss +[11176.696686] bdbm: [EUNJI] write hit: 0 remains +[11176.696687] bdbm: [EUNJI] skip :0 +[11176.696688] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696688] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204779 +[11176.696689] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204779 +[11176.696689] bdbm: [EUNJI] write hit: 0 remains +[11176.696690] bdbm: [EUNJI] skip :0 +[11176.696692] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696693] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204779 +[11176.696693] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204779 +[11176.696694] bdbm: [EUNJI] write hit: 0 remains +[11176.696694] bdbm: [EUNJI] skip :0 +[11176.696695] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696696] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204779 +[11176.696696] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204779 +[11176.696698] bdbm: [EUNJI] write hit: 0 remains +[11176.696698] bdbm: [EUNJI] skip :0 +[11176.696699] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696700] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204779 +[11176.696701] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204779 +[11176.696701] bdbm: [EUNJI] write hit: 0 remains +[11176.696702] bdbm: [EUNJI] skip :0 +[11176.696704] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696704] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204779 +[11176.696705] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204779 +[11176.696705] bdbm: [EUNJI] write hit: 0 remains +[11176.696706] bdbm: [EUNJI] skip :0 +[11176.696707] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696707] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204779 +[11176.696708] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204779 +[11176.696709] bdbm: [EUNJI] write hit: 0 remains +[11176.696710] bdbm: [EUNJI] skip :0 +[11176.696711] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696712] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204779 +[11176.696712] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204779 +[11176.696713] bdbm: [EUNJI] write hit: 0 remains +[11176.696713] bdbm: [EUNJI] skip :0 +[11176.696716] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.696716] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204780 +[11176.696717] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204780 +[11176.696717] bdbm: nvm_tbl[2] lpa = 204777, tlpa = 204780 +[11176.696718] bdbm: [EUNJI] miss +[11176.697185] bdbm: [EUNJI] write hit: 0 remains +[11176.697185] bdbm: [EUNJI] skip :0 +[11176.697186] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697187] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204780 +[11176.697187] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204780 +[11176.697188] bdbm: nvm_tbl[2] lpa = 204780, tlpa = 204780 +[11176.697189] bdbm: [EUNJI] write hit: 0 remains +[11176.697189] bdbm: [EUNJI] skip :0 +[11176.697191] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697192] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204780 +[11176.697192] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204780 +[11176.697193] bdbm: nvm_tbl[2] lpa = 204780, tlpa = 204780 +[11176.697193] bdbm: [EUNJI] write hit: 0 remains +[11176.697194] bdbm: [EUNJI] skip :0 +[11176.697195] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697196] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204780 +[11176.697197] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204780 +[11176.697197] bdbm: nvm_tbl[2] lpa = 204780, tlpa = 204780 +[11176.697198] bdbm: [EUNJI] write hit: 0 remains +[11176.697198] bdbm: [EUNJI] skip :0 +[11176.697200] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697200] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204780 +[11176.697201] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204780 +[11176.697202] bdbm: nvm_tbl[2] lpa = 204780, tlpa = 204780 +[11176.697203] bdbm: [EUNJI] write hit: 0 remains +[11176.697203] bdbm: [EUNJI] skip :0 +[11176.697204] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697205] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204780 +[11176.697205] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204780 +[11176.697206] bdbm: nvm_tbl[2] lpa = 204780, tlpa = 204780 +[11176.697206] bdbm: [EUNJI] write hit: 0 remains +[11176.697208] bdbm: [EUNJI] skip :0 +[11176.697209] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697210] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204780 +[11176.697210] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204780 +[11176.697211] bdbm: nvm_tbl[2] lpa = 204780, tlpa = 204780 +[11176.697211] bdbm: [EUNJI] write hit: 0 remains +[11176.697212] bdbm: [EUNJI] skip :0 +[11176.697214] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697214] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204780 +[11176.697215] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204780 +[11176.697215] bdbm: nvm_tbl[2] lpa = 204780, tlpa = 204780 +[11176.697216] bdbm: [EUNJI] write hit: 0 remains +[11176.697216] bdbm: [EUNJI] skip :0 +[11176.697218] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697220] bdbm: nvm_tbl[0] lpa = 204778, tlpa = 204781 +[11176.697220] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204781 +[11176.697221] bdbm: nvm_tbl[2] lpa = 204780, tlpa = 204781 +[11176.697221] bdbm: [EUNJI] miss +[11176.697692] bdbm: [EUNJI] write hit: 0 remains +[11176.697692] bdbm: [EUNJI] skip :0 +[11176.697693] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697694] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204781 +[11176.697694] bdbm: [EUNJI] write hit: 0 remains +[11176.697695] bdbm: [EUNJI] skip :0 +[11176.697696] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697697] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204781 +[11176.697698] bdbm: [EUNJI] write hit: 0 remains +[11176.697699] bdbm: [EUNJI] skip :0 +[11176.697700] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697700] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204781 +[11176.697701] bdbm: [EUNJI] write hit: 0 remains +[11176.697701] bdbm: [EUNJI] skip :0 +[11176.697703] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697704] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204781 +[11176.697704] bdbm: [EUNJI] write hit: 0 remains +[11176.697705] bdbm: [EUNJI] skip :0 +[11176.697706] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697706] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204781 +[11176.697707] bdbm: [EUNJI] write hit: 0 remains +[11176.697707] bdbm: [EUNJI] skip :0 +[11176.697709] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697710] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204781 +[11176.697710] bdbm: [EUNJI] write hit: 0 remains +[11176.697711] bdbm: [EUNJI] skip :0 +[11176.697712] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697712] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204781 +[11176.697713] bdbm: [EUNJI] write hit: 0 remains +[11176.697715] bdbm: [EUNJI] skip :0 +[11176.697716] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.697717] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204782 +[11176.697717] bdbm: nvm_tbl[1] lpa = 204779, tlpa = 204782 +[11176.697718] bdbm: nvm_tbl[2] lpa = 204780, tlpa = 204782 +[11176.697718] bdbm: [EUNJI] miss +[11176.698188] bdbm: [EUNJI] write hit: 0 remains +[11176.698190] bdbm: [EUNJI] skip :0 +[11176.698191] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698191] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204782 +[11176.698192] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204782 +[11176.698193] bdbm: [EUNJI] write hit: 0 remains +[11176.698193] bdbm: [EUNJI] skip :0 +[11176.698196] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698196] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204782 +[11176.698197] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204782 +[11176.698198] bdbm: [EUNJI] write hit: 0 remains +[11176.698198] bdbm: [EUNJI] skip :0 +[11176.698199] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698200] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204782 +[11176.698201] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204782 +[11176.698202] bdbm: [EUNJI] write hit: 0 remains +[11176.698203] bdbm: [EUNJI] skip :0 +[11176.698204] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698204] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204782 +[11176.698205] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204782 +[11176.698205] bdbm: [EUNJI] write hit: 0 remains +[11176.698207] bdbm: [EUNJI] skip :0 +[11176.698208] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698209] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204782 +[11176.698209] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204782 +[11176.698210] bdbm: [EUNJI] write hit: 0 remains +[11176.698211] bdbm: [EUNJI] skip :0 +[11176.698213] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698214] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204782 +[11176.698214] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204782 +[11176.698215] bdbm: [EUNJI] write hit: 0 remains +[11176.698215] bdbm: [EUNJI] skip :0 +[11176.698216] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698217] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204782 +[11176.698217] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204782 +[11176.698219] bdbm: [EUNJI] write hit: 0 remains +[11176.698219] bdbm: [EUNJI] skip :0 +[11176.698221] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698222] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204783 +[11176.698222] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204783 +[11176.698223] bdbm: nvm_tbl[2] lpa = 204780, tlpa = 204783 +[11176.698223] bdbm: [EUNJI] miss +[11176.698690] bdbm: [EUNJI] write hit: 0 remains +[11176.698690] bdbm: [EUNJI] skip :0 +[11176.698692] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698692] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204783 +[11176.698693] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204783 +[11176.698693] bdbm: nvm_tbl[2] lpa = 204783, tlpa = 204783 +[11176.698694] bdbm: [EUNJI] write hit: 0 remains +[11176.698696] bdbm: [EUNJI] skip :0 +[11176.698697] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698697] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204783 +[11176.698698] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204783 +[11176.698698] bdbm: nvm_tbl[2] lpa = 204783, tlpa = 204783 +[11176.698699] bdbm: [EUNJI] write hit: 0 remains +[11176.698700] bdbm: [EUNJI] skip :0 +[11176.698702] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698702] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204783 +[11176.698703] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204783 +[11176.698703] bdbm: nvm_tbl[2] lpa = 204783, tlpa = 204783 +[11176.698704] bdbm: [EUNJI] write hit: 0 remains +[11176.698704] bdbm: [EUNJI] skip :0 +[11176.698705] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698706] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204783 +[11176.698708] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204783 +[11176.698708] bdbm: nvm_tbl[2] lpa = 204783, tlpa = 204783 +[11176.698709] bdbm: [EUNJI] write hit: 0 remains +[11176.698709] bdbm: [EUNJI] skip :0 +[11176.698710] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698711] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204783 +[11176.698711] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204783 +[11176.698713] bdbm: nvm_tbl[2] lpa = 204783, tlpa = 204783 +[11176.698714] bdbm: [EUNJI] write hit: 0 remains +[11176.698714] bdbm: [EUNJI] skip :0 +[11176.698715] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698716] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204783 +[11176.698717] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204783 +[11176.698717] bdbm: nvm_tbl[2] lpa = 204783, tlpa = 204783 +[11176.698719] bdbm: [EUNJI] write hit: 0 remains +[11176.698719] bdbm: [EUNJI] skip :0 +[11176.698720] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698721] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204783 +[11176.698721] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204783 +[11176.698722] bdbm: nvm_tbl[2] lpa = 204783, tlpa = 204783 +[11176.698722] bdbm: [EUNJI] write hit: 0 remains +[11176.698723] bdbm: [EUNJI] skip :0 +[11176.698726] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.698726] bdbm: nvm_tbl[0] lpa = 204781, tlpa = 204784 +[11176.698727] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204784 +[11176.698727] bdbm: nvm_tbl[2] lpa = 204783, tlpa = 204784 +[11176.698728] bdbm: [EUNJI] miss +[11176.699195] bdbm: [EUNJI] write hit: 0 remains +[11176.699196] bdbm: [EUNJI] skip :0 +[11176.699197] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699198] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204784 +[11176.699198] bdbm: [EUNJI] write hit: 0 remains +[11176.699199] bdbm: [EUNJI] skip :0 +[11176.699200] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699202] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204784 +[11176.699203] bdbm: [EUNJI] write hit: 0 remains +[11176.699203] bdbm: [EUNJI] skip :0 +[11176.699204] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699205] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204784 +[11176.699205] bdbm: [EUNJI] write hit: 0 remains +[11176.699206] bdbm: [EUNJI] skip :0 +[11176.699208] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699208] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204784 +[11176.699209] bdbm: [EUNJI] write hit: 0 remains +[11176.699209] bdbm: [EUNJI] skip :0 +[11176.699211] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699211] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204784 +[11176.699212] bdbm: [EUNJI] write hit: 0 remains +[11176.699213] bdbm: [EUNJI] skip :0 +[11176.699214] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699215] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204784 +[11176.699215] bdbm: [EUNJI] write hit: 0 remains +[11176.699216] bdbm: [EUNJI] skip :0 +[11176.699217] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699217] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204784 +[11176.699219] bdbm: [EUNJI] write hit: 0 remains +[11176.699220] bdbm: [EUNJI] skip :0 +[11176.699221] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699222] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204785 +[11176.699222] bdbm: nvm_tbl[1] lpa = 204782, tlpa = 204785 +[11176.699223] bdbm: nvm_tbl[2] lpa = 204783, tlpa = 204785 +[11176.699223] bdbm: [EUNJI] miss +[11176.699690] bdbm: [EUNJI] write hit: 0 remains +[11176.699690] bdbm: [EUNJI] skip :0 +[11176.699691] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699692] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204785 +[11176.699693] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204785 +[11176.699694] bdbm: [EUNJI] write hit: 0 remains +[11176.699694] bdbm: [EUNJI] skip :0 +[11176.699696] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699697] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204785 +[11176.699697] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204785 +[11176.699698] bdbm: [EUNJI] write hit: 0 remains +[11176.699698] bdbm: [EUNJI] skip :0 +[11176.699699] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699700] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204785 +[11176.699702] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204785 +[11176.699702] bdbm: [EUNJI] write hit: 0 remains +[11176.699703] bdbm: [EUNJI] skip :0 +[11176.699704] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699704] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204785 +[11176.699705] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204785 +[11176.699705] bdbm: [EUNJI] write hit: 0 remains +[11176.699707] bdbm: [EUNJI] skip :0 +[11176.699708] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699709] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204785 +[11176.699709] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204785 +[11176.699710] bdbm: [EUNJI] write hit: 0 remains +[11176.699711] bdbm: [EUNJI] skip :0 +[11176.699712] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699713] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204785 +[11176.699714] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204785 +[11176.699714] bdbm: [EUNJI] write hit: 0 remains +[11176.699715] bdbm: [EUNJI] skip :0 +[11176.699716] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699716] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204785 +[11176.699717] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204785 +[11176.699719] bdbm: [EUNJI] write hit: 0 remains +[11176.699719] bdbm: [EUNJI] skip :0 +[11176.699721] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.699722] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204786 +[11176.699722] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204786 +[11176.699723] bdbm: nvm_tbl[2] lpa = 204783, tlpa = 204786 +[11176.699723] bdbm: [EUNJI] miss +[11176.700189] bdbm: [EUNJI] write hit: 0 remains +[11176.700190] bdbm: [EUNJI] skip :0 +[11176.700191] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700192] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204786 +[11176.700193] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204786 +[11176.700193] bdbm: nvm_tbl[2] lpa = 204786, tlpa = 204786 +[11176.700194] bdbm: [EUNJI] write hit: 0 remains +[11176.700195] bdbm: [EUNJI] skip :0 +[11176.700196] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700197] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204786 +[11176.700197] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204786 +[11176.700198] bdbm: nvm_tbl[2] lpa = 204786, tlpa = 204786 +[11176.700198] bdbm: [EUNJI] write hit: 0 remains +[11176.700199] bdbm: [EUNJI] skip :0 +[11176.700201] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700202] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204786 +[11176.700202] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204786 +[11176.700203] bdbm: nvm_tbl[2] lpa = 204786, tlpa = 204786 +[11176.700203] bdbm: [EUNJI] write hit: 0 remains +[11176.700204] bdbm: [EUNJI] skip :0 +[11176.700205] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700205] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204786 +[11176.700207] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204786 +[11176.700208] bdbm: nvm_tbl[2] lpa = 204786, tlpa = 204786 +[11176.700209] bdbm: [EUNJI] write hit: 0 remains +[11176.700209] bdbm: [EUNJI] skip :0 +[11176.700210] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700211] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204786 +[11176.700211] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204786 +[11176.700213] bdbm: nvm_tbl[2] lpa = 204786, tlpa = 204786 +[11176.700213] bdbm: [EUNJI] write hit: 0 remains +[11176.700214] bdbm: [EUNJI] skip :0 +[11176.700215] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700215] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204786 +[11176.700216] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204786 +[11176.700217] bdbm: nvm_tbl[2] lpa = 204786, tlpa = 204786 +[11176.700219] bdbm: [EUNJI] write hit: 0 remains +[11176.700219] bdbm: [EUNJI] skip :0 +[11176.700220] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700221] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204786 +[11176.700221] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204786 +[11176.700222] bdbm: nvm_tbl[2] lpa = 204786, tlpa = 204786 +[11176.700222] bdbm: [EUNJI] write hit: 0 remains +[11176.700223] bdbm: [EUNJI] skip :0 +[11176.700226] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700226] bdbm: nvm_tbl[0] lpa = 204784, tlpa = 204787 +[11176.700227] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204787 +[11176.700227] bdbm: nvm_tbl[2] lpa = 204786, tlpa = 204787 +[11176.700228] bdbm: [EUNJI] miss +[11176.700695] bdbm: [EUNJI] write hit: 0 remains +[11176.700696] bdbm: [EUNJI] skip :0 +[11176.700698] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700699] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204787 +[11176.700699] bdbm: [EUNJI] write hit: 0 remains +[11176.700700] bdbm: [EUNJI] skip :0 +[11176.700702] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700702] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204787 +[11176.700703] bdbm: [EUNJI] write hit: 0 remains +[11176.700703] bdbm: [EUNJI] skip :0 +[11176.700704] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700705] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204787 +[11176.700706] bdbm: [EUNJI] write hit: 0 remains +[11176.700707] bdbm: [EUNJI] skip :0 +[11176.700708] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700709] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204787 +[11176.700709] bdbm: [EUNJI] write hit: 0 remains +[11176.700710] bdbm: [EUNJI] skip :0 +[11176.700711] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700711] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204787 +[11176.700713] bdbm: [EUNJI] write hit: 0 remains +[11176.700714] bdbm: [EUNJI] skip :0 +[11176.700715] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700716] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204787 +[11176.700716] bdbm: [EUNJI] write hit: 0 remains +[11176.700717] bdbm: [EUNJI] skip :0 +[11176.700719] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700719] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204787 +[11176.700720] bdbm: [EUNJI] write hit: 0 remains +[11176.700720] bdbm: [EUNJI] skip :0 +[11176.700722] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.700723] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204788 +[11176.700723] bdbm: nvm_tbl[1] lpa = 204785, tlpa = 204788 +[11176.700725] bdbm: nvm_tbl[2] lpa = 204786, tlpa = 204788 +[11176.700725] bdbm: [EUNJI] miss +[11176.701196] bdbm: [EUNJI] write hit: 0 remains +[11176.701197] bdbm: [EUNJI] skip :0 +[11176.701198] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701199] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204788 +[11176.701199] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204788 +[11176.701200] bdbm: [EUNJI] write hit: 0 remains +[11176.701200] bdbm: [EUNJI] skip :0 +[11176.701203] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701203] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204788 +[11176.701204] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204788 +[11176.701204] bdbm: [EUNJI] write hit: 0 remains +[11176.701205] bdbm: [EUNJI] skip :0 +[11176.701206] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701206] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204788 +[11176.701208] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204788 +[11176.701209] bdbm: [EUNJI] write hit: 0 remains +[11176.701209] bdbm: [EUNJI] skip :0 +[11176.701210] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701211] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204788 +[11176.701211] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204788 +[11176.701212] bdbm: [EUNJI] write hit: 0 remains +[11176.701212] bdbm: [EUNJI] skip :0 +[11176.701214] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701215] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204788 +[11176.701215] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204788 +[11176.701216] bdbm: [EUNJI] write hit: 0 remains +[11176.701216] bdbm: [EUNJI] skip :0 +[11176.701217] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701218] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204788 +[11176.701218] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204788 +[11176.701220] bdbm: [EUNJI] write hit: 0 remains +[11176.701221] bdbm: [EUNJI] skip :0 +[11176.701222] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701222] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204788 +[11176.701223] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204788 +[11176.701224] bdbm: [EUNJI] write hit: 0 remains +[11176.701224] bdbm: [EUNJI] skip :0 +[11176.701227] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701227] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204789 +[11176.701228] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204789 +[11176.701228] bdbm: nvm_tbl[2] lpa = 204786, tlpa = 204789 +[11176.701229] bdbm: [EUNJI] miss +[11176.701700] bdbm: [EUNJI] write hit: 0 remains +[11176.701700] bdbm: [EUNJI] skip :0 +[11176.701702] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701702] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204789 +[11176.701703] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204789 +[11176.701703] bdbm: nvm_tbl[2] lpa = 204789, tlpa = 204789 +[11176.701704] bdbm: [EUNJI] write hit: 0 remains +[11176.701705] bdbm: [EUNJI] skip :0 +[11176.701706] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701707] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204789 +[11176.701707] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204789 +[11176.701708] bdbm: nvm_tbl[2] lpa = 204789, tlpa = 204789 +[11176.701709] bdbm: [EUNJI] write hit: 0 remains +[11176.701709] bdbm: [EUNJI] skip :0 +[11176.701711] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701712] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204789 +[11176.701713] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204789 +[11176.701713] bdbm: nvm_tbl[2] lpa = 204789, tlpa = 204789 +[11176.701714] bdbm: [EUNJI] write hit: 0 remains +[11176.701715] bdbm: [EUNJI] skip :0 +[11176.701716] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701717] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204789 +[11176.701718] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204789 +[11176.701718] bdbm: nvm_tbl[2] lpa = 204789, tlpa = 204789 +[11176.701719] bdbm: [EUNJI] write hit: 0 remains +[11176.701719] bdbm: [EUNJI] skip :0 +[11176.701720] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701721] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204789 +[11176.701722] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204789 +[11176.701723] bdbm: nvm_tbl[2] lpa = 204789, tlpa = 204789 +[11176.701724] bdbm: [EUNJI] write hit: 0 remains +[11176.701724] bdbm: [EUNJI] skip :0 +[11176.701725] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701726] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204789 +[11176.701726] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204789 +[11176.701727] bdbm: nvm_tbl[2] lpa = 204789, tlpa = 204789 +[11176.701727] bdbm: [EUNJI] write hit: 0 remains +[11176.701729] bdbm: [EUNJI] skip :0 +[11176.701730] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701731] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204789 +[11176.701731] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204789 +[11176.701732] bdbm: nvm_tbl[2] lpa = 204789, tlpa = 204789 +[11176.701732] bdbm: [EUNJI] write hit: 0 remains +[11176.701733] bdbm: [EUNJI] skip :0 +[11176.701736] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.701737] bdbm: nvm_tbl[0] lpa = 204787, tlpa = 204790 +[11176.701737] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204790 +[11176.701738] bdbm: nvm_tbl[2] lpa = 204789, tlpa = 204790 +[11176.701738] bdbm: [EUNJI] miss +[11176.702208] bdbm: [EUNJI] write hit: 0 remains +[11176.702209] bdbm: [EUNJI] skip :0 +[11176.702211] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702211] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204790 +[11176.702212] bdbm: [EUNJI] write hit: 0 remains +[11176.702212] bdbm: [EUNJI] skip :0 +[11176.702214] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702215] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204790 +[11176.702216] bdbm: [EUNJI] write hit: 0 remains +[11176.702216] bdbm: [EUNJI] skip :0 +[11176.702217] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702218] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204790 +[11176.702218] bdbm: [EUNJI] write hit: 0 remains +[11176.702220] bdbm: [EUNJI] skip :0 +[11176.702221] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702222] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204790 +[11176.702222] bdbm: [EUNJI] write hit: 0 remains +[11176.702223] bdbm: [EUNJI] skip :0 +[11176.702224] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702226] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204790 +[11176.702226] bdbm: [EUNJI] write hit: 0 remains +[11176.702227] bdbm: [EUNJI] skip :0 +[11176.702228] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702228] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204790 +[11176.702229] bdbm: [EUNJI] write hit: 0 remains +[11176.702230] bdbm: [EUNJI] skip :0 +[11176.702232] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702232] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204790 +[11176.702233] bdbm: [EUNJI] write hit: 0 remains +[11176.702233] bdbm: [EUNJI] skip :0 +[11176.702235] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702236] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204791 +[11176.702236] bdbm: nvm_tbl[1] lpa = 204788, tlpa = 204791 +[11176.702238] bdbm: nvm_tbl[2] lpa = 204789, tlpa = 204791 +[11176.702238] bdbm: [EUNJI] miss +[11176.702710] bdbm: [EUNJI] write hit: 0 remains +[11176.702710] bdbm: [EUNJI] skip :0 +[11176.702711] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702712] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204791 +[11176.702713] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204791 +[11176.702713] bdbm: [EUNJI] write hit: 0 remains +[11176.702714] bdbm: [EUNJI] skip :0 +[11176.702716] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702717] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204791 +[11176.702717] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204791 +[11176.702718] bdbm: [EUNJI] write hit: 0 remains +[11176.702718] bdbm: [EUNJI] skip :0 +[11176.702719] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702720] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204791 +[11176.702722] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204791 +[11176.702722] bdbm: [EUNJI] write hit: 0 remains +[11176.702723] bdbm: [EUNJI] skip :0 +[11176.702724] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702724] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204791 +[11176.702725] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204791 +[11176.702725] bdbm: [EUNJI] write hit: 0 remains +[11176.702726] bdbm: [EUNJI] skip :0 +[11176.702728] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702728] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204791 +[11176.702729] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204791 +[11176.702730] bdbm: [EUNJI] write hit: 0 remains +[11176.702730] bdbm: [EUNJI] skip :0 +[11176.702731] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702732] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204791 +[11176.702734] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204791 +[11176.702734] bdbm: [EUNJI] write hit: 0 remains +[11176.702735] bdbm: [EUNJI] skip :0 +[11176.702736] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702736] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204791 +[11176.702737] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204791 +[11176.702738] bdbm: [EUNJI] write hit: 0 remains +[11176.702739] bdbm: [EUNJI] skip :0 +[11176.702741] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.702742] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204792 +[11176.702742] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204792 +[11176.702743] bdbm: nvm_tbl[2] lpa = 204789, tlpa = 204792 +[11176.702743] bdbm: [EUNJI] miss +[11176.703210] bdbm: [EUNJI] write hit: 0 remains +[11176.703210] bdbm: [EUNJI] skip :0 +[11176.703211] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703212] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204792 +[11176.703213] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204792 +[11176.703213] bdbm: nvm_tbl[2] lpa = 204792, tlpa = 204792 +[11176.703214] bdbm: [EUNJI] write hit: 0 remains +[11176.703214] bdbm: [EUNJI] skip :0 +[11176.703216] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703217] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204792 +[11176.703217] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204792 +[11176.703218] bdbm: nvm_tbl[2] lpa = 204792, tlpa = 204792 +[11176.703218] bdbm: [EUNJI] write hit: 0 remains +[11176.703219] bdbm: [EUNJI] skip :0 +[11176.703220] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703221] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204792 +[11176.703222] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204792 +[11176.703223] bdbm: nvm_tbl[2] lpa = 204792, tlpa = 204792 +[11176.703223] bdbm: [EUNJI] write hit: 0 remains +[11176.703224] bdbm: [EUNJI] skip :0 +[11176.703225] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703225] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204792 +[11176.703226] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204792 +[11176.703227] bdbm: nvm_tbl[2] lpa = 204792, tlpa = 204792 +[11176.703228] bdbm: [EUNJI] write hit: 0 remains +[11176.703228] bdbm: [EUNJI] skip :0 +[11176.703229] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703230] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204792 +[11176.703230] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204792 +[11176.703231] bdbm: nvm_tbl[2] lpa = 204792, tlpa = 204792 +[11176.703232] bdbm: [EUNJI] write hit: 0 remains +[11176.703233] bdbm: [EUNJI] skip :0 +[11176.703234] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703235] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204792 +[11176.703235] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204792 +[11176.703236] bdbm: nvm_tbl[2] lpa = 204792, tlpa = 204792 +[11176.703236] bdbm: [EUNJI] write hit: 0 remains +[11176.703237] bdbm: [EUNJI] skip :0 +[11176.703239] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703240] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204792 +[11176.703240] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204792 +[11176.703241] bdbm: nvm_tbl[2] lpa = 204792, tlpa = 204792 +[11176.703241] bdbm: [EUNJI] write hit: 0 remains +[11176.703242] bdbm: [EUNJI] skip :0 +[11176.703243] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703245] bdbm: nvm_tbl[0] lpa = 204790, tlpa = 204793 +[11176.703245] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204793 +[11176.703246] bdbm: nvm_tbl[2] lpa = 204792, tlpa = 204793 +[11176.703246] bdbm: [EUNJI] miss +[11176.703717] bdbm: [EUNJI] write hit: 0 remains +[11176.703717] bdbm: [EUNJI] skip :0 +[11176.703719] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703719] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204793 +[11176.703720] bdbm: [EUNJI] write hit: 0 remains +[11176.703720] bdbm: [EUNJI] skip :0 +[11176.703721] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703723] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204793 +[11176.703723] bdbm: [EUNJI] write hit: 0 remains +[11176.703724] bdbm: [EUNJI] skip :0 +[11176.703725] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703725] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204793 +[11176.703726] bdbm: [EUNJI] write hit: 0 remains +[11176.703726] bdbm: [EUNJI] skip :0 +[11176.703727] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703729] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204793 +[11176.703729] bdbm: [EUNJI] write hit: 0 remains +[11176.703730] bdbm: [EUNJI] skip :0 +[11176.703731] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703731] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204793 +[11176.703732] bdbm: [EUNJI] write hit: 0 remains +[11176.703733] bdbm: [EUNJI] skip :0 +[11176.703735] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703735] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204793 +[11176.703736] bdbm: [EUNJI] write hit: 0 remains +[11176.703736] bdbm: [EUNJI] skip :0 +[11176.703737] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703738] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204793 +[11176.703738] bdbm: [EUNJI] write hit: 0 remains +[11176.703740] bdbm: [EUNJI] skip :0 +[11176.703742] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.703742] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204794 +[11176.703743] bdbm: nvm_tbl[1] lpa = 204791, tlpa = 204794 +[11176.703743] bdbm: nvm_tbl[2] lpa = 204792, tlpa = 204794 +[11176.703744] bdbm: [EUNJI] miss +[11176.704211] bdbm: [EUNJI] write hit: 0 remains +[11176.704212] bdbm: [EUNJI] skip :0 +[11176.704213] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704213] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204794 +[11176.704214] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204794 +[11176.704215] bdbm: [EUNJI] write hit: 0 remains +[11176.704215] bdbm: [EUNJI] skip :0 +[11176.704217] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704218] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204794 +[11176.704218] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204794 +[11176.704219] bdbm: [EUNJI] write hit: 0 remains +[11176.704219] bdbm: [EUNJI] skip :0 +[11176.704220] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704221] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204794 +[11176.704221] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204794 +[11176.704223] bdbm: [EUNJI] write hit: 0 remains +[11176.704224] bdbm: [EUNJI] skip :0 +[11176.704225] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704225] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204794 +[11176.704226] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204794 +[11176.704226] bdbm: [EUNJI] write hit: 0 remains +[11176.704227] bdbm: [EUNJI] skip :0 +[11176.704229] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704229] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204794 +[11176.704230] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204794 +[11176.704230] bdbm: [EUNJI] write hit: 0 remains +[11176.704231] bdbm: [EUNJI] skip :0 +[11176.704232] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704233] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204794 +[11176.704233] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204794 +[11176.704235] bdbm: [EUNJI] write hit: 0 remains +[11176.704235] bdbm: [EUNJI] skip :0 +[11176.704236] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704237] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204794 +[11176.704237] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204794 +[11176.704238] bdbm: [EUNJI] write hit: 0 remains +[11176.704238] bdbm: [EUNJI] skip :0 +[11176.704241] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704242] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204795 +[11176.704242] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204795 +[11176.704243] bdbm: nvm_tbl[2] lpa = 204792, tlpa = 204795 +[11176.704243] bdbm: [EUNJI] miss +[11176.704714] bdbm: [EUNJI] write hit: 0 remains +[11176.704715] bdbm: [EUNJI] skip :0 +[11176.704716] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704716] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204795 +[11176.704717] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204795 +[11176.704718] bdbm: nvm_tbl[2] lpa = 204795, tlpa = 204795 +[11176.704718] bdbm: [EUNJI] write hit: 0 remains +[11176.704719] bdbm: [EUNJI] skip :0 +[11176.704721] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704721] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204795 +[11176.704722] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204795 +[11176.704722] bdbm: nvm_tbl[2] lpa = 204795, tlpa = 204795 +[11176.704723] bdbm: [EUNJI] write hit: 0 remains +[11176.704723] bdbm: [EUNJI] skip :0 +[11176.704724] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704726] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204795 +[11176.704726] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204795 +[11176.704727] bdbm: nvm_tbl[2] lpa = 204795, tlpa = 204795 +[11176.704727] bdbm: [EUNJI] write hit: 0 remains +[11176.704728] bdbm: [EUNJI] skip :0 +[11176.704729] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704730] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204795 +[11176.704730] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204795 +[11176.704732] bdbm: nvm_tbl[2] lpa = 204795, tlpa = 204795 +[11176.704732] bdbm: [EUNJI] write hit: 0 remains +[11176.704733] bdbm: [EUNJI] skip :0 +[11176.704734] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704734] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204795 +[11176.704735] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204795 +[11176.704735] bdbm: nvm_tbl[2] lpa = 204795, tlpa = 204795 +[11176.704736] bdbm: [EUNJI] write hit: 0 remains +[11176.704737] bdbm: [EUNJI] skip :0 +[11176.704738] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704739] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204795 +[11176.704739] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204795 +[11176.704740] bdbm: nvm_tbl[2] lpa = 204795, tlpa = 204795 +[11176.704741] bdbm: [EUNJI] write hit: 0 remains +[11176.704741] bdbm: [EUNJI] skip :0 +[11176.704742] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704744] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204795 +[11176.704744] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204795 +[11176.704745] bdbm: nvm_tbl[2] lpa = 204795, tlpa = 204795 +[11176.704745] bdbm: [EUNJI] write hit: 0 remains +[11176.704746] bdbm: [EUNJI] skip :0 +[11176.704747] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.704748] bdbm: nvm_tbl[0] lpa = 204793, tlpa = 204796 +[11176.704749] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204796 +[11176.704750] bdbm: nvm_tbl[2] lpa = 204795, tlpa = 204796 +[11176.704750] bdbm: [EUNJI] miss +[11176.705217] bdbm: [EUNJI] write hit: 0 remains +[11176.705218] bdbm: [EUNJI] skip :0 +[11176.705219] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705219] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204796 +[11176.705220] bdbm: [EUNJI] write hit: 0 remains +[11176.705220] bdbm: [EUNJI] skip :0 +[11176.705221] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705223] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204796 +[11176.705224] bdbm: [EUNJI] write hit: 0 remains +[11176.705224] bdbm: [EUNJI] skip :0 +[11176.705225] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705226] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204796 +[11176.705226] bdbm: [EUNJI] write hit: 0 remains +[11176.705227] bdbm: [EUNJI] skip :0 +[11176.705229] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705229] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204796 +[11176.705230] bdbm: [EUNJI] write hit: 0 remains +[11176.705230] bdbm: [EUNJI] skip :0 +[11176.705231] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705232] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204796 +[11176.705232] bdbm: [EUNJI] write hit: 0 remains +[11176.705233] bdbm: [EUNJI] skip :0 +[11176.705235] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705235] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204796 +[11176.705236] bdbm: [EUNJI] write hit: 0 remains +[11176.705236] bdbm: [EUNJI] skip :0 +[11176.705237] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705238] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204796 +[11176.705239] bdbm: [EUNJI] write hit: 0 remains +[11176.705240] bdbm: [EUNJI] skip :0 +[11176.705242] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705242] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204797 +[11176.705243] bdbm: nvm_tbl[1] lpa = 204794, tlpa = 204797 +[11176.705243] bdbm: nvm_tbl[2] lpa = 204795, tlpa = 204797 +[11176.705244] bdbm: [EUNJI] miss +[11176.705709] bdbm: [EUNJI] write hit: 0 remains +[11176.705711] bdbm: [EUNJI] skip :0 +[11176.705712] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705712] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204797 +[11176.705713] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204797 +[11176.705714] bdbm: [EUNJI] write hit: 0 remains +[11176.705714] bdbm: [EUNJI] skip :0 +[11176.705715] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705717] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204797 +[11176.705717] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204797 +[11176.705718] bdbm: [EUNJI] write hit: 0 remains +[11176.705718] bdbm: [EUNJI] skip :0 +[11176.705719] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705720] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204797 +[11176.705720] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204797 +[11176.705721] bdbm: [EUNJI] write hit: 0 remains +[11176.705722] bdbm: [EUNJI] skip :0 +[11176.705723] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705724] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204797 +[11176.705724] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204797 +[11176.705725] bdbm: [EUNJI] write hit: 0 remains +[11176.705725] bdbm: [EUNJI] skip :0 +[11176.705726] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705727] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204797 +[11176.705729] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204797 +[11176.705729] bdbm: [EUNJI] write hit: 0 remains +[11176.705730] bdbm: [EUNJI] skip :0 +[11176.705731] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705731] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204797 +[11176.705732] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204797 +[11176.705732] bdbm: [EUNJI] write hit: 0 remains +[11176.705733] bdbm: [EUNJI] skip :0 +[11176.705735] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705735] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204797 +[11176.705736] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204797 +[11176.705736] bdbm: [EUNJI] write hit: 0 remains +[11176.705737] bdbm: [EUNJI] skip :0 +[11176.705738] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.705740] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204798 +[11176.705741] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204798 +[11176.705741] bdbm: nvm_tbl[2] lpa = 204795, tlpa = 204798 +[11176.705742] bdbm: [EUNJI] miss +[11176.706207] bdbm: [EUNJI] write hit: 0 remains +[11176.706208] bdbm: [EUNJI] skip :0 +[11176.706209] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706210] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204798 +[11176.706211] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204798 +[11176.706211] bdbm: nvm_tbl[2] lpa = 204798, tlpa = 204798 +[11176.706213] bdbm: [EUNJI] write hit: 0 remains +[11176.706213] bdbm: [EUNJI] skip :0 +[11176.706214] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706215] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204798 +[11176.706215] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204798 +[11176.706216] bdbm: nvm_tbl[2] lpa = 204798, tlpa = 204798 +[11176.706217] bdbm: [EUNJI] write hit: 0 remains +[11176.706217] bdbm: [EUNJI] skip :0 +[11176.706219] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706220] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204798 +[11176.706220] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204798 +[11176.706221] bdbm: nvm_tbl[2] lpa = 204798, tlpa = 204798 +[11176.706221] bdbm: [EUNJI] write hit: 0 remains +[11176.706222] bdbm: [EUNJI] skip :0 +[11176.706223] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706224] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204798 +[11176.706225] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204798 +[11176.706226] bdbm: nvm_tbl[2] lpa = 204798, tlpa = 204798 +[11176.706226] bdbm: [EUNJI] write hit: 0 remains +[11176.706227] bdbm: [EUNJI] skip :0 +[11176.706228] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706229] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204798 +[11176.706229] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204798 +[11176.706231] bdbm: nvm_tbl[2] lpa = 204798, tlpa = 204798 +[11176.706231] bdbm: [EUNJI] write hit: 0 remains +[11176.706232] bdbm: [EUNJI] skip :0 +[11176.706233] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706233] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204798 +[11176.706234] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204798 +[11176.706235] bdbm: nvm_tbl[2] lpa = 204798, tlpa = 204798 +[11176.706236] bdbm: [EUNJI] write hit: 0 remains +[11176.706237] bdbm: [EUNJI] skip :0 +[11176.706238] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706239] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204798 +[11176.706239] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204798 +[11176.706240] bdbm: nvm_tbl[2] lpa = 204798, tlpa = 204798 +[11176.706240] bdbm: [EUNJI] write hit: 0 remains +[11176.706241] bdbm: [EUNJI] skip :0 +[11176.706244] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706244] bdbm: nvm_tbl[0] lpa = 204796, tlpa = 204799 +[11176.706245] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 204799 +[11176.706245] bdbm: nvm_tbl[2] lpa = 204798, tlpa = 204799 +[11176.706246] bdbm: [EUNJI] miss +[11176.706712] bdbm: [EUNJI] write hit: 0 remains +[11176.706714] bdbm: [EUNJI] skip :0 +[11176.706715] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706716] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 204799 +[11176.706716] bdbm: [EUNJI] write hit: 0 remains +[11176.706717] bdbm: [EUNJI] skip :0 +[11176.706718] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706719] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 204799 +[11176.706720] bdbm: [EUNJI] write hit: 0 remains +[11176.706721] bdbm: [EUNJI] skip :0 +[11176.706722] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706722] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 204799 +[11176.706723] bdbm: [EUNJI] write hit: 0 remains +[11176.706723] bdbm: [EUNJI] skip :0 +[11176.706726] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706726] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 204799 +[11176.706727] bdbm: [EUNJI] write hit: 0 remains +[11176.706727] bdbm: [EUNJI] skip :0 +[11176.706728] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706729] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 204799 +[11176.706729] bdbm: [EUNJI] write hit: 0 remains +[11176.706731] bdbm: [EUNJI] skip :0 +[11176.706732] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706733] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 204799 +[11176.706733] bdbm: [EUNJI] write hit: 0 remains +[11176.706734] bdbm: [EUNJI] skip :0 +[11176.706735] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706735] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 204799 +[11176.706737] bdbm: [EUNJI] write hit: 0 remains +[11176.706737] bdbm: [EUNJI] skip :0 +[11176.706739] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.706740] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 229376 +[11176.706740] bdbm: nvm_tbl[1] lpa = 204797, tlpa = 229376 +[11176.706741] bdbm: nvm_tbl[2] lpa = 204798, tlpa = 229376 +[11176.706741] bdbm: [EUNJI] miss +[11176.707206] bdbm: [EUNJI] write hit: 0 remains +[11176.707208] bdbm: [EUNJI] skip :0 +[11176.707209] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.707210] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 229376 +[11176.707210] bdbm: nvm_tbl[1] lpa = 229376, tlpa = 229376 +[11176.707211] bdbm: [EUNJI] write hit: 0 remains +[11176.707211] bdbm: [EUNJI] skip :0 +[11176.707214] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.707215] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 229377 +[11176.707216] bdbm: nvm_tbl[1] lpa = 229376, tlpa = 229377 +[11176.707216] bdbm: nvm_tbl[2] lpa = 204798, tlpa = 229377 +[11176.707217] bdbm: [EUNJI] miss +[11176.707682] bdbm: [EUNJI] write hit: 0 remains +[11176.707684] bdbm: [EUNJI] skip :0 +[11176.707685] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.707686] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 229377 +[11176.707686] bdbm: nvm_tbl[1] lpa = 229376, tlpa = 229377 +[11176.707687] bdbm: nvm_tbl[2] lpa = 229377, tlpa = 229377 +[11176.707687] bdbm: [EUNJI] write hit: 0 remains +[11176.707688] bdbm: [EUNJI] skip :0 +[11176.707690] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.707691] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 229377 +[11176.707691] bdbm: nvm_tbl[1] lpa = 229376, tlpa = 229377 +[11176.707692] bdbm: nvm_tbl[2] lpa = 229377, tlpa = 229377 +[11176.707692] bdbm: [EUNJI] write hit: 0 remains +[11176.707693] bdbm: [EUNJI] skip :0 +[11176.707694] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.707695] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 229377 +[11176.707696] bdbm: nvm_tbl[1] lpa = 229376, tlpa = 229377 +[11176.707697] bdbm: nvm_tbl[2] lpa = 229377, tlpa = 229377 +[11176.707697] bdbm: [EUNJI] write hit: 0 remains +[11176.707698] bdbm: [EUNJI] skip :0 +[11176.707699] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.707700] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 229377 +[11176.707701] bdbm: nvm_tbl[1] lpa = 229376, tlpa = 229377 +[11176.707702] bdbm: nvm_tbl[2] lpa = 229377, tlpa = 229377 +[11176.707702] bdbm: [EUNJI] write hit: 0 remains +[11176.707703] bdbm: [EUNJI] skip :0 +[11176.707704] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.707704] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 229377 +[11176.707705] bdbm: nvm_tbl[1] lpa = 229376, tlpa = 229377 +[11176.707707] bdbm: nvm_tbl[2] lpa = 229377, tlpa = 229377 +[11176.707707] bdbm: [EUNJI] write hit: 0 remains +[11176.707708] bdbm: [EUNJI] skip :0 +[11176.707709] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.707710] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 229377 +[11176.707710] bdbm: nvm_tbl[1] lpa = 229376, tlpa = 229377 +[11176.707711] bdbm: nvm_tbl[2] lpa = 229377, tlpa = 229377 +[11176.707711] bdbm: [EUNJI] write hit: 0 remains +[11176.707713] bdbm: [EUNJI] skip :0 +[11176.707714] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.707714] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 229377 +[11176.707715] bdbm: nvm_tbl[1] lpa = 229376, tlpa = 229377 +[11176.707715] bdbm: nvm_tbl[2] lpa = 229377, tlpa = 229377 +[11176.707716] bdbm: [EUNJI] write hit: 0 remains +[11176.707716] bdbm: [EUNJI] skip :0 +[11176.707719] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.707720] bdbm: nvm_tbl[0] lpa = 204799, tlpa = 294912 +[11176.707721] bdbm: nvm_tbl[1] lpa = 229376, tlpa = 294912 +[11176.707721] bdbm: nvm_tbl[2] lpa = 229377, tlpa = 294912 +[11176.707722] bdbm: [EUNJI] miss +[11176.708185] bdbm: [EUNJI] write hit: 0 remains +[11176.708187] bdbm: [EUNJI] skip :0 +[11176.708188] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.708189] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 294912 +[11176.708189] bdbm: [EUNJI] write hit: 0 remains +[11176.708190] bdbm: [EUNJI] skip :0 +[11176.708193] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.708193] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 294913 +[11176.708194] bdbm: nvm_tbl[1] lpa = 229376, tlpa = 294913 +[11176.708194] bdbm: nvm_tbl[2] lpa = 229377, tlpa = 294913 +[11176.708195] bdbm: [EUNJI] miss +[11176.708657] bdbm: [DATA CORRUPTION] lpa = 229376 +[11176.708657] bdbm: [EUNJI] write hit: 0 remains +[11176.708658] bdbm: [EUNJI] skip :0 +[11176.708660] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.708661] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 294913 +[11176.708661] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 294913 +[11176.708662] bdbm: [EUNJI] write hit: 0 remains +[11176.708663] bdbm: [EUNJI] skip :0 +[11176.708664] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.708665] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 294913 +[11176.708666] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 294913 +[11176.708666] bdbm: [EUNJI] write hit: 0 remains +[11176.708667] bdbm: [EUNJI] skip :0 +[11176.708668] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.708668] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 294913 +[11176.708669] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 294913 +[11176.708670] bdbm: [EUNJI] write hit: 0 remains +[11176.708671] bdbm: [EUNJI] skip :0 +[11176.708672] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.708673] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 294913 +[11176.708673] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 294913 +[11176.708674] bdbm: [EUNJI] write hit: 0 remains +[11176.708674] bdbm: [EUNJI] skip :0 +[11176.708675] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.708677] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 294913 +[11176.708678] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 294913 +[11176.708679] bdbm: [EUNJI] write hit: 0 remains +[11176.708679] bdbm: [EUNJI] skip :0 +[11176.708680] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.708681] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 294913 +[11176.708681] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 294913 +[11176.708683] bdbm: [EUNJI] write hit: 0 remains +[11176.708683] bdbm: [EUNJI] skip :0 +[11176.708684] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.708685] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 294913 +[11176.708685] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 294913 +[11176.708686] bdbm: [EUNJI] write hit: 0 remains +[11176.708687] bdbm: [EUNJI] skip :0 +[11176.708691] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.708692] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 471840 +[11176.708692] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 471840 +[11176.708693] bdbm: nvm_tbl[2] lpa = 229377, tlpa = 471840 +[11176.708693] bdbm: [EUNJI] miss +[11176.709156] bdbm: [DATA CORRUPTION] lpa = 229377 +[11176.709157] bdbm: [EUNJI] write hit: 0 remains +[11176.709159] bdbm: [EUNJI] skip :0 +[11176.709160] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709161] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 471840 +[11176.709161] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 471840 +[11176.709162] bdbm: nvm_tbl[2] lpa = 471840, tlpa = 471840 +[11176.709162] bdbm: [EUNJI] write hit: 0 remains +[11176.709163] bdbm: [EUNJI] skip :0 +[11176.709165] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709166] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 471840 +[11176.709166] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 471840 +[11176.709167] bdbm: nvm_tbl[2] lpa = 471840, tlpa = 471840 +[11176.709167] bdbm: [EUNJI] write hit: 0 remains +[11176.709168] bdbm: [EUNJI] skip :0 +[11176.709169] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709169] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 471840 +[11176.709171] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 471840 +[11176.709171] bdbm: nvm_tbl[2] lpa = 471840, tlpa = 471840 +[11176.709172] bdbm: [EUNJI] write hit: 0 remains +[11176.709173] bdbm: [EUNJI] skip :0 +[11176.709174] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709175] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 471840 +[11176.709176] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 471840 +[11176.709177] bdbm: nvm_tbl[2] lpa = 471840, tlpa = 471840 +[11176.709178] bdbm: [EUNJI] write hit: 0 remains +[11176.709178] bdbm: [EUNJI] skip :0 +[11176.709179] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709180] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 471840 +[11176.709180] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 471840 +[11176.709181] bdbm: nvm_tbl[2] lpa = 471840, tlpa = 471840 +[11176.709182] bdbm: [EUNJI] write hit: 0 remains +[11176.709183] bdbm: [EUNJI] skip :0 +[11176.709184] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709184] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 471840 +[11176.709185] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 471840 +[11176.709185] bdbm: nvm_tbl[2] lpa = 471840, tlpa = 471840 +[11176.709186] bdbm: [EUNJI] write hit: 0 remains +[11176.709186] bdbm: [EUNJI] skip :0 +[11176.709188] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709189] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 471840 +[11176.709190] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 471840 +[11176.709190] bdbm: nvm_tbl[2] lpa = 471840, tlpa = 471840 +[11176.709191] bdbm: [EUNJI] write hit: 0 remains +[11176.709192] bdbm: [EUNJI] skip :0 +[11176.709194] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709195] bdbm: nvm_tbl[0] lpa = 294912, tlpa = 471841 +[11176.709195] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 471841 +[11176.709196] bdbm: nvm_tbl[2] lpa = 471840, tlpa = 471841 +[11176.709197] bdbm: [EUNJI] miss +[11176.709661] bdbm: [DATA CORRUPTION] lpa = 294912 +[11176.709662] bdbm: [EUNJI] write hit: 0 remains +[11176.709663] bdbm: [EUNJI] skip :0 +[11176.709665] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709666] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471841 +[11176.709666] bdbm: [EUNJI] write hit: 0 remains +[11176.709667] bdbm: [EUNJI] skip :0 +[11176.709668] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709668] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471841 +[11176.709670] bdbm: [EUNJI] write hit: 0 remains +[11176.709671] bdbm: [EUNJI] skip :0 +[11176.709672] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709672] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471841 +[11176.709673] bdbm: [EUNJI] write hit: 0 remains +[11176.709673] bdbm: [EUNJI] skip :0 +[11176.709674] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709676] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471841 +[11176.709677] bdbm: [EUNJI] write hit: 0 remains +[11176.709677] bdbm: [EUNJI] skip :0 +[11176.709678] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709679] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471841 +[11176.709679] bdbm: [EUNJI] write hit: 0 remains +[11176.709680] bdbm: [EUNJI] skip :0 +[11176.709682] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709683] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471841 +[11176.709683] bdbm: [EUNJI] write hit: 0 remains +[11176.709684] bdbm: [EUNJI] skip :0 +[11176.709685] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709685] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471841 +[11176.709686] bdbm: [EUNJI] write hit: 0 remains +[11176.709686] bdbm: [EUNJI] skip :0 +[11176.709689] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.709690] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471842 +[11176.709690] bdbm: nvm_tbl[1] lpa = 294913, tlpa = 471842 +[11176.709691] bdbm: nvm_tbl[2] lpa = 471840, tlpa = 471842 +[11176.709691] bdbm: [EUNJI] miss +[11176.710152] bdbm: [DATA CORRUPTION] lpa = 294913 +[11176.710153] bdbm: [EUNJI] write hit: 0 remains +[11176.710155] bdbm: [EUNJI] skip :0 +[11176.710156] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710157] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471842 +[11176.710157] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471842 +[11176.710158] bdbm: [EUNJI] write hit: 0 remains +[11176.710158] bdbm: [EUNJI] skip :0 +[11176.710159] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710161] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471842 +[11176.710162] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471842 +[11176.710162] bdbm: [EUNJI] write hit: 0 remains +[11176.710163] bdbm: [EUNJI] skip :0 +[11176.710164] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710164] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471842 +[11176.710165] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471842 +[11176.710165] bdbm: [EUNJI] write hit: 0 remains +[11176.710167] bdbm: [EUNJI] skip :0 +[11176.710168] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710168] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471842 +[11176.710169] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471842 +[11176.710170] bdbm: [EUNJI] write hit: 0 remains +[11176.710170] bdbm: [EUNJI] skip :0 +[11176.710171] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710173] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471842 +[11176.710173] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471842 +[11176.710174] bdbm: [EUNJI] write hit: 0 remains +[11176.710174] bdbm: [EUNJI] skip :0 +[11176.710175] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710176] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471842 +[11176.710176] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471842 +[11176.710177] bdbm: [EUNJI] write hit: 0 remains +[11176.710178] bdbm: [EUNJI] skip :0 +[11176.710179] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710180] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471842 +[11176.710181] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471842 +[11176.710181] bdbm: [EUNJI] write hit: 0 remains +[11176.710182] bdbm: [EUNJI] skip :0 +[11176.710184] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710185] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471843 +[11176.710185] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471843 +[11176.710186] bdbm: nvm_tbl[2] lpa = 471840, tlpa = 471843 +[11176.710186] bdbm: [EUNJI] miss +[11176.710651] bdbm: [EUNJI] write hit: 0 remains +[11176.710652] bdbm: [EUNJI] skip :0 +[11176.710653] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710654] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471843 +[11176.710654] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471843 +[11176.710655] bdbm: nvm_tbl[2] lpa = 471843, tlpa = 471843 +[11176.710655] bdbm: [EUNJI] write hit: 0 remains +[11176.710656] bdbm: [EUNJI] skip :0 +[11176.710658] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710658] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471843 +[11176.710659] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471843 +[11176.710660] bdbm: nvm_tbl[2] lpa = 471843, tlpa = 471843 +[11176.710660] bdbm: [EUNJI] write hit: 0 remains +[11176.710661] bdbm: [EUNJI] skip :0 +[11176.710662] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710663] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471843 +[11176.710664] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471843 +[11176.710664] bdbm: nvm_tbl[2] lpa = 471843, tlpa = 471843 +[11176.710665] bdbm: [EUNJI] write hit: 0 remains +[11176.710665] bdbm: [EUNJI] skip :0 +[11176.710666] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710667] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471843 +[11176.710667] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471843 +[11176.710669] bdbm: nvm_tbl[2] lpa = 471843, tlpa = 471843 +[11176.710669] bdbm: [EUNJI] write hit: 0 remains +[11176.710670] bdbm: [EUNJI] skip :0 +[11176.710671] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710671] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471843 +[11176.710672] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471843 +[11176.710673] bdbm: nvm_tbl[2] lpa = 471843, tlpa = 471843 +[11176.710673] bdbm: [EUNJI] write hit: 0 remains +[11176.710675] bdbm: [EUNJI] skip :0 +[11176.710676] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710676] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471843 +[11176.710677] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471843 +[11176.710677] bdbm: nvm_tbl[2] lpa = 471843, tlpa = 471843 +[11176.710678] bdbm: [EUNJI] write hit: 0 remains +[11176.710678] bdbm: [EUNJI] skip :0 +[11176.710680] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710681] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471843 +[11176.710681] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471843 +[11176.710682] bdbm: nvm_tbl[2] lpa = 471843, tlpa = 471843 +[11176.710683] bdbm: [EUNJI] write hit: 0 remains +[11176.710683] bdbm: [EUNJI] skip :0 +[11176.710685] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.710687] bdbm: nvm_tbl[0] lpa = 471841, tlpa = 471844 +[11176.710687] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471844 +[11176.710688] bdbm: nvm_tbl[2] lpa = 471843, tlpa = 471844 +[11176.710688] bdbm: [EUNJI] miss +[11176.711152] bdbm: [EUNJI] write hit: 0 remains +[11176.711153] bdbm: [EUNJI] skip :0 +[11176.711154] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711155] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471844 +[11176.711155] bdbm: [EUNJI] write hit: 0 remains +[11176.711156] bdbm: [EUNJI] skip :0 +[11176.711157] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711158] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471844 +[11176.711159] bdbm: [EUNJI] write hit: 0 remains +[11176.711160] bdbm: [EUNJI] skip :0 +[11176.711160] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711161] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471844 +[11176.711162] bdbm: [EUNJI] write hit: 0 remains +[11176.711162] bdbm: [EUNJI] skip :0 +[11176.711164] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711165] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471844 +[11176.711165] bdbm: [EUNJI] write hit: 0 remains +[11176.711166] bdbm: [EUNJI] skip :0 +[11176.711167] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711167] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471844 +[11176.711168] bdbm: [EUNJI] write hit: 0 remains +[11176.711168] bdbm: [EUNJI] skip :0 +[11176.711170] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711171] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471844 +[11176.711172] bdbm: [EUNJI] write hit: 0 remains +[11176.711172] bdbm: [EUNJI] skip :0 +[11176.711173] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711174] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471844 +[11176.711174] bdbm: [EUNJI] write hit: 0 remains +[11176.711176] bdbm: [EUNJI] skip :0 +[11176.711177] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711178] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471845 +[11176.711179] bdbm: nvm_tbl[1] lpa = 471842, tlpa = 471845 +[11176.711179] bdbm: nvm_tbl[2] lpa = 471843, tlpa = 471845 +[11176.711180] bdbm: [EUNJI] miss +[11176.711647] bdbm: [EUNJI] write hit: 0 remains +[11176.711648] bdbm: [EUNJI] skip :0 +[11176.711649] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711649] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471845 +[11176.711650] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471845 +[11176.711650] bdbm: [EUNJI] write hit: 0 remains +[11176.711651] bdbm: [EUNJI] skip :0 +[11176.711653] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711654] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471845 +[11176.711654] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471845 +[11176.711655] bdbm: [EUNJI] write hit: 0 remains +[11176.711655] bdbm: [EUNJI] skip :0 +[11176.711656] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711657] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471845 +[11176.711657] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471845 +[11176.711659] bdbm: [EUNJI] write hit: 0 remains +[11176.711659] bdbm: [EUNJI] skip :0 +[11176.711660] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711661] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471845 +[11176.711661] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471845 +[11176.711662] bdbm: [EUNJI] write hit: 0 remains +[11176.711662] bdbm: [EUNJI] skip :0 +[11176.711664] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711665] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471845 +[11176.711666] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471845 +[11176.711666] bdbm: [EUNJI] write hit: 0 remains +[11176.711667] bdbm: [EUNJI] skip :0 +[11176.711668] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711668] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471845 +[11176.711669] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471845 +[11176.711670] bdbm: [EUNJI] write hit: 0 remains +[11176.711671] bdbm: [EUNJI] skip :0 +[11176.711672] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711672] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471845 +[11176.711673] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471845 +[11176.711673] bdbm: [EUNJI] write hit: 0 remains +[11176.711674] bdbm: [EUNJI] skip :0 +[11176.711677] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.711677] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471846 +[11176.711678] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471846 +[11176.711678] bdbm: nvm_tbl[2] lpa = 471843, tlpa = 471846 +[11176.711679] bdbm: [EUNJI] miss +[11176.712144] bdbm: [EUNJI] write hit: 0 remains +[11176.712145] bdbm: [EUNJI] skip :0 +[11176.712146] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712146] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471846 +[11176.712147] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471846 +[11176.712147] bdbm: nvm_tbl[2] lpa = 471846, tlpa = 471846 +[11176.712148] bdbm: [EUNJI] write hit: 0 remains +[11176.712148] bdbm: [EUNJI] skip :0 +[11176.712150] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712151] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471846 +[11176.712152] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471846 +[11176.712152] bdbm: nvm_tbl[2] lpa = 471846, tlpa = 471846 +[11176.712153] bdbm: [EUNJI] write hit: 0 remains +[11176.712153] bdbm: [EUNJI] skip :0 +[11176.712154] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712156] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471846 +[11176.712156] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471846 +[11176.712157] bdbm: nvm_tbl[2] lpa = 471846, tlpa = 471846 +[11176.712157] bdbm: [EUNJI] write hit: 0 remains +[11176.712158] bdbm: [EUNJI] skip :0 +[11176.712159] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712159] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471846 +[11176.712160] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471846 +[11176.712162] bdbm: nvm_tbl[2] lpa = 471846, tlpa = 471846 +[11176.712162] bdbm: [EUNJI] write hit: 0 remains +[11176.712163] bdbm: [EUNJI] skip :0 +[11176.712164] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712164] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471846 +[11176.712165] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471846 +[11176.712165] bdbm: nvm_tbl[2] lpa = 471846, tlpa = 471846 +[11176.712166] bdbm: [EUNJI] write hit: 0 remains +[11176.712167] bdbm: [EUNJI] skip :0 +[11176.712168] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712169] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471846 +[11176.712169] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471846 +[11176.712170] bdbm: nvm_tbl[2] lpa = 471846, tlpa = 471846 +[11176.712170] bdbm: [EUNJI] write hit: 0 remains +[11176.712171] bdbm: [EUNJI] skip :0 +[11176.712173] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712174] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471846 +[11176.712174] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471846 +[11176.712175] bdbm: nvm_tbl[2] lpa = 471846, tlpa = 471846 +[11176.712175] bdbm: [EUNJI] write hit: 0 remains +[11176.712176] bdbm: [EUNJI] skip :0 +[11176.712177] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712178] bdbm: nvm_tbl[0] lpa = 471844, tlpa = 471847 +[11176.712179] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471847 +[11176.712180] bdbm: nvm_tbl[2] lpa = 471846, tlpa = 471847 +[11176.712180] bdbm: [EUNJI] miss +[11176.712645] bdbm: [EUNJI] write hit: 0 remains +[11176.712646] bdbm: [EUNJI] skip :0 +[11176.712647] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712647] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471847 +[11176.712648] bdbm: [EUNJI] write hit: 0 remains +[11176.712648] bdbm: [EUNJI] skip :0 +[11176.712649] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712651] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471847 +[11176.712652] bdbm: [EUNJI] write hit: 0 remains +[11176.712652] bdbm: [EUNJI] skip :0 +[11176.712653] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712654] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471847 +[11176.712654] bdbm: [EUNJI] write hit: 0 remains +[11176.712655] bdbm: [EUNJI] skip :0 +[11176.712657] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712657] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471847 +[11176.712658] bdbm: [EUNJI] write hit: 0 remains +[11176.712659] bdbm: [EUNJI] skip :0 +[11176.712660] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712660] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471847 +[11176.712661] bdbm: [EUNJI] write hit: 0 remains +[11176.712661] bdbm: [EUNJI] skip :0 +[11176.712663] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712664] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471847 +[11176.712664] bdbm: [EUNJI] write hit: 0 remains +[11176.712665] bdbm: [EUNJI] skip :0 +[11176.712666] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712666] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471847 +[11176.712667] bdbm: [EUNJI] write hit: 0 remains +[11176.712669] bdbm: [EUNJI] skip :0 +[11176.712670] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.712671] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471848 +[11176.712671] bdbm: nvm_tbl[1] lpa = 471845, tlpa = 471848 +[11176.712672] bdbm: nvm_tbl[2] lpa = 471846, tlpa = 471848 +[11176.712672] bdbm: [EUNJI] miss +[11176.713139] bdbm: [EUNJI] write hit: 0 remains +[11176.713139] bdbm: [EUNJI] skip :0 +[11176.713141] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713141] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471848 +[11176.713142] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471848 +[11176.713142] bdbm: [EUNJI] write hit: 0 remains +[11176.713143] bdbm: [EUNJI] skip :0 +[11176.713145] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713145] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471848 +[11176.713146] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471848 +[11176.713147] bdbm: [EUNJI] write hit: 0 remains +[11176.713147] bdbm: [EUNJI] skip :0 +[11176.713148] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713149] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471848 +[11176.713149] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471848 +[11176.713151] bdbm: [EUNJI] write hit: 0 remains +[11176.713151] bdbm: [EUNJI] skip :0 +[11176.713152] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713153] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471848 +[11176.713153] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471848 +[11176.713154] bdbm: [EUNJI] write hit: 0 remains +[11176.713154] bdbm: [EUNJI] skip :0 +[11176.713156] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713157] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471848 +[11176.713158] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471848 +[11176.713158] bdbm: [EUNJI] write hit: 0 remains +[11176.713159] bdbm: [EUNJI] skip :0 +[11176.713160] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713160] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471848 +[11176.713161] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471848 +[11176.713162] bdbm: [EUNJI] write hit: 0 remains +[11176.713163] bdbm: [EUNJI] skip :0 +[11176.713164] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713164] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471848 +[11176.713165] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471848 +[11176.713165] bdbm: [EUNJI] write hit: 0 remains +[11176.713166] bdbm: [EUNJI] skip :0 +[11176.713169] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713169] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471849 +[11176.713170] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471849 +[11176.713170] bdbm: nvm_tbl[2] lpa = 471846, tlpa = 471849 +[11176.713171] bdbm: [EUNJI] miss +[11176.713636] bdbm: [EUNJI] write hit: 0 remains +[11176.713637] bdbm: [EUNJI] skip :0 +[11176.713638] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713639] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471849 +[11176.713639] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471849 +[11176.713640] bdbm: nvm_tbl[2] lpa = 471849, tlpa = 471849 +[11176.713640] bdbm: [EUNJI] write hit: 0 remains +[11176.713642] bdbm: [EUNJI] skip :0 +[11176.713643] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713643] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471849 +[11176.713644] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471849 +[11176.713644] bdbm: nvm_tbl[2] lpa = 471849, tlpa = 471849 +[11176.713645] bdbm: [EUNJI] write hit: 0 remains +[11176.713645] bdbm: [EUNJI] skip :0 +[11176.713646] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713648] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471849 +[11176.713648] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471849 +[11176.713649] bdbm: nvm_tbl[2] lpa = 471849, tlpa = 471849 +[11176.713650] bdbm: [EUNJI] write hit: 0 remains +[11176.713650] bdbm: [EUNJI] skip :0 +[11176.713651] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713652] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471849 +[11176.713652] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471849 +[11176.713654] bdbm: nvm_tbl[2] lpa = 471849, tlpa = 471849 +[11176.713654] bdbm: [EUNJI] write hit: 0 remains +[11176.713655] bdbm: [EUNJI] skip :0 +[11176.713656] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713656] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471849 +[11176.713657] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471849 +[11176.713658] bdbm: nvm_tbl[2] lpa = 471849, tlpa = 471849 +[11176.713658] bdbm: [EUNJI] write hit: 0 remains +[11176.713660] bdbm: [EUNJI] skip :0 +[11176.713661] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713661] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471849 +[11176.713662] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471849 +[11176.713662] bdbm: nvm_tbl[2] lpa = 471849, tlpa = 471849 +[11176.713663] bdbm: [EUNJI] write hit: 0 remains +[11176.713663] bdbm: [EUNJI] skip :0 +[11176.713665] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713666] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471849 +[11176.713667] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471849 +[11176.713667] bdbm: nvm_tbl[2] lpa = 471849, tlpa = 471849 +[11176.713668] bdbm: [EUNJI] write hit: 0 remains +[11176.713668] bdbm: [EUNJI] skip :0 +[11176.713671] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.713671] bdbm: nvm_tbl[0] lpa = 471847, tlpa = 471850 +[11176.713672] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471850 +[11176.713673] bdbm: nvm_tbl[2] lpa = 471849, tlpa = 471850 +[11176.713673] bdbm: [EUNJI] miss +[11176.714206] bdbm: [EUNJI] write hit: 0 remains +[11176.714207] bdbm: [EUNJI] skip :0 +[11176.714208] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714209] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471850 +[11176.714209] bdbm: [EUNJI] write hit: 0 remains +[11176.714211] bdbm: [EUNJI] skip :0 +[11176.714212] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714213] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471850 +[11176.714213] bdbm: [EUNJI] write hit: 0 remains +[11176.714214] bdbm: [EUNJI] skip :0 +[11176.714215] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714217] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471850 +[11176.714217] bdbm: [EUNJI] write hit: 0 remains +[11176.714218] bdbm: [EUNJI] skip :0 +[11176.714219] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714220] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471850 +[11176.714220] bdbm: [EUNJI] write hit: 0 remains +[11176.714221] bdbm: [EUNJI] skip :0 +[11176.714223] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714224] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471850 +[11176.714224] bdbm: [EUNJI] write hit: 0 remains +[11176.714225] bdbm: [EUNJI] skip :0 +[11176.714226] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714226] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471850 +[11176.714227] bdbm: [EUNJI] write hit: 0 remains +[11176.714228] bdbm: [EUNJI] skip :0 +[11176.714229] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714230] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471850 +[11176.714230] bdbm: [EUNJI] write hit: 0 remains +[11176.714231] bdbm: [EUNJI] skip :0 +[11176.714233] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714234] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471851 +[11176.714235] bdbm: nvm_tbl[1] lpa = 471848, tlpa = 471851 +[11176.714235] bdbm: nvm_tbl[2] lpa = 471849, tlpa = 471851 +[11176.714236] bdbm: [EUNJI] miss +[11176.714700] bdbm: [EUNJI] write hit: 0 remains +[11176.714702] bdbm: [EUNJI] skip :0 +[11176.714703] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714704] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471851 +[11176.714704] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471851 +[11176.714705] bdbm: [EUNJI] write hit: 0 remains +[11176.714705] bdbm: [EUNJI] skip :0 +[11176.714706] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714708] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471851 +[11176.714709] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471851 +[11176.714709] bdbm: [EUNJI] write hit: 0 remains +[11176.714710] bdbm: [EUNJI] skip :0 +[11176.714711] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714711] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471851 +[11176.714712] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471851 +[11176.714712] bdbm: [EUNJI] write hit: 0 remains +[11176.714714] bdbm: [EUNJI] skip :0 +[11176.714715] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714716] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471851 +[11176.714716] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471851 +[11176.714717] bdbm: [EUNJI] write hit: 0 remains +[11176.714717] bdbm: [EUNJI] skip :0 +[11176.714718] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714720] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471851 +[11176.714720] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471851 +[11176.714721] bdbm: [EUNJI] write hit: 0 remains +[11176.714721] bdbm: [EUNJI] skip :0 +[11176.714722] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714723] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471851 +[11176.714724] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471851 +[11176.714725] bdbm: [EUNJI] write hit: 0 remains +[11176.714726] bdbm: [EUNJI] skip :0 +[11176.714727] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714727] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471851 +[11176.714728] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471851 +[11176.714728] bdbm: [EUNJI] write hit: 0 remains +[11176.714729] bdbm: [EUNJI] skip :0 +[11176.714732] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.714733] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471852 +[11176.714733] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471852 +[11176.714734] bdbm: nvm_tbl[2] lpa = 471849, tlpa = 471852 +[11176.714734] bdbm: [EUNJI] miss +[11176.715199] bdbm: [EUNJI] write hit: 0 remains +[11176.715199] bdbm: [EUNJI] skip :0 +[11176.715200] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715201] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471852 +[11176.715201] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471852 +[11176.715202] bdbm: nvm_tbl[2] lpa = 471852, tlpa = 471852 +[11176.715203] bdbm: [EUNJI] write hit: 0 remains +[11176.715203] bdbm: [EUNJI] skip :0 +[11176.715205] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715206] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471852 +[11176.715206] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471852 +[11176.715207] bdbm: nvm_tbl[2] lpa = 471852, tlpa = 471852 +[11176.715208] bdbm: [EUNJI] write hit: 0 remains +[11176.715208] bdbm: [EUNJI] skip :0 +[11176.715210] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715211] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471852 +[11176.715211] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471852 +[11176.715212] bdbm: nvm_tbl[2] lpa = 471852, tlpa = 471852 +[11176.715213] bdbm: [EUNJI] write hit: 0 remains +[11176.715214] bdbm: [EUNJI] skip :0 +[11176.715214] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715216] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471852 +[11176.715217] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471852 +[11176.715217] bdbm: nvm_tbl[2] lpa = 471852, tlpa = 471852 +[11176.715218] bdbm: [EUNJI] write hit: 0 remains +[11176.715218] bdbm: [EUNJI] skip :0 +[11176.715219] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715220] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471852 +[11176.715221] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471852 +[11176.715222] bdbm: nvm_tbl[2] lpa = 471852, tlpa = 471852 +[11176.715223] bdbm: [EUNJI] write hit: 0 remains +[11176.715223] bdbm: [EUNJI] skip :0 +[11176.715224] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715225] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471852 +[11176.715225] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471852 +[11176.715226] bdbm: nvm_tbl[2] lpa = 471852, tlpa = 471852 +[11176.715227] bdbm: [EUNJI] write hit: 0 remains +[11176.715228] bdbm: [EUNJI] skip :0 +[11176.715230] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715230] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471852 +[11176.715231] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471852 +[11176.715231] bdbm: nvm_tbl[2] lpa = 471852, tlpa = 471852 +[11176.715232] bdbm: [EUNJI] write hit: 0 remains +[11176.715232] bdbm: [EUNJI] skip :0 +[11176.715235] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715235] bdbm: nvm_tbl[0] lpa = 471850, tlpa = 471853 +[11176.715236] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471853 +[11176.715237] bdbm: nvm_tbl[2] lpa = 471852, tlpa = 471853 +[11176.715237] bdbm: [EUNJI] miss +[11176.715703] bdbm: [EUNJI] write hit: 0 remains +[11176.715705] bdbm: [EUNJI] skip :0 +[11176.715706] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715707] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471853 +[11176.715707] bdbm: [EUNJI] write hit: 0 remains +[11176.715708] bdbm: [EUNJI] skip :0 +[11176.715709] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715711] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471853 +[11176.715712] bdbm: [EUNJI] write hit: 0 remains +[11176.715712] bdbm: [EUNJI] skip :0 +[11176.715713] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715714] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471853 +[11176.715714] bdbm: [EUNJI] write hit: 0 remains +[11176.715715] bdbm: [EUNJI] skip :0 +[11176.715717] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715717] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471853 +[11176.715718] bdbm: [EUNJI] write hit: 0 remains +[11176.715718] bdbm: [EUNJI] skip :0 +[11176.715719] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715720] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471853 +[11176.715721] bdbm: [EUNJI] write hit: 0 remains +[11176.715722] bdbm: [EUNJI] skip :0 +[11176.715723] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715724] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471853 +[11176.715724] bdbm: [EUNJI] write hit: 0 remains +[11176.715725] bdbm: [EUNJI] skip :0 +[11176.715726] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715726] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471853 +[11176.715728] bdbm: [EUNJI] write hit: 0 remains +[11176.715729] bdbm: [EUNJI] skip :0 +[11176.715731] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.715731] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471854 +[11176.715732] bdbm: nvm_tbl[1] lpa = 471851, tlpa = 471854 +[11176.715732] bdbm: nvm_tbl[2] lpa = 471852, tlpa = 471854 +[11176.715734] bdbm: [EUNJI] miss +[11176.716199] bdbm: [EUNJI] write hit: 0 remains +[11176.716200] bdbm: [EUNJI] skip :0 +[11176.716201] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716202] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471854 +[11176.716202] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471854 +[11176.716203] bdbm: [EUNJI] write hit: 0 remains +[11176.716203] bdbm: [EUNJI] skip :0 +[11176.716206] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716206] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471854 +[11176.716207] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471854 +[11176.716208] bdbm: [EUNJI] write hit: 0 remains +[11176.716208] bdbm: [EUNJI] skip :0 +[11176.716209] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716211] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471854 +[11176.716212] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471854 +[11176.716212] bdbm: [EUNJI] write hit: 0 remains +[11176.716213] bdbm: [EUNJI] skip :0 +[11176.716214] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716214] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471854 +[11176.716215] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471854 +[11176.716217] bdbm: [EUNJI] write hit: 0 remains +[11176.716217] bdbm: [EUNJI] skip :0 +[11176.716218] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716219] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471854 +[11176.716219] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471854 +[11176.716220] bdbm: [EUNJI] write hit: 0 remains +[11176.716220] bdbm: [EUNJI] skip :0 +[11176.716221] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716223] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471854 +[11176.716223] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471854 +[11176.716224] bdbm: [EUNJI] write hit: 0 remains +[11176.716225] bdbm: [EUNJI] skip :0 +[11176.716226] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716226] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471854 +[11176.716227] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471854 +[11176.716227] bdbm: [EUNJI] write hit: 0 remains +[11176.716229] bdbm: [EUNJI] skip :0 +[11176.716230] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716231] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471855 +[11176.716231] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471855 +[11176.716232] bdbm: nvm_tbl[2] lpa = 471852, tlpa = 471855 +[11176.716232] bdbm: [EUNJI] miss +[11176.716700] bdbm: [EUNJI] write hit: 0 remains +[11176.716700] bdbm: [EUNJI] skip :0 +[11176.716702] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716702] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471855 +[11176.716703] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471855 +[11176.716703] bdbm: nvm_tbl[2] lpa = 471855, tlpa = 471855 +[11176.716704] bdbm: [EUNJI] write hit: 0 remains +[11176.716706] bdbm: [EUNJI] skip :0 +[11176.716707] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716707] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471855 +[11176.716708] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471855 +[11176.716708] bdbm: nvm_tbl[2] lpa = 471855, tlpa = 471855 +[11176.716709] bdbm: [EUNJI] write hit: 0 remains +[11176.716709] bdbm: [EUNJI] skip :0 +[11176.716711] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716712] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471855 +[11176.716712] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471855 +[11176.716713] bdbm: nvm_tbl[2] lpa = 471855, tlpa = 471855 +[11176.716714] bdbm: [EUNJI] write hit: 0 remains +[11176.716714] bdbm: [EUNJI] skip :0 +[11176.716715] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716716] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471855 +[11176.716717] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471855 +[11176.716718] bdbm: nvm_tbl[2] lpa = 471855, tlpa = 471855 +[11176.716719] bdbm: [EUNJI] write hit: 0 remains +[11176.716719] bdbm: [EUNJI] skip :0 +[11176.716720] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716721] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471855 +[11176.716721] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471855 +[11176.716722] bdbm: nvm_tbl[2] lpa = 471855, tlpa = 471855 +[11176.716723] bdbm: [EUNJI] write hit: 0 remains +[11176.716724] bdbm: [EUNJI] skip :0 +[11176.716725] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716726] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471855 +[11176.716726] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471855 +[11176.716727] bdbm: nvm_tbl[2] lpa = 471855, tlpa = 471855 +[11176.716728] bdbm: [EUNJI] write hit: 0 remains +[11176.716729] bdbm: [EUNJI] skip :0 +[11176.716730] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716731] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471855 +[11176.716731] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471855 +[11176.716732] bdbm: nvm_tbl[2] lpa = 471855, tlpa = 471855 +[11176.716732] bdbm: [EUNJI] write hit: 0 remains +[11176.716733] bdbm: [EUNJI] skip :0 +[11176.716736] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.716736] bdbm: nvm_tbl[0] lpa = 471853, tlpa = 471856 +[11176.716737] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471856 +[11176.716737] bdbm: nvm_tbl[2] lpa = 471855, tlpa = 471856 +[11176.716738] bdbm: [EUNJI] miss +[11176.717202] bdbm: [EUNJI] write hit: 0 remains +[11176.717203] bdbm: [EUNJI] skip :0 +[11176.717205] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717205] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471856 +[11176.717206] bdbm: [EUNJI] write hit: 0 remains +[11176.717206] bdbm: [EUNJI] skip :0 +[11176.717208] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717209] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471856 +[11176.717209] bdbm: [EUNJI] write hit: 0 remains +[11176.717210] bdbm: [EUNJI] skip :0 +[11176.717211] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717212] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471856 +[11176.717213] bdbm: [EUNJI] write hit: 0 remains +[11176.717214] bdbm: [EUNJI] skip :0 +[11176.717215] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717216] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471856 +[11176.717216] bdbm: [EUNJI] write hit: 0 remains +[11176.717217] bdbm: [EUNJI] skip :0 +[11176.717218] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717218] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471856 +[11176.717219] bdbm: [EUNJI] write hit: 0 remains +[11176.717221] bdbm: [EUNJI] skip :0 +[11176.717222] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717222] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471856 +[11176.717223] bdbm: [EUNJI] write hit: 0 remains +[11176.717223] bdbm: [EUNJI] skip :0 +[11176.717224] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717226] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471856 +[11176.717227] bdbm: [EUNJI] write hit: 0 remains +[11176.717227] bdbm: [EUNJI] skip :0 +[11176.717229] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717229] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471857 +[11176.717230] bdbm: nvm_tbl[1] lpa = 471854, tlpa = 471857 +[11176.717230] bdbm: nvm_tbl[2] lpa = 471855, tlpa = 471857 +[11176.717232] bdbm: [EUNJI] miss +[11176.717698] bdbm: [EUNJI] write hit: 0 remains +[11176.717699] bdbm: [EUNJI] skip :0 +[11176.717701] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717701] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471857 +[11176.717702] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471857 +[11176.717702] bdbm: [EUNJI] write hit: 0 remains +[11176.717703] bdbm: [EUNJI] skip :0 +[11176.717705] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717705] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471857 +[11176.717706] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471857 +[11176.717706] bdbm: [EUNJI] write hit: 0 remains +[11176.717707] bdbm: [EUNJI] skip :0 +[11176.717708] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717709] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471857 +[11176.717710] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471857 +[11176.717711] bdbm: [EUNJI] write hit: 0 remains +[11176.717712] bdbm: [EUNJI] skip :0 +[11176.717713] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717713] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471857 +[11176.717714] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471857 +[11176.717714] bdbm: [EUNJI] write hit: 0 remains +[11176.717715] bdbm: [EUNJI] skip :0 +[11176.717717] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717717] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471857 +[11176.717718] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471857 +[11176.717718] bdbm: [EUNJI] write hit: 0 remains +[11176.717719] bdbm: [EUNJI] skip :0 +[11176.717720] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717720] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471857 +[11176.717722] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471857 +[11176.717723] bdbm: [EUNJI] write hit: 0 remains +[11176.717723] bdbm: [EUNJI] skip :0 +[11176.717724] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717725] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471857 +[11176.717725] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471857 +[11176.717726] bdbm: [EUNJI] write hit: 0 remains +[11176.717726] bdbm: [EUNJI] skip :0 +[11176.717729] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.717730] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471858 +[11176.717730] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471858 +[11176.717731] bdbm: nvm_tbl[2] lpa = 471855, tlpa = 471858 +[11176.717731] bdbm: [EUNJI] miss +[11176.718199] bdbm: [EUNJI] write hit: 0 remains +[11176.718200] bdbm: [EUNJI] skip :0 +[11176.718201] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.718202] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471858 +[11176.718202] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471858 +[11176.718203] bdbm: nvm_tbl[2] lpa = 471858, tlpa = 471858 +[11176.718205] bdbm: [EUNJI] write hit: 0 remains +[11176.718205] bdbm: [EUNJI] skip :0 +[11176.718206] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.718207] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471858 +[11176.718208] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471858 +[11176.718208] bdbm: nvm_tbl[2] lpa = 471858, tlpa = 471858 +[11176.718209] bdbm: [EUNJI] write hit: 0 remains +[11176.718210] bdbm: [EUNJI] skip :0 +[11176.718211] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.718212] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471858 +[11176.718212] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471858 +[11176.718213] bdbm: nvm_tbl[2] lpa = 471858, tlpa = 471858 +[11176.718213] bdbm: [EUNJI] write hit: 0 remains +[11176.718214] bdbm: [EUNJI] skip :0 +[11176.718216] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.718217] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471858 +[11176.718218] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471858 +[11176.718218] bdbm: nvm_tbl[2] lpa = 471858, tlpa = 471858 +[11176.718219] bdbm: [EUNJI] write hit: 0 remains +[11176.718219] bdbm: [EUNJI] skip :0 +[11176.718220] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.718222] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471858 +[11176.718223] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471858 +[11176.718223] bdbm: nvm_tbl[2] lpa = 471858, tlpa = 471858 +[11176.718224] bdbm: [EUNJI] write hit: 0 remains +[11176.718224] bdbm: [EUNJI] skip :0 +[11176.718225] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.718226] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471858 +[11176.718226] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471858 +[11176.718228] bdbm: nvm_tbl[2] lpa = 471858, tlpa = 471858 +[11176.718228] bdbm: [EUNJI] write hit: 0 remains +[11176.718229] bdbm: [EUNJI] skip :0 +[11176.718230] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.718231] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 471858 +[11176.718232] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 471858 +[11176.718232] bdbm: nvm_tbl[2] lpa = 471858, tlpa = 471858 +[11176.718234] bdbm: [EUNJI] write hit: 0 remains +[11176.718234] bdbm: [EUNJI] skip :0 +[11176.718252] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.718253] bdbm: nvm_tbl[0] lpa = 471856, tlpa = 0 +[11176.718254] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 0 +[11176.718255] bdbm: nvm_tbl[2] lpa = 471858, tlpa = 0 +[11176.718255] bdbm: [EUNJI] miss +[11176.718721] bdbm: [EUNJI] write hit: 0 remains +[11176.718722] bdbm: [EUNJI] skip :0 +[11176.718724] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.718724] bdbm: nvm_tbl[0] lpa = 0, tlpa = 0 +[11176.718725] bdbm: [EUNJI] write hit: 0 remains +[11176.718726] bdbm: [EUNJI] skip :0 +[11176.729578] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.729580] bdbm: nvm_tbl[0] lpa = 0, tlpa = 0 +[11176.729581] bdbm: [EUNJI] read hit: 0 remains +[11176.729582] bdbm: [EUNJI] skip :0 +[11176.729593] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.729593] bdbm: nvm_tbl[0] lpa = 0, tlpa = 0 +[11176.729594] bdbm: [EUNJI] read hit: 0 remains +[11176.729594] bdbm: [EUNJI] skip :0 +[11176.729597] bdbm: [EUNJI] hr->nr_llm_reqs = 1 +[11176.729598] bdbm: nvm_tbl[0] lpa = 0, tlpa = 1 +[11176.729598] bdbm: nvm_tbl[1] lpa = 471857, tlpa = 1 +[11176.729599] bdbm: nvm_tbl[2] lpa = 471858, tlpa = 1 +[11176.729599] bdbm: [EUNJI] miss +[11176.729600] bdbm: [EUNJI] read miss: 1 remains +[11176.729709] EXT4-fs (robusta): ext4_check_descriptors: Inode table for group 0 overlaps superblock +[11176.729711] EXT4-fs (robusta): ext4_check_descriptors: Checksum for group 0 failed (1929!=0) +[11176.729712] EXT4-fs (robusta): group descriptors corrupted! diff --git a/err1.dmesg b/err1.dmesg new file mode 100644 index 0000000..85b602b --- /dev/null +++ b/err1.dmesg @@ -0,0 +1,4657 @@ +[47295.326611] bdbm: [EUNJI] [DATA SAFE] lpa = 200422 +[47295.327088] bdbm: [EUNJI] [DATA SAFE] lpa = 200423 +[47295.327561] bdbm: [EUNJI] [DATA SAFE] lpa = 200424 +[47295.328037] bdbm: [EUNJI] [DATA SAFE] lpa = 200425 +[47295.328510] bdbm: [EUNJI] [DATA SAFE] lpa = 200426 +[47295.328988] bdbm: [EUNJI] [DATA SAFE] lpa = 200427 +[47295.329465] bdbm: [EUNJI] [DATA SAFE] lpa = 200428 +[47295.329941] bdbm: [EUNJI] [DATA SAFE] lpa = 200429 +[47295.330417] bdbm: [EUNJI] [DATA SAFE] lpa = 200430 +[47295.330893] bdbm: [EUNJI] [DATA SAFE] lpa = 200431 +[47295.331372] bdbm: [EUNJI] [DATA SAFE] lpa = 200432 +[47295.331846] bdbm: [EUNJI] [DATA SAFE] lpa = 200433 +[47295.332321] bdbm: [EUNJI] [DATA SAFE] lpa = 200434 +[47295.332794] bdbm: [EUNJI] [DATA SAFE] lpa = 200435 +[47295.333271] bdbm: [EUNJI] [DATA SAFE] lpa = 200436 +[47295.333747] bdbm: [EUNJI] [DATA SAFE] lpa = 200437 +[47295.334221] bdbm: [EUNJI] [DATA SAFE] lpa = 200438 +[47295.334696] bdbm: [EUNJI] [DATA SAFE] lpa = 200439 +[47295.335171] bdbm: [EUNJI] [DATA SAFE] lpa = 200440 +[47295.335648] bdbm: [EUNJI] [DATA SAFE] lpa = 200441 +[47295.336123] bdbm: [EUNJI] [DATA SAFE] lpa = 200442 +[47295.336597] bdbm: [EUNJI] [DATA SAFE] lpa = 200443 +[47295.337071] bdbm: [EUNJI] [DATA SAFE] lpa = 200444 +[47295.337542] bdbm: [EUNJI] [DATA SAFE] lpa = 200445 +[47295.338013] bdbm: [EUNJI] [DATA SAFE] lpa = 200446 +[47295.338491] bdbm: [EUNJI] [DATA SAFE] lpa = 200447 +[47295.338961] bdbm: [EUNJI] [DATA SAFE] lpa = 200448 +[47295.339436] bdbm: [EUNJI] [DATA SAFE] lpa = 200449 +[47295.339910] bdbm: [EUNJI] [DATA SAFE] lpa = 200450 +[47295.340383] bdbm: [EUNJI] [DATA SAFE] lpa = 200451 +[47295.340859] bdbm: [EUNJI] [DATA SAFE] lpa = 200452 +[47295.341331] bdbm: [EUNJI] [DATA SAFE] lpa = 200453 +[47295.341805] bdbm: [EUNJI] [DATA SAFE] lpa = 200454 +[47295.342281] bdbm: [EUNJI] [DATA SAFE] lpa = 200455 +[47295.342751] bdbm: [EUNJI] [DATA SAFE] lpa = 200456 +[47295.343225] bdbm: [EUNJI] [DATA SAFE] lpa = 200457 +[47295.343699] bdbm: [EUNJI] [DATA SAFE] lpa = 200458 +[47295.344172] bdbm: [EUNJI] [DATA SAFE] lpa = 200459 +[47295.344646] bdbm: [EUNJI] [DATA SAFE] lpa = 200460 +[47295.345121] bdbm: [EUNJI] [DATA SAFE] lpa = 200461 +[47295.345622] bdbm: [EUNJI] [DATA SAFE] lpa = 200462 +[47295.346097] bdbm: [EUNJI] [DATA SAFE] lpa = 200463 +[47295.346572] bdbm: [EUNJI] [DATA SAFE] lpa = 200464 +[47295.347048] bdbm: [EUNJI] [DATA SAFE] lpa = 200465 +[47295.347522] bdbm: [EUNJI] [DATA SAFE] lpa = 200466 +[47295.347998] bdbm: [EUNJI] [DATA SAFE] lpa = 200467 +[47295.348472] bdbm: [EUNJI] [DATA SAFE] lpa = 200468 +[47295.348946] bdbm: [EUNJI] [DATA SAFE] lpa = 200469 +[47295.349420] bdbm: [EUNJI] [DATA SAFE] lpa = 200470 +[47295.349892] bdbm: [EUNJI] [DATA SAFE] lpa = 200471 +[47295.350366] bdbm: [EUNJI] [DATA SAFE] lpa = 200472 +[47295.350841] bdbm: [EUNJI] [DATA SAFE] lpa = 200473 +[47295.351314] bdbm: [EUNJI] [DATA SAFE] lpa = 200474 +[47295.351787] bdbm: [EUNJI] [DATA SAFE] lpa = 200475 +[47295.352262] bdbm: [EUNJI] [DATA SAFE] lpa = 200476 +[47295.352738] bdbm: [EUNJI] [DATA SAFE] lpa = 200477 +[47295.353212] bdbm: [EUNJI] [DATA SAFE] lpa = 200478 +[47295.353684] bdbm: [EUNJI] [DATA SAFE] lpa = 200479 +[47295.354156] bdbm: [EUNJI] [DATA SAFE] lpa = 200480 +[47295.354632] bdbm: [EUNJI] [DATA SAFE] lpa = 200481 +[47295.355106] bdbm: [EUNJI] [DATA SAFE] lpa = 200482 +[47295.355580] bdbm: [EUNJI] [DATA SAFE] lpa = 200483 +[47295.356054] bdbm: [EUNJI] [DATA SAFE] lpa = 200484 +[47295.356529] bdbm: [EUNJI] [DATA SAFE] lpa = 200485 +[47295.357003] bdbm: [EUNJI] [DATA SAFE] lpa = 200486 +[47295.357477] bdbm: [EUNJI] [DATA SAFE] lpa = 200487 +[47295.357953] bdbm: [EUNJI] [DATA SAFE] lpa = 200488 +[47295.358428] bdbm: [EUNJI] [DATA SAFE] lpa = 200489 +[47295.358906] bdbm: [EUNJI] [DATA SAFE] lpa = 200490 +[47295.359382] bdbm: [EUNJI] [DATA SAFE] lpa = 200491 +[47295.359856] bdbm: [EUNJI] [DATA SAFE] lpa = 200492 +[47295.360330] bdbm: [EUNJI] [DATA SAFE] lpa = 200493 +[47295.360805] bdbm: [EUNJI] [DATA SAFE] lpa = 200494 +[47295.361280] bdbm: [EUNJI] [DATA SAFE] lpa = 200495 +[47295.361765] bdbm: [EUNJI] [DATA SAFE] lpa = 200496 +[47295.362273] bdbm: [EUNJI] [DATA SAFE] lpa = 200497 +[47295.362769] bdbm: [EUNJI] [DATA SAFE] lpa = 200498 +[47295.363242] bdbm: [EUNJI] [DATA SAFE] lpa = 200499 +[47295.363729] bdbm: [EUNJI] [DATA SAFE] lpa = 200500 +[47295.364228] bdbm: [EUNJI] [DATA SAFE] lpa = 200501 +[47295.364744] bdbm: [EUNJI] [DATA SAFE] lpa = 200502 +[47295.365275] bdbm: [EUNJI] [DATA SAFE] lpa = 200503 +[47295.365786] bdbm: [EUNJI] [DATA SAFE] lpa = 200504 +[47295.366321] bdbm: [EUNJI] [DATA SAFE] lpa = 200505 +[47295.366829] bdbm: [EUNJI] [DATA SAFE] lpa = 200506 +[47295.367346] bdbm: [EUNJI] [DATA SAFE] lpa = 200507 +[47295.367881] bdbm: [EUNJI] [DATA SAFE] lpa = 200508 +[47295.368418] bdbm: [EUNJI] [DATA SAFE] lpa = 200509 +[47295.368932] bdbm: [EUNJI] [DATA SAFE] lpa = 200510 +[47295.369432] bdbm: [EUNJI] [DATA SAFE] lpa = 200511 +[47295.369901] bdbm: [EUNJI] [DATA SAFE] lpa = 200512 +[47295.370403] bdbm: [EUNJI] [DATA SAFE] lpa = 200513 +[47295.370899] bdbm: [EUNJI] [DATA SAFE] lpa = 200514 +[47295.371391] bdbm: [EUNJI] [DATA SAFE] lpa = 200515 +[47295.371860] bdbm: [EUNJI] [DATA SAFE] lpa = 200516 +[47295.372369] bdbm: [EUNJI] [DATA SAFE] lpa = 200517 +[47295.372881] bdbm: [EUNJI] [DATA SAFE] lpa = 200518 +[47295.373373] bdbm: [EUNJI] [DATA SAFE] lpa = 200519 +[47295.373849] bdbm: [EUNJI] [DATA SAFE] lpa = 200520 +[47295.374325] bdbm: [EUNJI] [DATA SAFE] lpa = 200521 +[47295.374803] bdbm: [EUNJI] [DATA SAFE] lpa = 200522 +[47295.375274] bdbm: [EUNJI] [DATA SAFE] lpa = 200523 +[47295.375749] bdbm: [EUNJI] [DATA SAFE] lpa = 200524 +[47295.376225] bdbm: [EUNJI] [DATA SAFE] lpa = 200525 +[47295.376698] bdbm: [EUNJI] [DATA SAFE] lpa = 200526 +[47295.377171] bdbm: [EUNJI] [DATA SAFE] lpa = 200527 +[47295.377643] bdbm: [EUNJI] [DATA SAFE] lpa = 200528 +[47295.378124] bdbm: [EUNJI] [DATA SAFE] lpa = 200529 +[47295.378594] bdbm: [EUNJI] [DATA SAFE] lpa = 200530 +[47295.379069] bdbm: [EUNJI] [DATA SAFE] lpa = 200531 +[47295.379570] bdbm: [EUNJI] [DATA SAFE] lpa = 200532 +[47295.380071] bdbm: [EUNJI] [DATA SAFE] lpa = 200533 +[47295.380570] bdbm: [EUNJI] [DATA SAFE] lpa = 200534 +[47295.381044] bdbm: [EUNJI] [DATA SAFE] lpa = 200535 +[47295.381528] bdbm: [EUNJI] [DATA SAFE] lpa = 200536 +[47295.382044] bdbm: [EUNJI] [DATA SAFE] lpa = 200537 +[47295.382566] bdbm: [EUNJI] [DATA SAFE] lpa = 200538 +[47295.383102] bdbm: [EUNJI] [DATA SAFE] lpa = 200539 +[47295.383620] bdbm: [EUNJI] [DATA SAFE] lpa = 200540 +[47295.384133] bdbm: [EUNJI] [DATA SAFE] lpa = 200541 +[47295.384636] bdbm: [EUNJI] [DATA SAFE] lpa = 200542 +[47295.385154] bdbm: [EUNJI] [DATA SAFE] lpa = 200543 +[47295.385710] bdbm: [EUNJI] [DATA SAFE] lpa = 200544 +[47295.386246] bdbm: [EUNJI] [DATA SAFE] lpa = 200545 +[47295.386754] bdbm: [EUNJI] [DATA SAFE] lpa = 200546 +[47295.387277] bdbm: [EUNJI] [DATA SAFE] lpa = 200547 +[47295.387788] bdbm: [EUNJI] [DATA SAFE] lpa = 200548 +[47295.388312] bdbm: [EUNJI] [DATA SAFE] lpa = 200549 +[47295.388830] bdbm: [EUNJI] [DATA SAFE] lpa = 200550 +[47295.389352] bdbm: [EUNJI] [DATA SAFE] lpa = 200551 +[47295.389872] bdbm: [EUNJI] [DATA SAFE] lpa = 200552 +[47295.390394] bdbm: [EUNJI] [DATA SAFE] lpa = 200553 +[47295.390930] bdbm: [EUNJI] [DATA SAFE] lpa = 200554 +[47295.391456] bdbm: [EUNJI] [DATA SAFE] lpa = 200555 +[47295.391964] bdbm: [EUNJI] [DATA SAFE] lpa = 200556 +[47295.392496] bdbm: [EUNJI] [DATA SAFE] lpa = 200557 +[47295.393000] bdbm: [EUNJI] [DATA SAFE] lpa = 200558 +[47295.393532] bdbm: [EUNJI] [DATA SAFE] lpa = 200559 +[47295.394045] bdbm: [EUNJI] [DATA SAFE] lpa = 200560 +[47295.394556] bdbm: [EUNJI] [DATA SAFE] lpa = 200561 +[47295.395079] bdbm: [EUNJI] [DATA SAFE] lpa = 200562 +[47295.395592] bdbm: [EUNJI] [DATA SAFE] lpa = 200563 +[47295.396115] bdbm: [EUNJI] [DATA SAFE] lpa = 200564 +[47295.396627] bdbm: [EUNJI] [DATA SAFE] lpa = 200565 +[47295.397163] bdbm: [EUNJI] [DATA SAFE] lpa = 200566 +[47295.397650] bdbm: [EUNJI] [DATA SAFE] lpa = 200567 +[47295.398155] bdbm: [EUNJI] [DATA SAFE] lpa = 200568 +[47295.398676] bdbm: [EUNJI] [DATA SAFE] lpa = 200569 +[47295.399182] bdbm: [EUNJI] [DATA SAFE] lpa = 200570 +[47295.399690] bdbm: [EUNJI] [DATA SAFE] lpa = 200571 +[47295.400209] bdbm: [EUNJI] [DATA SAFE] lpa = 200572 +[47295.400717] bdbm: [EUNJI] [DATA SAFE] lpa = 200573 +[47295.401210] bdbm: [EUNJI] [DATA SAFE] lpa = 200574 +[47295.401685] bdbm: [EUNJI] [DATA SAFE] lpa = 200575 +[47295.402184] bdbm: [EUNJI] [DATA SAFE] lpa = 200576 +[47295.402718] bdbm: [EUNJI] [DATA SAFE] lpa = 200577 +[47295.403241] bdbm: [EUNJI] [DATA SAFE] lpa = 200578 +[47295.403748] bdbm: [EUNJI] [DATA SAFE] lpa = 200579 +[47295.404301] bdbm: [EUNJI] [DATA SAFE] lpa = 200580 +[47295.404804] bdbm: [EUNJI] [DATA SAFE] lpa = 200581 +[47295.405321] bdbm: [EUNJI] [DATA SAFE] lpa = 200582 +[47295.405844] bdbm: [EUNJI] [DATA SAFE] lpa = 200583 +[47295.406365] bdbm: [EUNJI] [DATA SAFE] lpa = 200584 +[47295.406884] bdbm: [EUNJI] [DATA SAFE] lpa = 200585 +[47295.407393] bdbm: [EUNJI] [DATA SAFE] lpa = 200586 +[47295.407899] bdbm: [EUNJI] [DATA SAFE] lpa = 200587 +[47295.408420] bdbm: [EUNJI] [DATA SAFE] lpa = 200588 +[47295.408926] bdbm: [EUNJI] [DATA SAFE] lpa = 200589 +[47295.409432] bdbm: [EUNJI] [DATA SAFE] lpa = 200590 +[47295.409943] bdbm: [EUNJI] [DATA SAFE] lpa = 200591 +[47295.410462] bdbm: [EUNJI] [DATA SAFE] lpa = 200592 +[47295.410969] bdbm: [EUNJI] [DATA SAFE] lpa = 200593 +[47295.411488] bdbm: [EUNJI] [DATA SAFE] lpa = 200594 +[47295.411993] bdbm: [EUNJI] [DATA SAFE] lpa = 200595 +[47295.412498] bdbm: [EUNJI] [DATA SAFE] lpa = 200596 +[47295.413015] bdbm: [EUNJI] [DATA SAFE] lpa = 200597 +[47295.413530] bdbm: [EUNJI] [DATA SAFE] lpa = 200598 +[47295.414010] bdbm: [EUNJI] [DATA SAFE] lpa = 200599 +[47295.414491] bdbm: [EUNJI] [DATA SAFE] lpa = 200600 +[47295.414965] bdbm: [EUNJI] [DATA SAFE] lpa = 200601 +[47295.415440] bdbm: [EUNJI] [DATA SAFE] lpa = 200602 +[47295.415914] bdbm: [EUNJI] [DATA SAFE] lpa = 200603 +[47295.416392] bdbm: [EUNJI] [DATA SAFE] lpa = 200604 +[47295.416868] bdbm: [EUNJI] [DATA SAFE] lpa = 200605 +[47295.417342] bdbm: [EUNJI] [DATA SAFE] lpa = 200606 +[47295.417818] bdbm: [EUNJI] [DATA SAFE] lpa = 200607 +[47295.418297] bdbm: [EUNJI] [DATA SAFE] lpa = 200608 +[47295.418773] bdbm: [EUNJI] [DATA SAFE] lpa = 200609 +[47295.419252] bdbm: [EUNJI] [DATA SAFE] lpa = 200610 +[47295.419728] bdbm: [EUNJI] [DATA SAFE] lpa = 200611 +[47295.420202] bdbm: [EUNJI] [DATA SAFE] lpa = 200612 +[47295.420679] bdbm: [EUNJI] [DATA SAFE] lpa = 200613 +[47295.421157] bdbm: [EUNJI] [DATA SAFE] lpa = 200614 +[47295.421635] bdbm: [EUNJI] [DATA SAFE] lpa = 200615 +[47295.422110] bdbm: [EUNJI] [DATA SAFE] lpa = 200616 +[47295.422583] bdbm: [EUNJI] [DATA SAFE] lpa = 200617 +[47295.423091] bdbm: [EUNJI] [DATA SAFE] lpa = 200618 +[47295.423600] bdbm: [EUNJI] [DATA SAFE] lpa = 200619 +[47295.424111] bdbm: [EUNJI] [DATA SAFE] lpa = 200620 +[47295.424636] bdbm: [EUNJI] [DATA SAFE] lpa = 200621 +[47295.425147] bdbm: [EUNJI] [DATA SAFE] lpa = 200622 +[47295.425648] bdbm: [EUNJI] [DATA SAFE] lpa = 200623 +[47295.426159] bdbm: [EUNJI] [DATA SAFE] lpa = 200624 +[47295.426672] bdbm: [EUNJI] [DATA SAFE] lpa = 200625 +[47295.427193] bdbm: [EUNJI] [DATA SAFE] lpa = 200626 +[47295.427699] bdbm: [EUNJI] [DATA SAFE] lpa = 200627 +[47295.428209] bdbm: [EUNJI] [DATA SAFE] lpa = 200628 +[47295.428734] bdbm: [EUNJI] [DATA SAFE] lpa = 200629 +[47295.429313] bdbm: [EUNJI] [DATA SAFE] lpa = 200630 +[47295.429820] bdbm: [EUNJI] [DATA SAFE] lpa = 200631 +[47295.430328] bdbm: [EUNJI] [DATA SAFE] lpa = 200632 +[47295.430856] bdbm: [EUNJI] [DATA SAFE] lpa = 200633 +[47295.431379] bdbm: [EUNJI] [DATA SAFE] lpa = 200634 +[47295.431902] bdbm: [EUNJI] [DATA SAFE] lpa = 200635 +[47295.432420] bdbm: [EUNJI] [DATA SAFE] lpa = 200636 +[47295.432946] bdbm: [EUNJI] [DATA SAFE] lpa = 200637 +[47295.433469] bdbm: [EUNJI] [DATA SAFE] lpa = 200638 +[47295.433973] bdbm: [EUNJI] [DATA SAFE] lpa = 200639 +[47295.434475] bdbm: [EUNJI] [DATA SAFE] lpa = 200640 +[47295.434980] bdbm: [EUNJI] [DATA SAFE] lpa = 200641 +[47295.435504] bdbm: [EUNJI] [DATA SAFE] lpa = 200642 +[47295.436013] bdbm: [EUNJI] [DATA SAFE] lpa = 200643 +[47295.436536] bdbm: [EUNJI] [DATA SAFE] lpa = 200644 +[47295.437041] bdbm: [EUNJI] [DATA SAFE] lpa = 200645 +[47295.437544] bdbm: [EUNJI] [DATA SAFE] lpa = 200646 +[47295.438058] bdbm: [EUNJI] [DATA SAFE] lpa = 200647 +[47295.438560] bdbm: [EUNJI] [DATA SAFE] lpa = 200648 +[47295.439083] bdbm: [EUNJI] [DATA SAFE] lpa = 200649 +[47295.439588] bdbm: [EUNJI] [DATA SAFE] lpa = 200650 +[47295.440106] bdbm: [EUNJI] [DATA SAFE] lpa = 200651 +[47295.440612] bdbm: [EUNJI] [DATA SAFE] lpa = 200652 +[47295.441116] bdbm: [EUNJI] [DATA SAFE] lpa = 200653 +[47295.441601] bdbm: [EUNJI] [DATA SAFE] lpa = 200654 +[47295.442076] bdbm: [EUNJI] [DATA SAFE] lpa = 200655 +[47295.442547] bdbm: [EUNJI] [DATA SAFE] lpa = 200656 +[47295.443048] bdbm: [EUNJI] [DATA SAFE] lpa = 200657 +[47295.443572] bdbm: [EUNJI] [DATA SAFE] lpa = 200658 +[47295.444076] bdbm: [EUNJI] [DATA SAFE] lpa = 200659 +[47295.444555] bdbm: [EUNJI] [DATA SAFE] lpa = 200660 +[47295.445031] bdbm: [EUNJI] [DATA SAFE] lpa = 200661 +[47295.445503] bdbm: [EUNJI] [DATA SAFE] lpa = 200662 +[47295.445980] bdbm: [EUNJI] [DATA SAFE] lpa = 200663 +[47295.446457] bdbm: [EUNJI] [DATA SAFE] lpa = 200664 +[47295.446933] bdbm: [EUNJI] [DATA SAFE] lpa = 200665 +[47295.447408] bdbm: [EUNJI] [DATA SAFE] lpa = 200666 +[47295.447882] bdbm: [EUNJI] [DATA SAFE] lpa = 200667 +[47295.448354] bdbm: [EUNJI] [DATA SAFE] lpa = 200668 +[47295.448832] bdbm: [EUNJI] [DATA SAFE] lpa = 200669 +[47295.449307] bdbm: [EUNJI] [DATA SAFE] lpa = 200670 +[47295.449782] bdbm: [EUNJI] [DATA SAFE] lpa = 200671 +[47295.450259] bdbm: [EUNJI] [DATA SAFE] lpa = 200672 +[47295.450735] bdbm: [EUNJI] [DATA SAFE] lpa = 200673 +[47295.451212] bdbm: [EUNJI] [DATA SAFE] lpa = 200674 +[47295.451691] bdbm: [EUNJI] [DATA SAFE] lpa = 200675 +[47295.452166] bdbm: [EUNJI] [DATA SAFE] lpa = 200676 +[47295.452638] bdbm: [EUNJI] [DATA SAFE] lpa = 200677 +[47295.453115] bdbm: [EUNJI] [DATA SAFE] lpa = 200678 +[47295.453600] bdbm: [EUNJI] [DATA SAFE] lpa = 200679 +[47295.454073] bdbm: [EUNJI] [DATA SAFE] lpa = 200680 +[47295.454548] bdbm: [EUNJI] [DATA SAFE] lpa = 200681 +[47295.455023] bdbm: [EUNJI] [DATA SAFE] lpa = 200682 +[47295.455498] bdbm: [EUNJI] [DATA SAFE] lpa = 200683 +[47295.455974] bdbm: [EUNJI] [DATA SAFE] lpa = 200684 +[47295.456449] bdbm: [EUNJI] [DATA SAFE] lpa = 200685 +[47295.456924] bdbm: [EUNJI] [DATA SAFE] lpa = 200686 +[47295.457398] bdbm: [EUNJI] [DATA SAFE] lpa = 200687 +[47295.457874] bdbm: [EUNJI] [DATA SAFE] lpa = 200688 +[47295.458349] bdbm: [EUNJI] [DATA SAFE] lpa = 200689 +[47295.458823] bdbm: [EUNJI] [DATA SAFE] lpa = 200690 +[47295.459298] bdbm: [EUNJI] [DATA SAFE] lpa = 200691 +[47295.459774] bdbm: [EUNJI] [DATA SAFE] lpa = 200692 +[47295.460248] bdbm: [EUNJI] [DATA SAFE] lpa = 200693 +[47295.460723] bdbm: [EUNJI] [DATA SAFE] lpa = 200694 +[47295.461201] bdbm: [EUNJI] [DATA SAFE] lpa = 200695 +[47295.461674] bdbm: [EUNJI] [DATA SAFE] lpa = 200696 +[47295.462150] bdbm: [EUNJI] [DATA SAFE] lpa = 200697 +[47295.462625] bdbm: [EUNJI] [DATA SAFE] lpa = 200698 +[47295.463099] bdbm: [EUNJI] [DATA SAFE] lpa = 200699 +[47295.463574] bdbm: [EUNJI] [DATA SAFE] lpa = 200700 +[47295.464048] bdbm: [EUNJI] [DATA SAFE] lpa = 200701 +[47295.464522] bdbm: [EUNJI] [DATA SAFE] lpa = 200702 +[47295.464997] bdbm: [EUNJI] [DATA SAFE] lpa = 200703 +[47295.465470] bdbm: [EUNJI] [DATA SAFE] lpa = 200704 +[47295.465943] bdbm: [EUNJI] [DATA SAFE] lpa = 200705 +[47295.466416] bdbm: [EUNJI] [DATA SAFE] lpa = 200706 +[47295.466890] bdbm: [EUNJI] [DATA SAFE] lpa = 200707 +[47295.467363] bdbm: [EUNJI] [DATA SAFE] lpa = 200708 +[47295.467838] bdbm: [EUNJI] [DATA SAFE] lpa = 200709 +[47295.468311] bdbm: [EUNJI] [DATA SAFE] lpa = 200710 +[47295.468785] bdbm: [EUNJI] [DATA SAFE] lpa = 200711 +[47295.469259] bdbm: [EUNJI] [DATA SAFE] lpa = 200712 +[47295.469735] bdbm: [EUNJI] [DATA SAFE] lpa = 200713 +[47295.470210] bdbm: [EUNJI] [DATA SAFE] lpa = 200714 +[47295.470684] bdbm: [EUNJI] [DATA SAFE] lpa = 200715 +[47295.471158] bdbm: [EUNJI] [DATA SAFE] lpa = 200716 +[47295.471632] bdbm: [EUNJI] [DATA SAFE] lpa = 200717 +[47295.472108] bdbm: [EUNJI] [DATA SAFE] lpa = 200718 +[47295.472582] bdbm: [EUNJI] [DATA SAFE] lpa = 200719 +[47295.473056] bdbm: [EUNJI] [DATA SAFE] lpa = 200720 +[47295.473531] bdbm: [EUNJI] [DATA SAFE] lpa = 200721 +[47295.474004] bdbm: [EUNJI] [DATA SAFE] lpa = 200722 +[47295.474481] bdbm: [EUNJI] [DATA SAFE] lpa = 200723 +[47295.474956] bdbm: [EUNJI] [DATA SAFE] lpa = 200724 +[47295.475431] bdbm: [EUNJI] [DATA SAFE] lpa = 200725 +[47295.475906] bdbm: [EUNJI] [DATA SAFE] lpa = 200726 +[47295.476381] bdbm: [EUNJI] [DATA SAFE] lpa = 200727 +[47295.476856] bdbm: [EUNJI] [DATA SAFE] lpa = 200728 +[47295.477330] bdbm: [EUNJI] [DATA SAFE] lpa = 200729 +[47295.477800] bdbm: [EUNJI] [DATA SAFE] lpa = 200730 +[47295.478274] bdbm: [EUNJI] [DATA SAFE] lpa = 200731 +[47295.478749] bdbm: [EUNJI] [DATA SAFE] lpa = 200732 +[47295.479225] bdbm: [EUNJI] [DATA SAFE] lpa = 200733 +[47295.479700] bdbm: [EUNJI] [DATA SAFE] lpa = 200734 +[47295.480175] bdbm: [EUNJI] [DATA SAFE] lpa = 200735 +[47295.480646] bdbm: [EUNJI] [DATA SAFE] lpa = 200736 +[47295.481121] bdbm: [EUNJI] [DATA SAFE] lpa = 200737 +[47295.481624] bdbm: [EUNJI] [DATA SAFE] lpa = 200738 +[47295.482099] bdbm: [EUNJI] [DATA SAFE] lpa = 200739 +[47295.482575] bdbm: [EUNJI] [DATA SAFE] lpa = 200740 +[47295.483051] bdbm: [EUNJI] [DATA SAFE] lpa = 200741 +[47295.483526] bdbm: [EUNJI] [DATA SAFE] lpa = 200742 +[47295.484003] bdbm: [EUNJI] [DATA SAFE] lpa = 200743 +[47295.484478] bdbm: [EUNJI] [DATA SAFE] lpa = 200744 +[47295.484953] bdbm: [EUNJI] [DATA SAFE] lpa = 200745 +[47295.485427] bdbm: [EUNJI] [DATA SAFE] lpa = 200746 +[47295.485902] bdbm: [EUNJI] [DATA SAFE] lpa = 200747 +[47295.486377] bdbm: [EUNJI] [DATA SAFE] lpa = 200748 +[47295.486852] bdbm: [EUNJI] [DATA SAFE] lpa = 200749 +[47295.487326] bdbm: [EUNJI] [DATA SAFE] lpa = 200750 +[47295.487800] bdbm: [EUNJI] [DATA SAFE] lpa = 200751 +[47295.488275] bdbm: [EUNJI] [DATA SAFE] lpa = 200752 +[47295.488750] bdbm: [EUNJI] [DATA SAFE] lpa = 200753 +[47295.489225] bdbm: [EUNJI] [DATA SAFE] lpa = 200754 +[47295.489699] bdbm: [EUNJI] [DATA SAFE] lpa = 200755 +[47295.490176] bdbm: [EUNJI] [DATA SAFE] lpa = 200756 +[47295.490652] bdbm: [EUNJI] [DATA SAFE] lpa = 200757 +[47295.491126] bdbm: [EUNJI] [DATA SAFE] lpa = 200758 +[47295.491602] bdbm: [EUNJI] [DATA SAFE] lpa = 200759 +[47295.492076] bdbm: [EUNJI] [DATA SAFE] lpa = 200760 +[47295.492553] bdbm: [EUNJI] [DATA SAFE] lpa = 200761 +[47295.493027] bdbm: [EUNJI] [DATA SAFE] lpa = 200762 +[47295.493503] bdbm: [EUNJI] [DATA SAFE] lpa = 200763 +[47295.493974] bdbm: [EUNJI] [DATA SAFE] lpa = 200764 +[47295.494449] bdbm: [EUNJI] [DATA SAFE] lpa = 200765 +[47295.494920] bdbm: [EUNJI] [DATA SAFE] lpa = 200766 +[47295.495393] bdbm: [EUNJI] [DATA SAFE] lpa = 200767 +[47295.495868] bdbm: [EUNJI] [DATA SAFE] lpa = 200768 +[47295.496341] bdbm: [EUNJI] [DATA SAFE] lpa = 200769 +[47295.496814] bdbm: [EUNJI] [DATA SAFE] lpa = 200770 +[47295.497286] bdbm: [EUNJI] [DATA SAFE] lpa = 200771 +[47295.497761] bdbm: [EUNJI] [DATA SAFE] lpa = 200772 +[47295.498232] bdbm: [EUNJI] [DATA SAFE] lpa = 200773 +[47295.498705] bdbm: [EUNJI] [DATA SAFE] lpa = 200774 +[47295.499180] bdbm: [EUNJI] [DATA SAFE] lpa = 200775 +[47295.499654] bdbm: [EUNJI] [DATA SAFE] lpa = 200776 +[47295.500129] bdbm: [EUNJI] [DATA SAFE] lpa = 200777 +[47295.500602] bdbm: [EUNJI] [DATA SAFE] lpa = 200778 +[47295.501076] bdbm: [EUNJI] [DATA SAFE] lpa = 200779 +[47295.501549] bdbm: [EUNJI] [DATA SAFE] lpa = 200780 +[47295.502028] bdbm: [EUNJI] [DATA SAFE] lpa = 200781 +[47295.502503] bdbm: [EUNJI] [DATA SAFE] lpa = 200782 +[47295.502978] bdbm: [EUNJI] [DATA SAFE] lpa = 200783 +[47295.503452] bdbm: [EUNJI] [DATA SAFE] lpa = 200784 +[47295.503926] bdbm: [EUNJI] [DATA SAFE] lpa = 200785 +[47295.504400] bdbm: [EUNJI] [DATA SAFE] lpa = 200786 +[47295.504874] bdbm: [EUNJI] [DATA SAFE] lpa = 200787 +[47295.505349] bdbm: [EUNJI] [DATA SAFE] lpa = 200788 +[47295.505827] bdbm: [EUNJI] [DATA SAFE] lpa = 200789 +[47295.506300] bdbm: [EUNJI] [DATA SAFE] lpa = 200790 +[47295.506775] bdbm: [EUNJI] [DATA SAFE] lpa = 200791 +[47295.507250] bdbm: [EUNJI] [DATA SAFE] lpa = 200792 +[47295.507724] bdbm: [EUNJI] [DATA SAFE] lpa = 200793 +[47295.508195] bdbm: [EUNJI] [DATA SAFE] lpa = 200794 +[47295.508669] bdbm: [EUNJI] [DATA SAFE] lpa = 200795 +[47295.509143] bdbm: [EUNJI] [DATA SAFE] lpa = 200796 +[47295.509631] bdbm: [EUNJI] [DATA SAFE] lpa = 200797 +[47295.510110] bdbm: [EUNJI] [DATA SAFE] lpa = 200798 +[47295.510585] bdbm: [EUNJI] [DATA SAFE] lpa = 200799 +[47295.511060] bdbm: [EUNJI] [DATA SAFE] lpa = 200800 +[47295.511535] bdbm: [EUNJI] [DATA SAFE] lpa = 200801 +[47295.512010] bdbm: [EUNJI] [DATA SAFE] lpa = 200802 +[47295.512485] bdbm: [EUNJI] [DATA SAFE] lpa = 200803 +[47295.512959] bdbm: [EUNJI] [DATA SAFE] lpa = 200804 +[47295.513434] bdbm: [EUNJI] [DATA SAFE] lpa = 200805 +[47295.513907] bdbm: [EUNJI] [DATA SAFE] lpa = 200806 +[47295.514382] bdbm: [EUNJI] [DATA SAFE] lpa = 200807 +[47295.514857] bdbm: [EUNJI] [DATA SAFE] lpa = 200808 +[47295.515331] bdbm: [EUNJI] [DATA SAFE] lpa = 200809 +[47295.515805] bdbm: [EUNJI] [DATA SAFE] lpa = 200810 +[47295.516281] bdbm: [EUNJI] [DATA SAFE] lpa = 200811 +[47295.516754] bdbm: [EUNJI] [DATA SAFE] lpa = 200812 +[47295.517229] bdbm: [EUNJI] [DATA SAFE] lpa = 200813 +[47295.517703] bdbm: [EUNJI] [DATA SAFE] lpa = 200814 +[47295.518179] bdbm: [EUNJI] [DATA SAFE] lpa = 200815 +[47295.518654] bdbm: [EUNJI] [DATA SAFE] lpa = 200816 +[47295.519130] bdbm: [EUNJI] [DATA SAFE] lpa = 200817 +[47295.519604] bdbm: [EUNJI] [DATA SAFE] lpa = 200818 +[47295.520080] bdbm: [EUNJI] [DATA SAFE] lpa = 200819 +[47295.520553] bdbm: [EUNJI] [DATA SAFE] lpa = 200820 +[47295.521028] bdbm: [EUNJI] [DATA SAFE] lpa = 200821 +[47295.521501] bdbm: [EUNJI] [DATA SAFE] lpa = 200822 +[47295.521976] bdbm: [EUNJI] [DATA SAFE] lpa = 200823 +[47295.522451] bdbm: [EUNJI] [DATA SAFE] lpa = 200824 +[47295.522926] bdbm: [EUNJI] [DATA SAFE] lpa = 200825 +[47295.523400] bdbm: [EUNJI] [DATA SAFE] lpa = 200826 +[47295.523869] bdbm: [EUNJI] [DATA SAFE] lpa = 200827 +[47295.524340] bdbm: [EUNJI] [DATA SAFE] lpa = 200828 +[47295.524814] bdbm: [EUNJI] [DATA SAFE] lpa = 200829 +[47295.525288] bdbm: [EUNJI] [DATA SAFE] lpa = 200830 +[47295.525759] bdbm: [EUNJI] [DATA SAFE] lpa = 200831 +[47295.526229] bdbm: [EUNJI] [DATA SAFE] lpa = 200832 +[47295.526704] bdbm: [EUNJI] [DATA SAFE] lpa = 200833 +[47295.527177] bdbm: [EUNJI] [DATA SAFE] lpa = 200834 +[47295.527651] bdbm: [EUNJI] [DATA SAFE] lpa = 200835 +[47295.528126] bdbm: [EUNJI] [DATA SAFE] lpa = 200836 +[47295.528600] bdbm: [EUNJI] [DATA SAFE] lpa = 200837 +[47295.529075] bdbm: [EUNJI] [DATA SAFE] lpa = 200838 +[47295.529550] bdbm: [EUNJI] [DATA SAFE] lpa = 200839 +[47295.530025] bdbm: [EUNJI] [DATA SAFE] lpa = 200840 +[47295.530501] bdbm: [EUNJI] [DATA SAFE] lpa = 200841 +[47295.530976] bdbm: [EUNJI] [DATA SAFE] lpa = 200842 +[47295.531450] bdbm: [EUNJI] [DATA SAFE] lpa = 200843 +[47295.531924] bdbm: [EUNJI] [DATA SAFE] lpa = 200844 +[47295.532397] bdbm: [EUNJI] [DATA SAFE] lpa = 200845 +[47295.532870] bdbm: [EUNJI] [DATA SAFE] lpa = 200846 +[47295.533345] bdbm: [EUNJI] [DATA SAFE] lpa = 200847 +[47295.533821] bdbm: [EUNJI] [DATA SAFE] lpa = 200848 +[47295.534296] bdbm: [EUNJI] [DATA SAFE] lpa = 200849 +[47295.534771] bdbm: [EUNJI] [DATA SAFE] lpa = 200850 +[47295.535245] bdbm: [EUNJI] [DATA SAFE] lpa = 200851 +[47295.535720] bdbm: [EUNJI] [DATA SAFE] lpa = 200852 +[47295.536194] bdbm: [EUNJI] [DATA SAFE] lpa = 200853 +[47295.536670] bdbm: [EUNJI] [DATA SAFE] lpa = 200854 +[47295.537142] bdbm: [EUNJI] [DATA SAFE] lpa = 200855 +[47295.537629] bdbm: [EUNJI] [DATA SAFE] lpa = 200856 +[47295.538106] bdbm: [EUNJI] [DATA SAFE] lpa = 200857 +[47295.538583] bdbm: [EUNJI] [DATA SAFE] lpa = 200858 +[47295.539058] bdbm: [EUNJI] [DATA SAFE] lpa = 200859 +[47295.539532] bdbm: [EUNJI] [DATA SAFE] lpa = 200860 +[47295.540007] bdbm: [EUNJI] [DATA SAFE] lpa = 200861 +[47295.540482] bdbm: [EUNJI] [DATA SAFE] lpa = 200862 +[47295.540954] bdbm: [EUNJI] [DATA SAFE] lpa = 200863 +[47295.541428] bdbm: [EUNJI] [DATA SAFE] lpa = 200864 +[47295.541904] bdbm: [EUNJI] [DATA SAFE] lpa = 200865 +[47295.542378] bdbm: [EUNJI] [DATA SAFE] lpa = 200866 +[47295.542852] bdbm: [EUNJI] [DATA SAFE] lpa = 200867 +[47295.543326] bdbm: [EUNJI] [DATA SAFE] lpa = 200868 +[47295.543800] bdbm: [EUNJI] [DATA SAFE] lpa = 200869 +[47295.544274] bdbm: [EUNJI] [DATA SAFE] lpa = 200870 +[47295.544748] bdbm: [EUNJI] [DATA SAFE] lpa = 200871 +[47295.545221] bdbm: [EUNJI] [DATA SAFE] lpa = 200872 +[47295.545699] bdbm: [EUNJI] [DATA SAFE] lpa = 200873 +[47295.546176] bdbm: [EUNJI] [DATA SAFE] lpa = 200874 +[47295.546652] bdbm: [EUNJI] [DATA SAFE] lpa = 200875 +[47295.547129] bdbm: [EUNJI] [DATA SAFE] lpa = 200876 +[47295.547601] bdbm: [EUNJI] [DATA SAFE] lpa = 200877 +[47295.548077] bdbm: [EUNJI] [DATA SAFE] lpa = 200878 +[47295.548552] bdbm: [EUNJI] [DATA SAFE] lpa = 200879 +[47295.549027] bdbm: [EUNJI] [DATA SAFE] lpa = 200880 +[47295.549504] bdbm: [EUNJI] [DATA SAFE] lpa = 200881 +[47295.549978] bdbm: [EUNJI] [DATA SAFE] lpa = 200882 +[47295.550452] bdbm: [EUNJI] [DATA SAFE] lpa = 200883 +[47295.550927] bdbm: [EUNJI] [DATA SAFE] lpa = 200884 +[47295.551402] bdbm: [EUNJI] [DATA SAFE] lpa = 200885 +[47295.551876] bdbm: [EUNJI] [DATA SAFE] lpa = 200886 +[47295.552352] bdbm: [EUNJI] [DATA SAFE] lpa = 200887 +[47295.552826] bdbm: [EUNJI] [DATA SAFE] lpa = 200888 +[47295.553299] bdbm: [EUNJI] [DATA SAFE] lpa = 200889 +[47295.553770] bdbm: [EUNJI] [DATA SAFE] lpa = 200890 +[47295.554244] bdbm: [EUNJI] [DATA SAFE] lpa = 200891 +[47295.554717] bdbm: [EUNJI] [DATA SAFE] lpa = 200892 +[47295.555191] bdbm: [EUNJI] [DATA SAFE] lpa = 200893 +[47295.555660] bdbm: [EUNJI] [DATA SAFE] lpa = 200894 +[47295.556134] bdbm: [EUNJI] [DATA SAFE] lpa = 200895 +[47295.556609] bdbm: [EUNJI] [DATA SAFE] lpa = 200896 +[47295.557083] bdbm: [EUNJI] [DATA SAFE] lpa = 200897 +[47295.557557] bdbm: [EUNJI] [DATA SAFE] lpa = 200898 +[47295.558161] bdbm: [EUNJI] [DATA SAFE] lpa = 200899 +[47295.558635] bdbm: [EUNJI] [DATA SAFE] lpa = 200900 +[47295.559109] bdbm: [EUNJI] [DATA SAFE] lpa = 200901 +[47295.559584] bdbm: [EUNJI] [DATA SAFE] lpa = 200902 +[47295.560058] bdbm: [EUNJI] [DATA SAFE] lpa = 200903 +[47295.560531] bdbm: [EUNJI] [DATA SAFE] lpa = 200904 +[47295.561005] bdbm: [EUNJI] [DATA SAFE] lpa = 200905 +[47295.561478] bdbm: [EUNJI] [DATA SAFE] lpa = 200906 +[47295.561952] bdbm: [EUNJI] [DATA SAFE] lpa = 200907 +[47295.562426] bdbm: [EUNJI] [DATA SAFE] lpa = 200908 +[47295.562900] bdbm: [EUNJI] [DATA SAFE] lpa = 200909 +[47295.563374] bdbm: [EUNJI] [DATA SAFE] lpa = 200910 +[47295.563847] bdbm: [EUNJI] [DATA SAFE] lpa = 200911 +[47295.564323] bdbm: [EUNJI] [DATA SAFE] lpa = 200912 +[47295.564800] bdbm: [EUNJI] [DATA SAFE] lpa = 200913 +[47295.565271] bdbm: [EUNJI] [DATA SAFE] lpa = 200914 +[47295.565749] bdbm: [EUNJI] [DATA SAFE] lpa = 200915 +[47295.566231] bdbm: [EUNJI] [DATA SAFE] lpa = 200916 +[47295.566703] bdbm: [EUNJI] [DATA SAFE] lpa = 200917 +[47295.567178] bdbm: [EUNJI] [DATA SAFE] lpa = 200918 +[47295.567650] bdbm: [EUNJI] [DATA SAFE] lpa = 200919 +[47295.568136] bdbm: [EUNJI] [DATA SAFE] lpa = 200920 +[47295.568648] bdbm: [EUNJI] [DATA SAFE] lpa = 200921 +[47295.569152] bdbm: [EUNJI] [DATA SAFE] lpa = 200922 +[47295.569647] bdbm: [EUNJI] [DATA SAFE] lpa = 200923 +[47295.570138] bdbm: [EUNJI] [DATA SAFE] lpa = 200924 +[47295.570609] bdbm: [EUNJI] [DATA SAFE] lpa = 200925 +[47295.571093] bdbm: [EUNJI] [DATA SAFE] lpa = 200926 +[47295.571581] bdbm: [EUNJI] [DATA SAFE] lpa = 200927 +[47295.572091] bdbm: [EUNJI] [DATA SAFE] lpa = 200928 +[47295.572607] bdbm: [EUNJI] [DATA SAFE] lpa = 200929 +[47295.573080] bdbm: [EUNJI] [DATA SAFE] lpa = 200930 +[47295.573551] bdbm: [EUNJI] [DATA SAFE] lpa = 200931 +[47295.574059] bdbm: [EUNJI] [DATA SAFE] lpa = 200932 +[47295.574595] bdbm: [EUNJI] [DATA SAFE] lpa = 200933 +[47295.575125] bdbm: [EUNJI] [DATA SAFE] lpa = 200934 +[47295.575637] bdbm: [EUNJI] [DATA SAFE] lpa = 200935 +[47295.576161] bdbm: [EUNJI] [DATA SAFE] lpa = 200936 +[47295.576704] bdbm: [EUNJI] [DATA SAFE] lpa = 200937 +[47295.577185] bdbm: [EUNJI] [DATA SAFE] lpa = 200938 +[47295.577660] bdbm: [EUNJI] [DATA SAFE] lpa = 200939 +[47295.578136] bdbm: [EUNJI] [DATA SAFE] lpa = 200940 +[47295.578637] bdbm: [EUNJI] [DATA SAFE] lpa = 200941 +[47295.579168] bdbm: [EUNJI] [DATA SAFE] lpa = 200942 +[47295.579679] bdbm: [EUNJI] [DATA SAFE] lpa = 200943 +[47295.580215] bdbm: [EUNJI] [DATA SAFE] lpa = 200944 +[47295.580749] bdbm: [EUNJI] [DATA SAFE] lpa = 200945 +[47295.581253] bdbm: [EUNJI] [DATA SAFE] lpa = 200946 +[47295.581763] bdbm: [EUNJI] [DATA SAFE] lpa = 200947 +[47295.582298] bdbm: [EUNJI] [DATA SAFE] lpa = 200948 +[47295.582821] bdbm: [EUNJI] [DATA SAFE] lpa = 200949 +[47295.583356] bdbm: [EUNJI] [DATA SAFE] lpa = 200950 +[47295.583868] bdbm: [EUNJI] [DATA SAFE] lpa = 200951 +[47295.584376] bdbm: [EUNJI] [DATA SAFE] lpa = 200952 +[47295.584910] bdbm: [EUNJI] [DATA SAFE] lpa = 200953 +[47295.585426] bdbm: [EUNJI] [DATA SAFE] lpa = 200954 +[47295.585949] bdbm: [EUNJI] [DATA SAFE] lpa = 200955 +[47295.586457] bdbm: [EUNJI] [DATA SAFE] lpa = 200956 +[47295.586965] bdbm: [EUNJI] [DATA SAFE] lpa = 200957 +[47295.587499] bdbm: [EUNJI] [DATA SAFE] lpa = 200958 +[47295.588005] bdbm: [EUNJI] [DATA SAFE] lpa = 200959 +[47295.588512] bdbm: [EUNJI] [DATA SAFE] lpa = 200960 +[47295.589015] bdbm: [EUNJI] [DATA SAFE] lpa = 200961 +[47295.589534] bdbm: [EUNJI] [DATA SAFE] lpa = 200962 +[47295.590041] bdbm: [EUNJI] [DATA SAFE] lpa = 200963 +[47295.590545] bdbm: [EUNJI] [DATA SAFE] lpa = 200964 +[47295.591050] bdbm: [EUNJI] [DATA SAFE] lpa = 200965 +[47295.591555] bdbm: [EUNJI] [DATA SAFE] lpa = 200966 +[47295.592059] bdbm: [EUNJI] [DATA SAFE] lpa = 200967 +[47295.592563] bdbm: [EUNJI] [DATA SAFE] lpa = 200968 +[47295.593068] bdbm: [EUNJI] [DATA SAFE] lpa = 200969 +[47295.593579] bdbm: [EUNJI] [DATA SAFE] lpa = 200970 +[47295.594109] bdbm: [EUNJI] [DATA SAFE] lpa = 200971 +[47295.594602] bdbm: [EUNJI] [DATA SAFE] lpa = 200972 +[47295.595072] bdbm: [EUNJI] [DATA SAFE] lpa = 200973 +[47295.595543] bdbm: [EUNJI] [DATA SAFE] lpa = 200974 +[47295.596063] bdbm: [EUNJI] [DATA SAFE] lpa = 200975 +[47295.596565] bdbm: [EUNJI] [DATA SAFE] lpa = 200976 +[47295.597039] bdbm: [EUNJI] [DATA SAFE] lpa = 200977 +[47295.597508] bdbm: [EUNJI] [DATA SAFE] lpa = 200978 +[47295.598028] bdbm: [EUNJI] [DATA SAFE] lpa = 200979 +[47295.598550] bdbm: [EUNJI] [DATA SAFE] lpa = 200980 +[47295.599057] bdbm: [EUNJI] [DATA SAFE] lpa = 200981 +[47295.599576] bdbm: [EUNJI] [DATA SAFE] lpa = 200982 +[47295.600096] bdbm: [EUNJI] [DATA SAFE] lpa = 200983 +[47295.600648] bdbm: [EUNJI] [DATA SAFE] lpa = 200984 +[47295.601215] bdbm: [EUNJI] [DATA SAFE] lpa = 200985 +[47295.601768] bdbm: [EUNJI] [DATA SAFE] lpa = 200986 +[47295.602276] bdbm: [EUNJI] [DATA SAFE] lpa = 200987 +[47295.602786] bdbm: [EUNJI] [DATA SAFE] lpa = 200988 +[47295.603308] bdbm: [EUNJI] [DATA SAFE] lpa = 200989 +[47295.603818] bdbm: [EUNJI] [DATA SAFE] lpa = 200990 +[47295.604340] bdbm: [EUNJI] [DATA SAFE] lpa = 200991 +[47295.604846] bdbm: [EUNJI] [DATA SAFE] lpa = 200992 +[47295.605367] bdbm: [EUNJI] [DATA SAFE] lpa = 200993 +[47295.605874] bdbm: [EUNJI] [DATA SAFE] lpa = 200994 +[47295.606382] bdbm: [EUNJI] [DATA SAFE] lpa = 200995 +[47295.606890] bdbm: [EUNJI] [DATA SAFE] lpa = 200996 +[47295.607411] bdbm: [EUNJI] [DATA SAFE] lpa = 200997 +[47295.607918] bdbm: [EUNJI] [DATA SAFE] lpa = 200998 +[47295.608443] bdbm: [EUNJI] [DATA SAFE] lpa = 200999 +[47295.608991] bdbm: [EUNJI] [DATA SAFE] lpa = 201000 +[47295.609542] bdbm: [EUNJI] [DATA SAFE] lpa = 201001 +[47295.610101] bdbm: [EUNJI] [DATA SAFE] lpa = 201002 +[47295.610611] bdbm: [EUNJI] [DATA SAFE] lpa = 201003 +[47295.611120] bdbm: [EUNJI] [DATA SAFE] lpa = 201004 +[47295.611629] bdbm: [EUNJI] [DATA SAFE] lpa = 201005 +[47295.612137] bdbm: [EUNJI] [DATA SAFE] lpa = 201006 +[47295.612646] bdbm: [EUNJI] [DATA SAFE] lpa = 201007 +[47295.613155] bdbm: [EUNJI] [DATA SAFE] lpa = 201008 +[47295.613635] bdbm: [EUNJI] [DATA SAFE] lpa = 201009 +[47295.614117] bdbm: [EUNJI] [DATA SAFE] lpa = 201010 +[47295.614596] bdbm: [EUNJI] [DATA SAFE] lpa = 201011 +[47295.615072] bdbm: [EUNJI] [DATA SAFE] lpa = 201012 +[47295.615550] bdbm: [EUNJI] [DATA SAFE] lpa = 201013 +[47295.616027] bdbm: [EUNJI] [DATA SAFE] lpa = 201014 +[47295.616505] bdbm: [EUNJI] [DATA SAFE] lpa = 201015 +[47295.616982] bdbm: [EUNJI] [DATA SAFE] lpa = 201016 +[47295.617459] bdbm: [EUNJI] [DATA SAFE] lpa = 201017 +[47295.617936] bdbm: [EUNJI] [DATA SAFE] lpa = 201018 +[47295.618408] bdbm: [EUNJI] [DATA SAFE] lpa = 201019 +[47295.618880] bdbm: [EUNJI] [DATA SAFE] lpa = 201020 +[47295.619351] bdbm: [EUNJI] [DATA SAFE] lpa = 201021 +[47295.619822] bdbm: [EUNJI] [DATA SAFE] lpa = 201022 +[47295.620296] bdbm: [EUNJI] [DATA SAFE] lpa = 201023 +[47295.620767] bdbm: [EUNJI] [DATA SAFE] lpa = 201024 +[47295.621243] bdbm: [EUNJI] [DATA SAFE] lpa = 201025 +[47295.621716] bdbm: [EUNJI] [DATA SAFE] lpa = 201026 +[47295.622186] bdbm: [EUNJI] [DATA SAFE] lpa = 201027 +[47295.622657] bdbm: [EUNJI] [DATA SAFE] lpa = 201028 +[47295.623135] bdbm: [EUNJI] [DATA SAFE] lpa = 201029 +[47295.623606] bdbm: [EUNJI] [DATA SAFE] lpa = 201030 +[47295.624077] bdbm: [EUNJI] [DATA SAFE] lpa = 201031 +[47295.624547] bdbm: [EUNJI] [DATA SAFE] lpa = 201032 +[47295.625019] bdbm: [EUNJI] [DATA SAFE] lpa = 201033 +[47295.625494] bdbm: [EUNJI] [DATA SAFE] lpa = 201034 +[47295.625969] bdbm: [EUNJI] [DATA SAFE] lpa = 201035 +[47295.626442] bdbm: [EUNJI] [DATA SAFE] lpa = 201036 +[47295.626915] bdbm: [EUNJI] [DATA SAFE] lpa = 201037 +[47295.627386] bdbm: [EUNJI] [DATA SAFE] lpa = 201038 +[47295.627860] bdbm: [EUNJI] [DATA SAFE] lpa = 201039 +[47295.628333] bdbm: [EUNJI] [DATA SAFE] lpa = 201040 +[47295.628807] bdbm: [EUNJI] [DATA SAFE] lpa = 201041 +[47295.629280] bdbm: [EUNJI] [DATA SAFE] lpa = 201042 +[47295.629754] bdbm: [EUNJI] [DATA SAFE] lpa = 201043 +[47295.630230] bdbm: [EUNJI] [DATA SAFE] lpa = 201044 +[47295.630707] bdbm: [EUNJI] [DATA SAFE] lpa = 201045 +[47295.631183] bdbm: [EUNJI] [DATA SAFE] lpa = 201046 +[47295.631661] bdbm: [EUNJI] [DATA SAFE] lpa = 201047 +[47295.632137] bdbm: [EUNJI] [DATA SAFE] lpa = 201048 +[47295.632616] bdbm: [EUNJI] [DATA SAFE] lpa = 201049 +[47295.633087] bdbm: [EUNJI] [DATA SAFE] lpa = 201050 +[47295.633561] bdbm: [EUNJI] [DATA SAFE] lpa = 201051 +[47295.634045] bdbm: [EUNJI] [DATA SAFE] lpa = 201052 +[47295.634517] bdbm: [EUNJI] [DATA SAFE] lpa = 201053 +[47295.634989] bdbm: [EUNJI] [DATA SAFE] lpa = 201054 +[47295.635466] bdbm: [EUNJI] [DATA SAFE] lpa = 201055 +[47295.635942] bdbm: [EUNJI] [DATA SAFE] lpa = 201056 +[47295.636416] bdbm: [EUNJI] [DATA SAFE] lpa = 201057 +[47295.636893] bdbm: [EUNJI] [DATA SAFE] lpa = 201058 +[47295.637368] bdbm: [EUNJI] [DATA SAFE] lpa = 201059 +[47295.637845] bdbm: [EUNJI] [DATA SAFE] lpa = 201060 +[47295.638321] bdbm: [EUNJI] [DATA SAFE] lpa = 201061 +[47295.638794] bdbm: [EUNJI] [DATA SAFE] lpa = 201062 +[47295.639270] bdbm: [EUNJI] [DATA SAFE] lpa = 201063 +[47295.639748] bdbm: [EUNJI] [DATA SAFE] lpa = 201064 +[47295.640223] bdbm: [EUNJI] [DATA SAFE] lpa = 201065 +[47295.640701] bdbm: [EUNJI] [DATA SAFE] lpa = 201066 +[47295.641177] bdbm: [EUNJI] [DATA SAFE] lpa = 201067 +[47295.641651] bdbm: [EUNJI] [DATA SAFE] lpa = 201068 +[47295.642128] bdbm: [EUNJI] [DATA SAFE] lpa = 201069 +[47295.642605] bdbm: [EUNJI] [DATA SAFE] lpa = 201070 +[47295.643084] bdbm: [EUNJI] [DATA SAFE] lpa = 201071 +[47295.643560] bdbm: [EUNJI] [DATA SAFE] lpa = 201072 +[47295.644037] bdbm: [EUNJI] [DATA SAFE] lpa = 201073 +[47295.644513] bdbm: [EUNJI] [DATA SAFE] lpa = 201074 +[47295.644990] bdbm: [EUNJI] [DATA SAFE] lpa = 201075 +[47295.645468] bdbm: [EUNJI] [DATA SAFE] lpa = 201076 +[47295.645944] bdbm: [EUNJI] [DATA SAFE] lpa = 201077 +[47295.646420] bdbm: [EUNJI] [DATA SAFE] lpa = 201078 +[47295.646898] bdbm: [EUNJI] [DATA SAFE] lpa = 201079 +[47295.647373] bdbm: [EUNJI] [DATA SAFE] lpa = 201080 +[47295.647849] bdbm: [EUNJI] [DATA SAFE] lpa = 201081 +[47295.648320] bdbm: [EUNJI] [DATA SAFE] lpa = 201082 +[47295.648794] bdbm: [EUNJI] [DATA SAFE] lpa = 201083 +[47295.649266] bdbm: [EUNJI] [DATA SAFE] lpa = 201084 +[47295.649738] bdbm: [EUNJI] [DATA SAFE] lpa = 201085 +[47295.650211] bdbm: [EUNJI] [DATA SAFE] lpa = 201086 +[47295.650682] bdbm: [EUNJI] [DATA SAFE] lpa = 201087 +[47295.651152] bdbm: [EUNJI] [DATA SAFE] lpa = 201088 +[47295.651623] bdbm: [EUNJI] [DATA SAFE] lpa = 201089 +[47295.652095] bdbm: [EUNJI] [DATA SAFE] lpa = 201090 +[47295.652569] bdbm: [EUNJI] [DATA SAFE] lpa = 201091 +[47295.653042] bdbm: [EUNJI] [DATA SAFE] lpa = 201092 +[47295.653514] bdbm: [EUNJI] [DATA SAFE] lpa = 201093 +[47295.653986] bdbm: [EUNJI] [DATA SAFE] lpa = 201094 +[47295.654457] bdbm: [EUNJI] [DATA SAFE] lpa = 201095 +[47295.654933] bdbm: [EUNJI] [DATA SAFE] lpa = 201096 +[47295.655406] bdbm: [EUNJI] [DATA SAFE] lpa = 201097 +[47295.655878] bdbm: [EUNJI] [DATA SAFE] lpa = 201098 +[47295.656354] bdbm: [EUNJI] [DATA SAFE] lpa = 201099 +[47295.656830] bdbm: [EUNJI] [DATA SAFE] lpa = 201100 +[47295.657303] bdbm: [EUNJI] [DATA SAFE] lpa = 201101 +[47295.657776] bdbm: [EUNJI] [DATA SAFE] lpa = 201102 +[47295.658246] bdbm: [EUNJI] [DATA SAFE] lpa = 201103 +[47295.658723] bdbm: [EUNJI] [DATA SAFE] lpa = 201104 +[47295.659200] bdbm: [EUNJI] [DATA SAFE] lpa = 201105 +[47295.659672] bdbm: [EUNJI] [DATA SAFE] lpa = 201106 +[47295.660145] bdbm: [EUNJI] [DATA SAFE] lpa = 201107 +[47295.660618] bdbm: [EUNJI] [DATA SAFE] lpa = 201108 +[47295.661096] bdbm: [EUNJI] [DATA SAFE] lpa = 201109 +[47295.661567] bdbm: [EUNJI] [DATA SAFE] lpa = 201110 +[47295.662050] bdbm: [EUNJI] [DATA SAFE] lpa = 201111 +[47295.662522] bdbm: [EUNJI] [DATA SAFE] lpa = 201112 +[47295.663000] bdbm: [EUNJI] [DATA SAFE] lpa = 201113 +[47295.663475] bdbm: [EUNJI] [DATA SAFE] lpa = 201114 +[47295.663952] bdbm: [EUNJI] [DATA SAFE] lpa = 201115 +[47295.664423] bdbm: [EUNJI] [DATA SAFE] lpa = 201116 +[47295.664900] bdbm: [EUNJI] [DATA SAFE] lpa = 201117 +[47295.665374] bdbm: [EUNJI] [DATA SAFE] lpa = 201118 +[47295.665851] bdbm: [EUNJI] [DATA SAFE] lpa = 201119 +[47295.666323] bdbm: [EUNJI] [DATA SAFE] lpa = 201120 +[47295.666799] bdbm: [EUNJI] [DATA SAFE] lpa = 201121 +[47295.667275] bdbm: [EUNJI] [DATA SAFE] lpa = 201122 +[47295.667748] bdbm: [EUNJI] [DATA SAFE] lpa = 201123 +[47295.668220] bdbm: [EUNJI] [DATA SAFE] lpa = 201124 +[47295.668693] bdbm: [EUNJI] [DATA SAFE] lpa = 201125 +[47295.669171] bdbm: [EUNJI] [DATA SAFE] lpa = 201126 +[47295.669649] bdbm: [EUNJI] [DATA SAFE] lpa = 201127 +[47295.670127] bdbm: [EUNJI] [DATA SAFE] lpa = 201128 +[47295.670599] bdbm: [EUNJI] [DATA SAFE] lpa = 201129 +[47295.671076] bdbm: [EUNJI] [DATA SAFE] lpa = 201130 +[47295.671552] bdbm: [EUNJI] [DATA SAFE] lpa = 201131 +[47295.672030] bdbm: [EUNJI] [DATA SAFE] lpa = 201132 +[47295.672506] bdbm: [EUNJI] [DATA SAFE] lpa = 201133 +[47295.672982] bdbm: [EUNJI] [DATA SAFE] lpa = 201134 +[47295.673459] bdbm: [EUNJI] [DATA SAFE] lpa = 201135 +[47295.673937] bdbm: [EUNJI] [DATA SAFE] lpa = 201136 +[47295.674413] bdbm: [EUNJI] [DATA SAFE] lpa = 201137 +[47295.674889] bdbm: [EUNJI] [DATA SAFE] lpa = 201138 +[47295.675366] bdbm: [EUNJI] [DATA SAFE] lpa = 201139 +[47295.675841] bdbm: [EUNJI] [DATA SAFE] lpa = 201140 +[47295.676317] bdbm: [EUNJI] [DATA SAFE] lpa = 201141 +[47295.676794] bdbm: [EUNJI] [DATA SAFE] lpa = 201142 +[47295.677271] bdbm: [EUNJI] [DATA SAFE] lpa = 201143 +[47295.677744] bdbm: [EUNJI] [DATA SAFE] lpa = 201144 +[47295.678221] bdbm: [EUNJI] [DATA SAFE] lpa = 201145 +[47295.678697] bdbm: [EUNJI] [DATA SAFE] lpa = 201146 +[47295.679168] bdbm: [EUNJI] [DATA SAFE] lpa = 201147 +[47295.679644] bdbm: [EUNJI] [DATA SAFE] lpa = 201148 +[47295.680114] bdbm: [EUNJI] [DATA SAFE] lpa = 201149 +[47295.680590] bdbm: [EUNJI] [DATA SAFE] lpa = 201150 +[47295.681061] bdbm: [EUNJI] [DATA SAFE] lpa = 201151 +[47295.681537] bdbm: [EUNJI] [DATA SAFE] lpa = 201152 +[47295.682008] bdbm: [EUNJI] [DATA SAFE] lpa = 201153 +[47295.682484] bdbm: [EUNJI] [DATA SAFE] lpa = 201154 +[47295.682960] bdbm: [EUNJI] [DATA SAFE] lpa = 201155 +[47295.683432] bdbm: [EUNJI] [DATA SAFE] lpa = 201156 +[47295.683907] bdbm: [EUNJI] [DATA SAFE] lpa = 201157 +[47295.684379] bdbm: [EUNJI] [DATA SAFE] lpa = 201158 +[47295.684851] bdbm: [EUNJI] [DATA SAFE] lpa = 201159 +[47295.685321] bdbm: [EUNJI] [DATA SAFE] lpa = 201160 +[47295.685801] bdbm: [EUNJI] [DATA SAFE] lpa = 201161 +[47295.686277] bdbm: [EUNJI] [DATA SAFE] lpa = 201162 +[47295.686749] bdbm: [EUNJI] [DATA SAFE] lpa = 201163 +[47295.687224] bdbm: [EUNJI] [DATA SAFE] lpa = 201164 +[47295.687696] bdbm: [EUNJI] [DATA SAFE] lpa = 201165 +[47295.688168] bdbm: [EUNJI] [DATA SAFE] lpa = 201166 +[47295.688640] bdbm: [EUNJI] [DATA SAFE] lpa = 201167 +[47295.689112] bdbm: [EUNJI] [DATA SAFE] lpa = 201168 +[47295.689602] bdbm: [EUNJI] [DATA SAFE] lpa = 201169 +[47295.690078] bdbm: [EUNJI] [DATA SAFE] lpa = 201170 +[47295.690554] bdbm: [EUNJI] [DATA SAFE] lpa = 201171 +[47295.691030] bdbm: [EUNJI] [DATA SAFE] lpa = 201172 +[47295.691504] bdbm: [EUNJI] [DATA SAFE] lpa = 201173 +[47295.691976] bdbm: [EUNJI] [DATA SAFE] lpa = 201174 +[47295.692453] bdbm: [EUNJI] [DATA SAFE] lpa = 201175 +[47295.692928] bdbm: [EUNJI] [DATA SAFE] lpa = 201176 +[47295.693406] bdbm: [EUNJI] [DATA SAFE] lpa = 201177 +[47295.693878] bdbm: [EUNJI] [DATA SAFE] lpa = 201178 +[47295.694349] bdbm: [EUNJI] [DATA SAFE] lpa = 201179 +[47295.694825] bdbm: [EUNJI] [DATA SAFE] lpa = 201180 +[47295.695301] bdbm: [EUNJI] [DATA SAFE] lpa = 201181 +[47295.695778] bdbm: [EUNJI] [DATA SAFE] lpa = 201182 +[47295.696254] bdbm: [EUNJI] [DATA SAFE] lpa = 201183 +[47295.696731] bdbm: [EUNJI] [DATA SAFE] lpa = 201184 +[47295.697206] bdbm: [EUNJI] [DATA SAFE] lpa = 201185 +[47295.697683] bdbm: [EUNJI] [DATA SAFE] lpa = 201186 +[47295.698155] bdbm: [EUNJI] [DATA SAFE] lpa = 201187 +[47295.698628] bdbm: [EUNJI] [DATA SAFE] lpa = 201188 +[47295.699105] bdbm: [EUNJI] [DATA SAFE] lpa = 201189 +[47295.699582] bdbm: [EUNJI] [DATA SAFE] lpa = 201190 +[47295.700057] bdbm: [EUNJI] [DATA SAFE] lpa = 201191 +[47295.700534] bdbm: [EUNJI] [DATA SAFE] lpa = 201192 +[47295.701011] bdbm: [EUNJI] [DATA SAFE] lpa = 201193 +[47295.701489] bdbm: [EUNJI] [DATA SAFE] lpa = 201194 +[47295.701963] bdbm: [EUNJI] [DATA SAFE] lpa = 201195 +[47295.702440] bdbm: [EUNJI] [DATA SAFE] lpa = 201196 +[47295.702915] bdbm: [EUNJI] [DATA SAFE] lpa = 201197 +[47295.703392] bdbm: [EUNJI] [DATA SAFE] lpa = 201198 +[47295.703868] bdbm: [EUNJI] [DATA SAFE] lpa = 201199 +[47295.704345] bdbm: [EUNJI] [DATA SAFE] lpa = 201200 +[47295.704820] bdbm: [EUNJI] [DATA SAFE] lpa = 201201 +[47295.705296] bdbm: [EUNJI] [DATA SAFE] lpa = 201202 +[47295.705777] bdbm: [EUNJI] [DATA SAFE] lpa = 201203 +[47295.706256] bdbm: [EUNJI] [DATA SAFE] lpa = 201204 +[47295.706731] bdbm: [EUNJI] [DATA SAFE] lpa = 201205 +[47295.707206] bdbm: [EUNJI] [DATA SAFE] lpa = 201206 +[47295.707680] bdbm: [EUNJI] [DATA SAFE] lpa = 201207 +[47295.708158] bdbm: [EUNJI] [DATA SAFE] lpa = 201208 +[47295.708631] bdbm: [EUNJI] [DATA SAFE] lpa = 201209 +[47295.709105] bdbm: [EUNJI] [DATA SAFE] lpa = 201210 +[47295.709590] bdbm: [EUNJI] [DATA SAFE] lpa = 201211 +[47295.710063] bdbm: [EUNJI] [DATA SAFE] lpa = 201212 +[47295.710534] bdbm: [EUNJI] [DATA SAFE] lpa = 201213 +[47295.711006] bdbm: [EUNJI] [DATA SAFE] lpa = 201214 +[47295.711481] bdbm: [EUNJI] [DATA SAFE] lpa = 201215 +[47295.711956] bdbm: [EUNJI] [DATA SAFE] lpa = 201216 +[47295.712431] bdbm: [EUNJI] [DATA SAFE] lpa = 201217 +[47295.712906] bdbm: [EUNJI] [DATA SAFE] lpa = 201218 +[47295.713377] bdbm: [EUNJI] [DATA SAFE] lpa = 201219 +[47295.713852] bdbm: [EUNJI] [DATA SAFE] lpa = 201220 +[47295.714328] bdbm: [EUNJI] [DATA SAFE] lpa = 201221 +[47295.714798] bdbm: [EUNJI] [DATA SAFE] lpa = 201222 +[47295.715270] bdbm: [EUNJI] [DATA SAFE] lpa = 201223 +[47295.715744] bdbm: [EUNJI] [DATA SAFE] lpa = 201224 +[47295.716220] bdbm: [EUNJI] [DATA SAFE] lpa = 201225 +[47295.716697] bdbm: [EUNJI] [DATA SAFE] lpa = 201226 +[47295.717167] bdbm: [EUNJI] [DATA SAFE] lpa = 201227 +[47295.717644] bdbm: [EUNJI] [DATA SAFE] lpa = 201228 +[47295.718120] bdbm: [EUNJI] [DATA SAFE] lpa = 201229 +[47295.718596] bdbm: [EUNJI] [DATA SAFE] lpa = 201230 +[47295.719072] bdbm: [EUNJI] [DATA SAFE] lpa = 201231 +[47295.719551] bdbm: [EUNJI] [DATA SAFE] lpa = 201232 +[47295.720026] bdbm: [EUNJI] [DATA SAFE] lpa = 201233 +[47295.720500] bdbm: [EUNJI] [DATA SAFE] lpa = 201234 +[47295.720977] bdbm: [EUNJI] [DATA SAFE] lpa = 201235 +[47295.721451] bdbm: [EUNJI] [DATA SAFE] lpa = 201236 +[47295.721929] bdbm: [EUNJI] [DATA SAFE] lpa = 201237 +[47295.722404] bdbm: [EUNJI] [DATA SAFE] lpa = 201238 +[47295.722880] bdbm: [EUNJI] [DATA SAFE] lpa = 201239 +[47295.723357] bdbm: [EUNJI] [DATA SAFE] lpa = 201240 +[47295.723830] bdbm: [EUNJI] [DATA SAFE] lpa = 201241 +[47295.724301] bdbm: [EUNJI] [DATA SAFE] lpa = 201242 +[47295.724777] bdbm: [EUNJI] [DATA SAFE] lpa = 201243 +[47295.725254] bdbm: [EUNJI] [DATA SAFE] lpa = 201244 +[47295.725731] bdbm: [EUNJI] [DATA SAFE] lpa = 201245 +[47295.726208] bdbm: [EUNJI] [DATA SAFE] lpa = 201246 +[47295.726683] bdbm: [EUNJI] [DATA SAFE] lpa = 201247 +[47295.727160] bdbm: [EUNJI] [DATA SAFE] lpa = 201248 +[47295.727636] bdbm: [EUNJI] [DATA SAFE] lpa = 201249 +[47295.728112] bdbm: [EUNJI] [DATA SAFE] lpa = 201250 +[47295.728589] bdbm: [EUNJI] [DATA SAFE] lpa = 201251 +[47295.729065] bdbm: [EUNJI] [DATA SAFE] lpa = 201252 +[47295.729541] bdbm: [EUNJI] [DATA SAFE] lpa = 201253 +[47295.730019] bdbm: [EUNJI] [DATA SAFE] lpa = 201254 +[47295.730496] bdbm: [EUNJI] [DATA SAFE] lpa = 201255 +[47295.730971] bdbm: [EUNJI] [DATA SAFE] lpa = 201256 +[47295.731447] bdbm: [EUNJI] [DATA SAFE] lpa = 201257 +[47295.731924] bdbm: [EUNJI] [DATA SAFE] lpa = 201258 +[47295.732403] bdbm: [EUNJI] [DATA SAFE] lpa = 201259 +[47295.732876] bdbm: [EUNJI] [DATA SAFE] lpa = 201260 +[47295.733351] bdbm: [EUNJI] [DATA SAFE] lpa = 201261 +[47295.733827] bdbm: [EUNJI] [DATA SAFE] lpa = 201262 +[47295.734307] bdbm: [EUNJI] [DATA SAFE] lpa = 201263 +[47295.734783] bdbm: [EUNJI] [DATA SAFE] lpa = 201264 +[47295.735260] bdbm: [EUNJI] [DATA SAFE] lpa = 201265 +[47295.735737] bdbm: [EUNJI] [DATA SAFE] lpa = 201266 +[47295.736213] bdbm: [EUNJI] [DATA SAFE] lpa = 201267 +[47295.736687] bdbm: [EUNJI] [DATA SAFE] lpa = 201268 +[47295.737160] bdbm: [EUNJI] [DATA SAFE] lpa = 201269 +[47295.737637] bdbm: [EUNJI] [DATA SAFE] lpa = 201270 +[47295.738112] bdbm: [EUNJI] [DATA SAFE] lpa = 201271 +[47295.738589] bdbm: [EUNJI] [DATA SAFE] lpa = 201272 +[47295.739066] bdbm: [EUNJI] [DATA SAFE] lpa = 201273 +[47295.739535] bdbm: [EUNJI] [DATA SAFE] lpa = 201274 +[47295.740006] bdbm: [EUNJI] [DATA SAFE] lpa = 201275 +[47295.740478] bdbm: [EUNJI] [DATA SAFE] lpa = 201276 +[47295.740954] bdbm: [EUNJI] [DATA SAFE] lpa = 201277 +[47295.741429] bdbm: [EUNJI] [DATA SAFE] lpa = 201278 +[47295.741902] bdbm: [EUNJI] [DATA SAFE] lpa = 201279 +[47295.742377] bdbm: [EUNJI] [DATA SAFE] lpa = 201280 +[47295.742848] bdbm: [EUNJI] [DATA SAFE] lpa = 201281 +[47295.743318] bdbm: [EUNJI] [DATA SAFE] lpa = 201282 +[47295.743788] bdbm: [EUNJI] [DATA SAFE] lpa = 201283 +[47295.744259] bdbm: [EUNJI] [DATA SAFE] lpa = 201284 +[47295.744735] bdbm: [EUNJI] [DATA SAFE] lpa = 201285 +[47295.745211] bdbm: [EUNJI] [DATA SAFE] lpa = 201286 +[47295.745683] bdbm: [EUNJI] [DATA SAFE] lpa = 201287 +[47295.746158] bdbm: [EUNJI] [DATA SAFE] lpa = 201288 +[47295.746633] bdbm: [EUNJI] [DATA SAFE] lpa = 201289 +[47295.747108] bdbm: [EUNJI] [DATA SAFE] lpa = 201290 +[47295.747579] bdbm: [EUNJI] [DATA SAFE] lpa = 201291 +[47295.748051] bdbm: [EUNJI] [DATA SAFE] lpa = 201292 +[47295.748522] bdbm: [EUNJI] [DATA SAFE] lpa = 201293 +[47295.748993] bdbm: [EUNJI] [DATA SAFE] lpa = 201294 +[47295.749467] bdbm: [EUNJI] [DATA SAFE] lpa = 201295 +[47295.749941] bdbm: [EUNJI] [DATA SAFE] lpa = 201296 +[47295.750412] bdbm: [EUNJI] [DATA SAFE] lpa = 201297 +[47295.750890] bdbm: [EUNJI] [DATA SAFE] lpa = 201298 +[47295.751360] bdbm: [EUNJI] [DATA SAFE] lpa = 201299 +[47295.751833] bdbm: [EUNJI] [DATA SAFE] lpa = 201300 +[47295.752309] bdbm: [EUNJI] [DATA SAFE] lpa = 201301 +[47295.752786] bdbm: [EUNJI] [DATA SAFE] lpa = 201302 +[47295.753262] bdbm: [EUNJI] [DATA SAFE] lpa = 201303 +[47295.753739] bdbm: [EUNJI] [DATA SAFE] lpa = 201304 +[47295.754211] bdbm: [EUNJI] [DATA SAFE] lpa = 201305 +[47295.754685] bdbm: [EUNJI] [DATA SAFE] lpa = 201306 +[47295.755161] bdbm: [EUNJI] [DATA SAFE] lpa = 201307 +[47295.755636] bdbm: [EUNJI] [DATA SAFE] lpa = 201308 +[47295.756114] bdbm: [EUNJI] [DATA SAFE] lpa = 201309 +[47295.756591] bdbm: [EUNJI] [DATA SAFE] lpa = 201310 +[47295.757067] bdbm: [EUNJI] [DATA SAFE] lpa = 201311 +[47295.757543] bdbm: [EUNJI] [DATA SAFE] lpa = 201312 +[47295.758016] bdbm: [EUNJI] [DATA SAFE] lpa = 201313 +[47295.758493] bdbm: [EUNJI] [DATA SAFE] lpa = 201314 +[47295.758967] bdbm: [EUNJI] [DATA SAFE] lpa = 201315 +[47295.759444] bdbm: [EUNJI] [DATA SAFE] lpa = 201316 +[47295.759920] bdbm: [EUNJI] [DATA SAFE] lpa = 201317 +[47295.760396] bdbm: [EUNJI] [DATA SAFE] lpa = 201318 +[47295.760872] bdbm: [EUNJI] [DATA SAFE] lpa = 201319 +[47295.761349] bdbm: [EUNJI] [DATA SAFE] lpa = 201320 +[47295.761822] bdbm: [EUNJI] [DATA SAFE] lpa = 201321 +[47295.762299] bdbm: [EUNJI] [DATA SAFE] lpa = 201322 +[47295.762776] bdbm: [EUNJI] [DATA SAFE] lpa = 201323 +[47295.763249] bdbm: [EUNJI] [DATA SAFE] lpa = 201324 +[47295.763722] bdbm: [EUNJI] [DATA SAFE] lpa = 201325 +[47295.764196] bdbm: [EUNJI] [DATA SAFE] lpa = 201326 +[47295.764673] bdbm: [EUNJI] [DATA SAFE] lpa = 201327 +[47295.765151] bdbm: [EUNJI] [DATA SAFE] lpa = 201328 +[47295.765627] bdbm: [EUNJI] [DATA SAFE] lpa = 201329 +[47295.766103] bdbm: [EUNJI] [DATA SAFE] lpa = 201330 +[47295.766579] bdbm: [EUNJI] [DATA SAFE] lpa = 201331 +[47295.767054] bdbm: [EUNJI] [DATA SAFE] lpa = 201332 +[47295.767529] bdbm: [EUNJI] [DATA SAFE] lpa = 201333 +[47295.768007] bdbm: [EUNJI] [DATA SAFE] lpa = 201334 +[47295.768485] bdbm: [EUNJI] [DATA SAFE] lpa = 201335 +[47295.768964] bdbm: [EUNJI] [DATA SAFE] lpa = 201336 +[47295.769441] bdbm: [EUNJI] [DATA SAFE] lpa = 201337 +[47295.769911] bdbm: [EUNJI] [DATA SAFE] lpa = 201338 +[47295.770388] bdbm: [EUNJI] [DATA SAFE] lpa = 201339 +[47295.770862] bdbm: [EUNJI] [DATA SAFE] lpa = 201340 +[47295.771333] bdbm: [EUNJI] [DATA SAFE] lpa = 201341 +[47295.771803] bdbm: [EUNJI] [DATA SAFE] lpa = 201342 +[47295.772275] bdbm: [EUNJI] [DATA SAFE] lpa = 201343 +[47295.772746] bdbm: [EUNJI] [DATA SAFE] lpa = 201344 +[47295.773218] bdbm: [EUNJI] [DATA SAFE] lpa = 201345 +[47295.773692] bdbm: [EUNJI] [DATA SAFE] lpa = 201346 +[47295.774164] bdbm: [EUNJI] [DATA SAFE] lpa = 201347 +[47295.774635] bdbm: [EUNJI] [DATA SAFE] lpa = 201348 +[47295.775108] bdbm: [EUNJI] [DATA SAFE] lpa = 201349 +[47295.775581] bdbm: [EUNJI] [DATA SAFE] lpa = 201350 +[47295.776056] bdbm: [EUNJI] [DATA SAFE] lpa = 201351 +[47295.776532] bdbm: [EUNJI] [DATA SAFE] lpa = 201352 +[47295.777007] bdbm: [EUNJI] [DATA SAFE] lpa = 201353 +[47295.777478] bdbm: [EUNJI] [DATA SAFE] lpa = 201354 +[47295.777952] bdbm: [EUNJI] [DATA SAFE] lpa = 201355 +[47295.778428] bdbm: [EUNJI] [DATA SAFE] lpa = 201356 +[47295.778899] bdbm: [EUNJI] [DATA SAFE] lpa = 201357 +[47295.779374] bdbm: [EUNJI] [DATA SAFE] lpa = 201358 +[47295.779852] bdbm: [EUNJI] [DATA SAFE] lpa = 201359 +[47295.780324] bdbm: [EUNJI] [DATA SAFE] lpa = 201360 +[47295.780797] bdbm: [EUNJI] [DATA SAFE] lpa = 201361 +[47295.781269] bdbm: [EUNJI] [DATA SAFE] lpa = 201362 +[47295.781743] bdbm: [EUNJI] [DATA SAFE] lpa = 201363 +[47295.782220] bdbm: [EUNJI] [DATA SAFE] lpa = 201364 +[47295.782691] bdbm: [EUNJI] [DATA SAFE] lpa = 201365 +[47295.783168] bdbm: [EUNJI] [DATA SAFE] lpa = 201366 +[47295.783644] bdbm: [EUNJI] [DATA SAFE] lpa = 201367 +[47295.784119] bdbm: [EUNJI] [DATA SAFE] lpa = 201368 +[47295.784590] bdbm: [EUNJI] [DATA SAFE] lpa = 201369 +[47295.785068] bdbm: [EUNJI] [DATA SAFE] lpa = 201370 +[47295.785543] bdbm: [EUNJI] [DATA SAFE] lpa = 201371 +[47295.786017] bdbm: [EUNJI] [DATA SAFE] lpa = 201372 +[47295.786490] bdbm: [EUNJI] [DATA SAFE] lpa = 201373 +[47295.786962] bdbm: [EUNJI] [DATA SAFE] lpa = 201374 +[47295.787440] bdbm: [EUNJI] [DATA SAFE] lpa = 201375 +[47295.787917] bdbm: [EUNJI] [DATA SAFE] lpa = 201376 +[47295.788393] bdbm: [EUNJI] [DATA SAFE] lpa = 201377 +[47295.788867] bdbm: [EUNJI] [DATA SAFE] lpa = 201378 +[47295.789341] bdbm: [EUNJI] [DATA SAFE] lpa = 201379 +[47295.789819] bdbm: [EUNJI] [DATA SAFE] lpa = 201380 +[47295.790294] bdbm: [EUNJI] [DATA SAFE] lpa = 201381 +[47295.790771] bdbm: [EUNJI] [DATA SAFE] lpa = 201382 +[47295.791248] bdbm: [EUNJI] [DATA SAFE] lpa = 201383 +[47295.791723] bdbm: [EUNJI] [DATA SAFE] lpa = 201384 +[47295.792201] bdbm: [EUNJI] [DATA SAFE] lpa = 201385 +[47295.792676] bdbm: [EUNJI] [DATA SAFE] lpa = 201386 +[47295.793153] bdbm: [EUNJI] [DATA SAFE] lpa = 201387 +[47295.793626] bdbm: [EUNJI] [DATA SAFE] lpa = 201388 +[47295.794106] bdbm: [EUNJI] [DATA SAFE] lpa = 201389 +[47295.794584] bdbm: [EUNJI] [DATA SAFE] lpa = 201390 +[47295.795059] bdbm: [EUNJI] [DATA SAFE] lpa = 201391 +[47295.795539] bdbm: [EUNJI] [DATA SAFE] lpa = 201392 +[47295.796015] bdbm: [EUNJI] [DATA SAFE] lpa = 201393 +[47295.796494] bdbm: [EUNJI] [DATA SAFE] lpa = 201394 +[47295.796970] bdbm: [EUNJI] [DATA SAFE] lpa = 201395 +[47295.797446] bdbm: [EUNJI] [DATA SAFE] lpa = 201396 +[47295.797923] bdbm: [EUNJI] [DATA SAFE] lpa = 201397 +[47295.798398] bdbm: [EUNJI] [DATA SAFE] lpa = 201398 +[47295.798877] bdbm: [EUNJI] [DATA SAFE] lpa = 201399 +[47295.799352] bdbm: [EUNJI] [DATA SAFE] lpa = 201400 +[47295.799829] bdbm: [EUNJI] [DATA SAFE] lpa = 201401 +[47295.800303] bdbm: [EUNJI] [DATA SAFE] lpa = 201402 +[47295.800778] bdbm: [EUNJI] [DATA SAFE] lpa = 201403 +[47295.801249] bdbm: [EUNJI] [DATA SAFE] lpa = 201404 +[47295.801720] bdbm: [EUNJI] [DATA SAFE] lpa = 201405 +[47295.802196] bdbm: [EUNJI] [DATA SAFE] lpa = 201406 +[47295.802666] bdbm: [EUNJI] [DATA SAFE] lpa = 201407 +[47295.803137] bdbm: [EUNJI] [DATA SAFE] lpa = 201408 +[47295.803607] bdbm: [EUNJI] [DATA SAFE] lpa = 201409 +[47295.804080] bdbm: [EUNJI] [DATA SAFE] lpa = 201410 +[47295.804555] bdbm: [EUNJI] [DATA SAFE] lpa = 201411 +[47295.805031] bdbm: [EUNJI] [DATA SAFE] lpa = 201412 +[47295.805503] bdbm: [EUNJI] [DATA SAFE] lpa = 201413 +[47295.805977] bdbm: [EUNJI] [DATA SAFE] lpa = 201414 +[47295.806454] bdbm: [EUNJI] [DATA SAFE] lpa = 201415 +[47295.806929] bdbm: [EUNJI] [DATA SAFE] lpa = 201416 +[47295.807400] bdbm: [EUNJI] [DATA SAFE] lpa = 201417 +[47295.807875] bdbm: [EUNJI] [DATA SAFE] lpa = 201418 +[47295.808347] bdbm: [EUNJI] [DATA SAFE] lpa = 201419 +[47295.808822] bdbm: [EUNJI] [DATA SAFE] lpa = 201420 +[47295.809293] bdbm: [EUNJI] [DATA SAFE] lpa = 201421 +[47295.809767] bdbm: [EUNJI] [DATA SAFE] lpa = 201422 +[47295.810243] bdbm: [EUNJI] [DATA SAFE] lpa = 201423 +[47295.810721] bdbm: [EUNJI] [DATA SAFE] lpa = 201424 +[47295.811198] bdbm: [EUNJI] [DATA SAFE] lpa = 201425 +[47295.811668] bdbm: [EUNJI] [DATA SAFE] lpa = 201426 +[47295.812140] bdbm: [EUNJI] [DATA SAFE] lpa = 201427 +[47295.812616] bdbm: [EUNJI] [DATA SAFE] lpa = 201428 +[47295.813092] bdbm: [EUNJI] [DATA SAFE] lpa = 201429 +[47295.813567] bdbm: [EUNJI] [DATA SAFE] lpa = 201430 +[47295.814048] bdbm: [EUNJI] [DATA SAFE] lpa = 201431 +[47295.814530] bdbm: [EUNJI] [DATA SAFE] lpa = 201432 +[47295.815001] bdbm: [EUNJI] [DATA SAFE] lpa = 201433 +[47295.815472] bdbm: [EUNJI] [DATA SAFE] lpa = 201434 +[47295.815958] bdbm: [EUNJI] [DATA SAFE] lpa = 201435 +[47295.816430] bdbm: [EUNJI] [DATA SAFE] lpa = 201436 +[47295.816929] bdbm: [EUNJI] [DATA SAFE] lpa = 201437 +[47295.817419] bdbm: [EUNJI] [DATA SAFE] lpa = 201438 +[47295.817906] bdbm: [EUNJI] [DATA SAFE] lpa = 201439 +[47295.818404] bdbm: [EUNJI] [DATA SAFE] lpa = 201440 +[47295.818875] bdbm: [EUNJI] [DATA SAFE] lpa = 201441 +[47295.819345] bdbm: [EUNJI] [DATA SAFE] lpa = 201442 +[47295.819820] bdbm: [EUNJI] [DATA SAFE] lpa = 201443 +[47295.820296] bdbm: [EUNJI] [DATA SAFE] lpa = 201444 +[47295.820771] bdbm: [EUNJI] [DATA SAFE] lpa = 201445 +[47295.821246] bdbm: [EUNJI] [DATA SAFE] lpa = 201446 +[47295.821718] bdbm: [EUNJI] [DATA SAFE] lpa = 201447 +[47295.822193] bdbm: [EUNJI] [DATA SAFE] lpa = 201448 +[47295.822669] bdbm: [EUNJI] [DATA SAFE] lpa = 201449 +[47295.823139] bdbm: [EUNJI] [DATA SAFE] lpa = 201450 +[47295.823609] bdbm: [EUNJI] [DATA SAFE] lpa = 201451 +[47295.824080] bdbm: [EUNJI] [DATA SAFE] lpa = 201452 +[47295.824556] bdbm: [EUNJI] [DATA SAFE] lpa = 201453 +[47295.825026] bdbm: [EUNJI] [DATA SAFE] lpa = 201454 +[47295.825497] bdbm: [EUNJI] [DATA SAFE] lpa = 201455 +[47295.825970] bdbm: [EUNJI] [DATA SAFE] lpa = 201456 +[47295.826446] bdbm: [EUNJI] [DATA SAFE] lpa = 201457 +[47295.826917] bdbm: [EUNJI] [DATA SAFE] lpa = 201458 +[47295.827388] bdbm: [EUNJI] [DATA SAFE] lpa = 201459 +[47295.827858] bdbm: [EUNJI] [DATA SAFE] lpa = 201460 +[47295.828329] bdbm: [EUNJI] [DATA SAFE] lpa = 201461 +[47295.828800] bdbm: [EUNJI] [DATA SAFE] lpa = 201462 +[47295.829271] bdbm: [EUNJI] [DATA SAFE] lpa = 201463 +[47295.829748] bdbm: [EUNJI] [DATA SAFE] lpa = 201464 +[47295.830231] bdbm: [EUNJI] [DATA SAFE] lpa = 201465 +[47295.830702] bdbm: [EUNJI] [DATA SAFE] lpa = 201466 +[47295.831174] bdbm: [EUNJI] [DATA SAFE] lpa = 201467 +[47295.831649] bdbm: [EUNJI] [DATA SAFE] lpa = 201468 +[47295.832124] bdbm: [EUNJI] [DATA SAFE] lpa = 201469 +[47295.832595] bdbm: [EUNJI] [DATA SAFE] lpa = 201470 +[47295.833067] bdbm: [EUNJI] [DATA SAFE] lpa = 201471 +[47295.833540] bdbm: [EUNJI] [DATA SAFE] lpa = 201472 +[47295.834012] bdbm: [EUNJI] [DATA SAFE] lpa = 201473 +[47295.834484] bdbm: [EUNJI] [DATA SAFE] lpa = 201474 +[47295.834956] bdbm: [EUNJI] [DATA SAFE] lpa = 201475 +[47295.835427] bdbm: [EUNJI] [DATA SAFE] lpa = 201476 +[47295.835897] bdbm: [EUNJI] [DATA SAFE] lpa = 201477 +[47295.836370] bdbm: [EUNJI] [DATA SAFE] lpa = 201478 +[47295.836845] bdbm: [EUNJI] [DATA SAFE] lpa = 201479 +[47295.837323] bdbm: [EUNJI] [DATA SAFE] lpa = 201480 +[47295.837799] bdbm: [EUNJI] [DATA SAFE] lpa = 201481 +[47295.838270] bdbm: [EUNJI] [DATA SAFE] lpa = 201482 +[47295.838746] bdbm: [EUNJI] [DATA SAFE] lpa = 201483 +[47295.839222] bdbm: [EUNJI] [DATA SAFE] lpa = 201484 +[47295.839698] bdbm: [EUNJI] [DATA SAFE] lpa = 201485 +[47295.840210] bdbm: [EUNJI] [DATA SAFE] lpa = 201486 +[47295.840697] bdbm: [EUNJI] [DATA SAFE] lpa = 201487 +[47295.841182] bdbm: [EUNJI] [DATA SAFE] lpa = 201488 +[47295.841665] bdbm: [EUNJI] [DATA SAFE] lpa = 201489 +[47295.842142] bdbm: [EUNJI] [DATA SAFE] lpa = 201490 +[47295.842618] bdbm: [EUNJI] [DATA SAFE] lpa = 201491 +[47295.843094] bdbm: [EUNJI] [DATA SAFE] lpa = 201492 +[47295.843567] bdbm: [EUNJI] [DATA SAFE] lpa = 201493 +[47295.844041] bdbm: [EUNJI] [DATA SAFE] lpa = 201494 +[47295.844514] bdbm: [EUNJI] [DATA SAFE] lpa = 201495 +[47295.844986] bdbm: [EUNJI] [DATA SAFE] lpa = 201496 +[47295.845460] bdbm: [EUNJI] [DATA SAFE] lpa = 201497 +[47295.845936] bdbm: [EUNJI] [DATA SAFE] lpa = 201498 +[47295.846411] bdbm: [EUNJI] [DATA SAFE] lpa = 201499 +[47295.846886] bdbm: [EUNJI] [DATA SAFE] lpa = 201500 +[47295.847361] bdbm: [EUNJI] [DATA SAFE] lpa = 201501 +[47295.847834] bdbm: [EUNJI] [DATA SAFE] lpa = 201502 +[47295.848309] bdbm: [EUNJI] [DATA SAFE] lpa = 201503 +[47295.848783] bdbm: [EUNJI] [DATA SAFE] lpa = 201504 +[47295.849257] bdbm: [EUNJI] [DATA SAFE] lpa = 201505 +[47295.849731] bdbm: [EUNJI] [DATA SAFE] lpa = 201506 +[47295.850208] bdbm: [EUNJI] [DATA SAFE] lpa = 201507 +[47295.850683] bdbm: [EUNJI] [DATA SAFE] lpa = 201508 +[47295.851157] bdbm: [EUNJI] [DATA SAFE] lpa = 201509 +[47295.851631] bdbm: [EUNJI] [DATA SAFE] lpa = 201510 +[47295.852105] bdbm: [EUNJI] [DATA SAFE] lpa = 201511 +[47295.852580] bdbm: [EUNJI] [DATA SAFE] lpa = 201512 +[47295.853054] bdbm: [EUNJI] [DATA SAFE] lpa = 201513 +[47295.853529] bdbm: [EUNJI] [DATA SAFE] lpa = 201514 +[47295.854002] bdbm: [EUNJI] [DATA SAFE] lpa = 201515 +[47295.854480] bdbm: [EUNJI] [DATA SAFE] lpa = 201516 +[47295.854957] bdbm: [EUNJI] [DATA SAFE] lpa = 201517 +[47295.855432] bdbm: [EUNJI] [DATA SAFE] lpa = 201518 +[47295.855905] bdbm: [EUNJI] [DATA SAFE] lpa = 201519 +[47295.856379] bdbm: [EUNJI] [DATA SAFE] lpa = 201520 +[47295.856856] bdbm: [EUNJI] [DATA SAFE] lpa = 201521 +[47295.857330] bdbm: [EUNJI] [DATA SAFE] lpa = 201522 +[47295.857802] bdbm: [EUNJI] [DATA SAFE] lpa = 201523 +[47295.858276] bdbm: [EUNJI] [DATA SAFE] lpa = 201524 +[47295.858751] bdbm: [EUNJI] [DATA SAFE] lpa = 201525 +[47295.859225] bdbm: [EUNJI] [DATA SAFE] lpa = 201526 +[47295.859699] bdbm: [EUNJI] [DATA SAFE] lpa = 201527 +[47295.860173] bdbm: [EUNJI] [DATA SAFE] lpa = 201528 +[47295.860649] bdbm: [EUNJI] [DATA SAFE] lpa = 201529 +[47295.861122] bdbm: [EUNJI] [DATA SAFE] lpa = 201530 +[47295.861626] bdbm: [EUNJI] [DATA SAFE] lpa = 201531 +[47295.862096] bdbm: [EUNJI] [DATA SAFE] lpa = 201532 +[47295.862571] bdbm: [EUNJI] [DATA SAFE] lpa = 201533 +[47295.863044] bdbm: [EUNJI] [DATA SAFE] lpa = 201534 +[47295.863517] bdbm: [EUNJI] [DATA SAFE] lpa = 201535 +[47295.863990] bdbm: [EUNJI] [DATA SAFE] lpa = 201536 +[47295.864464] bdbm: [EUNJI] [DATA SAFE] lpa = 201537 +[47295.864937] bdbm: [EUNJI] [DATA SAFE] lpa = 201538 +[47295.865411] bdbm: [EUNJI] [DATA SAFE] lpa = 201539 +[47295.865888] bdbm: [EUNJI] [DATA SAFE] lpa = 201540 +[47295.866363] bdbm: [EUNJI] [DATA SAFE] lpa = 201541 +[47295.866836] bdbm: [EUNJI] [DATA SAFE] lpa = 201542 +[47295.867346] bdbm: [EUNJI] [DATA SAFE] lpa = 201543 +[47295.867847] bdbm: [EUNJI] [DATA SAFE] lpa = 201544 +[47295.868352] bdbm: [EUNJI] [DATA SAFE] lpa = 201545 +[47295.868852] bdbm: [EUNJI] [DATA SAFE] lpa = 201546 +[47295.869352] bdbm: [EUNJI] [DATA SAFE] lpa = 201547 +[47295.869827] bdbm: [EUNJI] [DATA SAFE] lpa = 201548 +[47295.870330] bdbm: [EUNJI] [DATA SAFE] lpa = 201549 +[47295.870801] bdbm: [EUNJI] [DATA SAFE] lpa = 201550 +[47295.871273] bdbm: [EUNJI] [DATA SAFE] lpa = 201551 +[47295.871764] bdbm: [EUNJI] [DATA SAFE] lpa = 201552 +[47295.872236] bdbm: [EUNJI] [DATA SAFE] lpa = 201553 +[47295.872712] bdbm: [EUNJI] [DATA SAFE] lpa = 201554 +[47295.873184] bdbm: [EUNJI] [DATA SAFE] lpa = 201555 +[47295.873659] bdbm: [EUNJI] [DATA SAFE] lpa = 201556 +[47295.874133] bdbm: [EUNJI] [DATA SAFE] lpa = 201557 +[47295.874604] bdbm: [EUNJI] [DATA SAFE] lpa = 201558 +[47295.875080] bdbm: [EUNJI] [DATA SAFE] lpa = 201559 +[47295.875557] bdbm: [EUNJI] [DATA SAFE] lpa = 201560 +[47295.876030] bdbm: [EUNJI] [DATA SAFE] lpa = 201561 +[47295.876506] bdbm: [EUNJI] [DATA SAFE] lpa = 201562 +[47295.876989] bdbm: [EUNJI] [DATA SAFE] lpa = 201563 +[47295.877465] bdbm: [EUNJI] [DATA SAFE] lpa = 201564 +[47295.877941] bdbm: [EUNJI] [DATA SAFE] lpa = 201565 +[47295.878417] bdbm: [EUNJI] [DATA SAFE] lpa = 201566 +[47295.878892] bdbm: [EUNJI] [DATA SAFE] lpa = 201567 +[47295.879365] bdbm: [EUNJI] [DATA SAFE] lpa = 201568 +[47295.879840] bdbm: [EUNJI] [DATA SAFE] lpa = 201569 +[47295.880315] bdbm: [EUNJI] [DATA SAFE] lpa = 201570 +[47295.880786] bdbm: [EUNJI] [DATA SAFE] lpa = 201571 +[47295.881259] bdbm: [EUNJI] [DATA SAFE] lpa = 201572 +[47295.881747] bdbm: [EUNJI] [DATA SAFE] lpa = 201573 +[47295.882223] bdbm: [EUNJI] [DATA SAFE] lpa = 201574 +[47295.882696] bdbm: [EUNJI] [DATA SAFE] lpa = 201575 +[47295.883170] bdbm: [EUNJI] [DATA SAFE] lpa = 201576 +[47295.883643] bdbm: [EUNJI] [DATA SAFE] lpa = 201577 +[47295.884117] bdbm: [EUNJI] [DATA SAFE] lpa = 201578 +[47295.884590] bdbm: [EUNJI] [DATA SAFE] lpa = 201579 +[47295.885063] bdbm: [EUNJI] [DATA SAFE] lpa = 201580 +[47295.885537] bdbm: [EUNJI] [DATA SAFE] lpa = 201581 +[47295.886011] bdbm: [EUNJI] [DATA SAFE] lpa = 201582 +[47295.886487] bdbm: [EUNJI] [DATA SAFE] lpa = 201583 +[47295.886960] bdbm: [EUNJI] [DATA SAFE] lpa = 201584 +[47295.887434] bdbm: [EUNJI] [DATA SAFE] lpa = 201585 +[47295.887909] bdbm: [EUNJI] [DATA SAFE] lpa = 201586 +[47295.888384] bdbm: [EUNJI] [DATA SAFE] lpa = 201587 +[47295.888858] bdbm: [EUNJI] [DATA SAFE] lpa = 201588 +[47295.889332] bdbm: [EUNJI] [DATA SAFE] lpa = 201589 +[47295.889809] bdbm: [EUNJI] [DATA SAFE] lpa = 201590 +[47295.890285] bdbm: [EUNJI] [DATA SAFE] lpa = 201591 +[47295.890759] bdbm: [EUNJI] [DATA SAFE] lpa = 201592 +[47295.891234] bdbm: [EUNJI] [DATA SAFE] lpa = 201593 +[47295.891706] bdbm: [EUNJI] [DATA SAFE] lpa = 201594 +[47295.892180] bdbm: [EUNJI] [DATA SAFE] lpa = 201595 +[47295.892654] bdbm: [EUNJI] [DATA SAFE] lpa = 201596 +[47295.893127] bdbm: [EUNJI] [DATA SAFE] lpa = 201597 +[47295.893607] bdbm: [EUNJI] [DATA SAFE] lpa = 201598 +[47295.894091] bdbm: [EUNJI] [DATA SAFE] lpa = 201599 +[47295.894566] bdbm: [EUNJI] [DATA SAFE] lpa = 201600 +[47295.895040] bdbm: [EUNJI] [DATA SAFE] lpa = 201601 +[47295.895513] bdbm: [EUNJI] [DATA SAFE] lpa = 201602 +[47295.895987] bdbm: [EUNJI] [DATA SAFE] lpa = 201603 +[47295.896461] bdbm: [EUNJI] [DATA SAFE] lpa = 201604 +[47295.896935] bdbm: [EUNJI] [DATA SAFE] lpa = 201605 +[47295.897409] bdbm: [EUNJI] [DATA SAFE] lpa = 201606 +[47295.897883] bdbm: [EUNJI] [DATA SAFE] lpa = 201607 +[47295.898357] bdbm: [EUNJI] [DATA SAFE] lpa = 201608 +[47295.898833] bdbm: [EUNJI] [DATA SAFE] lpa = 201609 +[47295.899306] bdbm: [EUNJI] [DATA SAFE] lpa = 201610 +[47295.899781] bdbm: [EUNJI] [DATA SAFE] lpa = 201611 +[47295.900255] bdbm: [EUNJI] [DATA SAFE] lpa = 201612 +[47295.900729] bdbm: [EUNJI] [DATA SAFE] lpa = 201613 +[47295.901203] bdbm: [EUNJI] [DATA SAFE] lpa = 201614 +[47295.901675] bdbm: [EUNJI] [DATA SAFE] lpa = 201615 +[47295.902152] bdbm: [EUNJI] [DATA SAFE] lpa = 201616 +[47295.902626] bdbm: [EUNJI] [DATA SAFE] lpa = 201617 +[47295.903099] bdbm: [EUNJI] [DATA SAFE] lpa = 201618 +[47295.903573] bdbm: [EUNJI] [DATA SAFE] lpa = 201619 +[47295.904046] bdbm: [EUNJI] [DATA SAFE] lpa = 201620 +[47295.904520] bdbm: [EUNJI] [DATA SAFE] lpa = 201621 +[47295.904992] bdbm: [EUNJI] [DATA SAFE] lpa = 201622 +[47295.905466] bdbm: [EUNJI] [DATA SAFE] lpa = 201623 +[47295.905941] bdbm: [EUNJI] [DATA SAFE] lpa = 201624 +[47295.906416] bdbm: [EUNJI] [DATA SAFE] lpa = 201625 +[47295.906888] bdbm: [EUNJI] [DATA SAFE] lpa = 201626 +[47295.907362] bdbm: [EUNJI] [DATA SAFE] lpa = 201627 +[47295.907836] bdbm: [EUNJI] [DATA SAFE] lpa = 201628 +[47295.908309] bdbm: [EUNJI] [DATA SAFE] lpa = 201629 +[47295.908783] bdbm: [EUNJI] [DATA SAFE] lpa = 201630 +[47295.909257] bdbm: [EUNJI] [DATA SAFE] lpa = 201631 +[47295.909728] bdbm: [EUNJI] [DATA SAFE] lpa = 201632 +[47295.910217] bdbm: [EUNJI] [DATA SAFE] lpa = 201633 +[47295.910690] bdbm: [EUNJI] [DATA SAFE] lpa = 201634 +[47295.911166] bdbm: [EUNJI] [DATA SAFE] lpa = 201635 +[47295.911640] bdbm: [EUNJI] [DATA SAFE] lpa = 201636 +[47295.912115] bdbm: [EUNJI] [DATA SAFE] lpa = 201637 +[47295.912589] bdbm: [EUNJI] [DATA SAFE] lpa = 201638 +[47295.913063] bdbm: [EUNJI] [DATA SAFE] lpa = 201639 +[47295.913535] bdbm: [EUNJI] [DATA SAFE] lpa = 201640 +[47295.914010] bdbm: [EUNJI] [DATA SAFE] lpa = 201641 +[47295.914484] bdbm: [EUNJI] [DATA SAFE] lpa = 201642 +[47295.914959] bdbm: [EUNJI] [DATA SAFE] lpa = 201643 +[47295.915433] bdbm: [EUNJI] [DATA SAFE] lpa = 201644 +[47295.915909] bdbm: [EUNJI] [DATA SAFE] lpa = 201645 +[47295.916383] bdbm: [EUNJI] [DATA SAFE] lpa = 201646 +[47295.916856] bdbm: [EUNJI] [DATA SAFE] lpa = 201647 +[47295.917330] bdbm: [EUNJI] [DATA SAFE] lpa = 201648 +[47295.917806] bdbm: [EUNJI] [DATA SAFE] lpa = 201649 +[47295.918283] bdbm: [EUNJI] [DATA SAFE] lpa = 201650 +[47295.918760] bdbm: [EUNJI] [DATA SAFE] lpa = 201651 +[47295.919235] bdbm: [EUNJI] [DATA SAFE] lpa = 201652 +[47295.919710] bdbm: [EUNJI] [DATA SAFE] lpa = 201653 +[47295.920184] bdbm: [EUNJI] [DATA SAFE] lpa = 201654 +[47295.920658] bdbm: [EUNJI] [DATA SAFE] lpa = 201655 +[47295.921131] bdbm: [EUNJI] [DATA SAFE] lpa = 201656 +[47295.921609] bdbm: [EUNJI] [DATA SAFE] lpa = 201657 +[47295.922083] bdbm: [EUNJI] [DATA SAFE] lpa = 201658 +[47295.922556] bdbm: [EUNJI] [DATA SAFE] lpa = 201659 +[47295.923029] bdbm: [EUNJI] [DATA SAFE] lpa = 201660 +[47295.923503] bdbm: [EUNJI] [DATA SAFE] lpa = 201661 +[47295.923976] bdbm: [EUNJI] [DATA SAFE] lpa = 201662 +[47295.924450] bdbm: [EUNJI] [DATA SAFE] lpa = 201663 +[47295.924922] bdbm: [EUNJI] [DATA SAFE] lpa = 201664 +[47295.925397] bdbm: [EUNJI] [DATA SAFE] lpa = 201665 +[47295.925869] bdbm: [EUNJI] [DATA SAFE] lpa = 201666 +[47295.926342] bdbm: [EUNJI] [DATA SAFE] lpa = 201667 +[47295.926816] bdbm: [EUNJI] [DATA SAFE] lpa = 201668 +[47295.927289] bdbm: [EUNJI] [DATA SAFE] lpa = 201669 +[47295.927764] bdbm: [EUNJI] [DATA SAFE] lpa = 201670 +[47295.928237] bdbm: [EUNJI] [DATA SAFE] lpa = 201671 +[47295.928711] bdbm: [EUNJI] [DATA SAFE] lpa = 201672 +[47295.929184] bdbm: [EUNJI] [DATA SAFE] lpa = 201673 +[47295.929660] bdbm: [EUNJI] [DATA SAFE] lpa = 201674 +[47295.930132] bdbm: [EUNJI] [DATA SAFE] lpa = 201675 +[47295.930606] bdbm: [EUNJI] [DATA SAFE] lpa = 201676 +[47295.931082] bdbm: [EUNJI] [DATA SAFE] lpa = 201677 +[47295.931552] bdbm: [EUNJI] [DATA SAFE] lpa = 201678 +[47295.932026] bdbm: [EUNJI] [DATA SAFE] lpa = 201679 +[47295.932500] bdbm: [EUNJI] [DATA SAFE] lpa = 201680 +[47295.932976] bdbm: [EUNJI] [DATA SAFE] lpa = 201681 +[47295.933448] bdbm: [EUNJI] [DATA SAFE] lpa = 201682 +[47295.933925] bdbm: [EUNJI] [DATA SAFE] lpa = 201683 +[47295.934399] bdbm: [EUNJI] [DATA SAFE] lpa = 201684 +[47295.934873] bdbm: [EUNJI] [DATA SAFE] lpa = 201685 +[47295.935347] bdbm: [EUNJI] [DATA SAFE] lpa = 201686 +[47295.935820] bdbm: [EUNJI] [DATA SAFE] lpa = 201687 +[47295.936292] bdbm: [EUNJI] [DATA SAFE] lpa = 201688 +[47295.936766] bdbm: [EUNJI] [DATA SAFE] lpa = 201689 +[47295.937239] bdbm: [EUNJI] [DATA SAFE] lpa = 201690 +[47295.937712] bdbm: [EUNJI] [DATA SAFE] lpa = 201691 +[47295.938198] bdbm: [EUNJI] [DATA SAFE] lpa = 201692 +[47295.938672] bdbm: [EUNJI] [DATA SAFE] lpa = 201693 +[47295.939145] bdbm: [EUNJI] [DATA SAFE] lpa = 201694 +[47295.939619] bdbm: [EUNJI] [DATA SAFE] lpa = 201695 +[47295.940091] bdbm: [EUNJI] [DATA SAFE] lpa = 201696 +[47295.940565] bdbm: [EUNJI] [DATA SAFE] lpa = 201697 +[47295.941040] bdbm: [EUNJI] [DATA SAFE] lpa = 201698 +[47295.941513] bdbm: [EUNJI] [DATA SAFE] lpa = 201699 +[47295.941988] bdbm: [EUNJI] [DATA SAFE] lpa = 201700 +[47295.942461] bdbm: [EUNJI] [DATA SAFE] lpa = 201701 +[47295.942935] bdbm: [EUNJI] [DATA SAFE] lpa = 201702 +[47295.943409] bdbm: [EUNJI] [DATA SAFE] lpa = 201703 +[47295.943884] bdbm: [EUNJI] [DATA SAFE] lpa = 201704 +[47295.944358] bdbm: [EUNJI] [DATA SAFE] lpa = 201705 +[47295.944833] bdbm: [EUNJI] [DATA SAFE] lpa = 201706 +[47295.945312] bdbm: [EUNJI] [DATA SAFE] lpa = 201707 +[47295.945788] bdbm: [EUNJI] [DATA SAFE] lpa = 201708 +[47295.946262] bdbm: [EUNJI] [DATA SAFE] lpa = 201709 +[47295.946736] bdbm: [EUNJI] [DATA SAFE] lpa = 201710 +[47295.947210] bdbm: [EUNJI] [DATA SAFE] lpa = 201711 +[47295.947684] bdbm: [EUNJI] [DATA SAFE] lpa = 201712 +[47295.948158] bdbm: [EUNJI] [DATA SAFE] lpa = 201713 +[47295.948632] bdbm: [EUNJI] [DATA SAFE] lpa = 201714 +[47295.949106] bdbm: [EUNJI] [DATA SAFE] lpa = 201715 +[47295.949624] bdbm: [EUNJI] [DATA SAFE] lpa = 201716 +[47295.950121] bdbm: [EUNJI] [DATA SAFE] lpa = 201717 +[47295.950616] bdbm: [EUNJI] [DATA SAFE] lpa = 201718 +[47295.951089] bdbm: [EUNJI] [DATA SAFE] lpa = 201719 +[47295.951563] bdbm: [EUNJI] [DATA SAFE] lpa = 201720 +[47295.952080] bdbm: [EUNJI] [DATA SAFE] lpa = 201721 +[47295.952581] bdbm: [EUNJI] [DATA SAFE] lpa = 201722 +[47295.953053] bdbm: [EUNJI] [DATA SAFE] lpa = 201723 +[47295.953524] bdbm: [EUNJI] [DATA SAFE] lpa = 201724 +[47295.954027] bdbm: [EUNJI] [DATA SAFE] lpa = 201725 +[47295.954549] bdbm: [EUNJI] [DATA SAFE] lpa = 201726 +[47295.955055] bdbm: [EUNJI] [DATA SAFE] lpa = 201727 +[47295.955578] bdbm: [EUNJI] [DATA SAFE] lpa = 201728 +[47295.956083] bdbm: [EUNJI] [DATA SAFE] lpa = 201729 +[47295.956597] bdbm: [EUNJI] [DATA SAFE] lpa = 201730 +[47295.957100] bdbm: [EUNJI] [DATA SAFE] lpa = 201731 +[47295.957574] bdbm: [EUNJI] [DATA SAFE] lpa = 201732 +[47295.958088] bdbm: [EUNJI] [DATA SAFE] lpa = 201733 +[47295.958596] bdbm: [EUNJI] [DATA SAFE] lpa = 201734 +[47295.959117] bdbm: [EUNJI] [DATA SAFE] lpa = 201735 +[47295.959627] bdbm: [EUNJI] [DATA SAFE] lpa = 201736 +[47295.960149] bdbm: [EUNJI] [DATA SAFE] lpa = 201737 +[47295.960655] bdbm: [EUNJI] [DATA SAFE] lpa = 201738 +[47295.961169] bdbm: [EUNJI] [DATA SAFE] lpa = 201739 +[47295.961690] bdbm: [EUNJI] [DATA SAFE] lpa = 201740 +[47295.962210] bdbm: [EUNJI] [DATA SAFE] lpa = 201741 +[47295.962718] bdbm: [EUNJI] [DATA SAFE] lpa = 201742 +[47295.963237] bdbm: [EUNJI] [DATA SAFE] lpa = 201743 +[47295.963745] bdbm: [EUNJI] [DATA SAFE] lpa = 201744 +[47295.964270] bdbm: [EUNJI] [DATA SAFE] lpa = 201745 +[47295.964774] bdbm: [EUNJI] [DATA SAFE] lpa = 201746 +[47295.965281] bdbm: [EUNJI] [DATA SAFE] lpa = 201747 +[47295.965786] bdbm: [EUNJI] [DATA SAFE] lpa = 201748 +[47295.966288] bdbm: [EUNJI] [DATA SAFE] lpa = 201749 +[47295.966790] bdbm: [EUNJI] [DATA SAFE] lpa = 201750 +[47295.967314] bdbm: [EUNJI] [DATA SAFE] lpa = 201751 +[47295.967838] bdbm: [EUNJI] [DATA SAFE] lpa = 201752 +[47295.968356] bdbm: [EUNJI] [DATA SAFE] lpa = 201753 +[47295.968874] bdbm: [EUNJI] [DATA SAFE] lpa = 201754 +[47295.969378] bdbm: [EUNJI] [DATA SAFE] lpa = 201755 +[47295.969887] bdbm: [EUNJI] [DATA SAFE] lpa = 201756 +[47295.970407] bdbm: [EUNJI] [DATA SAFE] lpa = 201757 +[47295.970914] bdbm: [EUNJI] [DATA SAFE] lpa = 201758 +[47295.971433] bdbm: [EUNJI] [DATA SAFE] lpa = 201759 +[47295.971958] bdbm: [EUNJI] [DATA SAFE] lpa = 201760 +[47295.972481] bdbm: [EUNJI] [DATA SAFE] lpa = 201761 +[47295.972983] bdbm: [EUNJI] [DATA SAFE] lpa = 201762 +[47295.973505] bdbm: [EUNJI] [DATA SAFE] lpa = 201763 +[47295.974020] bdbm: [EUNJI] [DATA SAFE] lpa = 201764 +[47295.974544] bdbm: [EUNJI] [DATA SAFE] lpa = 201765 +[47295.975054] bdbm: [EUNJI] [DATA SAFE] lpa = 201766 +[47295.975573] bdbm: [EUNJI] [DATA SAFE] lpa = 201767 +[47295.976123] bdbm: [EUNJI] [DATA SAFE] lpa = 201768 +[47295.976674] bdbm: [EUNJI] [DATA SAFE] lpa = 201769 +[47295.977224] bdbm: [EUNJI] [DATA SAFE] lpa = 201770 +[47295.977757] bdbm: [EUNJI] [DATA SAFE] lpa = 201771 +[47295.978296] bdbm: [EUNJI] [DATA SAFE] lpa = 201772 +[47295.978770] bdbm: [EUNJI] [DATA SAFE] lpa = 201773 +[47295.979241] bdbm: [EUNJI] [DATA SAFE] lpa = 201774 +[47295.979741] bdbm: [EUNJI] [DATA SAFE] lpa = 201775 +[47295.980237] bdbm: [EUNJI] [DATA SAFE] lpa = 201776 +[47295.980743] bdbm: [EUNJI] [DATA SAFE] lpa = 201777 +[47295.981234] bdbm: [EUNJI] [DATA SAFE] lpa = 201778 +[47295.981710] bdbm: [EUNJI] [DATA SAFE] lpa = 201779 +[47295.982217] bdbm: [EUNJI] [DATA SAFE] lpa = 201780 +[47295.982729] bdbm: [EUNJI] [DATA SAFE] lpa = 201781 +[47295.983254] bdbm: [EUNJI] [DATA SAFE] lpa = 201782 +[47295.983767] bdbm: [EUNJI] [DATA SAFE] lpa = 201783 +[47295.984290] bdbm: [EUNJI] [DATA SAFE] lpa = 201784 +[47295.984798] bdbm: [EUNJI] [DATA SAFE] lpa = 201785 +[47295.985295] bdbm: [EUNJI] [DATA SAFE] lpa = 201786 +[47295.985768] bdbm: [EUNJI] [DATA SAFE] lpa = 201787 +[47295.986271] bdbm: [EUNJI] [DATA SAFE] lpa = 201788 +[47295.986777] bdbm: [EUNJI] [DATA SAFE] lpa = 201789 +[47295.987296] bdbm: [EUNJI] [DATA SAFE] lpa = 201790 +[47295.987820] bdbm: [EUNJI] [DATA SAFE] lpa = 201791 +[47295.988308] bdbm: [EUNJI] [DATA SAFE] lpa = 201792 +[47295.988784] bdbm: [EUNJI] [DATA SAFE] lpa = 201793 +[47295.989255] bdbm: [EUNJI] [DATA SAFE] lpa = 201794 +[47295.989732] bdbm: [EUNJI] [DATA SAFE] lpa = 201795 +[47295.990206] bdbm: [EUNJI] [DATA SAFE] lpa = 201796 +[47295.990678] bdbm: [EUNJI] [DATA SAFE] lpa = 201797 +[47295.991152] bdbm: [EUNJI] [DATA SAFE] lpa = 201798 +[47295.991625] bdbm: [EUNJI] [DATA SAFE] lpa = 201799 +[47295.992100] bdbm: [EUNJI] [DATA SAFE] lpa = 201800 +[47295.992577] bdbm: [EUNJI] [DATA SAFE] lpa = 201801 +[47295.993050] bdbm: [EUNJI] [DATA SAFE] lpa = 201802 +[47295.993524] bdbm: [EUNJI] [DATA SAFE] lpa = 201803 +[47295.993999] bdbm: [EUNJI] [DATA SAFE] lpa = 201804 +[47295.994472] bdbm: [EUNJI] [DATA SAFE] lpa = 201805 +[47295.994948] bdbm: [EUNJI] [DATA SAFE] lpa = 201806 +[47295.995421] bdbm: [EUNJI] [DATA SAFE] lpa = 201807 +[47295.995892] bdbm: [EUNJI] [DATA SAFE] lpa = 201808 +[47295.996365] bdbm: [EUNJI] [DATA SAFE] lpa = 201809 +[47295.996838] bdbm: [EUNJI] [DATA SAFE] lpa = 201810 +[47295.997311] bdbm: [EUNJI] [DATA SAFE] lpa = 201811 +[47295.997787] bdbm: [EUNJI] [DATA SAFE] lpa = 201812 +[47295.998265] bdbm: [EUNJI] [DATA SAFE] lpa = 201813 +[47295.998738] bdbm: [EUNJI] [DATA SAFE] lpa = 201814 +[47295.999211] bdbm: [EUNJI] [DATA SAFE] lpa = 201815 +[47295.999686] bdbm: [EUNJI] [DATA SAFE] lpa = 201816 +[47296.000165] bdbm: [EUNJI] [DATA SAFE] lpa = 201817 +[47296.000637] bdbm: [EUNJI] [DATA SAFE] lpa = 201818 +[47296.001111] bdbm: [EUNJI] [DATA SAFE] lpa = 201819 +[47296.001595] bdbm: [EUNJI] [DATA SAFE] lpa = 201820 +[47296.002076] bdbm: [EUNJI] [DATA SAFE] lpa = 201821 +[47296.002550] bdbm: [EUNJI] [DATA SAFE] lpa = 201822 +[47296.003022] bdbm: [EUNJI] [DATA SAFE] lpa = 201823 +[47296.003497] bdbm: [EUNJI] [DATA SAFE] lpa = 201824 +[47296.003972] bdbm: [EUNJI] [DATA SAFE] lpa = 201825 +[47296.004447] bdbm: [EUNJI] [DATA SAFE] lpa = 201826 +[47296.004923] bdbm: [EUNJI] [DATA SAFE] lpa = 201827 +[47296.005397] bdbm: [EUNJI] [DATA SAFE] lpa = 201828 +[47296.005875] bdbm: [EUNJI] [DATA SAFE] lpa = 201829 +[47296.006350] bdbm: [EUNJI] [DATA SAFE] lpa = 201830 +[47296.006826] bdbm: [EUNJI] [DATA SAFE] lpa = 201831 +[47296.007301] bdbm: [EUNJI] [DATA SAFE] lpa = 201832 +[47296.007779] bdbm: [EUNJI] [DATA SAFE] lpa = 201833 +[47296.008253] bdbm: [EUNJI] [DATA SAFE] lpa = 201834 +[47296.008728] bdbm: [EUNJI] [DATA SAFE] lpa = 201835 +[47296.009201] bdbm: [EUNJI] [DATA SAFE] lpa = 201836 +[47296.009678] bdbm: [EUNJI] [DATA SAFE] lpa = 201837 +[47296.010156] bdbm: [EUNJI] [DATA SAFE] lpa = 201838 +[47296.010631] bdbm: [EUNJI] [DATA SAFE] lpa = 201839 +[47296.011106] bdbm: [EUNJI] [DATA SAFE] lpa = 201840 +[47296.011581] bdbm: [EUNJI] [DATA SAFE] lpa = 201841 +[47296.012054] bdbm: [EUNJI] [DATA SAFE] lpa = 201842 +[47296.012530] bdbm: [EUNJI] [DATA SAFE] lpa = 201843 +[47296.013005] bdbm: [EUNJI] [DATA SAFE] lpa = 201844 +[47296.013479] bdbm: [EUNJI] [DATA SAFE] lpa = 201845 +[47296.013957] bdbm: [EUNJI] [DATA SAFE] lpa = 201846 +[47296.014432] bdbm: [EUNJI] [DATA SAFE] lpa = 201847 +[47296.014907] bdbm: [EUNJI] [DATA SAFE] lpa = 201848 +[47296.015382] bdbm: [EUNJI] [DATA SAFE] lpa = 201849 +[47296.015856] bdbm: [EUNJI] [DATA SAFE] lpa = 201850 +[47296.016326] bdbm: [EUNJI] [DATA SAFE] lpa = 201851 +[47296.016801] bdbm: [EUNJI] [DATA SAFE] lpa = 201852 +[47296.017274] bdbm: [EUNJI] [DATA SAFE] lpa = 201853 +[47296.017749] bdbm: [EUNJI] [DATA SAFE] lpa = 201854 +[47296.018237] bdbm: [EUNJI] [DATA SAFE] lpa = 201855 +[47296.018711] bdbm: [EUNJI] [DATA SAFE] lpa = 201856 +[47296.019186] bdbm: [EUNJI] [DATA SAFE] lpa = 201857 +[47296.019660] bdbm: [EUNJI] [DATA SAFE] lpa = 201858 +[47296.020133] bdbm: [EUNJI] [DATA SAFE] lpa = 201859 +[47296.020608] bdbm: [EUNJI] [DATA SAFE] lpa = 201860 +[47296.021083] bdbm: [EUNJI] [DATA SAFE] lpa = 201861 +[47296.021557] bdbm: [EUNJI] [DATA SAFE] lpa = 201862 +[47296.022033] bdbm: [EUNJI] [DATA SAFE] lpa = 201863 +[47296.022504] bdbm: [EUNJI] [DATA SAFE] lpa = 201864 +[47296.022978] bdbm: [EUNJI] [DATA SAFE] lpa = 201865 +[47296.023452] bdbm: [EUNJI] [DATA SAFE] lpa = 201866 +[47296.023925] bdbm: [EUNJI] [DATA SAFE] lpa = 201867 +[47296.024399] bdbm: [EUNJI] [DATA SAFE] lpa = 201868 +[47296.024874] bdbm: [EUNJI] [DATA SAFE] lpa = 201869 +[47296.025349] bdbm: [EUNJI] [DATA SAFE] lpa = 201870 +[47296.025824] bdbm: [EUNJI] [DATA SAFE] lpa = 201871 +[47296.026299] bdbm: [EUNJI] [DATA SAFE] lpa = 201872 +[47296.026774] bdbm: [EUNJI] [DATA SAFE] lpa = 201873 +[47296.027250] bdbm: [EUNJI] [DATA SAFE] lpa = 201874 +[47296.027724] bdbm: [EUNJI] [DATA SAFE] lpa = 201875 +[47296.028197] bdbm: [EUNJI] [DATA SAFE] lpa = 201876 +[47296.028672] bdbm: [EUNJI] [DATA SAFE] lpa = 201877 +[47296.029145] bdbm: [EUNJI] [DATA SAFE] lpa = 201878 +[47296.029625] bdbm: [EUNJI] [DATA SAFE] lpa = 201879 +[47296.030100] bdbm: [EUNJI] [DATA SAFE] lpa = 201880 +[47296.030575] bdbm: [EUNJI] [DATA SAFE] lpa = 201881 +[47296.031047] bdbm: [EUNJI] [DATA SAFE] lpa = 201882 +[47296.031520] bdbm: [EUNJI] [DATA SAFE] lpa = 201883 +[47296.031994] bdbm: [EUNJI] [DATA SAFE] lpa = 201884 +[47296.032470] bdbm: [EUNJI] [DATA SAFE] lpa = 201885 +[47296.032942] bdbm: [EUNJI] [DATA SAFE] lpa = 201886 +[47296.033415] bdbm: [EUNJI] [DATA SAFE] lpa = 201887 +[47296.033888] bdbm: [EUNJI] [DATA SAFE] lpa = 201888 +[47296.034365] bdbm: [EUNJI] [DATA SAFE] lpa = 201889 +[47296.034839] bdbm: [EUNJI] [DATA SAFE] lpa = 201890 +[47296.035313] bdbm: [EUNJI] [DATA SAFE] lpa = 201891 +[47296.035787] bdbm: [EUNJI] [DATA SAFE] lpa = 201892 +[47296.036262] bdbm: [EUNJI] [DATA SAFE] lpa = 201893 +[47296.036736] bdbm: [EUNJI] [DATA SAFE] lpa = 201894 +[47296.037211] bdbm: [EUNJI] [DATA SAFE] lpa = 201895 +[47296.037685] bdbm: [EUNJI] [DATA SAFE] lpa = 201896 +[47296.038169] bdbm: [EUNJI] [DATA SAFE] lpa = 201897 +[47296.038644] bdbm: [EUNJI] [DATA SAFE] lpa = 201898 +[47296.039119] bdbm: [EUNJI] [DATA SAFE] lpa = 201899 +[47296.039597] bdbm: [EUNJI] [DATA SAFE] lpa = 201900 +[47296.040071] bdbm: [EUNJI] [DATA SAFE] lpa = 201901 +[47296.040544] bdbm: [EUNJI] [DATA SAFE] lpa = 201902 +[47296.041023] bdbm: [EUNJI] [DATA SAFE] lpa = 201903 +[47296.041498] bdbm: [EUNJI] [DATA SAFE] lpa = 201904 +[47296.041974] bdbm: [EUNJI] [DATA SAFE] lpa = 201905 +[47296.042453] bdbm: [EUNJI] [DATA SAFE] lpa = 201906 +[47296.042929] bdbm: [EUNJI] [DATA SAFE] lpa = 201907 +[47296.043406] bdbm: [EUNJI] [DATA SAFE] lpa = 201908 +[47296.043883] bdbm: [EUNJI] [DATA SAFE] lpa = 201909 +[47296.044361] bdbm: [EUNJI] [DATA SAFE] lpa = 201910 +[47296.044835] bdbm: [EUNJI] [DATA SAFE] lpa = 201911 +[47296.045311] bdbm: [EUNJI] [DATA SAFE] lpa = 201912 +[47296.045790] bdbm: [EUNJI] [DATA SAFE] lpa = 201913 +[47296.046263] bdbm: [EUNJI] [DATA SAFE] lpa = 201914 +[47296.046737] bdbm: [EUNJI] [DATA SAFE] lpa = 201915 +[47296.047208] bdbm: [EUNJI] [DATA SAFE] lpa = 201916 +[47296.047679] bdbm: [EUNJI] [DATA SAFE] lpa = 201917 +[47296.048153] bdbm: [EUNJI] [DATA SAFE] lpa = 201918 +[47296.048623] bdbm: [EUNJI] [DATA SAFE] lpa = 201919 +[47296.049099] bdbm: [EUNJI] [DATA SAFE] lpa = 201920 +[47296.049575] bdbm: [EUNJI] [DATA SAFE] lpa = 201921 +[47296.050058] bdbm: [EUNJI] [DATA SAFE] lpa = 201922 +[47296.050534] bdbm: [EUNJI] [DATA SAFE] lpa = 201923 +[47296.051004] bdbm: [EUNJI] [DATA SAFE] lpa = 201924 +[47296.051475] bdbm: [EUNJI] [DATA SAFE] lpa = 201925 +[47296.051947] bdbm: [EUNJI] [DATA SAFE] lpa = 201926 +[47296.052422] bdbm: [EUNJI] [DATA SAFE] lpa = 201927 +[47296.052893] bdbm: [EUNJI] [DATA SAFE] lpa = 201928 +[47296.053371] bdbm: [EUNJI] [DATA SAFE] lpa = 201929 +[47296.053842] bdbm: [EUNJI] [DATA SAFE] lpa = 201930 +[47296.054317] bdbm: [EUNJI] [DATA SAFE] lpa = 201931 +[47296.054790] bdbm: [EUNJI] [DATA SAFE] lpa = 201932 +[47296.055263] bdbm: [EUNJI] [DATA SAFE] lpa = 201933 +[47296.055738] bdbm: [EUNJI] [DATA SAFE] lpa = 201934 +[47296.056211] bdbm: [EUNJI] [DATA SAFE] lpa = 201935 +[47296.056684] bdbm: [EUNJI] [DATA SAFE] lpa = 201936 +[47296.057159] bdbm: [EUNJI] [DATA SAFE] lpa = 201937 +[47296.057636] bdbm: [EUNJI] [DATA SAFE] lpa = 201938 +[47296.058126] bdbm: [EUNJI] [DATA SAFE] lpa = 201939 +[47296.058597] bdbm: [EUNJI] [DATA SAFE] lpa = 201940 +[47296.059071] bdbm: [EUNJI] [DATA SAFE] lpa = 201941 +[47296.059547] bdbm: [EUNJI] [DATA SAFE] lpa = 201942 +[47296.060018] bdbm: [EUNJI] [DATA SAFE] lpa = 201943 +[47296.060495] bdbm: [EUNJI] [DATA SAFE] lpa = 201944 +[47296.060970] bdbm: [EUNJI] [DATA SAFE] lpa = 201945 +[47296.061445] bdbm: [EUNJI] [DATA SAFE] lpa = 201946 +[47296.061921] bdbm: [EUNJI] [DATA SAFE] lpa = 201947 +[47296.062396] bdbm: [EUNJI] [DATA SAFE] lpa = 201948 +[47296.062870] bdbm: [EUNJI] [DATA SAFE] lpa = 201949 +[47296.063344] bdbm: [EUNJI] [DATA SAFE] lpa = 201950 +[47296.063818] bdbm: [EUNJI] [DATA SAFE] lpa = 201951 +[47296.064291] bdbm: [EUNJI] [DATA SAFE] lpa = 201952 +[47296.064766] bdbm: [EUNJI] [DATA SAFE] lpa = 201953 +[47296.065239] bdbm: [EUNJI] [DATA SAFE] lpa = 201954 +[47296.065715] bdbm: [EUNJI] [DATA SAFE] lpa = 201955 +[47296.066192] bdbm: [EUNJI] [DATA SAFE] lpa = 201956 +[47296.066666] bdbm: [EUNJI] [DATA SAFE] lpa = 201957 +[47296.067140] bdbm: [EUNJI] [DATA SAFE] lpa = 201958 +[47296.067613] bdbm: [EUNJI] [DATA SAFE] lpa = 201959 +[47296.068089] bdbm: [EUNJI] [DATA SAFE] lpa = 201960 +[47296.068566] bdbm: [EUNJI] [DATA SAFE] lpa = 201961 +[47296.069040] bdbm: [EUNJI] [DATA SAFE] lpa = 201962 +[47296.069515] bdbm: [EUNJI] [DATA SAFE] lpa = 201963 +[47296.069993] bdbm: [EUNJI] [DATA SAFE] lpa = 201964 +[47296.070468] bdbm: [EUNJI] [DATA SAFE] lpa = 201965 +[47296.070942] bdbm: [EUNJI] [DATA SAFE] lpa = 201966 +[47296.071417] bdbm: [EUNJI] [DATA SAFE] lpa = 201967 +[47296.071893] bdbm: [EUNJI] [DATA SAFE] lpa = 201968 +[47296.072367] bdbm: [EUNJI] [DATA SAFE] lpa = 201969 +[47296.072843] bdbm: [EUNJI] [DATA SAFE] lpa = 201970 +[47296.073319] bdbm: [EUNJI] [DATA SAFE] lpa = 201971 +[47296.073798] bdbm: [EUNJI] [DATA SAFE] lpa = 201972 +[47296.074273] bdbm: [EUNJI] [DATA SAFE] lpa = 201973 +[47296.074750] bdbm: [EUNJI] [DATA SAFE] lpa = 201974 +[47296.075224] bdbm: [EUNJI] [DATA SAFE] lpa = 201975 +[47296.075699] bdbm: [EUNJI] [DATA SAFE] lpa = 201976 +[47296.076172] bdbm: [EUNJI] [DATA SAFE] lpa = 201977 +[47296.076647] bdbm: [EUNJI] [DATA SAFE] lpa = 201978 +[47296.077121] bdbm: [EUNJI] [DATA SAFE] lpa = 201979 +[47296.077627] bdbm: [EUNJI] [DATA SAFE] lpa = 201980 +[47296.078099] bdbm: [EUNJI] [DATA SAFE] lpa = 201981 +[47296.078577] bdbm: [EUNJI] [DATA SAFE] lpa = 201982 +[47296.079045] bdbm: [EUNJI] [DATA SAFE] lpa = 201983 +[47296.079514] bdbm: [EUNJI] [DATA SAFE] lpa = 201984 +[47296.080011] bdbm: [EUNJI] [DATA SAFE] lpa = 201985 +[47296.080510] bdbm: [EUNJI] [DATA SAFE] lpa = 201986 +[47296.081010] bdbm: [EUNJI] [DATA SAFE] lpa = 201987 +[47296.081483] bdbm: [EUNJI] [DATA SAFE] lpa = 201988 +[47296.081983] bdbm: [EUNJI] [DATA SAFE] lpa = 201989 +[47296.082476] bdbm: [EUNJI] [DATA SAFE] lpa = 201990 +[47296.082948] bdbm: [EUNJI] [DATA SAFE] lpa = 201991 +[47296.083431] bdbm: [EUNJI] [DATA SAFE] lpa = 201992 +[47296.083932] bdbm: [EUNJI] [DATA SAFE] lpa = 201993 +[47296.084435] bdbm: [EUNJI] [DATA SAFE] lpa = 201994 +[47296.084909] bdbm: [EUNJI] [DATA SAFE] lpa = 201995 +[47296.085379] bdbm: [EUNJI] [DATA SAFE] lpa = 201996 +[47296.085882] bdbm: [EUNJI] [DATA SAFE] lpa = 201997 +[47296.086375] bdbm: [EUNJI] [DATA SAFE] lpa = 201998 +[47296.086884] bdbm: [EUNJI] [DATA SAFE] lpa = 201999 +[47296.087357] bdbm: [EUNJI] [DATA SAFE] lpa = 202000 +[47296.087838] bdbm: [EUNJI] [DATA SAFE] lpa = 202001 +[47296.088310] bdbm: [EUNJI] [DATA SAFE] lpa = 202002 +[47296.088786] bdbm: [EUNJI] [DATA SAFE] lpa = 202003 +[47296.089261] bdbm: [EUNJI] [DATA SAFE] lpa = 202004 +[47296.089740] bdbm: [EUNJI] [DATA SAFE] lpa = 202005 +[47296.090214] bdbm: [EUNJI] [DATA SAFE] lpa = 202006 +[47296.090692] bdbm: [EUNJI] [DATA SAFE] lpa = 202007 +[47296.091168] bdbm: [EUNJI] [DATA SAFE] lpa = 202008 +[47296.091644] bdbm: [EUNJI] [DATA SAFE] lpa = 202009 +[47296.092121] bdbm: [EUNJI] [DATA SAFE] lpa = 202010 +[47296.092598] bdbm: [EUNJI] [DATA SAFE] lpa = 202011 +[47296.093076] bdbm: [EUNJI] [DATA SAFE] lpa = 202012 +[47296.093548] bdbm: [EUNJI] [DATA SAFE] lpa = 202013 +[47296.094022] bdbm: [EUNJI] [DATA SAFE] lpa = 202014 +[47296.094499] bdbm: [EUNJI] [DATA SAFE] lpa = 202015 +[47296.094975] bdbm: [EUNJI] [DATA SAFE] lpa = 202016 +[47296.095452] bdbm: [EUNJI] [DATA SAFE] lpa = 202017 +[47296.095924] bdbm: [EUNJI] [DATA SAFE] lpa = 202018 +[47296.096400] bdbm: [EUNJI] [DATA SAFE] lpa = 202019 +[47296.096878] bdbm: [EUNJI] [DATA SAFE] lpa = 202020 +[47296.097354] bdbm: [EUNJI] [DATA SAFE] lpa = 202021 +[47296.097832] bdbm: [EUNJI] [DATA SAFE] lpa = 202022 +[47296.098309] bdbm: [EUNJI] [DATA SAFE] lpa = 202023 +[47296.098784] bdbm: [EUNJI] [DATA SAFE] lpa = 202024 +[47296.099260] bdbm: [EUNJI] [DATA SAFE] lpa = 202025 +[47296.099734] bdbm: [EUNJI] [DATA SAFE] lpa = 202026 +[47296.100210] bdbm: [EUNJI] [DATA SAFE] lpa = 202027 +[47296.100689] bdbm: [EUNJI] [DATA SAFE] lpa = 202028 +[47296.101165] bdbm: [EUNJI] [DATA SAFE] lpa = 202029 +[47296.101639] bdbm: [EUNJI] [DATA SAFE] lpa = 202030 +[47296.102114] bdbm: [EUNJI] [DATA SAFE] lpa = 202031 +[47296.102589] bdbm: [EUNJI] [DATA SAFE] lpa = 202032 +[47296.103064] bdbm: [EUNJI] [DATA SAFE] lpa = 202033 +[47296.103540] bdbm: [EUNJI] [DATA SAFE] lpa = 202034 +[47296.104016] bdbm: [EUNJI] [DATA SAFE] lpa = 202035 +[47296.104493] bdbm: [EUNJI] [DATA SAFE] lpa = 202036 +[47296.104967] bdbm: [EUNJI] [DATA SAFE] lpa = 202037 +[47296.105442] bdbm: [EUNJI] [DATA SAFE] lpa = 202038 +[47296.105920] bdbm: [EUNJI] [DATA SAFE] lpa = 202039 +[47296.106395] bdbm: [EUNJI] [DATA SAFE] lpa = 202040 +[47296.106871] bdbm: [EUNJI] [DATA SAFE] lpa = 202041 +[47296.107345] bdbm: [EUNJI] [DATA SAFE] lpa = 202042 +[47296.107819] bdbm: [EUNJI] [DATA SAFE] lpa = 202043 +[47296.108294] bdbm: [EUNJI] [DATA SAFE] lpa = 202044 +[47296.108768] bdbm: [EUNJI] [DATA SAFE] lpa = 202045 +[47296.109243] bdbm: [EUNJI] [DATA SAFE] lpa = 202046 +[47296.109714] bdbm: [EUNJI] [DATA SAFE] lpa = 202047 +[47296.110200] bdbm: [EUNJI] [DATA SAFE] lpa = 202048 +[47296.110675] bdbm: [EUNJI] [DATA SAFE] lpa = 202049 +[47296.111149] bdbm: [EUNJI] [DATA SAFE] lpa = 202050 +[47296.111624] bdbm: [EUNJI] [DATA SAFE] lpa = 202051 +[47296.112097] bdbm: [EUNJI] [DATA SAFE] lpa = 202052 +[47296.112574] bdbm: [EUNJI] [DATA SAFE] lpa = 202053 +[47296.113048] bdbm: [EUNJI] [DATA SAFE] lpa = 202054 +[47296.113523] bdbm: [EUNJI] [DATA SAFE] lpa = 202055 +[47296.113997] bdbm: [EUNJI] [DATA SAFE] lpa = 202056 +[47296.114472] bdbm: [EUNJI] [DATA SAFE] lpa = 202057 +[47296.114947] bdbm: [EUNJI] [DATA SAFE] lpa = 202058 +[47296.115421] bdbm: [EUNJI] [DATA SAFE] lpa = 202059 +[47296.115895] bdbm: [EUNJI] [DATA SAFE] lpa = 202060 +[47296.116370] bdbm: [EUNJI] [DATA SAFE] lpa = 202061 +[47296.116845] bdbm: [EUNJI] [DATA SAFE] lpa = 202062 +[47296.117319] bdbm: [EUNJI] [DATA SAFE] lpa = 202063 +[47296.117794] bdbm: [EUNJI] [DATA SAFE] lpa = 202064 +[47296.118269] bdbm: [EUNJI] [DATA SAFE] lpa = 202065 +[47296.118743] bdbm: [EUNJI] [DATA SAFE] lpa = 202066 +[47296.119217] bdbm: [EUNJI] [DATA SAFE] lpa = 202067 +[47296.119693] bdbm: [EUNJI] [DATA SAFE] lpa = 202068 +[47296.120168] bdbm: [EUNJI] [DATA SAFE] lpa = 202069 +[47296.120644] bdbm: [EUNJI] [DATA SAFE] lpa = 202070 +[47296.121120] bdbm: [EUNJI] [DATA SAFE] lpa = 202071 +[47296.121617] bdbm: [EUNJI] [DATA SAFE] lpa = 202072 +[47296.122103] bdbm: [EUNJI] [DATA SAFE] lpa = 202073 +[47296.122577] bdbm: [EUNJI] [DATA SAFE] lpa = 202074 +[47296.123052] bdbm: [EUNJI] [DATA SAFE] lpa = 202075 +[47296.123527] bdbm: [EUNJI] [DATA SAFE] lpa = 202076 +[47296.124001] bdbm: [EUNJI] [DATA SAFE] lpa = 202077 +[47296.124476] bdbm: [EUNJI] [DATA SAFE] lpa = 202078 +[47296.124950] bdbm: [EUNJI] [DATA SAFE] lpa = 202079 +[47296.125426] bdbm: [EUNJI] [DATA SAFE] lpa = 202080 +[47296.125897] bdbm: [EUNJI] [DATA SAFE] lpa = 202081 +[47296.126370] bdbm: [EUNJI] [DATA SAFE] lpa = 202082 +[47296.126846] bdbm: [EUNJI] [DATA SAFE] lpa = 202083 +[47296.127322] bdbm: [EUNJI] [DATA SAFE] lpa = 202084 +[47296.127796] bdbm: [EUNJI] [DATA SAFE] lpa = 202085 +[47296.128270] bdbm: [EUNJI] [DATA SAFE] lpa = 202086 +[47296.128747] bdbm: [EUNJI] [DATA SAFE] lpa = 202087 +[47296.129221] bdbm: [EUNJI] [DATA SAFE] lpa = 202088 +[47296.129694] bdbm: [EUNJI] [DATA SAFE] lpa = 202089 +[47296.130171] bdbm: [EUNJI] [DATA SAFE] lpa = 202090 +[47296.130648] bdbm: [EUNJI] [DATA SAFE] lpa = 202091 +[47296.131122] bdbm: [EUNJI] [DATA SAFE] lpa = 202092 +[47296.131597] bdbm: [EUNJI] [DATA SAFE] lpa = 202093 +[47296.132071] bdbm: [EUNJI] [DATA SAFE] lpa = 202094 +[47296.132547] bdbm: [EUNJI] [DATA SAFE] lpa = 202095 +[47296.133023] bdbm: [EUNJI] [DATA SAFE] lpa = 202096 +[47296.133496] bdbm: [EUNJI] [DATA SAFE] lpa = 202097 +[47296.133971] bdbm: [EUNJI] [DATA SAFE] lpa = 202098 +[47296.134446] bdbm: [EUNJI] [DATA SAFE] lpa = 202099 +[47296.134922] bdbm: [EUNJI] [DATA SAFE] lpa = 202100 +[47296.135397] bdbm: [EUNJI] [DATA SAFE] lpa = 202101 +[47296.135872] bdbm: [EUNJI] [DATA SAFE] lpa = 202102 +[47296.136347] bdbm: [EUNJI] [DATA SAFE] lpa = 202103 +[47296.136821] bdbm: [EUNJI] [DATA SAFE] lpa = 202104 +[47296.137296] bdbm: [EUNJI] [DATA SAFE] lpa = 202105 +[47296.137768] bdbm: [EUNJI] [DATA SAFE] lpa = 202106 +[47296.138243] bdbm: [EUNJI] [DATA SAFE] lpa = 202107 +[47296.138717] bdbm: [EUNJI] [DATA SAFE] lpa = 202108 +[47296.139191] bdbm: [EUNJI] [DATA SAFE] lpa = 202109 +[47296.139666] bdbm: [EUNJI] [DATA SAFE] lpa = 202110 +[47296.140136] bdbm: [EUNJI] [DATA SAFE] lpa = 202111 +[47296.140610] bdbm: [EUNJI] [DATA SAFE] lpa = 202112 +[47296.141084] bdbm: [EUNJI] [DATA SAFE] lpa = 202113 +[47296.141559] bdbm: [EUNJI] [DATA SAFE] lpa = 202114 +[47296.142029] bdbm: [EUNJI] [DATA SAFE] lpa = 202115 +[47296.142503] bdbm: [EUNJI] [DATA SAFE] lpa = 202116 +[47296.142976] bdbm: [EUNJI] [DATA SAFE] lpa = 202117 +[47296.143447] bdbm: [EUNJI] [DATA SAFE] lpa = 202118 +[47296.143922] bdbm: [EUNJI] [DATA SAFE] lpa = 202119 +[47296.144396] bdbm: [EUNJI] [DATA SAFE] lpa = 202120 +[47296.144870] bdbm: [EUNJI] [DATA SAFE] lpa = 202121 +[47296.145345] bdbm: [EUNJI] [DATA SAFE] lpa = 202122 +[47296.145817] bdbm: [EUNJI] [DATA SAFE] lpa = 202123 +[47296.146293] bdbm: [EUNJI] [DATA SAFE] lpa = 202124 +[47296.146768] bdbm: [EUNJI] [DATA SAFE] lpa = 202125 +[47296.147243] bdbm: [EUNJI] [DATA SAFE] lpa = 202126 +[47296.147718] bdbm: [EUNJI] [DATA SAFE] lpa = 202127 +[47296.148194] bdbm: [EUNJI] [DATA SAFE] lpa = 202128 +[47296.148667] bdbm: [EUNJI] [DATA SAFE] lpa = 202129 +[47296.149142] bdbm: [EUNJI] [DATA SAFE] lpa = 202130 +[47296.149640] bdbm: [EUNJI] [DATA SAFE] lpa = 202131 +[47296.150113] bdbm: [EUNJI] [DATA SAFE] lpa = 202132 +[47296.150587] bdbm: [EUNJI] [DATA SAFE] lpa = 202133 +[47296.151061] bdbm: [EUNJI] [DATA SAFE] lpa = 202134 +[47296.151536] bdbm: [EUNJI] [DATA SAFE] lpa = 202135 +[47296.152012] bdbm: [EUNJI] [DATA SAFE] lpa = 202136 +[47296.152487] bdbm: [EUNJI] [DATA SAFE] lpa = 202137 +[47296.152963] bdbm: [EUNJI] [DATA SAFE] lpa = 202138 +[47296.153438] bdbm: [EUNJI] [DATA SAFE] lpa = 202139 +[47296.153915] bdbm: [EUNJI] [DATA SAFE] lpa = 202140 +[47296.154390] bdbm: [EUNJI] [DATA SAFE] lpa = 202141 +[47296.154866] bdbm: [EUNJI] [DATA SAFE] lpa = 202142 +[47296.155340] bdbm: [EUNJI] [DATA SAFE] lpa = 202143 +[47296.155815] bdbm: [EUNJI] [DATA SAFE] lpa = 202144 +[47296.156292] bdbm: [EUNJI] [DATA SAFE] lpa = 202145 +[47296.156767] bdbm: [EUNJI] [DATA SAFE] lpa = 202146 +[47296.157243] bdbm: [EUNJI] [DATA SAFE] lpa = 202147 +[47296.157721] bdbm: [EUNJI] [DATA SAFE] lpa = 202148 +[47296.158197] bdbm: [EUNJI] [DATA SAFE] lpa = 202149 +[47296.158671] bdbm: [EUNJI] [DATA SAFE] lpa = 202150 +[47296.159146] bdbm: [EUNJI] [DATA SAFE] lpa = 202151 +[47296.159621] bdbm: [EUNJI] [DATA SAFE] lpa = 202152 +[47296.160096] bdbm: [EUNJI] [DATA SAFE] lpa = 202153 +[47296.160571] bdbm: [EUNJI] [DATA SAFE] lpa = 202154 +[47296.161047] bdbm: [EUNJI] [DATA SAFE] lpa = 202155 +[47296.161521] bdbm: [EUNJI] [DATA SAFE] lpa = 202156 +[47296.161999] bdbm: [EUNJI] [DATA SAFE] lpa = 202157 +[47296.162472] bdbm: [EUNJI] [DATA SAFE] lpa = 202158 +[47296.162946] bdbm: [EUNJI] [DATA SAFE] lpa = 202159 +[47296.163421] bdbm: [EUNJI] [DATA SAFE] lpa = 202160 +[47296.163895] bdbm: [EUNJI] [DATA SAFE] lpa = 202161 +[47296.164368] bdbm: [EUNJI] [DATA SAFE] lpa = 202162 +[47296.164846] bdbm: [EUNJI] [DATA SAFE] lpa = 202163 +[47296.165322] bdbm: [EUNJI] [DATA SAFE] lpa = 202164 +[47296.165800] bdbm: [EUNJI] [DATA SAFE] lpa = 202165 +[47296.166275] bdbm: [EUNJI] [DATA SAFE] lpa = 202166 +[47296.166751] bdbm: [EUNJI] [DATA SAFE] lpa = 202167 +[47296.167225] bdbm: [EUNJI] [DATA SAFE] lpa = 202168 +[47296.167704] bdbm: [EUNJI] [DATA SAFE] lpa = 202169 +[47296.168173] bdbm: [EUNJI] [DATA SAFE] lpa = 202170 +[47296.168647] bdbm: [EUNJI] [DATA SAFE] lpa = 202171 +[47296.169121] bdbm: [EUNJI] [DATA SAFE] lpa = 202172 +[47296.169613] bdbm: [EUNJI] [DATA SAFE] lpa = 202173 +[47296.170114] bdbm: [EUNJI] [DATA SAFE] lpa = 202174 +[47296.170592] bdbm: [EUNJI] [DATA SAFE] lpa = 202175 +[47296.171060] bdbm: [EUNJI] [DATA SAFE] lpa = 202176 +[47296.171558] bdbm: [EUNJI] [DATA SAFE] lpa = 202177 +[47296.172063] bdbm: [EUNJI] [DATA SAFE] lpa = 202178 +[47296.172579] bdbm: [EUNJI] [DATA SAFE] lpa = 202179 +[47296.173084] bdbm: [EUNJI] [DATA SAFE] lpa = 202180 +[47296.173554] bdbm: [EUNJI] [DATA SAFE] lpa = 202181 +[47296.174057] bdbm: [EUNJI] [DATA SAFE] lpa = 202182 +[47296.174590] bdbm: [EUNJI] [DATA SAFE] lpa = 202183 +[47296.175094] bdbm: [EUNJI] [DATA SAFE] lpa = 202184 +[47296.175616] bdbm: [EUNJI] [DATA SAFE] lpa = 202185 +[47296.176120] bdbm: [EUNJI] [DATA SAFE] lpa = 202186 +[47296.176625] bdbm: [EUNJI] [DATA SAFE] lpa = 202187 +[47296.177155] bdbm: [EUNJI] [DATA SAFE] lpa = 202188 +[47296.177709] bdbm: [EUNJI] [DATA SAFE] lpa = 202189 +[47296.178228] bdbm: [EUNJI] [DATA SAFE] lpa = 202190 +[47296.178752] bdbm: [EUNJI] [DATA SAFE] lpa = 202191 +[47296.179261] bdbm: [EUNJI] [DATA SAFE] lpa = 202192 +[47296.179771] bdbm: [EUNJI] [DATA SAFE] lpa = 202193 +[47296.180290] bdbm: [EUNJI] [DATA SAFE] lpa = 202194 +[47296.180817] bdbm: [EUNJI] [DATA SAFE] lpa = 202195 +[47296.181310] bdbm: [EUNJI] [DATA SAFE] lpa = 202196 +[47296.181816] bdbm: [EUNJI] [DATA SAFE] lpa = 202197 +[47296.182327] bdbm: [EUNJI] [DATA SAFE] lpa = 202198 +[47296.182839] bdbm: [EUNJI] [DATA SAFE] lpa = 202199 +[47296.183363] bdbm: [EUNJI] [DATA SAFE] lpa = 202200 +[47296.183869] bdbm: [EUNJI] [DATA SAFE] lpa = 202201 +[47296.184421] bdbm: [EUNJI] [DATA SAFE] lpa = 202202 +[47296.184941] bdbm: [EUNJI] [DATA SAFE] lpa = 202203 +[47296.185492] bdbm: [EUNJI] [DATA SAFE] lpa = 202204 +[47296.186043] bdbm: [EUNJI] [DATA SAFE] lpa = 202205 +[47296.186594] bdbm: [EUNJI] [DATA SAFE] lpa = 202206 +[47296.187148] bdbm: [EUNJI] [DATA SAFE] lpa = 202207 +[47296.187650] bdbm: [EUNJI] [DATA SAFE] lpa = 202208 +[47296.188155] bdbm: [EUNJI] [DATA SAFE] lpa = 202209 +[47296.188659] bdbm: [EUNJI] [DATA SAFE] lpa = 202210 +[47296.189181] bdbm: [EUNJI] [DATA SAFE] lpa = 202211 +[47296.189679] bdbm: [EUNJI] [DATA SAFE] lpa = 202212 +[47296.190196] bdbm: [EUNJI] [DATA SAFE] lpa = 202213 +[47296.190708] bdbm: [EUNJI] [DATA SAFE] lpa = 202214 +[47296.191233] bdbm: [EUNJI] [DATA SAFE] lpa = 202215 +[47296.191750] bdbm: [EUNJI] [DATA SAFE] lpa = 202216 +[47296.192273] bdbm: [EUNJI] [DATA SAFE] lpa = 202217 +[47296.192785] bdbm: [EUNJI] [DATA SAFE] lpa = 202218 +[47296.193305] bdbm: [EUNJI] [DATA SAFE] lpa = 202219 +[47296.193831] bdbm: [EUNJI] [DATA SAFE] lpa = 202220 +[47296.194356] bdbm: [EUNJI] [DATA SAFE] lpa = 202221 +[47296.194882] bdbm: [EUNJI] [DATA SAFE] lpa = 202222 +[47296.195405] bdbm: [EUNJI] [DATA SAFE] lpa = 202223 +[47296.195928] bdbm: [EUNJI] [DATA SAFE] lpa = 202224 +[47296.196484] bdbm: [EUNJI] [DATA SAFE] lpa = 202225 +[47296.197041] bdbm: [EUNJI] [DATA SAFE] lpa = 202226 +[47296.197617] bdbm: [EUNJI] [DATA SAFE] lpa = 202227 +[47296.198157] bdbm: [EUNJI] [DATA SAFE] lpa = 202228 +[47296.198723] bdbm: [EUNJI] [DATA SAFE] lpa = 202229 +[47296.199291] bdbm: [EUNJI] [DATA SAFE] lpa = 202230 +[47296.199851] bdbm: [EUNJI] [DATA SAFE] lpa = 202231 +[47296.200412] bdbm: [EUNJI] [DATA SAFE] lpa = 202232 +[47296.200973] bdbm: [EUNJI] [DATA SAFE] lpa = 202233 +[47296.201527] bdbm: [EUNJI] [DATA SAFE] lpa = 202234 +[47296.202067] bdbm: [EUNJI] [DATA SAFE] lpa = 202235 +[47296.202618] bdbm: [EUNJI] [DATA SAFE] lpa = 202236 +[47296.203169] bdbm: [EUNJI] [DATA SAFE] lpa = 202237 +[47296.203719] bdbm: [EUNJI] [DATA SAFE] lpa = 202238 +[47296.204271] bdbm: [EUNJI] [DATA SAFE] lpa = 202239 +[47296.204819] bdbm: [EUNJI] [DATA SAFE] lpa = 202240 +[47296.205339] bdbm: [EUNJI] [DATA SAFE] lpa = 202241 +[47296.205846] bdbm: [EUNJI] [DATA SAFE] lpa = 202242 +[47296.206365] bdbm: [EUNJI] [DATA SAFE] lpa = 202243 +[47296.206870] bdbm: [EUNJI] [DATA SAFE] lpa = 202244 +[47296.207391] bdbm: [EUNJI] [DATA SAFE] lpa = 202245 +[47296.207930] bdbm: [EUNJI] [DATA SAFE] lpa = 202246 +[47296.208449] bdbm: [EUNJI] [DATA SAFE] lpa = 202247 +[47296.208968] bdbm: [EUNJI] [DATA SAFE] lpa = 202248 +[47296.209477] bdbm: [EUNJI] [DATA SAFE] lpa = 202249 +[47296.209983] bdbm: [EUNJI] [DATA SAFE] lpa = 202250 +[47296.210501] bdbm: [EUNJI] [DATA SAFE] lpa = 202251 +[47296.211006] bdbm: [EUNJI] [DATA SAFE] lpa = 202252 +[47296.211512] bdbm: [EUNJI] [DATA SAFE] lpa = 202253 +[47296.212024] bdbm: [EUNJI] [DATA SAFE] lpa = 202254 +[47296.212531] bdbm: [EUNJI] [DATA SAFE] lpa = 202255 +[47296.213038] bdbm: [EUNJI] [DATA SAFE] lpa = 202256 +[47296.213560] bdbm: [EUNJI] [DATA SAFE] lpa = 202257 +[47296.214040] bdbm: [EUNJI] [DATA SAFE] lpa = 202258 +[47296.214518] bdbm: [EUNJI] [DATA SAFE] lpa = 202259 +[47296.214993] bdbm: [EUNJI] [DATA SAFE] lpa = 202260 +[47296.215468] bdbm: [EUNJI] [DATA SAFE] lpa = 202261 +[47296.215943] bdbm: [EUNJI] [DATA SAFE] lpa = 202262 +[47296.216417] bdbm: [EUNJI] [DATA SAFE] lpa = 202263 +[47296.216895] bdbm: [EUNJI] [DATA SAFE] lpa = 202264 +[47296.217371] bdbm: [EUNJI] [DATA SAFE] lpa = 202265 +[47296.217846] bdbm: [EUNJI] [DATA SAFE] lpa = 202266 +[47296.218320] bdbm: [EUNJI] [DATA SAFE] lpa = 202267 +[47296.218792] bdbm: [EUNJI] [DATA SAFE] lpa = 202268 +[47296.219270] bdbm: [EUNJI] [DATA SAFE] lpa = 202269 +[47296.219747] bdbm: [EUNJI] [DATA SAFE] lpa = 202270 +[47296.220222] bdbm: [EUNJI] [DATA SAFE] lpa = 202271 +[47296.220700] bdbm: [EUNJI] [DATA SAFE] lpa = 202272 +[47296.221177] bdbm: [EUNJI] [DATA SAFE] lpa = 202273 +[47296.221654] bdbm: [EUNJI] [DATA SAFE] lpa = 202274 +[47296.222131] bdbm: [EUNJI] [DATA SAFE] lpa = 202275 +[47296.222604] bdbm: [EUNJI] [DATA SAFE] lpa = 202276 +[47296.223081] bdbm: [EUNJI] [DATA SAFE] lpa = 202277 +[47296.223557] bdbm: [EUNJI] [DATA SAFE] lpa = 202278 +[47296.224030] bdbm: [EUNJI] [DATA SAFE] lpa = 202279 +[47296.224508] bdbm: [EUNJI] [DATA SAFE] lpa = 202280 +[47296.224985] bdbm: [EUNJI] [DATA SAFE] lpa = 202281 +[47296.225462] bdbm: [EUNJI] [DATA SAFE] lpa = 202282 +[47296.225940] bdbm: [EUNJI] [DATA SAFE] lpa = 202283 +[47296.226419] bdbm: [EUNJI] [DATA SAFE] lpa = 202284 +[47296.226896] bdbm: [EUNJI] [DATA SAFE] lpa = 202285 +[47296.227370] bdbm: [EUNJI] [DATA SAFE] lpa = 202286 +[47296.227849] bdbm: [EUNJI] [DATA SAFE] lpa = 202287 +[47296.228326] bdbm: [EUNJI] [DATA SAFE] lpa = 202288 +[47296.228803] bdbm: [EUNJI] [DATA SAFE] lpa = 202289 +[47296.229275] bdbm: [EUNJI] [DATA SAFE] lpa = 202290 +[47296.229752] bdbm: [EUNJI] [DATA SAFE] lpa = 202291 +[47296.230230] bdbm: [EUNJI] [DATA SAFE] lpa = 202292 +[47296.230706] bdbm: [EUNJI] [DATA SAFE] lpa = 202293 +[47296.231184] bdbm: [EUNJI] [DATA SAFE] lpa = 202294 +[47296.231663] bdbm: [EUNJI] [DATA SAFE] lpa = 202295 +[47296.232140] bdbm: [EUNJI] [DATA SAFE] lpa = 202296 +[47296.232614] bdbm: [EUNJI] [DATA SAFE] lpa = 202297 +[47296.233086] bdbm: [EUNJI] [DATA SAFE] lpa = 202298 +[47296.233557] bdbm: [EUNJI] [DATA SAFE] lpa = 202299 +[47296.234031] bdbm: [EUNJI] [DATA SAFE] lpa = 202300 +[47296.234507] bdbm: [EUNJI] [DATA SAFE] lpa = 202301 +[47296.234980] bdbm: [EUNJI] [DATA SAFE] lpa = 202302 +[47296.235453] bdbm: [EUNJI] [DATA SAFE] lpa = 202303 +[47296.235923] bdbm: [EUNJI] [DATA SAFE] lpa = 202304 +[47296.236396] bdbm: [EUNJI] [DATA SAFE] lpa = 202305 +[47296.236870] bdbm: [EUNJI] [DATA SAFE] lpa = 202306 +[47296.237343] bdbm: [EUNJI] [DATA SAFE] lpa = 202307 +[47296.237817] bdbm: [EUNJI] [DATA SAFE] lpa = 202308 +[47296.238287] bdbm: [EUNJI] [DATA SAFE] lpa = 202309 +[47296.238761] bdbm: [EUNJI] [DATA SAFE] lpa = 202310 +[47296.239235] bdbm: [EUNJI] [DATA SAFE] lpa = 202311 +[47296.239709] bdbm: [EUNJI] [DATA SAFE] lpa = 202312 +[47296.240182] bdbm: [EUNJI] [DATA SAFE] lpa = 202313 +[47296.240656] bdbm: [EUNJI] [DATA SAFE] lpa = 202314 +[47296.241128] bdbm: [EUNJI] [DATA SAFE] lpa = 202315 +[47296.241628] bdbm: [EUNJI] [DATA SAFE] lpa = 202316 +[47296.242102] bdbm: [EUNJI] [DATA SAFE] lpa = 202317 +[47296.242578] bdbm: [EUNJI] [DATA SAFE] lpa = 202318 +[47296.243051] bdbm: [EUNJI] [DATA SAFE] lpa = 202319 +[47296.243525] bdbm: [EUNJI] [DATA SAFE] lpa = 202320 +[47296.243999] bdbm: [EUNJI] [DATA SAFE] lpa = 202321 +[47296.244472] bdbm: [EUNJI] [DATA SAFE] lpa = 202322 +[47296.244946] bdbm: [EUNJI] [DATA SAFE] lpa = 202323 +[47296.245418] bdbm: [EUNJI] [DATA SAFE] lpa = 202324 +[47296.245892] bdbm: [EUNJI] [DATA SAFE] lpa = 202325 +[47296.246371] bdbm: [EUNJI] [DATA SAFE] lpa = 202326 +[47296.246846] bdbm: [EUNJI] [DATA SAFE] lpa = 202327 +[47296.247321] bdbm: [EUNJI] [DATA SAFE] lpa = 202328 +[47296.247795] bdbm: [EUNJI] [DATA SAFE] lpa = 202329 +[47296.248270] bdbm: [EUNJI] [DATA SAFE] lpa = 202330 +[47296.248741] bdbm: [EUNJI] [DATA SAFE] lpa = 202331 +[47296.249215] bdbm: [EUNJI] [DATA SAFE] lpa = 202332 +[47296.249689] bdbm: [EUNJI] [DATA SAFE] lpa = 202333 +[47296.250164] bdbm: [EUNJI] [DATA SAFE] lpa = 202334 +[47296.250639] bdbm: [EUNJI] [DATA SAFE] lpa = 202335 +[47296.251113] bdbm: [EUNJI] [DATA SAFE] lpa = 202336 +[47296.251588] bdbm: [EUNJI] [DATA SAFE] lpa = 202337 +[47296.252062] bdbm: [EUNJI] [DATA SAFE] lpa = 202338 +[47296.252536] bdbm: [EUNJI] [DATA SAFE] lpa = 202339 +[47296.253010] bdbm: [EUNJI] [DATA SAFE] lpa = 202340 +[47296.253484] bdbm: [EUNJI] [DATA SAFE] lpa = 202341 +[47296.253957] bdbm: [EUNJI] [DATA SAFE] lpa = 202342 +[47296.254431] bdbm: [EUNJI] [DATA SAFE] lpa = 202343 +[47296.254906] bdbm: [EUNJI] [DATA SAFE] lpa = 202344 +[47296.255382] bdbm: [EUNJI] [DATA SAFE] lpa = 202345 +[47296.255859] bdbm: [EUNJI] [DATA SAFE] lpa = 202346 +[47296.256333] bdbm: [EUNJI] [DATA SAFE] lpa = 202347 +[47296.256808] bdbm: [EUNJI] [DATA SAFE] lpa = 202348 +[47296.257281] bdbm: [EUNJI] [DATA SAFE] lpa = 202349 +[47296.257753] bdbm: [EUNJI] [DATA SAFE] lpa = 202350 +[47296.258231] bdbm: [EUNJI] [DATA SAFE] lpa = 202351 +[47296.258706] bdbm: [EUNJI] [DATA SAFE] lpa = 202352 +[47296.259180] bdbm: [EUNJI] [DATA SAFE] lpa = 202353 +[47296.259654] bdbm: [EUNJI] [DATA SAFE] lpa = 202354 +[47296.260128] bdbm: [EUNJI] [DATA SAFE] lpa = 202355 +[47296.260604] bdbm: [EUNJI] [DATA SAFE] lpa = 202356 +[47296.261078] bdbm: [EUNJI] [DATA SAFE] lpa = 202357 +[47296.261553] bdbm: [EUNJI] [DATA SAFE] lpa = 202358 +[47296.262032] bdbm: [EUNJI] [DATA SAFE] lpa = 202359 +[47296.262507] bdbm: [EUNJI] [DATA SAFE] lpa = 202360 +[47296.262981] bdbm: [EUNJI] [DATA SAFE] lpa = 202361 +[47296.263456] bdbm: [EUNJI] [DATA SAFE] lpa = 202362 +[47296.263929] bdbm: [EUNJI] [DATA SAFE] lpa = 202363 +[47296.264399] bdbm: [EUNJI] [DATA SAFE] lpa = 202364 +[47296.264872] bdbm: [EUNJI] [DATA SAFE] lpa = 202365 +[47296.265346] bdbm: [EUNJI] [DATA SAFE] lpa = 202366 +[47296.265817] bdbm: [EUNJI] [DATA SAFE] lpa = 202367 +[47296.266291] bdbm: [EUNJI] [DATA SAFE] lpa = 202368 +[47296.266764] bdbm: [EUNJI] [DATA SAFE] lpa = 202369 +[47296.267239] bdbm: [EUNJI] [DATA SAFE] lpa = 202370 +[47296.267714] bdbm: [EUNJI] [DATA SAFE] lpa = 202371 +[47296.268188] bdbm: [EUNJI] [DATA SAFE] lpa = 202372 +[47296.268658] bdbm: [EUNJI] [DATA SAFE] lpa = 202373 +[47296.269129] bdbm: [EUNJI] [DATA SAFE] lpa = 202374 +[47296.269620] bdbm: [EUNJI] [DATA SAFE] lpa = 202375 +[47296.270114] bdbm: [EUNJI] [DATA SAFE] lpa = 202376 +[47296.270585] bdbm: [EUNJI] [DATA SAFE] lpa = 202377 +[47296.271058] bdbm: [EUNJI] [DATA SAFE] lpa = 202378 +[47296.271531] bdbm: [EUNJI] [DATA SAFE] lpa = 202379 +[47296.272006] bdbm: [EUNJI] [DATA SAFE] lpa = 202380 +[47296.272478] bdbm: [EUNJI] [DATA SAFE] lpa = 202381 +[47296.272950] bdbm: [EUNJI] [DATA SAFE] lpa = 202382 +[47296.273424] bdbm: [EUNJI] [DATA SAFE] lpa = 202383 +[47296.273895] bdbm: [EUNJI] [DATA SAFE] lpa = 202384 +[47296.274371] bdbm: [EUNJI] [DATA SAFE] lpa = 202385 +[47296.274848] bdbm: [EUNJI] [DATA SAFE] lpa = 202386 +[47296.275321] bdbm: [EUNJI] [DATA SAFE] lpa = 202387 +[47296.275794] bdbm: [EUNJI] [DATA SAFE] lpa = 202388 +[47296.276269] bdbm: [EUNJI] [DATA SAFE] lpa = 202389 +[47296.276745] bdbm: [EUNJI] [DATA SAFE] lpa = 202390 +[47296.277219] bdbm: [EUNJI] [DATA SAFE] lpa = 202391 +[47296.277693] bdbm: [EUNJI] [DATA SAFE] lpa = 202392 +[47296.278169] bdbm: [EUNJI] [DATA SAFE] lpa = 202393 +[47296.278644] bdbm: [EUNJI] [DATA SAFE] lpa = 202394 +[47296.279117] bdbm: [EUNJI] [DATA SAFE] lpa = 202395 +[47296.279591] bdbm: [EUNJI] [DATA SAFE] lpa = 202396 +[47296.280065] bdbm: [EUNJI] [DATA SAFE] lpa = 202397 +[47296.280538] bdbm: [EUNJI] [DATA SAFE] lpa = 202398 +[47296.281012] bdbm: [EUNJI] [DATA SAFE] lpa = 202399 +[47296.281485] bdbm: [EUNJI] [DATA SAFE] lpa = 202400 +[47296.281958] bdbm: [EUNJI] [DATA SAFE] lpa = 202401 +[47296.282432] bdbm: [EUNJI] [DATA SAFE] lpa = 202402 +[47296.282906] bdbm: [EUNJI] [DATA SAFE] lpa = 202403 +[47296.283379] bdbm: [EUNJI] [DATA SAFE] lpa = 202404 +[47296.283854] bdbm: [EUNJI] [DATA SAFE] lpa = 202405 +[47296.284329] bdbm: [EUNJI] [DATA SAFE] lpa = 202406 +[47296.284803] bdbm: [EUNJI] [DATA SAFE] lpa = 202407 +[47296.285277] bdbm: [EUNJI] [DATA SAFE] lpa = 202408 +[47296.285756] bdbm: [EUNJI] [DATA SAFE] lpa = 202409 +[47296.286232] bdbm: [EUNJI] [DATA SAFE] lpa = 202410 +[47296.286707] bdbm: [EUNJI] [DATA SAFE] lpa = 202411 +[47296.287181] bdbm: [EUNJI] [DATA SAFE] lpa = 202412 +[47296.287655] bdbm: [EUNJI] [DATA SAFE] lpa = 202413 +[47296.288127] bdbm: [EUNJI] [DATA SAFE] lpa = 202414 +[47296.288601] bdbm: [EUNJI] [DATA SAFE] lpa = 202415 +[47296.289077] bdbm: [EUNJI] [DATA SAFE] lpa = 202416 +[47296.289551] bdbm: [EUNJI] [DATA SAFE] lpa = 202417 +[47296.290025] bdbm: [EUNJI] [DATA SAFE] lpa = 202418 +[47296.290498] bdbm: [EUNJI] [DATA SAFE] lpa = 202419 +[47296.290971] bdbm: [EUNJI] [DATA SAFE] lpa = 202420 +[47296.291446] bdbm: [EUNJI] [DATA SAFE] lpa = 202421 +[47296.291921] bdbm: [EUNJI] [DATA SAFE] lpa = 202422 +[47296.292401] bdbm: [EUNJI] [DATA SAFE] lpa = 202423 +[47296.292874] bdbm: [EUNJI] [DATA SAFE] lpa = 202424 +[47296.293347] bdbm: [EUNJI] [DATA SAFE] lpa = 202425 +[47296.293816] bdbm: [EUNJI] [DATA SAFE] lpa = 202426 +[47296.294286] bdbm: [EUNJI] [DATA SAFE] lpa = 202427 +[47296.294759] bdbm: [EUNJI] [DATA SAFE] lpa = 202428 +[47296.295233] bdbm: [EUNJI] [DATA SAFE] lpa = 202429 +[47296.295706] bdbm: [EUNJI] [DATA SAFE] lpa = 202430 +[47296.296180] bdbm: [EUNJI] [DATA SAFE] lpa = 202431 +[47296.296653] bdbm: [EUNJI] [DATA SAFE] lpa = 202432 +[47296.297127] bdbm: [EUNJI] [DATA SAFE] lpa = 202433 +[47296.297617] bdbm: [EUNJI] [DATA SAFE] lpa = 202434 +[47296.298103] bdbm: [EUNJI] [DATA SAFE] lpa = 202435 +[47296.298576] bdbm: [EUNJI] [DATA SAFE] lpa = 202436 +[47296.299047] bdbm: [EUNJI] [DATA SAFE] lpa = 202437 +[47296.299517] bdbm: [EUNJI] [DATA SAFE] lpa = 202438 +[47296.299991] bdbm: [EUNJI] [DATA SAFE] lpa = 202439 +[47296.300466] bdbm: [EUNJI] [DATA SAFE] lpa = 202440 +[47296.300940] bdbm: [EUNJI] [DATA SAFE] lpa = 202441 +[47296.301413] bdbm: [EUNJI] [DATA SAFE] lpa = 202442 +[47296.301887] bdbm: [EUNJI] [DATA SAFE] lpa = 202443 +[47296.302364] bdbm: [EUNJI] [DATA SAFE] lpa = 202444 +[47296.302839] bdbm: [EUNJI] [DATA SAFE] lpa = 202445 +[47296.303312] bdbm: [EUNJI] [DATA SAFE] lpa = 202446 +[47296.303787] bdbm: [EUNJI] [DATA SAFE] lpa = 202447 +[47296.304259] bdbm: [EUNJI] [DATA SAFE] lpa = 202448 +[47296.304730] bdbm: [EUNJI] [DATA SAFE] lpa = 202449 +[47296.305204] bdbm: [EUNJI] [DATA SAFE] lpa = 202450 +[47296.305677] bdbm: [EUNJI] [DATA SAFE] lpa = 202451 +[47296.306153] bdbm: [EUNJI] [DATA SAFE] lpa = 202452 +[47296.306628] bdbm: [EUNJI] [DATA SAFE] lpa = 202453 +[47296.307103] bdbm: [EUNJI] [DATA SAFE] lpa = 202454 +[47296.307576] bdbm: [EUNJI] [DATA SAFE] lpa = 202455 +[47296.308050] bdbm: [EUNJI] [DATA SAFE] lpa = 202456 +[47296.308523] bdbm: [EUNJI] [DATA SAFE] lpa = 202457 +[47296.308998] bdbm: [EUNJI] [DATA SAFE] lpa = 202458 +[47296.309471] bdbm: [EUNJI] [DATA SAFE] lpa = 202459 +[47296.309943] bdbm: [EUNJI] [DATA SAFE] lpa = 202460 +[47296.310417] bdbm: [EUNJI] [DATA SAFE] lpa = 202461 +[47296.310891] bdbm: [EUNJI] [DATA SAFE] lpa = 202462 +[47296.311365] bdbm: [EUNJI] [DATA SAFE] lpa = 202463 +[47296.311837] bdbm: [EUNJI] [DATA SAFE] lpa = 202464 +[47296.312310] bdbm: [EUNJI] [DATA SAFE] lpa = 202465 +[47296.312784] bdbm: [EUNJI] [DATA SAFE] lpa = 202466 +[47296.313258] bdbm: [EUNJI] [DATA SAFE] lpa = 202467 +[47296.313731] bdbm: [EUNJI] [DATA SAFE] lpa = 202468 +[47296.314217] bdbm: [EUNJI] [DATA SAFE] lpa = 202469 +[47296.314692] bdbm: [EUNJI] [DATA SAFE] lpa = 202470 +[47296.315165] bdbm: [EUNJI] [DATA SAFE] lpa = 202471 +[47296.315639] bdbm: [EUNJI] [DATA SAFE] lpa = 202472 +[47296.316111] bdbm: [EUNJI] [DATA SAFE] lpa = 202473 +[47296.316584] bdbm: [EUNJI] [DATA SAFE] lpa = 202474 +[47296.317058] bdbm: [EUNJI] [DATA SAFE] lpa = 202475 +[47296.317532] bdbm: [EUNJI] [DATA SAFE] lpa = 202476 +[47296.318009] bdbm: [EUNJI] [DATA SAFE] lpa = 202477 +[47296.318485] bdbm: [EUNJI] [DATA SAFE] lpa = 202478 +[47296.318960] bdbm: [EUNJI] [DATA SAFE] lpa = 202479 +[47296.319436] bdbm: [EUNJI] [DATA SAFE] lpa = 202480 +[47296.319911] bdbm: [EUNJI] [DATA SAFE] lpa = 202481 +[47296.320386] bdbm: [EUNJI] [DATA SAFE] lpa = 202482 +[47296.320861] bdbm: [EUNJI] [DATA SAFE] lpa = 202483 +[47296.321336] bdbm: [EUNJI] [DATA SAFE] lpa = 202484 +[47296.321811] bdbm: [EUNJI] [DATA SAFE] lpa = 202485 +[47296.322286] bdbm: [EUNJI] [DATA SAFE] lpa = 202486 +[47296.322761] bdbm: [EUNJI] [DATA SAFE] lpa = 202487 +[47296.323235] bdbm: [EUNJI] [DATA SAFE] lpa = 202488 +[47296.323711] bdbm: [EUNJI] [DATA SAFE] lpa = 202489 +[47296.324184] bdbm: [EUNJI] [DATA SAFE] lpa = 202490 +[47296.324658] bdbm: [EUNJI] [DATA SAFE] lpa = 202491 +[47296.325131] bdbm: [EUNJI] [DATA SAFE] lpa = 202492 +[47296.325618] bdbm: [EUNJI] [DATA SAFE] lpa = 202493 +[47296.326112] bdbm: [EUNJI] [DATA SAFE] lpa = 202494 +[47296.326622] bdbm: [EUNJI] [DATA SAFE] lpa = 202495 +[47296.327127] bdbm: [EUNJI] [DATA SAFE] lpa = 202496 +[47296.327646] bdbm: [EUNJI] [DATA SAFE] lpa = 202497 +[47296.328156] bdbm: [EUNJI] [DATA SAFE] lpa = 202498 +[47296.328671] bdbm: [EUNJI] [DATA SAFE] lpa = 202499 +[47296.329160] bdbm: [EUNJI] [DATA SAFE] lpa = 202500 +[47296.329634] bdbm: [EUNJI] [DATA SAFE] lpa = 202501 +[47296.330112] bdbm: [EUNJI] [DATA SAFE] lpa = 202502 +[47296.330587] bdbm: [EUNJI] [DATA SAFE] lpa = 202503 +[47296.331061] bdbm: [EUNJI] [DATA SAFE] lpa = 202504 +[47296.331535] bdbm: [EUNJI] [DATA SAFE] lpa = 202505 +[47296.332009] bdbm: [EUNJI] [DATA SAFE] lpa = 202506 +[47296.332484] bdbm: [EUNJI] [DATA SAFE] lpa = 202507 +[47296.332958] bdbm: [EUNJI] [DATA SAFE] lpa = 202508 +[47296.333433] bdbm: [EUNJI] [DATA SAFE] lpa = 202509 +[47296.333905] bdbm: [EUNJI] [DATA SAFE] lpa = 202510 +[47296.334380] bdbm: [EUNJI] [DATA SAFE] lpa = 202511 +[47296.334850] bdbm: [EUNJI] [DATA SAFE] lpa = 202512 +[47296.335324] bdbm: [EUNJI] [DATA SAFE] lpa = 202513 +[47296.335798] bdbm: [EUNJI] [DATA SAFE] lpa = 202514 +[47296.336269] bdbm: [EUNJI] [DATA SAFE] lpa = 202515 +[47296.336745] bdbm: [EUNJI] [DATA SAFE] lpa = 202516 +[47296.337219] bdbm: [EUNJI] [DATA SAFE] lpa = 202517 +[47296.337694] bdbm: [EUNJI] [DATA SAFE] lpa = 202518 +[47296.338170] bdbm: [EUNJI] [DATA SAFE] lpa = 202519 +[47296.338644] bdbm: [EUNJI] [DATA SAFE] lpa = 202520 +[47296.339119] bdbm: [EUNJI] [DATA SAFE] lpa = 202521 +[47296.339594] bdbm: [EUNJI] [DATA SAFE] lpa = 202522 +[47296.340067] bdbm: [EUNJI] [DATA SAFE] lpa = 202523 +[47296.340541] bdbm: [EUNJI] [DATA SAFE] lpa = 202524 +[47296.341015] bdbm: [EUNJI] [DATA SAFE] lpa = 202525 +[47296.341488] bdbm: [EUNJI] [DATA SAFE] lpa = 202526 +[47296.341960] bdbm: [EUNJI] [DATA SAFE] lpa = 202527 +[47296.342434] bdbm: [EUNJI] [DATA SAFE] lpa = 202528 +[47296.342909] bdbm: [EUNJI] [DATA SAFE] lpa = 202529 +[47296.343383] bdbm: [EUNJI] [DATA SAFE] lpa = 202530 +[47296.343857] bdbm: [EUNJI] [DATA SAFE] lpa = 202531 +[47296.344331] bdbm: [EUNJI] [DATA SAFE] lpa = 202532 +[47296.344808] bdbm: [EUNJI] [DATA SAFE] lpa = 202533 +[47296.345285] bdbm: [EUNJI] [DATA SAFE] lpa = 202534 +[47296.345763] bdbm: [EUNJI] [DATA SAFE] lpa = 202535 +[47296.346250] bdbm: [EUNJI] [DATA SAFE] lpa = 202536 +[47296.346725] bdbm: [EUNJI] [DATA SAFE] lpa = 202537 +[47296.347198] bdbm: [EUNJI] [DATA SAFE] lpa = 202538 +[47296.347671] bdbm: [EUNJI] [DATA SAFE] lpa = 202539 +[47296.348145] bdbm: [EUNJI] [DATA SAFE] lpa = 202540 +[47296.348619] bdbm: [EUNJI] [DATA SAFE] lpa = 202541 +[47296.349143] bdbm: [EUNJI] [DATA SAFE] lpa = 202542 +[47296.349649] bdbm: [EUNJI] [DATA SAFE] lpa = 202543 +[47296.350129] bdbm: [EUNJI] [DATA SAFE] lpa = 202544 +[47296.350604] bdbm: [EUNJI] [DATA SAFE] lpa = 202545 +[47296.351081] bdbm: [EUNJI] [DATA SAFE] lpa = 202546 +[47296.351556] bdbm: [EUNJI] [DATA SAFE] lpa = 202547 +[47296.352033] bdbm: [EUNJI] [DATA SAFE] lpa = 202548 +[47296.352506] bdbm: [EUNJI] [DATA SAFE] lpa = 202549 +[47296.352980] bdbm: [EUNJI] [DATA SAFE] lpa = 202550 +[47296.353454] bdbm: [EUNJI] [DATA SAFE] lpa = 202551 +[47296.353932] bdbm: [EUNJI] [DATA SAFE] lpa = 202552 +[47296.354407] bdbm: [EUNJI] [DATA SAFE] lpa = 202553 +[47296.354880] bdbm: [EUNJI] [DATA SAFE] lpa = 202554 +[47296.355354] bdbm: [EUNJI] [DATA SAFE] lpa = 202555 +[47296.355828] bdbm: [EUNJI] [DATA SAFE] lpa = 202556 +[47296.356301] bdbm: [EUNJI] [DATA SAFE] lpa = 202557 +[47296.356775] bdbm: [EUNJI] [DATA SAFE] lpa = 202558 +[47296.357248] bdbm: [EUNJI] [DATA SAFE] lpa = 202559 +[47296.357718] bdbm: [EUNJI] [DATA SAFE] lpa = 202560 +[47296.358190] bdbm: [EUNJI] [DATA SAFE] lpa = 202561 +[47296.358665] bdbm: [EUNJI] [DATA SAFE] lpa = 202562 +[47296.359138] bdbm: [EUNJI] [DATA SAFE] lpa = 202563 +[47296.359613] bdbm: [EUNJI] [DATA SAFE] lpa = 202564 +[47296.360083] bdbm: [EUNJI] [DATA SAFE] lpa = 202565 +[47296.360556] bdbm: [EUNJI] [DATA SAFE] lpa = 202566 +[47296.361030] bdbm: [EUNJI] [DATA SAFE] lpa = 202567 +[47296.361504] bdbm: [EUNJI] [DATA SAFE] lpa = 202568 +[47296.361976] bdbm: [EUNJI] [DATA SAFE] lpa = 202569 +[47296.362450] bdbm: [EUNJI] [DATA SAFE] lpa = 202570 +[47296.362922] bdbm: [EUNJI] [DATA SAFE] lpa = 202571 +[47296.363397] bdbm: [EUNJI] [DATA SAFE] lpa = 202572 +[47296.363871] bdbm: [EUNJI] [DATA SAFE] lpa = 202573 +[47296.364345] bdbm: [EUNJI] [DATA SAFE] lpa = 202574 +[47296.364820] bdbm: [EUNJI] [DATA SAFE] lpa = 202575 +[47296.365295] bdbm: [EUNJI] [DATA SAFE] lpa = 202576 +[47296.365770] bdbm: [EUNJI] [DATA SAFE] lpa = 202577 +[47296.366245] bdbm: [EUNJI] [DATA SAFE] lpa = 202578 +[47296.366718] bdbm: [EUNJI] [DATA SAFE] lpa = 202579 +[47296.367194] bdbm: [EUNJI] [DATA SAFE] lpa = 202580 +[47296.367698] bdbm: [EUNJI] [DATA SAFE] lpa = 202581 +[47296.368218] bdbm: [EUNJI] [DATA SAFE] lpa = 202582 +[47296.368742] bdbm: [EUNJI] [DATA SAFE] lpa = 202583 +[47296.369265] bdbm: [EUNJI] [DATA SAFE] lpa = 202584 +[47296.369775] bdbm: [EUNJI] [DATA SAFE] lpa = 202585 +[47296.370281] bdbm: [EUNJI] [DATA SAFE] lpa = 202586 +[47296.370805] bdbm: [EUNJI] [DATA SAFE] lpa = 202587 +[47296.371317] bdbm: [EUNJI] [DATA SAFE] lpa = 202588 +[47296.371837] bdbm: [EUNJI] [DATA SAFE] lpa = 202589 +[47296.372344] bdbm: [EUNJI] [DATA SAFE] lpa = 202590 +[47296.372849] bdbm: [EUNJI] [DATA SAFE] lpa = 202591 +[47296.373374] bdbm: [EUNJI] [DATA SAFE] lpa = 202592 +[47296.373884] bdbm: [EUNJI] [DATA SAFE] lpa = 202593 +[47296.374407] bdbm: [EUNJI] [DATA SAFE] lpa = 202594 +[47296.374917] bdbm: [EUNJI] [DATA SAFE] lpa = 202595 +[47296.375437] bdbm: [EUNJI] [DATA SAFE] lpa = 202596 +[47296.375957] bdbm: [EUNJI] [DATA SAFE] lpa = 202597 +[47296.376506] bdbm: [EUNJI] [DATA SAFE] lpa = 202598 +[47296.377053] bdbm: [EUNJI] [DATA SAFE] lpa = 202599 +[47296.377611] bdbm: [EUNJI] [DATA SAFE] lpa = 202600 +[47296.378134] bdbm: [EUNJI] [DATA SAFE] lpa = 202601 +[47296.378643] bdbm: [EUNJI] [DATA SAFE] lpa = 202602 +[47296.379137] bdbm: [EUNJI] [DATA SAFE] lpa = 202603 +[47296.379620] bdbm: [EUNJI] [DATA SAFE] lpa = 202604 +[47296.380093] bdbm: [EUNJI] [DATA SAFE] lpa = 202605 +[47296.380567] bdbm: [EUNJI] [DATA SAFE] lpa = 202606 +[47296.381041] bdbm: [EUNJI] [DATA SAFE] lpa = 202607 +[47296.381514] bdbm: [EUNJI] [DATA SAFE] lpa = 202608 +[47296.381986] bdbm: [EUNJI] [DATA SAFE] lpa = 202609 +[47296.382469] bdbm: [EUNJI] [DATA SAFE] lpa = 202610 +[47296.382941] bdbm: [EUNJI] [DATA SAFE] lpa = 202611 +[47296.383414] bdbm: [EUNJI] [DATA SAFE] lpa = 202612 +[47296.383886] bdbm: [EUNJI] [DATA SAFE] lpa = 202613 +[47296.384360] bdbm: [EUNJI] [DATA SAFE] lpa = 202614 +[47296.384833] bdbm: [EUNJI] [DATA SAFE] lpa = 202615 +[47296.385307] bdbm: [EUNJI] [DATA SAFE] lpa = 202616 +[47296.385785] bdbm: [EUNJI] [DATA SAFE] lpa = 202617 +[47296.386262] bdbm: [EUNJI] [DATA SAFE] lpa = 202618 +[47296.386733] bdbm: [EUNJI] [DATA SAFE] lpa = 202619 +[47296.387206] bdbm: [EUNJI] [DATA SAFE] lpa = 202620 +[47296.387720] bdbm: [EUNJI] [DATA SAFE] lpa = 202621 +[47296.388217] bdbm: [EUNJI] [DATA SAFE] lpa = 202622 +[47296.388715] bdbm: [EUNJI] [DATA SAFE] lpa = 202623 +[47296.389185] bdbm: [EUNJI] [DATA SAFE] lpa = 202624 +[47296.389716] bdbm: [EUNJI] [DATA SAFE] lpa = 202625 +[47296.390223] bdbm: [EUNJI] [DATA SAFE] lpa = 202626 +[47296.390748] bdbm: [EUNJI] [DATA SAFE] lpa = 202627 +[47296.391259] bdbm: [EUNJI] [DATA SAFE] lpa = 202628 +[47296.391772] bdbm: [EUNJI] [DATA SAFE] lpa = 202629 +[47296.392295] bdbm: [EUNJI] [DATA SAFE] lpa = 202630 +[47296.392797] bdbm: [EUNJI] [DATA SAFE] lpa = 202631 +[47296.393315] bdbm: [EUNJI] [DATA SAFE] lpa = 202632 +[47296.393822] bdbm: [EUNJI] [DATA SAFE] lpa = 202633 +[47296.394332] bdbm: [EUNJI] [DATA SAFE] lpa = 202634 +[47296.394854] bdbm: [EUNJI] [DATA SAFE] lpa = 202635 +[47296.395356] bdbm: [EUNJI] [DATA SAFE] lpa = 202636 +[47296.395862] bdbm: [EUNJI] [DATA SAFE] lpa = 202637 +[47296.396380] bdbm: [EUNJI] [DATA SAFE] lpa = 202638 +[47296.396888] bdbm: [EUNJI] [DATA SAFE] lpa = 202639 +[47296.397402] bdbm: [EUNJI] [DATA SAFE] lpa = 202640 +[47296.397927] bdbm: [EUNJI] [DATA SAFE] lpa = 202641 +[47296.398445] bdbm: [EUNJI] [DATA SAFE] lpa = 202642 +[47296.398952] bdbm: [EUNJI] [DATA SAFE] lpa = 202643 +[47296.399473] bdbm: [EUNJI] [DATA SAFE] lpa = 202644 +[47296.399996] bdbm: [EUNJI] [DATA SAFE] lpa = 202645 +[47296.400505] bdbm: [EUNJI] [DATA SAFE] lpa = 202646 +[47296.401009] bdbm: [EUNJI] [DATA SAFE] lpa = 202647 +[47296.401529] bdbm: [EUNJI] [DATA SAFE] lpa = 202648 +[47296.402051] bdbm: [EUNJI] [DATA SAFE] lpa = 202649 +[47296.402560] bdbm: [EUNJI] [DATA SAFE] lpa = 202650 +[47296.403082] bdbm: [EUNJI] [DATA SAFE] lpa = 202651 +[47296.403590] bdbm: [EUNJI] [DATA SAFE] lpa = 202652 +[47296.404115] bdbm: [EUNJI] [DATA SAFE] lpa = 202653 +[47296.404622] bdbm: [EUNJI] [DATA SAFE] lpa = 202654 +[47296.405146] bdbm: [EUNJI] [DATA SAFE] lpa = 202655 +[47296.405651] bdbm: [EUNJI] [DATA SAFE] lpa = 202656 +[47296.406166] bdbm: [EUNJI] [DATA SAFE] lpa = 202657 +[47296.406694] bdbm: [EUNJI] [DATA SAFE] lpa = 202658 +[47296.407189] bdbm: [EUNJI] [DATA SAFE] lpa = 202659 +[47296.407668] bdbm: [EUNJI] [DATA SAFE] lpa = 202660 +[47296.408141] bdbm: [EUNJI] [DATA SAFE] lpa = 202661 +[47296.408616] bdbm: [EUNJI] [DATA SAFE] lpa = 202662 +[47296.409090] bdbm: [EUNJI] [DATA SAFE] lpa = 202663 +[47296.409564] bdbm: [EUNJI] [DATA SAFE] lpa = 202664 +[47296.410038] bdbm: [EUNJI] [DATA SAFE] lpa = 202665 +[47296.410516] bdbm: [EUNJI] [DATA SAFE] lpa = 202666 +[47296.410989] bdbm: [EUNJI] [DATA SAFE] lpa = 202667 +[47296.411463] bdbm: [EUNJI] [DATA SAFE] lpa = 202668 +[47296.411979] bdbm: [EUNJI] [DATA SAFE] lpa = 202669 +[47296.412456] bdbm: [EUNJI] [DATA SAFE] lpa = 202670 +[47296.412930] bdbm: [EUNJI] [DATA SAFE] lpa = 202671 +[47296.413405] bdbm: [EUNJI] [DATA SAFE] lpa = 202672 +[47296.413877] bdbm: [EUNJI] [DATA SAFE] lpa = 202673 +[47296.414356] bdbm: [EUNJI] [DATA SAFE] lpa = 202674 +[47296.414830] bdbm: [EUNJI] [DATA SAFE] lpa = 202675 +[47296.415303] bdbm: [EUNJI] [DATA SAFE] lpa = 202676 +[47296.415775] bdbm: [EUNJI] [DATA SAFE] lpa = 202677 +[47296.416249] bdbm: [EUNJI] [DATA SAFE] lpa = 202678 +[47296.416721] bdbm: [EUNJI] [DATA SAFE] lpa = 202679 +[47296.417195] bdbm: [EUNJI] [DATA SAFE] lpa = 202680 +[47296.417670] bdbm: [EUNJI] [DATA SAFE] lpa = 202681 +[47296.418143] bdbm: [EUNJI] [DATA SAFE] lpa = 202682 +[47296.418611] bdbm: [EUNJI] [DATA SAFE] lpa = 202683 +[47296.419078] bdbm: [EUNJI] [DATA SAFE] lpa = 202684 +[47296.419552] bdbm: [EUNJI] [DATA SAFE] lpa = 202685 +[47296.420051] bdbm: [EUNJI] [DATA SAFE] lpa = 202686 +[47296.420552] bdbm: [EUNJI] [DATA SAFE] lpa = 202687 +[47296.421051] bdbm: [EUNJI] [DATA SAFE] lpa = 202688 +[47296.421523] bdbm: [EUNJI] [DATA SAFE] lpa = 202689 +[47296.421994] bdbm: [EUNJI] [DATA SAFE] lpa = 202690 +[47296.422472] bdbm: [EUNJI] [DATA SAFE] lpa = 202691 +[47296.422940] bdbm: [EUNJI] [DATA SAFE] lpa = 202692 +[47296.423411] bdbm: [EUNJI] [DATA SAFE] lpa = 202693 +[47296.423912] bdbm: [EUNJI] [DATA SAFE] lpa = 202694 +[47296.424413] bdbm: [EUNJI] [DATA SAFE] lpa = 202695 +[47296.424929] bdbm: [EUNJI] [DATA SAFE] lpa = 202696 +[47296.425400] bdbm: [EUNJI] [DATA SAFE] lpa = 202697 +[47296.425872] bdbm: [EUNJI] [DATA SAFE] lpa = 202698 +[47296.426351] bdbm: [EUNJI] [DATA SAFE] lpa = 202699 +[47296.426824] bdbm: [EUNJI] [DATA SAFE] lpa = 202700 +[47296.427299] bdbm: [EUNJI] [DATA SAFE] lpa = 202701 +[47296.427772] bdbm: [EUNJI] [DATA SAFE] lpa = 202702 +[47296.428241] bdbm: [EUNJI] [DATA SAFE] lpa = 202703 +[47296.428714] bdbm: [EUNJI] [DATA SAFE] lpa = 202704 +[47296.429187] bdbm: [EUNJI] [DATA SAFE] lpa = 202705 +[47296.429658] bdbm: [EUNJI] [DATA SAFE] lpa = 202706 +[47296.430132] bdbm: [EUNJI] [DATA SAFE] lpa = 202707 +[47296.430605] bdbm: [EUNJI] [DATA SAFE] lpa = 202708 +[47296.431078] bdbm: [EUNJI] [DATA SAFE] lpa = 202709 +[47296.431553] bdbm: [EUNJI] [DATA SAFE] lpa = 202710 +[47296.432026] bdbm: [EUNJI] [DATA SAFE] lpa = 202711 +[47296.432501] bdbm: [EUNJI] [DATA SAFE] lpa = 202712 +[47296.432975] bdbm: [EUNJI] [DATA SAFE] lpa = 202713 +[47296.433450] bdbm: [EUNJI] [DATA SAFE] lpa = 202714 +[47296.433924] bdbm: [EUNJI] [DATA SAFE] lpa = 202715 +[47296.434398] bdbm: [EUNJI] [DATA SAFE] lpa = 202716 +[47296.434871] bdbm: [EUNJI] [DATA SAFE] lpa = 202717 +[47296.435345] bdbm: [EUNJI] [DATA SAFE] lpa = 202718 +[47296.435818] bdbm: [EUNJI] [DATA SAFE] lpa = 202719 +[47296.436292] bdbm: [EUNJI] [DATA SAFE] lpa = 202720 +[47296.436766] bdbm: [EUNJI] [DATA SAFE] lpa = 202721 +[47296.437240] bdbm: [EUNJI] [DATA SAFE] lpa = 202722 +[47296.437714] bdbm: [EUNJI] [DATA SAFE] lpa = 202723 +[47296.438187] bdbm: [EUNJI] [DATA SAFE] lpa = 202724 +[47296.438660] bdbm: [EUNJI] [DATA SAFE] lpa = 202725 +[47296.439135] bdbm: [EUNJI] [DATA SAFE] lpa = 202726 +[47296.439635] bdbm: [EUNJI] [DATA SAFE] lpa = 202727 +[47296.440151] bdbm: [EUNJI] [DATA SAFE] lpa = 202728 +[47296.440625] bdbm: [EUNJI] [DATA SAFE] lpa = 202729 +[47296.441099] bdbm: [EUNJI] [DATA SAFE] lpa = 202730 +[47296.441571] bdbm: [EUNJI] [DATA SAFE] lpa = 202731 +[47296.442048] bdbm: [EUNJI] [DATA SAFE] lpa = 202732 +[47296.442526] bdbm: [EUNJI] [DATA SAFE] lpa = 202733 +[47296.442998] bdbm: [EUNJI] [DATA SAFE] lpa = 202734 +[47296.443471] bdbm: [EUNJI] [DATA SAFE] lpa = 202735 +[47296.443945] bdbm: [EUNJI] [DATA SAFE] lpa = 202736 +[47296.444418] bdbm: [EUNJI] [DATA SAFE] lpa = 202737 +[47296.444890] bdbm: [EUNJI] [DATA SAFE] lpa = 202738 +[47296.445364] bdbm: [EUNJI] [DATA SAFE] lpa = 202739 +[47296.445842] bdbm: [EUNJI] [DATA SAFE] lpa = 202740 +[47296.446316] bdbm: [EUNJI] [DATA SAFE] lpa = 202741 +[47296.446789] bdbm: [EUNJI] [DATA SAFE] lpa = 202742 +[47296.447262] bdbm: [EUNJI] [DATA SAFE] lpa = 202743 +[47296.447736] bdbm: [EUNJI] [DATA SAFE] lpa = 202744 +[47296.448208] bdbm: [EUNJI] [DATA SAFE] lpa = 202745 +[47296.448676] bdbm: [EUNJI] [DATA SAFE] lpa = 202746 +[47296.449148] bdbm: [EUNJI] [DATA SAFE] lpa = 202747 +[47296.449617] bdbm: [EUNJI] [DATA SAFE] lpa = 202748 +[47296.450091] bdbm: [EUNJI] [DATA SAFE] lpa = 202749 +[47296.450562] bdbm: [EUNJI] [DATA SAFE] lpa = 202750 +[47296.451034] bdbm: [EUNJI] [DATA SAFE] lpa = 202751 +[47296.451504] bdbm: [EUNJI] [DATA SAFE] lpa = 202752 +[47296.451977] bdbm: [EUNJI] [DATA SAFE] lpa = 202753 +[47296.452448] bdbm: [EUNJI] [DATA SAFE] lpa = 202754 +[47296.452919] bdbm: [EUNJI] [DATA SAFE] lpa = 202755 +[47296.453390] bdbm: [EUNJI] [DATA SAFE] lpa = 202756 +[47296.453895] bdbm: [EUNJI] [DATA SAFE] lpa = 202757 +[47296.454408] bdbm: [EUNJI] [DATA SAFE] lpa = 202758 +[47296.454930] bdbm: [EUNJI] [DATA SAFE] lpa = 202759 +[47296.455442] bdbm: [EUNJI] [DATA SAFE] lpa = 202760 +[47296.455954] bdbm: [EUNJI] [DATA SAFE] lpa = 202761 +[47296.456466] bdbm: [EUNJI] [DATA SAFE] lpa = 202762 +[47296.456970] bdbm: [EUNJI] [DATA SAFE] lpa = 202763 +[47296.457482] bdbm: [EUNJI] [DATA SAFE] lpa = 202764 +[47296.457999] bdbm: [EUNJI] [DATA SAFE] lpa = 202765 +[47296.458504] bdbm: [EUNJI] [DATA SAFE] lpa = 202766 +[47296.459015] bdbm: [EUNJI] [DATA SAFE] lpa = 202767 +[47296.459538] bdbm: [EUNJI] [DATA SAFE] lpa = 202768 +[47296.460050] bdbm: [EUNJI] [DATA SAFE] lpa = 202769 +[47296.460570] bdbm: [EUNJI] [DATA SAFE] lpa = 202770 +[47296.461078] bdbm: [EUNJI] [DATA SAFE] lpa = 202771 +[47296.461603] bdbm: [EUNJI] [DATA SAFE] lpa = 202772 +[47296.462107] bdbm: [EUNJI] [DATA SAFE] lpa = 202773 +[47296.462630] bdbm: [EUNJI] [DATA SAFE] lpa = 202774 +[47296.463137] bdbm: [EUNJI] [DATA SAFE] lpa = 202775 +[47296.463657] bdbm: [EUNJI] [DATA SAFE] lpa = 202776 +[47296.464164] bdbm: [EUNJI] [DATA SAFE] lpa = 202777 +[47296.464672] bdbm: [EUNJI] [DATA SAFE] lpa = 202778 +[47296.465226] bdbm: [EUNJI] [DATA SAFE] lpa = 202779 +[47296.465774] bdbm: [EUNJI] [DATA SAFE] lpa = 202780 +[47296.466282] bdbm: [EUNJI] [DATA SAFE] lpa = 202781 +[47296.466801] bdbm: [EUNJI] [DATA SAFE] lpa = 202782 +[47296.467307] bdbm: [EUNJI] [DATA SAFE] lpa = 202783 +[47296.467844] bdbm: [EUNJI] [DATA SAFE] lpa = 202784 +[47296.468321] bdbm: [EUNJI] [DATA SAFE] lpa = 202785 +[47296.468790] bdbm: [EUNJI] [DATA SAFE] lpa = 202786 +[47296.469260] bdbm: [EUNJI] [DATA SAFE] lpa = 202787 +[47296.469732] bdbm: [EUNJI] [DATA SAFE] lpa = 202788 +[47296.470208] bdbm: [EUNJI] [DATA SAFE] lpa = 202789 +[47296.470679] bdbm: [EUNJI] [DATA SAFE] lpa = 202790 +[47296.471150] bdbm: [EUNJI] [DATA SAFE] lpa = 202791 +[47296.471622] bdbm: [EUNJI] [DATA SAFE] lpa = 202792 +[47296.472093] bdbm: [EUNJI] [DATA SAFE] lpa = 202793 +[47296.472564] bdbm: [EUNJI] [DATA SAFE] lpa = 202794 +[47296.473036] bdbm: [EUNJI] [DATA SAFE] lpa = 202795 +[47296.473507] bdbm: [EUNJI] [DATA SAFE] lpa = 202796 +[47296.473978] bdbm: [EUNJI] [DATA SAFE] lpa = 202797 +[47296.474449] bdbm: [EUNJI] [DATA SAFE] lpa = 202798 +[47296.474919] bdbm: [EUNJI] [DATA SAFE] lpa = 202799 +[47296.475390] bdbm: [EUNJI] [DATA SAFE] lpa = 202800 +[47296.475861] bdbm: [EUNJI] [DATA SAFE] lpa = 202801 +[47296.476332] bdbm: [EUNJI] [DATA SAFE] lpa = 202802 +[47296.476803] bdbm: [EUNJI] [DATA SAFE] lpa = 202803 +[47296.477273] bdbm: [EUNJI] [DATA SAFE] lpa = 202804 +[47296.477745] bdbm: [EUNJI] [DATA SAFE] lpa = 202805 +[47296.478230] bdbm: [EUNJI] [DATA SAFE] lpa = 202806 +[47296.478709] bdbm: [EUNJI] [DATA SAFE] lpa = 202807 +[47296.479184] bdbm: [EUNJI] [DATA SAFE] lpa = 202808 +[47296.479658] bdbm: [EUNJI] [DATA SAFE] lpa = 202809 +[47296.480130] bdbm: [EUNJI] [DATA SAFE] lpa = 202810 +[47296.480604] bdbm: [EUNJI] [DATA SAFE] lpa = 202811 +[47296.481078] bdbm: [EUNJI] [DATA SAFE] lpa = 202812 +[47296.481549] bdbm: [EUNJI] [DATA SAFE] lpa = 202813 +[47296.482025] bdbm: [EUNJI] [DATA SAFE] lpa = 202814 +[47296.482496] bdbm: [EUNJI] [DATA SAFE] lpa = 202815 +[47296.482971] bdbm: [EUNJI] [DATA SAFE] lpa = 202816 +[47296.483447] bdbm: [EUNJI] [DATA SAFE] lpa = 202817 +[47296.483922] bdbm: [EUNJI] [DATA SAFE] lpa = 202818 +[47296.484398] bdbm: [EUNJI] [DATA SAFE] lpa = 202819 +[47296.484874] bdbm: [EUNJI] [DATA SAFE] lpa = 202820 +[47296.485345] bdbm: [EUNJI] [DATA SAFE] lpa = 202821 +[47296.485817] bdbm: [EUNJI] [DATA SAFE] lpa = 202822 +[47296.486288] bdbm: [EUNJI] [DATA SAFE] lpa = 202823 +[47296.486760] bdbm: [EUNJI] [DATA SAFE] lpa = 202824 +[47296.487235] bdbm: [EUNJI] [DATA SAFE] lpa = 202825 +[47296.487712] bdbm: [EUNJI] [DATA SAFE] lpa = 202826 +[47296.488184] bdbm: [EUNJI] [DATA SAFE] lpa = 202827 +[47296.488657] bdbm: [EUNJI] [DATA SAFE] lpa = 202828 +[47296.489129] bdbm: [EUNJI] [DATA SAFE] lpa = 202829 +[47296.489620] bdbm: [EUNJI] [DATA SAFE] lpa = 202830 +[47296.490093] bdbm: [EUNJI] [DATA SAFE] lpa = 202831 +[47296.490568] bdbm: [EUNJI] [DATA SAFE] lpa = 202832 +[47296.491045] bdbm: [EUNJI] [DATA SAFE] lpa = 202833 +[47296.491520] bdbm: [EUNJI] [DATA SAFE] lpa = 202834 +[47296.491994] bdbm: [EUNJI] [DATA SAFE] lpa = 202835 +[47296.492468] bdbm: [EUNJI] [DATA SAFE] lpa = 202836 +[47296.492943] bdbm: [EUNJI] [DATA SAFE] lpa = 202837 +[47296.493419] bdbm: [EUNJI] [DATA SAFE] lpa = 202838 +[47296.493892] bdbm: [EUNJI] [DATA SAFE] lpa = 202839 +[47296.494371] bdbm: [EUNJI] [DATA SAFE] lpa = 202840 +[47296.494846] bdbm: [EUNJI] [DATA SAFE] lpa = 202841 +[47296.495319] bdbm: [EUNJI] [DATA SAFE] lpa = 202842 +[47296.495794] bdbm: [EUNJI] [DATA SAFE] lpa = 202843 +[47296.496268] bdbm: [EUNJI] [DATA SAFE] lpa = 202844 +[47296.496743] bdbm: [EUNJI] [DATA SAFE] lpa = 202845 +[47296.497218] bdbm: [EUNJI] [DATA SAFE] lpa = 202846 +[47296.497691] bdbm: [EUNJI] [DATA SAFE] lpa = 202847 +[47296.498167] bdbm: [EUNJI] [DATA SAFE] lpa = 202848 +[47296.498642] bdbm: [EUNJI] [DATA SAFE] lpa = 202849 +[47296.499114] bdbm: [EUNJI] [DATA SAFE] lpa = 202850 +[47296.499588] bdbm: [EUNJI] [DATA SAFE] lpa = 202851 +[47296.500062] bdbm: [EUNJI] [DATA SAFE] lpa = 202852 +[47296.500536] bdbm: [EUNJI] [DATA SAFE] lpa = 202853 +[47296.501012] bdbm: [EUNJI] [DATA SAFE] lpa = 202854 +[47296.501488] bdbm: [EUNJI] [DATA SAFE] lpa = 202855 +[47296.501964] bdbm: [EUNJI] [DATA SAFE] lpa = 202856 +[47296.502440] bdbm: [EUNJI] [DATA SAFE] lpa = 202857 +[47296.502918] bdbm: [EUNJI] [DATA SAFE] lpa = 202858 +[47296.503393] bdbm: [EUNJI] [DATA SAFE] lpa = 202859 +[47296.503866] bdbm: [EUNJI] [DATA SAFE] lpa = 202860 +[47296.504341] bdbm: [EUNJI] [DATA SAFE] lpa = 202861 +[47296.504815] bdbm: [EUNJI] [DATA SAFE] lpa = 202862 +[47296.505290] bdbm: [EUNJI] [DATA SAFE] lpa = 202863 +[47296.505780] bdbm: [EUNJI] [DATA SAFE] lpa = 202864 +[47296.506257] bdbm: [EUNJI] [DATA SAFE] lpa = 202865 +[47296.506731] bdbm: [EUNJI] [DATA SAFE] lpa = 202866 +[47296.507204] bdbm: [EUNJI] [DATA SAFE] lpa = 202867 +[47296.507682] bdbm: [EUNJI] [DATA SAFE] lpa = 202868 +[47296.508158] bdbm: [EUNJI] [DATA SAFE] lpa = 202869 +[47296.508634] bdbm: [EUNJI] [DATA SAFE] lpa = 202870 +[47296.509111] bdbm: [EUNJI] [DATA SAFE] lpa = 202871 +[47296.509586] bdbm: [EUNJI] [DATA SAFE] lpa = 202872 +[47296.513633] bdbm: [EUNJI] [DATA SAFE] lpa = 202873 +[47296.514122] bdbm: [EUNJI] [DATA SAFE] lpa = 202874 +[47296.514592] bdbm: [EUNJI] [DATA SAFE] lpa = 202875 +[47296.515063] bdbm: [EUNJI] [DATA SAFE] lpa = 202876 +[47296.515533] bdbm: [EUNJI] [DATA SAFE] lpa = 202877 +[47296.516004] bdbm: [EUNJI] [DATA SAFE] lpa = 202878 +[47296.516475] bdbm: [EUNJI] [DATA SAFE] lpa = 202879 +[47296.516946] bdbm: [EUNJI] [DATA SAFE] lpa = 202880 +[47296.517417] bdbm: [EUNJI] [DATA SAFE] lpa = 202881 +[47296.517886] bdbm: [EUNJI] [DATA SAFE] lpa = 202882 +[47296.518356] bdbm: [EUNJI] [DATA SAFE] lpa = 202883 +[47296.518827] bdbm: [EUNJI] [DATA SAFE] lpa = 202884 +[47296.519299] bdbm: [EUNJI] [DATA SAFE] lpa = 202885 +[47296.519795] bdbm: [EUNJI] [DATA SAFE] lpa = 202886 +[47296.520306] bdbm: [EUNJI] [DATA SAFE] lpa = 202887 +[47296.520794] bdbm: [EUNJI] [DATA SAFE] lpa = 202888 +[47296.521264] bdbm: [EUNJI] [DATA SAFE] lpa = 202889 +[47296.521783] bdbm: [EUNJI] [DATA SAFE] lpa = 202890 +[47296.522303] bdbm: [EUNJI] [DATA SAFE] lpa = 202891 +[47296.522809] bdbm: [EUNJI] [DATA SAFE] lpa = 202892 +[47296.523332] bdbm: [EUNJI] [DATA SAFE] lpa = 202893 +[47296.523881] bdbm: [EUNJI] [DATA SAFE] lpa = 202894 +[47296.524431] bdbm: [EUNJI] [DATA SAFE] lpa = 202895 +[47296.524977] bdbm: [EUNJI] [DATA SAFE] lpa = 202896 +[47296.525475] bdbm: [EUNJI] [DATA SAFE] lpa = 202897 +[47296.525977] bdbm: [EUNJI] [DATA SAFE] lpa = 202898 +[47296.526497] bdbm: [EUNJI] [DATA SAFE] lpa = 202899 +[47296.527016] bdbm: [EUNJI] [DATA SAFE] lpa = 202900 +[47296.527537] bdbm: [EUNJI] [DATA SAFE] lpa = 202901 +[47296.528042] bdbm: [EUNJI] [DATA SAFE] lpa = 202902 +[47296.528547] bdbm: [EUNJI] [DATA SAFE] lpa = 202903 +[47296.529050] bdbm: [EUNJI] [DATA SAFE] lpa = 202904 +[47296.529551] bdbm: [EUNJI] [DATA SAFE] lpa = 202905 +[47296.530029] bdbm: [EUNJI] [DATA SAFE] lpa = 202906 +[47296.530521] bdbm: [EUNJI] [DATA SAFE] lpa = 202907 +[47296.530992] bdbm: [EUNJI] [DATA SAFE] lpa = 202908 +[47296.531462] bdbm: [EUNJI] [DATA SAFE] lpa = 202909 +[47296.531933] bdbm: [EUNJI] [DATA SAFE] lpa = 202910 +[47296.532404] bdbm: [EUNJI] [DATA SAFE] lpa = 202911 +[47296.532876] bdbm: [EUNJI] [DATA SAFE] lpa = 202912 +[47296.533347] bdbm: [EUNJI] [DATA SAFE] lpa = 202913 +[47296.533821] bdbm: [EUNJI] [DATA SAFE] lpa = 202914 +[47296.534296] bdbm: [EUNJI] [DATA SAFE] lpa = 202915 +[47296.534766] bdbm: [EUNJI] [DATA SAFE] lpa = 202916 +[47296.535236] bdbm: [EUNJI] [DATA SAFE] lpa = 202917 +[47296.535711] bdbm: [EUNJI] [DATA SAFE] lpa = 202918 +[47296.536182] bdbm: [EUNJI] [DATA SAFE] lpa = 202919 +[47296.536651] bdbm: [EUNJI] [DATA SAFE] lpa = 202920 +[47296.537121] bdbm: [EUNJI] [DATA SAFE] lpa = 202921 +[47296.537595] bdbm: [EUNJI] [DATA SAFE] lpa = 202922 +[47296.541601] bdbm: [EUNJI] [DATA SAFE] lpa = 202923 +[47296.542081] bdbm: [EUNJI] [DATA SAFE] lpa = 202924 +[47296.542558] bdbm: [EUNJI] [DATA SAFE] lpa = 202925 +[47296.543034] bdbm: [EUNJI] [DATA SAFE] lpa = 202926 +[47296.543535] bdbm: [EUNJI] [DATA SAFE] lpa = 202927 +[47296.544037] bdbm: [EUNJI] [DATA SAFE] lpa = 202928 +[47296.544537] bdbm: [EUNJI] [DATA SAFE] lpa = 202929 +[47296.545052] bdbm: [EUNJI] [DATA SAFE] lpa = 202930 +[47296.545525] bdbm: [EUNJI] [DATA SAFE] lpa = 202931 +[47296.546003] bdbm: [EUNJI] [DATA SAFE] lpa = 202932 +[47296.546478] bdbm: [EUNJI] [DATA SAFE] lpa = 202933 +[47296.546954] bdbm: [EUNJI] [DATA SAFE] lpa = 202934 +[47296.547430] bdbm: [EUNJI] [DATA SAFE] lpa = 202935 +[47296.547902] bdbm: [EUNJI] [DATA SAFE] lpa = 202936 +[47296.548373] bdbm: [EUNJI] [DATA SAFE] lpa = 202937 +[47296.548845] bdbm: [EUNJI] [DATA SAFE] lpa = 202938 +[47296.549317] bdbm: [EUNJI] [DATA SAFE] lpa = 202939 +[47296.549787] bdbm: [EUNJI] [DATA SAFE] lpa = 202940 +[47296.550258] bdbm: [EUNJI] [DATA SAFE] lpa = 202941 +[47296.550730] bdbm: [EUNJI] [DATA SAFE] lpa = 202942 +[47296.551201] bdbm: [EUNJI] [DATA SAFE] lpa = 202943 +[47296.551697] bdbm: [EUNJI] [DATA SAFE] lpa = 202944 +[47296.552212] bdbm: [EUNJI] [DATA SAFE] lpa = 202945 +[47296.552712] bdbm: [EUNJI] [DATA SAFE] lpa = 202946 +[47296.553185] bdbm: [EUNJI] [DATA SAFE] lpa = 202947 +[47296.553662] bdbm: [EUNJI] [DATA SAFE] lpa = 202948 +[47296.554137] bdbm: [EUNJI] [DATA SAFE] lpa = 202949 +[47296.554613] bdbm: [EUNJI] [DATA SAFE] lpa = 202950 +[47296.555084] bdbm: [EUNJI] [DATA SAFE] lpa = 202951 +[47296.555560] bdbm: [EUNJI] [DATA SAFE] lpa = 202952 +[47296.556038] bdbm: [EUNJI] [DATA SAFE] lpa = 202953 +[47296.556514] bdbm: [EUNJI] [DATA SAFE] lpa = 202954 +[47296.556986] bdbm: [EUNJI] [DATA SAFE] lpa = 202955 +[47296.557463] bdbm: [EUNJI] [DATA SAFE] lpa = 202956 +[47296.557936] bdbm: [EUNJI] [DATA SAFE] lpa = 202957 +[47296.558406] bdbm: [EUNJI] [DATA SAFE] lpa = 202958 +[47296.558878] bdbm: [EUNJI] [DATA SAFE] lpa = 202959 +[47296.559350] bdbm: [EUNJI] [DATA SAFE] lpa = 202960 +[47296.559823] bdbm: [EUNJI] [DATA SAFE] lpa = 202961 +[47296.560300] bdbm: [EUNJI] [DATA SAFE] lpa = 202962 +[47296.560777] bdbm: [EUNJI] [DATA SAFE] lpa = 202963 +[47296.561253] bdbm: [EUNJI] [DATA SAFE] lpa = 202964 +[47296.561728] bdbm: [EUNJI] [DATA SAFE] lpa = 202965 +[47296.562204] bdbm: [EUNJI] [DATA SAFE] lpa = 202966 +[47296.562677] bdbm: [EUNJI] [DATA SAFE] lpa = 202967 +[47296.563151] bdbm: [EUNJI] [DATA SAFE] lpa = 202968 +[47296.563625] bdbm: [EUNJI] [DATA SAFE] lpa = 202969 +[47296.564099] bdbm: [EUNJI] [DATA SAFE] lpa = 202970 +[47296.564572] bdbm: [EUNJI] [DATA SAFE] lpa = 202971 +[47296.565046] bdbm: [EUNJI] [DATA SAFE] lpa = 202972 +[47296.565518] bdbm: [EUNJI] [DATA SAFE] lpa = 202973 +[47296.565996] bdbm: [EUNJI] [DATA SAFE] lpa = 202974 +[47296.566469] bdbm: [EUNJI] [DATA SAFE] lpa = 202975 +[47296.566942] bdbm: [EUNJI] [DATA SAFE] lpa = 202976 +[47296.567417] bdbm: [EUNJI] [DATA SAFE] lpa = 202977 +[47296.567890] bdbm: [EUNJI] [DATA SAFE] lpa = 202978 +[47296.568369] bdbm: [EUNJI] [DATA SAFE] lpa = 202979 +[47296.568846] bdbm: [EUNJI] [DATA SAFE] lpa = 202980 +[47296.569321] bdbm: [EUNJI] [DATA SAFE] lpa = 202981 +[47296.569796] bdbm: [EUNJI] [DATA SAFE] lpa = 202982 +[47296.570270] bdbm: [EUNJI] [DATA SAFE] lpa = 202983 +[47296.570746] bdbm: [EUNJI] [DATA SAFE] lpa = 202984 +[47296.571220] bdbm: [EUNJI] [DATA SAFE] lpa = 202985 +[47296.571696] bdbm: [EUNJI] [DATA SAFE] lpa = 202986 +[47296.572172] bdbm: [EUNJI] [DATA SAFE] lpa = 202987 +[47296.572646] bdbm: [EUNJI] [DATA SAFE] lpa = 202988 +[47296.573118] bdbm: [EUNJI] [DATA SAFE] lpa = 202989 +[47296.573622] bdbm: [EUNJI] [DATA SAFE] lpa = 202990 +[47296.574127] bdbm: [EUNJI] [DATA SAFE] lpa = 202991 +[47296.574629] bdbm: [EUNJI] [DATA SAFE] lpa = 202992 +[47296.575128] bdbm: [EUNJI] [DATA SAFE] lpa = 202993 +[47296.575640] bdbm: [EUNJI] [DATA SAFE] lpa = 202994 +[47296.576133] bdbm: [EUNJI] [DATA SAFE] lpa = 202995 +[47296.576613] bdbm: [EUNJI] [DATA SAFE] lpa = 202996 +[47296.577088] bdbm: [EUNJI] [DATA SAFE] lpa = 202997 +[47296.577563] bdbm: [EUNJI] [DATA SAFE] lpa = 202998 +[47296.578039] bdbm: [EUNJI] [DATA SAFE] lpa = 202999 +[47296.578514] bdbm: [EUNJI] [DATA SAFE] lpa = 203000 +[47296.578984] bdbm: [EUNJI] [DATA SAFE] lpa = 203001 +[47296.579453] bdbm: [EUNJI] [DATA SAFE] lpa = 203002 +[47296.579924] bdbm: [EUNJI] [DATA SAFE] lpa = 203003 +[47296.580394] bdbm: [EUNJI] [DATA SAFE] lpa = 203004 +[47296.580864] bdbm: [EUNJI] [DATA SAFE] lpa = 203005 +[47296.581333] bdbm: [EUNJI] [DATA SAFE] lpa = 203006 +[47296.581803] bdbm: [EUNJI] [DATA SAFE] lpa = 203007 +[47296.582273] bdbm: [EUNJI] [DATA SAFE] lpa = 203008 +[47296.582743] bdbm: [EUNJI] [DATA SAFE] lpa = 203009 +[47296.583213] bdbm: [EUNJI] [DATA SAFE] lpa = 203010 +[47296.583683] bdbm: [EUNJI] [DATA SAFE] lpa = 203011 +[47296.584153] bdbm: [EUNJI] [DATA SAFE] lpa = 203012 +[47296.584623] bdbm: [EUNJI] [DATA SAFE] lpa = 203013 +[47296.585093] bdbm: [EUNJI] [DATA SAFE] lpa = 203014 +[47296.585563] bdbm: [EUNJI] [DATA SAFE] lpa = 203015 +[47296.586034] bdbm: [EUNJI] [DATA SAFE] lpa = 203016 +[47296.586505] bdbm: [EUNJI] [DATA SAFE] lpa = 203017 +[47296.586977] bdbm: [EUNJI] [DATA SAFE] lpa = 203018 +[47296.587449] bdbm: [EUNJI] [DATA SAFE] lpa = 203019 +[47296.587921] bdbm: [EUNJI] [DATA SAFE] lpa = 203020 +[47296.588393] bdbm: [EUNJI] [DATA SAFE] lpa = 203021 +[47296.588865] bdbm: [EUNJI] [DATA SAFE] lpa = 203022 +[47296.589337] bdbm: [EUNJI] [DATA SAFE] lpa = 203023 +[47296.589811] bdbm: [EUNJI] [DATA SAFE] lpa = 203024 +[47296.590287] bdbm: [EUNJI] [DATA SAFE] lpa = 203025 +[47296.590760] bdbm: [EUNJI] [DATA SAFE] lpa = 203026 +[47296.591235] bdbm: [EUNJI] [DATA SAFE] lpa = 203027 +[47296.591712] bdbm: [EUNJI] [DATA SAFE] lpa = 203028 +[47296.592189] bdbm: [EUNJI] [DATA SAFE] lpa = 203029 +[47296.592665] bdbm: [EUNJI] [DATA SAFE] lpa = 203030 +[47296.593137] bdbm: [EUNJI] [DATA SAFE] lpa = 203031 +[47296.593633] bdbm: [EUNJI] [DATA SAFE] lpa = 203032 +[47296.594107] bdbm: [EUNJI] [DATA SAFE] lpa = 203033 +[47296.594583] bdbm: [EUNJI] [DATA SAFE] lpa = 203034 +[47296.595059] bdbm: [EUNJI] [DATA SAFE] lpa = 203035 +[47296.595536] bdbm: [EUNJI] [DATA SAFE] lpa = 203036 +[47296.596014] bdbm: [EUNJI] [DATA SAFE] lpa = 203037 +[47296.596490] bdbm: [EUNJI] [DATA SAFE] lpa = 203038 +[47296.596966] bdbm: [EUNJI] [DATA SAFE] lpa = 203039 +[47296.597443] bdbm: [EUNJI] [DATA SAFE] lpa = 203040 +[47296.597917] bdbm: [EUNJI] [DATA SAFE] lpa = 203041 +[47296.598393] bdbm: [EUNJI] [DATA SAFE] lpa = 203042 +[47296.598871] bdbm: [EUNJI] [DATA SAFE] lpa = 203043 +[47296.599348] bdbm: [EUNJI] [DATA SAFE] lpa = 203044 +[47296.599825] bdbm: [EUNJI] [DATA SAFE] lpa = 203045 +[47296.600302] bdbm: [EUNJI] [DATA SAFE] lpa = 203046 +[47296.600778] bdbm: [EUNJI] [DATA SAFE] lpa = 203047 +[47296.601252] bdbm: [EUNJI] [DATA SAFE] lpa = 203048 +[47296.601740] bdbm: [EUNJI] [DATA SAFE] lpa = 203049 +[47296.602216] bdbm: [EUNJI] [DATA SAFE] lpa = 203050 +[47296.602691] bdbm: [EUNJI] [DATA SAFE] lpa = 203051 +[47296.603166] bdbm: [EUNJI] [DATA SAFE] lpa = 203052 +[47296.603641] bdbm: [EUNJI] [DATA SAFE] lpa = 203053 +[47296.604116] bdbm: [EUNJI] [DATA SAFE] lpa = 203054 +[47296.604591] bdbm: [EUNJI] [DATA SAFE] lpa = 203055 +[47296.605065] bdbm: [EUNJI] [DATA SAFE] lpa = 203056 +[47296.605539] bdbm: [EUNJI] [DATA SAFE] lpa = 203057 +[47296.606016] bdbm: [EUNJI] [DATA SAFE] lpa = 203058 +[47296.606495] bdbm: [EUNJI] [DATA SAFE] lpa = 203059 +[47296.606972] bdbm: [EUNJI] [DATA SAFE] lpa = 203060 +[47296.607450] bdbm: [EUNJI] [DATA SAFE] lpa = 203061 +[47296.607928] bdbm: [EUNJI] [DATA SAFE] lpa = 203062 +[47296.608403] bdbm: [EUNJI] [DATA SAFE] lpa = 203063 +[47296.608881] bdbm: [EUNJI] [DATA SAFE] lpa = 203064 +[47296.609358] bdbm: [EUNJI] [DATA SAFE] lpa = 203065 +[47296.609833] bdbm: [EUNJI] [DATA SAFE] lpa = 203066 +[47296.610305] bdbm: [EUNJI] [DATA SAFE] lpa = 203067 +[47296.610776] bdbm: [EUNJI] [DATA SAFE] lpa = 203068 +[47296.611248] bdbm: [EUNJI] [DATA SAFE] lpa = 203069 +[47296.611721] bdbm: [EUNJI] [DATA SAFE] lpa = 203070 +[47296.612197] bdbm: [EUNJI] [DATA SAFE] lpa = 203071 +[47296.612673] bdbm: [EUNJI] [DATA SAFE] lpa = 203072 +[47296.613145] bdbm: [EUNJI] [DATA SAFE] lpa = 203073 +[47296.613643] bdbm: [EUNJI] [DATA SAFE] lpa = 203074 +[47296.614114] bdbm: [EUNJI] [DATA SAFE] lpa = 203075 +[47296.614587] bdbm: [EUNJI] [DATA SAFE] lpa = 203076 +[47296.615061] bdbm: [EUNJI] [DATA SAFE] lpa = 203077 +[47296.615534] bdbm: [EUNJI] [DATA SAFE] lpa = 203078 +[47296.616009] bdbm: [EUNJI] [DATA SAFE] lpa = 203079 +[47296.616482] bdbm: [EUNJI] [DATA SAFE] lpa = 203080 +[47296.616954] bdbm: [EUNJI] [DATA SAFE] lpa = 203081 +[47296.617428] bdbm: [EUNJI] [DATA SAFE] lpa = 203082 +[47296.617901] bdbm: [EUNJI] [DATA SAFE] lpa = 203083 +[47296.618376] bdbm: [EUNJI] [DATA SAFE] lpa = 203084 +[47296.618851] bdbm: [EUNJI] [DATA SAFE] lpa = 203085 +[47296.619325] bdbm: [EUNJI] [DATA SAFE] lpa = 203086 +[47296.619800] bdbm: [EUNJI] [DATA SAFE] lpa = 203087 +[47296.620274] bdbm: [EUNJI] [DATA SAFE] lpa = 203088 +[47296.620748] bdbm: [EUNJI] [DATA SAFE] lpa = 203089 +[47296.621223] bdbm: [EUNJI] [DATA SAFE] lpa = 203090 +[47296.621697] bdbm: [EUNJI] [DATA SAFE] lpa = 203091 +[47296.622171] bdbm: [EUNJI] [DATA SAFE] lpa = 203092 +[47296.622645] bdbm: [EUNJI] [DATA SAFE] lpa = 203093 +[47296.623118] bdbm: [EUNJI] [DATA SAFE] lpa = 203094 +[47296.623591] bdbm: [EUNJI] [DATA SAFE] lpa = 203095 +[47296.624065] bdbm: [EUNJI] [DATA SAFE] lpa = 203096 +[47296.624538] bdbm: [EUNJI] [DATA SAFE] lpa = 203097 +[47296.625011] bdbm: [EUNJI] [DATA SAFE] lpa = 203098 +[47296.625485] bdbm: [EUNJI] [DATA SAFE] lpa = 203099 +[47296.625960] bdbm: [EUNJI] [DATA SAFE] lpa = 203100 +[47296.626436] bdbm: [EUNJI] [DATA SAFE] lpa = 203101 +[47296.626909] bdbm: [EUNJI] [DATA SAFE] lpa = 203102 +[47296.627384] bdbm: [EUNJI] [DATA SAFE] lpa = 203103 +[47296.627857] bdbm: [EUNJI] [DATA SAFE] lpa = 203104 +[47296.628332] bdbm: [EUNJI] [DATA SAFE] lpa = 203105 +[47296.628806] bdbm: [EUNJI] [DATA SAFE] lpa = 203106 +[47296.629280] bdbm: [EUNJI] [DATA SAFE] lpa = 203107 +[47296.629755] bdbm: [EUNJI] [DATA SAFE] lpa = 203108 +[47296.630244] bdbm: [EUNJI] [DATA SAFE] lpa = 203109 +[47296.630718] bdbm: [EUNJI] [DATA SAFE] lpa = 203110 +[47296.631194] bdbm: [EUNJI] [DATA SAFE] lpa = 203111 +[47296.631668] bdbm: [EUNJI] [DATA SAFE] lpa = 203112 +[47296.632142] bdbm: [EUNJI] [DATA SAFE] lpa = 203113 +[47296.632617] bdbm: [EUNJI] [DATA SAFE] lpa = 203114 +[47296.633090] bdbm: [EUNJI] [DATA SAFE] lpa = 203115 +[47296.633564] bdbm: [EUNJI] [DATA SAFE] lpa = 203116 +[47296.634041] bdbm: [EUNJI] [DATA SAFE] lpa = 203117 +[47296.634517] bdbm: [EUNJI] [DATA SAFE] lpa = 203118 +[47296.634992] bdbm: [EUNJI] [DATA SAFE] lpa = 203119 +[47296.635467] bdbm: [EUNJI] [DATA SAFE] lpa = 203120 +[47296.635940] bdbm: [EUNJI] [DATA SAFE] lpa = 203121 +[47296.636413] bdbm: [EUNJI] [DATA SAFE] lpa = 203122 +[47296.636886] bdbm: [EUNJI] [DATA SAFE] lpa = 203123 +[47296.637359] bdbm: [EUNJI] [DATA SAFE] lpa = 203124 +[47296.637834] bdbm: [EUNJI] [DATA SAFE] lpa = 203125 +[47296.638311] bdbm: [EUNJI] [DATA SAFE] lpa = 203126 +[47296.638786] bdbm: [EUNJI] [DATA SAFE] lpa = 203127 +[47296.639261] bdbm: [EUNJI] [DATA SAFE] lpa = 203128 +[47296.639734] bdbm: [EUNJI] [DATA SAFE] lpa = 203129 +[47296.640208] bdbm: [EUNJI] [DATA SAFE] lpa = 203130 +[47296.640679] bdbm: [EUNJI] [DATA SAFE] lpa = 203131 +[47296.641153] bdbm: [EUNJI] [DATA SAFE] lpa = 203132 +[47296.641651] bdbm: [EUNJI] [DATA SAFE] lpa = 203133 +[47296.642125] bdbm: [EUNJI] [DATA SAFE] lpa = 203134 +[47296.642600] bdbm: [EUNJI] [DATA SAFE] lpa = 203135 +[47296.643074] bdbm: [EUNJI] [DATA SAFE] lpa = 203136 +[47296.643547] bdbm: [EUNJI] [DATA SAFE] lpa = 203137 +[47296.644023] bdbm: [EUNJI] [DATA SAFE] lpa = 203138 +[47296.644493] bdbm: [EUNJI] [DATA SAFE] lpa = 203139 +[47296.644968] bdbm: [EUNJI] [DATA SAFE] lpa = 203140 +[47296.645442] bdbm: [EUNJI] [DATA SAFE] lpa = 203141 +[47296.645915] bdbm: [EUNJI] [DATA SAFE] lpa = 203142 +[47296.646392] bdbm: [EUNJI] [DATA SAFE] lpa = 203143 +[47296.646866] bdbm: [EUNJI] [DATA SAFE] lpa = 203144 +[47296.647341] bdbm: [EUNJI] [DATA SAFE] lpa = 203145 +[47296.647815] bdbm: [EUNJI] [DATA SAFE] lpa = 203146 +[47296.648289] bdbm: [EUNJI] [DATA SAFE] lpa = 203147 +[47296.648763] bdbm: [EUNJI] [DATA SAFE] lpa = 203148 +[47296.649237] bdbm: [EUNJI] [DATA SAFE] lpa = 203149 +[47296.649708] bdbm: [EUNJI] [DATA SAFE] lpa = 203150 +[47296.650179] bdbm: [EUNJI] [DATA SAFE] lpa = 203151 +[47296.650651] bdbm: [EUNJI] [DATA SAFE] lpa = 203152 +[47296.651128] bdbm: [EUNJI] [DATA SAFE] lpa = 203153 +[47296.651606] bdbm: [EUNJI] [DATA SAFE] lpa = 203154 +[47296.652083] bdbm: [EUNJI] [DATA SAFE] lpa = 203155 +[47296.652559] bdbm: [EUNJI] [DATA SAFE] lpa = 203156 +[47296.653029] bdbm: [EUNJI] [DATA SAFE] lpa = 203157 +[47296.653507] bdbm: [EUNJI] [DATA SAFE] lpa = 203158 +[47296.653983] bdbm: [EUNJI] [DATA SAFE] lpa = 203159 +[47296.654454] bdbm: [EUNJI] [DATA SAFE] lpa = 203160 +[47296.654927] bdbm: [EUNJI] [DATA SAFE] lpa = 203161 +[47296.655401] bdbm: [EUNJI] [DATA SAFE] lpa = 203162 +[47296.655879] bdbm: [EUNJI] [DATA SAFE] lpa = 203163 +[47296.656350] bdbm: [EUNJI] [DATA SAFE] lpa = 203164 +[47296.656828] bdbm: [EUNJI] [DATA SAFE] lpa = 203165 +[47296.657304] bdbm: [EUNJI] [DATA SAFE] lpa = 203166 +[47296.657778] bdbm: [EUNJI] [DATA SAFE] lpa = 203167 +[47296.658259] bdbm: [EUNJI] [DATA SAFE] lpa = 203168 +[47296.658737] bdbm: [EUNJI] [DATA SAFE] lpa = 203169 +[47296.659210] bdbm: [EUNJI] [DATA SAFE] lpa = 203170 +[47296.659687] bdbm: [EUNJI] [DATA SAFE] lpa = 203171 +[47296.660164] bdbm: [EUNJI] [DATA SAFE] lpa = 203172 +[47296.660641] bdbm: [EUNJI] [DATA SAFE] lpa = 203173 +[47296.661119] bdbm: [EUNJI] [DATA SAFE] lpa = 203174 +[47296.661609] bdbm: [EUNJI] [DATA SAFE] lpa = 203175 +[47296.662097] bdbm: [EUNJI] [DATA SAFE] lpa = 203176 +[47296.662572] bdbm: [EUNJI] [DATA SAFE] lpa = 203177 +[47296.663049] bdbm: [EUNJI] [DATA SAFE] lpa = 203178 +[47296.663525] bdbm: [EUNJI] [DATA SAFE] lpa = 203179 +[47296.664001] bdbm: [EUNJI] [DATA SAFE] lpa = 203180 +[47296.664480] bdbm: [EUNJI] [DATA SAFE] lpa = 203181 +[47296.664957] bdbm: [EUNJI] [DATA SAFE] lpa = 203182 +[47296.665434] bdbm: [EUNJI] [DATA SAFE] lpa = 203183 +[47296.665912] bdbm: [EUNJI] [DATA SAFE] lpa = 203184 +[47296.666394] bdbm: [EUNJI] [DATA SAFE] lpa = 203185 +[47296.666870] bdbm: [EUNJI] [DATA SAFE] lpa = 203186 +[47296.667371] bdbm: [EUNJI] [DATA SAFE] lpa = 203187 +[47296.667889] bdbm: [EUNJI] [DATA SAFE] lpa = 203188 +[47296.668390] bdbm: [EUNJI] [DATA SAFE] lpa = 203189 +[47296.668899] bdbm: [EUNJI] [DATA SAFE] lpa = 203190 +[47296.669403] bdbm: [EUNJI] [DATA SAFE] lpa = 203191 +[47296.669906] bdbm: [EUNJI] [DATA SAFE] lpa = 203192 +[47296.670414] bdbm: [EUNJI] [DATA SAFE] lpa = 203193 +[47296.670920] bdbm: [EUNJI] [DATA SAFE] lpa = 203194 +[47296.671451] bdbm: [EUNJI] [DATA SAFE] lpa = 203195 +[47296.671957] bdbm: [EUNJI] [DATA SAFE] lpa = 203196 +[47296.672480] bdbm: [EUNJI] [DATA SAFE] lpa = 203197 +[47296.672985] bdbm: [EUNJI] [DATA SAFE] lpa = 203198 +[47296.673500] bdbm: [EUNJI] [DATA SAFE] lpa = 203199 +[47296.674008] bdbm: [EUNJI] [DATA SAFE] lpa = 203200 +[47296.674506] bdbm: [EUNJI] [DATA SAFE] lpa = 203201 +[47296.675036] bdbm: [EUNJI] [DATA SAFE] lpa = 203202 +[47296.675518] bdbm: [EUNJI] [DATA SAFE] lpa = 203203 +[47296.675993] bdbm: [EUNJI] [DATA SAFE] lpa = 203204 +[47296.676477] bdbm: [EUNJI] [DATA SAFE] lpa = 203205 +[47296.676947] bdbm: [EUNJI] [DATA SAFE] lpa = 203206 +[47296.677417] bdbm: [EUNJI] [DATA SAFE] lpa = 203207 +[47296.677887] bdbm: [EUNJI] [DATA SAFE] lpa = 203208 +[47296.678363] bdbm: [EUNJI] [DATA SAFE] lpa = 203209 +[47296.678834] bdbm: [EUNJI] [DATA SAFE] lpa = 203210 +[47296.679307] bdbm: [EUNJI] [DATA SAFE] lpa = 203211 +[47296.679778] bdbm: [EUNJI] [DATA SAFE] lpa = 203212 +[47296.680250] bdbm: [EUNJI] [DATA SAFE] lpa = 203213 +[47296.680735] bdbm: [EUNJI] [DATA SAFE] lpa = 203214 +[47296.681218] bdbm: [EUNJI] [DATA SAFE] lpa = 203215 +[47296.681728] bdbm: [EUNJI] [DATA SAFE] lpa = 203216 +[47296.682244] bdbm: [EUNJI] [DATA SAFE] lpa = 203217 +[47296.682753] bdbm: [EUNJI] [DATA SAFE] lpa = 203218 +[47296.683259] bdbm: [EUNJI] [DATA SAFE] lpa = 203219 +[47296.683762] bdbm: [EUNJI] [DATA SAFE] lpa = 203220 +[47296.684251] bdbm: [EUNJI] [DATA SAFE] lpa = 203221 +[47296.684722] bdbm: [EUNJI] [DATA SAFE] lpa = 203222 +[47296.685192] bdbm: [EUNJI] [DATA SAFE] lpa = 203223 +[47296.685666] bdbm: [EUNJI] [DATA SAFE] lpa = 203224 +[47296.686142] bdbm: [EUNJI] [DATA SAFE] lpa = 203225 +[47296.686612] bdbm: [EUNJI] [DATA SAFE] lpa = 203226 +[47296.687083] bdbm: [EUNJI] [DATA SAFE] lpa = 203227 +[47296.687553] bdbm: [EUNJI] [DATA SAFE] lpa = 203228 +[47296.688023] bdbm: [EUNJI] [DATA SAFE] lpa = 203229 +[47296.688500] bdbm: [EUNJI] [DATA SAFE] lpa = 203230 +[47296.688970] bdbm: [EUNJI] [DATA SAFE] lpa = 203231 +[47296.689441] bdbm: [EUNJI] [DATA SAFE] lpa = 203232 +[47296.689915] bdbm: [EUNJI] [DATA SAFE] lpa = 203233 +[47296.690398] bdbm: [EUNJI] [DATA SAFE] lpa = 203234 +[47296.690871] bdbm: [EUNJI] [DATA SAFE] lpa = 203235 +[47296.691347] bdbm: [EUNJI] [DATA SAFE] lpa = 203236 +[47296.691825] bdbm: [EUNJI] [DATA SAFE] lpa = 203237 +[47296.692302] bdbm: [EUNJI] [DATA SAFE] lpa = 203238 +[47296.692775] bdbm: [EUNJI] [DATA SAFE] lpa = 203239 +[47296.693248] bdbm: [EUNJI] [DATA SAFE] lpa = 203240 +[47296.693724] bdbm: [EUNJI] [DATA SAFE] lpa = 203241 +[47296.694201] bdbm: [EUNJI] [DATA SAFE] lpa = 203242 +[47296.694677] bdbm: [EUNJI] [DATA SAFE] lpa = 203243 +[47296.695154] bdbm: [EUNJI] [DATA SAFE] lpa = 203244 +[47296.695632] bdbm: [EUNJI] [DATA SAFE] lpa = 203245 +[47296.696108] bdbm: [EUNJI] [DATA SAFE] lpa = 203246 +[47296.696586] bdbm: [EUNJI] [DATA SAFE] lpa = 203247 +[47296.697062] bdbm: [EUNJI] [DATA SAFE] lpa = 203248 +[47296.697538] bdbm: [EUNJI] [DATA SAFE] lpa = 203249 +[47296.698013] bdbm: [EUNJI] [DATA SAFE] lpa = 203250 +[47296.698491] bdbm: [EUNJI] [DATA SAFE] lpa = 203251 +[47296.698969] bdbm: [EUNJI] [DATA SAFE] lpa = 203252 +[47296.699445] bdbm: [EUNJI] [DATA SAFE] lpa = 203253 +[47296.699922] bdbm: [EUNJI] [DATA SAFE] lpa = 203254 +[47296.700398] bdbm: [EUNJI] [DATA SAFE] lpa = 203255 +[47296.700875] bdbm: [EUNJI] [DATA SAFE] lpa = 203256 +[47296.701350] bdbm: [EUNJI] [DATA SAFE] lpa = 203257 +[47296.701822] bdbm: [EUNJI] [DATA SAFE] lpa = 203258 +[47296.702293] bdbm: [EUNJI] [DATA SAFE] lpa = 203259 +[47296.702767] bdbm: [EUNJI] [DATA SAFE] lpa = 203260 +[47296.703240] bdbm: [EUNJI] [DATA SAFE] lpa = 203261 +[47296.703713] bdbm: [EUNJI] [DATA SAFE] lpa = 203262 +[47296.704186] bdbm: [EUNJI] [DATA SAFE] lpa = 203263 +[47296.704660] bdbm: [EUNJI] [DATA SAFE] lpa = 203264 +[47296.705136] bdbm: [EUNJI] [DATA SAFE] lpa = 203265 +[47296.705638] bdbm: [EUNJI] [DATA SAFE] lpa = 203266 +[47296.706124] bdbm: [EUNJI] [DATA SAFE] lpa = 203267 +[47296.706599] bdbm: [EUNJI] [DATA SAFE] lpa = 203268 +[47296.707072] bdbm: [EUNJI] [DATA SAFE] lpa = 203269 +[47296.707545] bdbm: [EUNJI] [DATA SAFE] lpa = 203270 +[47296.708018] bdbm: [EUNJI] [DATA SAFE] lpa = 203271 +[47296.708492] bdbm: [EUNJI] [DATA SAFE] lpa = 203272 +[47296.708964] bdbm: [EUNJI] [DATA SAFE] lpa = 203273 +[47296.709438] bdbm: [EUNJI] [DATA SAFE] lpa = 203274 +[47296.709914] bdbm: [EUNJI] [DATA SAFE] lpa = 203275 +[47296.710388] bdbm: [EUNJI] [DATA SAFE] lpa = 203276 +[47296.710863] bdbm: [EUNJI] [DATA SAFE] lpa = 203277 +[47296.711339] bdbm: [EUNJI] [DATA SAFE] lpa = 203278 +[47296.711813] bdbm: [EUNJI] [DATA SAFE] lpa = 203279 +[47296.712287] bdbm: [EUNJI] [DATA SAFE] lpa = 203280 +[47296.712759] bdbm: [EUNJI] [DATA SAFE] lpa = 203281 +[47296.713232] bdbm: [EUNJI] [DATA SAFE] lpa = 203282 +[47296.713706] bdbm: [EUNJI] [DATA SAFE] lpa = 203283 +[47296.714180] bdbm: [EUNJI] [DATA SAFE] lpa = 203284 +[47296.714656] bdbm: [EUNJI] [DATA SAFE] lpa = 203285 +[47296.715130] bdbm: [EUNJI] [DATA SAFE] lpa = 203286 +[47296.715606] bdbm: [EUNJI] [DATA SAFE] lpa = 203287 +[47296.716082] bdbm: [EUNJI] [DATA SAFE] lpa = 203288 +[47296.716557] bdbm: [EUNJI] [DATA SAFE] lpa = 203289 +[47296.717033] bdbm: [EUNJI] [DATA SAFE] lpa = 203290 +[47296.717507] bdbm: [EUNJI] [DATA SAFE] lpa = 203291 +[47296.717981] bdbm: [EUNJI] [DATA SAFE] lpa = 203292 +[47296.718456] bdbm: [EUNJI] [DATA SAFE] lpa = 203293 +[47296.718929] bdbm: [EUNJI] [DATA SAFE] lpa = 203294 +[47296.719404] bdbm: [EUNJI] [DATA SAFE] lpa = 203295 +[47296.719878] bdbm: [EUNJI] [DATA SAFE] lpa = 203296 +[47296.720354] bdbm: [EUNJI] [DATA SAFE] lpa = 203297 +[47296.720830] bdbm: [EUNJI] [DATA SAFE] lpa = 203298 +[47296.721302] bdbm: [EUNJI] [DATA SAFE] lpa = 203299 +[47296.721780] bdbm: [EUNJI] [DATA SAFE] lpa = 203300 +[47296.722255] bdbm: [EUNJI] [DATA SAFE] lpa = 203301 +[47296.722727] bdbm: [EUNJI] [DATA SAFE] lpa = 203302 +[47296.723203] bdbm: [EUNJI] [DATA SAFE] lpa = 203303 +[47296.723680] bdbm: [EUNJI] [DATA SAFE] lpa = 203304 +[47296.724154] bdbm: [EUNJI] [DATA SAFE] lpa = 203305 +[47296.724629] bdbm: [EUNJI] [DATA SAFE] lpa = 203306 +[47296.725103] bdbm: [EUNJI] [DATA SAFE] lpa = 203307 +[47296.725578] bdbm: [EUNJI] [DATA SAFE] lpa = 203308 +[47296.726053] bdbm: [EUNJI] [DATA SAFE] lpa = 203309 +[47296.726528] bdbm: [EUNJI] [DATA SAFE] lpa = 203310 +[47296.727002] bdbm: [EUNJI] [DATA SAFE] lpa = 203311 +[47296.727474] bdbm: [EUNJI] [DATA SAFE] lpa = 203312 +[47296.727949] bdbm: [EUNJI] [DATA SAFE] lpa = 203313 +[47296.728424] bdbm: [EUNJI] [DATA SAFE] lpa = 203314 +[47296.728898] bdbm: [EUNJI] [DATA SAFE] lpa = 203315 +[47296.729373] bdbm: [EUNJI] [DATA SAFE] lpa = 203316 +[47296.729850] bdbm: [EUNJI] [DATA SAFE] lpa = 203317 +[47296.730325] bdbm: [EUNJI] [DATA SAFE] lpa = 203318 +[47296.730799] bdbm: [EUNJI] [DATA SAFE] lpa = 203319 +[47296.731272] bdbm: [EUNJI] [DATA SAFE] lpa = 203320 +[47296.731747] bdbm: [EUNJI] [DATA SAFE] lpa = 203321 +[47296.732220] bdbm: [EUNJI] [DATA SAFE] lpa = 203322 +[47296.732694] bdbm: [EUNJI] [DATA SAFE] lpa = 203323 +[47296.733169] bdbm: [EUNJI] [DATA SAFE] lpa = 203324 +[47296.733651] bdbm: [EUNJI] [DATA SAFE] lpa = 203325 +[47296.734127] bdbm: [EUNJI] [DATA SAFE] lpa = 203326 +[47296.734596] bdbm: [EUNJI] [DATA SAFE] lpa = 203327 +[47296.735071] bdbm: [EUNJI] [DATA SAFE] lpa = 203328 +[47296.735545] bdbm: [EUNJI] [DATA SAFE] lpa = 203329 +[47296.736017] bdbm: [EUNJI] [DATA SAFE] lpa = 203330 +[47296.736489] bdbm: [EUNJI] [DATA SAFE] lpa = 203331 +[47296.736962] bdbm: [EUNJI] [DATA SAFE] lpa = 203332 +[47296.737436] bdbm: [EUNJI] [DATA SAFE] lpa = 203333 +[47296.737910] bdbm: [EUNJI] [DATA SAFE] lpa = 203334 +[47296.738385] bdbm: [EUNJI] [DATA SAFE] lpa = 203335 +[47296.738858] bdbm: [EUNJI] [DATA SAFE] lpa = 203336 +[47296.739333] bdbm: [EUNJI] [DATA SAFE] lpa = 203337 +[47296.739811] bdbm: [EUNJI] [DATA SAFE] lpa = 203338 +[47296.740284] bdbm: [EUNJI] [DATA SAFE] lpa = 203339 +[47296.740758] bdbm: [EUNJI] [DATA SAFE] lpa = 203340 +[47296.741232] bdbm: [EUNJI] [DATA SAFE] lpa = 203341 +[47296.741706] bdbm: [EUNJI] [DATA SAFE] lpa = 203342 +[47296.742181] bdbm: [EUNJI] [DATA SAFE] lpa = 203343 +[47296.742653] bdbm: [EUNJI] [DATA SAFE] lpa = 203344 +[47296.743129] bdbm: [EUNJI] [DATA SAFE] lpa = 203345 +[47296.743602] bdbm: [EUNJI] [DATA SAFE] lpa = 203346 +[47296.744075] bdbm: [EUNJI] [DATA SAFE] lpa = 203347 +[47296.744549] bdbm: [EUNJI] [DATA SAFE] lpa = 203348 +[47296.745023] bdbm: [EUNJI] [DATA SAFE] lpa = 203349 +[47296.745495] bdbm: [EUNJI] [DATA SAFE] lpa = 203350 +[47296.745972] bdbm: [EUNJI] [DATA SAFE] lpa = 203351 +[47296.746448] bdbm: [EUNJI] [DATA SAFE] lpa = 203352 +[47296.746922] bdbm: [EUNJI] [DATA SAFE] lpa = 203353 +[47296.747397] bdbm: [EUNJI] [DATA SAFE] lpa = 203354 +[47296.747871] bdbm: [EUNJI] [DATA SAFE] lpa = 203355 +[47296.748345] bdbm: [EUNJI] [DATA SAFE] lpa = 203356 +[47296.748819] bdbm: [EUNJI] [DATA SAFE] lpa = 203357 +[47296.749293] bdbm: [EUNJI] [DATA SAFE] lpa = 203358 +[47296.749775] bdbm: [EUNJI] [DATA SAFE] lpa = 203359 +[47296.750251] bdbm: [EUNJI] [DATA SAFE] lpa = 203360 +[47296.750725] bdbm: [EUNJI] [DATA SAFE] lpa = 203361 +[47296.751200] bdbm: [EUNJI] [DATA SAFE] lpa = 203362 +[47296.751673] bdbm: [EUNJI] [DATA SAFE] lpa = 203363 +[47296.752148] bdbm: [EUNJI] [DATA SAFE] lpa = 203364 +[47296.752623] bdbm: [EUNJI] [DATA SAFE] lpa = 203365 +[47296.753097] bdbm: [EUNJI] [DATA SAFE] lpa = 203366 +[47296.753570] bdbm: [EUNJI] [DATA SAFE] lpa = 203367 +[47296.754045] bdbm: [EUNJI] [DATA SAFE] lpa = 203368 +[47296.754520] bdbm: [EUNJI] [DATA SAFE] lpa = 203369 +[47296.754995] bdbm: [EUNJI] [DATA SAFE] lpa = 203370 +[47296.755469] bdbm: [EUNJI] [DATA SAFE] lpa = 203371 +[47296.755943] bdbm: [EUNJI] [DATA SAFE] lpa = 203372 +[47296.756420] bdbm: [EUNJI] [DATA SAFE] lpa = 203373 +[47296.756894] bdbm: [EUNJI] [DATA SAFE] lpa = 203374 +[47296.757370] bdbm: [EUNJI] [DATA SAFE] lpa = 203375 +[47296.757847] bdbm: [EUNJI] [DATA SAFE] lpa = 203376 +[47296.758321] bdbm: [EUNJI] [DATA SAFE] lpa = 203377 +[47296.758796] bdbm: [EUNJI] [DATA SAFE] lpa = 203378 +[47296.759270] bdbm: [EUNJI] [DATA SAFE] lpa = 203379 +[47296.759745] bdbm: [EUNJI] [DATA SAFE] lpa = 203380 +[47296.760220] bdbm: [EUNJI] [DATA SAFE] lpa = 203381 +[47296.760697] bdbm: [EUNJI] [DATA SAFE] lpa = 203382 +[47296.761171] bdbm: [EUNJI] [DATA SAFE] lpa = 203383 +[47296.761646] bdbm: [EUNJI] [DATA SAFE] lpa = 203384 +[47296.762136] bdbm: [EUNJI] [DATA SAFE] lpa = 203385 +[47296.762610] bdbm: [EUNJI] [DATA SAFE] lpa = 203386 +[47296.763083] bdbm: [EUNJI] [DATA SAFE] lpa = 203387 +[47296.763557] bdbm: [EUNJI] [DATA SAFE] lpa = 203388 +[47296.764030] bdbm: [EUNJI] [DATA SAFE] lpa = 203389 +[47296.764504] bdbm: [EUNJI] [DATA SAFE] lpa = 203390 +[47296.764977] bdbm: [EUNJI] [DATA SAFE] lpa = 203391 +[47296.765447] bdbm: [EUNJI] [DATA SAFE] lpa = 203392 +[47296.765919] bdbm: [EUNJI] [DATA SAFE] lpa = 203393 +[47296.766394] bdbm: [EUNJI] [DATA SAFE] lpa = 203394 +[47296.766868] bdbm: [EUNJI] [DATA SAFE] lpa = 203395 +[47296.767343] bdbm: [EUNJI] [DATA SAFE] lpa = 203396 +[47296.767816] bdbm: [EUNJI] [DATA SAFE] lpa = 203397 +[47296.768317] bdbm: [EUNJI] [DATA SAFE] lpa = 203398 +[47296.768808] bdbm: [EUNJI] [DATA SAFE] lpa = 203399 +[47296.769283] bdbm: [EUNJI] [DATA SAFE] lpa = 203400 +[47296.769788] bdbm: [EUNJI] [DATA SAFE] lpa = 203401 +[47296.770302] bdbm: [EUNJI] [DATA SAFE] lpa = 203402 +[47296.770792] bdbm: [EUNJI] [DATA SAFE] lpa = 203403 +[47296.771281] bdbm: [EUNJI] [DATA SAFE] lpa = 203404 +[47296.771770] bdbm: [EUNJI] [DATA SAFE] lpa = 203405 +[47296.772262] bdbm: [EUNJI] [DATA SAFE] lpa = 203406 +[47296.772752] bdbm: [EUNJI] [DATA SAFE] lpa = 203407 +[47296.773258] bdbm: [EUNJI] [DATA SAFE] lpa = 203408 +[47296.773763] bdbm: [EUNJI] [DATA SAFE] lpa = 203409 +[47296.774281] bdbm: [EUNJI] [DATA SAFE] lpa = 203410 +[47296.774779] bdbm: [EUNJI] [DATA SAFE] lpa = 203411 +[47296.775288] bdbm: [EUNJI] [DATA SAFE] lpa = 203412 +[47296.775791] bdbm: [EUNJI] [DATA SAFE] lpa = 203413 +[47296.776314] bdbm: [EUNJI] [DATA SAFE] lpa = 203414 +[47296.776814] bdbm: [EUNJI] [DATA SAFE] lpa = 203415 +[47296.777315] bdbm: [EUNJI] [DATA SAFE] lpa = 203416 +[47296.777824] bdbm: [EUNJI] [DATA SAFE] lpa = 203417 +[47296.778331] bdbm: [EUNJI] [DATA SAFE] lpa = 203418 +[47296.778834] bdbm: [EUNJI] [DATA SAFE] lpa = 203419 +[47296.779353] bdbm: [EUNJI] [DATA SAFE] lpa = 203420 +[47296.779876] bdbm: [EUNJI] [DATA SAFE] lpa = 203421 +[47296.780404] bdbm: [EUNJI] [DATA SAFE] lpa = 203422 +[47296.780930] bdbm: [EUNJI] [DATA SAFE] lpa = 203423 +[47296.781422] bdbm: [EUNJI] [DATA SAFE] lpa = 203424 +[47296.781902] bdbm: [EUNJI] [DATA SAFE] lpa = 203425 +[47296.782374] bdbm: [EUNJI] [DATA SAFE] lpa = 203426 +[47296.782858] bdbm: [EUNJI] [DATA SAFE] lpa = 203427 +[47296.783329] bdbm: [EUNJI] [DATA SAFE] lpa = 203428 +[47296.783801] bdbm: [EUNJI] [DATA SAFE] lpa = 203429 +[47296.784272] bdbm: [EUNJI] [DATA SAFE] lpa = 203430 +[47296.784774] bdbm: [EUNJI] [DATA SAFE] lpa = 203431 +[47296.785248] bdbm: [EUNJI] [DATA SAFE] lpa = 203432 +[47296.785720] bdbm: [EUNJI] [DATA SAFE] lpa = 203433 +[47296.786197] bdbm: [EUNJI] [DATA SAFE] lpa = 203434 +[47296.786668] bdbm: [EUNJI] [DATA SAFE] lpa = 203435 +[47296.787139] bdbm: [EUNJI] [DATA SAFE] lpa = 203436 +[47296.787610] bdbm: [EUNJI] [DATA SAFE] lpa = 203437 +[47296.788081] bdbm: [EUNJI] [DATA SAFE] lpa = 203438 +[47296.788552] bdbm: [EUNJI] [DATA SAFE] lpa = 203439 +[47296.789023] bdbm: [EUNJI] [DATA SAFE] lpa = 203440 +[47296.789494] bdbm: [EUNJI] [DATA SAFE] lpa = 203441 +[47296.789970] bdbm: [EUNJI] [DATA SAFE] lpa = 203442 +[47296.790446] bdbm: [EUNJI] [DATA SAFE] lpa = 203443 +[47296.790917] bdbm: [EUNJI] [DATA SAFE] lpa = 203444 +[47296.791388] bdbm: [EUNJI] [DATA SAFE] lpa = 203445 +[47296.791858] bdbm: [EUNJI] [DATA SAFE] lpa = 203446 +[47296.792329] bdbm: [EUNJI] [DATA SAFE] lpa = 203447 +[47296.792800] bdbm: [EUNJI] [DATA SAFE] lpa = 203448 +[47296.793271] bdbm: [EUNJI] [DATA SAFE] lpa = 203449 +[47296.793743] bdbm: [EUNJI] [DATA SAFE] lpa = 203450 +[47296.794212] bdbm: [EUNJI] [DATA SAFE] lpa = 203451 +[47296.794682] bdbm: [EUNJI] [DATA SAFE] lpa = 203452 +[47296.795152] bdbm: [EUNJI] [DATA SAFE] lpa = 203453 +[47296.795622] bdbm: [EUNJI] [DATA SAFE] lpa = 203454 +[47296.796092] bdbm: [EUNJI] [DATA SAFE] lpa = 203455 +[47296.796562] bdbm: [EUNJI] [DATA SAFE] lpa = 203456 +[47296.797033] bdbm: [EUNJI] [DATA SAFE] lpa = 203457 +[47296.797503] bdbm: [EUNJI] [DATA SAFE] lpa = 203458 +[47296.797971] bdbm: [EUNJI] [DATA SAFE] lpa = 203459 +[47296.798441] bdbm: [EUNJI] [DATA SAFE] lpa = 203460 +[47296.798911] bdbm: [EUNJI] [DATA SAFE] lpa = 203461 +[47296.799382] bdbm: [EUNJI] [DATA SAFE] lpa = 203462 +[47296.799852] bdbm: [EUNJI] [DATA SAFE] lpa = 203463 +[47296.800323] bdbm: [EUNJI] [DATA SAFE] lpa = 203464 +[47296.800793] bdbm: [EUNJI] [DATA SAFE] lpa = 203465 +[47296.801263] bdbm: [EUNJI] [DATA SAFE] lpa = 203466 +[47296.801732] bdbm: [EUNJI] [DATA SAFE] lpa = 203467 +[47296.802201] bdbm: [EUNJI] [DATA SAFE] lpa = 203468 +[47296.802671] bdbm: [EUNJI] [DATA SAFE] lpa = 203469 +[47296.803140] bdbm: [EUNJI] [DATA SAFE] lpa = 203470 +[47296.803611] bdbm: [EUNJI] [DATA SAFE] lpa = 203471 +[47296.804080] bdbm: [EUNJI] [DATA SAFE] lpa = 203472 +[47296.804550] bdbm: [EUNJI] [DATA SAFE] lpa = 203473 +[47296.805020] bdbm: [EUNJI] [DATA SAFE] lpa = 203474 +[47296.805490] bdbm: [EUNJI] [DATA SAFE] lpa = 203475 +[47296.805961] bdbm: [EUNJI] [DATA SAFE] lpa = 203476 +[47296.806430] bdbm: [EUNJI] [DATA SAFE] lpa = 203477 +[47296.806900] bdbm: [EUNJI] [DATA SAFE] lpa = 203478 +[47296.807369] bdbm: [EUNJI] [DATA SAFE] lpa = 203479 +[47296.807839] bdbm: [EUNJI] [DATA SAFE] lpa = 203480 +[47296.808309] bdbm: [EUNJI] [DATA SAFE] lpa = 203481 +[47296.808779] bdbm: [EUNJI] [DATA SAFE] lpa = 203482 +[47296.809248] bdbm: [EUNJI] [DATA SAFE] lpa = 203483 +[47296.809719] bdbm: [EUNJI] [DATA SAFE] lpa = 203484 +[47296.810194] bdbm: [EUNJI] [DATA SAFE] lpa = 203485 +[47296.810664] bdbm: [EUNJI] [DATA SAFE] lpa = 203486 +[47296.811133] bdbm: [EUNJI] [DATA SAFE] lpa = 203487 +[47296.811603] bdbm: [EUNJI] [DATA SAFE] lpa = 203488 +[47296.812073] bdbm: [EUNJI] [DATA SAFE] lpa = 203489 +[47296.812543] bdbm: [EUNJI] [DATA SAFE] lpa = 203490 +[47296.813019] bdbm: [EUNJI] [DATA SAFE] lpa = 203491 +[47296.813489] bdbm: [EUNJI] [DATA SAFE] lpa = 203492 +[47296.813964] bdbm: [EUNJI] [DATA SAFE] lpa = 203493 +[47296.814433] bdbm: [EUNJI] [DATA SAFE] lpa = 203494 +[47296.814909] bdbm: [EUNJI] [DATA SAFE] lpa = 203495 +[47296.815379] bdbm: [EUNJI] [DATA SAFE] lpa = 203496 +[47296.815848] bdbm: [EUNJI] [DATA SAFE] lpa = 203497 +[47296.816324] bdbm: [EUNJI] [DATA SAFE] lpa = 203498 +[47296.816794] bdbm: [EUNJI] [DATA SAFE] lpa = 203499 +[47296.817264] bdbm: [EUNJI] [DATA SAFE] lpa = 203500 +[47296.817739] bdbm: [EUNJI] [DATA SAFE] lpa = 203501 +[47296.818214] bdbm: [EUNJI] [DATA SAFE] lpa = 203502 +[47296.818684] bdbm: [EUNJI] [DATA SAFE] lpa = 203503 +[47296.819160] bdbm: [EUNJI] [DATA SAFE] lpa = 203504 +[47296.819629] bdbm: [EUNJI] [DATA SAFE] lpa = 203505 +[47296.820100] bdbm: [EUNJI] [DATA SAFE] lpa = 203506 +[47296.820570] bdbm: [EUNJI] [DATA SAFE] lpa = 203507 +[47296.821045] bdbm: [EUNJI] [DATA SAFE] lpa = 203508 +[47296.821521] bdbm: [EUNJI] [DATA SAFE] lpa = 203509 +[47296.821993] bdbm: [EUNJI] [DATA SAFE] lpa = 203510 +[47296.822468] bdbm: [EUNJI] [DATA SAFE] lpa = 203511 +[47296.822938] bdbm: [EUNJI] [DATA SAFE] lpa = 203512 +[47296.823415] bdbm: [EUNJI] [DATA SAFE] lpa = 203513 +[47296.823884] bdbm: [EUNJI] [DATA SAFE] lpa = 203514 +[47296.824354] bdbm: [EUNJI] [DATA SAFE] lpa = 203515 +[47296.824824] bdbm: [EUNJI] [DATA SAFE] lpa = 203516 +[47296.825294] bdbm: [EUNJI] [DATA SAFE] lpa = 203517 +[47296.825766] bdbm: [EUNJI] [DATA SAFE] lpa = 203518 +[47296.826236] bdbm: [EUNJI] [DATA SAFE] lpa = 203519 +[47296.826706] bdbm: [EUNJI] [DATA SAFE] lpa = 203520 +[47296.827176] bdbm: [EUNJI] [DATA SAFE] lpa = 203521 +[47296.827646] bdbm: [EUNJI] [DATA SAFE] lpa = 203522 +[47296.828116] bdbm: [EUNJI] [DATA SAFE] lpa = 203523 +[47296.828586] bdbm: [EUNJI] [DATA SAFE] lpa = 203524 +[47296.829057] bdbm: [EUNJI] [DATA SAFE] lpa = 203525 +[47296.829527] bdbm: [EUNJI] [DATA SAFE] lpa = 203526 +[47296.829998] bdbm: [EUNJI] [DATA SAFE] lpa = 203527 +[47296.830473] bdbm: [EUNJI] [DATA SAFE] lpa = 203528 +[47296.830943] bdbm: [EUNJI] [DATA SAFE] lpa = 203529 +[47296.831413] bdbm: [EUNJI] [DATA SAFE] lpa = 203530 +[47296.831882] bdbm: [EUNJI] [DATA SAFE] lpa = 203531 +[47296.832352] bdbm: [EUNJI] [DATA SAFE] lpa = 203532 +[47296.832822] bdbm: [EUNJI] [DATA SAFE] lpa = 203533 +[47296.833292] bdbm: [EUNJI] [DATA SAFE] lpa = 203534 +[47296.833764] bdbm: [EUNJI] [DATA SAFE] lpa = 203535 +[47296.834234] bdbm: [EUNJI] [DATA SAFE] lpa = 203536 +[47296.834704] bdbm: [EUNJI] [DATA SAFE] lpa = 203537 +[47296.835175] bdbm: [EUNJI] [DATA SAFE] lpa = 203538 +[47296.835645] bdbm: [EUNJI] [DATA SAFE] lpa = 203539 +[47296.836115] bdbm: [EUNJI] [DATA SAFE] lpa = 203540 +[47296.836586] bdbm: [EUNJI] [DATA SAFE] lpa = 203541 +[47296.837056] bdbm: [EUNJI] [DATA SAFE] lpa = 203542 +[47296.837526] bdbm: [EUNJI] [DATA SAFE] lpa = 203543 +[47296.837999] bdbm: [EUNJI] [DATA SAFE] lpa = 203544 +[47296.838468] bdbm: [EUNJI] [DATA SAFE] lpa = 203545 +[47296.838938] bdbm: [EUNJI] [DATA SAFE] lpa = 203546 +[47296.839408] bdbm: [EUNJI] [DATA SAFE] lpa = 203547 +[47296.839878] bdbm: [EUNJI] [DATA SAFE] lpa = 203548 +[47296.840349] bdbm: [EUNJI] [DATA SAFE] lpa = 203549 +[47296.840822] bdbm: [EUNJI] [DATA SAFE] lpa = 203550 +[47296.841307] bdbm: [EUNJI] [DATA SAFE] lpa = 203551 +[47296.841786] bdbm: [EUNJI] [DATA SAFE] lpa = 203552 +[47296.842264] bdbm: [EUNJI] [DATA SAFE] lpa = 203553 +[47296.842744] bdbm: [EUNJI] [DATA SAFE] lpa = 203554 +[47296.843219] bdbm: [EUNJI] [DATA SAFE] lpa = 203555 +[47296.843689] bdbm: [EUNJI] [DATA SAFE] lpa = 203556 +[47296.844159] bdbm: [EUNJI] [DATA SAFE] lpa = 203557 +[47296.844634] bdbm: [EUNJI] [DATA SAFE] lpa = 203558 +[47296.845110] bdbm: [EUNJI] [DATA SAFE] lpa = 203559 +[47296.845586] bdbm: [EUNJI] [DATA SAFE] lpa = 203560 +[47296.846069] bdbm: [EUNJI] [DATA SAFE] lpa = 203561 +[47296.846553] bdbm: [EUNJI] [DATA SAFE] lpa = 203562 +[47296.847027] bdbm: [EUNJI] [DATA SAFE] lpa = 203563 +[47296.847501] bdbm: [EUNJI] [DATA SAFE] lpa = 203564 +[47296.847976] bdbm: [EUNJI] [DATA SAFE] lpa = 203565 +[47296.848451] bdbm: [EUNJI] [DATA SAFE] lpa = 203566 +[47296.848925] bdbm: [EUNJI] [DATA SAFE] lpa = 203567 +[47296.849399] bdbm: [EUNJI] [DATA SAFE] lpa = 203568 +[47296.849876] bdbm: [EUNJI] [DATA SAFE] lpa = 203569 +[47296.850350] bdbm: [EUNJI] [DATA SAFE] lpa = 203570 +[47296.850824] bdbm: [EUNJI] [DATA SAFE] lpa = 203571 +[47296.851299] bdbm: [EUNJI] [DATA SAFE] lpa = 203572 +[47296.851774] bdbm: [EUNJI] [DATA SAFE] lpa = 203573 +[47296.852248] bdbm: [EUNJI] [DATA SAFE] lpa = 203574 +[47296.852723] bdbm: [EUNJI] [DATA SAFE] lpa = 203575 +[47296.853197] bdbm: [EUNJI] [DATA SAFE] lpa = 203576 +[47296.853674] bdbm: [EUNJI] [DATA SAFE] lpa = 203577 +[47296.854151] bdbm: [EUNJI] [DATA SAFE] lpa = 203578 +[47296.854627] bdbm: [EUNJI] [DATA SAFE] lpa = 203579 +[47296.855103] bdbm: [EUNJI] [DATA SAFE] lpa = 203580 +[47296.855575] bdbm: [EUNJI] [DATA SAFE] lpa = 203581 +[47296.856045] bdbm: [EUNJI] [DATA SAFE] lpa = 203582 +[47296.856518] bdbm: [EUNJI] [DATA SAFE] lpa = 203583 +[47296.856993] bdbm: [EUNJI] [DATA SAFE] lpa = 203584 +[47296.857469] bdbm: [EUNJI] [DATA SAFE] lpa = 203585 +[47296.857940] bdbm: [EUNJI] [DATA SAFE] lpa = 203586 +[47296.858417] bdbm: [EUNJI] [DATA SAFE] lpa = 203587 +[47296.858893] bdbm: [EUNJI] [DATA SAFE] lpa = 203588 +[47296.859364] bdbm: [EUNJI] [DATA SAFE] lpa = 203589 +[47296.859835] bdbm: [EUNJI] [DATA SAFE] lpa = 203590 +[47296.860309] bdbm: [EUNJI] [DATA SAFE] lpa = 203591 +[47296.860784] bdbm: [EUNJI] [DATA SAFE] lpa = 203592 +[47296.861255] bdbm: [EUNJI] [DATA SAFE] lpa = 203593 +[47296.861731] bdbm: [EUNJI] [DATA SAFE] lpa = 203594 +[47296.862203] bdbm: [EUNJI] [DATA SAFE] lpa = 203595 +[47296.862679] bdbm: [EUNJI] [DATA SAFE] lpa = 203596 +[47296.863155] bdbm: [EUNJI] [DATA SAFE] lpa = 203597 +[47296.863628] bdbm: [EUNJI] [DATA SAFE] lpa = 203598 +[47296.864105] bdbm: [EUNJI] [DATA SAFE] lpa = 203599 +[47296.864581] bdbm: [EUNJI] [DATA SAFE] lpa = 203600 +[47296.865058] bdbm: [EUNJI] [DATA SAFE] lpa = 203601 +[47296.865536] bdbm: [EUNJI] [DATA SAFE] lpa = 203602 +[47296.866014] bdbm: [EUNJI] [DATA SAFE] lpa = 203603 +[47296.866488] bdbm: [EUNJI] [DATA SAFE] lpa = 203604 +[47296.866961] bdbm: [EUNJI] [DATA SAFE] lpa = 203605 +[47296.867438] bdbm: [EUNJI] [DATA SAFE] lpa = 203606 +[47296.867914] bdbm: [EUNJI] [DATA SAFE] lpa = 203607 +[47296.868391] bdbm: [EUNJI] [DATA SAFE] lpa = 203608 +[47296.868867] bdbm: [EUNJI] [DATA SAFE] lpa = 203609 +[47296.869341] bdbm: [EUNJI] [DATA SAFE] lpa = 203610 +[47296.869817] bdbm: [EUNJI] [DATA SAFE] lpa = 203611 +[47296.870294] bdbm: [EUNJI] [DATA SAFE] lpa = 203612 +[47296.870773] bdbm: [EUNJI] [DATA SAFE] lpa = 203613 +[47296.871249] bdbm: [EUNJI] [DATA SAFE] lpa = 203614 +[47296.871726] bdbm: [EUNJI] [DATA SAFE] lpa = 203615 +[47296.872205] bdbm: [EUNJI] [DATA SAFE] lpa = 203616 +[47296.872683] bdbm: [EUNJI] [DATA SAFE] lpa = 203617 +[47296.873161] bdbm: [EUNJI] [DATA SAFE] lpa = 203618 +[47296.873639] bdbm: [EUNJI] [DATA SAFE] lpa = 203619 +[47296.874116] bdbm: [EUNJI] [DATA SAFE] lpa = 203620 +[47296.874593] bdbm: [EUNJI] [DATA SAFE] lpa = 203621 +[47296.875069] bdbm: [EUNJI] [DATA SAFE] lpa = 203622 +[47296.875543] bdbm: [EUNJI] [DATA SAFE] lpa = 203623 +[47296.876020] bdbm: [EUNJI] [DATA SAFE] lpa = 203624 +[47296.876498] bdbm: [EUNJI] [DATA SAFE] lpa = 203625 +[47296.876974] bdbm: [EUNJI] [DATA SAFE] lpa = 203626 +[47296.877451] bdbm: [EUNJI] [DATA SAFE] lpa = 203627 +[47296.877930] bdbm: [EUNJI] [DATA SAFE] lpa = 203628 +[47296.878406] bdbm: [EUNJI] [DATA SAFE] lpa = 203629 +[47296.878883] bdbm: [EUNJI] [DATA SAFE] lpa = 203630 +[47296.879359] bdbm: [EUNJI] [DATA SAFE] lpa = 203631 +[47296.879836] bdbm: [EUNJI] [DATA SAFE] lpa = 203632 +[47296.880312] bdbm: [EUNJI] [DATA SAFE] lpa = 203633 +[47296.880786] bdbm: [EUNJI] [DATA SAFE] lpa = 203634 +[47296.881259] bdbm: [EUNJI] [DATA SAFE] lpa = 203635 +[47296.881738] bdbm: [EUNJI] [DATA SAFE] lpa = 203636 +[47296.882216] bdbm: [EUNJI] [DATA SAFE] lpa = 203637 +[47296.882695] bdbm: [EUNJI] [DATA SAFE] lpa = 203638 +[47296.883168] bdbm: [EUNJI] [DATA SAFE] lpa = 203639 +[47296.883645] bdbm: [EUNJI] [DATA SAFE] lpa = 203640 +[47296.884123] bdbm: [EUNJI] [DATA SAFE] lpa = 203641 +[47296.884594] bdbm: [EUNJI] [DATA SAFE] lpa = 203642 +[47296.885069] bdbm: [EUNJI] [DATA SAFE] lpa = 203643 +[47296.885545] bdbm: [EUNJI] [DATA SAFE] lpa = 203644 +[47296.886016] bdbm: [EUNJI] [DATA SAFE] lpa = 203645 +[47296.886488] bdbm: [EUNJI] [DATA SAFE] lpa = 203646 +[47296.886968] bdbm: [EUNJI] [DATA SAFE] lpa = 203647 +[47296.887439] bdbm: [EUNJI] [DATA SAFE] lpa = 203648 +[47296.887909] bdbm: [EUNJI] [DATA SAFE] lpa = 203649 +[47296.888385] bdbm: [EUNJI] [DATA SAFE] lpa = 203650 +[47296.888856] bdbm: [EUNJI] [DATA SAFE] lpa = 203651 +[47296.889332] bdbm: [EUNJI] [DATA SAFE] lpa = 203652 +[47296.889808] bdbm: [EUNJI] [DATA SAFE] lpa = 203653 +[47296.890280] bdbm: [EUNJI] [DATA SAFE] lpa = 203654 +[47296.890754] bdbm: [EUNJI] [DATA SAFE] lpa = 203655 +[47296.891226] bdbm: [EUNJI] [DATA SAFE] lpa = 203656 +[47296.891697] bdbm: [EUNJI] [DATA SAFE] lpa = 203657 +[47296.892173] bdbm: [EUNJI] [DATA SAFE] lpa = 203658 +[47296.892646] bdbm: [EUNJI] [DATA SAFE] lpa = 203659 +[47296.893120] bdbm: [EUNJI] [DATA SAFE] lpa = 203660 +[47296.893592] bdbm: [EUNJI] [DATA SAFE] lpa = 203661 +[47296.894079] bdbm: [EUNJI] [DATA SAFE] lpa = 203662 +[47296.894555] bdbm: [EUNJI] [DATA SAFE] lpa = 203663 +[47296.895028] bdbm: [EUNJI] [DATA SAFE] lpa = 203664 +[47296.895505] bdbm: [EUNJI] [DATA SAFE] lpa = 203665 +[47296.895983] bdbm: [EUNJI] [DATA SAFE] lpa = 203666 +[47296.896456] bdbm: [EUNJI] [DATA SAFE] lpa = 203667 +[47296.896933] bdbm: [EUNJI] [DATA SAFE] lpa = 203668 +[47296.897410] bdbm: [EUNJI] [DATA SAFE] lpa = 203669 +[47296.897882] bdbm: [EUNJI] [DATA SAFE] lpa = 203670 +[47296.898359] bdbm: [EUNJI] [DATA SAFE] lpa = 203671 +[47296.898835] bdbm: [EUNJI] [DATA SAFE] lpa = 203672 +[47296.899312] bdbm: [EUNJI] [DATA SAFE] lpa = 203673 +[47296.899788] bdbm: [EUNJI] [DATA SAFE] lpa = 203674 +[47296.900261] bdbm: [EUNJI] [DATA SAFE] lpa = 203675 +[47296.900738] bdbm: [EUNJI] [DATA SAFE] lpa = 203676 +[47296.901216] bdbm: [EUNJI] [DATA SAFE] lpa = 203677 +[47296.901694] bdbm: [EUNJI] [DATA SAFE] lpa = 203678 +[47296.902171] bdbm: [EUNJI] [DATA SAFE] lpa = 203679 +[47296.902647] bdbm: [EUNJI] [DATA SAFE] lpa = 203680 +[47296.903124] bdbm: [EUNJI] [DATA SAFE] lpa = 203681 +[47296.903596] bdbm: [EUNJI] [DATA SAFE] lpa = 203682 +[47296.904073] bdbm: [EUNJI] [DATA SAFE] lpa = 203683 +[47296.904548] bdbm: [EUNJI] [DATA SAFE] lpa = 203684 +[47296.905019] bdbm: [EUNJI] [DATA SAFE] lpa = 203685 +[47296.905496] bdbm: [EUNJI] [DATA SAFE] lpa = 203686 +[47296.905970] bdbm: [EUNJI] [DATA SAFE] lpa = 203687 +[47296.906447] bdbm: [EUNJI] [DATA SAFE] lpa = 203688 +[47296.906924] bdbm: [EUNJI] [DATA SAFE] lpa = 203689 +[47296.907400] bdbm: [EUNJI] [DATA SAFE] lpa = 203690 +[47296.907875] bdbm: [EUNJI] [DATA SAFE] lpa = 203691 +[47296.908350] bdbm: [EUNJI] [DATA SAFE] lpa = 203692 +[47296.908827] bdbm: [EUNJI] [DATA SAFE] lpa = 203693 +[47296.909303] bdbm: [EUNJI] [DATA SAFE] lpa = 203694 +[47296.909779] bdbm: [EUNJI] [DATA SAFE] lpa = 203695 +[47296.910254] bdbm: [EUNJI] [DATA SAFE] lpa = 203696 +[47296.910729] bdbm: [EUNJI] [DATA SAFE] lpa = 203697 +[47296.911205] bdbm: [EUNJI] [DATA SAFE] lpa = 203698 +[47296.911679] bdbm: [EUNJI] [DATA SAFE] lpa = 203699 +[47296.912155] bdbm: [EUNJI] [DATA SAFE] lpa = 203700 +[47296.912630] bdbm: [EUNJI] [DATA SAFE] lpa = 203701 +[47296.913102] bdbm: [EUNJI] [DATA SAFE] lpa = 203702 +[47296.913577] bdbm: [EUNJI] [DATA SAFE] lpa = 203703 +[47296.914053] bdbm: [EUNJI] [DATA SAFE] lpa = 203704 +[47296.914527] bdbm: [EUNJI] [DATA SAFE] lpa = 203705 +[47296.915001] bdbm: [EUNJI] [DATA SAFE] lpa = 203706 +[47296.915474] bdbm: [EUNJI] [DATA SAFE] lpa = 203707 +[47296.915944] bdbm: [EUNJI] [DATA SAFE] lpa = 203708 +[47296.916418] bdbm: [EUNJI] [DATA SAFE] lpa = 203709 +[47296.916892] bdbm: [EUNJI] [DATA SAFE] lpa = 203710 +[47296.917367] bdbm: [EUNJI] [DATA SAFE] lpa = 203711 +[47296.917855] bdbm: [EUNJI] [DATA SAFE] lpa = 203712 +[47296.918330] bdbm: [EUNJI] [DATA SAFE] lpa = 203713 +[47296.918803] bdbm: [EUNJI] [DATA SAFE] lpa = 203714 +[47296.919278] bdbm: [EUNJI] [DATA SAFE] lpa = 203715 +[47296.919752] bdbm: [EUNJI] [DATA SAFE] lpa = 203716 +[47296.920225] bdbm: [EUNJI] [DATA SAFE] lpa = 203717 +[47296.920696] bdbm: [EUNJI] [DATA SAFE] lpa = 203718 +[47296.921170] bdbm: [EUNJI] [DATA SAFE] lpa = 203719 +[47296.921642] bdbm: [EUNJI] [DATA SAFE] lpa = 203720 +[47296.922119] bdbm: [EUNJI] [DATA SAFE] lpa = 203721 +[47296.922594] bdbm: [EUNJI] [DATA SAFE] lpa = 203722 +[47296.923066] bdbm: [EUNJI] [DATA SAFE] lpa = 203723 +[47296.923539] bdbm: [EUNJI] [DATA SAFE] lpa = 203724 +[47296.924012] bdbm: [EUNJI] [DATA SAFE] lpa = 203725 +[47296.924485] bdbm: [EUNJI] [DATA SAFE] lpa = 203726 +[47296.924960] bdbm: [EUNJI] [DATA SAFE] lpa = 203727 +[47296.925434] bdbm: [EUNJI] [DATA SAFE] lpa = 203728 +[47296.925906] bdbm: [EUNJI] [DATA SAFE] lpa = 203729 +[47296.926382] bdbm: [EUNJI] [DATA SAFE] lpa = 203730 +[47296.926855] bdbm: [EUNJI] [DATA SAFE] lpa = 203731 +[47296.927329] bdbm: [EUNJI] [DATA SAFE] lpa = 203732 +[47296.927804] bdbm: [EUNJI] [DATA SAFE] lpa = 203733 +[47296.928277] bdbm: [EUNJI] [DATA SAFE] lpa = 203734 +[47296.928751] bdbm: [EUNJI] [DATA SAFE] lpa = 203735 +[47296.929228] bdbm: [EUNJI] [DATA SAFE] lpa = 203736 +[47296.929704] bdbm: [EUNJI] [DATA SAFE] lpa = 203737 +[47296.930178] bdbm: [EUNJI] [DATA SAFE] lpa = 203738 +[47296.930652] bdbm: [EUNJI] [DATA SAFE] lpa = 203739 +[47296.931126] bdbm: [EUNJI] [DATA SAFE] lpa = 203740 +[47296.931601] bdbm: [EUNJI] [DATA SAFE] lpa = 203741 +[47296.932074] bdbm: [EUNJI] [DATA SAFE] lpa = 203742 +[47296.932550] bdbm: [EUNJI] [DATA SAFE] lpa = 203743 +[47296.933024] bdbm: [EUNJI] [DATA SAFE] lpa = 203744 +[47296.933499] bdbm: [EUNJI] [DATA SAFE] lpa = 203745 +[47296.933973] bdbm: [EUNJI] [DATA SAFE] lpa = 203746 +[47296.934448] bdbm: [EUNJI] [DATA SAFE] lpa = 203747 +[47296.934923] bdbm: [EUNJI] [DATA SAFE] lpa = 203748 +[47296.935394] bdbm: [EUNJI] [DATA SAFE] lpa = 203749 +[47296.935869] bdbm: [EUNJI] [DATA SAFE] lpa = 203750 +[47296.936343] bdbm: [EUNJI] [DATA SAFE] lpa = 203751 +[47296.936818] bdbm: [EUNJI] [DATA SAFE] lpa = 203752 +[47296.937291] bdbm: [EUNJI] [DATA SAFE] lpa = 203753 +[47296.937781] bdbm: [EUNJI] [DATA SAFE] lpa = 203754 +[47296.938288] bdbm: [EUNJI] [DATA SAFE] lpa = 203755 +[47296.938764] bdbm: [EUNJI] [DATA SAFE] lpa = 203756 +[47296.939241] bdbm: [EUNJI] [DATA SAFE] lpa = 203757 +[47296.939718] bdbm: [EUNJI] [DATA SAFE] lpa = 203758 +[47296.940191] bdbm: [EUNJI] [DATA SAFE] lpa = 203759 +[47296.940669] bdbm: [EUNJI] [DATA SAFE] lpa = 203760 +[47296.941146] bdbm: [EUNJI] [DATA SAFE] lpa = 203761 +[47296.941631] bdbm: [EUNJI] [DATA SAFE] lpa = 203762 +[47296.942109] bdbm: [EUNJI] [DATA SAFE] lpa = 203763 +[47296.942588] bdbm: [EUNJI] [DATA SAFE] lpa = 203764 +[47296.943066] bdbm: [EUNJI] [DATA SAFE] lpa = 203765 +[47296.943540] bdbm: [EUNJI] [DATA SAFE] lpa = 203766 +[47296.944014] bdbm: [EUNJI] [DATA SAFE] lpa = 203767 +[47296.944491] bdbm: [EUNJI] [DATA SAFE] lpa = 203768 +[47296.944967] bdbm: [EUNJI] [DATA SAFE] lpa = 203769 +[47296.945436] bdbm: [EUNJI] [DATA SAFE] lpa = 203770 +[47296.945913] bdbm: [EUNJI] [DATA SAFE] lpa = 203771 +[47296.946386] bdbm: [EUNJI] [DATA SAFE] lpa = 203772 +[47296.946857] bdbm: [EUNJI] [DATA SAFE] lpa = 203773 +[47296.947328] bdbm: [EUNJI] [DATA SAFE] lpa = 203774 +[47296.947798] bdbm: [EUNJI] [DATA SAFE] lpa = 203775 +[47296.948271] bdbm: [EUNJI] [DATA SAFE] lpa = 203776 +[47296.948743] bdbm: [EUNJI] [DATA SAFE] lpa = 203777 +[47296.949213] bdbm: [EUNJI] [DATA SAFE] lpa = 203778 +[47296.949686] bdbm: [EUNJI] [DATA SAFE] lpa = 203779 +[47296.950162] bdbm: [EUNJI] [DATA SAFE] lpa = 203780 +[47296.950638] bdbm: [EUNJI] [DATA SAFE] lpa = 203781 +[47296.951108] bdbm: [EUNJI] [DATA SAFE] lpa = 203782 +[47296.951580] bdbm: [EUNJI] [DATA SAFE] lpa = 203783 +[47296.952052] bdbm: [EUNJI] [DATA SAFE] lpa = 203784 +[47296.952524] bdbm: [EUNJI] [DATA SAFE] lpa = 203785 +[47296.953000] bdbm: [EUNJI] [DATA SAFE] lpa = 203786 +[47296.953476] bdbm: [EUNJI] [DATA SAFE] lpa = 203787 +[47296.953952] bdbm: [EUNJI] [DATA SAFE] lpa = 203788 +[47296.954428] bdbm: [EUNJI] [DATA SAFE] lpa = 203789 +[47296.954902] bdbm: [EUNJI] [DATA SAFE] lpa = 203790 +[47296.955375] bdbm: [EUNJI] [DATA SAFE] lpa = 203791 +[47296.955848] bdbm: [EUNJI] [DATA SAFE] lpa = 203792 +[47296.956321] bdbm: [EUNJI] [DATA SAFE] lpa = 203793 +[47296.956794] bdbm: [EUNJI] [DATA SAFE] lpa = 203794 +[47296.957268] bdbm: [EUNJI] [DATA SAFE] lpa = 203795 +[47296.957742] bdbm: [EUNJI] [DATA SAFE] lpa = 203796 +[47296.958218] bdbm: [EUNJI] [DATA SAFE] lpa = 203797 +[47296.958689] bdbm: [EUNJI] [DATA SAFE] lpa = 203798 +[47296.959163] bdbm: [EUNJI] [DATA SAFE] lpa = 203799 +[47296.959638] bdbm: [EUNJI] [DATA SAFE] lpa = 203800 +[47296.960112] bdbm: [EUNJI] [DATA SAFE] lpa = 203801 +[47296.960589] bdbm: [EUNJI] [DATA SAFE] lpa = 203802 +[47296.961062] bdbm: [EUNJI] [DATA SAFE] lpa = 203803 +[47296.961536] bdbm: [EUNJI] [DATA SAFE] lpa = 203804 +[47296.962013] bdbm: [EUNJI] [DATA SAFE] lpa = 203805 +[47296.962487] bdbm: [EUNJI] [DATA SAFE] lpa = 203806 +[47296.962962] bdbm: [EUNJI] [DATA SAFE] lpa = 203807 +[47296.963436] bdbm: [EUNJI] [DATA SAFE] lpa = 203808 +[47296.963910] bdbm: [EUNJI] [DATA SAFE] lpa = 203809 +[47296.964385] bdbm: [EUNJI] [DATA SAFE] lpa = 203810 +[47296.964860] bdbm: [EUNJI] [DATA SAFE] lpa = 203811 +[47296.965334] bdbm: [EUNJI] [DATA SAFE] lpa = 203812 +[47296.965805] bdbm: [EUNJI] [DATA SAFE] lpa = 203813 +[47296.966280] bdbm: [EUNJI] [DATA SAFE] lpa = 203814 +[47296.966755] bdbm: [EUNJI] [DATA SAFE] lpa = 203815 +[47296.967231] bdbm: [EUNJI] [DATA SAFE] lpa = 203816 +[47296.967705] bdbm: [EUNJI] [DATA SAFE] lpa = 203817 +[47296.968178] bdbm: [EUNJI] [DATA SAFE] lpa = 203818 +[47296.968653] bdbm: [EUNJI] [DATA SAFE] lpa = 203819 +[47296.969128] bdbm: [EUNJI] [DATA SAFE] lpa = 203820 +[47296.969605] bdbm: [EUNJI] [DATA SAFE] lpa = 203821 +[47296.970105] bdbm: [EUNJI] [DATA SAFE] lpa = 203822 +[47296.970577] bdbm: [EUNJI] [DATA SAFE] lpa = 203823 +[47296.971047] bdbm: [EUNJI] [DATA SAFE] lpa = 203824 +[47296.971524] bdbm: [EUNJI] [DATA SAFE] lpa = 203825 +[47296.972021] bdbm: [EUNJI] [DATA SAFE] lpa = 203826 +[47296.972512] bdbm: [EUNJI] [DATA SAFE] lpa = 203827 +[47296.972986] bdbm: [EUNJI] [DATA SAFE] lpa = 203828 +[47296.973460] bdbm: [EUNJI] [DATA SAFE] lpa = 203829 +[47296.973932] bdbm: [EUNJI] [DATA SAFE] lpa = 203830 +[47296.974430] bdbm: [EUNJI] [DATA SAFE] lpa = 203831 +[47296.974951] bdbm: [EUNJI] [DATA SAFE] lpa = 203832 +[47296.975449] bdbm: [EUNJI] [DATA SAFE] lpa = 203833 +[47296.975926] bdbm: [EUNJI] [DATA SAFE] lpa = 203834 +[47296.976401] bdbm: [EUNJI] [DATA SAFE] lpa = 203835 +[47296.976869] bdbm: [EUNJI] [DATA SAFE] lpa = 203836 +[47296.977338] bdbm: [EUNJI] [DATA SAFE] lpa = 203837 +[47296.977811] bdbm: [EUNJI] [DATA SAFE] lpa = 203838 +[47296.978285] bdbm: [EUNJI] [DATA SAFE] lpa = 203839 +[47296.978753] bdbm: [EUNJI] [DATA SAFE] lpa = 203840 +[47296.979221] bdbm: [EUNJI] [DATA SAFE] lpa = 203841 +[47296.979689] bdbm: [EUNJI] [DATA SAFE] lpa = 203842 +[47296.980158] bdbm: [EUNJI] [DATA SAFE] lpa = 203843 +[47296.980631] bdbm: [EUNJI] [DATA SAFE] lpa = 203844 +[47296.981105] bdbm: [EUNJI] [DATA SAFE] lpa = 203845 +[47296.981578] bdbm: [EUNJI] [DATA SAFE] lpa = 203846 +[47296.982050] bdbm: [EUNJI] [DATA SAFE] lpa = 203847 +[47296.982522] bdbm: [EUNJI] [DATA SAFE] lpa = 203848 +[47296.982990] bdbm: [EUNJI] [DATA SAFE] lpa = 203849 +[47296.983464] bdbm: [EUNJI] [DATA SAFE] lpa = 203850 +[47296.983938] bdbm: [EUNJI] [DATA SAFE] lpa = 203851 +[47296.984406] bdbm: [EUNJI] [DATA SAFE] lpa = 203852 +[47296.984875] bdbm: [EUNJI] [DATA SAFE] lpa = 203853 +[47296.985344] bdbm: [EUNJI] [DATA SAFE] lpa = 203854 +[47296.985816] bdbm: [EUNJI] [DATA SAFE] lpa = 203855 +[47296.986288] bdbm: [EUNJI] [DATA SAFE] lpa = 203856 +[47296.986760] bdbm: [EUNJI] [DATA SAFE] lpa = 203857 +[47296.987232] bdbm: [EUNJI] [DATA SAFE] lpa = 203858 +[47296.987703] bdbm: [EUNJI] [DATA SAFE] lpa = 203859 +[47296.988175] bdbm: [EUNJI] [DATA SAFE] lpa = 203860 +[47296.988646] bdbm: [EUNJI] [DATA SAFE] lpa = 203861 +[47296.989118] bdbm: [EUNJI] [DATA SAFE] lpa = 203862 +[47296.989591] bdbm: [EUNJI] [DATA SAFE] lpa = 203863 +[47296.990086] bdbm: [EUNJI] [DATA SAFE] lpa = 203864 +[47296.990565] bdbm: [EUNJI] [DATA SAFE] lpa = 203865 +[47296.991041] bdbm: [EUNJI] [DATA SAFE] lpa = 203866 +[47296.991510] bdbm: [EUNJI] [DATA SAFE] lpa = 203867 +[47296.991980] bdbm: [EUNJI] [DATA SAFE] lpa = 203868 +[47296.992455] bdbm: [EUNJI] [DATA SAFE] lpa = 203869 +[47296.992925] bdbm: [EUNJI] [DATA SAFE] lpa = 203870 +[47296.993396] bdbm: [EUNJI] [DATA SAFE] lpa = 203871 +[47296.993867] bdbm: [EUNJI] [DATA SAFE] lpa = 203872 +[47296.994341] bdbm: [EUNJI] [DATA SAFE] lpa = 203873 +[47296.994811] bdbm: [EUNJI] [DATA SAFE] lpa = 203874 +[47296.995286] bdbm: [EUNJI] [DATA SAFE] lpa = 203875 +[47296.995762] bdbm: [EUNJI] [DATA SAFE] lpa = 203876 +[47296.996237] bdbm: [EUNJI] [DATA SAFE] lpa = 203877 +[47296.996713] bdbm: [EUNJI] [DATA SAFE] lpa = 203878 +[47296.997188] bdbm: [EUNJI] [DATA SAFE] lpa = 203879 +[47296.997662] bdbm: [EUNJI] [DATA SAFE] lpa = 203880 +[47296.998133] bdbm: [EUNJI] [DATA SAFE] lpa = 203881 +[47296.998605] bdbm: [EUNJI] [DATA SAFE] lpa = 203882 +[47296.999075] bdbm: [EUNJI] [DATA SAFE] lpa = 203883 +[47296.999546] bdbm: [EUNJI] [DATA SAFE] lpa = 203884 +[47297.000016] bdbm: [EUNJI] [DATA SAFE] lpa = 203885 +[47297.000487] bdbm: [EUNJI] [DATA SAFE] lpa = 203886 +[47297.000957] bdbm: [EUNJI] [DATA SAFE] lpa = 203887 +[47297.001427] bdbm: [EUNJI] [DATA SAFE] lpa = 203888 +[47297.001903] bdbm: [EUNJI] [DATA SAFE] lpa = 203889 +[47297.002378] bdbm: [EUNJI] [DATA SAFE] lpa = 203890 +[47297.002854] bdbm: [EUNJI] [DATA SAFE] lpa = 203891 +[47297.003329] bdbm: [EUNJI] [DATA SAFE] lpa = 203892 +[47297.003800] bdbm: [EUNJI] [DATA SAFE] lpa = 203893 +[47297.004276] bdbm: [EUNJI] [DATA SAFE] lpa = 203894 +[47297.004746] bdbm: [EUNJI] [DATA SAFE] lpa = 203895 +[47297.005222] bdbm: [EUNJI] [DATA SAFE] lpa = 203896 +[47297.005698] bdbm: [EUNJI] [DATA SAFE] lpa = 203897 +[47297.006168] bdbm: [EUNJI] [DATA SAFE] lpa = 203898 +[47297.006639] bdbm: [EUNJI] [DATA SAFE] lpa = 203899 +[47297.007109] bdbm: [EUNJI] [DATA SAFE] lpa = 203900 +[47297.007580] bdbm: [EUNJI] [DATA SAFE] lpa = 203901 +[47297.008050] bdbm: [EUNJI] [DATA SAFE] lpa = 203902 +[47297.008521] bdbm: [EUNJI] [DATA SAFE] lpa = 203903 +[47297.008993] bdbm: [EUNJI] [DATA SAFE] lpa = 203904 +[47297.009463] bdbm: [EUNJI] [DATA SAFE] lpa = 203905 +[47297.009934] bdbm: [EUNJI] [DATA SAFE] lpa = 203906 +[47297.010403] bdbm: [EUNJI] [DATA SAFE] lpa = 203907 +[47297.010873] bdbm: [EUNJI] [DATA SAFE] lpa = 203908 +[47297.011343] bdbm: [EUNJI] [DATA SAFE] lpa = 203909 +[47297.011813] bdbm: [EUNJI] [DATA SAFE] lpa = 203910 +[47297.012283] bdbm: [EUNJI] [DATA SAFE] lpa = 203911 +[47297.012753] bdbm: [EUNJI] [DATA SAFE] lpa = 203912 +[47297.013223] bdbm: [EUNJI] [DATA SAFE] lpa = 203913 +[47297.013695] bdbm: [EUNJI] [DATA SAFE] lpa = 203914 +[47297.014166] bdbm: [EUNJI] [DATA SAFE] lpa = 203915 +[47297.014638] bdbm: [EUNJI] [DATA SAFE] lpa = 203916 +[47297.015109] bdbm: [EUNJI] [DATA SAFE] lpa = 203917 +[47297.015581] bdbm: [EUNJI] [DATA SAFE] lpa = 203918 +[47297.016052] bdbm: [EUNJI] [DATA SAFE] lpa = 203919 +[47297.016523] bdbm: [EUNJI] [DATA SAFE] lpa = 203920 +[47297.016995] bdbm: [EUNJI] [DATA SAFE] lpa = 203921 +[47297.017466] bdbm: [EUNJI] [DATA SAFE] lpa = 203922 +[47297.017939] bdbm: [EUNJI] [DATA SAFE] lpa = 203923 +[47297.018421] bdbm: [EUNJI] [DATA SAFE] lpa = 203924 +[47297.018896] bdbm: [EUNJI] [DATA SAFE] lpa = 203925 +[47297.019369] bdbm: [EUNJI] [DATA SAFE] lpa = 203926 +[47297.019846] bdbm: [EUNJI] [DATA SAFE] lpa = 203927 +[47297.020322] bdbm: [EUNJI] [DATA SAFE] lpa = 203928 +[47297.020799] bdbm: [EUNJI] [DATA SAFE] lpa = 203929 +[47297.021277] bdbm: [EUNJI] [DATA SAFE] lpa = 203930 +[47297.021754] bdbm: [EUNJI] [DATA SAFE] lpa = 203931 +[47297.022228] bdbm: [EUNJI] [DATA SAFE] lpa = 203932 +[47297.022706] bdbm: [EUNJI] [DATA SAFE] lpa = 203933 +[47297.023184] bdbm: [EUNJI] [DATA SAFE] lpa = 203934 +[47297.023662] bdbm: [EUNJI] [DATA SAFE] lpa = 203935 +[47297.024138] bdbm: [EUNJI] [DATA SAFE] lpa = 203936 +[47297.024614] bdbm: [EUNJI] [DATA SAFE] lpa = 203937 +[47297.025091] bdbm: [EUNJI] [DATA SAFE] lpa = 203938 +[47297.025568] bdbm: [EUNJI] [DATA SAFE] lpa = 203939 +[47297.026042] bdbm: [EUNJI] [DATA SAFE] lpa = 203940 +[47297.026518] bdbm: [EUNJI] [DATA SAFE] lpa = 203941 +[47297.026995] bdbm: [EUNJI] [DATA SAFE] lpa = 203942 +[47297.027472] bdbm: [EUNJI] [DATA SAFE] lpa = 203943 +[47297.027949] bdbm: [EUNJI] [DATA SAFE] lpa = 203944 +[47297.028428] bdbm: [EUNJI] [DATA SAFE] lpa = 203945 +[47297.028903] bdbm: [EUNJI] [DATA SAFE] lpa = 203946 +[47297.029379] bdbm: [EUNJI] [DATA SAFE] lpa = 203947 +[47297.029855] bdbm: [EUNJI] [DATA SAFE] lpa = 203948 +[47297.030329] bdbm: [EUNJI] [DATA SAFE] lpa = 203949 +[47297.030806] bdbm: [EUNJI] [DATA SAFE] lpa = 203950 +[47297.031281] bdbm: [EUNJI] [DATA SAFE] lpa = 203951 +[47297.031754] bdbm: [EUNJI] [DATA SAFE] lpa = 203952 +[47297.032228] bdbm: [EUNJI] [DATA SAFE] lpa = 203953 +[47297.032703] bdbm: [EUNJI] [DATA SAFE] lpa = 203954 +[47297.033177] bdbm: [EUNJI] [DATA SAFE] lpa = 203955 +[47297.033652] bdbm: [EUNJI] [DATA SAFE] lpa = 203956 +[47297.034140] bdbm: [EUNJI] [DATA SAFE] lpa = 203957 +[47297.034614] bdbm: [EUNJI] [DATA SAFE] lpa = 203958 +[47297.035093] bdbm: [EUNJI] [DATA SAFE] lpa = 203959 +[47297.035567] bdbm: [EUNJI] [DATA SAFE] lpa = 203960 +[47297.036040] bdbm: [EUNJI] [DATA SAFE] lpa = 203961 +[47297.036512] bdbm: [EUNJI] [DATA SAFE] lpa = 203962 +[47297.036988] bdbm: [EUNJI] [DATA SAFE] lpa = 203963 +[47297.037461] bdbm: [EUNJI] [DATA SAFE] lpa = 203964 +[47297.037931] bdbm: [EUNJI] [DATA SAFE] lpa = 203965 +[47297.038405] bdbm: [EUNJI] [DATA SAFE] lpa = 203966 +[47297.038879] bdbm: [EUNJI] [DATA SAFE] lpa = 203967 +[47297.039353] bdbm: [EUNJI] [DATA SAFE] lpa = 203968 +[47297.039825] bdbm: [EUNJI] [DATA SAFE] lpa = 203969 +[47297.040298] bdbm: [EUNJI] [DATA SAFE] lpa = 203970 +[47297.040772] bdbm: [EUNJI] [DATA SAFE] lpa = 203971 +[47297.041245] bdbm: [EUNJI] [DATA SAFE] lpa = 203972 +[47297.041717] bdbm: [EUNJI] [DATA SAFE] lpa = 203973 +[47297.042194] bdbm: [EUNJI] [DATA SAFE] lpa = 203974 +[47297.042670] bdbm: [EUNJI] [DATA SAFE] lpa = 203975 +[47297.043146] bdbm: [EUNJI] [DATA SAFE] lpa = 203976 +[47297.043620] bdbm: [EUNJI] [DATA SAFE] lpa = 203977 +[47297.044094] bdbm: [EUNJI] [DATA SAFE] lpa = 203978 +[47297.044567] bdbm: [EUNJI] [DATA SAFE] lpa = 203979 +[47297.045040] bdbm: [EUNJI] [DATA SAFE] lpa = 203980 +[47297.045515] bdbm: [EUNJI] [DATA SAFE] lpa = 203981 +[47297.045989] bdbm: [EUNJI] [DATA SAFE] lpa = 203982 +[47297.046465] bdbm: [EUNJI] [DATA SAFE] lpa = 203983 +[47297.046938] bdbm: [EUNJI] [DATA SAFE] lpa = 203984 +[47297.047412] bdbm: [EUNJI] [DATA SAFE] lpa = 203985 +[47297.047886] bdbm: [EUNJI] [DATA SAFE] lpa = 203986 +[47297.048359] bdbm: [EUNJI] [DATA SAFE] lpa = 203987 +[47297.048832] bdbm: [EUNJI] [DATA SAFE] lpa = 203988 +[47297.049305] bdbm: [EUNJI] [DATA SAFE] lpa = 203989 +[47297.049779] bdbm: [EUNJI] [DATA SAFE] lpa = 203990 +[47297.050264] bdbm: [EUNJI] [DATA SAFE] lpa = 203991 +[47297.050741] bdbm: [EUNJI] [DATA SAFE] lpa = 203992 +[47297.051214] bdbm: [EUNJI] [DATA SAFE] lpa = 203993 +[47297.051687] bdbm: [EUNJI] [DATA SAFE] lpa = 203994 +[47297.052160] bdbm: [EUNJI] [DATA SAFE] lpa = 203995 +[47297.052633] bdbm: [EUNJI] [DATA SAFE] lpa = 203996 +[47297.053107] bdbm: [EUNJI] [DATA SAFE] lpa = 203997 +[47297.053581] bdbm: [EUNJI] [DATA SAFE] lpa = 203998 +[47297.054055] bdbm: [EUNJI] [DATA SAFE] lpa = 203999 +[47297.054531] bdbm: [EUNJI] [DATA SAFE] lpa = 204000 +[47297.055006] bdbm: [EUNJI] [DATA SAFE] lpa = 204001 +[47297.055479] bdbm: [EUNJI] [DATA SAFE] lpa = 204002 +[47297.055955] bdbm: [EUNJI] [DATA SAFE] lpa = 204003 +[47297.056427] bdbm: [EUNJI] [DATA SAFE] lpa = 204004 +[47297.056901] bdbm: [EUNJI] [DATA SAFE] lpa = 204005 +[47297.057376] bdbm: [EUNJI] [DATA SAFE] lpa = 204006 +[47297.057855] bdbm: [EUNJI] [DATA SAFE] lpa = 204007 +[47297.058329] bdbm: [EUNJI] [DATA SAFE] lpa = 204008 +[47297.058804] bdbm: [EUNJI] [DATA SAFE] lpa = 204009 +[47297.059280] bdbm: [EUNJI] [DATA SAFE] lpa = 204010 +[47297.059756] bdbm: [EUNJI] [DATA SAFE] lpa = 204011 +[47297.060231] bdbm: [EUNJI] [DATA SAFE] lpa = 204012 +[47297.060706] bdbm: [EUNJI] [DATA SAFE] lpa = 204013 +[47297.061179] bdbm: [EUNJI] [DATA SAFE] lpa = 204014 +[47297.061653] bdbm: [EUNJI] [DATA SAFE] lpa = 204015 +[47297.062139] bdbm: [EUNJI] [DATA SAFE] lpa = 204016 +[47297.062613] bdbm: [EUNJI] [DATA SAFE] lpa = 204017 +[47297.063086] bdbm: [EUNJI] [DATA SAFE] lpa = 204018 +[47297.063559] bdbm: [EUNJI] [DATA SAFE] lpa = 204019 +[47297.064035] bdbm: [EUNJI] [DATA SAFE] lpa = 204020 +[47297.064508] bdbm: [EUNJI] [DATA SAFE] lpa = 204021 +[47297.064982] bdbm: [EUNJI] [DATA SAFE] lpa = 204022 +[47297.065462] bdbm: [EUNJI] [DATA SAFE] lpa = 204023 +[47297.065939] bdbm: [EUNJI] [DATA SAFE] lpa = 204024 +[47297.066414] bdbm: [EUNJI] [DATA SAFE] lpa = 204025 +[47297.066888] bdbm: [EUNJI] [DATA SAFE] lpa = 204026 +[47297.067365] bdbm: [EUNJI] [DATA SAFE] lpa = 204027 +[47297.067839] bdbm: [EUNJI] [DATA SAFE] lpa = 204028 +[47297.068314] bdbm: [EUNJI] [DATA SAFE] lpa = 204029 +[47297.068786] bdbm: [EUNJI] [DATA SAFE] lpa = 204030 +[47297.069261] bdbm: [EUNJI] [DATA SAFE] lpa = 204031 +[47297.069737] bdbm: [EUNJI] [DATA SAFE] lpa = 204032 +[47297.070210] bdbm: [EUNJI] [DATA SAFE] lpa = 204033 +[47297.070684] bdbm: [EUNJI] [DATA SAFE] lpa = 204034 +[47297.071156] bdbm: [EUNJI] [DATA SAFE] lpa = 204035 +[47297.071629] bdbm: [EUNJI] [DATA SAFE] lpa = 204036 +[47297.072101] bdbm: [EUNJI] [DATA SAFE] lpa = 204037 +[47297.072572] bdbm: [EUNJI] [DATA SAFE] lpa = 204038 +[47297.073043] bdbm: [EUNJI] [DATA SAFE] lpa = 204039 +[47297.073515] bdbm: [EUNJI] [DATA SAFE] lpa = 204040 +[47297.073990] bdbm: [EUNJI] [DATA SAFE] lpa = 204041 +[47297.074465] bdbm: [EUNJI] [DATA SAFE] lpa = 204042 +[47297.074939] bdbm: [EUNJI] [DATA SAFE] lpa = 204043 +[47297.075412] bdbm: [EUNJI] [DATA SAFE] lpa = 204044 +[47297.075884] bdbm: [EUNJI] [DATA SAFE] lpa = 204045 +[47297.076356] bdbm: [EUNJI] [DATA SAFE] lpa = 204046 +[47297.076829] bdbm: [EUNJI] [DATA SAFE] lpa = 204047 +[47297.077301] bdbm: [EUNJI] [DATA SAFE] lpa = 204048 +[47297.077776] bdbm: [EUNJI] [DATA SAFE] lpa = 204049 +[47297.078258] bdbm: [EUNJI] [DATA SAFE] lpa = 204050 +[47297.078732] bdbm: [EUNJI] [DATA SAFE] lpa = 204051 +[47297.079206] bdbm: [EUNJI] [DATA SAFE] lpa = 204052 +[47297.079679] bdbm: [EUNJI] [DATA SAFE] lpa = 204053 +[47297.080152] bdbm: [EUNJI] [DATA SAFE] lpa = 204054 +[47297.080627] bdbm: [EUNJI] [DATA SAFE] lpa = 204055 +[47297.081100] bdbm: [EUNJI] [DATA SAFE] lpa = 204056 +[47297.081575] bdbm: [EUNJI] [DATA SAFE] lpa = 204057 +[47297.082050] bdbm: [EUNJI] [DATA SAFE] lpa = 204058 +[47297.082523] bdbm: [EUNJI] [DATA SAFE] lpa = 204059 +[47297.082998] bdbm: [EUNJI] [DATA SAFE] lpa = 204060 +[47297.083471] bdbm: [EUNJI] [DATA SAFE] lpa = 204061 +[47297.083945] bdbm: [EUNJI] [DATA SAFE] lpa = 204062 +[47297.084421] bdbm: [EUNJI] [DATA SAFE] lpa = 204063 +[47297.084895] bdbm: [EUNJI] [DATA SAFE] lpa = 204064 +[47297.085371] bdbm: [EUNJI] [DATA SAFE] lpa = 204065 +[47297.085843] bdbm: [EUNJI] [DATA SAFE] lpa = 204066 +[47297.086319] bdbm: [EUNJI] [DATA SAFE] lpa = 204067 +[47297.086793] bdbm: [EUNJI] [DATA SAFE] lpa = 204068 +[47297.087268] bdbm: [EUNJI] [DATA SAFE] lpa = 204069 +[47297.087742] bdbm: [EUNJI] [DATA SAFE] lpa = 204070 +[47297.088218] bdbm: [EUNJI] [DATA SAFE] lpa = 204071 +[47297.088692] bdbm: [EUNJI] [DATA SAFE] lpa = 204072 +[47297.089165] bdbm: [EUNJI] [DATA SAFE] lpa = 204073 +[47297.089645] bdbm: [EUNJI] [DATA SAFE] lpa = 204074 +[47297.090118] bdbm: [EUNJI] [DATA SAFE] lpa = 204075 +[47297.090593] bdbm: [EUNJI] [DATA SAFE] lpa = 204076 +[47297.091066] bdbm: [EUNJI] [DATA SAFE] lpa = 204077 +[47297.091539] bdbm: [EUNJI] [DATA SAFE] lpa = 204078 +[47297.092014] bdbm: [EUNJI] [DATA SAFE] lpa = 204079 +[47297.092489] bdbm: [EUNJI] [DATA SAFE] lpa = 204080 +[47297.092962] bdbm: [EUNJI] [DATA SAFE] lpa = 204081 +[47297.093437] bdbm: [EUNJI] [DATA SAFE] lpa = 204082 +[47297.093913] bdbm: [EUNJI] [DATA SAFE] lpa = 204083 +[47297.094391] bdbm: [EUNJI] [DATA SAFE] lpa = 204084 +[47297.094870] bdbm: [EUNJI] [DATA SAFE] lpa = 204085 +[47297.095344] bdbm: [EUNJI] [DATA SAFE] lpa = 204086 +[47297.095820] bdbm: [EUNJI] [DATA SAFE] lpa = 204087 +[47297.096300] bdbm: [EUNJI] [DATA SAFE] lpa = 204088 +[47297.096779] bdbm: [EUNJI] [DATA SAFE] lpa = 204089 +[47297.097251] bdbm: [EUNJI] [DATA SAFE] lpa = 204090 +[47297.097726] bdbm: [EUNJI] [DATA SAFE] lpa = 204091 +[47297.098198] bdbm: [EUNJI] [DATA SAFE] lpa = 204092 +[47297.098670] bdbm: [EUNJI] [DATA SAFE] lpa = 204093 +[47297.099143] bdbm: [EUNJI] [DATA SAFE] lpa = 204094 +[47297.099616] bdbm: [EUNJI] [DATA SAFE] lpa = 204095 +[47297.100089] bdbm: [EUNJI] [DATA SAFE] lpa = 204096 +[47297.100561] bdbm: [EUNJI] [DATA SAFE] lpa = 204097 +[47297.101035] bdbm: [EUNJI] [DATA SAFE] lpa = 204098 +[47297.101508] bdbm: [EUNJI] [DATA SAFE] lpa = 204099 +[47297.101981] bdbm: [EUNJI] [DATA SAFE] lpa = 204100 +[47297.102457] bdbm: [EUNJI] [DATA SAFE] lpa = 204101 +[47297.102932] bdbm: [EUNJI] [DATA SAFE] lpa = 204102 +[47297.103406] bdbm: [EUNJI] [DATA SAFE] lpa = 204103 +[47297.103880] bdbm: [EUNJI] [DATA SAFE] lpa = 204104 +[47297.104352] bdbm: [EUNJI] [DATA SAFE] lpa = 204105 +[47297.104825] bdbm: [EUNJI] [DATA SAFE] lpa = 204106 +[47297.105298] bdbm: [EUNJI] [DATA SAFE] lpa = 204107 +[47297.105776] bdbm: [EUNJI] [DATA SAFE] lpa = 204108 +[47297.106261] bdbm: [EUNJI] [DATA SAFE] lpa = 204109 +[47297.106735] bdbm: [EUNJI] [DATA SAFE] lpa = 204110 +[47297.107210] bdbm: [EUNJI] [DATA SAFE] lpa = 204111 +[47297.107684] bdbm: [EUNJI] [DATA SAFE] lpa = 204112 +[47297.108158] bdbm: [EUNJI] [DATA SAFE] lpa = 204113 +[47297.108632] bdbm: [EUNJI] [DATA SAFE] lpa = 204114 +[47297.109105] bdbm: [EUNJI] [DATA SAFE] lpa = 204115 +[47297.109581] bdbm: [EUNJI] [DATA SAFE] lpa = 204116 +[47297.110052] bdbm: [EUNJI] [DATA SAFE] lpa = 204117 +[47297.110525] bdbm: [EUNJI] [DATA SAFE] lpa = 204118 +[47297.110996] bdbm: [EUNJI] [DATA SAFE] lpa = 204119 +[47297.111470] bdbm: [EUNJI] [DATA SAFE] lpa = 204120 +[47297.111944] bdbm: [EUNJI] [DATA SAFE] lpa = 204121 +[47297.112418] bdbm: [EUNJI] [DATA SAFE] lpa = 204122 +[47297.112891] bdbm: [EUNJI] [DATA SAFE] lpa = 204123 +[47297.113365] bdbm: [EUNJI] [DATA SAFE] lpa = 204124 +[47297.113842] bdbm: [EUNJI] [DATA SAFE] lpa = 204125 +[47297.114316] bdbm: [EUNJI] [DATA SAFE] lpa = 204126 +[47297.114791] bdbm: [EUNJI] [DATA SAFE] lpa = 204127 +[47297.115267] bdbm: [EUNJI] [DATA SAFE] lpa = 204128 +[47297.115741] bdbm: [EUNJI] [DATA SAFE] lpa = 204129 +[47297.116215] bdbm: [EUNJI] [DATA SAFE] lpa = 204130 +[47297.116689] bdbm: [EUNJI] [DATA SAFE] lpa = 204131 +[47297.117163] bdbm: [EUNJI] [DATA SAFE] lpa = 204132 +[47297.117647] bdbm: [EUNJI] [DATA SAFE] lpa = 204133 +[47297.118122] bdbm: [EUNJI] [DATA SAFE] lpa = 204134 +[47297.118597] bdbm: [EUNJI] [DATA SAFE] lpa = 204135 +[47297.119072] bdbm: [EUNJI] [DATA SAFE] lpa = 204136 +[47297.119546] bdbm: [EUNJI] [DATA SAFE] lpa = 204137 +[47297.120020] bdbm: [EUNJI] [DATA SAFE] lpa = 204138 +[47297.120494] bdbm: [EUNJI] [DATA SAFE] lpa = 204139 +[47297.120968] bdbm: [EUNJI] [DATA SAFE] lpa = 204140 +[47297.121442] bdbm: [EUNJI] [DATA SAFE] lpa = 204141 +[47297.121920] bdbm: [EUNJI] [DATA SAFE] lpa = 204142 +[47297.122395] bdbm: [EUNJI] [DATA SAFE] lpa = 204143 +[47297.122868] bdbm: [EUNJI] [DATA SAFE] lpa = 204144 +[47297.123341] bdbm: [EUNJI] [DATA SAFE] lpa = 204145 +[47297.123815] bdbm: [EUNJI] [DATA SAFE] lpa = 204146 +[47297.124290] bdbm: [EUNJI] [DATA SAFE] lpa = 204147 +[47297.124764] bdbm: [EUNJI] [DATA SAFE] lpa = 204148 +[47297.125237] bdbm: [EUNJI] [DATA SAFE] lpa = 204149 +[47297.125714] bdbm: [EUNJI] [DATA SAFE] lpa = 204150 +[47297.126189] bdbm: [EUNJI] [DATA SAFE] lpa = 204151 +[47297.126667] bdbm: [EUNJI] [DATA SAFE] lpa = 204152 +[47297.127142] bdbm: [EUNJI] [DATA SAFE] lpa = 204153 +[47297.127616] bdbm: [EUNJI] [DATA SAFE] lpa = 204154 +[47297.128089] bdbm: [EUNJI] [DATA SAFE] lpa = 204155 +[47297.128562] bdbm: [EUNJI] [DATA SAFE] lpa = 204156 +[47297.129035] bdbm: [EUNJI] [DATA SAFE] lpa = 204157 +[47297.129509] bdbm: [EUNJI] [DATA SAFE] lpa = 204158 +[47297.129984] bdbm: [EUNJI] [DATA SAFE] lpa = 204159 +[47297.130460] bdbm: [EUNJI] [DATA SAFE] lpa = 204160 +[47297.130933] bdbm: [EUNJI] [DATA SAFE] lpa = 204161 +[47297.131408] bdbm: [EUNJI] [DATA SAFE] lpa = 204162 +[47297.131881] bdbm: [EUNJI] [DATA SAFE] lpa = 204163 +[47297.132356] bdbm: [EUNJI] [DATA SAFE] lpa = 204164 +[47297.132826] bdbm: [EUNJI] [DATA SAFE] lpa = 204165 +[47297.133297] bdbm: [EUNJI] [DATA SAFE] lpa = 204166 +[47297.133783] bdbm: [EUNJI] [DATA SAFE] lpa = 204167 +[47297.134254] bdbm: [EUNJI] [DATA SAFE] lpa = 204168 +[47297.134726] bdbm: [EUNJI] [DATA SAFE] lpa = 204169 +[47297.135199] bdbm: [EUNJI] [DATA SAFE] lpa = 204170 +[47297.135672] bdbm: [EUNJI] [DATA SAFE] lpa = 204171 +[47297.136147] bdbm: [EUNJI] [DATA SAFE] lpa = 204172 +[47297.136620] bdbm: [EUNJI] [DATA SAFE] lpa = 204173 +[47297.137095] bdbm: [EUNJI] [DATA SAFE] lpa = 204174 +[47297.137567] bdbm: [EUNJI] [DATA SAFE] lpa = 204175 +[47297.138038] bdbm: [EUNJI] [DATA SAFE] lpa = 204176 +[47297.138513] bdbm: [EUNJI] [DATA SAFE] lpa = 204177 +[47297.138987] bdbm: [EUNJI] [DATA SAFE] lpa = 204178 +[47297.139461] bdbm: [EUNJI] [DATA SAFE] lpa = 204179 +[47297.139935] bdbm: [EUNJI] [DATA SAFE] lpa = 204180 +[47297.140409] bdbm: [EUNJI] [DATA SAFE] lpa = 204181 +[47297.140883] bdbm: [EUNJI] [DATA SAFE] lpa = 204182 +[47297.141357] bdbm: [EUNJI] [DATA SAFE] lpa = 204183 +[47297.141832] bdbm: [EUNJI] [DATA SAFE] lpa = 204184 +[47297.142309] bdbm: [EUNJI] [DATA SAFE] lpa = 204185 +[47297.142784] bdbm: [EUNJI] [DATA SAFE] lpa = 204186 +[47297.143258] bdbm: [EUNJI] [DATA SAFE] lpa = 204187 +[47297.143732] bdbm: [EUNJI] [DATA SAFE] lpa = 204188 +[47297.144205] bdbm: [EUNJI] [DATA SAFE] lpa = 204189 +[47297.144678] bdbm: [EUNJI] [DATA SAFE] lpa = 204190 +[47297.145150] bdbm: [EUNJI] [DATA SAFE] lpa = 204191 +[47297.145645] bdbm: [EUNJI] [DATA SAFE] lpa = 204192 +[47297.146164] bdbm: [EUNJI] [DATA SAFE] lpa = 204193 +[47297.146643] bdbm: [EUNJI] [DATA SAFE] lpa = 204194 +[47297.147120] bdbm: [EUNJI] [DATA SAFE] lpa = 204195 +[47297.147605] bdbm: [EUNJI] [DATA SAFE] lpa = 204196 +[47297.148118] bdbm: [EUNJI] [DATA SAFE] lpa = 204197 +[47297.148631] bdbm: [EUNJI] [DATA SAFE] lpa = 204198 +[47297.149122] bdbm: [EUNJI] [DATA SAFE] lpa = 204199 +[47297.149592] bdbm: [EUNJI] [DATA SAFE] lpa = 204200 +[47297.150209] bdbm: [EUNJI] [DATA SAFE] lpa = 204201 +[47297.150689] bdbm: [EUNJI] [DATA SAFE] lpa = 204202 +[47297.151166] bdbm: [EUNJI] [DATA SAFE] lpa = 204203 +[47297.151637] bdbm: [EUNJI] [DATA SAFE] lpa = 204204 +[47297.152108] bdbm: [EUNJI] [DATA SAFE] lpa = 204205 +[47297.152578] bdbm: [EUNJI] [DATA SAFE] lpa = 204206 +[47297.153049] bdbm: [EUNJI] [DATA SAFE] lpa = 204207 +[47297.153520] bdbm: [EUNJI] [DATA SAFE] lpa = 204208 +[47297.153992] bdbm: [EUNJI] [DATA SAFE] lpa = 204209 +[47297.154467] bdbm: [EUNJI] [DATA SAFE] lpa = 204210 +[47297.154938] bdbm: [EUNJI] [DATA SAFE] lpa = 204211 +[47297.155407] bdbm: [EUNJI] [DATA SAFE] lpa = 204212 +[47297.155884] bdbm: [EUNJI] [DATA SAFE] lpa = 204213 +[47297.156354] bdbm: [EUNJI] [DATA SAFE] lpa = 204214 +[47297.156830] bdbm: [EUNJI] [DATA SAFE] lpa = 204215 +[47297.157301] bdbm: [EUNJI] [DATA SAFE] lpa = 204216 +[47297.157778] bdbm: [EUNJI] [DATA SAFE] lpa = 204217 +[47297.158253] bdbm: [EUNJI] [DATA SAFE] lpa = 204218 +[47297.158723] bdbm: [EUNJI] [DATA SAFE] lpa = 204219 +[47297.159193] bdbm: [EUNJI] [DATA SAFE] lpa = 204220 +[47297.159663] bdbm: [EUNJI] [DATA SAFE] lpa = 204221 +[47297.160133] bdbm: [EUNJI] [DATA SAFE] lpa = 204222 +[47297.160604] bdbm: [EUNJI] [DATA SAFE] lpa = 204223 +[47297.161074] bdbm: [EUNJI] [DATA SAFE] lpa = 204224 +[47297.161544] bdbm: [EUNJI] [DATA SAFE] lpa = 204225 +[47297.162015] bdbm: [EUNJI] [DATA SAFE] lpa = 204226 +[47297.162484] bdbm: [EUNJI] [DATA SAFE] lpa = 204227 +[47297.162955] bdbm: [EUNJI] [DATA SAFE] lpa = 204228 +[47297.163425] bdbm: [EUNJI] [DATA SAFE] lpa = 204229 +[47297.163895] bdbm: [EUNJI] [DATA SAFE] lpa = 204230 +[47297.164365] bdbm: [EUNJI] [DATA SAFE] lpa = 204231 +[47297.164835] bdbm: [EUNJI] [DATA SAFE] lpa = 204232 +[47297.165305] bdbm: [EUNJI] [DATA SAFE] lpa = 204233 +[47297.165777] bdbm: [EUNJI] [DATA SAFE] lpa = 204234 +[47297.166248] bdbm: [EUNJI] [DATA SAFE] lpa = 204235 +[47297.166719] bdbm: [EUNJI] [DATA SAFE] lpa = 204236 +[47297.167191] bdbm: [EUNJI] [DATA SAFE] lpa = 204237 +[47297.167663] bdbm: [EUNJI] [DATA SAFE] lpa = 204238 +[47297.168134] bdbm: [EUNJI] [DATA SAFE] lpa = 204239 +[47297.168606] bdbm: [EUNJI] [DATA SAFE] lpa = 204240 +[47297.169078] bdbm: [EUNJI] [DATA SAFE] lpa = 204241 +[47297.169549] bdbm: [EUNJI] [DATA SAFE] lpa = 204242 +[47297.170019] bdbm: [EUNJI] [DATA SAFE] lpa = 204243 +[47297.170489] bdbm: [EUNJI] [DATA SAFE] lpa = 204244 +[47297.170965] bdbm: [EUNJI] [DATA SAFE] lpa = 204245 +[47297.171436] bdbm: [EUNJI] [DATA SAFE] lpa = 204246 +[47297.171906] bdbm: [EUNJI] [DATA SAFE] lpa = 204247 +[47297.172377] bdbm: [EUNJI] [DATA SAFE] lpa = 204248 +[47297.172847] bdbm: [EUNJI] [DATA SAFE] lpa = 204249 +[47297.173317] bdbm: [EUNJI] [DATA SAFE] lpa = 204250 +[47297.173789] bdbm: [EUNJI] [DATA SAFE] lpa = 204251 +[47297.174259] bdbm: [EUNJI] [DATA SAFE] lpa = 204252 +[47297.174729] bdbm: [EUNJI] [DATA SAFE] lpa = 204253 +[47297.175199] bdbm: [EUNJI] [DATA SAFE] lpa = 204254 +[47297.175669] bdbm: [EUNJI] [DATA SAFE] lpa = 204255 +[47297.176139] bdbm: [EUNJI] [DATA SAFE] lpa = 204256 +[47297.176609] bdbm: [EUNJI] [DATA SAFE] lpa = 204257 +[47297.177079] bdbm: [EUNJI] [DATA SAFE] lpa = 204258 +[47297.177550] bdbm: [EUNJI] [DATA SAFE] lpa = 204259 +[47297.178020] bdbm: [EUNJI] [DATA SAFE] lpa = 204260 +[47297.178495] bdbm: [EUNJI] [DATA SAFE] lpa = 204261 +[47297.178965] bdbm: [EUNJI] [DATA SAFE] lpa = 204262 +[47297.179435] bdbm: [EUNJI] [DATA SAFE] lpa = 204263 +[47297.179905] bdbm: [EUNJI] [DATA SAFE] lpa = 204264 +[47297.180375] bdbm: [EUNJI] [DATA SAFE] lpa = 204265 +[47297.180845] bdbm: [EUNJI] [DATA SAFE] lpa = 204266 +[47297.181315] bdbm: [EUNJI] [DATA SAFE] lpa = 204267 +[47297.181785] bdbm: [EUNJI] [DATA SAFE] lpa = 204268 +[47297.182260] bdbm: [EUNJI] [DATA SAFE] lpa = 204269 +[47297.182735] bdbm: [EUNJI] [DATA SAFE] lpa = 204270 +[47297.183205] bdbm: [EUNJI] [DATA SAFE] lpa = 204271 +[47297.183675] bdbm: [EUNJI] [DATA SAFE] lpa = 204272 +[47297.184150] bdbm: [EUNJI] [DATA SAFE] lpa = 204273 +[47297.184620] bdbm: [EUNJI] [DATA SAFE] lpa = 204274 +[47297.185096] bdbm: [EUNJI] [DATA SAFE] lpa = 204275 +[47297.185571] bdbm: [EUNJI] [DATA SAFE] lpa = 204276 +[47297.186045] bdbm: [EUNJI] [DATA SAFE] lpa = 204277 +[47297.186521] bdbm: [EUNJI] [DATA SAFE] lpa = 204278 +[47297.186992] bdbm: [EUNJI] [DATA SAFE] lpa = 204279 +[47297.187463] bdbm: [EUNJI] [DATA SAFE] lpa = 204280 +[47297.187935] bdbm: [EUNJI] [DATA SAFE] lpa = 204281 +[47297.188406] bdbm: [EUNJI] [DATA SAFE] lpa = 204282 +[47297.188878] bdbm: [EUNJI] [DATA SAFE] lpa = 204283 +[47297.189349] bdbm: [EUNJI] [DATA SAFE] lpa = 204284 +[47297.189818] bdbm: [EUNJI] [DATA SAFE] lpa = 204285 +[47297.190288] bdbm: [EUNJI] [DATA SAFE] lpa = 204286 +[47297.190758] bdbm: [EUNJI] [DATA SAFE] lpa = 204287 +[47297.191229] bdbm: [EUNJI] [DATA SAFE] lpa = 204288 +[47297.191699] bdbm: [EUNJI] [DATA SAFE] lpa = 204289 +[47297.192169] bdbm: [EUNJI] [DATA SAFE] lpa = 204290 +[47297.192640] bdbm: [EUNJI] [DATA SAFE] lpa = 204291 +[47297.193111] bdbm: [EUNJI] [DATA SAFE] lpa = 204292 +[47297.193581] bdbm: [EUNJI] [DATA SAFE] lpa = 204293 +[47297.194054] bdbm: [EUNJI] [DATA SAFE] lpa = 204294 +[47297.194525] bdbm: [EUNJI] [DATA SAFE] lpa = 204295 +[47297.194997] bdbm: [EUNJI] [DATA SAFE] lpa = 204296 +[47297.195468] bdbm: [EUNJI] [DATA SAFE] lpa = 204297 +[47297.195941] bdbm: [EUNJI] [DATA SAFE] lpa = 204298 +[47297.196413] bdbm: [EUNJI] [DATA SAFE] lpa = 204299 +[47297.196885] bdbm: [EUNJI] [DATA SAFE] lpa = 204300 +[47297.197357] bdbm: [EUNJI] [DATA SAFE] lpa = 204301 +[47297.197830] bdbm: [EUNJI] [DATA SAFE] lpa = 204302 +[47297.198301] bdbm: [EUNJI] [DATA SAFE] lpa = 204303 +[47297.198772] bdbm: [EUNJI] [DATA SAFE] lpa = 204304 +[47297.199243] bdbm: [EUNJI] [DATA SAFE] lpa = 204305 +[47297.199715] bdbm: [EUNJI] [DATA SAFE] lpa = 204306 +[47297.200185] bdbm: [EUNJI] [DATA SAFE] lpa = 204307 +[47297.200656] bdbm: [EUNJI] [DATA SAFE] lpa = 204308 +[47297.201128] bdbm: [EUNJI] [DATA SAFE] lpa = 204309 +[47297.201599] bdbm: [EUNJI] [DATA SAFE] lpa = 204310 +[47297.202145] bdbm: [EUNJI] [DATA SAFE] lpa = 204311 +[47297.202616] bdbm: [EUNJI] [DATA SAFE] lpa = 204312 +[47297.203087] bdbm: [EUNJI] [DATA SAFE] lpa = 204313 +[47297.203558] bdbm: [EUNJI] [DATA SAFE] lpa = 204314 +[47297.204029] bdbm: [EUNJI] [DATA SAFE] lpa = 204315 +[47297.204501] bdbm: [EUNJI] [DATA SAFE] lpa = 204316 +[47297.204971] bdbm: [EUNJI] [DATA SAFE] lpa = 204317 +[47297.205442] bdbm: [EUNJI] [DATA SAFE] lpa = 204318 +[47297.205913] bdbm: [EUNJI] [DATA SAFE] lpa = 204319 +[47297.206395] bdbm: [EUNJI] [DATA SAFE] lpa = 204320 +[47297.206872] bdbm: [EUNJI] [DATA SAFE] lpa = 204321 +[47297.207348] bdbm: [EUNJI] [DATA SAFE] lpa = 204322 +[47297.207821] bdbm: [EUNJI] [DATA SAFE] lpa = 204323 +[47297.208298] bdbm: [EUNJI] [DATA SAFE] lpa = 204324 +[47297.208776] bdbm: [EUNJI] [DATA SAFE] lpa = 204325 +[47297.209250] bdbm: [EUNJI] [DATA SAFE] lpa = 204326 +[47297.209725] bdbm: [EUNJI] [DATA SAFE] lpa = 204327 +[47297.210202] bdbm: [EUNJI] [DATA SAFE] lpa = 204328 +[47297.210679] bdbm: [EUNJI] [DATA SAFE] lpa = 204329 +[47297.211158] bdbm: [EUNJI] [DATA SAFE] lpa = 204330 +[47297.211635] bdbm: [EUNJI] [DATA SAFE] lpa = 204331 +[47297.212108] bdbm: [EUNJI] [DATA SAFE] lpa = 204332 +[47297.212586] bdbm: [EUNJI] [DATA SAFE] lpa = 204333 +[47297.213065] bdbm: [EUNJI] [DATA SAFE] lpa = 204334 +[47297.213542] bdbm: [EUNJI] [DATA SAFE] lpa = 204335 +[47297.214019] bdbm: [EUNJI] [DATA SAFE] lpa = 204336 +[47297.214499] bdbm: [EUNJI] [DATA SAFE] lpa = 204337 +[47297.214977] bdbm: [EUNJI] [DATA SAFE] lpa = 204338 +[47297.215454] bdbm: [EUNJI] [DATA SAFE] lpa = 204339 +[47297.215931] bdbm: [EUNJI] [DATA SAFE] lpa = 204340 +[47297.216407] bdbm: [EUNJI] [DATA SAFE] lpa = 204341 +[47297.216880] bdbm: [EUNJI] [DATA SAFE] lpa = 204342 +[47297.217361] bdbm: [EUNJI] [DATA SAFE] lpa = 204343 +[47297.217838] bdbm: [EUNJI] [DATA SAFE] lpa = 204344 +[47297.218315] bdbm: [EUNJI] [DATA SAFE] lpa = 204345 +[47297.218787] bdbm: [EUNJI] [DATA SAFE] lpa = 204346 +[47297.219261] bdbm: [EUNJI] [DATA SAFE] lpa = 204347 +[47297.219734] bdbm: [EUNJI] [DATA SAFE] lpa = 204348 +[47297.220208] bdbm: [EUNJI] [DATA SAFE] lpa = 204349 +[47297.220681] bdbm: [EUNJI] [DATA SAFE] lpa = 204350 +[47297.221154] bdbm: [EUNJI] [DATA SAFE] lpa = 204351 +[47297.221650] bdbm: [EUNJI] [DATA SAFE] lpa = 204352 +[47297.222125] bdbm: [EUNJI] [DATA SAFE] lpa = 204353 +[47297.222595] bdbm: [EUNJI] [DATA SAFE] lpa = 204354 +[47297.223068] bdbm: [EUNJI] [DATA SAFE] lpa = 204355 +[47297.223541] bdbm: [EUNJI] [DATA SAFE] lpa = 204356 +[47297.224015] bdbm: [EUNJI] [DATA SAFE] lpa = 204357 +[47297.224491] bdbm: [EUNJI] [DATA SAFE] lpa = 204358 +[47297.224964] bdbm: [EUNJI] [DATA SAFE] lpa = 204359 +[47297.225438] bdbm: [EUNJI] [DATA SAFE] lpa = 204360 +[47297.225912] bdbm: [EUNJI] [DATA SAFE] lpa = 204361 +[47297.226387] bdbm: [EUNJI] [DATA SAFE] lpa = 204362 +[47297.226861] bdbm: [EUNJI] [DATA SAFE] lpa = 204363 +[47297.227334] bdbm: [EUNJI] [DATA SAFE] lpa = 204364 +[47297.227807] bdbm: [EUNJI] [DATA SAFE] lpa = 204365 +[47297.228281] bdbm: [EUNJI] [DATA SAFE] lpa = 204366 +[47297.228756] bdbm: [EUNJI] [DATA SAFE] lpa = 204367 +[47297.229230] bdbm: [EUNJI] [DATA SAFE] lpa = 204368 +[47297.229707] bdbm: [EUNJI] [DATA SAFE] lpa = 204369 +[47297.230182] bdbm: [EUNJI] [DATA SAFE] lpa = 204370 +[47297.230656] bdbm: [EUNJI] [DATA SAFE] lpa = 204371 +[47297.231133] bdbm: [EUNJI] [DATA SAFE] lpa = 204372 +[47297.231605] bdbm: [EUNJI] [DATA SAFE] lpa = 204373 +[47297.232081] bdbm: [EUNJI] [DATA SAFE] lpa = 204374 +[47297.232553] bdbm: [EUNJI] [DATA SAFE] lpa = 204375 +[47297.233027] bdbm: [EUNJI] [DATA SAFE] lpa = 204376 +[47297.233500] bdbm: [EUNJI] [DATA SAFE] lpa = 204377 +[47297.233975] bdbm: [EUNJI] [DATA SAFE] lpa = 204378 +[47297.234447] bdbm: [EUNJI] [DATA SAFE] lpa = 204379 +[47297.234923] bdbm: [EUNJI] [DATA SAFE] lpa = 204380 +[47297.235396] bdbm: [EUNJI] [DATA SAFE] lpa = 204381 +[47297.235869] bdbm: [EUNJI] [DATA SAFE] lpa = 204382 +[47297.236342] bdbm: [EUNJI] [DATA SAFE] lpa = 204383 +[47297.236815] bdbm: [EUNJI] [DATA SAFE] lpa = 204384 +[47297.237289] bdbm: [EUNJI] [DATA SAFE] lpa = 204385 +[47297.237774] bdbm: [EUNJI] [DATA SAFE] lpa = 204386 +[47297.238262] bdbm: [EUNJI] [DATA SAFE] lpa = 204387 +[47297.238736] bdbm: [EUNJI] [DATA SAFE] lpa = 204388 +[47297.239212] bdbm: [EUNJI] [DATA SAFE] lpa = 204389 +[47297.239686] bdbm: [EUNJI] [DATA SAFE] lpa = 204390 +[47297.240161] bdbm: [EUNJI] [DATA SAFE] lpa = 204391 +[47297.240633] bdbm: [EUNJI] [DATA SAFE] lpa = 204392 +[47297.241106] bdbm: [EUNJI] [DATA SAFE] lpa = 204393 +[47297.241579] bdbm: [EUNJI] [DATA SAFE] lpa = 204394 +[47297.242056] bdbm: [EUNJI] [DATA SAFE] lpa = 204395 +[47297.242529] bdbm: [EUNJI] [DATA SAFE] lpa = 204396 +[47297.243002] bdbm: [EUNJI] [DATA SAFE] lpa = 204397 +[47297.243477] bdbm: [EUNJI] [DATA SAFE] lpa = 204398 +[47297.243950] bdbm: [EUNJI] [DATA SAFE] lpa = 204399 +[47297.244424] bdbm: [EUNJI] [DATA SAFE] lpa = 204400 +[47297.244903] bdbm: [EUNJI] [DATA SAFE] lpa = 204401 +[47297.245377] bdbm: [EUNJI] [DATA SAFE] lpa = 204402 +[47297.245852] bdbm: [EUNJI] [DATA SAFE] lpa = 204403 +[47297.246325] bdbm: [EUNJI] [DATA SAFE] lpa = 204404 +[47297.246800] bdbm: [EUNJI] [DATA SAFE] lpa = 204405 +[47297.247274] bdbm: [EUNJI] [DATA SAFE] lpa = 204406 +[47297.247748] bdbm: [EUNJI] [DATA SAFE] lpa = 204407 +[47297.248222] bdbm: [EUNJI] [DATA SAFE] lpa = 204408 +[47297.248696] bdbm: [EUNJI] [DATA SAFE] lpa = 204409 +[47297.249169] bdbm: [EUNJI] [DATA SAFE] lpa = 204410 +[47297.249653] bdbm: [EUNJI] [DATA SAFE] lpa = 204411 +[47297.250143] bdbm: [EUNJI] [DATA SAFE] lpa = 204412 +[47297.250616] bdbm: [EUNJI] [DATA SAFE] lpa = 204413 +[47297.251088] bdbm: [EUNJI] [DATA SAFE] lpa = 204414 +[47297.251561] bdbm: [EUNJI] [DATA SAFE] lpa = 204415 +[47297.252035] bdbm: [EUNJI] [DATA SAFE] lpa = 204416 +[47297.252510] bdbm: [EUNJI] [DATA SAFE] lpa = 204417 +[47297.252982] bdbm: [EUNJI] [DATA SAFE] lpa = 204418 +[47297.253454] bdbm: [EUNJI] [DATA SAFE] lpa = 204419 +[47297.253955] bdbm: [EUNJI] [DATA SAFE] lpa = 204420 +[47297.254468] bdbm: [EUNJI] [DATA SAFE] lpa = 204421 +[47297.254990] bdbm: [EUNJI] [DATA SAFE] lpa = 204422 +[47297.255524] bdbm: [EUNJI] [DATA SAFE] lpa = 204423 +[47297.256032] bdbm: [EUNJI] [DATA SAFE] lpa = 204424 +[47297.256553] bdbm: [EUNJI] [DATA SAFE] lpa = 204425 +[47297.257067] bdbm: [EUNJI] [DATA SAFE] lpa = 204426 +[47297.257557] bdbm: [EUNJI] [DATA SAFE] lpa = 204427 +[47297.258062] bdbm: [EUNJI] [DATA SAFE] lpa = 204428 +[47297.258593] bdbm: [EUNJI] [DATA SAFE] lpa = 204429 +[47297.259124] bdbm: [EUNJI] [DATA SAFE] lpa = 204430 +[47297.259630] bdbm: [EUNJI] [DATA SAFE] lpa = 204431 +[47297.260142] bdbm: [EUNJI] [DATA SAFE] lpa = 204432 +[47297.260666] bdbm: [EUNJI] [DATA SAFE] lpa = 204433 +[47297.261176] bdbm: [EUNJI] [DATA SAFE] lpa = 204434 +[47297.261711] bdbm: [EUNJI] [DATA SAFE] lpa = 204435 +[47297.262230] bdbm: [EUNJI] [DATA SAFE] lpa = 204436 +[47297.262763] bdbm: [EUNJI] [DATA SAFE] lpa = 204437 +[47297.263297] bdbm: [EUNJI] [DATA SAFE] lpa = 204438 +[47297.263816] bdbm: [EUNJI] [DATA SAFE] lpa = 204439 +[47297.264321] bdbm: [EUNJI] [DATA SAFE] lpa = 204440 +[47297.264829] bdbm: [EUNJI] [DATA SAFE] lpa = 204441 +[47297.265363] bdbm: [EUNJI] [DATA SAFE] lpa = 204442 +[47297.265872] bdbm: [EUNJI] [DATA SAFE] lpa = 204443 +[47297.266405] bdbm: [EUNJI] [DATA SAFE] lpa = 204444 +[47297.266926] bdbm: [EUNJI] [DATA SAFE] lpa = 204445 +[47297.267435] bdbm: [EUNJI] [DATA SAFE] lpa = 204446 +[47297.267950] bdbm: [EUNJI] [DATA SAFE] lpa = 204447 +[47297.268453] bdbm: [EUNJI] [DATA SAFE] lpa = 204448 +[47297.268957] bdbm: [EUNJI] [DATA SAFE] lpa = 204449 +[47297.269497] bdbm: [EUNJI] [DATA SAFE] lpa = 204450 +[47297.270004] bdbm: [EUNJI] [DATA SAFE] lpa = 204451 +[47297.270525] bdbm: [EUNJI] [DATA SAFE] lpa = 204452 +[47297.271049] bdbm: [EUNJI] [DATA SAFE] lpa = 204453 +[47297.271568] bdbm: [EUNJI] [DATA SAFE] lpa = 204454 +[47297.272077] bdbm: [EUNJI] [DATA SAFE] lpa = 204455 +[47297.272585] bdbm: [EUNJI] [DATA SAFE] lpa = 204456 +[47297.273103] bdbm: [EUNJI] [DATA SAFE] lpa = 204457 +[47297.273657] bdbm: [EUNJI] [DATA SAFE] lpa = 204458 +[47297.274156] bdbm: [EUNJI] [DATA SAFE] lpa = 204459 +[47297.274635] bdbm: [EUNJI] [DATA SAFE] lpa = 204460 +[47297.275109] bdbm: [EUNJI] [DATA SAFE] lpa = 204461 +[47297.275579] bdbm: [EUNJI] [DATA SAFE] lpa = 204462 +[47297.276054] bdbm: [EUNJI] [DATA SAFE] lpa = 204463 +[47297.276530] bdbm: [EUNJI] [DATA SAFE] lpa = 204464 +[47297.277006] bdbm: [EUNJI] [DATA SAFE] lpa = 204465 +[47297.277482] bdbm: [EUNJI] [DATA SAFE] lpa = 204466 +[47297.277956] bdbm: [EUNJI] [DATA SAFE] lpa = 204467 +[47297.278432] bdbm: [EUNJI] [DATA SAFE] lpa = 204468 +[47297.278904] bdbm: [EUNJI] [DATA SAFE] lpa = 204469 +[47297.279376] bdbm: [EUNJI] [DATA SAFE] lpa = 204470 +[47297.279877] bdbm: [EUNJI] [DATA SAFE] lpa = 204471 +[47297.280379] bdbm: [EUNJI] [DATA SAFE] lpa = 204472 +[47297.280881] bdbm: [EUNJI] [DATA SAFE] lpa = 204473 +[47297.281365] bdbm: [EUNJI] [DATA SAFE] lpa = 204474 +[47297.281838] bdbm: [EUNJI] [DATA SAFE] lpa = 204475 +[47297.282353] bdbm: [EUNJI] [DATA SAFE] lpa = 204476 +[47297.282872] bdbm: [EUNJI] [DATA SAFE] lpa = 204477 +[47297.283378] bdbm: [EUNJI] [DATA SAFE] lpa = 204478 +[47297.283857] bdbm: [EUNJI] [DATA SAFE] lpa = 204479 +[47297.284337] bdbm: [EUNJI] [DATA SAFE] lpa = 204480 +[47297.284825] bdbm: [EUNJI] [DATA SAFE] lpa = 204481 +[47297.285296] bdbm: [EUNJI] [DATA SAFE] lpa = 204482 +[47297.285772] bdbm: [EUNJI] [DATA SAFE] lpa = 204483 +[47297.286243] bdbm: [EUNJI] [DATA SAFE] lpa = 204484 +[47297.286715] bdbm: [EUNJI] [DATA SAFE] lpa = 204485 +[47297.287188] bdbm: [EUNJI] [DATA SAFE] lpa = 204486 +[47297.287662] bdbm: [EUNJI] [DATA SAFE] lpa = 204487 +[47297.288135] bdbm: [EUNJI] [DATA SAFE] lpa = 204488 +[47297.288609] bdbm: [EUNJI] [DATA SAFE] lpa = 204489 +[47297.289080] bdbm: [EUNJI] [DATA SAFE] lpa = 204490 +[47297.289551] bdbm: [EUNJI] [DATA SAFE] lpa = 204491 +[47297.290025] bdbm: [EUNJI] [DATA SAFE] lpa = 204492 +[47297.290498] bdbm: [EUNJI] [DATA SAFE] lpa = 204493 +[47297.290970] bdbm: [EUNJI] [DATA SAFE] lpa = 204494 +[47297.291441] bdbm: [EUNJI] [DATA SAFE] lpa = 204495 +[47297.291917] bdbm: [EUNJI] [DATA SAFE] lpa = 204496 +[47297.292388] bdbm: [EUNJI] [DATA SAFE] lpa = 204497 +[47297.292865] bdbm: [EUNJI] [DATA SAFE] lpa = 204498 +[47297.293336] bdbm: [EUNJI] [DATA SAFE] lpa = 204499 +[47297.293811] bdbm: [EUNJI] [DATA SAFE] lpa = 204500 +[47297.294291] bdbm: [EUNJI] [DATA SAFE] lpa = 204501 +[47297.294762] bdbm: [EUNJI] [DATA SAFE] lpa = 204502 +[47297.295235] bdbm: [EUNJI] [DATA SAFE] lpa = 204503 +[47297.295720] bdbm: [EUNJI] [DATA SAFE] lpa = 204504 +[47297.296200] bdbm: [EUNJI] [DATA SAFE] lpa = 204505 +[47297.296675] bdbm: [EUNJI] [DATA SAFE] lpa = 204506 +[47297.297145] bdbm: [EUNJI] [DATA SAFE] lpa = 204507 +[47297.297623] bdbm: [EUNJI] [DATA SAFE] lpa = 204508 +[47297.298094] bdbm: [EUNJI] [DATA SAFE] lpa = 204509 +[47297.298565] bdbm: [EUNJI] [DATA SAFE] lpa = 204510 +[47297.299036] bdbm: [EUNJI] [DATA SAFE] lpa = 204511 +[47297.299537] bdbm: [EUNJI] [DATA SAFE] lpa = 204512 +[47297.300043] bdbm: [EUNJI] [DATA SAFE] lpa = 204513 +[47297.300559] bdbm: [EUNJI] [DATA SAFE] lpa = 204514 +[47297.301076] bdbm: [EUNJI] [DATA SAFE] lpa = 204515 +[47297.301549] bdbm: [EUNJI] [DATA SAFE] lpa = 204516 +[47297.302033] bdbm: [EUNJI] [DATA SAFE] lpa = 204517 +[47297.302539] bdbm: [EUNJI] [DATA SAFE] lpa = 204518 +[47297.303047] bdbm: [EUNJI] [DATA SAFE] lpa = 204519 +[47297.303554] bdbm: [EUNJI] [DATA SAFE] lpa = 204520 +[47297.304062] bdbm: [EUNJI] [DATA SAFE] lpa = 204521 +[47297.304588] bdbm: [EUNJI] [DATA SAFE] lpa = 204522 +[47297.305108] bdbm: [EUNJI] [DATA SAFE] lpa = 204523 +[47297.305598] bdbm: [EUNJI] [DATA SAFE] lpa = 204524 +[47297.306104] bdbm: [EUNJI] [DATA SAFE] lpa = 204525 +[47297.306606] bdbm: [EUNJI] [DATA SAFE] lpa = 204526 +[47297.307130] bdbm: [EUNJI] [DATA SAFE] lpa = 204527 +[47297.307640] bdbm: [EUNJI] [DATA SAFE] lpa = 204528 +[47297.308163] bdbm: [EUNJI] [DATA SAFE] lpa = 204529 +[47297.308725] bdbm: [EUNJI] [DATA SAFE] lpa = 204530 +[47297.309232] bdbm: [EUNJI] [DATA SAFE] lpa = 204531 +[47297.309754] bdbm: [EUNJI] [DATA SAFE] lpa = 204532 +[47297.310257] bdbm: [EUNJI] [DATA SAFE] lpa = 204533 +[47297.310736] bdbm: [EUNJI] [DATA SAFE] lpa = 204534 +[47297.311212] bdbm: [EUNJI] [DATA SAFE] lpa = 204535 +[47297.311697] bdbm: [EUNJI] [DATA SAFE] lpa = 204536 +[47297.312172] bdbm: [EUNJI] [DATA SAFE] lpa = 204537 +[47297.312642] bdbm: [EUNJI] [DATA SAFE] lpa = 204538 +[47297.313112] bdbm: [EUNJI] [DATA SAFE] lpa = 204539 +[47297.313582] bdbm: [EUNJI] [DATA SAFE] lpa = 204540 +[47297.314051] bdbm: [EUNJI] [DATA SAFE] lpa = 204541 +[47297.314521] bdbm: [EUNJI] [DATA SAFE] lpa = 204542 +[47297.314993] bdbm: [EUNJI] [DATA SAFE] lpa = 204543 +[47297.315461] bdbm: [EUNJI] [DATA SAFE] lpa = 204544 +[47297.315958] bdbm: [EUNJI] [DATA SAFE] lpa = 204545 +[47297.316475] bdbm: [EUNJI] [DATA SAFE] lpa = 204546 +[47297.316948] bdbm: [EUNJI] [DATA SAFE] lpa = 204547 +[47297.317421] bdbm: [EUNJI] [DATA SAFE] lpa = 204548 +[47297.317925] bdbm: [EUNJI] [DATA SAFE] lpa = 204549 +[47297.318442] bdbm: [EUNJI] [DATA SAFE] lpa = 204550 +[47297.318960] bdbm: [EUNJI] [DATA SAFE] lpa = 204551 +[47297.319468] bdbm: [EUNJI] [DATA SAFE] lpa = 204552 +[47297.319974] bdbm: [EUNJI] [DATA SAFE] lpa = 204553 +[47297.320508] bdbm: [EUNJI] [DATA SAFE] lpa = 204554 +[47297.321035] bdbm: [EUNJI] [DATA SAFE] lpa = 204555 +[47297.321539] bdbm: [EUNJI] [DATA SAFE] lpa = 204556 +[47297.322032] bdbm: [EUNJI] [DATA SAFE] lpa = 204557 +[47297.322509] bdbm: [EUNJI] [DATA SAFE] lpa = 204558 +[47297.322998] bdbm: [EUNJI] [DATA SAFE] lpa = 204559 +[47297.323468] bdbm: [EUNJI] [DATA SAFE] lpa = 204560 +[47297.323937] bdbm: [EUNJI] [DATA SAFE] lpa = 204561 +[47297.324407] bdbm: [EUNJI] [DATA SAFE] lpa = 204562 +[47297.324883] bdbm: [EUNJI] [DATA SAFE] lpa = 204563 +[47297.325353] bdbm: [EUNJI] [DATA SAFE] lpa = 204564 +[47297.325825] bdbm: [EUNJI] [DATA SAFE] lpa = 204565 +[47297.326303] bdbm: [EUNJI] [DATA SAFE] lpa = 204566 +[47297.326781] bdbm: [EUNJI] [DATA SAFE] lpa = 204567 +[47297.327259] bdbm: [EUNJI] [DATA SAFE] lpa = 204568 +[47297.327736] bdbm: [EUNJI] [DATA SAFE] lpa = 204569 +[47297.328212] bdbm: [EUNJI] [DATA SAFE] lpa = 204570 +[47297.328690] bdbm: [EUNJI] [DATA SAFE] lpa = 204571 +[47297.329167] bdbm: [EUNJI] [DATA SAFE] lpa = 204572 +[47297.329644] bdbm: [EUNJI] [DATA SAFE] lpa = 204573 +[47297.330123] bdbm: [EUNJI] [DATA SAFE] lpa = 204574 +[47297.330601] bdbm: [EUNJI] [DATA SAFE] lpa = 204575 +[47297.331072] bdbm: [EUNJI] [DATA SAFE] lpa = 204576 +[47297.331572] bdbm: [EUNJI] [DATA SAFE] lpa = 204577 +[47297.332072] bdbm: [EUNJI] [DATA SAFE] lpa = 204578 +[47297.332591] bdbm: [EUNJI] [DATA SAFE] lpa = 204579 +[47297.333078] bdbm: [EUNJI] [DATA SAFE] lpa = 204580 +[47297.333554] bdbm: [EUNJI] [DATA SAFE] lpa = 204581 +[47297.334059] bdbm: [EUNJI] [DATA SAFE] lpa = 204582 +[47297.334560] bdbm: [EUNJI] [DATA SAFE] lpa = 204583 +[47297.335064] bdbm: [EUNJI] [DATA SAFE] lpa = 204584 +[47297.335594] bdbm: [EUNJI] [DATA SAFE] lpa = 204585 +[47297.336101] bdbm: [EUNJI] [DATA SAFE] lpa = 204586 +[47297.336629] bdbm: [EUNJI] [DATA SAFE] lpa = 204587 +[47297.337133] bdbm: [EUNJI] [DATA SAFE] lpa = 204588 +[47297.337613] bdbm: [EUNJI] [DATA SAFE] lpa = 204589 +[47297.338091] bdbm: [EUNJI] [DATA SAFE] lpa = 204590 +[47297.338571] bdbm: [EUNJI] [DATA SAFE] lpa = 204591 +[47297.339042] bdbm: [EUNJI] [DATA SAFE] lpa = 204592 +[47297.339519] bdbm: [EUNJI] [DATA SAFE] lpa = 204593 +[47297.339989] bdbm: [EUNJI] [DATA SAFE] lpa = 204594 +[47297.340465] bdbm: [EUNJI] [DATA SAFE] lpa = 204595 +[47297.340936] bdbm: [EUNJI] [DATA SAFE] lpa = 204596 +[47297.341407] bdbm: [EUNJI] [DATA SAFE] lpa = 204597 +[47297.341878] bdbm: [EUNJI] [DATA SAFE] lpa = 204598 +[47297.342355] bdbm: [EUNJI] [DATA SAFE] lpa = 204599 +[47297.342826] bdbm: [EUNJI] [DATA SAFE] lpa = 204600 +[47297.343297] bdbm: [EUNJI] [DATA SAFE] lpa = 204601 +[47297.343767] bdbm: [EUNJI] [DATA SAFE] lpa = 204602 +[47297.344239] bdbm: [EUNJI] [DATA SAFE] lpa = 204603 +[47297.344710] bdbm: [EUNJI] [DATA SAFE] lpa = 204604 +[47297.345181] bdbm: [EUNJI] [DATA SAFE] lpa = 204605 +[47297.345654] bdbm: [EUNJI] [DATA SAFE] lpa = 204606 +[47297.346128] bdbm: [EUNJI] [DATA SAFE] lpa = 204607 +[47297.346600] bdbm: [EUNJI] [DATA SAFE] lpa = 204608 +[47297.347070] bdbm: [EUNJI] [DATA SAFE] lpa = 204609 +[47297.347541] bdbm: [EUNJI] [DATA SAFE] lpa = 204610 +[47297.348013] bdbm: [EUNJI] [DATA SAFE] lpa = 204611 +[47297.348490] bdbm: [EUNJI] [DATA SAFE] lpa = 204612 +[47297.348961] bdbm: [EUNJI] [DATA SAFE] lpa = 204613 +[47297.349433] bdbm: [EUNJI] [DATA SAFE] lpa = 204614 +[47297.349909] bdbm: [EUNJI] [DATA SAFE] lpa = 204615 +[47297.350389] bdbm: [EUNJI] [DATA SAFE] lpa = 204616 +[47297.350861] bdbm: [EUNJI] [DATA SAFE] lpa = 204617 +[47297.351333] bdbm: [EUNJI] [DATA SAFE] lpa = 204618 +[47297.351808] bdbm: [EUNJI] [DATA SAFE] lpa = 204619 +[47297.352279] bdbm: [EUNJI] [DATA SAFE] lpa = 204620 +[47297.352750] bdbm: [EUNJI] [DATA SAFE] lpa = 204621 +[47297.353221] bdbm: [EUNJI] [DATA SAFE] lpa = 204622 +[47297.353696] bdbm: [EUNJI] [DATA SAFE] lpa = 204623 +[47297.354169] bdbm: [EUNJI] [DATA SAFE] lpa = 204624 +[47297.354642] bdbm: [EUNJI] [DATA SAFE] lpa = 204625 +[47297.355117] bdbm: [EUNJI] [DATA SAFE] lpa = 204626 +[47297.355594] bdbm: [EUNJI] [DATA SAFE] lpa = 204627 +[47297.356066] bdbm: [EUNJI] [DATA SAFE] lpa = 204628 +[47297.356537] bdbm: [EUNJI] [DATA SAFE] lpa = 204629 +[47297.357013] bdbm: [EUNJI] [DATA SAFE] lpa = 204630 +[47297.357485] bdbm: [EUNJI] [DATA SAFE] lpa = 204631 +[47297.357956] bdbm: [EUNJI] [DATA SAFE] lpa = 204632 +[47297.358435] bdbm: [EUNJI] [DATA SAFE] lpa = 204633 +[47297.358907] bdbm: [EUNJI] [DATA SAFE] lpa = 204634 +[47297.359383] bdbm: [EUNJI] [DATA SAFE] lpa = 204635 +[47297.359856] bdbm: [EUNJI] [DATA SAFE] lpa = 204636 +[47297.360333] bdbm: [EUNJI] [DATA SAFE] lpa = 204637 +[47297.360805] bdbm: [EUNJI] [DATA SAFE] lpa = 204638 +[47297.361280] bdbm: [EUNJI] [DATA SAFE] lpa = 204639 +[47297.361756] bdbm: [EUNJI] [DATA SAFE] lpa = 204640 +[47297.362230] bdbm: [EUNJI] [DATA SAFE] lpa = 204641 +[47297.362706] bdbm: [EUNJI] [DATA SAFE] lpa = 204642 +[47297.363177] bdbm: [EUNJI] [DATA SAFE] lpa = 204643 +[47297.363655] bdbm: [EUNJI] [DATA SAFE] lpa = 204644 +[47297.364130] bdbm: [EUNJI] [DATA SAFE] lpa = 204645 +[47297.364609] bdbm: [EUNJI] [DATA SAFE] lpa = 204646 +[47297.365082] bdbm: [EUNJI] [DATA SAFE] lpa = 204647 +[47297.365559] bdbm: [EUNJI] [DATA SAFE] lpa = 204648 +[47297.366034] bdbm: [EUNJI] [DATA SAFE] lpa = 204649 +[47297.366509] bdbm: [EUNJI] [DATA SAFE] lpa = 204650 +[47297.366986] bdbm: [EUNJI] [DATA SAFE] lpa = 204651 +[47297.367462] bdbm: [EUNJI] [DATA SAFE] lpa = 204652 +[47297.367938] bdbm: [EUNJI] [DATA SAFE] lpa = 204653 +[47297.368415] bdbm: [EUNJI] [DATA SAFE] lpa = 204654 +[47297.368893] bdbm: [EUNJI] [DATA SAFE] lpa = 204655 +[47297.369366] bdbm: [EUNJI] [DATA SAFE] lpa = 204656 +[47297.369846] bdbm: [EUNJI] [DATA SAFE] lpa = 204657 +[47297.370325] bdbm: [EUNJI] [DATA SAFE] lpa = 204658 +[47297.370798] bdbm: [EUNJI] [DATA SAFE] lpa = 204659 +[47297.371272] bdbm: [EUNJI] [DATA SAFE] lpa = 204660 +[47297.371747] bdbm: [EUNJI] [DATA SAFE] lpa = 204661 +[47297.372224] bdbm: [EUNJI] [DATA SAFE] lpa = 204662 +[47297.372700] bdbm: [EUNJI] [DATA SAFE] lpa = 204663 +[47297.373177] bdbm: [EUNJI] [DATA SAFE] lpa = 204664 +[47297.373675] bdbm: [EUNJI] [DATA SAFE] lpa = 204665 +[47297.374149] bdbm: [EUNJI] [DATA SAFE] lpa = 204666 +[47297.374620] bdbm: [EUNJI] [DATA SAFE] lpa = 204667 +[47297.375090] bdbm: [EUNJI] [DATA SAFE] lpa = 204668 +[47297.375561] bdbm: [EUNJI] [DATA SAFE] lpa = 204669 +[47297.376033] bdbm: [EUNJI] [DATA SAFE] lpa = 204670 +[47297.376504] bdbm: [EUNJI] [DATA SAFE] lpa = 204671 +[47297.376975] bdbm: [EUNJI] [DATA SAFE] lpa = 204672 +[47297.377448] bdbm: [EUNJI] [DATA SAFE] lpa = 204673 +[47297.377922] bdbm: [EUNJI] [DATA SAFE] lpa = 204674 +[47297.378400] bdbm: [EUNJI] [DATA SAFE] lpa = 204675 +[47297.378878] bdbm: [EUNJI] [DATA SAFE] lpa = 204676 +[47297.379350] bdbm: [EUNJI] [DATA SAFE] lpa = 204677 +[47297.379820] bdbm: [EUNJI] [DATA SAFE] lpa = 204678 +[47297.380293] bdbm: [EUNJI] [DATA SAFE] lpa = 204679 +[47297.380769] bdbm: [EUNJI] [DATA SAFE] lpa = 204680 +[47297.381245] bdbm: [EUNJI] [DATA SAFE] lpa = 204681 +[47297.381718] bdbm: [EUNJI] [DATA SAFE] lpa = 204682 +[47297.382190] bdbm: [EUNJI] [DATA SAFE] lpa = 204683 +[47297.382661] bdbm: [EUNJI] [DATA SAFE] lpa = 204684 +[47297.383137] bdbm: [EUNJI] [DATA SAFE] lpa = 204685 +[47297.383613] bdbm: [EUNJI] [DATA SAFE] lpa = 204686 +[47297.384090] bdbm: [EUNJI] [DATA SAFE] lpa = 204687 +[47297.384566] bdbm: [EUNJI] [DATA SAFE] lpa = 204688 +[47297.385038] bdbm: [EUNJI] [DATA SAFE] lpa = 204689 +[47297.385511] bdbm: [EUNJI] [DATA SAFE] lpa = 204690 +[47297.385986] bdbm: [EUNJI] [DATA SAFE] lpa = 204691 +[47297.386458] bdbm: [EUNJI] [DATA SAFE] lpa = 204692 +[47297.386930] bdbm: [EUNJI] [DATA SAFE] lpa = 204693 +[47297.387403] bdbm: [EUNJI] [DATA SAFE] lpa = 204694 +[47297.387880] bdbm: [EUNJI] [DATA SAFE] lpa = 204695 +[47297.388356] bdbm: [EUNJI] [DATA SAFE] lpa = 204696 +[47297.388832] bdbm: [EUNJI] [DATA SAFE] lpa = 204697 +[47297.389310] bdbm: [EUNJI] [DATA SAFE] lpa = 204698 +[47297.389783] bdbm: [EUNJI] [DATA SAFE] lpa = 204699 +[47297.390255] bdbm: [EUNJI] [DATA SAFE] lpa = 204700 +[47297.390731] bdbm: [EUNJI] [DATA SAFE] lpa = 204701 +[47297.391204] bdbm: [EUNJI] [DATA SAFE] lpa = 204702 +[47297.391682] bdbm: [EUNJI] [DATA SAFE] lpa = 204703 +[47297.392156] bdbm: [EUNJI] [DATA SAFE] lpa = 204704 +[47297.392635] bdbm: [EUNJI] [DATA SAFE] lpa = 204705 +[47297.393113] bdbm: [EUNJI] [DATA SAFE] lpa = 204706 +[47297.393589] bdbm: [EUNJI] [DATA SAFE] lpa = 204707 +[47297.394068] bdbm: [EUNJI] [DATA SAFE] lpa = 204708 +[47297.394545] bdbm: [EUNJI] [DATA SAFE] lpa = 204709 +[47297.395021] bdbm: [EUNJI] [DATA SAFE] lpa = 204710 +[47297.395498] bdbm: [EUNJI] [DATA SAFE] lpa = 204711 +[47297.395975] bdbm: [EUNJI] [DATA SAFE] lpa = 204712 +[47297.396449] bdbm: [EUNJI] [DATA SAFE] lpa = 204713 +[47297.396927] bdbm: [EUNJI] [DATA SAFE] lpa = 204714 +[47297.397403] bdbm: [EUNJI] [DATA SAFE] lpa = 204715 +[47297.397879] bdbm: [EUNJI] [DATA SAFE] lpa = 204716 +[47297.398359] bdbm: [EUNJI] [DATA SAFE] lpa = 204717 +[47297.398835] bdbm: [EUNJI] [DATA SAFE] lpa = 204718 +[47297.399312] bdbm: [EUNJI] [DATA SAFE] lpa = 204719 +[47297.399789] bdbm: [EUNJI] [DATA SAFE] lpa = 204720 +[47297.400267] bdbm: [EUNJI] [DATA SAFE] lpa = 204721 +[47297.400744] bdbm: [EUNJI] [DATA SAFE] lpa = 204722 +[47297.401224] bdbm: [EUNJI] [DATA SAFE] lpa = 204723 +[47297.401702] bdbm: [EUNJI] [DATA SAFE] lpa = 204724 +[47297.402177] bdbm: [EUNJI] [DATA SAFE] lpa = 204725 +[47297.402657] bdbm: [EUNJI] [DATA SAFE] lpa = 204726 +[47297.403133] bdbm: [EUNJI] [DATA SAFE] lpa = 204727 +[47297.403612] bdbm: [EUNJI] [DATA SAFE] lpa = 204728 +[47297.404089] bdbm: [EUNJI] [DATA SAFE] lpa = 204729 +[47297.404558] bdbm: [EUNJI] [DATA SAFE] lpa = 204730 +[47297.405031] bdbm: [EUNJI] [DATA SAFE] lpa = 204731 +[47297.405504] bdbm: [EUNJI] [DATA SAFE] lpa = 204732 +[47297.405980] bdbm: [EUNJI] [DATA SAFE] lpa = 204733 +[47297.406453] bdbm: [EUNJI] [DATA SAFE] lpa = 204734 +[47297.406927] bdbm: [EUNJI] [DATA SAFE] lpa = 204735 +[47297.407403] bdbm: [EUNJI] [DATA SAFE] lpa = 204736 +[47297.407875] bdbm: [EUNJI] [DATA SAFE] lpa = 204737 +[47297.408351] bdbm: [EUNJI] [DATA SAFE] lpa = 204738 +[47297.408827] bdbm: [EUNJI] [DATA SAFE] lpa = 204739 +[47297.409300] bdbm: [EUNJI] [DATA SAFE] lpa = 204740 +[47297.409776] bdbm: [EUNJI] [DATA SAFE] lpa = 204741 +[47297.410249] bdbm: [EUNJI] [DATA SAFE] lpa = 204742 +[47297.410720] bdbm: [EUNJI] [DATA SAFE] lpa = 204743 +[47297.411193] bdbm: [EUNJI] [DATA SAFE] lpa = 204744 +[47297.411665] bdbm: [EUNJI] [DATA SAFE] lpa = 204745 +[47297.412141] bdbm: [EUNJI] [DATA SAFE] lpa = 204746 +[47297.412612] bdbm: [EUNJI] [DATA SAFE] lpa = 204747 +[47297.413083] bdbm: [EUNJI] [DATA SAFE] lpa = 204748 +[47297.413554] bdbm: [EUNJI] [DATA SAFE] lpa = 204749 +[47297.414030] bdbm: [EUNJI] [DATA SAFE] lpa = 204750 +[47297.414502] bdbm: [EUNJI] [DATA SAFE] lpa = 204751 +[47297.414975] bdbm: [EUNJI] [DATA SAFE] lpa = 204752 +[47297.415452] bdbm: [EUNJI] [DATA SAFE] lpa = 204753 +[47297.415929] bdbm: [EUNJI] [DATA SAFE] lpa = 204754 +[47297.416404] bdbm: [EUNJI] [DATA SAFE] lpa = 204755 +[47297.416881] bdbm: [EUNJI] [DATA SAFE] lpa = 204756 +[47297.417352] bdbm: [EUNJI] [DATA SAFE] lpa = 204757 +[47297.417825] bdbm: [EUNJI] [DATA SAFE] lpa = 204758 +[47297.418301] bdbm: [EUNJI] [DATA SAFE] lpa = 204759 +[47297.418777] bdbm: [EUNJI] [DATA SAFE] lpa = 204760 +[47297.419254] bdbm: [EUNJI] [DATA SAFE] lpa = 204761 +[47297.419726] bdbm: [EUNJI] [DATA SAFE] lpa = 204762 +[47297.420199] bdbm: [EUNJI] [DATA SAFE] lpa = 204763 +[47297.420672] bdbm: [EUNJI] [DATA SAFE] lpa = 204764 +[47297.421149] bdbm: [EUNJI] [DATA SAFE] lpa = 204765 +[47297.421640] bdbm: [EUNJI] [DATA SAFE] lpa = 204766 +[47297.422118] bdbm: [EUNJI] [DATA SAFE] lpa = 204767 +[47297.422590] bdbm: [EUNJI] [DATA SAFE] lpa = 204768 +[47297.423067] bdbm: [EUNJI] [DATA SAFE] lpa = 204769 +[47297.423545] bdbm: [EUNJI] [DATA SAFE] lpa = 204770 +[47297.424022] bdbm: [EUNJI] [DATA SAFE] lpa = 204771 +[47297.424493] bdbm: [EUNJI] [DATA SAFE] lpa = 204772 +[47297.424973] bdbm: [EUNJI] [DATA SAFE] lpa = 204773 +[47297.425450] bdbm: [EUNJI] [DATA SAFE] lpa = 204774 +[47297.425926] bdbm: [EUNJI] [DATA SAFE] lpa = 204775 +[47297.426399] bdbm: [EUNJI] [DATA SAFE] lpa = 204776 +[47297.426877] bdbm: [EUNJI] [DATA SAFE] lpa = 204777 +[47297.427353] bdbm: [EUNJI] [DATA SAFE] lpa = 204778 +[47297.427831] bdbm: [EUNJI] [DATA SAFE] lpa = 204779 +[47297.428305] bdbm: [EUNJI] [DATA SAFE] lpa = 204780 +[47297.428782] bdbm: [EUNJI] [DATA SAFE] lpa = 204781 +[47297.429260] bdbm: [EUNJI] [DATA SAFE] lpa = 204782 +[47297.429738] bdbm: [EUNJI] [DATA SAFE] lpa = 204783 +[47297.430212] bdbm: [EUNJI] [DATA SAFE] lpa = 204784 +[47297.430690] bdbm: [EUNJI] [DATA SAFE] lpa = 204785 +[47297.431168] bdbm: [EUNJI] [DATA SAFE] lpa = 204786 +[47297.431645] bdbm: [EUNJI] [DATA SAFE] lpa = 204787 +[47297.432124] bdbm: [EUNJI] [DATA SAFE] lpa = 204788 +[47297.432601] bdbm: [EUNJI] [DATA SAFE] lpa = 204789 +[47297.433076] bdbm: [EUNJI] [DATA SAFE] lpa = 204790 +[47297.433553] bdbm: [EUNJI] [DATA SAFE] lpa = 204791 +[47297.434029] bdbm: [EUNJI] [DATA SAFE] lpa = 204792 +[47297.434508] bdbm: [EUNJI] [DATA SAFE] lpa = 204793 +[47297.434977] bdbm: [EUNJI] [DATA SAFE] lpa = 204794 +[47297.435448] bdbm: [EUNJI] [DATA SAFE] lpa = 204795 +[47297.435924] bdbm: [EUNJI] [DATA SAFE] lpa = 204796 +[47297.436396] bdbm: [EUNJI] [DATA SAFE] lpa = 204797 +[47297.436862] bdbm: [EUNJI] [DATA SAFE] lpa = 204798 +[47297.437337] bdbm: [EUNJI] [DATA SAFE] lpa = 204799 +[47297.437804] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 229376 +[47297.438275] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 229377 +[47297.438748] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 294912 +[47297.439217] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 294913 +[47297.439690] bdbm: [EUNJI] [DATA SAFE] lpa = 471840 +[47297.440161] bdbm: [EUNJI] [DATA SAFE] lpa = 471841 +[47297.440632] bdbm: [EUNJI] [DATA SAFE] lpa = 471842 +[47297.441104] bdbm: [EUNJI] [DATA SAFE] lpa = 471843 +[47297.441575] bdbm: [EUNJI] [DATA SAFE] lpa = 471844 +[47297.442049] bdbm: [EUNJI] [DATA SAFE] lpa = 471845 +[47297.442526] bdbm: [EUNJI] [DATA SAFE] lpa = 471846 +[47297.442998] bdbm: [EUNJI] [DATA SAFE] lpa = 471847 +[47297.443469] bdbm: [EUNJI] [DATA SAFE] lpa = 471848 +[47297.443940] bdbm: [EUNJI] [DATA SAFE] lpa = 471849 +[47297.444412] bdbm: [EUNJI] [DATA SAFE] lpa = 471850 +[47297.444888] bdbm: [EUNJI] [DATA SAFE] lpa = 471851 +[47297.445361] bdbm: [EUNJI] [DATA SAFE] lpa = 471852 +[47297.445833] bdbm: [EUNJI] [DATA SAFE] lpa = 471853 +[47297.446310] bdbm: [EUNJI] [DATA SAFE] lpa = 471854 +[47297.446781] bdbm: [EUNJI] [DATA SAFE] lpa = 471855 +[47297.447272] bdbm: [EUNJI] [DATA SAFE] lpa = 471856 +[47297.458270] bdbm: [EUNJI] read miss: 1 remains +[47297.458425] bdbm: [EUNJI] lpa=1 req complete ff0101 +[47297.458430] EXT4-fs (robusta): ext4_check_descriptors: Inode table for group 0 overlaps superblock +[47297.458433] EXT4-fs (robusta): ext4_check_descriptors: Checksum for group 0 failed (63685!=0) +[47297.458435] EXT4-fs (robusta): group descriptors corrupted! +[47443.804293] bdbm: ----------------------------------------------- +[47443.804295] bdbm: < PERFORMANCE SUMMARY > +[47443.804296] bdbm: [0] Execution Time (us): 151.456374 +[47443.804297] bdbm: +[47443.804297] bdbm: [1] Total I/Os +[47443.804298] bdbm: # of page reads: 1 +[47443.804298] bdbm: # of page writes: 0 +[47443.804299] bdbm: # of block erase: 0 +[47443.804299] bdbm: +[47443.804300] bdbm: [2] Normal I/Os +[47443.804300] bdbm: # of page reads: 1 +[47443.804300] bdbm: # of page writes: 0 +[47443.804301] bdbm: # of page rmw reads: 0 +[47443.804301] bdbm: # of page rmw writes: 0 +[47443.804302] bdbm: +[47443.804302] bdbm: [3] GC I/Os +[47443.804303] bdbm: # of GC invocation: 0 +[47443.804303] bdbm: # of page reads: 0 +[47443.804304] bdbm: # of page writes: 0 +[47443.804304] bdbm: # of block erase: 0 +[47443.804304] bdbm: +[47443.804305] bdbm: [4] Meta I/Os +[47443.804305] bdbm: # of meta page reads: 0 +[47443.804306] bdbm: # of meta page writes: 0 +[47443.804306] bdbm: +[47443.804307] bdbm: [5] Elapsed Time +[47443.804307] bdbm: page read (us): 155 (S:17 + Q:39 + D:99) +[47443.804308] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[47443.804309] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[47443.804309] bdbm: +[47443.804309] bdbm: [6] Utilization (R) +[47443.804321] bdbm: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +[47443.804322] bdbm: +[47443.804322] bdbm: [7] Utilization (W) +[47443.804333] bdbm: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +[47443.804334] bdbm: ----------------------------------------------- +[47443.804334] bdbm: ----------------------------------------------- +[47443.935436] bdbm: done +[47443.935437] bdbm: [dm_ramdrive_close] closed! +[47443.989453] bdbm: [bdbm_drv_main] bdbm_drv is closed +[47443.989456] bdbm: [bdbm_drv_main] bdbm_drv is removed +[47444.030730] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[47444.076424] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[47444.100964] bdbm: ===================================================================== +[47444.100966] bdbm: DEVICE PARAMETERS +[47444.100967] bdbm: ===================================================================== +[47444.100968] bdbm: # of channels = 64 +[47444.100968] bdbm: # of chips per channel = 1 +[47444.100969] bdbm: # of blocks per chip = 128 +[47444.100969] bdbm: # of pages per block = 64 +[47444.100970] bdbm: # of subpages per page = 1 +[47444.100970] bdbm: page main size = 4096 bytes +[47444.100971] bdbm: page oob size = 64 bytes +[47444.100971] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[47444.100972] bdbm: +[47444.100973] bdbm: ===================================================================== +[47444.100973] bdbm: RAM DISK INFO +[47444.100973] bdbm: ===================================================================== +[47444.100974] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) +[47444.298306] bdbm: ramssd addr = ffffc90050001000 +[47444.298308] bdbm: +[47444.298308] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[47444.493554] bdbm: *** building ptr_ramssd_data done +[47444.493759] bdbm: [dm_ramdrive_probe] probe done! +[47444.493762] bdbm: [dm_ramdrive_open] open done! +[47444.493782] bdbm: nvm cache addr = ffffc90006e22000 +[47444.493799] bdbm: ========================================================== +[47444.493800] bdbm: NVM CONFIGURATION +[47444.493800] bdbm: ========================================================== +[47444.493801] bdbm: total size = 12288, nr_nvm_pages = 3, nvm_page_size = 4096 +[47444.598598] bdbm: TRIM is disabled +[47444.598724] bdbm: ===================================================================== +[47444.598725] bdbm: DEVICE PARAMETERS +[47444.598727] bdbm: ===================================================================== +[47444.598729] bdbm: # of channels = 64 +[47444.598729] bdbm: # of chips per channel = 1 +[47444.598730] bdbm: # of blocks per chip = 128 +[47444.598731] bdbm: # of pages per block = 64 +[47444.598733] bdbm: # of subpages per page = 1 +[47444.598735] bdbm: page main size = 4096 bytes +[47444.598736] bdbm: page oob size = 64 bytes +[47444.598737] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[47444.598738] bdbm: +[47444.598740] bdbm: ===================================================================== +[47444.598741] bdbm: FTL CONFIGURATION +[47444.598741] bdbm: ===================================================================== +[47444.598743] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[47444.598744] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[47444.598745] bdbm: wl policy = 1 (1: none, 2: swap) +[47444.598745] bdbm: trim mode = 2 (1: enable, 2: disable) +[47444.598747] bdbm: kernel sector = 512 bytes +[47444.598749] bdbm: +[47444.598750] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[47445.622704] bdbm: llm_make_req: 0, 1 +[47445.622808] bdbm: [EUNJI] read miss: 1 remains +[47445.622822] bdbm: [EUNJI] lpa=1 req complete ff0102 +[47445.623253] bdbm: [EUNJI] lpa=1 req complete ff0102 +[47445.642047] bdbm: [EUNJI] write hit: 0 remains +[47445.642050] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642052] bdbm: [EUNJI] write hit: 0 remains +[47445.642053] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642055] bdbm: [EUNJI] write hit: 0 remains +[47445.642056] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642057] bdbm: [EUNJI] write hit: 0 remains +[47445.642058] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642060] bdbm: [EUNJI] write hit: 0 remains +[47445.642061] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642062] bdbm: [EUNJI] write hit: 0 remains +[47445.642063] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642064] bdbm: [EUNJI] write hit: 0 remains +[47445.642065] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642067] bdbm: [EUNJI] write hit: 0 remains +[47445.642068] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.643044] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 1 +[47445.643517] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 2 +[47445.643990] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 3 +[47445.644462] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 4 +[47445.644936] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 5 +[47445.645409] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 6 +[47445.645883] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 7 +[47445.646355] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 8 +[47445.646828] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 9 +[47445.647302] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 10 +[47445.647777] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 11 +[47445.648251] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 12 +[47445.648726] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 13 +[47445.649202] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 14 +[47445.649678] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 15 +[47445.650153] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 16 +[47445.650629] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 17 +[47445.651105] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 18 +[47445.651579] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 19 +[47445.652049] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 20 +[47445.656853] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 21 +[47445.657379] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 22 +[47445.657884] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 23 +[47445.658395] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 24 +[47445.658890] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 25 +[47445.659412] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 26 +[47445.659910] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 27 +[47445.660381] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 28 +[47445.660851] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 29 +[47445.661321] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 30 +[47445.661795] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 31 +[47445.662279] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 32 +[47445.662765] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 33 +[47445.663254] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 34 +[47445.663741] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 35 +[47445.664241] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 36 +[47445.664712] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 37 +[47445.665252] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 38 +[47445.665759] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 39 +[47445.666272] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 40 +[47445.666783] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 41 +[47445.667302] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 42 +[47445.667810] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 43 +[47445.668332] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 44 +[47445.668814] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 45 +[47445.669293] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 46 +[47445.669777] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 47 +[47445.670252] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 48 +[47445.670728] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 49 +[47445.671205] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 50 +[47445.671682] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 51 +[47445.672159] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 52 +[47445.672632] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 53 +[47445.673109] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 54 +[47445.673698] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 55 +[47445.674175] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 56 +[47445.674648] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 57 +[47445.675121] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 58 +[47445.675594] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 59 +[47445.676070] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 60 +[47445.676548] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 61 +[47445.677024] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 62 +[47445.677498] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 63 +[47445.677968] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 64 +[47445.678437] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 65 +[47445.678910] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 66 +[47445.679384] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 67 +[47445.679857] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 68 +[47445.680332] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 69 +[47445.680805] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 70 +[47445.681277] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 71 +[47445.681751] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 72 +[47445.682224] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 73 +[47445.682698] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 74 +[47445.683171] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 75 +[47445.683644] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 76 +[47445.684118] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 77 +[47445.684586] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 78 +[47445.685061] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 79 +[47445.685530] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 80 +[47445.686004] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 81 +[47445.686479] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 82 +[47445.686953] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 83 +[47445.687425] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 84 +[47445.687899] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 85 +[47445.688373] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 86 +[47445.688845] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 87 +[47445.689319] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 88 +[47445.689794] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 89 +[47445.690269] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 90 +[47445.690744] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 91 +[47445.691217] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 92 +[47445.691690] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 93 +[47445.692163] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 94 +[47445.692635] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 95 +[47445.693109] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 96 +[47445.693701] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 97 +[47445.694176] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 98 +[47445.694651] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 99 +[47445.695125] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 100 +[47445.695598] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 101 +[47445.696071] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 102 +[47445.696544] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 103 +[47445.697017] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 104 +[47445.697489] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 105 +[47445.697964] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 106 +[47445.698439] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 107 +[47445.698912] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 108 +[47445.699386] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 109 +[47445.699861] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 110 +[47445.700335] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 111 +[47445.700808] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 112 +[47445.701292] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 113 +[47445.701767] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 114 +[47445.702241] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 115 +[47445.702715] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 116 +[47445.703188] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 117 +[47445.703664] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 123 +[47445.704138] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 131 +[47445.704612] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 132 +[47445.705085] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 147 +[47445.705563] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 7527 +[47445.706038] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 7528 +[47445.707935] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 7532 +[47445.708402] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 32768 +[47445.708873] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 32769 +[47445.709340] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 98304 +[47445.709810] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 98305 +[47445.710283] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 163840 +[47445.710758] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 163841 +[47445.711229] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 196608 +[47449.603193] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 229376 +[47449.603663] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 229377 +[47449.604134] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 294912 +[47449.604605] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 294913 +[47449.622248] bdbm: [EUNJI] read miss: 1 remains +[47449.622358] bdbm: [EUNJI] lpa=1 req complete ff0101 +[47449.622364] EXT4-fs (robusta): ext4_check_descriptors: Inode table for group 0 overlaps superblock +[47449.622366] EXT4-fs (robusta): ext4_check_descriptors: Checksum for group 0 failed (32419!=0) +[47449.622368] EXT4-fs (robusta): group descriptors corrupted! diff --git a/err2.dmesg b/err2.dmesg new file mode 100644 index 0000000..49d5bbf --- /dev/null +++ b/err2.dmesg @@ -0,0 +1,4636 @@ +[47295.461674] bdbm: [EUNJI] [DATA SAFE] lpa = 200696 +[47295.462150] bdbm: [EUNJI] [DATA SAFE] lpa = 200697 +[47295.462625] bdbm: [EUNJI] [DATA SAFE] lpa = 200698 +[47295.463099] bdbm: [EUNJI] [DATA SAFE] lpa = 200699 +[47295.463574] bdbm: [EUNJI] [DATA SAFE] lpa = 200700 +[47295.464048] bdbm: [EUNJI] [DATA SAFE] lpa = 200701 +[47295.464522] bdbm: [EUNJI] [DATA SAFE] lpa = 200702 +[47295.464997] bdbm: [EUNJI] [DATA SAFE] lpa = 200703 +[47295.465470] bdbm: [EUNJI] [DATA SAFE] lpa = 200704 +[47295.465943] bdbm: [EUNJI] [DATA SAFE] lpa = 200705 +[47295.466416] bdbm: [EUNJI] [DATA SAFE] lpa = 200706 +[47295.466890] bdbm: [EUNJI] [DATA SAFE] lpa = 200707 +[47295.467363] bdbm: [EUNJI] [DATA SAFE] lpa = 200708 +[47295.467838] bdbm: [EUNJI] [DATA SAFE] lpa = 200709 +[47295.468311] bdbm: [EUNJI] [DATA SAFE] lpa = 200710 +[47295.468785] bdbm: [EUNJI] [DATA SAFE] lpa = 200711 +[47295.469259] bdbm: [EUNJI] [DATA SAFE] lpa = 200712 +[47295.469735] bdbm: [EUNJI] [DATA SAFE] lpa = 200713 +[47295.470210] bdbm: [EUNJI] [DATA SAFE] lpa = 200714 +[47295.470684] bdbm: [EUNJI] [DATA SAFE] lpa = 200715 +[47295.471158] bdbm: [EUNJI] [DATA SAFE] lpa = 200716 +[47295.471632] bdbm: [EUNJI] [DATA SAFE] lpa = 200717 +[47295.472108] bdbm: [EUNJI] [DATA SAFE] lpa = 200718 +[47295.472582] bdbm: [EUNJI] [DATA SAFE] lpa = 200719 +[47295.473056] bdbm: [EUNJI] [DATA SAFE] lpa = 200720 +[47295.473531] bdbm: [EUNJI] [DATA SAFE] lpa = 200721 +[47295.474004] bdbm: [EUNJI] [DATA SAFE] lpa = 200722 +[47295.474481] bdbm: [EUNJI] [DATA SAFE] lpa = 200723 +[47295.474956] bdbm: [EUNJI] [DATA SAFE] lpa = 200724 +[47295.475431] bdbm: [EUNJI] [DATA SAFE] lpa = 200725 +[47295.475906] bdbm: [EUNJI] [DATA SAFE] lpa = 200726 +[47295.476381] bdbm: [EUNJI] [DATA SAFE] lpa = 200727 +[47295.476856] bdbm: [EUNJI] [DATA SAFE] lpa = 200728 +[47295.477330] bdbm: [EUNJI] [DATA SAFE] lpa = 200729 +[47295.477800] bdbm: [EUNJI] [DATA SAFE] lpa = 200730 +[47295.478274] bdbm: [EUNJI] [DATA SAFE] lpa = 200731 +[47295.478749] bdbm: [EUNJI] [DATA SAFE] lpa = 200732 +[47295.479225] bdbm: [EUNJI] [DATA SAFE] lpa = 200733 +[47295.479700] bdbm: [EUNJI] [DATA SAFE] lpa = 200734 +[47295.480175] bdbm: [EUNJI] [DATA SAFE] lpa = 200735 +[47295.480646] bdbm: [EUNJI] [DATA SAFE] lpa = 200736 +[47295.481121] bdbm: [EUNJI] [DATA SAFE] lpa = 200737 +[47295.481624] bdbm: [EUNJI] [DATA SAFE] lpa = 200738 +[47295.482099] bdbm: [EUNJI] [DATA SAFE] lpa = 200739 +[47295.482575] bdbm: [EUNJI] [DATA SAFE] lpa = 200740 +[47295.483051] bdbm: [EUNJI] [DATA SAFE] lpa = 200741 +[47295.483526] bdbm: [EUNJI] [DATA SAFE] lpa = 200742 +[47295.484003] bdbm: [EUNJI] [DATA SAFE] lpa = 200743 +[47295.484478] bdbm: [EUNJI] [DATA SAFE] lpa = 200744 +[47295.484953] bdbm: [EUNJI] [DATA SAFE] lpa = 200745 +[47295.485427] bdbm: [EUNJI] [DATA SAFE] lpa = 200746 +[47295.485902] bdbm: [EUNJI] [DATA SAFE] lpa = 200747 +[47295.486377] bdbm: [EUNJI] [DATA SAFE] lpa = 200748 +[47295.486852] bdbm: [EUNJI] [DATA SAFE] lpa = 200749 +[47295.487326] bdbm: [EUNJI] [DATA SAFE] lpa = 200750 +[47295.487800] bdbm: [EUNJI] [DATA SAFE] lpa = 200751 +[47295.488275] bdbm: [EUNJI] [DATA SAFE] lpa = 200752 +[47295.488750] bdbm: [EUNJI] [DATA SAFE] lpa = 200753 +[47295.489225] bdbm: [EUNJI] [DATA SAFE] lpa = 200754 +[47295.489699] bdbm: [EUNJI] [DATA SAFE] lpa = 200755 +[47295.490176] bdbm: [EUNJI] [DATA SAFE] lpa = 200756 +[47295.490652] bdbm: [EUNJI] [DATA SAFE] lpa = 200757 +[47295.491126] bdbm: [EUNJI] [DATA SAFE] lpa = 200758 +[47295.491602] bdbm: [EUNJI] [DATA SAFE] lpa = 200759 +[47295.492076] bdbm: [EUNJI] [DATA SAFE] lpa = 200760 +[47295.492553] bdbm: [EUNJI] [DATA SAFE] lpa = 200761 +[47295.493027] bdbm: [EUNJI] [DATA SAFE] lpa = 200762 +[47295.493503] bdbm: [EUNJI] [DATA SAFE] lpa = 200763 +[47295.493974] bdbm: [EUNJI] [DATA SAFE] lpa = 200764 +[47295.494449] bdbm: [EUNJI] [DATA SAFE] lpa = 200765 +[47295.494920] bdbm: [EUNJI] [DATA SAFE] lpa = 200766 +[47295.495393] bdbm: [EUNJI] [DATA SAFE] lpa = 200767 +[47295.495868] bdbm: [EUNJI] [DATA SAFE] lpa = 200768 +[47295.496341] bdbm: [EUNJI] [DATA SAFE] lpa = 200769 +[47295.496814] bdbm: [EUNJI] [DATA SAFE] lpa = 200770 +[47295.497286] bdbm: [EUNJI] [DATA SAFE] lpa = 200771 +[47295.497761] bdbm: [EUNJI] [DATA SAFE] lpa = 200772 +[47295.498232] bdbm: [EUNJI] [DATA SAFE] lpa = 200773 +[47295.498705] bdbm: [EUNJI] [DATA SAFE] lpa = 200774 +[47295.499180] bdbm: [EUNJI] [DATA SAFE] lpa = 200775 +[47295.499654] bdbm: [EUNJI] [DATA SAFE] lpa = 200776 +[47295.500129] bdbm: [EUNJI] [DATA SAFE] lpa = 200777 +[47295.500602] bdbm: [EUNJI] [DATA SAFE] lpa = 200778 +[47295.501076] bdbm: [EUNJI] [DATA SAFE] lpa = 200779 +[47295.501549] bdbm: [EUNJI] [DATA SAFE] lpa = 200780 +[47295.502028] bdbm: [EUNJI] [DATA SAFE] lpa = 200781 +[47295.502503] bdbm: [EUNJI] [DATA SAFE] lpa = 200782 +[47295.502978] bdbm: [EUNJI] [DATA SAFE] lpa = 200783 +[47295.503452] bdbm: [EUNJI] [DATA SAFE] lpa = 200784 +[47295.503926] bdbm: [EUNJI] [DATA SAFE] lpa = 200785 +[47295.504400] bdbm: [EUNJI] [DATA SAFE] lpa = 200786 +[47295.504874] bdbm: [EUNJI] [DATA SAFE] lpa = 200787 +[47295.505349] bdbm: [EUNJI] [DATA SAFE] lpa = 200788 +[47295.505827] bdbm: [EUNJI] [DATA SAFE] lpa = 200789 +[47295.506300] bdbm: [EUNJI] [DATA SAFE] lpa = 200790 +[47295.506775] bdbm: [EUNJI] [DATA SAFE] lpa = 200791 +[47295.507250] bdbm: [EUNJI] [DATA SAFE] lpa = 200792 +[47295.507724] bdbm: [EUNJI] [DATA SAFE] lpa = 200793 +[47295.508195] bdbm: [EUNJI] [DATA SAFE] lpa = 200794 +[47295.508669] bdbm: [EUNJI] [DATA SAFE] lpa = 200795 +[47295.509143] bdbm: [EUNJI] [DATA SAFE] lpa = 200796 +[47295.509631] bdbm: [EUNJI] [DATA SAFE] lpa = 200797 +[47295.510110] bdbm: [EUNJI] [DATA SAFE] lpa = 200798 +[47295.510585] bdbm: [EUNJI] [DATA SAFE] lpa = 200799 +[47295.511060] bdbm: [EUNJI] [DATA SAFE] lpa = 200800 +[47295.511535] bdbm: [EUNJI] [DATA SAFE] lpa = 200801 +[47295.512010] bdbm: [EUNJI] [DATA SAFE] lpa = 200802 +[47295.512485] bdbm: [EUNJI] [DATA SAFE] lpa = 200803 +[47295.512959] bdbm: [EUNJI] [DATA SAFE] lpa = 200804 +[47295.513434] bdbm: [EUNJI] [DATA SAFE] lpa = 200805 +[47295.513907] bdbm: [EUNJI] [DATA SAFE] lpa = 200806 +[47295.514382] bdbm: [EUNJI] [DATA SAFE] lpa = 200807 +[47295.514857] bdbm: [EUNJI] [DATA SAFE] lpa = 200808 +[47295.515331] bdbm: [EUNJI] [DATA SAFE] lpa = 200809 +[47295.515805] bdbm: [EUNJI] [DATA SAFE] lpa = 200810 +[47295.516281] bdbm: [EUNJI] [DATA SAFE] lpa = 200811 +[47295.516754] bdbm: [EUNJI] [DATA SAFE] lpa = 200812 +[47295.517229] bdbm: [EUNJI] [DATA SAFE] lpa = 200813 +[47295.517703] bdbm: [EUNJI] [DATA SAFE] lpa = 200814 +[47295.518179] bdbm: [EUNJI] [DATA SAFE] lpa = 200815 +[47295.518654] bdbm: [EUNJI] [DATA SAFE] lpa = 200816 +[47295.519130] bdbm: [EUNJI] [DATA SAFE] lpa = 200817 +[47295.519604] bdbm: [EUNJI] [DATA SAFE] lpa = 200818 +[47295.520080] bdbm: [EUNJI] [DATA SAFE] lpa = 200819 +[47295.520553] bdbm: [EUNJI] [DATA SAFE] lpa = 200820 +[47295.521028] bdbm: [EUNJI] [DATA SAFE] lpa = 200821 +[47295.521501] bdbm: [EUNJI] [DATA SAFE] lpa = 200822 +[47295.521976] bdbm: [EUNJI] [DATA SAFE] lpa = 200823 +[47295.522451] bdbm: [EUNJI] [DATA SAFE] lpa = 200824 +[47295.522926] bdbm: [EUNJI] [DATA SAFE] lpa = 200825 +[47295.523400] bdbm: [EUNJI] [DATA SAFE] lpa = 200826 +[47295.523869] bdbm: [EUNJI] [DATA SAFE] lpa = 200827 +[47295.524340] bdbm: [EUNJI] [DATA SAFE] lpa = 200828 +[47295.524814] bdbm: [EUNJI] [DATA SAFE] lpa = 200829 +[47295.525288] bdbm: [EUNJI] [DATA SAFE] lpa = 200830 +[47295.525759] bdbm: [EUNJI] [DATA SAFE] lpa = 200831 +[47295.526229] bdbm: [EUNJI] [DATA SAFE] lpa = 200832 +[47295.526704] bdbm: [EUNJI] [DATA SAFE] lpa = 200833 +[47295.527177] bdbm: [EUNJI] [DATA SAFE] lpa = 200834 +[47295.527651] bdbm: [EUNJI] [DATA SAFE] lpa = 200835 +[47295.528126] bdbm: [EUNJI] [DATA SAFE] lpa = 200836 +[47295.528600] bdbm: [EUNJI] [DATA SAFE] lpa = 200837 +[47295.529075] bdbm: [EUNJI] [DATA SAFE] lpa = 200838 +[47295.529550] bdbm: [EUNJI] [DATA SAFE] lpa = 200839 +[47295.530025] bdbm: [EUNJI] [DATA SAFE] lpa = 200840 +[47295.530501] bdbm: [EUNJI] [DATA SAFE] lpa = 200841 +[47295.530976] bdbm: [EUNJI] [DATA SAFE] lpa = 200842 +[47295.531450] bdbm: [EUNJI] [DATA SAFE] lpa = 200843 +[47295.531924] bdbm: [EUNJI] [DATA SAFE] lpa = 200844 +[47295.532397] bdbm: [EUNJI] [DATA SAFE] lpa = 200845 +[47295.532870] bdbm: [EUNJI] [DATA SAFE] lpa = 200846 +[47295.533345] bdbm: [EUNJI] [DATA SAFE] lpa = 200847 +[47295.533821] bdbm: [EUNJI] [DATA SAFE] lpa = 200848 +[47295.534296] bdbm: [EUNJI] [DATA SAFE] lpa = 200849 +[47295.534771] bdbm: [EUNJI] [DATA SAFE] lpa = 200850 +[47295.535245] bdbm: [EUNJI] [DATA SAFE] lpa = 200851 +[47295.535720] bdbm: [EUNJI] [DATA SAFE] lpa = 200852 +[47295.536194] bdbm: [EUNJI] [DATA SAFE] lpa = 200853 +[47295.536670] bdbm: [EUNJI] [DATA SAFE] lpa = 200854 +[47295.537142] bdbm: [EUNJI] [DATA SAFE] lpa = 200855 +[47295.537629] bdbm: [EUNJI] [DATA SAFE] lpa = 200856 +[47295.538106] bdbm: [EUNJI] [DATA SAFE] lpa = 200857 +[47295.538583] bdbm: [EUNJI] [DATA SAFE] lpa = 200858 +[47295.539058] bdbm: [EUNJI] [DATA SAFE] lpa = 200859 +[47295.539532] bdbm: [EUNJI] [DATA SAFE] lpa = 200860 +[47295.540007] bdbm: [EUNJI] [DATA SAFE] lpa = 200861 +[47295.540482] bdbm: [EUNJI] [DATA SAFE] lpa = 200862 +[47295.540954] bdbm: [EUNJI] [DATA SAFE] lpa = 200863 +[47295.541428] bdbm: [EUNJI] [DATA SAFE] lpa = 200864 +[47295.541904] bdbm: [EUNJI] [DATA SAFE] lpa = 200865 +[47295.542378] bdbm: [EUNJI] [DATA SAFE] lpa = 200866 +[47295.542852] bdbm: [EUNJI] [DATA SAFE] lpa = 200867 +[47295.543326] bdbm: [EUNJI] [DATA SAFE] lpa = 200868 +[47295.543800] bdbm: [EUNJI] [DATA SAFE] lpa = 200869 +[47295.544274] bdbm: [EUNJI] [DATA SAFE] lpa = 200870 +[47295.544748] bdbm: [EUNJI] [DATA SAFE] lpa = 200871 +[47295.545221] bdbm: [EUNJI] [DATA SAFE] lpa = 200872 +[47295.545699] bdbm: [EUNJI] [DATA SAFE] lpa = 200873 +[47295.546176] bdbm: [EUNJI] [DATA SAFE] lpa = 200874 +[47295.546652] bdbm: [EUNJI] [DATA SAFE] lpa = 200875 +[47295.547129] bdbm: [EUNJI] [DATA SAFE] lpa = 200876 +[47295.547601] bdbm: [EUNJI] [DATA SAFE] lpa = 200877 +[47295.548077] bdbm: [EUNJI] [DATA SAFE] lpa = 200878 +[47295.548552] bdbm: [EUNJI] [DATA SAFE] lpa = 200879 +[47295.549027] bdbm: [EUNJI] [DATA SAFE] lpa = 200880 +[47295.549504] bdbm: [EUNJI] [DATA SAFE] lpa = 200881 +[47295.549978] bdbm: [EUNJI] [DATA SAFE] lpa = 200882 +[47295.550452] bdbm: [EUNJI] [DATA SAFE] lpa = 200883 +[47295.550927] bdbm: [EUNJI] [DATA SAFE] lpa = 200884 +[47295.551402] bdbm: [EUNJI] [DATA SAFE] lpa = 200885 +[47295.551876] bdbm: [EUNJI] [DATA SAFE] lpa = 200886 +[47295.552352] bdbm: [EUNJI] [DATA SAFE] lpa = 200887 +[47295.552826] bdbm: [EUNJI] [DATA SAFE] lpa = 200888 +[47295.553299] bdbm: [EUNJI] [DATA SAFE] lpa = 200889 +[47295.553770] bdbm: [EUNJI] [DATA SAFE] lpa = 200890 +[47295.554244] bdbm: [EUNJI] [DATA SAFE] lpa = 200891 +[47295.554717] bdbm: [EUNJI] [DATA SAFE] lpa = 200892 +[47295.555191] bdbm: [EUNJI] [DATA SAFE] lpa = 200893 +[47295.555660] bdbm: [EUNJI] [DATA SAFE] lpa = 200894 +[47295.556134] bdbm: [EUNJI] [DATA SAFE] lpa = 200895 +[47295.556609] bdbm: [EUNJI] [DATA SAFE] lpa = 200896 +[47295.557083] bdbm: [EUNJI] [DATA SAFE] lpa = 200897 +[47295.557557] bdbm: [EUNJI] [DATA SAFE] lpa = 200898 +[47295.558161] bdbm: [EUNJI] [DATA SAFE] lpa = 200899 +[47295.558635] bdbm: [EUNJI] [DATA SAFE] lpa = 200900 +[47295.559109] bdbm: [EUNJI] [DATA SAFE] lpa = 200901 +[47295.559584] bdbm: [EUNJI] [DATA SAFE] lpa = 200902 +[47295.560058] bdbm: [EUNJI] [DATA SAFE] lpa = 200903 +[47295.560531] bdbm: [EUNJI] [DATA SAFE] lpa = 200904 +[47295.561005] bdbm: [EUNJI] [DATA SAFE] lpa = 200905 +[47295.561478] bdbm: [EUNJI] [DATA SAFE] lpa = 200906 +[47295.561952] bdbm: [EUNJI] [DATA SAFE] lpa = 200907 +[47295.562426] bdbm: [EUNJI] [DATA SAFE] lpa = 200908 +[47295.562900] bdbm: [EUNJI] [DATA SAFE] lpa = 200909 +[47295.563374] bdbm: [EUNJI] [DATA SAFE] lpa = 200910 +[47295.563847] bdbm: [EUNJI] [DATA SAFE] lpa = 200911 +[47295.564323] bdbm: [EUNJI] [DATA SAFE] lpa = 200912 +[47295.564800] bdbm: [EUNJI] [DATA SAFE] lpa = 200913 +[47295.565271] bdbm: [EUNJI] [DATA SAFE] lpa = 200914 +[47295.565749] bdbm: [EUNJI] [DATA SAFE] lpa = 200915 +[47295.566231] bdbm: [EUNJI] [DATA SAFE] lpa = 200916 +[47295.566703] bdbm: [EUNJI] [DATA SAFE] lpa = 200917 +[47295.567178] bdbm: [EUNJI] [DATA SAFE] lpa = 200918 +[47295.567650] bdbm: [EUNJI] [DATA SAFE] lpa = 200919 +[47295.568136] bdbm: [EUNJI] [DATA SAFE] lpa = 200920 +[47295.568648] bdbm: [EUNJI] [DATA SAFE] lpa = 200921 +[47295.569152] bdbm: [EUNJI] [DATA SAFE] lpa = 200922 +[47295.569647] bdbm: [EUNJI] [DATA SAFE] lpa = 200923 +[47295.570138] bdbm: [EUNJI] [DATA SAFE] lpa = 200924 +[47295.570609] bdbm: [EUNJI] [DATA SAFE] lpa = 200925 +[47295.571093] bdbm: [EUNJI] [DATA SAFE] lpa = 200926 +[47295.571581] bdbm: [EUNJI] [DATA SAFE] lpa = 200927 +[47295.572091] bdbm: [EUNJI] [DATA SAFE] lpa = 200928 +[47295.572607] bdbm: [EUNJI] [DATA SAFE] lpa = 200929 +[47295.573080] bdbm: [EUNJI] [DATA SAFE] lpa = 200930 +[47295.573551] bdbm: [EUNJI] [DATA SAFE] lpa = 200931 +[47295.574059] bdbm: [EUNJI] [DATA SAFE] lpa = 200932 +[47295.574595] bdbm: [EUNJI] [DATA SAFE] lpa = 200933 +[47295.575125] bdbm: [EUNJI] [DATA SAFE] lpa = 200934 +[47295.575637] bdbm: [EUNJI] [DATA SAFE] lpa = 200935 +[47295.576161] bdbm: [EUNJI] [DATA SAFE] lpa = 200936 +[47295.576704] bdbm: [EUNJI] [DATA SAFE] lpa = 200937 +[47295.577185] bdbm: [EUNJI] [DATA SAFE] lpa = 200938 +[47295.577660] bdbm: [EUNJI] [DATA SAFE] lpa = 200939 +[47295.578136] bdbm: [EUNJI] [DATA SAFE] lpa = 200940 +[47295.578637] bdbm: [EUNJI] [DATA SAFE] lpa = 200941 +[47295.579168] bdbm: [EUNJI] [DATA SAFE] lpa = 200942 +[47295.579679] bdbm: [EUNJI] [DATA SAFE] lpa = 200943 +[47295.580215] bdbm: [EUNJI] [DATA SAFE] lpa = 200944 +[47295.580749] bdbm: [EUNJI] [DATA SAFE] lpa = 200945 +[47295.581253] bdbm: [EUNJI] [DATA SAFE] lpa = 200946 +[47295.581763] bdbm: [EUNJI] [DATA SAFE] lpa = 200947 +[47295.582298] bdbm: [EUNJI] [DATA SAFE] lpa = 200948 +[47295.582821] bdbm: [EUNJI] [DATA SAFE] lpa = 200949 +[47295.583356] bdbm: [EUNJI] [DATA SAFE] lpa = 200950 +[47295.583868] bdbm: [EUNJI] [DATA SAFE] lpa = 200951 +[47295.584376] bdbm: [EUNJI] [DATA SAFE] lpa = 200952 +[47295.584910] bdbm: [EUNJI] [DATA SAFE] lpa = 200953 +[47295.585426] bdbm: [EUNJI] [DATA SAFE] lpa = 200954 +[47295.585949] bdbm: [EUNJI] [DATA SAFE] lpa = 200955 +[47295.586457] bdbm: [EUNJI] [DATA SAFE] lpa = 200956 +[47295.586965] bdbm: [EUNJI] [DATA SAFE] lpa = 200957 +[47295.587499] bdbm: [EUNJI] [DATA SAFE] lpa = 200958 +[47295.588005] bdbm: [EUNJI] [DATA SAFE] lpa = 200959 +[47295.588512] bdbm: [EUNJI] [DATA SAFE] lpa = 200960 +[47295.589015] bdbm: [EUNJI] [DATA SAFE] lpa = 200961 +[47295.589534] bdbm: [EUNJI] [DATA SAFE] lpa = 200962 +[47295.590041] bdbm: [EUNJI] [DATA SAFE] lpa = 200963 +[47295.590545] bdbm: [EUNJI] [DATA SAFE] lpa = 200964 +[47295.591050] bdbm: [EUNJI] [DATA SAFE] lpa = 200965 +[47295.591555] bdbm: [EUNJI] [DATA SAFE] lpa = 200966 +[47295.592059] bdbm: [EUNJI] [DATA SAFE] lpa = 200967 +[47295.592563] bdbm: [EUNJI] [DATA SAFE] lpa = 200968 +[47295.593068] bdbm: [EUNJI] [DATA SAFE] lpa = 200969 +[47295.593579] bdbm: [EUNJI] [DATA SAFE] lpa = 200970 +[47295.594109] bdbm: [EUNJI] [DATA SAFE] lpa = 200971 +[47295.594602] bdbm: [EUNJI] [DATA SAFE] lpa = 200972 +[47295.595072] bdbm: [EUNJI] [DATA SAFE] lpa = 200973 +[47295.595543] bdbm: [EUNJI] [DATA SAFE] lpa = 200974 +[47295.596063] bdbm: [EUNJI] [DATA SAFE] lpa = 200975 +[47295.596565] bdbm: [EUNJI] [DATA SAFE] lpa = 200976 +[47295.597039] bdbm: [EUNJI] [DATA SAFE] lpa = 200977 +[47295.597508] bdbm: [EUNJI] [DATA SAFE] lpa = 200978 +[47295.598028] bdbm: [EUNJI] [DATA SAFE] lpa = 200979 +[47295.598550] bdbm: [EUNJI] [DATA SAFE] lpa = 200980 +[47295.599057] bdbm: [EUNJI] [DATA SAFE] lpa = 200981 +[47295.599576] bdbm: [EUNJI] [DATA SAFE] lpa = 200982 +[47295.600096] bdbm: [EUNJI] [DATA SAFE] lpa = 200983 +[47295.600648] bdbm: [EUNJI] [DATA SAFE] lpa = 200984 +[47295.601215] bdbm: [EUNJI] [DATA SAFE] lpa = 200985 +[47295.601768] bdbm: [EUNJI] [DATA SAFE] lpa = 200986 +[47295.602276] bdbm: [EUNJI] [DATA SAFE] lpa = 200987 +[47295.602786] bdbm: [EUNJI] [DATA SAFE] lpa = 200988 +[47295.603308] bdbm: [EUNJI] [DATA SAFE] lpa = 200989 +[47295.603818] bdbm: [EUNJI] [DATA SAFE] lpa = 200990 +[47295.604340] bdbm: [EUNJI] [DATA SAFE] lpa = 200991 +[47295.604846] bdbm: [EUNJI] [DATA SAFE] lpa = 200992 +[47295.605367] bdbm: [EUNJI] [DATA SAFE] lpa = 200993 +[47295.605874] bdbm: [EUNJI] [DATA SAFE] lpa = 200994 +[47295.606382] bdbm: [EUNJI] [DATA SAFE] lpa = 200995 +[47295.606890] bdbm: [EUNJI] [DATA SAFE] lpa = 200996 +[47295.607411] bdbm: [EUNJI] [DATA SAFE] lpa = 200997 +[47295.607918] bdbm: [EUNJI] [DATA SAFE] lpa = 200998 +[47295.608443] bdbm: [EUNJI] [DATA SAFE] lpa = 200999 +[47295.608991] bdbm: [EUNJI] [DATA SAFE] lpa = 201000 +[47295.609542] bdbm: [EUNJI] [DATA SAFE] lpa = 201001 +[47295.610101] bdbm: [EUNJI] [DATA SAFE] lpa = 201002 +[47295.610611] bdbm: [EUNJI] [DATA SAFE] lpa = 201003 +[47295.611120] bdbm: [EUNJI] [DATA SAFE] lpa = 201004 +[47295.611629] bdbm: [EUNJI] [DATA SAFE] lpa = 201005 +[47295.612137] bdbm: [EUNJI] [DATA SAFE] lpa = 201006 +[47295.612646] bdbm: [EUNJI] [DATA SAFE] lpa = 201007 +[47295.613155] bdbm: [EUNJI] [DATA SAFE] lpa = 201008 +[47295.613635] bdbm: [EUNJI] [DATA SAFE] lpa = 201009 +[47295.614117] bdbm: [EUNJI] [DATA SAFE] lpa = 201010 +[47295.614596] bdbm: [EUNJI] [DATA SAFE] lpa = 201011 +[47295.615072] bdbm: [EUNJI] [DATA SAFE] lpa = 201012 +[47295.615550] bdbm: [EUNJI] [DATA SAFE] lpa = 201013 +[47295.616027] bdbm: [EUNJI] [DATA SAFE] lpa = 201014 +[47295.616505] bdbm: [EUNJI] [DATA SAFE] lpa = 201015 +[47295.616982] bdbm: [EUNJI] [DATA SAFE] lpa = 201016 +[47295.617459] bdbm: [EUNJI] [DATA SAFE] lpa = 201017 +[47295.617936] bdbm: [EUNJI] [DATA SAFE] lpa = 201018 +[47295.618408] bdbm: [EUNJI] [DATA SAFE] lpa = 201019 +[47295.618880] bdbm: [EUNJI] [DATA SAFE] lpa = 201020 +[47295.619351] bdbm: [EUNJI] [DATA SAFE] lpa = 201021 +[47295.619822] bdbm: [EUNJI] [DATA SAFE] lpa = 201022 +[47295.620296] bdbm: [EUNJI] [DATA SAFE] lpa = 201023 +[47295.620767] bdbm: [EUNJI] [DATA SAFE] lpa = 201024 +[47295.621243] bdbm: [EUNJI] [DATA SAFE] lpa = 201025 +[47295.621716] bdbm: [EUNJI] [DATA SAFE] lpa = 201026 +[47295.622186] bdbm: [EUNJI] [DATA SAFE] lpa = 201027 +[47295.622657] bdbm: [EUNJI] [DATA SAFE] lpa = 201028 +[47295.623135] bdbm: [EUNJI] [DATA SAFE] lpa = 201029 +[47295.623606] bdbm: [EUNJI] [DATA SAFE] lpa = 201030 +[47295.624077] bdbm: [EUNJI] [DATA SAFE] lpa = 201031 +[47295.624547] bdbm: [EUNJI] [DATA SAFE] lpa = 201032 +[47295.625019] bdbm: [EUNJI] [DATA SAFE] lpa = 201033 +[47295.625494] bdbm: [EUNJI] [DATA SAFE] lpa = 201034 +[47295.625969] bdbm: [EUNJI] [DATA SAFE] lpa = 201035 +[47295.626442] bdbm: [EUNJI] [DATA SAFE] lpa = 201036 +[47295.626915] bdbm: [EUNJI] [DATA SAFE] lpa = 201037 +[47295.627386] bdbm: [EUNJI] [DATA SAFE] lpa = 201038 +[47295.627860] bdbm: [EUNJI] [DATA SAFE] lpa = 201039 +[47295.628333] bdbm: [EUNJI] [DATA SAFE] lpa = 201040 +[47295.628807] bdbm: [EUNJI] [DATA SAFE] lpa = 201041 +[47295.629280] bdbm: [EUNJI] [DATA SAFE] lpa = 201042 +[47295.629754] bdbm: [EUNJI] [DATA SAFE] lpa = 201043 +[47295.630230] bdbm: [EUNJI] [DATA SAFE] lpa = 201044 +[47295.630707] bdbm: [EUNJI] [DATA SAFE] lpa = 201045 +[47295.631183] bdbm: [EUNJI] [DATA SAFE] lpa = 201046 +[47295.631661] bdbm: [EUNJI] [DATA SAFE] lpa = 201047 +[47295.632137] bdbm: [EUNJI] [DATA SAFE] lpa = 201048 +[47295.632616] bdbm: [EUNJI] [DATA SAFE] lpa = 201049 +[47295.633087] bdbm: [EUNJI] [DATA SAFE] lpa = 201050 +[47295.633561] bdbm: [EUNJI] [DATA SAFE] lpa = 201051 +[47295.634045] bdbm: [EUNJI] [DATA SAFE] lpa = 201052 +[47295.634517] bdbm: [EUNJI] [DATA SAFE] lpa = 201053 +[47295.634989] bdbm: [EUNJI] [DATA SAFE] lpa = 201054 +[47295.635466] bdbm: [EUNJI] [DATA SAFE] lpa = 201055 +[47295.635942] bdbm: [EUNJI] [DATA SAFE] lpa = 201056 +[47295.636416] bdbm: [EUNJI] [DATA SAFE] lpa = 201057 +[47295.636893] bdbm: [EUNJI] [DATA SAFE] lpa = 201058 +[47295.637368] bdbm: [EUNJI] [DATA SAFE] lpa = 201059 +[47295.637845] bdbm: [EUNJI] [DATA SAFE] lpa = 201060 +[47295.638321] bdbm: [EUNJI] [DATA SAFE] lpa = 201061 +[47295.638794] bdbm: [EUNJI] [DATA SAFE] lpa = 201062 +[47295.639270] bdbm: [EUNJI] [DATA SAFE] lpa = 201063 +[47295.639748] bdbm: [EUNJI] [DATA SAFE] lpa = 201064 +[47295.640223] bdbm: [EUNJI] [DATA SAFE] lpa = 201065 +[47295.640701] bdbm: [EUNJI] [DATA SAFE] lpa = 201066 +[47295.641177] bdbm: [EUNJI] [DATA SAFE] lpa = 201067 +[47295.641651] bdbm: [EUNJI] [DATA SAFE] lpa = 201068 +[47295.642128] bdbm: [EUNJI] [DATA SAFE] lpa = 201069 +[47295.642605] bdbm: [EUNJI] [DATA SAFE] lpa = 201070 +[47295.643084] bdbm: [EUNJI] [DATA SAFE] lpa = 201071 +[47295.643560] bdbm: [EUNJI] [DATA SAFE] lpa = 201072 +[47295.644037] bdbm: [EUNJI] [DATA SAFE] lpa = 201073 +[47295.644513] bdbm: [EUNJI] [DATA SAFE] lpa = 201074 +[47295.644990] bdbm: [EUNJI] [DATA SAFE] lpa = 201075 +[47295.645468] bdbm: [EUNJI] [DATA SAFE] lpa = 201076 +[47295.645944] bdbm: [EUNJI] [DATA SAFE] lpa = 201077 +[47295.646420] bdbm: [EUNJI] [DATA SAFE] lpa = 201078 +[47295.646898] bdbm: [EUNJI] [DATA SAFE] lpa = 201079 +[47295.647373] bdbm: [EUNJI] [DATA SAFE] lpa = 201080 +[47295.647849] bdbm: [EUNJI] [DATA SAFE] lpa = 201081 +[47295.648320] bdbm: [EUNJI] [DATA SAFE] lpa = 201082 +[47295.648794] bdbm: [EUNJI] [DATA SAFE] lpa = 201083 +[47295.649266] bdbm: [EUNJI] [DATA SAFE] lpa = 201084 +[47295.649738] bdbm: [EUNJI] [DATA SAFE] lpa = 201085 +[47295.650211] bdbm: [EUNJI] [DATA SAFE] lpa = 201086 +[47295.650682] bdbm: [EUNJI] [DATA SAFE] lpa = 201087 +[47295.651152] bdbm: [EUNJI] [DATA SAFE] lpa = 201088 +[47295.651623] bdbm: [EUNJI] [DATA SAFE] lpa = 201089 +[47295.652095] bdbm: [EUNJI] [DATA SAFE] lpa = 201090 +[47295.652569] bdbm: [EUNJI] [DATA SAFE] lpa = 201091 +[47295.653042] bdbm: [EUNJI] [DATA SAFE] lpa = 201092 +[47295.653514] bdbm: [EUNJI] [DATA SAFE] lpa = 201093 +[47295.653986] bdbm: [EUNJI] [DATA SAFE] lpa = 201094 +[47295.654457] bdbm: [EUNJI] [DATA SAFE] lpa = 201095 +[47295.654933] bdbm: [EUNJI] [DATA SAFE] lpa = 201096 +[47295.655406] bdbm: [EUNJI] [DATA SAFE] lpa = 201097 +[47295.655878] bdbm: [EUNJI] [DATA SAFE] lpa = 201098 +[47295.656354] bdbm: [EUNJI] [DATA SAFE] lpa = 201099 +[47295.656830] bdbm: [EUNJI] [DATA SAFE] lpa = 201100 +[47295.657303] bdbm: [EUNJI] [DATA SAFE] lpa = 201101 +[47295.657776] bdbm: [EUNJI] [DATA SAFE] lpa = 201102 +[47295.658246] bdbm: [EUNJI] [DATA SAFE] lpa = 201103 +[47295.658723] bdbm: [EUNJI] [DATA SAFE] lpa = 201104 +[47295.659200] bdbm: [EUNJI] [DATA SAFE] lpa = 201105 +[47295.659672] bdbm: [EUNJI] [DATA SAFE] lpa = 201106 +[47295.660145] bdbm: [EUNJI] [DATA SAFE] lpa = 201107 +[47295.660618] bdbm: [EUNJI] [DATA SAFE] lpa = 201108 +[47295.661096] bdbm: [EUNJI] [DATA SAFE] lpa = 201109 +[47295.661567] bdbm: [EUNJI] [DATA SAFE] lpa = 201110 +[47295.662050] bdbm: [EUNJI] [DATA SAFE] lpa = 201111 +[47295.662522] bdbm: [EUNJI] [DATA SAFE] lpa = 201112 +[47295.663000] bdbm: [EUNJI] [DATA SAFE] lpa = 201113 +[47295.663475] bdbm: [EUNJI] [DATA SAFE] lpa = 201114 +[47295.663952] bdbm: [EUNJI] [DATA SAFE] lpa = 201115 +[47295.664423] bdbm: [EUNJI] [DATA SAFE] lpa = 201116 +[47295.664900] bdbm: [EUNJI] [DATA SAFE] lpa = 201117 +[47295.665374] bdbm: [EUNJI] [DATA SAFE] lpa = 201118 +[47295.665851] bdbm: [EUNJI] [DATA SAFE] lpa = 201119 +[47295.666323] bdbm: [EUNJI] [DATA SAFE] lpa = 201120 +[47295.666799] bdbm: [EUNJI] [DATA SAFE] lpa = 201121 +[47295.667275] bdbm: [EUNJI] [DATA SAFE] lpa = 201122 +[47295.667748] bdbm: [EUNJI] [DATA SAFE] lpa = 201123 +[47295.668220] bdbm: [EUNJI] [DATA SAFE] lpa = 201124 +[47295.668693] bdbm: [EUNJI] [DATA SAFE] lpa = 201125 +[47295.669171] bdbm: [EUNJI] [DATA SAFE] lpa = 201126 +[47295.669649] bdbm: [EUNJI] [DATA SAFE] lpa = 201127 +[47295.670127] bdbm: [EUNJI] [DATA SAFE] lpa = 201128 +[47295.670599] bdbm: [EUNJI] [DATA SAFE] lpa = 201129 +[47295.671076] bdbm: [EUNJI] [DATA SAFE] lpa = 201130 +[47295.671552] bdbm: [EUNJI] [DATA SAFE] lpa = 201131 +[47295.672030] bdbm: [EUNJI] [DATA SAFE] lpa = 201132 +[47295.672506] bdbm: [EUNJI] [DATA SAFE] lpa = 201133 +[47295.672982] bdbm: [EUNJI] [DATA SAFE] lpa = 201134 +[47295.673459] bdbm: [EUNJI] [DATA SAFE] lpa = 201135 +[47295.673937] bdbm: [EUNJI] [DATA SAFE] lpa = 201136 +[47295.674413] bdbm: [EUNJI] [DATA SAFE] lpa = 201137 +[47295.674889] bdbm: [EUNJI] [DATA SAFE] lpa = 201138 +[47295.675366] bdbm: [EUNJI] [DATA SAFE] lpa = 201139 +[47295.675841] bdbm: [EUNJI] [DATA SAFE] lpa = 201140 +[47295.676317] bdbm: [EUNJI] [DATA SAFE] lpa = 201141 +[47295.676794] bdbm: [EUNJI] [DATA SAFE] lpa = 201142 +[47295.677271] bdbm: [EUNJI] [DATA SAFE] lpa = 201143 +[47295.677744] bdbm: [EUNJI] [DATA SAFE] lpa = 201144 +[47295.678221] bdbm: [EUNJI] [DATA SAFE] lpa = 201145 +[47295.678697] bdbm: [EUNJI] [DATA SAFE] lpa = 201146 +[47295.679168] bdbm: [EUNJI] [DATA SAFE] lpa = 201147 +[47295.679644] bdbm: [EUNJI] [DATA SAFE] lpa = 201148 +[47295.680114] bdbm: [EUNJI] [DATA SAFE] lpa = 201149 +[47295.680590] bdbm: [EUNJI] [DATA SAFE] lpa = 201150 +[47295.681061] bdbm: [EUNJI] [DATA SAFE] lpa = 201151 +[47295.681537] bdbm: [EUNJI] [DATA SAFE] lpa = 201152 +[47295.682008] bdbm: [EUNJI] [DATA SAFE] lpa = 201153 +[47295.682484] bdbm: [EUNJI] [DATA SAFE] lpa = 201154 +[47295.682960] bdbm: [EUNJI] [DATA SAFE] lpa = 201155 +[47295.683432] bdbm: [EUNJI] [DATA SAFE] lpa = 201156 +[47295.683907] bdbm: [EUNJI] [DATA SAFE] lpa = 201157 +[47295.684379] bdbm: [EUNJI] [DATA SAFE] lpa = 201158 +[47295.684851] bdbm: [EUNJI] [DATA SAFE] lpa = 201159 +[47295.685321] bdbm: [EUNJI] [DATA SAFE] lpa = 201160 +[47295.685801] bdbm: [EUNJI] [DATA SAFE] lpa = 201161 +[47295.686277] bdbm: [EUNJI] [DATA SAFE] lpa = 201162 +[47295.686749] bdbm: [EUNJI] [DATA SAFE] lpa = 201163 +[47295.687224] bdbm: [EUNJI] [DATA SAFE] lpa = 201164 +[47295.687696] bdbm: [EUNJI] [DATA SAFE] lpa = 201165 +[47295.688168] bdbm: [EUNJI] [DATA SAFE] lpa = 201166 +[47295.688640] bdbm: [EUNJI] [DATA SAFE] lpa = 201167 +[47295.689112] bdbm: [EUNJI] [DATA SAFE] lpa = 201168 +[47295.689602] bdbm: [EUNJI] [DATA SAFE] lpa = 201169 +[47295.690078] bdbm: [EUNJI] [DATA SAFE] lpa = 201170 +[47295.690554] bdbm: [EUNJI] [DATA SAFE] lpa = 201171 +[47295.691030] bdbm: [EUNJI] [DATA SAFE] lpa = 201172 +[47295.691504] bdbm: [EUNJI] [DATA SAFE] lpa = 201173 +[47295.691976] bdbm: [EUNJI] [DATA SAFE] lpa = 201174 +[47295.692453] bdbm: [EUNJI] [DATA SAFE] lpa = 201175 +[47295.692928] bdbm: [EUNJI] [DATA SAFE] lpa = 201176 +[47295.693406] bdbm: [EUNJI] [DATA SAFE] lpa = 201177 +[47295.693878] bdbm: [EUNJI] [DATA SAFE] lpa = 201178 +[47295.694349] bdbm: [EUNJI] [DATA SAFE] lpa = 201179 +[47295.694825] bdbm: [EUNJI] [DATA SAFE] lpa = 201180 +[47295.695301] bdbm: [EUNJI] [DATA SAFE] lpa = 201181 +[47295.695778] bdbm: [EUNJI] [DATA SAFE] lpa = 201182 +[47295.696254] bdbm: [EUNJI] [DATA SAFE] lpa = 201183 +[47295.696731] bdbm: [EUNJI] [DATA SAFE] lpa = 201184 +[47295.697206] bdbm: [EUNJI] [DATA SAFE] lpa = 201185 +[47295.697683] bdbm: [EUNJI] [DATA SAFE] lpa = 201186 +[47295.698155] bdbm: [EUNJI] [DATA SAFE] lpa = 201187 +[47295.698628] bdbm: [EUNJI] [DATA SAFE] lpa = 201188 +[47295.699105] bdbm: [EUNJI] [DATA SAFE] lpa = 201189 +[47295.699582] bdbm: [EUNJI] [DATA SAFE] lpa = 201190 +[47295.700057] bdbm: [EUNJI] [DATA SAFE] lpa = 201191 +[47295.700534] bdbm: [EUNJI] [DATA SAFE] lpa = 201192 +[47295.701011] bdbm: [EUNJI] [DATA SAFE] lpa = 201193 +[47295.701489] bdbm: [EUNJI] [DATA SAFE] lpa = 201194 +[47295.701963] bdbm: [EUNJI] [DATA SAFE] lpa = 201195 +[47295.702440] bdbm: [EUNJI] [DATA SAFE] lpa = 201196 +[47295.702915] bdbm: [EUNJI] [DATA SAFE] lpa = 201197 +[47295.703392] bdbm: [EUNJI] [DATA SAFE] lpa = 201198 +[47295.703868] bdbm: [EUNJI] [DATA SAFE] lpa = 201199 +[47295.704345] bdbm: [EUNJI] [DATA SAFE] lpa = 201200 +[47295.704820] bdbm: [EUNJI] [DATA SAFE] lpa = 201201 +[47295.705296] bdbm: [EUNJI] [DATA SAFE] lpa = 201202 +[47295.705777] bdbm: [EUNJI] [DATA SAFE] lpa = 201203 +[47295.706256] bdbm: [EUNJI] [DATA SAFE] lpa = 201204 +[47295.706731] bdbm: [EUNJI] [DATA SAFE] lpa = 201205 +[47295.707206] bdbm: [EUNJI] [DATA SAFE] lpa = 201206 +[47295.707680] bdbm: [EUNJI] [DATA SAFE] lpa = 201207 +[47295.708158] bdbm: [EUNJI] [DATA SAFE] lpa = 201208 +[47295.708631] bdbm: [EUNJI] [DATA SAFE] lpa = 201209 +[47295.709105] bdbm: [EUNJI] [DATA SAFE] lpa = 201210 +[47295.709590] bdbm: [EUNJI] [DATA SAFE] lpa = 201211 +[47295.710063] bdbm: [EUNJI] [DATA SAFE] lpa = 201212 +[47295.710534] bdbm: [EUNJI] [DATA SAFE] lpa = 201213 +[47295.711006] bdbm: [EUNJI] [DATA SAFE] lpa = 201214 +[47295.711481] bdbm: [EUNJI] [DATA SAFE] lpa = 201215 +[47295.711956] bdbm: [EUNJI] [DATA SAFE] lpa = 201216 +[47295.712431] bdbm: [EUNJI] [DATA SAFE] lpa = 201217 +[47295.712906] bdbm: [EUNJI] [DATA SAFE] lpa = 201218 +[47295.713377] bdbm: [EUNJI] [DATA SAFE] lpa = 201219 +[47295.713852] bdbm: [EUNJI] [DATA SAFE] lpa = 201220 +[47295.714328] bdbm: [EUNJI] [DATA SAFE] lpa = 201221 +[47295.714798] bdbm: [EUNJI] [DATA SAFE] lpa = 201222 +[47295.715270] bdbm: [EUNJI] [DATA SAFE] lpa = 201223 +[47295.715744] bdbm: [EUNJI] [DATA SAFE] lpa = 201224 +[47295.716220] bdbm: [EUNJI] [DATA SAFE] lpa = 201225 +[47295.716697] bdbm: [EUNJI] [DATA SAFE] lpa = 201226 +[47295.717167] bdbm: [EUNJI] [DATA SAFE] lpa = 201227 +[47295.717644] bdbm: [EUNJI] [DATA SAFE] lpa = 201228 +[47295.718120] bdbm: [EUNJI] [DATA SAFE] lpa = 201229 +[47295.718596] bdbm: [EUNJI] [DATA SAFE] lpa = 201230 +[47295.719072] bdbm: [EUNJI] [DATA SAFE] lpa = 201231 +[47295.719551] bdbm: [EUNJI] [DATA SAFE] lpa = 201232 +[47295.720026] bdbm: [EUNJI] [DATA SAFE] lpa = 201233 +[47295.720500] bdbm: [EUNJI] [DATA SAFE] lpa = 201234 +[47295.720977] bdbm: [EUNJI] [DATA SAFE] lpa = 201235 +[47295.721451] bdbm: [EUNJI] [DATA SAFE] lpa = 201236 +[47295.721929] bdbm: [EUNJI] [DATA SAFE] lpa = 201237 +[47295.722404] bdbm: [EUNJI] [DATA SAFE] lpa = 201238 +[47295.722880] bdbm: [EUNJI] [DATA SAFE] lpa = 201239 +[47295.723357] bdbm: [EUNJI] [DATA SAFE] lpa = 201240 +[47295.723830] bdbm: [EUNJI] [DATA SAFE] lpa = 201241 +[47295.724301] bdbm: [EUNJI] [DATA SAFE] lpa = 201242 +[47295.724777] bdbm: [EUNJI] [DATA SAFE] lpa = 201243 +[47295.725254] bdbm: [EUNJI] [DATA SAFE] lpa = 201244 +[47295.725731] bdbm: [EUNJI] [DATA SAFE] lpa = 201245 +[47295.726208] bdbm: [EUNJI] [DATA SAFE] lpa = 201246 +[47295.726683] bdbm: [EUNJI] [DATA SAFE] lpa = 201247 +[47295.727160] bdbm: [EUNJI] [DATA SAFE] lpa = 201248 +[47295.727636] bdbm: [EUNJI] [DATA SAFE] lpa = 201249 +[47295.728112] bdbm: [EUNJI] [DATA SAFE] lpa = 201250 +[47295.728589] bdbm: [EUNJI] [DATA SAFE] lpa = 201251 +[47295.729065] bdbm: [EUNJI] [DATA SAFE] lpa = 201252 +[47295.729541] bdbm: [EUNJI] [DATA SAFE] lpa = 201253 +[47295.730019] bdbm: [EUNJI] [DATA SAFE] lpa = 201254 +[47295.730496] bdbm: [EUNJI] [DATA SAFE] lpa = 201255 +[47295.730971] bdbm: [EUNJI] [DATA SAFE] lpa = 201256 +[47295.731447] bdbm: [EUNJI] [DATA SAFE] lpa = 201257 +[47295.731924] bdbm: [EUNJI] [DATA SAFE] lpa = 201258 +[47295.732403] bdbm: [EUNJI] [DATA SAFE] lpa = 201259 +[47295.732876] bdbm: [EUNJI] [DATA SAFE] lpa = 201260 +[47295.733351] bdbm: [EUNJI] [DATA SAFE] lpa = 201261 +[47295.733827] bdbm: [EUNJI] [DATA SAFE] lpa = 201262 +[47295.734307] bdbm: [EUNJI] [DATA SAFE] lpa = 201263 +[47295.734783] bdbm: [EUNJI] [DATA SAFE] lpa = 201264 +[47295.735260] bdbm: [EUNJI] [DATA SAFE] lpa = 201265 +[47295.735737] bdbm: [EUNJI] [DATA SAFE] lpa = 201266 +[47295.736213] bdbm: [EUNJI] [DATA SAFE] lpa = 201267 +[47295.736687] bdbm: [EUNJI] [DATA SAFE] lpa = 201268 +[47295.737160] bdbm: [EUNJI] [DATA SAFE] lpa = 201269 +[47295.737637] bdbm: [EUNJI] [DATA SAFE] lpa = 201270 +[47295.738112] bdbm: [EUNJI] [DATA SAFE] lpa = 201271 +[47295.738589] bdbm: [EUNJI] [DATA SAFE] lpa = 201272 +[47295.739066] bdbm: [EUNJI] [DATA SAFE] lpa = 201273 +[47295.739535] bdbm: [EUNJI] [DATA SAFE] lpa = 201274 +[47295.740006] bdbm: [EUNJI] [DATA SAFE] lpa = 201275 +[47295.740478] bdbm: [EUNJI] [DATA SAFE] lpa = 201276 +[47295.740954] bdbm: [EUNJI] [DATA SAFE] lpa = 201277 +[47295.741429] bdbm: [EUNJI] [DATA SAFE] lpa = 201278 +[47295.741902] bdbm: [EUNJI] [DATA SAFE] lpa = 201279 +[47295.742377] bdbm: [EUNJI] [DATA SAFE] lpa = 201280 +[47295.742848] bdbm: [EUNJI] [DATA SAFE] lpa = 201281 +[47295.743318] bdbm: [EUNJI] [DATA SAFE] lpa = 201282 +[47295.743788] bdbm: [EUNJI] [DATA SAFE] lpa = 201283 +[47295.744259] bdbm: [EUNJI] [DATA SAFE] lpa = 201284 +[47295.744735] bdbm: [EUNJI] [DATA SAFE] lpa = 201285 +[47295.745211] bdbm: [EUNJI] [DATA SAFE] lpa = 201286 +[47295.745683] bdbm: [EUNJI] [DATA SAFE] lpa = 201287 +[47295.746158] bdbm: [EUNJI] [DATA SAFE] lpa = 201288 +[47295.746633] bdbm: [EUNJI] [DATA SAFE] lpa = 201289 +[47295.747108] bdbm: [EUNJI] [DATA SAFE] lpa = 201290 +[47295.747579] bdbm: [EUNJI] [DATA SAFE] lpa = 201291 +[47295.748051] bdbm: [EUNJI] [DATA SAFE] lpa = 201292 +[47295.748522] bdbm: [EUNJI] [DATA SAFE] lpa = 201293 +[47295.748993] bdbm: [EUNJI] [DATA SAFE] lpa = 201294 +[47295.749467] bdbm: [EUNJI] [DATA SAFE] lpa = 201295 +[47295.749941] bdbm: [EUNJI] [DATA SAFE] lpa = 201296 +[47295.750412] bdbm: [EUNJI] [DATA SAFE] lpa = 201297 +[47295.750890] bdbm: [EUNJI] [DATA SAFE] lpa = 201298 +[47295.751360] bdbm: [EUNJI] [DATA SAFE] lpa = 201299 +[47295.751833] bdbm: [EUNJI] [DATA SAFE] lpa = 201300 +[47295.752309] bdbm: [EUNJI] [DATA SAFE] lpa = 201301 +[47295.752786] bdbm: [EUNJI] [DATA SAFE] lpa = 201302 +[47295.753262] bdbm: [EUNJI] [DATA SAFE] lpa = 201303 +[47295.753739] bdbm: [EUNJI] [DATA SAFE] lpa = 201304 +[47295.754211] bdbm: [EUNJI] [DATA SAFE] lpa = 201305 +[47295.754685] bdbm: [EUNJI] [DATA SAFE] lpa = 201306 +[47295.755161] bdbm: [EUNJI] [DATA SAFE] lpa = 201307 +[47295.755636] bdbm: [EUNJI] [DATA SAFE] lpa = 201308 +[47295.756114] bdbm: [EUNJI] [DATA SAFE] lpa = 201309 +[47295.756591] bdbm: [EUNJI] [DATA SAFE] lpa = 201310 +[47295.757067] bdbm: [EUNJI] [DATA SAFE] lpa = 201311 +[47295.757543] bdbm: [EUNJI] [DATA SAFE] lpa = 201312 +[47295.758016] bdbm: [EUNJI] [DATA SAFE] lpa = 201313 +[47295.758493] bdbm: [EUNJI] [DATA SAFE] lpa = 201314 +[47295.758967] bdbm: [EUNJI] [DATA SAFE] lpa = 201315 +[47295.759444] bdbm: [EUNJI] [DATA SAFE] lpa = 201316 +[47295.759920] bdbm: [EUNJI] [DATA SAFE] lpa = 201317 +[47295.760396] bdbm: [EUNJI] [DATA SAFE] lpa = 201318 +[47295.760872] bdbm: [EUNJI] [DATA SAFE] lpa = 201319 +[47295.761349] bdbm: [EUNJI] [DATA SAFE] lpa = 201320 +[47295.761822] bdbm: [EUNJI] [DATA SAFE] lpa = 201321 +[47295.762299] bdbm: [EUNJI] [DATA SAFE] lpa = 201322 +[47295.762776] bdbm: [EUNJI] [DATA SAFE] lpa = 201323 +[47295.763249] bdbm: [EUNJI] [DATA SAFE] lpa = 201324 +[47295.763722] bdbm: [EUNJI] [DATA SAFE] lpa = 201325 +[47295.764196] bdbm: [EUNJI] [DATA SAFE] lpa = 201326 +[47295.764673] bdbm: [EUNJI] [DATA SAFE] lpa = 201327 +[47295.765151] bdbm: [EUNJI] [DATA SAFE] lpa = 201328 +[47295.765627] bdbm: [EUNJI] [DATA SAFE] lpa = 201329 +[47295.766103] bdbm: [EUNJI] [DATA SAFE] lpa = 201330 +[47295.766579] bdbm: [EUNJI] [DATA SAFE] lpa = 201331 +[47295.767054] bdbm: [EUNJI] [DATA SAFE] lpa = 201332 +[47295.767529] bdbm: [EUNJI] [DATA SAFE] lpa = 201333 +[47295.768007] bdbm: [EUNJI] [DATA SAFE] lpa = 201334 +[47295.768485] bdbm: [EUNJI] [DATA SAFE] lpa = 201335 +[47295.768964] bdbm: [EUNJI] [DATA SAFE] lpa = 201336 +[47295.769441] bdbm: [EUNJI] [DATA SAFE] lpa = 201337 +[47295.769911] bdbm: [EUNJI] [DATA SAFE] lpa = 201338 +[47295.770388] bdbm: [EUNJI] [DATA SAFE] lpa = 201339 +[47295.770862] bdbm: [EUNJI] [DATA SAFE] lpa = 201340 +[47295.771333] bdbm: [EUNJI] [DATA SAFE] lpa = 201341 +[47295.771803] bdbm: [EUNJI] [DATA SAFE] lpa = 201342 +[47295.772275] bdbm: [EUNJI] [DATA SAFE] lpa = 201343 +[47295.772746] bdbm: [EUNJI] [DATA SAFE] lpa = 201344 +[47295.773218] bdbm: [EUNJI] [DATA SAFE] lpa = 201345 +[47295.773692] bdbm: [EUNJI] [DATA SAFE] lpa = 201346 +[47295.774164] bdbm: [EUNJI] [DATA SAFE] lpa = 201347 +[47295.774635] bdbm: [EUNJI] [DATA SAFE] lpa = 201348 +[47295.775108] bdbm: [EUNJI] [DATA SAFE] lpa = 201349 +[47295.775581] bdbm: [EUNJI] [DATA SAFE] lpa = 201350 +[47295.776056] bdbm: [EUNJI] [DATA SAFE] lpa = 201351 +[47295.776532] bdbm: [EUNJI] [DATA SAFE] lpa = 201352 +[47295.777007] bdbm: [EUNJI] [DATA SAFE] lpa = 201353 +[47295.777478] bdbm: [EUNJI] [DATA SAFE] lpa = 201354 +[47295.777952] bdbm: [EUNJI] [DATA SAFE] lpa = 201355 +[47295.778428] bdbm: [EUNJI] [DATA SAFE] lpa = 201356 +[47295.778899] bdbm: [EUNJI] [DATA SAFE] lpa = 201357 +[47295.779374] bdbm: [EUNJI] [DATA SAFE] lpa = 201358 +[47295.779852] bdbm: [EUNJI] [DATA SAFE] lpa = 201359 +[47295.780324] bdbm: [EUNJI] [DATA SAFE] lpa = 201360 +[47295.780797] bdbm: [EUNJI] [DATA SAFE] lpa = 201361 +[47295.781269] bdbm: [EUNJI] [DATA SAFE] lpa = 201362 +[47295.781743] bdbm: [EUNJI] [DATA SAFE] lpa = 201363 +[47295.782220] bdbm: [EUNJI] [DATA SAFE] lpa = 201364 +[47295.782691] bdbm: [EUNJI] [DATA SAFE] lpa = 201365 +[47295.783168] bdbm: [EUNJI] [DATA SAFE] lpa = 201366 +[47295.783644] bdbm: [EUNJI] [DATA SAFE] lpa = 201367 +[47295.784119] bdbm: [EUNJI] [DATA SAFE] lpa = 201368 +[47295.784590] bdbm: [EUNJI] [DATA SAFE] lpa = 201369 +[47295.785068] bdbm: [EUNJI] [DATA SAFE] lpa = 201370 +[47295.785543] bdbm: [EUNJI] [DATA SAFE] lpa = 201371 +[47295.786017] bdbm: [EUNJI] [DATA SAFE] lpa = 201372 +[47295.786490] bdbm: [EUNJI] [DATA SAFE] lpa = 201373 +[47295.786962] bdbm: [EUNJI] [DATA SAFE] lpa = 201374 +[47295.787440] bdbm: [EUNJI] [DATA SAFE] lpa = 201375 +[47295.787917] bdbm: [EUNJI] [DATA SAFE] lpa = 201376 +[47295.788393] bdbm: [EUNJI] [DATA SAFE] lpa = 201377 +[47295.788867] bdbm: [EUNJI] [DATA SAFE] lpa = 201378 +[47295.789341] bdbm: [EUNJI] [DATA SAFE] lpa = 201379 +[47295.789819] bdbm: [EUNJI] [DATA SAFE] lpa = 201380 +[47295.790294] bdbm: [EUNJI] [DATA SAFE] lpa = 201381 +[47295.790771] bdbm: [EUNJI] [DATA SAFE] lpa = 201382 +[47295.791248] bdbm: [EUNJI] [DATA SAFE] lpa = 201383 +[47295.791723] bdbm: [EUNJI] [DATA SAFE] lpa = 201384 +[47295.792201] bdbm: [EUNJI] [DATA SAFE] lpa = 201385 +[47295.792676] bdbm: [EUNJI] [DATA SAFE] lpa = 201386 +[47295.793153] bdbm: [EUNJI] [DATA SAFE] lpa = 201387 +[47295.793626] bdbm: [EUNJI] [DATA SAFE] lpa = 201388 +[47295.794106] bdbm: [EUNJI] [DATA SAFE] lpa = 201389 +[47295.794584] bdbm: [EUNJI] [DATA SAFE] lpa = 201390 +[47295.795059] bdbm: [EUNJI] [DATA SAFE] lpa = 201391 +[47295.795539] bdbm: [EUNJI] [DATA SAFE] lpa = 201392 +[47295.796015] bdbm: [EUNJI] [DATA SAFE] lpa = 201393 +[47295.796494] bdbm: [EUNJI] [DATA SAFE] lpa = 201394 +[47295.796970] bdbm: [EUNJI] [DATA SAFE] lpa = 201395 +[47295.797446] bdbm: [EUNJI] [DATA SAFE] lpa = 201396 +[47295.797923] bdbm: [EUNJI] [DATA SAFE] lpa = 201397 +[47295.798398] bdbm: [EUNJI] [DATA SAFE] lpa = 201398 +[47295.798877] bdbm: [EUNJI] [DATA SAFE] lpa = 201399 +[47295.799352] bdbm: [EUNJI] [DATA SAFE] lpa = 201400 +[47295.799829] bdbm: [EUNJI] [DATA SAFE] lpa = 201401 +[47295.800303] bdbm: [EUNJI] [DATA SAFE] lpa = 201402 +[47295.800778] bdbm: [EUNJI] [DATA SAFE] lpa = 201403 +[47295.801249] bdbm: [EUNJI] [DATA SAFE] lpa = 201404 +[47295.801720] bdbm: [EUNJI] [DATA SAFE] lpa = 201405 +[47295.802196] bdbm: [EUNJI] [DATA SAFE] lpa = 201406 +[47295.802666] bdbm: [EUNJI] [DATA SAFE] lpa = 201407 +[47295.803137] bdbm: [EUNJI] [DATA SAFE] lpa = 201408 +[47295.803607] bdbm: [EUNJI] [DATA SAFE] lpa = 201409 +[47295.804080] bdbm: [EUNJI] [DATA SAFE] lpa = 201410 +[47295.804555] bdbm: [EUNJI] [DATA SAFE] lpa = 201411 +[47295.805031] bdbm: [EUNJI] [DATA SAFE] lpa = 201412 +[47295.805503] bdbm: [EUNJI] [DATA SAFE] lpa = 201413 +[47295.805977] bdbm: [EUNJI] [DATA SAFE] lpa = 201414 +[47295.806454] bdbm: [EUNJI] [DATA SAFE] lpa = 201415 +[47295.806929] bdbm: [EUNJI] [DATA SAFE] lpa = 201416 +[47295.807400] bdbm: [EUNJI] [DATA SAFE] lpa = 201417 +[47295.807875] bdbm: [EUNJI] [DATA SAFE] lpa = 201418 +[47295.808347] bdbm: [EUNJI] [DATA SAFE] lpa = 201419 +[47295.808822] bdbm: [EUNJI] [DATA SAFE] lpa = 201420 +[47295.809293] bdbm: [EUNJI] [DATA SAFE] lpa = 201421 +[47295.809767] bdbm: [EUNJI] [DATA SAFE] lpa = 201422 +[47295.810243] bdbm: [EUNJI] [DATA SAFE] lpa = 201423 +[47295.810721] bdbm: [EUNJI] [DATA SAFE] lpa = 201424 +[47295.811198] bdbm: [EUNJI] [DATA SAFE] lpa = 201425 +[47295.811668] bdbm: [EUNJI] [DATA SAFE] lpa = 201426 +[47295.812140] bdbm: [EUNJI] [DATA SAFE] lpa = 201427 +[47295.812616] bdbm: [EUNJI] [DATA SAFE] lpa = 201428 +[47295.813092] bdbm: [EUNJI] [DATA SAFE] lpa = 201429 +[47295.813567] bdbm: [EUNJI] [DATA SAFE] lpa = 201430 +[47295.814048] bdbm: [EUNJI] [DATA SAFE] lpa = 201431 +[47295.814530] bdbm: [EUNJI] [DATA SAFE] lpa = 201432 +[47295.815001] bdbm: [EUNJI] [DATA SAFE] lpa = 201433 +[47295.815472] bdbm: [EUNJI] [DATA SAFE] lpa = 201434 +[47295.815958] bdbm: [EUNJI] [DATA SAFE] lpa = 201435 +[47295.816430] bdbm: [EUNJI] [DATA SAFE] lpa = 201436 +[47295.816929] bdbm: [EUNJI] [DATA SAFE] lpa = 201437 +[47295.817419] bdbm: [EUNJI] [DATA SAFE] lpa = 201438 +[47295.817906] bdbm: [EUNJI] [DATA SAFE] lpa = 201439 +[47295.818404] bdbm: [EUNJI] [DATA SAFE] lpa = 201440 +[47295.818875] bdbm: [EUNJI] [DATA SAFE] lpa = 201441 +[47295.819345] bdbm: [EUNJI] [DATA SAFE] lpa = 201442 +[47295.819820] bdbm: [EUNJI] [DATA SAFE] lpa = 201443 +[47295.820296] bdbm: [EUNJI] [DATA SAFE] lpa = 201444 +[47295.820771] bdbm: [EUNJI] [DATA SAFE] lpa = 201445 +[47295.821246] bdbm: [EUNJI] [DATA SAFE] lpa = 201446 +[47295.821718] bdbm: [EUNJI] [DATA SAFE] lpa = 201447 +[47295.822193] bdbm: [EUNJI] [DATA SAFE] lpa = 201448 +[47295.822669] bdbm: [EUNJI] [DATA SAFE] lpa = 201449 +[47295.823139] bdbm: [EUNJI] [DATA SAFE] lpa = 201450 +[47295.823609] bdbm: [EUNJI] [DATA SAFE] lpa = 201451 +[47295.824080] bdbm: [EUNJI] [DATA SAFE] lpa = 201452 +[47295.824556] bdbm: [EUNJI] [DATA SAFE] lpa = 201453 +[47295.825026] bdbm: [EUNJI] [DATA SAFE] lpa = 201454 +[47295.825497] bdbm: [EUNJI] [DATA SAFE] lpa = 201455 +[47295.825970] bdbm: [EUNJI] [DATA SAFE] lpa = 201456 +[47295.826446] bdbm: [EUNJI] [DATA SAFE] lpa = 201457 +[47295.826917] bdbm: [EUNJI] [DATA SAFE] lpa = 201458 +[47295.827388] bdbm: [EUNJI] [DATA SAFE] lpa = 201459 +[47295.827858] bdbm: [EUNJI] [DATA SAFE] lpa = 201460 +[47295.828329] bdbm: [EUNJI] [DATA SAFE] lpa = 201461 +[47295.828800] bdbm: [EUNJI] [DATA SAFE] lpa = 201462 +[47295.829271] bdbm: [EUNJI] [DATA SAFE] lpa = 201463 +[47295.829748] bdbm: [EUNJI] [DATA SAFE] lpa = 201464 +[47295.830231] bdbm: [EUNJI] [DATA SAFE] lpa = 201465 +[47295.830702] bdbm: [EUNJI] [DATA SAFE] lpa = 201466 +[47295.831174] bdbm: [EUNJI] [DATA SAFE] lpa = 201467 +[47295.831649] bdbm: [EUNJI] [DATA SAFE] lpa = 201468 +[47295.832124] bdbm: [EUNJI] [DATA SAFE] lpa = 201469 +[47295.832595] bdbm: [EUNJI] [DATA SAFE] lpa = 201470 +[47295.833067] bdbm: [EUNJI] [DATA SAFE] lpa = 201471 +[47295.833540] bdbm: [EUNJI] [DATA SAFE] lpa = 201472 +[47295.834012] bdbm: [EUNJI] [DATA SAFE] lpa = 201473 +[47295.834484] bdbm: [EUNJI] [DATA SAFE] lpa = 201474 +[47295.834956] bdbm: [EUNJI] [DATA SAFE] lpa = 201475 +[47295.835427] bdbm: [EUNJI] [DATA SAFE] lpa = 201476 +[47295.835897] bdbm: [EUNJI] [DATA SAFE] lpa = 201477 +[47295.836370] bdbm: [EUNJI] [DATA SAFE] lpa = 201478 +[47295.836845] bdbm: [EUNJI] [DATA SAFE] lpa = 201479 +[47295.837323] bdbm: [EUNJI] [DATA SAFE] lpa = 201480 +[47295.837799] bdbm: [EUNJI] [DATA SAFE] lpa = 201481 +[47295.838270] bdbm: [EUNJI] [DATA SAFE] lpa = 201482 +[47295.838746] bdbm: [EUNJI] [DATA SAFE] lpa = 201483 +[47295.839222] bdbm: [EUNJI] [DATA SAFE] lpa = 201484 +[47295.839698] bdbm: [EUNJI] [DATA SAFE] lpa = 201485 +[47295.840210] bdbm: [EUNJI] [DATA SAFE] lpa = 201486 +[47295.840697] bdbm: [EUNJI] [DATA SAFE] lpa = 201487 +[47295.841182] bdbm: [EUNJI] [DATA SAFE] lpa = 201488 +[47295.841665] bdbm: [EUNJI] [DATA SAFE] lpa = 201489 +[47295.842142] bdbm: [EUNJI] [DATA SAFE] lpa = 201490 +[47295.842618] bdbm: [EUNJI] [DATA SAFE] lpa = 201491 +[47295.843094] bdbm: [EUNJI] [DATA SAFE] lpa = 201492 +[47295.843567] bdbm: [EUNJI] [DATA SAFE] lpa = 201493 +[47295.844041] bdbm: [EUNJI] [DATA SAFE] lpa = 201494 +[47295.844514] bdbm: [EUNJI] [DATA SAFE] lpa = 201495 +[47295.844986] bdbm: [EUNJI] [DATA SAFE] lpa = 201496 +[47295.845460] bdbm: [EUNJI] [DATA SAFE] lpa = 201497 +[47295.845936] bdbm: [EUNJI] [DATA SAFE] lpa = 201498 +[47295.846411] bdbm: [EUNJI] [DATA SAFE] lpa = 201499 +[47295.846886] bdbm: [EUNJI] [DATA SAFE] lpa = 201500 +[47295.847361] bdbm: [EUNJI] [DATA SAFE] lpa = 201501 +[47295.847834] bdbm: [EUNJI] [DATA SAFE] lpa = 201502 +[47295.848309] bdbm: [EUNJI] [DATA SAFE] lpa = 201503 +[47295.848783] bdbm: [EUNJI] [DATA SAFE] lpa = 201504 +[47295.849257] bdbm: [EUNJI] [DATA SAFE] lpa = 201505 +[47295.849731] bdbm: [EUNJI] [DATA SAFE] lpa = 201506 +[47295.850208] bdbm: [EUNJI] [DATA SAFE] lpa = 201507 +[47295.850683] bdbm: [EUNJI] [DATA SAFE] lpa = 201508 +[47295.851157] bdbm: [EUNJI] [DATA SAFE] lpa = 201509 +[47295.851631] bdbm: [EUNJI] [DATA SAFE] lpa = 201510 +[47295.852105] bdbm: [EUNJI] [DATA SAFE] lpa = 201511 +[47295.852580] bdbm: [EUNJI] [DATA SAFE] lpa = 201512 +[47295.853054] bdbm: [EUNJI] [DATA SAFE] lpa = 201513 +[47295.853529] bdbm: [EUNJI] [DATA SAFE] lpa = 201514 +[47295.854002] bdbm: [EUNJI] [DATA SAFE] lpa = 201515 +[47295.854480] bdbm: [EUNJI] [DATA SAFE] lpa = 201516 +[47295.854957] bdbm: [EUNJI] [DATA SAFE] lpa = 201517 +[47295.855432] bdbm: [EUNJI] [DATA SAFE] lpa = 201518 +[47295.855905] bdbm: [EUNJI] [DATA SAFE] lpa = 201519 +[47295.856379] bdbm: [EUNJI] [DATA SAFE] lpa = 201520 +[47295.856856] bdbm: [EUNJI] [DATA SAFE] lpa = 201521 +[47295.857330] bdbm: [EUNJI] [DATA SAFE] lpa = 201522 +[47295.857802] bdbm: [EUNJI] [DATA SAFE] lpa = 201523 +[47295.858276] bdbm: [EUNJI] [DATA SAFE] lpa = 201524 +[47295.858751] bdbm: [EUNJI] [DATA SAFE] lpa = 201525 +[47295.859225] bdbm: [EUNJI] [DATA SAFE] lpa = 201526 +[47295.859699] bdbm: [EUNJI] [DATA SAFE] lpa = 201527 +[47295.860173] bdbm: [EUNJI] [DATA SAFE] lpa = 201528 +[47295.860649] bdbm: [EUNJI] [DATA SAFE] lpa = 201529 +[47295.861122] bdbm: [EUNJI] [DATA SAFE] lpa = 201530 +[47295.861626] bdbm: [EUNJI] [DATA SAFE] lpa = 201531 +[47295.862096] bdbm: [EUNJI] [DATA SAFE] lpa = 201532 +[47295.862571] bdbm: [EUNJI] [DATA SAFE] lpa = 201533 +[47295.863044] bdbm: [EUNJI] [DATA SAFE] lpa = 201534 +[47295.863517] bdbm: [EUNJI] [DATA SAFE] lpa = 201535 +[47295.863990] bdbm: [EUNJI] [DATA SAFE] lpa = 201536 +[47295.864464] bdbm: [EUNJI] [DATA SAFE] lpa = 201537 +[47295.864937] bdbm: [EUNJI] [DATA SAFE] lpa = 201538 +[47295.865411] bdbm: [EUNJI] [DATA SAFE] lpa = 201539 +[47295.865888] bdbm: [EUNJI] [DATA SAFE] lpa = 201540 +[47295.866363] bdbm: [EUNJI] [DATA SAFE] lpa = 201541 +[47295.866836] bdbm: [EUNJI] [DATA SAFE] lpa = 201542 +[47295.867346] bdbm: [EUNJI] [DATA SAFE] lpa = 201543 +[47295.867847] bdbm: [EUNJI] [DATA SAFE] lpa = 201544 +[47295.868352] bdbm: [EUNJI] [DATA SAFE] lpa = 201545 +[47295.868852] bdbm: [EUNJI] [DATA SAFE] lpa = 201546 +[47295.869352] bdbm: [EUNJI] [DATA SAFE] lpa = 201547 +[47295.869827] bdbm: [EUNJI] [DATA SAFE] lpa = 201548 +[47295.870330] bdbm: [EUNJI] [DATA SAFE] lpa = 201549 +[47295.870801] bdbm: [EUNJI] [DATA SAFE] lpa = 201550 +[47295.871273] bdbm: [EUNJI] [DATA SAFE] lpa = 201551 +[47295.871764] bdbm: [EUNJI] [DATA SAFE] lpa = 201552 +[47295.872236] bdbm: [EUNJI] [DATA SAFE] lpa = 201553 +[47295.872712] bdbm: [EUNJI] [DATA SAFE] lpa = 201554 +[47295.873184] bdbm: [EUNJI] [DATA SAFE] lpa = 201555 +[47295.873659] bdbm: [EUNJI] [DATA SAFE] lpa = 201556 +[47295.874133] bdbm: [EUNJI] [DATA SAFE] lpa = 201557 +[47295.874604] bdbm: [EUNJI] [DATA SAFE] lpa = 201558 +[47295.875080] bdbm: [EUNJI] [DATA SAFE] lpa = 201559 +[47295.875557] bdbm: [EUNJI] [DATA SAFE] lpa = 201560 +[47295.876030] bdbm: [EUNJI] [DATA SAFE] lpa = 201561 +[47295.876506] bdbm: [EUNJI] [DATA SAFE] lpa = 201562 +[47295.876989] bdbm: [EUNJI] [DATA SAFE] lpa = 201563 +[47295.877465] bdbm: [EUNJI] [DATA SAFE] lpa = 201564 +[47295.877941] bdbm: [EUNJI] [DATA SAFE] lpa = 201565 +[47295.878417] bdbm: [EUNJI] [DATA SAFE] lpa = 201566 +[47295.878892] bdbm: [EUNJI] [DATA SAFE] lpa = 201567 +[47295.879365] bdbm: [EUNJI] [DATA SAFE] lpa = 201568 +[47295.879840] bdbm: [EUNJI] [DATA SAFE] lpa = 201569 +[47295.880315] bdbm: [EUNJI] [DATA SAFE] lpa = 201570 +[47295.880786] bdbm: [EUNJI] [DATA SAFE] lpa = 201571 +[47295.881259] bdbm: [EUNJI] [DATA SAFE] lpa = 201572 +[47295.881747] bdbm: [EUNJI] [DATA SAFE] lpa = 201573 +[47295.882223] bdbm: [EUNJI] [DATA SAFE] lpa = 201574 +[47295.882696] bdbm: [EUNJI] [DATA SAFE] lpa = 201575 +[47295.883170] bdbm: [EUNJI] [DATA SAFE] lpa = 201576 +[47295.883643] bdbm: [EUNJI] [DATA SAFE] lpa = 201577 +[47295.884117] bdbm: [EUNJI] [DATA SAFE] lpa = 201578 +[47295.884590] bdbm: [EUNJI] [DATA SAFE] lpa = 201579 +[47295.885063] bdbm: [EUNJI] [DATA SAFE] lpa = 201580 +[47295.885537] bdbm: [EUNJI] [DATA SAFE] lpa = 201581 +[47295.886011] bdbm: [EUNJI] [DATA SAFE] lpa = 201582 +[47295.886487] bdbm: [EUNJI] [DATA SAFE] lpa = 201583 +[47295.886960] bdbm: [EUNJI] [DATA SAFE] lpa = 201584 +[47295.887434] bdbm: [EUNJI] [DATA SAFE] lpa = 201585 +[47295.887909] bdbm: [EUNJI] [DATA SAFE] lpa = 201586 +[47295.888384] bdbm: [EUNJI] [DATA SAFE] lpa = 201587 +[47295.888858] bdbm: [EUNJI] [DATA SAFE] lpa = 201588 +[47295.889332] bdbm: [EUNJI] [DATA SAFE] lpa = 201589 +[47295.889809] bdbm: [EUNJI] [DATA SAFE] lpa = 201590 +[47295.890285] bdbm: [EUNJI] [DATA SAFE] lpa = 201591 +[47295.890759] bdbm: [EUNJI] [DATA SAFE] lpa = 201592 +[47295.891234] bdbm: [EUNJI] [DATA SAFE] lpa = 201593 +[47295.891706] bdbm: [EUNJI] [DATA SAFE] lpa = 201594 +[47295.892180] bdbm: [EUNJI] [DATA SAFE] lpa = 201595 +[47295.892654] bdbm: [EUNJI] [DATA SAFE] lpa = 201596 +[47295.893127] bdbm: [EUNJI] [DATA SAFE] lpa = 201597 +[47295.893607] bdbm: [EUNJI] [DATA SAFE] lpa = 201598 +[47295.894091] bdbm: [EUNJI] [DATA SAFE] lpa = 201599 +[47295.894566] bdbm: [EUNJI] [DATA SAFE] lpa = 201600 +[47295.895040] bdbm: [EUNJI] [DATA SAFE] lpa = 201601 +[47295.895513] bdbm: [EUNJI] [DATA SAFE] lpa = 201602 +[47295.895987] bdbm: [EUNJI] [DATA SAFE] lpa = 201603 +[47295.896461] bdbm: [EUNJI] [DATA SAFE] lpa = 201604 +[47295.896935] bdbm: [EUNJI] [DATA SAFE] lpa = 201605 +[47295.897409] bdbm: [EUNJI] [DATA SAFE] lpa = 201606 +[47295.897883] bdbm: [EUNJI] [DATA SAFE] lpa = 201607 +[47295.898357] bdbm: [EUNJI] [DATA SAFE] lpa = 201608 +[47295.898833] bdbm: [EUNJI] [DATA SAFE] lpa = 201609 +[47295.899306] bdbm: [EUNJI] [DATA SAFE] lpa = 201610 +[47295.899781] bdbm: [EUNJI] [DATA SAFE] lpa = 201611 +[47295.900255] bdbm: [EUNJI] [DATA SAFE] lpa = 201612 +[47295.900729] bdbm: [EUNJI] [DATA SAFE] lpa = 201613 +[47295.901203] bdbm: [EUNJI] [DATA SAFE] lpa = 201614 +[47295.901675] bdbm: [EUNJI] [DATA SAFE] lpa = 201615 +[47295.902152] bdbm: [EUNJI] [DATA SAFE] lpa = 201616 +[47295.902626] bdbm: [EUNJI] [DATA SAFE] lpa = 201617 +[47295.903099] bdbm: [EUNJI] [DATA SAFE] lpa = 201618 +[47295.903573] bdbm: [EUNJI] [DATA SAFE] lpa = 201619 +[47295.904046] bdbm: [EUNJI] [DATA SAFE] lpa = 201620 +[47295.904520] bdbm: [EUNJI] [DATA SAFE] lpa = 201621 +[47295.904992] bdbm: [EUNJI] [DATA SAFE] lpa = 201622 +[47295.905466] bdbm: [EUNJI] [DATA SAFE] lpa = 201623 +[47295.905941] bdbm: [EUNJI] [DATA SAFE] lpa = 201624 +[47295.906416] bdbm: [EUNJI] [DATA SAFE] lpa = 201625 +[47295.906888] bdbm: [EUNJI] [DATA SAFE] lpa = 201626 +[47295.907362] bdbm: [EUNJI] [DATA SAFE] lpa = 201627 +[47295.907836] bdbm: [EUNJI] [DATA SAFE] lpa = 201628 +[47295.908309] bdbm: [EUNJI] [DATA SAFE] lpa = 201629 +[47295.908783] bdbm: [EUNJI] [DATA SAFE] lpa = 201630 +[47295.909257] bdbm: [EUNJI] [DATA SAFE] lpa = 201631 +[47295.909728] bdbm: [EUNJI] [DATA SAFE] lpa = 201632 +[47295.910217] bdbm: [EUNJI] [DATA SAFE] lpa = 201633 +[47295.910690] bdbm: [EUNJI] [DATA SAFE] lpa = 201634 +[47295.911166] bdbm: [EUNJI] [DATA SAFE] lpa = 201635 +[47295.911640] bdbm: [EUNJI] [DATA SAFE] lpa = 201636 +[47295.912115] bdbm: [EUNJI] [DATA SAFE] lpa = 201637 +[47295.912589] bdbm: [EUNJI] [DATA SAFE] lpa = 201638 +[47295.913063] bdbm: [EUNJI] [DATA SAFE] lpa = 201639 +[47295.913535] bdbm: [EUNJI] [DATA SAFE] lpa = 201640 +[47295.914010] bdbm: [EUNJI] [DATA SAFE] lpa = 201641 +[47295.914484] bdbm: [EUNJI] [DATA SAFE] lpa = 201642 +[47295.914959] bdbm: [EUNJI] [DATA SAFE] lpa = 201643 +[47295.915433] bdbm: [EUNJI] [DATA SAFE] lpa = 201644 +[47295.915909] bdbm: [EUNJI] [DATA SAFE] lpa = 201645 +[47295.916383] bdbm: [EUNJI] [DATA SAFE] lpa = 201646 +[47295.916856] bdbm: [EUNJI] [DATA SAFE] lpa = 201647 +[47295.917330] bdbm: [EUNJI] [DATA SAFE] lpa = 201648 +[47295.917806] bdbm: [EUNJI] [DATA SAFE] lpa = 201649 +[47295.918283] bdbm: [EUNJI] [DATA SAFE] lpa = 201650 +[47295.918760] bdbm: [EUNJI] [DATA SAFE] lpa = 201651 +[47295.919235] bdbm: [EUNJI] [DATA SAFE] lpa = 201652 +[47295.919710] bdbm: [EUNJI] [DATA SAFE] lpa = 201653 +[47295.920184] bdbm: [EUNJI] [DATA SAFE] lpa = 201654 +[47295.920658] bdbm: [EUNJI] [DATA SAFE] lpa = 201655 +[47295.921131] bdbm: [EUNJI] [DATA SAFE] lpa = 201656 +[47295.921609] bdbm: [EUNJI] [DATA SAFE] lpa = 201657 +[47295.922083] bdbm: [EUNJI] [DATA SAFE] lpa = 201658 +[47295.922556] bdbm: [EUNJI] [DATA SAFE] lpa = 201659 +[47295.923029] bdbm: [EUNJI] [DATA SAFE] lpa = 201660 +[47295.923503] bdbm: [EUNJI] [DATA SAFE] lpa = 201661 +[47295.923976] bdbm: [EUNJI] [DATA SAFE] lpa = 201662 +[47295.924450] bdbm: [EUNJI] [DATA SAFE] lpa = 201663 +[47295.924922] bdbm: [EUNJI] [DATA SAFE] lpa = 201664 +[47295.925397] bdbm: [EUNJI] [DATA SAFE] lpa = 201665 +[47295.925869] bdbm: [EUNJI] [DATA SAFE] lpa = 201666 +[47295.926342] bdbm: [EUNJI] [DATA SAFE] lpa = 201667 +[47295.926816] bdbm: [EUNJI] [DATA SAFE] lpa = 201668 +[47295.927289] bdbm: [EUNJI] [DATA SAFE] lpa = 201669 +[47295.927764] bdbm: [EUNJI] [DATA SAFE] lpa = 201670 +[47295.928237] bdbm: [EUNJI] [DATA SAFE] lpa = 201671 +[47295.928711] bdbm: [EUNJI] [DATA SAFE] lpa = 201672 +[47295.929184] bdbm: [EUNJI] [DATA SAFE] lpa = 201673 +[47295.929660] bdbm: [EUNJI] [DATA SAFE] lpa = 201674 +[47295.930132] bdbm: [EUNJI] [DATA SAFE] lpa = 201675 +[47295.930606] bdbm: [EUNJI] [DATA SAFE] lpa = 201676 +[47295.931082] bdbm: [EUNJI] [DATA SAFE] lpa = 201677 +[47295.931552] bdbm: [EUNJI] [DATA SAFE] lpa = 201678 +[47295.932026] bdbm: [EUNJI] [DATA SAFE] lpa = 201679 +[47295.932500] bdbm: [EUNJI] [DATA SAFE] lpa = 201680 +[47295.932976] bdbm: [EUNJI] [DATA SAFE] lpa = 201681 +[47295.933448] bdbm: [EUNJI] [DATA SAFE] lpa = 201682 +[47295.933925] bdbm: [EUNJI] [DATA SAFE] lpa = 201683 +[47295.934399] bdbm: [EUNJI] [DATA SAFE] lpa = 201684 +[47295.934873] bdbm: [EUNJI] [DATA SAFE] lpa = 201685 +[47295.935347] bdbm: [EUNJI] [DATA SAFE] lpa = 201686 +[47295.935820] bdbm: [EUNJI] [DATA SAFE] lpa = 201687 +[47295.936292] bdbm: [EUNJI] [DATA SAFE] lpa = 201688 +[47295.936766] bdbm: [EUNJI] [DATA SAFE] lpa = 201689 +[47295.937239] bdbm: [EUNJI] [DATA SAFE] lpa = 201690 +[47295.937712] bdbm: [EUNJI] [DATA SAFE] lpa = 201691 +[47295.938198] bdbm: [EUNJI] [DATA SAFE] lpa = 201692 +[47295.938672] bdbm: [EUNJI] [DATA SAFE] lpa = 201693 +[47295.939145] bdbm: [EUNJI] [DATA SAFE] lpa = 201694 +[47295.939619] bdbm: [EUNJI] [DATA SAFE] lpa = 201695 +[47295.940091] bdbm: [EUNJI] [DATA SAFE] lpa = 201696 +[47295.940565] bdbm: [EUNJI] [DATA SAFE] lpa = 201697 +[47295.941040] bdbm: [EUNJI] [DATA SAFE] lpa = 201698 +[47295.941513] bdbm: [EUNJI] [DATA SAFE] lpa = 201699 +[47295.941988] bdbm: [EUNJI] [DATA SAFE] lpa = 201700 +[47295.942461] bdbm: [EUNJI] [DATA SAFE] lpa = 201701 +[47295.942935] bdbm: [EUNJI] [DATA SAFE] lpa = 201702 +[47295.943409] bdbm: [EUNJI] [DATA SAFE] lpa = 201703 +[47295.943884] bdbm: [EUNJI] [DATA SAFE] lpa = 201704 +[47295.944358] bdbm: [EUNJI] [DATA SAFE] lpa = 201705 +[47295.944833] bdbm: [EUNJI] [DATA SAFE] lpa = 201706 +[47295.945312] bdbm: [EUNJI] [DATA SAFE] lpa = 201707 +[47295.945788] bdbm: [EUNJI] [DATA SAFE] lpa = 201708 +[47295.946262] bdbm: [EUNJI] [DATA SAFE] lpa = 201709 +[47295.946736] bdbm: [EUNJI] [DATA SAFE] lpa = 201710 +[47295.947210] bdbm: [EUNJI] [DATA SAFE] lpa = 201711 +[47295.947684] bdbm: [EUNJI] [DATA SAFE] lpa = 201712 +[47295.948158] bdbm: [EUNJI] [DATA SAFE] lpa = 201713 +[47295.948632] bdbm: [EUNJI] [DATA SAFE] lpa = 201714 +[47295.949106] bdbm: [EUNJI] [DATA SAFE] lpa = 201715 +[47295.949624] bdbm: [EUNJI] [DATA SAFE] lpa = 201716 +[47295.950121] bdbm: [EUNJI] [DATA SAFE] lpa = 201717 +[47295.950616] bdbm: [EUNJI] [DATA SAFE] lpa = 201718 +[47295.951089] bdbm: [EUNJI] [DATA SAFE] lpa = 201719 +[47295.951563] bdbm: [EUNJI] [DATA SAFE] lpa = 201720 +[47295.952080] bdbm: [EUNJI] [DATA SAFE] lpa = 201721 +[47295.952581] bdbm: [EUNJI] [DATA SAFE] lpa = 201722 +[47295.953053] bdbm: [EUNJI] [DATA SAFE] lpa = 201723 +[47295.953524] bdbm: [EUNJI] [DATA SAFE] lpa = 201724 +[47295.954027] bdbm: [EUNJI] [DATA SAFE] lpa = 201725 +[47295.954549] bdbm: [EUNJI] [DATA SAFE] lpa = 201726 +[47295.955055] bdbm: [EUNJI] [DATA SAFE] lpa = 201727 +[47295.955578] bdbm: [EUNJI] [DATA SAFE] lpa = 201728 +[47295.956083] bdbm: [EUNJI] [DATA SAFE] lpa = 201729 +[47295.956597] bdbm: [EUNJI] [DATA SAFE] lpa = 201730 +[47295.957100] bdbm: [EUNJI] [DATA SAFE] lpa = 201731 +[47295.957574] bdbm: [EUNJI] [DATA SAFE] lpa = 201732 +[47295.958088] bdbm: [EUNJI] [DATA SAFE] lpa = 201733 +[47295.958596] bdbm: [EUNJI] [DATA SAFE] lpa = 201734 +[47295.959117] bdbm: [EUNJI] [DATA SAFE] lpa = 201735 +[47295.959627] bdbm: [EUNJI] [DATA SAFE] lpa = 201736 +[47295.960149] bdbm: [EUNJI] [DATA SAFE] lpa = 201737 +[47295.960655] bdbm: [EUNJI] [DATA SAFE] lpa = 201738 +[47295.961169] bdbm: [EUNJI] [DATA SAFE] lpa = 201739 +[47295.961690] bdbm: [EUNJI] [DATA SAFE] lpa = 201740 +[47295.962210] bdbm: [EUNJI] [DATA SAFE] lpa = 201741 +[47295.962718] bdbm: [EUNJI] [DATA SAFE] lpa = 201742 +[47295.963237] bdbm: [EUNJI] [DATA SAFE] lpa = 201743 +[47295.963745] bdbm: [EUNJI] [DATA SAFE] lpa = 201744 +[47295.964270] bdbm: [EUNJI] [DATA SAFE] lpa = 201745 +[47295.964774] bdbm: [EUNJI] [DATA SAFE] lpa = 201746 +[47295.965281] bdbm: [EUNJI] [DATA SAFE] lpa = 201747 +[47295.965786] bdbm: [EUNJI] [DATA SAFE] lpa = 201748 +[47295.966288] bdbm: [EUNJI] [DATA SAFE] lpa = 201749 +[47295.966790] bdbm: [EUNJI] [DATA SAFE] lpa = 201750 +[47295.967314] bdbm: [EUNJI] [DATA SAFE] lpa = 201751 +[47295.967838] bdbm: [EUNJI] [DATA SAFE] lpa = 201752 +[47295.968356] bdbm: [EUNJI] [DATA SAFE] lpa = 201753 +[47295.968874] bdbm: [EUNJI] [DATA SAFE] lpa = 201754 +[47295.969378] bdbm: [EUNJI] [DATA SAFE] lpa = 201755 +[47295.969887] bdbm: [EUNJI] [DATA SAFE] lpa = 201756 +[47295.970407] bdbm: [EUNJI] [DATA SAFE] lpa = 201757 +[47295.970914] bdbm: [EUNJI] [DATA SAFE] lpa = 201758 +[47295.971433] bdbm: [EUNJI] [DATA SAFE] lpa = 201759 +[47295.971958] bdbm: [EUNJI] [DATA SAFE] lpa = 201760 +[47295.972481] bdbm: [EUNJI] [DATA SAFE] lpa = 201761 +[47295.972983] bdbm: [EUNJI] [DATA SAFE] lpa = 201762 +[47295.973505] bdbm: [EUNJI] [DATA SAFE] lpa = 201763 +[47295.974020] bdbm: [EUNJI] [DATA SAFE] lpa = 201764 +[47295.974544] bdbm: [EUNJI] [DATA SAFE] lpa = 201765 +[47295.975054] bdbm: [EUNJI] [DATA SAFE] lpa = 201766 +[47295.975573] bdbm: [EUNJI] [DATA SAFE] lpa = 201767 +[47295.976123] bdbm: [EUNJI] [DATA SAFE] lpa = 201768 +[47295.976674] bdbm: [EUNJI] [DATA SAFE] lpa = 201769 +[47295.977224] bdbm: [EUNJI] [DATA SAFE] lpa = 201770 +[47295.977757] bdbm: [EUNJI] [DATA SAFE] lpa = 201771 +[47295.978296] bdbm: [EUNJI] [DATA SAFE] lpa = 201772 +[47295.978770] bdbm: [EUNJI] [DATA SAFE] lpa = 201773 +[47295.979241] bdbm: [EUNJI] [DATA SAFE] lpa = 201774 +[47295.979741] bdbm: [EUNJI] [DATA SAFE] lpa = 201775 +[47295.980237] bdbm: [EUNJI] [DATA SAFE] lpa = 201776 +[47295.980743] bdbm: [EUNJI] [DATA SAFE] lpa = 201777 +[47295.981234] bdbm: [EUNJI] [DATA SAFE] lpa = 201778 +[47295.981710] bdbm: [EUNJI] [DATA SAFE] lpa = 201779 +[47295.982217] bdbm: [EUNJI] [DATA SAFE] lpa = 201780 +[47295.982729] bdbm: [EUNJI] [DATA SAFE] lpa = 201781 +[47295.983254] bdbm: [EUNJI] [DATA SAFE] lpa = 201782 +[47295.983767] bdbm: [EUNJI] [DATA SAFE] lpa = 201783 +[47295.984290] bdbm: [EUNJI] [DATA SAFE] lpa = 201784 +[47295.984798] bdbm: [EUNJI] [DATA SAFE] lpa = 201785 +[47295.985295] bdbm: [EUNJI] [DATA SAFE] lpa = 201786 +[47295.985768] bdbm: [EUNJI] [DATA SAFE] lpa = 201787 +[47295.986271] bdbm: [EUNJI] [DATA SAFE] lpa = 201788 +[47295.986777] bdbm: [EUNJI] [DATA SAFE] lpa = 201789 +[47295.987296] bdbm: [EUNJI] [DATA SAFE] lpa = 201790 +[47295.987820] bdbm: [EUNJI] [DATA SAFE] lpa = 201791 +[47295.988308] bdbm: [EUNJI] [DATA SAFE] lpa = 201792 +[47295.988784] bdbm: [EUNJI] [DATA SAFE] lpa = 201793 +[47295.989255] bdbm: [EUNJI] [DATA SAFE] lpa = 201794 +[47295.989732] bdbm: [EUNJI] [DATA SAFE] lpa = 201795 +[47295.990206] bdbm: [EUNJI] [DATA SAFE] lpa = 201796 +[47295.990678] bdbm: [EUNJI] [DATA SAFE] lpa = 201797 +[47295.991152] bdbm: [EUNJI] [DATA SAFE] lpa = 201798 +[47295.991625] bdbm: [EUNJI] [DATA SAFE] lpa = 201799 +[47295.992100] bdbm: [EUNJI] [DATA SAFE] lpa = 201800 +[47295.992577] bdbm: [EUNJI] [DATA SAFE] lpa = 201801 +[47295.993050] bdbm: [EUNJI] [DATA SAFE] lpa = 201802 +[47295.993524] bdbm: [EUNJI] [DATA SAFE] lpa = 201803 +[47295.993999] bdbm: [EUNJI] [DATA SAFE] lpa = 201804 +[47295.994472] bdbm: [EUNJI] [DATA SAFE] lpa = 201805 +[47295.994948] bdbm: [EUNJI] [DATA SAFE] lpa = 201806 +[47295.995421] bdbm: [EUNJI] [DATA SAFE] lpa = 201807 +[47295.995892] bdbm: [EUNJI] [DATA SAFE] lpa = 201808 +[47295.996365] bdbm: [EUNJI] [DATA SAFE] lpa = 201809 +[47295.996838] bdbm: [EUNJI] [DATA SAFE] lpa = 201810 +[47295.997311] bdbm: [EUNJI] [DATA SAFE] lpa = 201811 +[47295.997787] bdbm: [EUNJI] [DATA SAFE] lpa = 201812 +[47295.998265] bdbm: [EUNJI] [DATA SAFE] lpa = 201813 +[47295.998738] bdbm: [EUNJI] [DATA SAFE] lpa = 201814 +[47295.999211] bdbm: [EUNJI] [DATA SAFE] lpa = 201815 +[47295.999686] bdbm: [EUNJI] [DATA SAFE] lpa = 201816 +[47296.000165] bdbm: [EUNJI] [DATA SAFE] lpa = 201817 +[47296.000637] bdbm: [EUNJI] [DATA SAFE] lpa = 201818 +[47296.001111] bdbm: [EUNJI] [DATA SAFE] lpa = 201819 +[47296.001595] bdbm: [EUNJI] [DATA SAFE] lpa = 201820 +[47296.002076] bdbm: [EUNJI] [DATA SAFE] lpa = 201821 +[47296.002550] bdbm: [EUNJI] [DATA SAFE] lpa = 201822 +[47296.003022] bdbm: [EUNJI] [DATA SAFE] lpa = 201823 +[47296.003497] bdbm: [EUNJI] [DATA SAFE] lpa = 201824 +[47296.003972] bdbm: [EUNJI] [DATA SAFE] lpa = 201825 +[47296.004447] bdbm: [EUNJI] [DATA SAFE] lpa = 201826 +[47296.004923] bdbm: [EUNJI] [DATA SAFE] lpa = 201827 +[47296.005397] bdbm: [EUNJI] [DATA SAFE] lpa = 201828 +[47296.005875] bdbm: [EUNJI] [DATA SAFE] lpa = 201829 +[47296.006350] bdbm: [EUNJI] [DATA SAFE] lpa = 201830 +[47296.006826] bdbm: [EUNJI] [DATA SAFE] lpa = 201831 +[47296.007301] bdbm: [EUNJI] [DATA SAFE] lpa = 201832 +[47296.007779] bdbm: [EUNJI] [DATA SAFE] lpa = 201833 +[47296.008253] bdbm: [EUNJI] [DATA SAFE] lpa = 201834 +[47296.008728] bdbm: [EUNJI] [DATA SAFE] lpa = 201835 +[47296.009201] bdbm: [EUNJI] [DATA SAFE] lpa = 201836 +[47296.009678] bdbm: [EUNJI] [DATA SAFE] lpa = 201837 +[47296.010156] bdbm: [EUNJI] [DATA SAFE] lpa = 201838 +[47296.010631] bdbm: [EUNJI] [DATA SAFE] lpa = 201839 +[47296.011106] bdbm: [EUNJI] [DATA SAFE] lpa = 201840 +[47296.011581] bdbm: [EUNJI] [DATA SAFE] lpa = 201841 +[47296.012054] bdbm: [EUNJI] [DATA SAFE] lpa = 201842 +[47296.012530] bdbm: [EUNJI] [DATA SAFE] lpa = 201843 +[47296.013005] bdbm: [EUNJI] [DATA SAFE] lpa = 201844 +[47296.013479] bdbm: [EUNJI] [DATA SAFE] lpa = 201845 +[47296.013957] bdbm: [EUNJI] [DATA SAFE] lpa = 201846 +[47296.014432] bdbm: [EUNJI] [DATA SAFE] lpa = 201847 +[47296.014907] bdbm: [EUNJI] [DATA SAFE] lpa = 201848 +[47296.015382] bdbm: [EUNJI] [DATA SAFE] lpa = 201849 +[47296.015856] bdbm: [EUNJI] [DATA SAFE] lpa = 201850 +[47296.016326] bdbm: [EUNJI] [DATA SAFE] lpa = 201851 +[47296.016801] bdbm: [EUNJI] [DATA SAFE] lpa = 201852 +[47296.017274] bdbm: [EUNJI] [DATA SAFE] lpa = 201853 +[47296.017749] bdbm: [EUNJI] [DATA SAFE] lpa = 201854 +[47296.018237] bdbm: [EUNJI] [DATA SAFE] lpa = 201855 +[47296.018711] bdbm: [EUNJI] [DATA SAFE] lpa = 201856 +[47296.019186] bdbm: [EUNJI] [DATA SAFE] lpa = 201857 +[47296.019660] bdbm: [EUNJI] [DATA SAFE] lpa = 201858 +[47296.020133] bdbm: [EUNJI] [DATA SAFE] lpa = 201859 +[47296.020608] bdbm: [EUNJI] [DATA SAFE] lpa = 201860 +[47296.021083] bdbm: [EUNJI] [DATA SAFE] lpa = 201861 +[47296.021557] bdbm: [EUNJI] [DATA SAFE] lpa = 201862 +[47296.022033] bdbm: [EUNJI] [DATA SAFE] lpa = 201863 +[47296.022504] bdbm: [EUNJI] [DATA SAFE] lpa = 201864 +[47296.022978] bdbm: [EUNJI] [DATA SAFE] lpa = 201865 +[47296.023452] bdbm: [EUNJI] [DATA SAFE] lpa = 201866 +[47296.023925] bdbm: [EUNJI] [DATA SAFE] lpa = 201867 +[47296.024399] bdbm: [EUNJI] [DATA SAFE] lpa = 201868 +[47296.024874] bdbm: [EUNJI] [DATA SAFE] lpa = 201869 +[47296.025349] bdbm: [EUNJI] [DATA SAFE] lpa = 201870 +[47296.025824] bdbm: [EUNJI] [DATA SAFE] lpa = 201871 +[47296.026299] bdbm: [EUNJI] [DATA SAFE] lpa = 201872 +[47296.026774] bdbm: [EUNJI] [DATA SAFE] lpa = 201873 +[47296.027250] bdbm: [EUNJI] [DATA SAFE] lpa = 201874 +[47296.027724] bdbm: [EUNJI] [DATA SAFE] lpa = 201875 +[47296.028197] bdbm: [EUNJI] [DATA SAFE] lpa = 201876 +[47296.028672] bdbm: [EUNJI] [DATA SAFE] lpa = 201877 +[47296.029145] bdbm: [EUNJI] [DATA SAFE] lpa = 201878 +[47296.029625] bdbm: [EUNJI] [DATA SAFE] lpa = 201879 +[47296.030100] bdbm: [EUNJI] [DATA SAFE] lpa = 201880 +[47296.030575] bdbm: [EUNJI] [DATA SAFE] lpa = 201881 +[47296.031047] bdbm: [EUNJI] [DATA SAFE] lpa = 201882 +[47296.031520] bdbm: [EUNJI] [DATA SAFE] lpa = 201883 +[47296.031994] bdbm: [EUNJI] [DATA SAFE] lpa = 201884 +[47296.032470] bdbm: [EUNJI] [DATA SAFE] lpa = 201885 +[47296.032942] bdbm: [EUNJI] [DATA SAFE] lpa = 201886 +[47296.033415] bdbm: [EUNJI] [DATA SAFE] lpa = 201887 +[47296.033888] bdbm: [EUNJI] [DATA SAFE] lpa = 201888 +[47296.034365] bdbm: [EUNJI] [DATA SAFE] lpa = 201889 +[47296.034839] bdbm: [EUNJI] [DATA SAFE] lpa = 201890 +[47296.035313] bdbm: [EUNJI] [DATA SAFE] lpa = 201891 +[47296.035787] bdbm: [EUNJI] [DATA SAFE] lpa = 201892 +[47296.036262] bdbm: [EUNJI] [DATA SAFE] lpa = 201893 +[47296.036736] bdbm: [EUNJI] [DATA SAFE] lpa = 201894 +[47296.037211] bdbm: [EUNJI] [DATA SAFE] lpa = 201895 +[47296.037685] bdbm: [EUNJI] [DATA SAFE] lpa = 201896 +[47296.038169] bdbm: [EUNJI] [DATA SAFE] lpa = 201897 +[47296.038644] bdbm: [EUNJI] [DATA SAFE] lpa = 201898 +[47296.039119] bdbm: [EUNJI] [DATA SAFE] lpa = 201899 +[47296.039597] bdbm: [EUNJI] [DATA SAFE] lpa = 201900 +[47296.040071] bdbm: [EUNJI] [DATA SAFE] lpa = 201901 +[47296.040544] bdbm: [EUNJI] [DATA SAFE] lpa = 201902 +[47296.041023] bdbm: [EUNJI] [DATA SAFE] lpa = 201903 +[47296.041498] bdbm: [EUNJI] [DATA SAFE] lpa = 201904 +[47296.041974] bdbm: [EUNJI] [DATA SAFE] lpa = 201905 +[47296.042453] bdbm: [EUNJI] [DATA SAFE] lpa = 201906 +[47296.042929] bdbm: [EUNJI] [DATA SAFE] lpa = 201907 +[47296.043406] bdbm: [EUNJI] [DATA SAFE] lpa = 201908 +[47296.043883] bdbm: [EUNJI] [DATA SAFE] lpa = 201909 +[47296.044361] bdbm: [EUNJI] [DATA SAFE] lpa = 201910 +[47296.044835] bdbm: [EUNJI] [DATA SAFE] lpa = 201911 +[47296.045311] bdbm: [EUNJI] [DATA SAFE] lpa = 201912 +[47296.045790] bdbm: [EUNJI] [DATA SAFE] lpa = 201913 +[47296.046263] bdbm: [EUNJI] [DATA SAFE] lpa = 201914 +[47296.046737] bdbm: [EUNJI] [DATA SAFE] lpa = 201915 +[47296.047208] bdbm: [EUNJI] [DATA SAFE] lpa = 201916 +[47296.047679] bdbm: [EUNJI] [DATA SAFE] lpa = 201917 +[47296.048153] bdbm: [EUNJI] [DATA SAFE] lpa = 201918 +[47296.048623] bdbm: [EUNJI] [DATA SAFE] lpa = 201919 +[47296.049099] bdbm: [EUNJI] [DATA SAFE] lpa = 201920 +[47296.049575] bdbm: [EUNJI] [DATA SAFE] lpa = 201921 +[47296.050058] bdbm: [EUNJI] [DATA SAFE] lpa = 201922 +[47296.050534] bdbm: [EUNJI] [DATA SAFE] lpa = 201923 +[47296.051004] bdbm: [EUNJI] [DATA SAFE] lpa = 201924 +[47296.051475] bdbm: [EUNJI] [DATA SAFE] lpa = 201925 +[47296.051947] bdbm: [EUNJI] [DATA SAFE] lpa = 201926 +[47296.052422] bdbm: [EUNJI] [DATA SAFE] lpa = 201927 +[47296.052893] bdbm: [EUNJI] [DATA SAFE] lpa = 201928 +[47296.053371] bdbm: [EUNJI] [DATA SAFE] lpa = 201929 +[47296.053842] bdbm: [EUNJI] [DATA SAFE] lpa = 201930 +[47296.054317] bdbm: [EUNJI] [DATA SAFE] lpa = 201931 +[47296.054790] bdbm: [EUNJI] [DATA SAFE] lpa = 201932 +[47296.055263] bdbm: [EUNJI] [DATA SAFE] lpa = 201933 +[47296.055738] bdbm: [EUNJI] [DATA SAFE] lpa = 201934 +[47296.056211] bdbm: [EUNJI] [DATA SAFE] lpa = 201935 +[47296.056684] bdbm: [EUNJI] [DATA SAFE] lpa = 201936 +[47296.057159] bdbm: [EUNJI] [DATA SAFE] lpa = 201937 +[47296.057636] bdbm: [EUNJI] [DATA SAFE] lpa = 201938 +[47296.058126] bdbm: [EUNJI] [DATA SAFE] lpa = 201939 +[47296.058597] bdbm: [EUNJI] [DATA SAFE] lpa = 201940 +[47296.059071] bdbm: [EUNJI] [DATA SAFE] lpa = 201941 +[47296.059547] bdbm: [EUNJI] [DATA SAFE] lpa = 201942 +[47296.060018] bdbm: [EUNJI] [DATA SAFE] lpa = 201943 +[47296.060495] bdbm: [EUNJI] [DATA SAFE] lpa = 201944 +[47296.060970] bdbm: [EUNJI] [DATA SAFE] lpa = 201945 +[47296.061445] bdbm: [EUNJI] [DATA SAFE] lpa = 201946 +[47296.061921] bdbm: [EUNJI] [DATA SAFE] lpa = 201947 +[47296.062396] bdbm: [EUNJI] [DATA SAFE] lpa = 201948 +[47296.062870] bdbm: [EUNJI] [DATA SAFE] lpa = 201949 +[47296.063344] bdbm: [EUNJI] [DATA SAFE] lpa = 201950 +[47296.063818] bdbm: [EUNJI] [DATA SAFE] lpa = 201951 +[47296.064291] bdbm: [EUNJI] [DATA SAFE] lpa = 201952 +[47296.064766] bdbm: [EUNJI] [DATA SAFE] lpa = 201953 +[47296.065239] bdbm: [EUNJI] [DATA SAFE] lpa = 201954 +[47296.065715] bdbm: [EUNJI] [DATA SAFE] lpa = 201955 +[47296.066192] bdbm: [EUNJI] [DATA SAFE] lpa = 201956 +[47296.066666] bdbm: [EUNJI] [DATA SAFE] lpa = 201957 +[47296.067140] bdbm: [EUNJI] [DATA SAFE] lpa = 201958 +[47296.067613] bdbm: [EUNJI] [DATA SAFE] lpa = 201959 +[47296.068089] bdbm: [EUNJI] [DATA SAFE] lpa = 201960 +[47296.068566] bdbm: [EUNJI] [DATA SAFE] lpa = 201961 +[47296.069040] bdbm: [EUNJI] [DATA SAFE] lpa = 201962 +[47296.069515] bdbm: [EUNJI] [DATA SAFE] lpa = 201963 +[47296.069993] bdbm: [EUNJI] [DATA SAFE] lpa = 201964 +[47296.070468] bdbm: [EUNJI] [DATA SAFE] lpa = 201965 +[47296.070942] bdbm: [EUNJI] [DATA SAFE] lpa = 201966 +[47296.071417] bdbm: [EUNJI] [DATA SAFE] lpa = 201967 +[47296.071893] bdbm: [EUNJI] [DATA SAFE] lpa = 201968 +[47296.072367] bdbm: [EUNJI] [DATA SAFE] lpa = 201969 +[47296.072843] bdbm: [EUNJI] [DATA SAFE] lpa = 201970 +[47296.073319] bdbm: [EUNJI] [DATA SAFE] lpa = 201971 +[47296.073798] bdbm: [EUNJI] [DATA SAFE] lpa = 201972 +[47296.074273] bdbm: [EUNJI] [DATA SAFE] lpa = 201973 +[47296.074750] bdbm: [EUNJI] [DATA SAFE] lpa = 201974 +[47296.075224] bdbm: [EUNJI] [DATA SAFE] lpa = 201975 +[47296.075699] bdbm: [EUNJI] [DATA SAFE] lpa = 201976 +[47296.076172] bdbm: [EUNJI] [DATA SAFE] lpa = 201977 +[47296.076647] bdbm: [EUNJI] [DATA SAFE] lpa = 201978 +[47296.077121] bdbm: [EUNJI] [DATA SAFE] lpa = 201979 +[47296.077627] bdbm: [EUNJI] [DATA SAFE] lpa = 201980 +[47296.078099] bdbm: [EUNJI] [DATA SAFE] lpa = 201981 +[47296.078577] bdbm: [EUNJI] [DATA SAFE] lpa = 201982 +[47296.079045] bdbm: [EUNJI] [DATA SAFE] lpa = 201983 +[47296.079514] bdbm: [EUNJI] [DATA SAFE] lpa = 201984 +[47296.080011] bdbm: [EUNJI] [DATA SAFE] lpa = 201985 +[47296.080510] bdbm: [EUNJI] [DATA SAFE] lpa = 201986 +[47296.081010] bdbm: [EUNJI] [DATA SAFE] lpa = 201987 +[47296.081483] bdbm: [EUNJI] [DATA SAFE] lpa = 201988 +[47296.081983] bdbm: [EUNJI] [DATA SAFE] lpa = 201989 +[47296.082476] bdbm: [EUNJI] [DATA SAFE] lpa = 201990 +[47296.082948] bdbm: [EUNJI] [DATA SAFE] lpa = 201991 +[47296.083431] bdbm: [EUNJI] [DATA SAFE] lpa = 201992 +[47296.083932] bdbm: [EUNJI] [DATA SAFE] lpa = 201993 +[47296.084435] bdbm: [EUNJI] [DATA SAFE] lpa = 201994 +[47296.084909] bdbm: [EUNJI] [DATA SAFE] lpa = 201995 +[47296.085379] bdbm: [EUNJI] [DATA SAFE] lpa = 201996 +[47296.085882] bdbm: [EUNJI] [DATA SAFE] lpa = 201997 +[47296.086375] bdbm: [EUNJI] [DATA SAFE] lpa = 201998 +[47296.086884] bdbm: [EUNJI] [DATA SAFE] lpa = 201999 +[47296.087357] bdbm: [EUNJI] [DATA SAFE] lpa = 202000 +[47296.087838] bdbm: [EUNJI] [DATA SAFE] lpa = 202001 +[47296.088310] bdbm: [EUNJI] [DATA SAFE] lpa = 202002 +[47296.088786] bdbm: [EUNJI] [DATA SAFE] lpa = 202003 +[47296.089261] bdbm: [EUNJI] [DATA SAFE] lpa = 202004 +[47296.089740] bdbm: [EUNJI] [DATA SAFE] lpa = 202005 +[47296.090214] bdbm: [EUNJI] [DATA SAFE] lpa = 202006 +[47296.090692] bdbm: [EUNJI] [DATA SAFE] lpa = 202007 +[47296.091168] bdbm: [EUNJI] [DATA SAFE] lpa = 202008 +[47296.091644] bdbm: [EUNJI] [DATA SAFE] lpa = 202009 +[47296.092121] bdbm: [EUNJI] [DATA SAFE] lpa = 202010 +[47296.092598] bdbm: [EUNJI] [DATA SAFE] lpa = 202011 +[47296.093076] bdbm: [EUNJI] [DATA SAFE] lpa = 202012 +[47296.093548] bdbm: [EUNJI] [DATA SAFE] lpa = 202013 +[47296.094022] bdbm: [EUNJI] [DATA SAFE] lpa = 202014 +[47296.094499] bdbm: [EUNJI] [DATA SAFE] lpa = 202015 +[47296.094975] bdbm: [EUNJI] [DATA SAFE] lpa = 202016 +[47296.095452] bdbm: [EUNJI] [DATA SAFE] lpa = 202017 +[47296.095924] bdbm: [EUNJI] [DATA SAFE] lpa = 202018 +[47296.096400] bdbm: [EUNJI] [DATA SAFE] lpa = 202019 +[47296.096878] bdbm: [EUNJI] [DATA SAFE] lpa = 202020 +[47296.097354] bdbm: [EUNJI] [DATA SAFE] lpa = 202021 +[47296.097832] bdbm: [EUNJI] [DATA SAFE] lpa = 202022 +[47296.098309] bdbm: [EUNJI] [DATA SAFE] lpa = 202023 +[47296.098784] bdbm: [EUNJI] [DATA SAFE] lpa = 202024 +[47296.099260] bdbm: [EUNJI] [DATA SAFE] lpa = 202025 +[47296.099734] bdbm: [EUNJI] [DATA SAFE] lpa = 202026 +[47296.100210] bdbm: [EUNJI] [DATA SAFE] lpa = 202027 +[47296.100689] bdbm: [EUNJI] [DATA SAFE] lpa = 202028 +[47296.101165] bdbm: [EUNJI] [DATA SAFE] lpa = 202029 +[47296.101639] bdbm: [EUNJI] [DATA SAFE] lpa = 202030 +[47296.102114] bdbm: [EUNJI] [DATA SAFE] lpa = 202031 +[47296.102589] bdbm: [EUNJI] [DATA SAFE] lpa = 202032 +[47296.103064] bdbm: [EUNJI] [DATA SAFE] lpa = 202033 +[47296.103540] bdbm: [EUNJI] [DATA SAFE] lpa = 202034 +[47296.104016] bdbm: [EUNJI] [DATA SAFE] lpa = 202035 +[47296.104493] bdbm: [EUNJI] [DATA SAFE] lpa = 202036 +[47296.104967] bdbm: [EUNJI] [DATA SAFE] lpa = 202037 +[47296.105442] bdbm: [EUNJI] [DATA SAFE] lpa = 202038 +[47296.105920] bdbm: [EUNJI] [DATA SAFE] lpa = 202039 +[47296.106395] bdbm: [EUNJI] [DATA SAFE] lpa = 202040 +[47296.106871] bdbm: [EUNJI] [DATA SAFE] lpa = 202041 +[47296.107345] bdbm: [EUNJI] [DATA SAFE] lpa = 202042 +[47296.107819] bdbm: [EUNJI] [DATA SAFE] lpa = 202043 +[47296.108294] bdbm: [EUNJI] [DATA SAFE] lpa = 202044 +[47296.108768] bdbm: [EUNJI] [DATA SAFE] lpa = 202045 +[47296.109243] bdbm: [EUNJI] [DATA SAFE] lpa = 202046 +[47296.109714] bdbm: [EUNJI] [DATA SAFE] lpa = 202047 +[47296.110200] bdbm: [EUNJI] [DATA SAFE] lpa = 202048 +[47296.110675] bdbm: [EUNJI] [DATA SAFE] lpa = 202049 +[47296.111149] bdbm: [EUNJI] [DATA SAFE] lpa = 202050 +[47296.111624] bdbm: [EUNJI] [DATA SAFE] lpa = 202051 +[47296.112097] bdbm: [EUNJI] [DATA SAFE] lpa = 202052 +[47296.112574] bdbm: [EUNJI] [DATA SAFE] lpa = 202053 +[47296.113048] bdbm: [EUNJI] [DATA SAFE] lpa = 202054 +[47296.113523] bdbm: [EUNJI] [DATA SAFE] lpa = 202055 +[47296.113997] bdbm: [EUNJI] [DATA SAFE] lpa = 202056 +[47296.114472] bdbm: [EUNJI] [DATA SAFE] lpa = 202057 +[47296.114947] bdbm: [EUNJI] [DATA SAFE] lpa = 202058 +[47296.115421] bdbm: [EUNJI] [DATA SAFE] lpa = 202059 +[47296.115895] bdbm: [EUNJI] [DATA SAFE] lpa = 202060 +[47296.116370] bdbm: [EUNJI] [DATA SAFE] lpa = 202061 +[47296.116845] bdbm: [EUNJI] [DATA SAFE] lpa = 202062 +[47296.117319] bdbm: [EUNJI] [DATA SAFE] lpa = 202063 +[47296.117794] bdbm: [EUNJI] [DATA SAFE] lpa = 202064 +[47296.118269] bdbm: [EUNJI] [DATA SAFE] lpa = 202065 +[47296.118743] bdbm: [EUNJI] [DATA SAFE] lpa = 202066 +[47296.119217] bdbm: [EUNJI] [DATA SAFE] lpa = 202067 +[47296.119693] bdbm: [EUNJI] [DATA SAFE] lpa = 202068 +[47296.120168] bdbm: [EUNJI] [DATA SAFE] lpa = 202069 +[47296.120644] bdbm: [EUNJI] [DATA SAFE] lpa = 202070 +[47296.121120] bdbm: [EUNJI] [DATA SAFE] lpa = 202071 +[47296.121617] bdbm: [EUNJI] [DATA SAFE] lpa = 202072 +[47296.122103] bdbm: [EUNJI] [DATA SAFE] lpa = 202073 +[47296.122577] bdbm: [EUNJI] [DATA SAFE] lpa = 202074 +[47296.123052] bdbm: [EUNJI] [DATA SAFE] lpa = 202075 +[47296.123527] bdbm: [EUNJI] [DATA SAFE] lpa = 202076 +[47296.124001] bdbm: [EUNJI] [DATA SAFE] lpa = 202077 +[47296.124476] bdbm: [EUNJI] [DATA SAFE] lpa = 202078 +[47296.124950] bdbm: [EUNJI] [DATA SAFE] lpa = 202079 +[47296.125426] bdbm: [EUNJI] [DATA SAFE] lpa = 202080 +[47296.125897] bdbm: [EUNJI] [DATA SAFE] lpa = 202081 +[47296.126370] bdbm: [EUNJI] [DATA SAFE] lpa = 202082 +[47296.126846] bdbm: [EUNJI] [DATA SAFE] lpa = 202083 +[47296.127322] bdbm: [EUNJI] [DATA SAFE] lpa = 202084 +[47296.127796] bdbm: [EUNJI] [DATA SAFE] lpa = 202085 +[47296.128270] bdbm: [EUNJI] [DATA SAFE] lpa = 202086 +[47296.128747] bdbm: [EUNJI] [DATA SAFE] lpa = 202087 +[47296.129221] bdbm: [EUNJI] [DATA SAFE] lpa = 202088 +[47296.129694] bdbm: [EUNJI] [DATA SAFE] lpa = 202089 +[47296.130171] bdbm: [EUNJI] [DATA SAFE] lpa = 202090 +[47296.130648] bdbm: [EUNJI] [DATA SAFE] lpa = 202091 +[47296.131122] bdbm: [EUNJI] [DATA SAFE] lpa = 202092 +[47296.131597] bdbm: [EUNJI] [DATA SAFE] lpa = 202093 +[47296.132071] bdbm: [EUNJI] [DATA SAFE] lpa = 202094 +[47296.132547] bdbm: [EUNJI] [DATA SAFE] lpa = 202095 +[47296.133023] bdbm: [EUNJI] [DATA SAFE] lpa = 202096 +[47296.133496] bdbm: [EUNJI] [DATA SAFE] lpa = 202097 +[47296.133971] bdbm: [EUNJI] [DATA SAFE] lpa = 202098 +[47296.134446] bdbm: [EUNJI] [DATA SAFE] lpa = 202099 +[47296.134922] bdbm: [EUNJI] [DATA SAFE] lpa = 202100 +[47296.135397] bdbm: [EUNJI] [DATA SAFE] lpa = 202101 +[47296.135872] bdbm: [EUNJI] [DATA SAFE] lpa = 202102 +[47296.136347] bdbm: [EUNJI] [DATA SAFE] lpa = 202103 +[47296.136821] bdbm: [EUNJI] [DATA SAFE] lpa = 202104 +[47296.137296] bdbm: [EUNJI] [DATA SAFE] lpa = 202105 +[47296.137768] bdbm: [EUNJI] [DATA SAFE] lpa = 202106 +[47296.138243] bdbm: [EUNJI] [DATA SAFE] lpa = 202107 +[47296.138717] bdbm: [EUNJI] [DATA SAFE] lpa = 202108 +[47296.139191] bdbm: [EUNJI] [DATA SAFE] lpa = 202109 +[47296.139666] bdbm: [EUNJI] [DATA SAFE] lpa = 202110 +[47296.140136] bdbm: [EUNJI] [DATA SAFE] lpa = 202111 +[47296.140610] bdbm: [EUNJI] [DATA SAFE] lpa = 202112 +[47296.141084] bdbm: [EUNJI] [DATA SAFE] lpa = 202113 +[47296.141559] bdbm: [EUNJI] [DATA SAFE] lpa = 202114 +[47296.142029] bdbm: [EUNJI] [DATA SAFE] lpa = 202115 +[47296.142503] bdbm: [EUNJI] [DATA SAFE] lpa = 202116 +[47296.142976] bdbm: [EUNJI] [DATA SAFE] lpa = 202117 +[47296.143447] bdbm: [EUNJI] [DATA SAFE] lpa = 202118 +[47296.143922] bdbm: [EUNJI] [DATA SAFE] lpa = 202119 +[47296.144396] bdbm: [EUNJI] [DATA SAFE] lpa = 202120 +[47296.144870] bdbm: [EUNJI] [DATA SAFE] lpa = 202121 +[47296.145345] bdbm: [EUNJI] [DATA SAFE] lpa = 202122 +[47296.145817] bdbm: [EUNJI] [DATA SAFE] lpa = 202123 +[47296.146293] bdbm: [EUNJI] [DATA SAFE] lpa = 202124 +[47296.146768] bdbm: [EUNJI] [DATA SAFE] lpa = 202125 +[47296.147243] bdbm: [EUNJI] [DATA SAFE] lpa = 202126 +[47296.147718] bdbm: [EUNJI] [DATA SAFE] lpa = 202127 +[47296.148194] bdbm: [EUNJI] [DATA SAFE] lpa = 202128 +[47296.148667] bdbm: [EUNJI] [DATA SAFE] lpa = 202129 +[47296.149142] bdbm: [EUNJI] [DATA SAFE] lpa = 202130 +[47296.149640] bdbm: [EUNJI] [DATA SAFE] lpa = 202131 +[47296.150113] bdbm: [EUNJI] [DATA SAFE] lpa = 202132 +[47296.150587] bdbm: [EUNJI] [DATA SAFE] lpa = 202133 +[47296.151061] bdbm: [EUNJI] [DATA SAFE] lpa = 202134 +[47296.151536] bdbm: [EUNJI] [DATA SAFE] lpa = 202135 +[47296.152012] bdbm: [EUNJI] [DATA SAFE] lpa = 202136 +[47296.152487] bdbm: [EUNJI] [DATA SAFE] lpa = 202137 +[47296.152963] bdbm: [EUNJI] [DATA SAFE] lpa = 202138 +[47296.153438] bdbm: [EUNJI] [DATA SAFE] lpa = 202139 +[47296.153915] bdbm: [EUNJI] [DATA SAFE] lpa = 202140 +[47296.154390] bdbm: [EUNJI] [DATA SAFE] lpa = 202141 +[47296.154866] bdbm: [EUNJI] [DATA SAFE] lpa = 202142 +[47296.155340] bdbm: [EUNJI] [DATA SAFE] lpa = 202143 +[47296.155815] bdbm: [EUNJI] [DATA SAFE] lpa = 202144 +[47296.156292] bdbm: [EUNJI] [DATA SAFE] lpa = 202145 +[47296.156767] bdbm: [EUNJI] [DATA SAFE] lpa = 202146 +[47296.157243] bdbm: [EUNJI] [DATA SAFE] lpa = 202147 +[47296.157721] bdbm: [EUNJI] [DATA SAFE] lpa = 202148 +[47296.158197] bdbm: [EUNJI] [DATA SAFE] lpa = 202149 +[47296.158671] bdbm: [EUNJI] [DATA SAFE] lpa = 202150 +[47296.159146] bdbm: [EUNJI] [DATA SAFE] lpa = 202151 +[47296.159621] bdbm: [EUNJI] [DATA SAFE] lpa = 202152 +[47296.160096] bdbm: [EUNJI] [DATA SAFE] lpa = 202153 +[47296.160571] bdbm: [EUNJI] [DATA SAFE] lpa = 202154 +[47296.161047] bdbm: [EUNJI] [DATA SAFE] lpa = 202155 +[47296.161521] bdbm: [EUNJI] [DATA SAFE] lpa = 202156 +[47296.161999] bdbm: [EUNJI] [DATA SAFE] lpa = 202157 +[47296.162472] bdbm: [EUNJI] [DATA SAFE] lpa = 202158 +[47296.162946] bdbm: [EUNJI] [DATA SAFE] lpa = 202159 +[47296.163421] bdbm: [EUNJI] [DATA SAFE] lpa = 202160 +[47296.163895] bdbm: [EUNJI] [DATA SAFE] lpa = 202161 +[47296.164368] bdbm: [EUNJI] [DATA SAFE] lpa = 202162 +[47296.164846] bdbm: [EUNJI] [DATA SAFE] lpa = 202163 +[47296.165322] bdbm: [EUNJI] [DATA SAFE] lpa = 202164 +[47296.165800] bdbm: [EUNJI] [DATA SAFE] lpa = 202165 +[47296.166275] bdbm: [EUNJI] [DATA SAFE] lpa = 202166 +[47296.166751] bdbm: [EUNJI] [DATA SAFE] lpa = 202167 +[47296.167225] bdbm: [EUNJI] [DATA SAFE] lpa = 202168 +[47296.167704] bdbm: [EUNJI] [DATA SAFE] lpa = 202169 +[47296.168173] bdbm: [EUNJI] [DATA SAFE] lpa = 202170 +[47296.168647] bdbm: [EUNJI] [DATA SAFE] lpa = 202171 +[47296.169121] bdbm: [EUNJI] [DATA SAFE] lpa = 202172 +[47296.169613] bdbm: [EUNJI] [DATA SAFE] lpa = 202173 +[47296.170114] bdbm: [EUNJI] [DATA SAFE] lpa = 202174 +[47296.170592] bdbm: [EUNJI] [DATA SAFE] lpa = 202175 +[47296.171060] bdbm: [EUNJI] [DATA SAFE] lpa = 202176 +[47296.171558] bdbm: [EUNJI] [DATA SAFE] lpa = 202177 +[47296.172063] bdbm: [EUNJI] [DATA SAFE] lpa = 202178 +[47296.172579] bdbm: [EUNJI] [DATA SAFE] lpa = 202179 +[47296.173084] bdbm: [EUNJI] [DATA SAFE] lpa = 202180 +[47296.173554] bdbm: [EUNJI] [DATA SAFE] lpa = 202181 +[47296.174057] bdbm: [EUNJI] [DATA SAFE] lpa = 202182 +[47296.174590] bdbm: [EUNJI] [DATA SAFE] lpa = 202183 +[47296.175094] bdbm: [EUNJI] [DATA SAFE] lpa = 202184 +[47296.175616] bdbm: [EUNJI] [DATA SAFE] lpa = 202185 +[47296.176120] bdbm: [EUNJI] [DATA SAFE] lpa = 202186 +[47296.176625] bdbm: [EUNJI] [DATA SAFE] lpa = 202187 +[47296.177155] bdbm: [EUNJI] [DATA SAFE] lpa = 202188 +[47296.177709] bdbm: [EUNJI] [DATA SAFE] lpa = 202189 +[47296.178228] bdbm: [EUNJI] [DATA SAFE] lpa = 202190 +[47296.178752] bdbm: [EUNJI] [DATA SAFE] lpa = 202191 +[47296.179261] bdbm: [EUNJI] [DATA SAFE] lpa = 202192 +[47296.179771] bdbm: [EUNJI] [DATA SAFE] lpa = 202193 +[47296.180290] bdbm: [EUNJI] [DATA SAFE] lpa = 202194 +[47296.180817] bdbm: [EUNJI] [DATA SAFE] lpa = 202195 +[47296.181310] bdbm: [EUNJI] [DATA SAFE] lpa = 202196 +[47296.181816] bdbm: [EUNJI] [DATA SAFE] lpa = 202197 +[47296.182327] bdbm: [EUNJI] [DATA SAFE] lpa = 202198 +[47296.182839] bdbm: [EUNJI] [DATA SAFE] lpa = 202199 +[47296.183363] bdbm: [EUNJI] [DATA SAFE] lpa = 202200 +[47296.183869] bdbm: [EUNJI] [DATA SAFE] lpa = 202201 +[47296.184421] bdbm: [EUNJI] [DATA SAFE] lpa = 202202 +[47296.184941] bdbm: [EUNJI] [DATA SAFE] lpa = 202203 +[47296.185492] bdbm: [EUNJI] [DATA SAFE] lpa = 202204 +[47296.186043] bdbm: [EUNJI] [DATA SAFE] lpa = 202205 +[47296.186594] bdbm: [EUNJI] [DATA SAFE] lpa = 202206 +[47296.187148] bdbm: [EUNJI] [DATA SAFE] lpa = 202207 +[47296.187650] bdbm: [EUNJI] [DATA SAFE] lpa = 202208 +[47296.188155] bdbm: [EUNJI] [DATA SAFE] lpa = 202209 +[47296.188659] bdbm: [EUNJI] [DATA SAFE] lpa = 202210 +[47296.189181] bdbm: [EUNJI] [DATA SAFE] lpa = 202211 +[47296.189679] bdbm: [EUNJI] [DATA SAFE] lpa = 202212 +[47296.190196] bdbm: [EUNJI] [DATA SAFE] lpa = 202213 +[47296.190708] bdbm: [EUNJI] [DATA SAFE] lpa = 202214 +[47296.191233] bdbm: [EUNJI] [DATA SAFE] lpa = 202215 +[47296.191750] bdbm: [EUNJI] [DATA SAFE] lpa = 202216 +[47296.192273] bdbm: [EUNJI] [DATA SAFE] lpa = 202217 +[47296.192785] bdbm: [EUNJI] [DATA SAFE] lpa = 202218 +[47296.193305] bdbm: [EUNJI] [DATA SAFE] lpa = 202219 +[47296.193831] bdbm: [EUNJI] [DATA SAFE] lpa = 202220 +[47296.194356] bdbm: [EUNJI] [DATA SAFE] lpa = 202221 +[47296.194882] bdbm: [EUNJI] [DATA SAFE] lpa = 202222 +[47296.195405] bdbm: [EUNJI] [DATA SAFE] lpa = 202223 +[47296.195928] bdbm: [EUNJI] [DATA SAFE] lpa = 202224 +[47296.196484] bdbm: [EUNJI] [DATA SAFE] lpa = 202225 +[47296.197041] bdbm: [EUNJI] [DATA SAFE] lpa = 202226 +[47296.197617] bdbm: [EUNJI] [DATA SAFE] lpa = 202227 +[47296.198157] bdbm: [EUNJI] [DATA SAFE] lpa = 202228 +[47296.198723] bdbm: [EUNJI] [DATA SAFE] lpa = 202229 +[47296.199291] bdbm: [EUNJI] [DATA SAFE] lpa = 202230 +[47296.199851] bdbm: [EUNJI] [DATA SAFE] lpa = 202231 +[47296.200412] bdbm: [EUNJI] [DATA SAFE] lpa = 202232 +[47296.200973] bdbm: [EUNJI] [DATA SAFE] lpa = 202233 +[47296.201527] bdbm: [EUNJI] [DATA SAFE] lpa = 202234 +[47296.202067] bdbm: [EUNJI] [DATA SAFE] lpa = 202235 +[47296.202618] bdbm: [EUNJI] [DATA SAFE] lpa = 202236 +[47296.203169] bdbm: [EUNJI] [DATA SAFE] lpa = 202237 +[47296.203719] bdbm: [EUNJI] [DATA SAFE] lpa = 202238 +[47296.204271] bdbm: [EUNJI] [DATA SAFE] lpa = 202239 +[47296.204819] bdbm: [EUNJI] [DATA SAFE] lpa = 202240 +[47296.205339] bdbm: [EUNJI] [DATA SAFE] lpa = 202241 +[47296.205846] bdbm: [EUNJI] [DATA SAFE] lpa = 202242 +[47296.206365] bdbm: [EUNJI] [DATA SAFE] lpa = 202243 +[47296.206870] bdbm: [EUNJI] [DATA SAFE] lpa = 202244 +[47296.207391] bdbm: [EUNJI] [DATA SAFE] lpa = 202245 +[47296.207930] bdbm: [EUNJI] [DATA SAFE] lpa = 202246 +[47296.208449] bdbm: [EUNJI] [DATA SAFE] lpa = 202247 +[47296.208968] bdbm: [EUNJI] [DATA SAFE] lpa = 202248 +[47296.209477] bdbm: [EUNJI] [DATA SAFE] lpa = 202249 +[47296.209983] bdbm: [EUNJI] [DATA SAFE] lpa = 202250 +[47296.210501] bdbm: [EUNJI] [DATA SAFE] lpa = 202251 +[47296.211006] bdbm: [EUNJI] [DATA SAFE] lpa = 202252 +[47296.211512] bdbm: [EUNJI] [DATA SAFE] lpa = 202253 +[47296.212024] bdbm: [EUNJI] [DATA SAFE] lpa = 202254 +[47296.212531] bdbm: [EUNJI] [DATA SAFE] lpa = 202255 +[47296.213038] bdbm: [EUNJI] [DATA SAFE] lpa = 202256 +[47296.213560] bdbm: [EUNJI] [DATA SAFE] lpa = 202257 +[47296.214040] bdbm: [EUNJI] [DATA SAFE] lpa = 202258 +[47296.214518] bdbm: [EUNJI] [DATA SAFE] lpa = 202259 +[47296.214993] bdbm: [EUNJI] [DATA SAFE] lpa = 202260 +[47296.215468] bdbm: [EUNJI] [DATA SAFE] lpa = 202261 +[47296.215943] bdbm: [EUNJI] [DATA SAFE] lpa = 202262 +[47296.216417] bdbm: [EUNJI] [DATA SAFE] lpa = 202263 +[47296.216895] bdbm: [EUNJI] [DATA SAFE] lpa = 202264 +[47296.217371] bdbm: [EUNJI] [DATA SAFE] lpa = 202265 +[47296.217846] bdbm: [EUNJI] [DATA SAFE] lpa = 202266 +[47296.218320] bdbm: [EUNJI] [DATA SAFE] lpa = 202267 +[47296.218792] bdbm: [EUNJI] [DATA SAFE] lpa = 202268 +[47296.219270] bdbm: [EUNJI] [DATA SAFE] lpa = 202269 +[47296.219747] bdbm: [EUNJI] [DATA SAFE] lpa = 202270 +[47296.220222] bdbm: [EUNJI] [DATA SAFE] lpa = 202271 +[47296.220700] bdbm: [EUNJI] [DATA SAFE] lpa = 202272 +[47296.221177] bdbm: [EUNJI] [DATA SAFE] lpa = 202273 +[47296.221654] bdbm: [EUNJI] [DATA SAFE] lpa = 202274 +[47296.222131] bdbm: [EUNJI] [DATA SAFE] lpa = 202275 +[47296.222604] bdbm: [EUNJI] [DATA SAFE] lpa = 202276 +[47296.223081] bdbm: [EUNJI] [DATA SAFE] lpa = 202277 +[47296.223557] bdbm: [EUNJI] [DATA SAFE] lpa = 202278 +[47296.224030] bdbm: [EUNJI] [DATA SAFE] lpa = 202279 +[47296.224508] bdbm: [EUNJI] [DATA SAFE] lpa = 202280 +[47296.224985] bdbm: [EUNJI] [DATA SAFE] lpa = 202281 +[47296.225462] bdbm: [EUNJI] [DATA SAFE] lpa = 202282 +[47296.225940] bdbm: [EUNJI] [DATA SAFE] lpa = 202283 +[47296.226419] bdbm: [EUNJI] [DATA SAFE] lpa = 202284 +[47296.226896] bdbm: [EUNJI] [DATA SAFE] lpa = 202285 +[47296.227370] bdbm: [EUNJI] [DATA SAFE] lpa = 202286 +[47296.227849] bdbm: [EUNJI] [DATA SAFE] lpa = 202287 +[47296.228326] bdbm: [EUNJI] [DATA SAFE] lpa = 202288 +[47296.228803] bdbm: [EUNJI] [DATA SAFE] lpa = 202289 +[47296.229275] bdbm: [EUNJI] [DATA SAFE] lpa = 202290 +[47296.229752] bdbm: [EUNJI] [DATA SAFE] lpa = 202291 +[47296.230230] bdbm: [EUNJI] [DATA SAFE] lpa = 202292 +[47296.230706] bdbm: [EUNJI] [DATA SAFE] lpa = 202293 +[47296.231184] bdbm: [EUNJI] [DATA SAFE] lpa = 202294 +[47296.231663] bdbm: [EUNJI] [DATA SAFE] lpa = 202295 +[47296.232140] bdbm: [EUNJI] [DATA SAFE] lpa = 202296 +[47296.232614] bdbm: [EUNJI] [DATA SAFE] lpa = 202297 +[47296.233086] bdbm: [EUNJI] [DATA SAFE] lpa = 202298 +[47296.233557] bdbm: [EUNJI] [DATA SAFE] lpa = 202299 +[47296.234031] bdbm: [EUNJI] [DATA SAFE] lpa = 202300 +[47296.234507] bdbm: [EUNJI] [DATA SAFE] lpa = 202301 +[47296.234980] bdbm: [EUNJI] [DATA SAFE] lpa = 202302 +[47296.235453] bdbm: [EUNJI] [DATA SAFE] lpa = 202303 +[47296.235923] bdbm: [EUNJI] [DATA SAFE] lpa = 202304 +[47296.236396] bdbm: [EUNJI] [DATA SAFE] lpa = 202305 +[47296.236870] bdbm: [EUNJI] [DATA SAFE] lpa = 202306 +[47296.237343] bdbm: [EUNJI] [DATA SAFE] lpa = 202307 +[47296.237817] bdbm: [EUNJI] [DATA SAFE] lpa = 202308 +[47296.238287] bdbm: [EUNJI] [DATA SAFE] lpa = 202309 +[47296.238761] bdbm: [EUNJI] [DATA SAFE] lpa = 202310 +[47296.239235] bdbm: [EUNJI] [DATA SAFE] lpa = 202311 +[47296.239709] bdbm: [EUNJI] [DATA SAFE] lpa = 202312 +[47296.240182] bdbm: [EUNJI] [DATA SAFE] lpa = 202313 +[47296.240656] bdbm: [EUNJI] [DATA SAFE] lpa = 202314 +[47296.241128] bdbm: [EUNJI] [DATA SAFE] lpa = 202315 +[47296.241628] bdbm: [EUNJI] [DATA SAFE] lpa = 202316 +[47296.242102] bdbm: [EUNJI] [DATA SAFE] lpa = 202317 +[47296.242578] bdbm: [EUNJI] [DATA SAFE] lpa = 202318 +[47296.243051] bdbm: [EUNJI] [DATA SAFE] lpa = 202319 +[47296.243525] bdbm: [EUNJI] [DATA SAFE] lpa = 202320 +[47296.243999] bdbm: [EUNJI] [DATA SAFE] lpa = 202321 +[47296.244472] bdbm: [EUNJI] [DATA SAFE] lpa = 202322 +[47296.244946] bdbm: [EUNJI] [DATA SAFE] lpa = 202323 +[47296.245418] bdbm: [EUNJI] [DATA SAFE] lpa = 202324 +[47296.245892] bdbm: [EUNJI] [DATA SAFE] lpa = 202325 +[47296.246371] bdbm: [EUNJI] [DATA SAFE] lpa = 202326 +[47296.246846] bdbm: [EUNJI] [DATA SAFE] lpa = 202327 +[47296.247321] bdbm: [EUNJI] [DATA SAFE] lpa = 202328 +[47296.247795] bdbm: [EUNJI] [DATA SAFE] lpa = 202329 +[47296.248270] bdbm: [EUNJI] [DATA SAFE] lpa = 202330 +[47296.248741] bdbm: [EUNJI] [DATA SAFE] lpa = 202331 +[47296.249215] bdbm: [EUNJI] [DATA SAFE] lpa = 202332 +[47296.249689] bdbm: [EUNJI] [DATA SAFE] lpa = 202333 +[47296.250164] bdbm: [EUNJI] [DATA SAFE] lpa = 202334 +[47296.250639] bdbm: [EUNJI] [DATA SAFE] lpa = 202335 +[47296.251113] bdbm: [EUNJI] [DATA SAFE] lpa = 202336 +[47296.251588] bdbm: [EUNJI] [DATA SAFE] lpa = 202337 +[47296.252062] bdbm: [EUNJI] [DATA SAFE] lpa = 202338 +[47296.252536] bdbm: [EUNJI] [DATA SAFE] lpa = 202339 +[47296.253010] bdbm: [EUNJI] [DATA SAFE] lpa = 202340 +[47296.253484] bdbm: [EUNJI] [DATA SAFE] lpa = 202341 +[47296.253957] bdbm: [EUNJI] [DATA SAFE] lpa = 202342 +[47296.254431] bdbm: [EUNJI] [DATA SAFE] lpa = 202343 +[47296.254906] bdbm: [EUNJI] [DATA SAFE] lpa = 202344 +[47296.255382] bdbm: [EUNJI] [DATA SAFE] lpa = 202345 +[47296.255859] bdbm: [EUNJI] [DATA SAFE] lpa = 202346 +[47296.256333] bdbm: [EUNJI] [DATA SAFE] lpa = 202347 +[47296.256808] bdbm: [EUNJI] [DATA SAFE] lpa = 202348 +[47296.257281] bdbm: [EUNJI] [DATA SAFE] lpa = 202349 +[47296.257753] bdbm: [EUNJI] [DATA SAFE] lpa = 202350 +[47296.258231] bdbm: [EUNJI] [DATA SAFE] lpa = 202351 +[47296.258706] bdbm: [EUNJI] [DATA SAFE] lpa = 202352 +[47296.259180] bdbm: [EUNJI] [DATA SAFE] lpa = 202353 +[47296.259654] bdbm: [EUNJI] [DATA SAFE] lpa = 202354 +[47296.260128] bdbm: [EUNJI] [DATA SAFE] lpa = 202355 +[47296.260604] bdbm: [EUNJI] [DATA SAFE] lpa = 202356 +[47296.261078] bdbm: [EUNJI] [DATA SAFE] lpa = 202357 +[47296.261553] bdbm: [EUNJI] [DATA SAFE] lpa = 202358 +[47296.262032] bdbm: [EUNJI] [DATA SAFE] lpa = 202359 +[47296.262507] bdbm: [EUNJI] [DATA SAFE] lpa = 202360 +[47296.262981] bdbm: [EUNJI] [DATA SAFE] lpa = 202361 +[47296.263456] bdbm: [EUNJI] [DATA SAFE] lpa = 202362 +[47296.263929] bdbm: [EUNJI] [DATA SAFE] lpa = 202363 +[47296.264399] bdbm: [EUNJI] [DATA SAFE] lpa = 202364 +[47296.264872] bdbm: [EUNJI] [DATA SAFE] lpa = 202365 +[47296.265346] bdbm: [EUNJI] [DATA SAFE] lpa = 202366 +[47296.265817] bdbm: [EUNJI] [DATA SAFE] lpa = 202367 +[47296.266291] bdbm: [EUNJI] [DATA SAFE] lpa = 202368 +[47296.266764] bdbm: [EUNJI] [DATA SAFE] lpa = 202369 +[47296.267239] bdbm: [EUNJI] [DATA SAFE] lpa = 202370 +[47296.267714] bdbm: [EUNJI] [DATA SAFE] lpa = 202371 +[47296.268188] bdbm: [EUNJI] [DATA SAFE] lpa = 202372 +[47296.268658] bdbm: [EUNJI] [DATA SAFE] lpa = 202373 +[47296.269129] bdbm: [EUNJI] [DATA SAFE] lpa = 202374 +[47296.269620] bdbm: [EUNJI] [DATA SAFE] lpa = 202375 +[47296.270114] bdbm: [EUNJI] [DATA SAFE] lpa = 202376 +[47296.270585] bdbm: [EUNJI] [DATA SAFE] lpa = 202377 +[47296.271058] bdbm: [EUNJI] [DATA SAFE] lpa = 202378 +[47296.271531] bdbm: [EUNJI] [DATA SAFE] lpa = 202379 +[47296.272006] bdbm: [EUNJI] [DATA SAFE] lpa = 202380 +[47296.272478] bdbm: [EUNJI] [DATA SAFE] lpa = 202381 +[47296.272950] bdbm: [EUNJI] [DATA SAFE] lpa = 202382 +[47296.273424] bdbm: [EUNJI] [DATA SAFE] lpa = 202383 +[47296.273895] bdbm: [EUNJI] [DATA SAFE] lpa = 202384 +[47296.274371] bdbm: [EUNJI] [DATA SAFE] lpa = 202385 +[47296.274848] bdbm: [EUNJI] [DATA SAFE] lpa = 202386 +[47296.275321] bdbm: [EUNJI] [DATA SAFE] lpa = 202387 +[47296.275794] bdbm: [EUNJI] [DATA SAFE] lpa = 202388 +[47296.276269] bdbm: [EUNJI] [DATA SAFE] lpa = 202389 +[47296.276745] bdbm: [EUNJI] [DATA SAFE] lpa = 202390 +[47296.277219] bdbm: [EUNJI] [DATA SAFE] lpa = 202391 +[47296.277693] bdbm: [EUNJI] [DATA SAFE] lpa = 202392 +[47296.278169] bdbm: [EUNJI] [DATA SAFE] lpa = 202393 +[47296.278644] bdbm: [EUNJI] [DATA SAFE] lpa = 202394 +[47296.279117] bdbm: [EUNJI] [DATA SAFE] lpa = 202395 +[47296.279591] bdbm: [EUNJI] [DATA SAFE] lpa = 202396 +[47296.280065] bdbm: [EUNJI] [DATA SAFE] lpa = 202397 +[47296.280538] bdbm: [EUNJI] [DATA SAFE] lpa = 202398 +[47296.281012] bdbm: [EUNJI] [DATA SAFE] lpa = 202399 +[47296.281485] bdbm: [EUNJI] [DATA SAFE] lpa = 202400 +[47296.281958] bdbm: [EUNJI] [DATA SAFE] lpa = 202401 +[47296.282432] bdbm: [EUNJI] [DATA SAFE] lpa = 202402 +[47296.282906] bdbm: [EUNJI] [DATA SAFE] lpa = 202403 +[47296.283379] bdbm: [EUNJI] [DATA SAFE] lpa = 202404 +[47296.283854] bdbm: [EUNJI] [DATA SAFE] lpa = 202405 +[47296.284329] bdbm: [EUNJI] [DATA SAFE] lpa = 202406 +[47296.284803] bdbm: [EUNJI] [DATA SAFE] lpa = 202407 +[47296.285277] bdbm: [EUNJI] [DATA SAFE] lpa = 202408 +[47296.285756] bdbm: [EUNJI] [DATA SAFE] lpa = 202409 +[47296.286232] bdbm: [EUNJI] [DATA SAFE] lpa = 202410 +[47296.286707] bdbm: [EUNJI] [DATA SAFE] lpa = 202411 +[47296.287181] bdbm: [EUNJI] [DATA SAFE] lpa = 202412 +[47296.287655] bdbm: [EUNJI] [DATA SAFE] lpa = 202413 +[47296.288127] bdbm: [EUNJI] [DATA SAFE] lpa = 202414 +[47296.288601] bdbm: [EUNJI] [DATA SAFE] lpa = 202415 +[47296.289077] bdbm: [EUNJI] [DATA SAFE] lpa = 202416 +[47296.289551] bdbm: [EUNJI] [DATA SAFE] lpa = 202417 +[47296.290025] bdbm: [EUNJI] [DATA SAFE] lpa = 202418 +[47296.290498] bdbm: [EUNJI] [DATA SAFE] lpa = 202419 +[47296.290971] bdbm: [EUNJI] [DATA SAFE] lpa = 202420 +[47296.291446] bdbm: [EUNJI] [DATA SAFE] lpa = 202421 +[47296.291921] bdbm: [EUNJI] [DATA SAFE] lpa = 202422 +[47296.292401] bdbm: [EUNJI] [DATA SAFE] lpa = 202423 +[47296.292874] bdbm: [EUNJI] [DATA SAFE] lpa = 202424 +[47296.293347] bdbm: [EUNJI] [DATA SAFE] lpa = 202425 +[47296.293816] bdbm: [EUNJI] [DATA SAFE] lpa = 202426 +[47296.294286] bdbm: [EUNJI] [DATA SAFE] lpa = 202427 +[47296.294759] bdbm: [EUNJI] [DATA SAFE] lpa = 202428 +[47296.295233] bdbm: [EUNJI] [DATA SAFE] lpa = 202429 +[47296.295706] bdbm: [EUNJI] [DATA SAFE] lpa = 202430 +[47296.296180] bdbm: [EUNJI] [DATA SAFE] lpa = 202431 +[47296.296653] bdbm: [EUNJI] [DATA SAFE] lpa = 202432 +[47296.297127] bdbm: [EUNJI] [DATA SAFE] lpa = 202433 +[47296.297617] bdbm: [EUNJI] [DATA SAFE] lpa = 202434 +[47296.298103] bdbm: [EUNJI] [DATA SAFE] lpa = 202435 +[47296.298576] bdbm: [EUNJI] [DATA SAFE] lpa = 202436 +[47296.299047] bdbm: [EUNJI] [DATA SAFE] lpa = 202437 +[47296.299517] bdbm: [EUNJI] [DATA SAFE] lpa = 202438 +[47296.299991] bdbm: [EUNJI] [DATA SAFE] lpa = 202439 +[47296.300466] bdbm: [EUNJI] [DATA SAFE] lpa = 202440 +[47296.300940] bdbm: [EUNJI] [DATA SAFE] lpa = 202441 +[47296.301413] bdbm: [EUNJI] [DATA SAFE] lpa = 202442 +[47296.301887] bdbm: [EUNJI] [DATA SAFE] lpa = 202443 +[47296.302364] bdbm: [EUNJI] [DATA SAFE] lpa = 202444 +[47296.302839] bdbm: [EUNJI] [DATA SAFE] lpa = 202445 +[47296.303312] bdbm: [EUNJI] [DATA SAFE] lpa = 202446 +[47296.303787] bdbm: [EUNJI] [DATA SAFE] lpa = 202447 +[47296.304259] bdbm: [EUNJI] [DATA SAFE] lpa = 202448 +[47296.304730] bdbm: [EUNJI] [DATA SAFE] lpa = 202449 +[47296.305204] bdbm: [EUNJI] [DATA SAFE] lpa = 202450 +[47296.305677] bdbm: [EUNJI] [DATA SAFE] lpa = 202451 +[47296.306153] bdbm: [EUNJI] [DATA SAFE] lpa = 202452 +[47296.306628] bdbm: [EUNJI] [DATA SAFE] lpa = 202453 +[47296.307103] bdbm: [EUNJI] [DATA SAFE] lpa = 202454 +[47296.307576] bdbm: [EUNJI] [DATA SAFE] lpa = 202455 +[47296.308050] bdbm: [EUNJI] [DATA SAFE] lpa = 202456 +[47296.308523] bdbm: [EUNJI] [DATA SAFE] lpa = 202457 +[47296.308998] bdbm: [EUNJI] [DATA SAFE] lpa = 202458 +[47296.309471] bdbm: [EUNJI] [DATA SAFE] lpa = 202459 +[47296.309943] bdbm: [EUNJI] [DATA SAFE] lpa = 202460 +[47296.310417] bdbm: [EUNJI] [DATA SAFE] lpa = 202461 +[47296.310891] bdbm: [EUNJI] [DATA SAFE] lpa = 202462 +[47296.311365] bdbm: [EUNJI] [DATA SAFE] lpa = 202463 +[47296.311837] bdbm: [EUNJI] [DATA SAFE] lpa = 202464 +[47296.312310] bdbm: [EUNJI] [DATA SAFE] lpa = 202465 +[47296.312784] bdbm: [EUNJI] [DATA SAFE] lpa = 202466 +[47296.313258] bdbm: [EUNJI] [DATA SAFE] lpa = 202467 +[47296.313731] bdbm: [EUNJI] [DATA SAFE] lpa = 202468 +[47296.314217] bdbm: [EUNJI] [DATA SAFE] lpa = 202469 +[47296.314692] bdbm: [EUNJI] [DATA SAFE] lpa = 202470 +[47296.315165] bdbm: [EUNJI] [DATA SAFE] lpa = 202471 +[47296.315639] bdbm: [EUNJI] [DATA SAFE] lpa = 202472 +[47296.316111] bdbm: [EUNJI] [DATA SAFE] lpa = 202473 +[47296.316584] bdbm: [EUNJI] [DATA SAFE] lpa = 202474 +[47296.317058] bdbm: [EUNJI] [DATA SAFE] lpa = 202475 +[47296.317532] bdbm: [EUNJI] [DATA SAFE] lpa = 202476 +[47296.318009] bdbm: [EUNJI] [DATA SAFE] lpa = 202477 +[47296.318485] bdbm: [EUNJI] [DATA SAFE] lpa = 202478 +[47296.318960] bdbm: [EUNJI] [DATA SAFE] lpa = 202479 +[47296.319436] bdbm: [EUNJI] [DATA SAFE] lpa = 202480 +[47296.319911] bdbm: [EUNJI] [DATA SAFE] lpa = 202481 +[47296.320386] bdbm: [EUNJI] [DATA SAFE] lpa = 202482 +[47296.320861] bdbm: [EUNJI] [DATA SAFE] lpa = 202483 +[47296.321336] bdbm: [EUNJI] [DATA SAFE] lpa = 202484 +[47296.321811] bdbm: [EUNJI] [DATA SAFE] lpa = 202485 +[47296.322286] bdbm: [EUNJI] [DATA SAFE] lpa = 202486 +[47296.322761] bdbm: [EUNJI] [DATA SAFE] lpa = 202487 +[47296.323235] bdbm: [EUNJI] [DATA SAFE] lpa = 202488 +[47296.323711] bdbm: [EUNJI] [DATA SAFE] lpa = 202489 +[47296.324184] bdbm: [EUNJI] [DATA SAFE] lpa = 202490 +[47296.324658] bdbm: [EUNJI] [DATA SAFE] lpa = 202491 +[47296.325131] bdbm: [EUNJI] [DATA SAFE] lpa = 202492 +[47296.325618] bdbm: [EUNJI] [DATA SAFE] lpa = 202493 +[47296.326112] bdbm: [EUNJI] [DATA SAFE] lpa = 202494 +[47296.326622] bdbm: [EUNJI] [DATA SAFE] lpa = 202495 +[47296.327127] bdbm: [EUNJI] [DATA SAFE] lpa = 202496 +[47296.327646] bdbm: [EUNJI] [DATA SAFE] lpa = 202497 +[47296.328156] bdbm: [EUNJI] [DATA SAFE] lpa = 202498 +[47296.328671] bdbm: [EUNJI] [DATA SAFE] lpa = 202499 +[47296.329160] bdbm: [EUNJI] [DATA SAFE] lpa = 202500 +[47296.329634] bdbm: [EUNJI] [DATA SAFE] lpa = 202501 +[47296.330112] bdbm: [EUNJI] [DATA SAFE] lpa = 202502 +[47296.330587] bdbm: [EUNJI] [DATA SAFE] lpa = 202503 +[47296.331061] bdbm: [EUNJI] [DATA SAFE] lpa = 202504 +[47296.331535] bdbm: [EUNJI] [DATA SAFE] lpa = 202505 +[47296.332009] bdbm: [EUNJI] [DATA SAFE] lpa = 202506 +[47296.332484] bdbm: [EUNJI] [DATA SAFE] lpa = 202507 +[47296.332958] bdbm: [EUNJI] [DATA SAFE] lpa = 202508 +[47296.333433] bdbm: [EUNJI] [DATA SAFE] lpa = 202509 +[47296.333905] bdbm: [EUNJI] [DATA SAFE] lpa = 202510 +[47296.334380] bdbm: [EUNJI] [DATA SAFE] lpa = 202511 +[47296.334850] bdbm: [EUNJI] [DATA SAFE] lpa = 202512 +[47296.335324] bdbm: [EUNJI] [DATA SAFE] lpa = 202513 +[47296.335798] bdbm: [EUNJI] [DATA SAFE] lpa = 202514 +[47296.336269] bdbm: [EUNJI] [DATA SAFE] lpa = 202515 +[47296.336745] bdbm: [EUNJI] [DATA SAFE] lpa = 202516 +[47296.337219] bdbm: [EUNJI] [DATA SAFE] lpa = 202517 +[47296.337694] bdbm: [EUNJI] [DATA SAFE] lpa = 202518 +[47296.338170] bdbm: [EUNJI] [DATA SAFE] lpa = 202519 +[47296.338644] bdbm: [EUNJI] [DATA SAFE] lpa = 202520 +[47296.339119] bdbm: [EUNJI] [DATA SAFE] lpa = 202521 +[47296.339594] bdbm: [EUNJI] [DATA SAFE] lpa = 202522 +[47296.340067] bdbm: [EUNJI] [DATA SAFE] lpa = 202523 +[47296.340541] bdbm: [EUNJI] [DATA SAFE] lpa = 202524 +[47296.341015] bdbm: [EUNJI] [DATA SAFE] lpa = 202525 +[47296.341488] bdbm: [EUNJI] [DATA SAFE] lpa = 202526 +[47296.341960] bdbm: [EUNJI] [DATA SAFE] lpa = 202527 +[47296.342434] bdbm: [EUNJI] [DATA SAFE] lpa = 202528 +[47296.342909] bdbm: [EUNJI] [DATA SAFE] lpa = 202529 +[47296.343383] bdbm: [EUNJI] [DATA SAFE] lpa = 202530 +[47296.343857] bdbm: [EUNJI] [DATA SAFE] lpa = 202531 +[47296.344331] bdbm: [EUNJI] [DATA SAFE] lpa = 202532 +[47296.344808] bdbm: [EUNJI] [DATA SAFE] lpa = 202533 +[47296.345285] bdbm: [EUNJI] [DATA SAFE] lpa = 202534 +[47296.345763] bdbm: [EUNJI] [DATA SAFE] lpa = 202535 +[47296.346250] bdbm: [EUNJI] [DATA SAFE] lpa = 202536 +[47296.346725] bdbm: [EUNJI] [DATA SAFE] lpa = 202537 +[47296.347198] bdbm: [EUNJI] [DATA SAFE] lpa = 202538 +[47296.347671] bdbm: [EUNJI] [DATA SAFE] lpa = 202539 +[47296.348145] bdbm: [EUNJI] [DATA SAFE] lpa = 202540 +[47296.348619] bdbm: [EUNJI] [DATA SAFE] lpa = 202541 +[47296.349143] bdbm: [EUNJI] [DATA SAFE] lpa = 202542 +[47296.349649] bdbm: [EUNJI] [DATA SAFE] lpa = 202543 +[47296.350129] bdbm: [EUNJI] [DATA SAFE] lpa = 202544 +[47296.350604] bdbm: [EUNJI] [DATA SAFE] lpa = 202545 +[47296.351081] bdbm: [EUNJI] [DATA SAFE] lpa = 202546 +[47296.351556] bdbm: [EUNJI] [DATA SAFE] lpa = 202547 +[47296.352033] bdbm: [EUNJI] [DATA SAFE] lpa = 202548 +[47296.352506] bdbm: [EUNJI] [DATA SAFE] lpa = 202549 +[47296.352980] bdbm: [EUNJI] [DATA SAFE] lpa = 202550 +[47296.353454] bdbm: [EUNJI] [DATA SAFE] lpa = 202551 +[47296.353932] bdbm: [EUNJI] [DATA SAFE] lpa = 202552 +[47296.354407] bdbm: [EUNJI] [DATA SAFE] lpa = 202553 +[47296.354880] bdbm: [EUNJI] [DATA SAFE] lpa = 202554 +[47296.355354] bdbm: [EUNJI] [DATA SAFE] lpa = 202555 +[47296.355828] bdbm: [EUNJI] [DATA SAFE] lpa = 202556 +[47296.356301] bdbm: [EUNJI] [DATA SAFE] lpa = 202557 +[47296.356775] bdbm: [EUNJI] [DATA SAFE] lpa = 202558 +[47296.357248] bdbm: [EUNJI] [DATA SAFE] lpa = 202559 +[47296.357718] bdbm: [EUNJI] [DATA SAFE] lpa = 202560 +[47296.358190] bdbm: [EUNJI] [DATA SAFE] lpa = 202561 +[47296.358665] bdbm: [EUNJI] [DATA SAFE] lpa = 202562 +[47296.359138] bdbm: [EUNJI] [DATA SAFE] lpa = 202563 +[47296.359613] bdbm: [EUNJI] [DATA SAFE] lpa = 202564 +[47296.360083] bdbm: [EUNJI] [DATA SAFE] lpa = 202565 +[47296.360556] bdbm: [EUNJI] [DATA SAFE] lpa = 202566 +[47296.361030] bdbm: [EUNJI] [DATA SAFE] lpa = 202567 +[47296.361504] bdbm: [EUNJI] [DATA SAFE] lpa = 202568 +[47296.361976] bdbm: [EUNJI] [DATA SAFE] lpa = 202569 +[47296.362450] bdbm: [EUNJI] [DATA SAFE] lpa = 202570 +[47296.362922] bdbm: [EUNJI] [DATA SAFE] lpa = 202571 +[47296.363397] bdbm: [EUNJI] [DATA SAFE] lpa = 202572 +[47296.363871] bdbm: [EUNJI] [DATA SAFE] lpa = 202573 +[47296.364345] bdbm: [EUNJI] [DATA SAFE] lpa = 202574 +[47296.364820] bdbm: [EUNJI] [DATA SAFE] lpa = 202575 +[47296.365295] bdbm: [EUNJI] [DATA SAFE] lpa = 202576 +[47296.365770] bdbm: [EUNJI] [DATA SAFE] lpa = 202577 +[47296.366245] bdbm: [EUNJI] [DATA SAFE] lpa = 202578 +[47296.366718] bdbm: [EUNJI] [DATA SAFE] lpa = 202579 +[47296.367194] bdbm: [EUNJI] [DATA SAFE] lpa = 202580 +[47296.367698] bdbm: [EUNJI] [DATA SAFE] lpa = 202581 +[47296.368218] bdbm: [EUNJI] [DATA SAFE] lpa = 202582 +[47296.368742] bdbm: [EUNJI] [DATA SAFE] lpa = 202583 +[47296.369265] bdbm: [EUNJI] [DATA SAFE] lpa = 202584 +[47296.369775] bdbm: [EUNJI] [DATA SAFE] lpa = 202585 +[47296.370281] bdbm: [EUNJI] [DATA SAFE] lpa = 202586 +[47296.370805] bdbm: [EUNJI] [DATA SAFE] lpa = 202587 +[47296.371317] bdbm: [EUNJI] [DATA SAFE] lpa = 202588 +[47296.371837] bdbm: [EUNJI] [DATA SAFE] lpa = 202589 +[47296.372344] bdbm: [EUNJI] [DATA SAFE] lpa = 202590 +[47296.372849] bdbm: [EUNJI] [DATA SAFE] lpa = 202591 +[47296.373374] bdbm: [EUNJI] [DATA SAFE] lpa = 202592 +[47296.373884] bdbm: [EUNJI] [DATA SAFE] lpa = 202593 +[47296.374407] bdbm: [EUNJI] [DATA SAFE] lpa = 202594 +[47296.374917] bdbm: [EUNJI] [DATA SAFE] lpa = 202595 +[47296.375437] bdbm: [EUNJI] [DATA SAFE] lpa = 202596 +[47296.375957] bdbm: [EUNJI] [DATA SAFE] lpa = 202597 +[47296.376506] bdbm: [EUNJI] [DATA SAFE] lpa = 202598 +[47296.377053] bdbm: [EUNJI] [DATA SAFE] lpa = 202599 +[47296.377611] bdbm: [EUNJI] [DATA SAFE] lpa = 202600 +[47296.378134] bdbm: [EUNJI] [DATA SAFE] lpa = 202601 +[47296.378643] bdbm: [EUNJI] [DATA SAFE] lpa = 202602 +[47296.379137] bdbm: [EUNJI] [DATA SAFE] lpa = 202603 +[47296.379620] bdbm: [EUNJI] [DATA SAFE] lpa = 202604 +[47296.380093] bdbm: [EUNJI] [DATA SAFE] lpa = 202605 +[47296.380567] bdbm: [EUNJI] [DATA SAFE] lpa = 202606 +[47296.381041] bdbm: [EUNJI] [DATA SAFE] lpa = 202607 +[47296.381514] bdbm: [EUNJI] [DATA SAFE] lpa = 202608 +[47296.381986] bdbm: [EUNJI] [DATA SAFE] lpa = 202609 +[47296.382469] bdbm: [EUNJI] [DATA SAFE] lpa = 202610 +[47296.382941] bdbm: [EUNJI] [DATA SAFE] lpa = 202611 +[47296.383414] bdbm: [EUNJI] [DATA SAFE] lpa = 202612 +[47296.383886] bdbm: [EUNJI] [DATA SAFE] lpa = 202613 +[47296.384360] bdbm: [EUNJI] [DATA SAFE] lpa = 202614 +[47296.384833] bdbm: [EUNJI] [DATA SAFE] lpa = 202615 +[47296.385307] bdbm: [EUNJI] [DATA SAFE] lpa = 202616 +[47296.385785] bdbm: [EUNJI] [DATA SAFE] lpa = 202617 +[47296.386262] bdbm: [EUNJI] [DATA SAFE] lpa = 202618 +[47296.386733] bdbm: [EUNJI] [DATA SAFE] lpa = 202619 +[47296.387206] bdbm: [EUNJI] [DATA SAFE] lpa = 202620 +[47296.387720] bdbm: [EUNJI] [DATA SAFE] lpa = 202621 +[47296.388217] bdbm: [EUNJI] [DATA SAFE] lpa = 202622 +[47296.388715] bdbm: [EUNJI] [DATA SAFE] lpa = 202623 +[47296.389185] bdbm: [EUNJI] [DATA SAFE] lpa = 202624 +[47296.389716] bdbm: [EUNJI] [DATA SAFE] lpa = 202625 +[47296.390223] bdbm: [EUNJI] [DATA SAFE] lpa = 202626 +[47296.390748] bdbm: [EUNJI] [DATA SAFE] lpa = 202627 +[47296.391259] bdbm: [EUNJI] [DATA SAFE] lpa = 202628 +[47296.391772] bdbm: [EUNJI] [DATA SAFE] lpa = 202629 +[47296.392295] bdbm: [EUNJI] [DATA SAFE] lpa = 202630 +[47296.392797] bdbm: [EUNJI] [DATA SAFE] lpa = 202631 +[47296.393315] bdbm: [EUNJI] [DATA SAFE] lpa = 202632 +[47296.393822] bdbm: [EUNJI] [DATA SAFE] lpa = 202633 +[47296.394332] bdbm: [EUNJI] [DATA SAFE] lpa = 202634 +[47296.394854] bdbm: [EUNJI] [DATA SAFE] lpa = 202635 +[47296.395356] bdbm: [EUNJI] [DATA SAFE] lpa = 202636 +[47296.395862] bdbm: [EUNJI] [DATA SAFE] lpa = 202637 +[47296.396380] bdbm: [EUNJI] [DATA SAFE] lpa = 202638 +[47296.396888] bdbm: [EUNJI] [DATA SAFE] lpa = 202639 +[47296.397402] bdbm: [EUNJI] [DATA SAFE] lpa = 202640 +[47296.397927] bdbm: [EUNJI] [DATA SAFE] lpa = 202641 +[47296.398445] bdbm: [EUNJI] [DATA SAFE] lpa = 202642 +[47296.398952] bdbm: [EUNJI] [DATA SAFE] lpa = 202643 +[47296.399473] bdbm: [EUNJI] [DATA SAFE] lpa = 202644 +[47296.399996] bdbm: [EUNJI] [DATA SAFE] lpa = 202645 +[47296.400505] bdbm: [EUNJI] [DATA SAFE] lpa = 202646 +[47296.401009] bdbm: [EUNJI] [DATA SAFE] lpa = 202647 +[47296.401529] bdbm: [EUNJI] [DATA SAFE] lpa = 202648 +[47296.402051] bdbm: [EUNJI] [DATA SAFE] lpa = 202649 +[47296.402560] bdbm: [EUNJI] [DATA SAFE] lpa = 202650 +[47296.403082] bdbm: [EUNJI] [DATA SAFE] lpa = 202651 +[47296.403590] bdbm: [EUNJI] [DATA SAFE] lpa = 202652 +[47296.404115] bdbm: [EUNJI] [DATA SAFE] lpa = 202653 +[47296.404622] bdbm: [EUNJI] [DATA SAFE] lpa = 202654 +[47296.405146] bdbm: [EUNJI] [DATA SAFE] lpa = 202655 +[47296.405651] bdbm: [EUNJI] [DATA SAFE] lpa = 202656 +[47296.406166] bdbm: [EUNJI] [DATA SAFE] lpa = 202657 +[47296.406694] bdbm: [EUNJI] [DATA SAFE] lpa = 202658 +[47296.407189] bdbm: [EUNJI] [DATA SAFE] lpa = 202659 +[47296.407668] bdbm: [EUNJI] [DATA SAFE] lpa = 202660 +[47296.408141] bdbm: [EUNJI] [DATA SAFE] lpa = 202661 +[47296.408616] bdbm: [EUNJI] [DATA SAFE] lpa = 202662 +[47296.409090] bdbm: [EUNJI] [DATA SAFE] lpa = 202663 +[47296.409564] bdbm: [EUNJI] [DATA SAFE] lpa = 202664 +[47296.410038] bdbm: [EUNJI] [DATA SAFE] lpa = 202665 +[47296.410516] bdbm: [EUNJI] [DATA SAFE] lpa = 202666 +[47296.410989] bdbm: [EUNJI] [DATA SAFE] lpa = 202667 +[47296.411463] bdbm: [EUNJI] [DATA SAFE] lpa = 202668 +[47296.411979] bdbm: [EUNJI] [DATA SAFE] lpa = 202669 +[47296.412456] bdbm: [EUNJI] [DATA SAFE] lpa = 202670 +[47296.412930] bdbm: [EUNJI] [DATA SAFE] lpa = 202671 +[47296.413405] bdbm: [EUNJI] [DATA SAFE] lpa = 202672 +[47296.413877] bdbm: [EUNJI] [DATA SAFE] lpa = 202673 +[47296.414356] bdbm: [EUNJI] [DATA SAFE] lpa = 202674 +[47296.414830] bdbm: [EUNJI] [DATA SAFE] lpa = 202675 +[47296.415303] bdbm: [EUNJI] [DATA SAFE] lpa = 202676 +[47296.415775] bdbm: [EUNJI] [DATA SAFE] lpa = 202677 +[47296.416249] bdbm: [EUNJI] [DATA SAFE] lpa = 202678 +[47296.416721] bdbm: [EUNJI] [DATA SAFE] lpa = 202679 +[47296.417195] bdbm: [EUNJI] [DATA SAFE] lpa = 202680 +[47296.417670] bdbm: [EUNJI] [DATA SAFE] lpa = 202681 +[47296.418143] bdbm: [EUNJI] [DATA SAFE] lpa = 202682 +[47296.418611] bdbm: [EUNJI] [DATA SAFE] lpa = 202683 +[47296.419078] bdbm: [EUNJI] [DATA SAFE] lpa = 202684 +[47296.419552] bdbm: [EUNJI] [DATA SAFE] lpa = 202685 +[47296.420051] bdbm: [EUNJI] [DATA SAFE] lpa = 202686 +[47296.420552] bdbm: [EUNJI] [DATA SAFE] lpa = 202687 +[47296.421051] bdbm: [EUNJI] [DATA SAFE] lpa = 202688 +[47296.421523] bdbm: [EUNJI] [DATA SAFE] lpa = 202689 +[47296.421994] bdbm: [EUNJI] [DATA SAFE] lpa = 202690 +[47296.422472] bdbm: [EUNJI] [DATA SAFE] lpa = 202691 +[47296.422940] bdbm: [EUNJI] [DATA SAFE] lpa = 202692 +[47296.423411] bdbm: [EUNJI] [DATA SAFE] lpa = 202693 +[47296.423912] bdbm: [EUNJI] [DATA SAFE] lpa = 202694 +[47296.424413] bdbm: [EUNJI] [DATA SAFE] lpa = 202695 +[47296.424929] bdbm: [EUNJI] [DATA SAFE] lpa = 202696 +[47296.425400] bdbm: [EUNJI] [DATA SAFE] lpa = 202697 +[47296.425872] bdbm: [EUNJI] [DATA SAFE] lpa = 202698 +[47296.426351] bdbm: [EUNJI] [DATA SAFE] lpa = 202699 +[47296.426824] bdbm: [EUNJI] [DATA SAFE] lpa = 202700 +[47296.427299] bdbm: [EUNJI] [DATA SAFE] lpa = 202701 +[47296.427772] bdbm: [EUNJI] [DATA SAFE] lpa = 202702 +[47296.428241] bdbm: [EUNJI] [DATA SAFE] lpa = 202703 +[47296.428714] bdbm: [EUNJI] [DATA SAFE] lpa = 202704 +[47296.429187] bdbm: [EUNJI] [DATA SAFE] lpa = 202705 +[47296.429658] bdbm: [EUNJI] [DATA SAFE] lpa = 202706 +[47296.430132] bdbm: [EUNJI] [DATA SAFE] lpa = 202707 +[47296.430605] bdbm: [EUNJI] [DATA SAFE] lpa = 202708 +[47296.431078] bdbm: [EUNJI] [DATA SAFE] lpa = 202709 +[47296.431553] bdbm: [EUNJI] [DATA SAFE] lpa = 202710 +[47296.432026] bdbm: [EUNJI] [DATA SAFE] lpa = 202711 +[47296.432501] bdbm: [EUNJI] [DATA SAFE] lpa = 202712 +[47296.432975] bdbm: [EUNJI] [DATA SAFE] lpa = 202713 +[47296.433450] bdbm: [EUNJI] [DATA SAFE] lpa = 202714 +[47296.433924] bdbm: [EUNJI] [DATA SAFE] lpa = 202715 +[47296.434398] bdbm: [EUNJI] [DATA SAFE] lpa = 202716 +[47296.434871] bdbm: [EUNJI] [DATA SAFE] lpa = 202717 +[47296.435345] bdbm: [EUNJI] [DATA SAFE] lpa = 202718 +[47296.435818] bdbm: [EUNJI] [DATA SAFE] lpa = 202719 +[47296.436292] bdbm: [EUNJI] [DATA SAFE] lpa = 202720 +[47296.436766] bdbm: [EUNJI] [DATA SAFE] lpa = 202721 +[47296.437240] bdbm: [EUNJI] [DATA SAFE] lpa = 202722 +[47296.437714] bdbm: [EUNJI] [DATA SAFE] lpa = 202723 +[47296.438187] bdbm: [EUNJI] [DATA SAFE] lpa = 202724 +[47296.438660] bdbm: [EUNJI] [DATA SAFE] lpa = 202725 +[47296.439135] bdbm: [EUNJI] [DATA SAFE] lpa = 202726 +[47296.439635] bdbm: [EUNJI] [DATA SAFE] lpa = 202727 +[47296.440151] bdbm: [EUNJI] [DATA SAFE] lpa = 202728 +[47296.440625] bdbm: [EUNJI] [DATA SAFE] lpa = 202729 +[47296.441099] bdbm: [EUNJI] [DATA SAFE] lpa = 202730 +[47296.441571] bdbm: [EUNJI] [DATA SAFE] lpa = 202731 +[47296.442048] bdbm: [EUNJI] [DATA SAFE] lpa = 202732 +[47296.442526] bdbm: [EUNJI] [DATA SAFE] lpa = 202733 +[47296.442998] bdbm: [EUNJI] [DATA SAFE] lpa = 202734 +[47296.443471] bdbm: [EUNJI] [DATA SAFE] lpa = 202735 +[47296.443945] bdbm: [EUNJI] [DATA SAFE] lpa = 202736 +[47296.444418] bdbm: [EUNJI] [DATA SAFE] lpa = 202737 +[47296.444890] bdbm: [EUNJI] [DATA SAFE] lpa = 202738 +[47296.445364] bdbm: [EUNJI] [DATA SAFE] lpa = 202739 +[47296.445842] bdbm: [EUNJI] [DATA SAFE] lpa = 202740 +[47296.446316] bdbm: [EUNJI] [DATA SAFE] lpa = 202741 +[47296.446789] bdbm: [EUNJI] [DATA SAFE] lpa = 202742 +[47296.447262] bdbm: [EUNJI] [DATA SAFE] lpa = 202743 +[47296.447736] bdbm: [EUNJI] [DATA SAFE] lpa = 202744 +[47296.448208] bdbm: [EUNJI] [DATA SAFE] lpa = 202745 +[47296.448676] bdbm: [EUNJI] [DATA SAFE] lpa = 202746 +[47296.449148] bdbm: [EUNJI] [DATA SAFE] lpa = 202747 +[47296.449617] bdbm: [EUNJI] [DATA SAFE] lpa = 202748 +[47296.450091] bdbm: [EUNJI] [DATA SAFE] lpa = 202749 +[47296.450562] bdbm: [EUNJI] [DATA SAFE] lpa = 202750 +[47296.451034] bdbm: [EUNJI] [DATA SAFE] lpa = 202751 +[47296.451504] bdbm: [EUNJI] [DATA SAFE] lpa = 202752 +[47296.451977] bdbm: [EUNJI] [DATA SAFE] lpa = 202753 +[47296.452448] bdbm: [EUNJI] [DATA SAFE] lpa = 202754 +[47296.452919] bdbm: [EUNJI] [DATA SAFE] lpa = 202755 +[47296.453390] bdbm: [EUNJI] [DATA SAFE] lpa = 202756 +[47296.453895] bdbm: [EUNJI] [DATA SAFE] lpa = 202757 +[47296.454408] bdbm: [EUNJI] [DATA SAFE] lpa = 202758 +[47296.454930] bdbm: [EUNJI] [DATA SAFE] lpa = 202759 +[47296.455442] bdbm: [EUNJI] [DATA SAFE] lpa = 202760 +[47296.455954] bdbm: [EUNJI] [DATA SAFE] lpa = 202761 +[47296.456466] bdbm: [EUNJI] [DATA SAFE] lpa = 202762 +[47296.456970] bdbm: [EUNJI] [DATA SAFE] lpa = 202763 +[47296.457482] bdbm: [EUNJI] [DATA SAFE] lpa = 202764 +[47296.457999] bdbm: [EUNJI] [DATA SAFE] lpa = 202765 +[47296.458504] bdbm: [EUNJI] [DATA SAFE] lpa = 202766 +[47296.459015] bdbm: [EUNJI] [DATA SAFE] lpa = 202767 +[47296.459538] bdbm: [EUNJI] [DATA SAFE] lpa = 202768 +[47296.460050] bdbm: [EUNJI] [DATA SAFE] lpa = 202769 +[47296.460570] bdbm: [EUNJI] [DATA SAFE] lpa = 202770 +[47296.461078] bdbm: [EUNJI] [DATA SAFE] lpa = 202771 +[47296.461603] bdbm: [EUNJI] [DATA SAFE] lpa = 202772 +[47296.462107] bdbm: [EUNJI] [DATA SAFE] lpa = 202773 +[47296.462630] bdbm: [EUNJI] [DATA SAFE] lpa = 202774 +[47296.463137] bdbm: [EUNJI] [DATA SAFE] lpa = 202775 +[47296.463657] bdbm: [EUNJI] [DATA SAFE] lpa = 202776 +[47296.464164] bdbm: [EUNJI] [DATA SAFE] lpa = 202777 +[47296.464672] bdbm: [EUNJI] [DATA SAFE] lpa = 202778 +[47296.465226] bdbm: [EUNJI] [DATA SAFE] lpa = 202779 +[47296.465774] bdbm: [EUNJI] [DATA SAFE] lpa = 202780 +[47296.466282] bdbm: [EUNJI] [DATA SAFE] lpa = 202781 +[47296.466801] bdbm: [EUNJI] [DATA SAFE] lpa = 202782 +[47296.467307] bdbm: [EUNJI] [DATA SAFE] lpa = 202783 +[47296.467844] bdbm: [EUNJI] [DATA SAFE] lpa = 202784 +[47296.468321] bdbm: [EUNJI] [DATA SAFE] lpa = 202785 +[47296.468790] bdbm: [EUNJI] [DATA SAFE] lpa = 202786 +[47296.469260] bdbm: [EUNJI] [DATA SAFE] lpa = 202787 +[47296.469732] bdbm: [EUNJI] [DATA SAFE] lpa = 202788 +[47296.470208] bdbm: [EUNJI] [DATA SAFE] lpa = 202789 +[47296.470679] bdbm: [EUNJI] [DATA SAFE] lpa = 202790 +[47296.471150] bdbm: [EUNJI] [DATA SAFE] lpa = 202791 +[47296.471622] bdbm: [EUNJI] [DATA SAFE] lpa = 202792 +[47296.472093] bdbm: [EUNJI] [DATA SAFE] lpa = 202793 +[47296.472564] bdbm: [EUNJI] [DATA SAFE] lpa = 202794 +[47296.473036] bdbm: [EUNJI] [DATA SAFE] lpa = 202795 +[47296.473507] bdbm: [EUNJI] [DATA SAFE] lpa = 202796 +[47296.473978] bdbm: [EUNJI] [DATA SAFE] lpa = 202797 +[47296.474449] bdbm: [EUNJI] [DATA SAFE] lpa = 202798 +[47296.474919] bdbm: [EUNJI] [DATA SAFE] lpa = 202799 +[47296.475390] bdbm: [EUNJI] [DATA SAFE] lpa = 202800 +[47296.475861] bdbm: [EUNJI] [DATA SAFE] lpa = 202801 +[47296.476332] bdbm: [EUNJI] [DATA SAFE] lpa = 202802 +[47296.476803] bdbm: [EUNJI] [DATA SAFE] lpa = 202803 +[47296.477273] bdbm: [EUNJI] [DATA SAFE] lpa = 202804 +[47296.477745] bdbm: [EUNJI] [DATA SAFE] lpa = 202805 +[47296.478230] bdbm: [EUNJI] [DATA SAFE] lpa = 202806 +[47296.478709] bdbm: [EUNJI] [DATA SAFE] lpa = 202807 +[47296.479184] bdbm: [EUNJI] [DATA SAFE] lpa = 202808 +[47296.479658] bdbm: [EUNJI] [DATA SAFE] lpa = 202809 +[47296.480130] bdbm: [EUNJI] [DATA SAFE] lpa = 202810 +[47296.480604] bdbm: [EUNJI] [DATA SAFE] lpa = 202811 +[47296.481078] bdbm: [EUNJI] [DATA SAFE] lpa = 202812 +[47296.481549] bdbm: [EUNJI] [DATA SAFE] lpa = 202813 +[47296.482025] bdbm: [EUNJI] [DATA SAFE] lpa = 202814 +[47296.482496] bdbm: [EUNJI] [DATA SAFE] lpa = 202815 +[47296.482971] bdbm: [EUNJI] [DATA SAFE] lpa = 202816 +[47296.483447] bdbm: [EUNJI] [DATA SAFE] lpa = 202817 +[47296.483922] bdbm: [EUNJI] [DATA SAFE] lpa = 202818 +[47296.484398] bdbm: [EUNJI] [DATA SAFE] lpa = 202819 +[47296.484874] bdbm: [EUNJI] [DATA SAFE] lpa = 202820 +[47296.485345] bdbm: [EUNJI] [DATA SAFE] lpa = 202821 +[47296.485817] bdbm: [EUNJI] [DATA SAFE] lpa = 202822 +[47296.486288] bdbm: [EUNJI] [DATA SAFE] lpa = 202823 +[47296.486760] bdbm: [EUNJI] [DATA SAFE] lpa = 202824 +[47296.487235] bdbm: [EUNJI] [DATA SAFE] lpa = 202825 +[47296.487712] bdbm: [EUNJI] [DATA SAFE] lpa = 202826 +[47296.488184] bdbm: [EUNJI] [DATA SAFE] lpa = 202827 +[47296.488657] bdbm: [EUNJI] [DATA SAFE] lpa = 202828 +[47296.489129] bdbm: [EUNJI] [DATA SAFE] lpa = 202829 +[47296.489620] bdbm: [EUNJI] [DATA SAFE] lpa = 202830 +[47296.490093] bdbm: [EUNJI] [DATA SAFE] lpa = 202831 +[47296.490568] bdbm: [EUNJI] [DATA SAFE] lpa = 202832 +[47296.491045] bdbm: [EUNJI] [DATA SAFE] lpa = 202833 +[47296.491520] bdbm: [EUNJI] [DATA SAFE] lpa = 202834 +[47296.491994] bdbm: [EUNJI] [DATA SAFE] lpa = 202835 +[47296.492468] bdbm: [EUNJI] [DATA SAFE] lpa = 202836 +[47296.492943] bdbm: [EUNJI] [DATA SAFE] lpa = 202837 +[47296.493419] bdbm: [EUNJI] [DATA SAFE] lpa = 202838 +[47296.493892] bdbm: [EUNJI] [DATA SAFE] lpa = 202839 +[47296.494371] bdbm: [EUNJI] [DATA SAFE] lpa = 202840 +[47296.494846] bdbm: [EUNJI] [DATA SAFE] lpa = 202841 +[47296.495319] bdbm: [EUNJI] [DATA SAFE] lpa = 202842 +[47296.495794] bdbm: [EUNJI] [DATA SAFE] lpa = 202843 +[47296.496268] bdbm: [EUNJI] [DATA SAFE] lpa = 202844 +[47296.496743] bdbm: [EUNJI] [DATA SAFE] lpa = 202845 +[47296.497218] bdbm: [EUNJI] [DATA SAFE] lpa = 202846 +[47296.497691] bdbm: [EUNJI] [DATA SAFE] lpa = 202847 +[47296.498167] bdbm: [EUNJI] [DATA SAFE] lpa = 202848 +[47296.498642] bdbm: [EUNJI] [DATA SAFE] lpa = 202849 +[47296.499114] bdbm: [EUNJI] [DATA SAFE] lpa = 202850 +[47296.499588] bdbm: [EUNJI] [DATA SAFE] lpa = 202851 +[47296.500062] bdbm: [EUNJI] [DATA SAFE] lpa = 202852 +[47296.500536] bdbm: [EUNJI] [DATA SAFE] lpa = 202853 +[47296.501012] bdbm: [EUNJI] [DATA SAFE] lpa = 202854 +[47296.501488] bdbm: [EUNJI] [DATA SAFE] lpa = 202855 +[47296.501964] bdbm: [EUNJI] [DATA SAFE] lpa = 202856 +[47296.502440] bdbm: [EUNJI] [DATA SAFE] lpa = 202857 +[47296.502918] bdbm: [EUNJI] [DATA SAFE] lpa = 202858 +[47296.503393] bdbm: [EUNJI] [DATA SAFE] lpa = 202859 +[47296.503866] bdbm: [EUNJI] [DATA SAFE] lpa = 202860 +[47296.504341] bdbm: [EUNJI] [DATA SAFE] lpa = 202861 +[47296.504815] bdbm: [EUNJI] [DATA SAFE] lpa = 202862 +[47296.505290] bdbm: [EUNJI] [DATA SAFE] lpa = 202863 +[47296.505780] bdbm: [EUNJI] [DATA SAFE] lpa = 202864 +[47296.506257] bdbm: [EUNJI] [DATA SAFE] lpa = 202865 +[47296.506731] bdbm: [EUNJI] [DATA SAFE] lpa = 202866 +[47296.507204] bdbm: [EUNJI] [DATA SAFE] lpa = 202867 +[47296.507682] bdbm: [EUNJI] [DATA SAFE] lpa = 202868 +[47296.508158] bdbm: [EUNJI] [DATA SAFE] lpa = 202869 +[47296.508634] bdbm: [EUNJI] [DATA SAFE] lpa = 202870 +[47296.509111] bdbm: [EUNJI] [DATA SAFE] lpa = 202871 +[47296.509586] bdbm: [EUNJI] [DATA SAFE] lpa = 202872 +[47296.513633] bdbm: [EUNJI] [DATA SAFE] lpa = 202873 +[47296.514122] bdbm: [EUNJI] [DATA SAFE] lpa = 202874 +[47296.514592] bdbm: [EUNJI] [DATA SAFE] lpa = 202875 +[47296.515063] bdbm: [EUNJI] [DATA SAFE] lpa = 202876 +[47296.515533] bdbm: [EUNJI] [DATA SAFE] lpa = 202877 +[47296.516004] bdbm: [EUNJI] [DATA SAFE] lpa = 202878 +[47296.516475] bdbm: [EUNJI] [DATA SAFE] lpa = 202879 +[47296.516946] bdbm: [EUNJI] [DATA SAFE] lpa = 202880 +[47296.517417] bdbm: [EUNJI] [DATA SAFE] lpa = 202881 +[47296.517886] bdbm: [EUNJI] [DATA SAFE] lpa = 202882 +[47296.518356] bdbm: [EUNJI] [DATA SAFE] lpa = 202883 +[47296.518827] bdbm: [EUNJI] [DATA SAFE] lpa = 202884 +[47296.519299] bdbm: [EUNJI] [DATA SAFE] lpa = 202885 +[47296.519795] bdbm: [EUNJI] [DATA SAFE] lpa = 202886 +[47296.520306] bdbm: [EUNJI] [DATA SAFE] lpa = 202887 +[47296.520794] bdbm: [EUNJI] [DATA SAFE] lpa = 202888 +[47296.521264] bdbm: [EUNJI] [DATA SAFE] lpa = 202889 +[47296.521783] bdbm: [EUNJI] [DATA SAFE] lpa = 202890 +[47296.522303] bdbm: [EUNJI] [DATA SAFE] lpa = 202891 +[47296.522809] bdbm: [EUNJI] [DATA SAFE] lpa = 202892 +[47296.523332] bdbm: [EUNJI] [DATA SAFE] lpa = 202893 +[47296.523881] bdbm: [EUNJI] [DATA SAFE] lpa = 202894 +[47296.524431] bdbm: [EUNJI] [DATA SAFE] lpa = 202895 +[47296.524977] bdbm: [EUNJI] [DATA SAFE] lpa = 202896 +[47296.525475] bdbm: [EUNJI] [DATA SAFE] lpa = 202897 +[47296.525977] bdbm: [EUNJI] [DATA SAFE] lpa = 202898 +[47296.526497] bdbm: [EUNJI] [DATA SAFE] lpa = 202899 +[47296.527016] bdbm: [EUNJI] [DATA SAFE] lpa = 202900 +[47296.527537] bdbm: [EUNJI] [DATA SAFE] lpa = 202901 +[47296.528042] bdbm: [EUNJI] [DATA SAFE] lpa = 202902 +[47296.528547] bdbm: [EUNJI] [DATA SAFE] lpa = 202903 +[47296.529050] bdbm: [EUNJI] [DATA SAFE] lpa = 202904 +[47296.529551] bdbm: [EUNJI] [DATA SAFE] lpa = 202905 +[47296.530029] bdbm: [EUNJI] [DATA SAFE] lpa = 202906 +[47296.530521] bdbm: [EUNJI] [DATA SAFE] lpa = 202907 +[47296.530992] bdbm: [EUNJI] [DATA SAFE] lpa = 202908 +[47296.531462] bdbm: [EUNJI] [DATA SAFE] lpa = 202909 +[47296.531933] bdbm: [EUNJI] [DATA SAFE] lpa = 202910 +[47296.532404] bdbm: [EUNJI] [DATA SAFE] lpa = 202911 +[47296.532876] bdbm: [EUNJI] [DATA SAFE] lpa = 202912 +[47296.533347] bdbm: [EUNJI] [DATA SAFE] lpa = 202913 +[47296.533821] bdbm: [EUNJI] [DATA SAFE] lpa = 202914 +[47296.534296] bdbm: [EUNJI] [DATA SAFE] lpa = 202915 +[47296.534766] bdbm: [EUNJI] [DATA SAFE] lpa = 202916 +[47296.535236] bdbm: [EUNJI] [DATA SAFE] lpa = 202917 +[47296.535711] bdbm: [EUNJI] [DATA SAFE] lpa = 202918 +[47296.536182] bdbm: [EUNJI] [DATA SAFE] lpa = 202919 +[47296.536651] bdbm: [EUNJI] [DATA SAFE] lpa = 202920 +[47296.537121] bdbm: [EUNJI] [DATA SAFE] lpa = 202921 +[47296.537595] bdbm: [EUNJI] [DATA SAFE] lpa = 202922 +[47296.541601] bdbm: [EUNJI] [DATA SAFE] lpa = 202923 +[47296.542081] bdbm: [EUNJI] [DATA SAFE] lpa = 202924 +[47296.542558] bdbm: [EUNJI] [DATA SAFE] lpa = 202925 +[47296.543034] bdbm: [EUNJI] [DATA SAFE] lpa = 202926 +[47296.543535] bdbm: [EUNJI] [DATA SAFE] lpa = 202927 +[47296.544037] bdbm: [EUNJI] [DATA SAFE] lpa = 202928 +[47296.544537] bdbm: [EUNJI] [DATA SAFE] lpa = 202929 +[47296.545052] bdbm: [EUNJI] [DATA SAFE] lpa = 202930 +[47296.545525] bdbm: [EUNJI] [DATA SAFE] lpa = 202931 +[47296.546003] bdbm: [EUNJI] [DATA SAFE] lpa = 202932 +[47296.546478] bdbm: [EUNJI] [DATA SAFE] lpa = 202933 +[47296.546954] bdbm: [EUNJI] [DATA SAFE] lpa = 202934 +[47296.547430] bdbm: [EUNJI] [DATA SAFE] lpa = 202935 +[47296.547902] bdbm: [EUNJI] [DATA SAFE] lpa = 202936 +[47296.548373] bdbm: [EUNJI] [DATA SAFE] lpa = 202937 +[47296.548845] bdbm: [EUNJI] [DATA SAFE] lpa = 202938 +[47296.549317] bdbm: [EUNJI] [DATA SAFE] lpa = 202939 +[47296.549787] bdbm: [EUNJI] [DATA SAFE] lpa = 202940 +[47296.550258] bdbm: [EUNJI] [DATA SAFE] lpa = 202941 +[47296.550730] bdbm: [EUNJI] [DATA SAFE] lpa = 202942 +[47296.551201] bdbm: [EUNJI] [DATA SAFE] lpa = 202943 +[47296.551697] bdbm: [EUNJI] [DATA SAFE] lpa = 202944 +[47296.552212] bdbm: [EUNJI] [DATA SAFE] lpa = 202945 +[47296.552712] bdbm: [EUNJI] [DATA SAFE] lpa = 202946 +[47296.553185] bdbm: [EUNJI] [DATA SAFE] lpa = 202947 +[47296.553662] bdbm: [EUNJI] [DATA SAFE] lpa = 202948 +[47296.554137] bdbm: [EUNJI] [DATA SAFE] lpa = 202949 +[47296.554613] bdbm: [EUNJI] [DATA SAFE] lpa = 202950 +[47296.555084] bdbm: [EUNJI] [DATA SAFE] lpa = 202951 +[47296.555560] bdbm: [EUNJI] [DATA SAFE] lpa = 202952 +[47296.556038] bdbm: [EUNJI] [DATA SAFE] lpa = 202953 +[47296.556514] bdbm: [EUNJI] [DATA SAFE] lpa = 202954 +[47296.556986] bdbm: [EUNJI] [DATA SAFE] lpa = 202955 +[47296.557463] bdbm: [EUNJI] [DATA SAFE] lpa = 202956 +[47296.557936] bdbm: [EUNJI] [DATA SAFE] lpa = 202957 +[47296.558406] bdbm: [EUNJI] [DATA SAFE] lpa = 202958 +[47296.558878] bdbm: [EUNJI] [DATA SAFE] lpa = 202959 +[47296.559350] bdbm: [EUNJI] [DATA SAFE] lpa = 202960 +[47296.559823] bdbm: [EUNJI] [DATA SAFE] lpa = 202961 +[47296.560300] bdbm: [EUNJI] [DATA SAFE] lpa = 202962 +[47296.560777] bdbm: [EUNJI] [DATA SAFE] lpa = 202963 +[47296.561253] bdbm: [EUNJI] [DATA SAFE] lpa = 202964 +[47296.561728] bdbm: [EUNJI] [DATA SAFE] lpa = 202965 +[47296.562204] bdbm: [EUNJI] [DATA SAFE] lpa = 202966 +[47296.562677] bdbm: [EUNJI] [DATA SAFE] lpa = 202967 +[47296.563151] bdbm: [EUNJI] [DATA SAFE] lpa = 202968 +[47296.563625] bdbm: [EUNJI] [DATA SAFE] lpa = 202969 +[47296.564099] bdbm: [EUNJI] [DATA SAFE] lpa = 202970 +[47296.564572] bdbm: [EUNJI] [DATA SAFE] lpa = 202971 +[47296.565046] bdbm: [EUNJI] [DATA SAFE] lpa = 202972 +[47296.565518] bdbm: [EUNJI] [DATA SAFE] lpa = 202973 +[47296.565996] bdbm: [EUNJI] [DATA SAFE] lpa = 202974 +[47296.566469] bdbm: [EUNJI] [DATA SAFE] lpa = 202975 +[47296.566942] bdbm: [EUNJI] [DATA SAFE] lpa = 202976 +[47296.567417] bdbm: [EUNJI] [DATA SAFE] lpa = 202977 +[47296.567890] bdbm: [EUNJI] [DATA SAFE] lpa = 202978 +[47296.568369] bdbm: [EUNJI] [DATA SAFE] lpa = 202979 +[47296.568846] bdbm: [EUNJI] [DATA SAFE] lpa = 202980 +[47296.569321] bdbm: [EUNJI] [DATA SAFE] lpa = 202981 +[47296.569796] bdbm: [EUNJI] [DATA SAFE] lpa = 202982 +[47296.570270] bdbm: [EUNJI] [DATA SAFE] lpa = 202983 +[47296.570746] bdbm: [EUNJI] [DATA SAFE] lpa = 202984 +[47296.571220] bdbm: [EUNJI] [DATA SAFE] lpa = 202985 +[47296.571696] bdbm: [EUNJI] [DATA SAFE] lpa = 202986 +[47296.572172] bdbm: [EUNJI] [DATA SAFE] lpa = 202987 +[47296.572646] bdbm: [EUNJI] [DATA SAFE] lpa = 202988 +[47296.573118] bdbm: [EUNJI] [DATA SAFE] lpa = 202989 +[47296.573622] bdbm: [EUNJI] [DATA SAFE] lpa = 202990 +[47296.574127] bdbm: [EUNJI] [DATA SAFE] lpa = 202991 +[47296.574629] bdbm: [EUNJI] [DATA SAFE] lpa = 202992 +[47296.575128] bdbm: [EUNJI] [DATA SAFE] lpa = 202993 +[47296.575640] bdbm: [EUNJI] [DATA SAFE] lpa = 202994 +[47296.576133] bdbm: [EUNJI] [DATA SAFE] lpa = 202995 +[47296.576613] bdbm: [EUNJI] [DATA SAFE] lpa = 202996 +[47296.577088] bdbm: [EUNJI] [DATA SAFE] lpa = 202997 +[47296.577563] bdbm: [EUNJI] [DATA SAFE] lpa = 202998 +[47296.578039] bdbm: [EUNJI] [DATA SAFE] lpa = 202999 +[47296.578514] bdbm: [EUNJI] [DATA SAFE] lpa = 203000 +[47296.578984] bdbm: [EUNJI] [DATA SAFE] lpa = 203001 +[47296.579453] bdbm: [EUNJI] [DATA SAFE] lpa = 203002 +[47296.579924] bdbm: [EUNJI] [DATA SAFE] lpa = 203003 +[47296.580394] bdbm: [EUNJI] [DATA SAFE] lpa = 203004 +[47296.580864] bdbm: [EUNJI] [DATA SAFE] lpa = 203005 +[47296.581333] bdbm: [EUNJI] [DATA SAFE] lpa = 203006 +[47296.581803] bdbm: [EUNJI] [DATA SAFE] lpa = 203007 +[47296.582273] bdbm: [EUNJI] [DATA SAFE] lpa = 203008 +[47296.582743] bdbm: [EUNJI] [DATA SAFE] lpa = 203009 +[47296.583213] bdbm: [EUNJI] [DATA SAFE] lpa = 203010 +[47296.583683] bdbm: [EUNJI] [DATA SAFE] lpa = 203011 +[47296.584153] bdbm: [EUNJI] [DATA SAFE] lpa = 203012 +[47296.584623] bdbm: [EUNJI] [DATA SAFE] lpa = 203013 +[47296.585093] bdbm: [EUNJI] [DATA SAFE] lpa = 203014 +[47296.585563] bdbm: [EUNJI] [DATA SAFE] lpa = 203015 +[47296.586034] bdbm: [EUNJI] [DATA SAFE] lpa = 203016 +[47296.586505] bdbm: [EUNJI] [DATA SAFE] lpa = 203017 +[47296.586977] bdbm: [EUNJI] [DATA SAFE] lpa = 203018 +[47296.587449] bdbm: [EUNJI] [DATA SAFE] lpa = 203019 +[47296.587921] bdbm: [EUNJI] [DATA SAFE] lpa = 203020 +[47296.588393] bdbm: [EUNJI] [DATA SAFE] lpa = 203021 +[47296.588865] bdbm: [EUNJI] [DATA SAFE] lpa = 203022 +[47296.589337] bdbm: [EUNJI] [DATA SAFE] lpa = 203023 +[47296.589811] bdbm: [EUNJI] [DATA SAFE] lpa = 203024 +[47296.590287] bdbm: [EUNJI] [DATA SAFE] lpa = 203025 +[47296.590760] bdbm: [EUNJI] [DATA SAFE] lpa = 203026 +[47296.591235] bdbm: [EUNJI] [DATA SAFE] lpa = 203027 +[47296.591712] bdbm: [EUNJI] [DATA SAFE] lpa = 203028 +[47296.592189] bdbm: [EUNJI] [DATA SAFE] lpa = 203029 +[47296.592665] bdbm: [EUNJI] [DATA SAFE] lpa = 203030 +[47296.593137] bdbm: [EUNJI] [DATA SAFE] lpa = 203031 +[47296.593633] bdbm: [EUNJI] [DATA SAFE] lpa = 203032 +[47296.594107] bdbm: [EUNJI] [DATA SAFE] lpa = 203033 +[47296.594583] bdbm: [EUNJI] [DATA SAFE] lpa = 203034 +[47296.595059] bdbm: [EUNJI] [DATA SAFE] lpa = 203035 +[47296.595536] bdbm: [EUNJI] [DATA SAFE] lpa = 203036 +[47296.596014] bdbm: [EUNJI] [DATA SAFE] lpa = 203037 +[47296.596490] bdbm: [EUNJI] [DATA SAFE] lpa = 203038 +[47296.596966] bdbm: [EUNJI] [DATA SAFE] lpa = 203039 +[47296.597443] bdbm: [EUNJI] [DATA SAFE] lpa = 203040 +[47296.597917] bdbm: [EUNJI] [DATA SAFE] lpa = 203041 +[47296.598393] bdbm: [EUNJI] [DATA SAFE] lpa = 203042 +[47296.598871] bdbm: [EUNJI] [DATA SAFE] lpa = 203043 +[47296.599348] bdbm: [EUNJI] [DATA SAFE] lpa = 203044 +[47296.599825] bdbm: [EUNJI] [DATA SAFE] lpa = 203045 +[47296.600302] bdbm: [EUNJI] [DATA SAFE] lpa = 203046 +[47296.600778] bdbm: [EUNJI] [DATA SAFE] lpa = 203047 +[47296.601252] bdbm: [EUNJI] [DATA SAFE] lpa = 203048 +[47296.601740] bdbm: [EUNJI] [DATA SAFE] lpa = 203049 +[47296.602216] bdbm: [EUNJI] [DATA SAFE] lpa = 203050 +[47296.602691] bdbm: [EUNJI] [DATA SAFE] lpa = 203051 +[47296.603166] bdbm: [EUNJI] [DATA SAFE] lpa = 203052 +[47296.603641] bdbm: [EUNJI] [DATA SAFE] lpa = 203053 +[47296.604116] bdbm: [EUNJI] [DATA SAFE] lpa = 203054 +[47296.604591] bdbm: [EUNJI] [DATA SAFE] lpa = 203055 +[47296.605065] bdbm: [EUNJI] [DATA SAFE] lpa = 203056 +[47296.605539] bdbm: [EUNJI] [DATA SAFE] lpa = 203057 +[47296.606016] bdbm: [EUNJI] [DATA SAFE] lpa = 203058 +[47296.606495] bdbm: [EUNJI] [DATA SAFE] lpa = 203059 +[47296.606972] bdbm: [EUNJI] [DATA SAFE] lpa = 203060 +[47296.607450] bdbm: [EUNJI] [DATA SAFE] lpa = 203061 +[47296.607928] bdbm: [EUNJI] [DATA SAFE] lpa = 203062 +[47296.608403] bdbm: [EUNJI] [DATA SAFE] lpa = 203063 +[47296.608881] bdbm: [EUNJI] [DATA SAFE] lpa = 203064 +[47296.609358] bdbm: [EUNJI] [DATA SAFE] lpa = 203065 +[47296.609833] bdbm: [EUNJI] [DATA SAFE] lpa = 203066 +[47296.610305] bdbm: [EUNJI] [DATA SAFE] lpa = 203067 +[47296.610776] bdbm: [EUNJI] [DATA SAFE] lpa = 203068 +[47296.611248] bdbm: [EUNJI] [DATA SAFE] lpa = 203069 +[47296.611721] bdbm: [EUNJI] [DATA SAFE] lpa = 203070 +[47296.612197] bdbm: [EUNJI] [DATA SAFE] lpa = 203071 +[47296.612673] bdbm: [EUNJI] [DATA SAFE] lpa = 203072 +[47296.613145] bdbm: [EUNJI] [DATA SAFE] lpa = 203073 +[47296.613643] bdbm: [EUNJI] [DATA SAFE] lpa = 203074 +[47296.614114] bdbm: [EUNJI] [DATA SAFE] lpa = 203075 +[47296.614587] bdbm: [EUNJI] [DATA SAFE] lpa = 203076 +[47296.615061] bdbm: [EUNJI] [DATA SAFE] lpa = 203077 +[47296.615534] bdbm: [EUNJI] [DATA SAFE] lpa = 203078 +[47296.616009] bdbm: [EUNJI] [DATA SAFE] lpa = 203079 +[47296.616482] bdbm: [EUNJI] [DATA SAFE] lpa = 203080 +[47296.616954] bdbm: [EUNJI] [DATA SAFE] lpa = 203081 +[47296.617428] bdbm: [EUNJI] [DATA SAFE] lpa = 203082 +[47296.617901] bdbm: [EUNJI] [DATA SAFE] lpa = 203083 +[47296.618376] bdbm: [EUNJI] [DATA SAFE] lpa = 203084 +[47296.618851] bdbm: [EUNJI] [DATA SAFE] lpa = 203085 +[47296.619325] bdbm: [EUNJI] [DATA SAFE] lpa = 203086 +[47296.619800] bdbm: [EUNJI] [DATA SAFE] lpa = 203087 +[47296.620274] bdbm: [EUNJI] [DATA SAFE] lpa = 203088 +[47296.620748] bdbm: [EUNJI] [DATA SAFE] lpa = 203089 +[47296.621223] bdbm: [EUNJI] [DATA SAFE] lpa = 203090 +[47296.621697] bdbm: [EUNJI] [DATA SAFE] lpa = 203091 +[47296.622171] bdbm: [EUNJI] [DATA SAFE] lpa = 203092 +[47296.622645] bdbm: [EUNJI] [DATA SAFE] lpa = 203093 +[47296.623118] bdbm: [EUNJI] [DATA SAFE] lpa = 203094 +[47296.623591] bdbm: [EUNJI] [DATA SAFE] lpa = 203095 +[47296.624065] bdbm: [EUNJI] [DATA SAFE] lpa = 203096 +[47296.624538] bdbm: [EUNJI] [DATA SAFE] lpa = 203097 +[47296.625011] bdbm: [EUNJI] [DATA SAFE] lpa = 203098 +[47296.625485] bdbm: [EUNJI] [DATA SAFE] lpa = 203099 +[47296.625960] bdbm: [EUNJI] [DATA SAFE] lpa = 203100 +[47296.626436] bdbm: [EUNJI] [DATA SAFE] lpa = 203101 +[47296.626909] bdbm: [EUNJI] [DATA SAFE] lpa = 203102 +[47296.627384] bdbm: [EUNJI] [DATA SAFE] lpa = 203103 +[47296.627857] bdbm: [EUNJI] [DATA SAFE] lpa = 203104 +[47296.628332] bdbm: [EUNJI] [DATA SAFE] lpa = 203105 +[47296.628806] bdbm: [EUNJI] [DATA SAFE] lpa = 203106 +[47296.629280] bdbm: [EUNJI] [DATA SAFE] lpa = 203107 +[47296.629755] bdbm: [EUNJI] [DATA SAFE] lpa = 203108 +[47296.630244] bdbm: [EUNJI] [DATA SAFE] lpa = 203109 +[47296.630718] bdbm: [EUNJI] [DATA SAFE] lpa = 203110 +[47296.631194] bdbm: [EUNJI] [DATA SAFE] lpa = 203111 +[47296.631668] bdbm: [EUNJI] [DATA SAFE] lpa = 203112 +[47296.632142] bdbm: [EUNJI] [DATA SAFE] lpa = 203113 +[47296.632617] bdbm: [EUNJI] [DATA SAFE] lpa = 203114 +[47296.633090] bdbm: [EUNJI] [DATA SAFE] lpa = 203115 +[47296.633564] bdbm: [EUNJI] [DATA SAFE] lpa = 203116 +[47296.634041] bdbm: [EUNJI] [DATA SAFE] lpa = 203117 +[47296.634517] bdbm: [EUNJI] [DATA SAFE] lpa = 203118 +[47296.634992] bdbm: [EUNJI] [DATA SAFE] lpa = 203119 +[47296.635467] bdbm: [EUNJI] [DATA SAFE] lpa = 203120 +[47296.635940] bdbm: [EUNJI] [DATA SAFE] lpa = 203121 +[47296.636413] bdbm: [EUNJI] [DATA SAFE] lpa = 203122 +[47296.636886] bdbm: [EUNJI] [DATA SAFE] lpa = 203123 +[47296.637359] bdbm: [EUNJI] [DATA SAFE] lpa = 203124 +[47296.637834] bdbm: [EUNJI] [DATA SAFE] lpa = 203125 +[47296.638311] bdbm: [EUNJI] [DATA SAFE] lpa = 203126 +[47296.638786] bdbm: [EUNJI] [DATA SAFE] lpa = 203127 +[47296.639261] bdbm: [EUNJI] [DATA SAFE] lpa = 203128 +[47296.639734] bdbm: [EUNJI] [DATA SAFE] lpa = 203129 +[47296.640208] bdbm: [EUNJI] [DATA SAFE] lpa = 203130 +[47296.640679] bdbm: [EUNJI] [DATA SAFE] lpa = 203131 +[47296.641153] bdbm: [EUNJI] [DATA SAFE] lpa = 203132 +[47296.641651] bdbm: [EUNJI] [DATA SAFE] lpa = 203133 +[47296.642125] bdbm: [EUNJI] [DATA SAFE] lpa = 203134 +[47296.642600] bdbm: [EUNJI] [DATA SAFE] lpa = 203135 +[47296.643074] bdbm: [EUNJI] [DATA SAFE] lpa = 203136 +[47296.643547] bdbm: [EUNJI] [DATA SAFE] lpa = 203137 +[47296.644023] bdbm: [EUNJI] [DATA SAFE] lpa = 203138 +[47296.644493] bdbm: [EUNJI] [DATA SAFE] lpa = 203139 +[47296.644968] bdbm: [EUNJI] [DATA SAFE] lpa = 203140 +[47296.645442] bdbm: [EUNJI] [DATA SAFE] lpa = 203141 +[47296.645915] bdbm: [EUNJI] [DATA SAFE] lpa = 203142 +[47296.646392] bdbm: [EUNJI] [DATA SAFE] lpa = 203143 +[47296.646866] bdbm: [EUNJI] [DATA SAFE] lpa = 203144 +[47296.647341] bdbm: [EUNJI] [DATA SAFE] lpa = 203145 +[47296.647815] bdbm: [EUNJI] [DATA SAFE] lpa = 203146 +[47296.648289] bdbm: [EUNJI] [DATA SAFE] lpa = 203147 +[47296.648763] bdbm: [EUNJI] [DATA SAFE] lpa = 203148 +[47296.649237] bdbm: [EUNJI] [DATA SAFE] lpa = 203149 +[47296.649708] bdbm: [EUNJI] [DATA SAFE] lpa = 203150 +[47296.650179] bdbm: [EUNJI] [DATA SAFE] lpa = 203151 +[47296.650651] bdbm: [EUNJI] [DATA SAFE] lpa = 203152 +[47296.651128] bdbm: [EUNJI] [DATA SAFE] lpa = 203153 +[47296.651606] bdbm: [EUNJI] [DATA SAFE] lpa = 203154 +[47296.652083] bdbm: [EUNJI] [DATA SAFE] lpa = 203155 +[47296.652559] bdbm: [EUNJI] [DATA SAFE] lpa = 203156 +[47296.653029] bdbm: [EUNJI] [DATA SAFE] lpa = 203157 +[47296.653507] bdbm: [EUNJI] [DATA SAFE] lpa = 203158 +[47296.653983] bdbm: [EUNJI] [DATA SAFE] lpa = 203159 +[47296.654454] bdbm: [EUNJI] [DATA SAFE] lpa = 203160 +[47296.654927] bdbm: [EUNJI] [DATA SAFE] lpa = 203161 +[47296.655401] bdbm: [EUNJI] [DATA SAFE] lpa = 203162 +[47296.655879] bdbm: [EUNJI] [DATA SAFE] lpa = 203163 +[47296.656350] bdbm: [EUNJI] [DATA SAFE] lpa = 203164 +[47296.656828] bdbm: [EUNJI] [DATA SAFE] lpa = 203165 +[47296.657304] bdbm: [EUNJI] [DATA SAFE] lpa = 203166 +[47296.657778] bdbm: [EUNJI] [DATA SAFE] lpa = 203167 +[47296.658259] bdbm: [EUNJI] [DATA SAFE] lpa = 203168 +[47296.658737] bdbm: [EUNJI] [DATA SAFE] lpa = 203169 +[47296.659210] bdbm: [EUNJI] [DATA SAFE] lpa = 203170 +[47296.659687] bdbm: [EUNJI] [DATA SAFE] lpa = 203171 +[47296.660164] bdbm: [EUNJI] [DATA SAFE] lpa = 203172 +[47296.660641] bdbm: [EUNJI] [DATA SAFE] lpa = 203173 +[47296.661119] bdbm: [EUNJI] [DATA SAFE] lpa = 203174 +[47296.661609] bdbm: [EUNJI] [DATA SAFE] lpa = 203175 +[47296.662097] bdbm: [EUNJI] [DATA SAFE] lpa = 203176 +[47296.662572] bdbm: [EUNJI] [DATA SAFE] lpa = 203177 +[47296.663049] bdbm: [EUNJI] [DATA SAFE] lpa = 203178 +[47296.663525] bdbm: [EUNJI] [DATA SAFE] lpa = 203179 +[47296.664001] bdbm: [EUNJI] [DATA SAFE] lpa = 203180 +[47296.664480] bdbm: [EUNJI] [DATA SAFE] lpa = 203181 +[47296.664957] bdbm: [EUNJI] [DATA SAFE] lpa = 203182 +[47296.665434] bdbm: [EUNJI] [DATA SAFE] lpa = 203183 +[47296.665912] bdbm: [EUNJI] [DATA SAFE] lpa = 203184 +[47296.666394] bdbm: [EUNJI] [DATA SAFE] lpa = 203185 +[47296.666870] bdbm: [EUNJI] [DATA SAFE] lpa = 203186 +[47296.667371] bdbm: [EUNJI] [DATA SAFE] lpa = 203187 +[47296.667889] bdbm: [EUNJI] [DATA SAFE] lpa = 203188 +[47296.668390] bdbm: [EUNJI] [DATA SAFE] lpa = 203189 +[47296.668899] bdbm: [EUNJI] [DATA SAFE] lpa = 203190 +[47296.669403] bdbm: [EUNJI] [DATA SAFE] lpa = 203191 +[47296.669906] bdbm: [EUNJI] [DATA SAFE] lpa = 203192 +[47296.670414] bdbm: [EUNJI] [DATA SAFE] lpa = 203193 +[47296.670920] bdbm: [EUNJI] [DATA SAFE] lpa = 203194 +[47296.671451] bdbm: [EUNJI] [DATA SAFE] lpa = 203195 +[47296.671957] bdbm: [EUNJI] [DATA SAFE] lpa = 203196 +[47296.672480] bdbm: [EUNJI] [DATA SAFE] lpa = 203197 +[47296.672985] bdbm: [EUNJI] [DATA SAFE] lpa = 203198 +[47296.673500] bdbm: [EUNJI] [DATA SAFE] lpa = 203199 +[47296.674008] bdbm: [EUNJI] [DATA SAFE] lpa = 203200 +[47296.674506] bdbm: [EUNJI] [DATA SAFE] lpa = 203201 +[47296.675036] bdbm: [EUNJI] [DATA SAFE] lpa = 203202 +[47296.675518] bdbm: [EUNJI] [DATA SAFE] lpa = 203203 +[47296.675993] bdbm: [EUNJI] [DATA SAFE] lpa = 203204 +[47296.676477] bdbm: [EUNJI] [DATA SAFE] lpa = 203205 +[47296.676947] bdbm: [EUNJI] [DATA SAFE] lpa = 203206 +[47296.677417] bdbm: [EUNJI] [DATA SAFE] lpa = 203207 +[47296.677887] bdbm: [EUNJI] [DATA SAFE] lpa = 203208 +[47296.678363] bdbm: [EUNJI] [DATA SAFE] lpa = 203209 +[47296.678834] bdbm: [EUNJI] [DATA SAFE] lpa = 203210 +[47296.679307] bdbm: [EUNJI] [DATA SAFE] lpa = 203211 +[47296.679778] bdbm: [EUNJI] [DATA SAFE] lpa = 203212 +[47296.680250] bdbm: [EUNJI] [DATA SAFE] lpa = 203213 +[47296.680735] bdbm: [EUNJI] [DATA SAFE] lpa = 203214 +[47296.681218] bdbm: [EUNJI] [DATA SAFE] lpa = 203215 +[47296.681728] bdbm: [EUNJI] [DATA SAFE] lpa = 203216 +[47296.682244] bdbm: [EUNJI] [DATA SAFE] lpa = 203217 +[47296.682753] bdbm: [EUNJI] [DATA SAFE] lpa = 203218 +[47296.683259] bdbm: [EUNJI] [DATA SAFE] lpa = 203219 +[47296.683762] bdbm: [EUNJI] [DATA SAFE] lpa = 203220 +[47296.684251] bdbm: [EUNJI] [DATA SAFE] lpa = 203221 +[47296.684722] bdbm: [EUNJI] [DATA SAFE] lpa = 203222 +[47296.685192] bdbm: [EUNJI] [DATA SAFE] lpa = 203223 +[47296.685666] bdbm: [EUNJI] [DATA SAFE] lpa = 203224 +[47296.686142] bdbm: [EUNJI] [DATA SAFE] lpa = 203225 +[47296.686612] bdbm: [EUNJI] [DATA SAFE] lpa = 203226 +[47296.687083] bdbm: [EUNJI] [DATA SAFE] lpa = 203227 +[47296.687553] bdbm: [EUNJI] [DATA SAFE] lpa = 203228 +[47296.688023] bdbm: [EUNJI] [DATA SAFE] lpa = 203229 +[47296.688500] bdbm: [EUNJI] [DATA SAFE] lpa = 203230 +[47296.688970] bdbm: [EUNJI] [DATA SAFE] lpa = 203231 +[47296.689441] bdbm: [EUNJI] [DATA SAFE] lpa = 203232 +[47296.689915] bdbm: [EUNJI] [DATA SAFE] lpa = 203233 +[47296.690398] bdbm: [EUNJI] [DATA SAFE] lpa = 203234 +[47296.690871] bdbm: [EUNJI] [DATA SAFE] lpa = 203235 +[47296.691347] bdbm: [EUNJI] [DATA SAFE] lpa = 203236 +[47296.691825] bdbm: [EUNJI] [DATA SAFE] lpa = 203237 +[47296.692302] bdbm: [EUNJI] [DATA SAFE] lpa = 203238 +[47296.692775] bdbm: [EUNJI] [DATA SAFE] lpa = 203239 +[47296.693248] bdbm: [EUNJI] [DATA SAFE] lpa = 203240 +[47296.693724] bdbm: [EUNJI] [DATA SAFE] lpa = 203241 +[47296.694201] bdbm: [EUNJI] [DATA SAFE] lpa = 203242 +[47296.694677] bdbm: [EUNJI] [DATA SAFE] lpa = 203243 +[47296.695154] bdbm: [EUNJI] [DATA SAFE] lpa = 203244 +[47296.695632] bdbm: [EUNJI] [DATA SAFE] lpa = 203245 +[47296.696108] bdbm: [EUNJI] [DATA SAFE] lpa = 203246 +[47296.696586] bdbm: [EUNJI] [DATA SAFE] lpa = 203247 +[47296.697062] bdbm: [EUNJI] [DATA SAFE] lpa = 203248 +[47296.697538] bdbm: [EUNJI] [DATA SAFE] lpa = 203249 +[47296.698013] bdbm: [EUNJI] [DATA SAFE] lpa = 203250 +[47296.698491] bdbm: [EUNJI] [DATA SAFE] lpa = 203251 +[47296.698969] bdbm: [EUNJI] [DATA SAFE] lpa = 203252 +[47296.699445] bdbm: [EUNJI] [DATA SAFE] lpa = 203253 +[47296.699922] bdbm: [EUNJI] [DATA SAFE] lpa = 203254 +[47296.700398] bdbm: [EUNJI] [DATA SAFE] lpa = 203255 +[47296.700875] bdbm: [EUNJI] [DATA SAFE] lpa = 203256 +[47296.701350] bdbm: [EUNJI] [DATA SAFE] lpa = 203257 +[47296.701822] bdbm: [EUNJI] [DATA SAFE] lpa = 203258 +[47296.702293] bdbm: [EUNJI] [DATA SAFE] lpa = 203259 +[47296.702767] bdbm: [EUNJI] [DATA SAFE] lpa = 203260 +[47296.703240] bdbm: [EUNJI] [DATA SAFE] lpa = 203261 +[47296.703713] bdbm: [EUNJI] [DATA SAFE] lpa = 203262 +[47296.704186] bdbm: [EUNJI] [DATA SAFE] lpa = 203263 +[47296.704660] bdbm: [EUNJI] [DATA SAFE] lpa = 203264 +[47296.705136] bdbm: [EUNJI] [DATA SAFE] lpa = 203265 +[47296.705638] bdbm: [EUNJI] [DATA SAFE] lpa = 203266 +[47296.706124] bdbm: [EUNJI] [DATA SAFE] lpa = 203267 +[47296.706599] bdbm: [EUNJI] [DATA SAFE] lpa = 203268 +[47296.707072] bdbm: [EUNJI] [DATA SAFE] lpa = 203269 +[47296.707545] bdbm: [EUNJI] [DATA SAFE] lpa = 203270 +[47296.708018] bdbm: [EUNJI] [DATA SAFE] lpa = 203271 +[47296.708492] bdbm: [EUNJI] [DATA SAFE] lpa = 203272 +[47296.708964] bdbm: [EUNJI] [DATA SAFE] lpa = 203273 +[47296.709438] bdbm: [EUNJI] [DATA SAFE] lpa = 203274 +[47296.709914] bdbm: [EUNJI] [DATA SAFE] lpa = 203275 +[47296.710388] bdbm: [EUNJI] [DATA SAFE] lpa = 203276 +[47296.710863] bdbm: [EUNJI] [DATA SAFE] lpa = 203277 +[47296.711339] bdbm: [EUNJI] [DATA SAFE] lpa = 203278 +[47296.711813] bdbm: [EUNJI] [DATA SAFE] lpa = 203279 +[47296.712287] bdbm: [EUNJI] [DATA SAFE] lpa = 203280 +[47296.712759] bdbm: [EUNJI] [DATA SAFE] lpa = 203281 +[47296.713232] bdbm: [EUNJI] [DATA SAFE] lpa = 203282 +[47296.713706] bdbm: [EUNJI] [DATA SAFE] lpa = 203283 +[47296.714180] bdbm: [EUNJI] [DATA SAFE] lpa = 203284 +[47296.714656] bdbm: [EUNJI] [DATA SAFE] lpa = 203285 +[47296.715130] bdbm: [EUNJI] [DATA SAFE] lpa = 203286 +[47296.715606] bdbm: [EUNJI] [DATA SAFE] lpa = 203287 +[47296.716082] bdbm: [EUNJI] [DATA SAFE] lpa = 203288 +[47296.716557] bdbm: [EUNJI] [DATA SAFE] lpa = 203289 +[47296.717033] bdbm: [EUNJI] [DATA SAFE] lpa = 203290 +[47296.717507] bdbm: [EUNJI] [DATA SAFE] lpa = 203291 +[47296.717981] bdbm: [EUNJI] [DATA SAFE] lpa = 203292 +[47296.718456] bdbm: [EUNJI] [DATA SAFE] lpa = 203293 +[47296.718929] bdbm: [EUNJI] [DATA SAFE] lpa = 203294 +[47296.719404] bdbm: [EUNJI] [DATA SAFE] lpa = 203295 +[47296.719878] bdbm: [EUNJI] [DATA SAFE] lpa = 203296 +[47296.720354] bdbm: [EUNJI] [DATA SAFE] lpa = 203297 +[47296.720830] bdbm: [EUNJI] [DATA SAFE] lpa = 203298 +[47296.721302] bdbm: [EUNJI] [DATA SAFE] lpa = 203299 +[47296.721780] bdbm: [EUNJI] [DATA SAFE] lpa = 203300 +[47296.722255] bdbm: [EUNJI] [DATA SAFE] lpa = 203301 +[47296.722727] bdbm: [EUNJI] [DATA SAFE] lpa = 203302 +[47296.723203] bdbm: [EUNJI] [DATA SAFE] lpa = 203303 +[47296.723680] bdbm: [EUNJI] [DATA SAFE] lpa = 203304 +[47296.724154] bdbm: [EUNJI] [DATA SAFE] lpa = 203305 +[47296.724629] bdbm: [EUNJI] [DATA SAFE] lpa = 203306 +[47296.725103] bdbm: [EUNJI] [DATA SAFE] lpa = 203307 +[47296.725578] bdbm: [EUNJI] [DATA SAFE] lpa = 203308 +[47296.726053] bdbm: [EUNJI] [DATA SAFE] lpa = 203309 +[47296.726528] bdbm: [EUNJI] [DATA SAFE] lpa = 203310 +[47296.727002] bdbm: [EUNJI] [DATA SAFE] lpa = 203311 +[47296.727474] bdbm: [EUNJI] [DATA SAFE] lpa = 203312 +[47296.727949] bdbm: [EUNJI] [DATA SAFE] lpa = 203313 +[47296.728424] bdbm: [EUNJI] [DATA SAFE] lpa = 203314 +[47296.728898] bdbm: [EUNJI] [DATA SAFE] lpa = 203315 +[47296.729373] bdbm: [EUNJI] [DATA SAFE] lpa = 203316 +[47296.729850] bdbm: [EUNJI] [DATA SAFE] lpa = 203317 +[47296.730325] bdbm: [EUNJI] [DATA SAFE] lpa = 203318 +[47296.730799] bdbm: [EUNJI] [DATA SAFE] lpa = 203319 +[47296.731272] bdbm: [EUNJI] [DATA SAFE] lpa = 203320 +[47296.731747] bdbm: [EUNJI] [DATA SAFE] lpa = 203321 +[47296.732220] bdbm: [EUNJI] [DATA SAFE] lpa = 203322 +[47296.732694] bdbm: [EUNJI] [DATA SAFE] lpa = 203323 +[47296.733169] bdbm: [EUNJI] [DATA SAFE] lpa = 203324 +[47296.733651] bdbm: [EUNJI] [DATA SAFE] lpa = 203325 +[47296.734127] bdbm: [EUNJI] [DATA SAFE] lpa = 203326 +[47296.734596] bdbm: [EUNJI] [DATA SAFE] lpa = 203327 +[47296.735071] bdbm: [EUNJI] [DATA SAFE] lpa = 203328 +[47296.735545] bdbm: [EUNJI] [DATA SAFE] lpa = 203329 +[47296.736017] bdbm: [EUNJI] [DATA SAFE] lpa = 203330 +[47296.736489] bdbm: [EUNJI] [DATA SAFE] lpa = 203331 +[47296.736962] bdbm: [EUNJI] [DATA SAFE] lpa = 203332 +[47296.737436] bdbm: [EUNJI] [DATA SAFE] lpa = 203333 +[47296.737910] bdbm: [EUNJI] [DATA SAFE] lpa = 203334 +[47296.738385] bdbm: [EUNJI] [DATA SAFE] lpa = 203335 +[47296.738858] bdbm: [EUNJI] [DATA SAFE] lpa = 203336 +[47296.739333] bdbm: [EUNJI] [DATA SAFE] lpa = 203337 +[47296.739811] bdbm: [EUNJI] [DATA SAFE] lpa = 203338 +[47296.740284] bdbm: [EUNJI] [DATA SAFE] lpa = 203339 +[47296.740758] bdbm: [EUNJI] [DATA SAFE] lpa = 203340 +[47296.741232] bdbm: [EUNJI] [DATA SAFE] lpa = 203341 +[47296.741706] bdbm: [EUNJI] [DATA SAFE] lpa = 203342 +[47296.742181] bdbm: [EUNJI] [DATA SAFE] lpa = 203343 +[47296.742653] bdbm: [EUNJI] [DATA SAFE] lpa = 203344 +[47296.743129] bdbm: [EUNJI] [DATA SAFE] lpa = 203345 +[47296.743602] bdbm: [EUNJI] [DATA SAFE] lpa = 203346 +[47296.744075] bdbm: [EUNJI] [DATA SAFE] lpa = 203347 +[47296.744549] bdbm: [EUNJI] [DATA SAFE] lpa = 203348 +[47296.745023] bdbm: [EUNJI] [DATA SAFE] lpa = 203349 +[47296.745495] bdbm: [EUNJI] [DATA SAFE] lpa = 203350 +[47296.745972] bdbm: [EUNJI] [DATA SAFE] lpa = 203351 +[47296.746448] bdbm: [EUNJI] [DATA SAFE] lpa = 203352 +[47296.746922] bdbm: [EUNJI] [DATA SAFE] lpa = 203353 +[47296.747397] bdbm: [EUNJI] [DATA SAFE] lpa = 203354 +[47296.747871] bdbm: [EUNJI] [DATA SAFE] lpa = 203355 +[47296.748345] bdbm: [EUNJI] [DATA SAFE] lpa = 203356 +[47296.748819] bdbm: [EUNJI] [DATA SAFE] lpa = 203357 +[47296.749293] bdbm: [EUNJI] [DATA SAFE] lpa = 203358 +[47296.749775] bdbm: [EUNJI] [DATA SAFE] lpa = 203359 +[47296.750251] bdbm: [EUNJI] [DATA SAFE] lpa = 203360 +[47296.750725] bdbm: [EUNJI] [DATA SAFE] lpa = 203361 +[47296.751200] bdbm: [EUNJI] [DATA SAFE] lpa = 203362 +[47296.751673] bdbm: [EUNJI] [DATA SAFE] lpa = 203363 +[47296.752148] bdbm: [EUNJI] [DATA SAFE] lpa = 203364 +[47296.752623] bdbm: [EUNJI] [DATA SAFE] lpa = 203365 +[47296.753097] bdbm: [EUNJI] [DATA SAFE] lpa = 203366 +[47296.753570] bdbm: [EUNJI] [DATA SAFE] lpa = 203367 +[47296.754045] bdbm: [EUNJI] [DATA SAFE] lpa = 203368 +[47296.754520] bdbm: [EUNJI] [DATA SAFE] lpa = 203369 +[47296.754995] bdbm: [EUNJI] [DATA SAFE] lpa = 203370 +[47296.755469] bdbm: [EUNJI] [DATA SAFE] lpa = 203371 +[47296.755943] bdbm: [EUNJI] [DATA SAFE] lpa = 203372 +[47296.756420] bdbm: [EUNJI] [DATA SAFE] lpa = 203373 +[47296.756894] bdbm: [EUNJI] [DATA SAFE] lpa = 203374 +[47296.757370] bdbm: [EUNJI] [DATA SAFE] lpa = 203375 +[47296.757847] bdbm: [EUNJI] [DATA SAFE] lpa = 203376 +[47296.758321] bdbm: [EUNJI] [DATA SAFE] lpa = 203377 +[47296.758796] bdbm: [EUNJI] [DATA SAFE] lpa = 203378 +[47296.759270] bdbm: [EUNJI] [DATA SAFE] lpa = 203379 +[47296.759745] bdbm: [EUNJI] [DATA SAFE] lpa = 203380 +[47296.760220] bdbm: [EUNJI] [DATA SAFE] lpa = 203381 +[47296.760697] bdbm: [EUNJI] [DATA SAFE] lpa = 203382 +[47296.761171] bdbm: [EUNJI] [DATA SAFE] lpa = 203383 +[47296.761646] bdbm: [EUNJI] [DATA SAFE] lpa = 203384 +[47296.762136] bdbm: [EUNJI] [DATA SAFE] lpa = 203385 +[47296.762610] bdbm: [EUNJI] [DATA SAFE] lpa = 203386 +[47296.763083] bdbm: [EUNJI] [DATA SAFE] lpa = 203387 +[47296.763557] bdbm: [EUNJI] [DATA SAFE] lpa = 203388 +[47296.764030] bdbm: [EUNJI] [DATA SAFE] lpa = 203389 +[47296.764504] bdbm: [EUNJI] [DATA SAFE] lpa = 203390 +[47296.764977] bdbm: [EUNJI] [DATA SAFE] lpa = 203391 +[47296.765447] bdbm: [EUNJI] [DATA SAFE] lpa = 203392 +[47296.765919] bdbm: [EUNJI] [DATA SAFE] lpa = 203393 +[47296.766394] bdbm: [EUNJI] [DATA SAFE] lpa = 203394 +[47296.766868] bdbm: [EUNJI] [DATA SAFE] lpa = 203395 +[47296.767343] bdbm: [EUNJI] [DATA SAFE] lpa = 203396 +[47296.767816] bdbm: [EUNJI] [DATA SAFE] lpa = 203397 +[47296.768317] bdbm: [EUNJI] [DATA SAFE] lpa = 203398 +[47296.768808] bdbm: [EUNJI] [DATA SAFE] lpa = 203399 +[47296.769283] bdbm: [EUNJI] [DATA SAFE] lpa = 203400 +[47296.769788] bdbm: [EUNJI] [DATA SAFE] lpa = 203401 +[47296.770302] bdbm: [EUNJI] [DATA SAFE] lpa = 203402 +[47296.770792] bdbm: [EUNJI] [DATA SAFE] lpa = 203403 +[47296.771281] bdbm: [EUNJI] [DATA SAFE] lpa = 203404 +[47296.771770] bdbm: [EUNJI] [DATA SAFE] lpa = 203405 +[47296.772262] bdbm: [EUNJI] [DATA SAFE] lpa = 203406 +[47296.772752] bdbm: [EUNJI] [DATA SAFE] lpa = 203407 +[47296.773258] bdbm: [EUNJI] [DATA SAFE] lpa = 203408 +[47296.773763] bdbm: [EUNJI] [DATA SAFE] lpa = 203409 +[47296.774281] bdbm: [EUNJI] [DATA SAFE] lpa = 203410 +[47296.774779] bdbm: [EUNJI] [DATA SAFE] lpa = 203411 +[47296.775288] bdbm: [EUNJI] [DATA SAFE] lpa = 203412 +[47296.775791] bdbm: [EUNJI] [DATA SAFE] lpa = 203413 +[47296.776314] bdbm: [EUNJI] [DATA SAFE] lpa = 203414 +[47296.776814] bdbm: [EUNJI] [DATA SAFE] lpa = 203415 +[47296.777315] bdbm: [EUNJI] [DATA SAFE] lpa = 203416 +[47296.777824] bdbm: [EUNJI] [DATA SAFE] lpa = 203417 +[47296.778331] bdbm: [EUNJI] [DATA SAFE] lpa = 203418 +[47296.778834] bdbm: [EUNJI] [DATA SAFE] lpa = 203419 +[47296.779353] bdbm: [EUNJI] [DATA SAFE] lpa = 203420 +[47296.779876] bdbm: [EUNJI] [DATA SAFE] lpa = 203421 +[47296.780404] bdbm: [EUNJI] [DATA SAFE] lpa = 203422 +[47296.780930] bdbm: [EUNJI] [DATA SAFE] lpa = 203423 +[47296.781422] bdbm: [EUNJI] [DATA SAFE] lpa = 203424 +[47296.781902] bdbm: [EUNJI] [DATA SAFE] lpa = 203425 +[47296.782374] bdbm: [EUNJI] [DATA SAFE] lpa = 203426 +[47296.782858] bdbm: [EUNJI] [DATA SAFE] lpa = 203427 +[47296.783329] bdbm: [EUNJI] [DATA SAFE] lpa = 203428 +[47296.783801] bdbm: [EUNJI] [DATA SAFE] lpa = 203429 +[47296.784272] bdbm: [EUNJI] [DATA SAFE] lpa = 203430 +[47296.784774] bdbm: [EUNJI] [DATA SAFE] lpa = 203431 +[47296.785248] bdbm: [EUNJI] [DATA SAFE] lpa = 203432 +[47296.785720] bdbm: [EUNJI] [DATA SAFE] lpa = 203433 +[47296.786197] bdbm: [EUNJI] [DATA SAFE] lpa = 203434 +[47296.786668] bdbm: [EUNJI] [DATA SAFE] lpa = 203435 +[47296.787139] bdbm: [EUNJI] [DATA SAFE] lpa = 203436 +[47296.787610] bdbm: [EUNJI] [DATA SAFE] lpa = 203437 +[47296.788081] bdbm: [EUNJI] [DATA SAFE] lpa = 203438 +[47296.788552] bdbm: [EUNJI] [DATA SAFE] lpa = 203439 +[47296.789023] bdbm: [EUNJI] [DATA SAFE] lpa = 203440 +[47296.789494] bdbm: [EUNJI] [DATA SAFE] lpa = 203441 +[47296.789970] bdbm: [EUNJI] [DATA SAFE] lpa = 203442 +[47296.790446] bdbm: [EUNJI] [DATA SAFE] lpa = 203443 +[47296.790917] bdbm: [EUNJI] [DATA SAFE] lpa = 203444 +[47296.791388] bdbm: [EUNJI] [DATA SAFE] lpa = 203445 +[47296.791858] bdbm: [EUNJI] [DATA SAFE] lpa = 203446 +[47296.792329] bdbm: [EUNJI] [DATA SAFE] lpa = 203447 +[47296.792800] bdbm: [EUNJI] [DATA SAFE] lpa = 203448 +[47296.793271] bdbm: [EUNJI] [DATA SAFE] lpa = 203449 +[47296.793743] bdbm: [EUNJI] [DATA SAFE] lpa = 203450 +[47296.794212] bdbm: [EUNJI] [DATA SAFE] lpa = 203451 +[47296.794682] bdbm: [EUNJI] [DATA SAFE] lpa = 203452 +[47296.795152] bdbm: [EUNJI] [DATA SAFE] lpa = 203453 +[47296.795622] bdbm: [EUNJI] [DATA SAFE] lpa = 203454 +[47296.796092] bdbm: [EUNJI] [DATA SAFE] lpa = 203455 +[47296.796562] bdbm: [EUNJI] [DATA SAFE] lpa = 203456 +[47296.797033] bdbm: [EUNJI] [DATA SAFE] lpa = 203457 +[47296.797503] bdbm: [EUNJI] [DATA SAFE] lpa = 203458 +[47296.797971] bdbm: [EUNJI] [DATA SAFE] lpa = 203459 +[47296.798441] bdbm: [EUNJI] [DATA SAFE] lpa = 203460 +[47296.798911] bdbm: [EUNJI] [DATA SAFE] lpa = 203461 +[47296.799382] bdbm: [EUNJI] [DATA SAFE] lpa = 203462 +[47296.799852] bdbm: [EUNJI] [DATA SAFE] lpa = 203463 +[47296.800323] bdbm: [EUNJI] [DATA SAFE] lpa = 203464 +[47296.800793] bdbm: [EUNJI] [DATA SAFE] lpa = 203465 +[47296.801263] bdbm: [EUNJI] [DATA SAFE] lpa = 203466 +[47296.801732] bdbm: [EUNJI] [DATA SAFE] lpa = 203467 +[47296.802201] bdbm: [EUNJI] [DATA SAFE] lpa = 203468 +[47296.802671] bdbm: [EUNJI] [DATA SAFE] lpa = 203469 +[47296.803140] bdbm: [EUNJI] [DATA SAFE] lpa = 203470 +[47296.803611] bdbm: [EUNJI] [DATA SAFE] lpa = 203471 +[47296.804080] bdbm: [EUNJI] [DATA SAFE] lpa = 203472 +[47296.804550] bdbm: [EUNJI] [DATA SAFE] lpa = 203473 +[47296.805020] bdbm: [EUNJI] [DATA SAFE] lpa = 203474 +[47296.805490] bdbm: [EUNJI] [DATA SAFE] lpa = 203475 +[47296.805961] bdbm: [EUNJI] [DATA SAFE] lpa = 203476 +[47296.806430] bdbm: [EUNJI] [DATA SAFE] lpa = 203477 +[47296.806900] bdbm: [EUNJI] [DATA SAFE] lpa = 203478 +[47296.807369] bdbm: [EUNJI] [DATA SAFE] lpa = 203479 +[47296.807839] bdbm: [EUNJI] [DATA SAFE] lpa = 203480 +[47296.808309] bdbm: [EUNJI] [DATA SAFE] lpa = 203481 +[47296.808779] bdbm: [EUNJI] [DATA SAFE] lpa = 203482 +[47296.809248] bdbm: [EUNJI] [DATA SAFE] lpa = 203483 +[47296.809719] bdbm: [EUNJI] [DATA SAFE] lpa = 203484 +[47296.810194] bdbm: [EUNJI] [DATA SAFE] lpa = 203485 +[47296.810664] bdbm: [EUNJI] [DATA SAFE] lpa = 203486 +[47296.811133] bdbm: [EUNJI] [DATA SAFE] lpa = 203487 +[47296.811603] bdbm: [EUNJI] [DATA SAFE] lpa = 203488 +[47296.812073] bdbm: [EUNJI] [DATA SAFE] lpa = 203489 +[47296.812543] bdbm: [EUNJI] [DATA SAFE] lpa = 203490 +[47296.813019] bdbm: [EUNJI] [DATA SAFE] lpa = 203491 +[47296.813489] bdbm: [EUNJI] [DATA SAFE] lpa = 203492 +[47296.813964] bdbm: [EUNJI] [DATA SAFE] lpa = 203493 +[47296.814433] bdbm: [EUNJI] [DATA SAFE] lpa = 203494 +[47296.814909] bdbm: [EUNJI] [DATA SAFE] lpa = 203495 +[47296.815379] bdbm: [EUNJI] [DATA SAFE] lpa = 203496 +[47296.815848] bdbm: [EUNJI] [DATA SAFE] lpa = 203497 +[47296.816324] bdbm: [EUNJI] [DATA SAFE] lpa = 203498 +[47296.816794] bdbm: [EUNJI] [DATA SAFE] lpa = 203499 +[47296.817264] bdbm: [EUNJI] [DATA SAFE] lpa = 203500 +[47296.817739] bdbm: [EUNJI] [DATA SAFE] lpa = 203501 +[47296.818214] bdbm: [EUNJI] [DATA SAFE] lpa = 203502 +[47296.818684] bdbm: [EUNJI] [DATA SAFE] lpa = 203503 +[47296.819160] bdbm: [EUNJI] [DATA SAFE] lpa = 203504 +[47296.819629] bdbm: [EUNJI] [DATA SAFE] lpa = 203505 +[47296.820100] bdbm: [EUNJI] [DATA SAFE] lpa = 203506 +[47296.820570] bdbm: [EUNJI] [DATA SAFE] lpa = 203507 +[47296.821045] bdbm: [EUNJI] [DATA SAFE] lpa = 203508 +[47296.821521] bdbm: [EUNJI] [DATA SAFE] lpa = 203509 +[47296.821993] bdbm: [EUNJI] [DATA SAFE] lpa = 203510 +[47296.822468] bdbm: [EUNJI] [DATA SAFE] lpa = 203511 +[47296.822938] bdbm: [EUNJI] [DATA SAFE] lpa = 203512 +[47296.823415] bdbm: [EUNJI] [DATA SAFE] lpa = 203513 +[47296.823884] bdbm: [EUNJI] [DATA SAFE] lpa = 203514 +[47296.824354] bdbm: [EUNJI] [DATA SAFE] lpa = 203515 +[47296.824824] bdbm: [EUNJI] [DATA SAFE] lpa = 203516 +[47296.825294] bdbm: [EUNJI] [DATA SAFE] lpa = 203517 +[47296.825766] bdbm: [EUNJI] [DATA SAFE] lpa = 203518 +[47296.826236] bdbm: [EUNJI] [DATA SAFE] lpa = 203519 +[47296.826706] bdbm: [EUNJI] [DATA SAFE] lpa = 203520 +[47296.827176] bdbm: [EUNJI] [DATA SAFE] lpa = 203521 +[47296.827646] bdbm: [EUNJI] [DATA SAFE] lpa = 203522 +[47296.828116] bdbm: [EUNJI] [DATA SAFE] lpa = 203523 +[47296.828586] bdbm: [EUNJI] [DATA SAFE] lpa = 203524 +[47296.829057] bdbm: [EUNJI] [DATA SAFE] lpa = 203525 +[47296.829527] bdbm: [EUNJI] [DATA SAFE] lpa = 203526 +[47296.829998] bdbm: [EUNJI] [DATA SAFE] lpa = 203527 +[47296.830473] bdbm: [EUNJI] [DATA SAFE] lpa = 203528 +[47296.830943] bdbm: [EUNJI] [DATA SAFE] lpa = 203529 +[47296.831413] bdbm: [EUNJI] [DATA SAFE] lpa = 203530 +[47296.831882] bdbm: [EUNJI] [DATA SAFE] lpa = 203531 +[47296.832352] bdbm: [EUNJI] [DATA SAFE] lpa = 203532 +[47296.832822] bdbm: [EUNJI] [DATA SAFE] lpa = 203533 +[47296.833292] bdbm: [EUNJI] [DATA SAFE] lpa = 203534 +[47296.833764] bdbm: [EUNJI] [DATA SAFE] lpa = 203535 +[47296.834234] bdbm: [EUNJI] [DATA SAFE] lpa = 203536 +[47296.834704] bdbm: [EUNJI] [DATA SAFE] lpa = 203537 +[47296.835175] bdbm: [EUNJI] [DATA SAFE] lpa = 203538 +[47296.835645] bdbm: [EUNJI] [DATA SAFE] lpa = 203539 +[47296.836115] bdbm: [EUNJI] [DATA SAFE] lpa = 203540 +[47296.836586] bdbm: [EUNJI] [DATA SAFE] lpa = 203541 +[47296.837056] bdbm: [EUNJI] [DATA SAFE] lpa = 203542 +[47296.837526] bdbm: [EUNJI] [DATA SAFE] lpa = 203543 +[47296.837999] bdbm: [EUNJI] [DATA SAFE] lpa = 203544 +[47296.838468] bdbm: [EUNJI] [DATA SAFE] lpa = 203545 +[47296.838938] bdbm: [EUNJI] [DATA SAFE] lpa = 203546 +[47296.839408] bdbm: [EUNJI] [DATA SAFE] lpa = 203547 +[47296.839878] bdbm: [EUNJI] [DATA SAFE] lpa = 203548 +[47296.840349] bdbm: [EUNJI] [DATA SAFE] lpa = 203549 +[47296.840822] bdbm: [EUNJI] [DATA SAFE] lpa = 203550 +[47296.841307] bdbm: [EUNJI] [DATA SAFE] lpa = 203551 +[47296.841786] bdbm: [EUNJI] [DATA SAFE] lpa = 203552 +[47296.842264] bdbm: [EUNJI] [DATA SAFE] lpa = 203553 +[47296.842744] bdbm: [EUNJI] [DATA SAFE] lpa = 203554 +[47296.843219] bdbm: [EUNJI] [DATA SAFE] lpa = 203555 +[47296.843689] bdbm: [EUNJI] [DATA SAFE] lpa = 203556 +[47296.844159] bdbm: [EUNJI] [DATA SAFE] lpa = 203557 +[47296.844634] bdbm: [EUNJI] [DATA SAFE] lpa = 203558 +[47296.845110] bdbm: [EUNJI] [DATA SAFE] lpa = 203559 +[47296.845586] bdbm: [EUNJI] [DATA SAFE] lpa = 203560 +[47296.846069] bdbm: [EUNJI] [DATA SAFE] lpa = 203561 +[47296.846553] bdbm: [EUNJI] [DATA SAFE] lpa = 203562 +[47296.847027] bdbm: [EUNJI] [DATA SAFE] lpa = 203563 +[47296.847501] bdbm: [EUNJI] [DATA SAFE] lpa = 203564 +[47296.847976] bdbm: [EUNJI] [DATA SAFE] lpa = 203565 +[47296.848451] bdbm: [EUNJI] [DATA SAFE] lpa = 203566 +[47296.848925] bdbm: [EUNJI] [DATA SAFE] lpa = 203567 +[47296.849399] bdbm: [EUNJI] [DATA SAFE] lpa = 203568 +[47296.849876] bdbm: [EUNJI] [DATA SAFE] lpa = 203569 +[47296.850350] bdbm: [EUNJI] [DATA SAFE] lpa = 203570 +[47296.850824] bdbm: [EUNJI] [DATA SAFE] lpa = 203571 +[47296.851299] bdbm: [EUNJI] [DATA SAFE] lpa = 203572 +[47296.851774] bdbm: [EUNJI] [DATA SAFE] lpa = 203573 +[47296.852248] bdbm: [EUNJI] [DATA SAFE] lpa = 203574 +[47296.852723] bdbm: [EUNJI] [DATA SAFE] lpa = 203575 +[47296.853197] bdbm: [EUNJI] [DATA SAFE] lpa = 203576 +[47296.853674] bdbm: [EUNJI] [DATA SAFE] lpa = 203577 +[47296.854151] bdbm: [EUNJI] [DATA SAFE] lpa = 203578 +[47296.854627] bdbm: [EUNJI] [DATA SAFE] lpa = 203579 +[47296.855103] bdbm: [EUNJI] [DATA SAFE] lpa = 203580 +[47296.855575] bdbm: [EUNJI] [DATA SAFE] lpa = 203581 +[47296.856045] bdbm: [EUNJI] [DATA SAFE] lpa = 203582 +[47296.856518] bdbm: [EUNJI] [DATA SAFE] lpa = 203583 +[47296.856993] bdbm: [EUNJI] [DATA SAFE] lpa = 203584 +[47296.857469] bdbm: [EUNJI] [DATA SAFE] lpa = 203585 +[47296.857940] bdbm: [EUNJI] [DATA SAFE] lpa = 203586 +[47296.858417] bdbm: [EUNJI] [DATA SAFE] lpa = 203587 +[47296.858893] bdbm: [EUNJI] [DATA SAFE] lpa = 203588 +[47296.859364] bdbm: [EUNJI] [DATA SAFE] lpa = 203589 +[47296.859835] bdbm: [EUNJI] [DATA SAFE] lpa = 203590 +[47296.860309] bdbm: [EUNJI] [DATA SAFE] lpa = 203591 +[47296.860784] bdbm: [EUNJI] [DATA SAFE] lpa = 203592 +[47296.861255] bdbm: [EUNJI] [DATA SAFE] lpa = 203593 +[47296.861731] bdbm: [EUNJI] [DATA SAFE] lpa = 203594 +[47296.862203] bdbm: [EUNJI] [DATA SAFE] lpa = 203595 +[47296.862679] bdbm: [EUNJI] [DATA SAFE] lpa = 203596 +[47296.863155] bdbm: [EUNJI] [DATA SAFE] lpa = 203597 +[47296.863628] bdbm: [EUNJI] [DATA SAFE] lpa = 203598 +[47296.864105] bdbm: [EUNJI] [DATA SAFE] lpa = 203599 +[47296.864581] bdbm: [EUNJI] [DATA SAFE] lpa = 203600 +[47296.865058] bdbm: [EUNJI] [DATA SAFE] lpa = 203601 +[47296.865536] bdbm: [EUNJI] [DATA SAFE] lpa = 203602 +[47296.866014] bdbm: [EUNJI] [DATA SAFE] lpa = 203603 +[47296.866488] bdbm: [EUNJI] [DATA SAFE] lpa = 203604 +[47296.866961] bdbm: [EUNJI] [DATA SAFE] lpa = 203605 +[47296.867438] bdbm: [EUNJI] [DATA SAFE] lpa = 203606 +[47296.867914] bdbm: [EUNJI] [DATA SAFE] lpa = 203607 +[47296.868391] bdbm: [EUNJI] [DATA SAFE] lpa = 203608 +[47296.868867] bdbm: [EUNJI] [DATA SAFE] lpa = 203609 +[47296.869341] bdbm: [EUNJI] [DATA SAFE] lpa = 203610 +[47296.869817] bdbm: [EUNJI] [DATA SAFE] lpa = 203611 +[47296.870294] bdbm: [EUNJI] [DATA SAFE] lpa = 203612 +[47296.870773] bdbm: [EUNJI] [DATA SAFE] lpa = 203613 +[47296.871249] bdbm: [EUNJI] [DATA SAFE] lpa = 203614 +[47296.871726] bdbm: [EUNJI] [DATA SAFE] lpa = 203615 +[47296.872205] bdbm: [EUNJI] [DATA SAFE] lpa = 203616 +[47296.872683] bdbm: [EUNJI] [DATA SAFE] lpa = 203617 +[47296.873161] bdbm: [EUNJI] [DATA SAFE] lpa = 203618 +[47296.873639] bdbm: [EUNJI] [DATA SAFE] lpa = 203619 +[47296.874116] bdbm: [EUNJI] [DATA SAFE] lpa = 203620 +[47296.874593] bdbm: [EUNJI] [DATA SAFE] lpa = 203621 +[47296.875069] bdbm: [EUNJI] [DATA SAFE] lpa = 203622 +[47296.875543] bdbm: [EUNJI] [DATA SAFE] lpa = 203623 +[47296.876020] bdbm: [EUNJI] [DATA SAFE] lpa = 203624 +[47296.876498] bdbm: [EUNJI] [DATA SAFE] lpa = 203625 +[47296.876974] bdbm: [EUNJI] [DATA SAFE] lpa = 203626 +[47296.877451] bdbm: [EUNJI] [DATA SAFE] lpa = 203627 +[47296.877930] bdbm: [EUNJI] [DATA SAFE] lpa = 203628 +[47296.878406] bdbm: [EUNJI] [DATA SAFE] lpa = 203629 +[47296.878883] bdbm: [EUNJI] [DATA SAFE] lpa = 203630 +[47296.879359] bdbm: [EUNJI] [DATA SAFE] lpa = 203631 +[47296.879836] bdbm: [EUNJI] [DATA SAFE] lpa = 203632 +[47296.880312] bdbm: [EUNJI] [DATA SAFE] lpa = 203633 +[47296.880786] bdbm: [EUNJI] [DATA SAFE] lpa = 203634 +[47296.881259] bdbm: [EUNJI] [DATA SAFE] lpa = 203635 +[47296.881738] bdbm: [EUNJI] [DATA SAFE] lpa = 203636 +[47296.882216] bdbm: [EUNJI] [DATA SAFE] lpa = 203637 +[47296.882695] bdbm: [EUNJI] [DATA SAFE] lpa = 203638 +[47296.883168] bdbm: [EUNJI] [DATA SAFE] lpa = 203639 +[47296.883645] bdbm: [EUNJI] [DATA SAFE] lpa = 203640 +[47296.884123] bdbm: [EUNJI] [DATA SAFE] lpa = 203641 +[47296.884594] bdbm: [EUNJI] [DATA SAFE] lpa = 203642 +[47296.885069] bdbm: [EUNJI] [DATA SAFE] lpa = 203643 +[47296.885545] bdbm: [EUNJI] [DATA SAFE] lpa = 203644 +[47296.886016] bdbm: [EUNJI] [DATA SAFE] lpa = 203645 +[47296.886488] bdbm: [EUNJI] [DATA SAFE] lpa = 203646 +[47296.886968] bdbm: [EUNJI] [DATA SAFE] lpa = 203647 +[47296.887439] bdbm: [EUNJI] [DATA SAFE] lpa = 203648 +[47296.887909] bdbm: [EUNJI] [DATA SAFE] lpa = 203649 +[47296.888385] bdbm: [EUNJI] [DATA SAFE] lpa = 203650 +[47296.888856] bdbm: [EUNJI] [DATA SAFE] lpa = 203651 +[47296.889332] bdbm: [EUNJI] [DATA SAFE] lpa = 203652 +[47296.889808] bdbm: [EUNJI] [DATA SAFE] lpa = 203653 +[47296.890280] bdbm: [EUNJI] [DATA SAFE] lpa = 203654 +[47296.890754] bdbm: [EUNJI] [DATA SAFE] lpa = 203655 +[47296.891226] bdbm: [EUNJI] [DATA SAFE] lpa = 203656 +[47296.891697] bdbm: [EUNJI] [DATA SAFE] lpa = 203657 +[47296.892173] bdbm: [EUNJI] [DATA SAFE] lpa = 203658 +[47296.892646] bdbm: [EUNJI] [DATA SAFE] lpa = 203659 +[47296.893120] bdbm: [EUNJI] [DATA SAFE] lpa = 203660 +[47296.893592] bdbm: [EUNJI] [DATA SAFE] lpa = 203661 +[47296.894079] bdbm: [EUNJI] [DATA SAFE] lpa = 203662 +[47296.894555] bdbm: [EUNJI] [DATA SAFE] lpa = 203663 +[47296.895028] bdbm: [EUNJI] [DATA SAFE] lpa = 203664 +[47296.895505] bdbm: [EUNJI] [DATA SAFE] lpa = 203665 +[47296.895983] bdbm: [EUNJI] [DATA SAFE] lpa = 203666 +[47296.896456] bdbm: [EUNJI] [DATA SAFE] lpa = 203667 +[47296.896933] bdbm: [EUNJI] [DATA SAFE] lpa = 203668 +[47296.897410] bdbm: [EUNJI] [DATA SAFE] lpa = 203669 +[47296.897882] bdbm: [EUNJI] [DATA SAFE] lpa = 203670 +[47296.898359] bdbm: [EUNJI] [DATA SAFE] lpa = 203671 +[47296.898835] bdbm: [EUNJI] [DATA SAFE] lpa = 203672 +[47296.899312] bdbm: [EUNJI] [DATA SAFE] lpa = 203673 +[47296.899788] bdbm: [EUNJI] [DATA SAFE] lpa = 203674 +[47296.900261] bdbm: [EUNJI] [DATA SAFE] lpa = 203675 +[47296.900738] bdbm: [EUNJI] [DATA SAFE] lpa = 203676 +[47296.901216] bdbm: [EUNJI] [DATA SAFE] lpa = 203677 +[47296.901694] bdbm: [EUNJI] [DATA SAFE] lpa = 203678 +[47296.902171] bdbm: [EUNJI] [DATA SAFE] lpa = 203679 +[47296.902647] bdbm: [EUNJI] [DATA SAFE] lpa = 203680 +[47296.903124] bdbm: [EUNJI] [DATA SAFE] lpa = 203681 +[47296.903596] bdbm: [EUNJI] [DATA SAFE] lpa = 203682 +[47296.904073] bdbm: [EUNJI] [DATA SAFE] lpa = 203683 +[47296.904548] bdbm: [EUNJI] [DATA SAFE] lpa = 203684 +[47296.905019] bdbm: [EUNJI] [DATA SAFE] lpa = 203685 +[47296.905496] bdbm: [EUNJI] [DATA SAFE] lpa = 203686 +[47296.905970] bdbm: [EUNJI] [DATA SAFE] lpa = 203687 +[47296.906447] bdbm: [EUNJI] [DATA SAFE] lpa = 203688 +[47296.906924] bdbm: [EUNJI] [DATA SAFE] lpa = 203689 +[47296.907400] bdbm: [EUNJI] [DATA SAFE] lpa = 203690 +[47296.907875] bdbm: [EUNJI] [DATA SAFE] lpa = 203691 +[47296.908350] bdbm: [EUNJI] [DATA SAFE] lpa = 203692 +[47296.908827] bdbm: [EUNJI] [DATA SAFE] lpa = 203693 +[47296.909303] bdbm: [EUNJI] [DATA SAFE] lpa = 203694 +[47296.909779] bdbm: [EUNJI] [DATA SAFE] lpa = 203695 +[47296.910254] bdbm: [EUNJI] [DATA SAFE] lpa = 203696 +[47296.910729] bdbm: [EUNJI] [DATA SAFE] lpa = 203697 +[47296.911205] bdbm: [EUNJI] [DATA SAFE] lpa = 203698 +[47296.911679] bdbm: [EUNJI] [DATA SAFE] lpa = 203699 +[47296.912155] bdbm: [EUNJI] [DATA SAFE] lpa = 203700 +[47296.912630] bdbm: [EUNJI] [DATA SAFE] lpa = 203701 +[47296.913102] bdbm: [EUNJI] [DATA SAFE] lpa = 203702 +[47296.913577] bdbm: [EUNJI] [DATA SAFE] lpa = 203703 +[47296.914053] bdbm: [EUNJI] [DATA SAFE] lpa = 203704 +[47296.914527] bdbm: [EUNJI] [DATA SAFE] lpa = 203705 +[47296.915001] bdbm: [EUNJI] [DATA SAFE] lpa = 203706 +[47296.915474] bdbm: [EUNJI] [DATA SAFE] lpa = 203707 +[47296.915944] bdbm: [EUNJI] [DATA SAFE] lpa = 203708 +[47296.916418] bdbm: [EUNJI] [DATA SAFE] lpa = 203709 +[47296.916892] bdbm: [EUNJI] [DATA SAFE] lpa = 203710 +[47296.917367] bdbm: [EUNJI] [DATA SAFE] lpa = 203711 +[47296.917855] bdbm: [EUNJI] [DATA SAFE] lpa = 203712 +[47296.918330] bdbm: [EUNJI] [DATA SAFE] lpa = 203713 +[47296.918803] bdbm: [EUNJI] [DATA SAFE] lpa = 203714 +[47296.919278] bdbm: [EUNJI] [DATA SAFE] lpa = 203715 +[47296.919752] bdbm: [EUNJI] [DATA SAFE] lpa = 203716 +[47296.920225] bdbm: [EUNJI] [DATA SAFE] lpa = 203717 +[47296.920696] bdbm: [EUNJI] [DATA SAFE] lpa = 203718 +[47296.921170] bdbm: [EUNJI] [DATA SAFE] lpa = 203719 +[47296.921642] bdbm: [EUNJI] [DATA SAFE] lpa = 203720 +[47296.922119] bdbm: [EUNJI] [DATA SAFE] lpa = 203721 +[47296.922594] bdbm: [EUNJI] [DATA SAFE] lpa = 203722 +[47296.923066] bdbm: [EUNJI] [DATA SAFE] lpa = 203723 +[47296.923539] bdbm: [EUNJI] [DATA SAFE] lpa = 203724 +[47296.924012] bdbm: [EUNJI] [DATA SAFE] lpa = 203725 +[47296.924485] bdbm: [EUNJI] [DATA SAFE] lpa = 203726 +[47296.924960] bdbm: [EUNJI] [DATA SAFE] lpa = 203727 +[47296.925434] bdbm: [EUNJI] [DATA SAFE] lpa = 203728 +[47296.925906] bdbm: [EUNJI] [DATA SAFE] lpa = 203729 +[47296.926382] bdbm: [EUNJI] [DATA SAFE] lpa = 203730 +[47296.926855] bdbm: [EUNJI] [DATA SAFE] lpa = 203731 +[47296.927329] bdbm: [EUNJI] [DATA SAFE] lpa = 203732 +[47296.927804] bdbm: [EUNJI] [DATA SAFE] lpa = 203733 +[47296.928277] bdbm: [EUNJI] [DATA SAFE] lpa = 203734 +[47296.928751] bdbm: [EUNJI] [DATA SAFE] lpa = 203735 +[47296.929228] bdbm: [EUNJI] [DATA SAFE] lpa = 203736 +[47296.929704] bdbm: [EUNJI] [DATA SAFE] lpa = 203737 +[47296.930178] bdbm: [EUNJI] [DATA SAFE] lpa = 203738 +[47296.930652] bdbm: [EUNJI] [DATA SAFE] lpa = 203739 +[47296.931126] bdbm: [EUNJI] [DATA SAFE] lpa = 203740 +[47296.931601] bdbm: [EUNJI] [DATA SAFE] lpa = 203741 +[47296.932074] bdbm: [EUNJI] [DATA SAFE] lpa = 203742 +[47296.932550] bdbm: [EUNJI] [DATA SAFE] lpa = 203743 +[47296.933024] bdbm: [EUNJI] [DATA SAFE] lpa = 203744 +[47296.933499] bdbm: [EUNJI] [DATA SAFE] lpa = 203745 +[47296.933973] bdbm: [EUNJI] [DATA SAFE] lpa = 203746 +[47296.934448] bdbm: [EUNJI] [DATA SAFE] lpa = 203747 +[47296.934923] bdbm: [EUNJI] [DATA SAFE] lpa = 203748 +[47296.935394] bdbm: [EUNJI] [DATA SAFE] lpa = 203749 +[47296.935869] bdbm: [EUNJI] [DATA SAFE] lpa = 203750 +[47296.936343] bdbm: [EUNJI] [DATA SAFE] lpa = 203751 +[47296.936818] bdbm: [EUNJI] [DATA SAFE] lpa = 203752 +[47296.937291] bdbm: [EUNJI] [DATA SAFE] lpa = 203753 +[47296.937781] bdbm: [EUNJI] [DATA SAFE] lpa = 203754 +[47296.938288] bdbm: [EUNJI] [DATA SAFE] lpa = 203755 +[47296.938764] bdbm: [EUNJI] [DATA SAFE] lpa = 203756 +[47296.939241] bdbm: [EUNJI] [DATA SAFE] lpa = 203757 +[47296.939718] bdbm: [EUNJI] [DATA SAFE] lpa = 203758 +[47296.940191] bdbm: [EUNJI] [DATA SAFE] lpa = 203759 +[47296.940669] bdbm: [EUNJI] [DATA SAFE] lpa = 203760 +[47296.941146] bdbm: [EUNJI] [DATA SAFE] lpa = 203761 +[47296.941631] bdbm: [EUNJI] [DATA SAFE] lpa = 203762 +[47296.942109] bdbm: [EUNJI] [DATA SAFE] lpa = 203763 +[47296.942588] bdbm: [EUNJI] [DATA SAFE] lpa = 203764 +[47296.943066] bdbm: [EUNJI] [DATA SAFE] lpa = 203765 +[47296.943540] bdbm: [EUNJI] [DATA SAFE] lpa = 203766 +[47296.944014] bdbm: [EUNJI] [DATA SAFE] lpa = 203767 +[47296.944491] bdbm: [EUNJI] [DATA SAFE] lpa = 203768 +[47296.944967] bdbm: [EUNJI] [DATA SAFE] lpa = 203769 +[47296.945436] bdbm: [EUNJI] [DATA SAFE] lpa = 203770 +[47296.945913] bdbm: [EUNJI] [DATA SAFE] lpa = 203771 +[47296.946386] bdbm: [EUNJI] [DATA SAFE] lpa = 203772 +[47296.946857] bdbm: [EUNJI] [DATA SAFE] lpa = 203773 +[47296.947328] bdbm: [EUNJI] [DATA SAFE] lpa = 203774 +[47296.947798] bdbm: [EUNJI] [DATA SAFE] lpa = 203775 +[47296.948271] bdbm: [EUNJI] [DATA SAFE] lpa = 203776 +[47296.948743] bdbm: [EUNJI] [DATA SAFE] lpa = 203777 +[47296.949213] bdbm: [EUNJI] [DATA SAFE] lpa = 203778 +[47296.949686] bdbm: [EUNJI] [DATA SAFE] lpa = 203779 +[47296.950162] bdbm: [EUNJI] [DATA SAFE] lpa = 203780 +[47296.950638] bdbm: [EUNJI] [DATA SAFE] lpa = 203781 +[47296.951108] bdbm: [EUNJI] [DATA SAFE] lpa = 203782 +[47296.951580] bdbm: [EUNJI] [DATA SAFE] lpa = 203783 +[47296.952052] bdbm: [EUNJI] [DATA SAFE] lpa = 203784 +[47296.952524] bdbm: [EUNJI] [DATA SAFE] lpa = 203785 +[47296.953000] bdbm: [EUNJI] [DATA SAFE] lpa = 203786 +[47296.953476] bdbm: [EUNJI] [DATA SAFE] lpa = 203787 +[47296.953952] bdbm: [EUNJI] [DATA SAFE] lpa = 203788 +[47296.954428] bdbm: [EUNJI] [DATA SAFE] lpa = 203789 +[47296.954902] bdbm: [EUNJI] [DATA SAFE] lpa = 203790 +[47296.955375] bdbm: [EUNJI] [DATA SAFE] lpa = 203791 +[47296.955848] bdbm: [EUNJI] [DATA SAFE] lpa = 203792 +[47296.956321] bdbm: [EUNJI] [DATA SAFE] lpa = 203793 +[47296.956794] bdbm: [EUNJI] [DATA SAFE] lpa = 203794 +[47296.957268] bdbm: [EUNJI] [DATA SAFE] lpa = 203795 +[47296.957742] bdbm: [EUNJI] [DATA SAFE] lpa = 203796 +[47296.958218] bdbm: [EUNJI] [DATA SAFE] lpa = 203797 +[47296.958689] bdbm: [EUNJI] [DATA SAFE] lpa = 203798 +[47296.959163] bdbm: [EUNJI] [DATA SAFE] lpa = 203799 +[47296.959638] bdbm: [EUNJI] [DATA SAFE] lpa = 203800 +[47296.960112] bdbm: [EUNJI] [DATA SAFE] lpa = 203801 +[47296.960589] bdbm: [EUNJI] [DATA SAFE] lpa = 203802 +[47296.961062] bdbm: [EUNJI] [DATA SAFE] lpa = 203803 +[47296.961536] bdbm: [EUNJI] [DATA SAFE] lpa = 203804 +[47296.962013] bdbm: [EUNJI] [DATA SAFE] lpa = 203805 +[47296.962487] bdbm: [EUNJI] [DATA SAFE] lpa = 203806 +[47296.962962] bdbm: [EUNJI] [DATA SAFE] lpa = 203807 +[47296.963436] bdbm: [EUNJI] [DATA SAFE] lpa = 203808 +[47296.963910] bdbm: [EUNJI] [DATA SAFE] lpa = 203809 +[47296.964385] bdbm: [EUNJI] [DATA SAFE] lpa = 203810 +[47296.964860] bdbm: [EUNJI] [DATA SAFE] lpa = 203811 +[47296.965334] bdbm: [EUNJI] [DATA SAFE] lpa = 203812 +[47296.965805] bdbm: [EUNJI] [DATA SAFE] lpa = 203813 +[47296.966280] bdbm: [EUNJI] [DATA SAFE] lpa = 203814 +[47296.966755] bdbm: [EUNJI] [DATA SAFE] lpa = 203815 +[47296.967231] bdbm: [EUNJI] [DATA SAFE] lpa = 203816 +[47296.967705] bdbm: [EUNJI] [DATA SAFE] lpa = 203817 +[47296.968178] bdbm: [EUNJI] [DATA SAFE] lpa = 203818 +[47296.968653] bdbm: [EUNJI] [DATA SAFE] lpa = 203819 +[47296.969128] bdbm: [EUNJI] [DATA SAFE] lpa = 203820 +[47296.969605] bdbm: [EUNJI] [DATA SAFE] lpa = 203821 +[47296.970105] bdbm: [EUNJI] [DATA SAFE] lpa = 203822 +[47296.970577] bdbm: [EUNJI] [DATA SAFE] lpa = 203823 +[47296.971047] bdbm: [EUNJI] [DATA SAFE] lpa = 203824 +[47296.971524] bdbm: [EUNJI] [DATA SAFE] lpa = 203825 +[47296.972021] bdbm: [EUNJI] [DATA SAFE] lpa = 203826 +[47296.972512] bdbm: [EUNJI] [DATA SAFE] lpa = 203827 +[47296.972986] bdbm: [EUNJI] [DATA SAFE] lpa = 203828 +[47296.973460] bdbm: [EUNJI] [DATA SAFE] lpa = 203829 +[47296.973932] bdbm: [EUNJI] [DATA SAFE] lpa = 203830 +[47296.974430] bdbm: [EUNJI] [DATA SAFE] lpa = 203831 +[47296.974951] bdbm: [EUNJI] [DATA SAFE] lpa = 203832 +[47296.975449] bdbm: [EUNJI] [DATA SAFE] lpa = 203833 +[47296.975926] bdbm: [EUNJI] [DATA SAFE] lpa = 203834 +[47296.976401] bdbm: [EUNJI] [DATA SAFE] lpa = 203835 +[47296.976869] bdbm: [EUNJI] [DATA SAFE] lpa = 203836 +[47296.977338] bdbm: [EUNJI] [DATA SAFE] lpa = 203837 +[47296.977811] bdbm: [EUNJI] [DATA SAFE] lpa = 203838 +[47296.978285] bdbm: [EUNJI] [DATA SAFE] lpa = 203839 +[47296.978753] bdbm: [EUNJI] [DATA SAFE] lpa = 203840 +[47296.979221] bdbm: [EUNJI] [DATA SAFE] lpa = 203841 +[47296.979689] bdbm: [EUNJI] [DATA SAFE] lpa = 203842 +[47296.980158] bdbm: [EUNJI] [DATA SAFE] lpa = 203843 +[47296.980631] bdbm: [EUNJI] [DATA SAFE] lpa = 203844 +[47296.981105] bdbm: [EUNJI] [DATA SAFE] lpa = 203845 +[47296.981578] bdbm: [EUNJI] [DATA SAFE] lpa = 203846 +[47296.982050] bdbm: [EUNJI] [DATA SAFE] lpa = 203847 +[47296.982522] bdbm: [EUNJI] [DATA SAFE] lpa = 203848 +[47296.982990] bdbm: [EUNJI] [DATA SAFE] lpa = 203849 +[47296.983464] bdbm: [EUNJI] [DATA SAFE] lpa = 203850 +[47296.983938] bdbm: [EUNJI] [DATA SAFE] lpa = 203851 +[47296.984406] bdbm: [EUNJI] [DATA SAFE] lpa = 203852 +[47296.984875] bdbm: [EUNJI] [DATA SAFE] lpa = 203853 +[47296.985344] bdbm: [EUNJI] [DATA SAFE] lpa = 203854 +[47296.985816] bdbm: [EUNJI] [DATA SAFE] lpa = 203855 +[47296.986288] bdbm: [EUNJI] [DATA SAFE] lpa = 203856 +[47296.986760] bdbm: [EUNJI] [DATA SAFE] lpa = 203857 +[47296.987232] bdbm: [EUNJI] [DATA SAFE] lpa = 203858 +[47296.987703] bdbm: [EUNJI] [DATA SAFE] lpa = 203859 +[47296.988175] bdbm: [EUNJI] [DATA SAFE] lpa = 203860 +[47296.988646] bdbm: [EUNJI] [DATA SAFE] lpa = 203861 +[47296.989118] bdbm: [EUNJI] [DATA SAFE] lpa = 203862 +[47296.989591] bdbm: [EUNJI] [DATA SAFE] lpa = 203863 +[47296.990086] bdbm: [EUNJI] [DATA SAFE] lpa = 203864 +[47296.990565] bdbm: [EUNJI] [DATA SAFE] lpa = 203865 +[47296.991041] bdbm: [EUNJI] [DATA SAFE] lpa = 203866 +[47296.991510] bdbm: [EUNJI] [DATA SAFE] lpa = 203867 +[47296.991980] bdbm: [EUNJI] [DATA SAFE] lpa = 203868 +[47296.992455] bdbm: [EUNJI] [DATA SAFE] lpa = 203869 +[47296.992925] bdbm: [EUNJI] [DATA SAFE] lpa = 203870 +[47296.993396] bdbm: [EUNJI] [DATA SAFE] lpa = 203871 +[47296.993867] bdbm: [EUNJI] [DATA SAFE] lpa = 203872 +[47296.994341] bdbm: [EUNJI] [DATA SAFE] lpa = 203873 +[47296.994811] bdbm: [EUNJI] [DATA SAFE] lpa = 203874 +[47296.995286] bdbm: [EUNJI] [DATA SAFE] lpa = 203875 +[47296.995762] bdbm: [EUNJI] [DATA SAFE] lpa = 203876 +[47296.996237] bdbm: [EUNJI] [DATA SAFE] lpa = 203877 +[47296.996713] bdbm: [EUNJI] [DATA SAFE] lpa = 203878 +[47296.997188] bdbm: [EUNJI] [DATA SAFE] lpa = 203879 +[47296.997662] bdbm: [EUNJI] [DATA SAFE] lpa = 203880 +[47296.998133] bdbm: [EUNJI] [DATA SAFE] lpa = 203881 +[47296.998605] bdbm: [EUNJI] [DATA SAFE] lpa = 203882 +[47296.999075] bdbm: [EUNJI] [DATA SAFE] lpa = 203883 +[47296.999546] bdbm: [EUNJI] [DATA SAFE] lpa = 203884 +[47297.000016] bdbm: [EUNJI] [DATA SAFE] lpa = 203885 +[47297.000487] bdbm: [EUNJI] [DATA SAFE] lpa = 203886 +[47297.000957] bdbm: [EUNJI] [DATA SAFE] lpa = 203887 +[47297.001427] bdbm: [EUNJI] [DATA SAFE] lpa = 203888 +[47297.001903] bdbm: [EUNJI] [DATA SAFE] lpa = 203889 +[47297.002378] bdbm: [EUNJI] [DATA SAFE] lpa = 203890 +[47297.002854] bdbm: [EUNJI] [DATA SAFE] lpa = 203891 +[47297.003329] bdbm: [EUNJI] [DATA SAFE] lpa = 203892 +[47297.003800] bdbm: [EUNJI] [DATA SAFE] lpa = 203893 +[47297.004276] bdbm: [EUNJI] [DATA SAFE] lpa = 203894 +[47297.004746] bdbm: [EUNJI] [DATA SAFE] lpa = 203895 +[47297.005222] bdbm: [EUNJI] [DATA SAFE] lpa = 203896 +[47297.005698] bdbm: [EUNJI] [DATA SAFE] lpa = 203897 +[47297.006168] bdbm: [EUNJI] [DATA SAFE] lpa = 203898 +[47297.006639] bdbm: [EUNJI] [DATA SAFE] lpa = 203899 +[47297.007109] bdbm: [EUNJI] [DATA SAFE] lpa = 203900 +[47297.007580] bdbm: [EUNJI] [DATA SAFE] lpa = 203901 +[47297.008050] bdbm: [EUNJI] [DATA SAFE] lpa = 203902 +[47297.008521] bdbm: [EUNJI] [DATA SAFE] lpa = 203903 +[47297.008993] bdbm: [EUNJI] [DATA SAFE] lpa = 203904 +[47297.009463] bdbm: [EUNJI] [DATA SAFE] lpa = 203905 +[47297.009934] bdbm: [EUNJI] [DATA SAFE] lpa = 203906 +[47297.010403] bdbm: [EUNJI] [DATA SAFE] lpa = 203907 +[47297.010873] bdbm: [EUNJI] [DATA SAFE] lpa = 203908 +[47297.011343] bdbm: [EUNJI] [DATA SAFE] lpa = 203909 +[47297.011813] bdbm: [EUNJI] [DATA SAFE] lpa = 203910 +[47297.012283] bdbm: [EUNJI] [DATA SAFE] lpa = 203911 +[47297.012753] bdbm: [EUNJI] [DATA SAFE] lpa = 203912 +[47297.013223] bdbm: [EUNJI] [DATA SAFE] lpa = 203913 +[47297.013695] bdbm: [EUNJI] [DATA SAFE] lpa = 203914 +[47297.014166] bdbm: [EUNJI] [DATA SAFE] lpa = 203915 +[47297.014638] bdbm: [EUNJI] [DATA SAFE] lpa = 203916 +[47297.015109] bdbm: [EUNJI] [DATA SAFE] lpa = 203917 +[47297.015581] bdbm: [EUNJI] [DATA SAFE] lpa = 203918 +[47297.016052] bdbm: [EUNJI] [DATA SAFE] lpa = 203919 +[47297.016523] bdbm: [EUNJI] [DATA SAFE] lpa = 203920 +[47297.016995] bdbm: [EUNJI] [DATA SAFE] lpa = 203921 +[47297.017466] bdbm: [EUNJI] [DATA SAFE] lpa = 203922 +[47297.017939] bdbm: [EUNJI] [DATA SAFE] lpa = 203923 +[47297.018421] bdbm: [EUNJI] [DATA SAFE] lpa = 203924 +[47297.018896] bdbm: [EUNJI] [DATA SAFE] lpa = 203925 +[47297.019369] bdbm: [EUNJI] [DATA SAFE] lpa = 203926 +[47297.019846] bdbm: [EUNJI] [DATA SAFE] lpa = 203927 +[47297.020322] bdbm: [EUNJI] [DATA SAFE] lpa = 203928 +[47297.020799] bdbm: [EUNJI] [DATA SAFE] lpa = 203929 +[47297.021277] bdbm: [EUNJI] [DATA SAFE] lpa = 203930 +[47297.021754] bdbm: [EUNJI] [DATA SAFE] lpa = 203931 +[47297.022228] bdbm: [EUNJI] [DATA SAFE] lpa = 203932 +[47297.022706] bdbm: [EUNJI] [DATA SAFE] lpa = 203933 +[47297.023184] bdbm: [EUNJI] [DATA SAFE] lpa = 203934 +[47297.023662] bdbm: [EUNJI] [DATA SAFE] lpa = 203935 +[47297.024138] bdbm: [EUNJI] [DATA SAFE] lpa = 203936 +[47297.024614] bdbm: [EUNJI] [DATA SAFE] lpa = 203937 +[47297.025091] bdbm: [EUNJI] [DATA SAFE] lpa = 203938 +[47297.025568] bdbm: [EUNJI] [DATA SAFE] lpa = 203939 +[47297.026042] bdbm: [EUNJI] [DATA SAFE] lpa = 203940 +[47297.026518] bdbm: [EUNJI] [DATA SAFE] lpa = 203941 +[47297.026995] bdbm: [EUNJI] [DATA SAFE] lpa = 203942 +[47297.027472] bdbm: [EUNJI] [DATA SAFE] lpa = 203943 +[47297.027949] bdbm: [EUNJI] [DATA SAFE] lpa = 203944 +[47297.028428] bdbm: [EUNJI] [DATA SAFE] lpa = 203945 +[47297.028903] bdbm: [EUNJI] [DATA SAFE] lpa = 203946 +[47297.029379] bdbm: [EUNJI] [DATA SAFE] lpa = 203947 +[47297.029855] bdbm: [EUNJI] [DATA SAFE] lpa = 203948 +[47297.030329] bdbm: [EUNJI] [DATA SAFE] lpa = 203949 +[47297.030806] bdbm: [EUNJI] [DATA SAFE] lpa = 203950 +[47297.031281] bdbm: [EUNJI] [DATA SAFE] lpa = 203951 +[47297.031754] bdbm: [EUNJI] [DATA SAFE] lpa = 203952 +[47297.032228] bdbm: [EUNJI] [DATA SAFE] lpa = 203953 +[47297.032703] bdbm: [EUNJI] [DATA SAFE] lpa = 203954 +[47297.033177] bdbm: [EUNJI] [DATA SAFE] lpa = 203955 +[47297.033652] bdbm: [EUNJI] [DATA SAFE] lpa = 203956 +[47297.034140] bdbm: [EUNJI] [DATA SAFE] lpa = 203957 +[47297.034614] bdbm: [EUNJI] [DATA SAFE] lpa = 203958 +[47297.035093] bdbm: [EUNJI] [DATA SAFE] lpa = 203959 +[47297.035567] bdbm: [EUNJI] [DATA SAFE] lpa = 203960 +[47297.036040] bdbm: [EUNJI] [DATA SAFE] lpa = 203961 +[47297.036512] bdbm: [EUNJI] [DATA SAFE] lpa = 203962 +[47297.036988] bdbm: [EUNJI] [DATA SAFE] lpa = 203963 +[47297.037461] bdbm: [EUNJI] [DATA SAFE] lpa = 203964 +[47297.037931] bdbm: [EUNJI] [DATA SAFE] lpa = 203965 +[47297.038405] bdbm: [EUNJI] [DATA SAFE] lpa = 203966 +[47297.038879] bdbm: [EUNJI] [DATA SAFE] lpa = 203967 +[47297.039353] bdbm: [EUNJI] [DATA SAFE] lpa = 203968 +[47297.039825] bdbm: [EUNJI] [DATA SAFE] lpa = 203969 +[47297.040298] bdbm: [EUNJI] [DATA SAFE] lpa = 203970 +[47297.040772] bdbm: [EUNJI] [DATA SAFE] lpa = 203971 +[47297.041245] bdbm: [EUNJI] [DATA SAFE] lpa = 203972 +[47297.041717] bdbm: [EUNJI] [DATA SAFE] lpa = 203973 +[47297.042194] bdbm: [EUNJI] [DATA SAFE] lpa = 203974 +[47297.042670] bdbm: [EUNJI] [DATA SAFE] lpa = 203975 +[47297.043146] bdbm: [EUNJI] [DATA SAFE] lpa = 203976 +[47297.043620] bdbm: [EUNJI] [DATA SAFE] lpa = 203977 +[47297.044094] bdbm: [EUNJI] [DATA SAFE] lpa = 203978 +[47297.044567] bdbm: [EUNJI] [DATA SAFE] lpa = 203979 +[47297.045040] bdbm: [EUNJI] [DATA SAFE] lpa = 203980 +[47297.045515] bdbm: [EUNJI] [DATA SAFE] lpa = 203981 +[47297.045989] bdbm: [EUNJI] [DATA SAFE] lpa = 203982 +[47297.046465] bdbm: [EUNJI] [DATA SAFE] lpa = 203983 +[47297.046938] bdbm: [EUNJI] [DATA SAFE] lpa = 203984 +[47297.047412] bdbm: [EUNJI] [DATA SAFE] lpa = 203985 +[47297.047886] bdbm: [EUNJI] [DATA SAFE] lpa = 203986 +[47297.048359] bdbm: [EUNJI] [DATA SAFE] lpa = 203987 +[47297.048832] bdbm: [EUNJI] [DATA SAFE] lpa = 203988 +[47297.049305] bdbm: [EUNJI] [DATA SAFE] lpa = 203989 +[47297.049779] bdbm: [EUNJI] [DATA SAFE] lpa = 203990 +[47297.050264] bdbm: [EUNJI] [DATA SAFE] lpa = 203991 +[47297.050741] bdbm: [EUNJI] [DATA SAFE] lpa = 203992 +[47297.051214] bdbm: [EUNJI] [DATA SAFE] lpa = 203993 +[47297.051687] bdbm: [EUNJI] [DATA SAFE] lpa = 203994 +[47297.052160] bdbm: [EUNJI] [DATA SAFE] lpa = 203995 +[47297.052633] bdbm: [EUNJI] [DATA SAFE] lpa = 203996 +[47297.053107] bdbm: [EUNJI] [DATA SAFE] lpa = 203997 +[47297.053581] bdbm: [EUNJI] [DATA SAFE] lpa = 203998 +[47297.054055] bdbm: [EUNJI] [DATA SAFE] lpa = 203999 +[47297.054531] bdbm: [EUNJI] [DATA SAFE] lpa = 204000 +[47297.055006] bdbm: [EUNJI] [DATA SAFE] lpa = 204001 +[47297.055479] bdbm: [EUNJI] [DATA SAFE] lpa = 204002 +[47297.055955] bdbm: [EUNJI] [DATA SAFE] lpa = 204003 +[47297.056427] bdbm: [EUNJI] [DATA SAFE] lpa = 204004 +[47297.056901] bdbm: [EUNJI] [DATA SAFE] lpa = 204005 +[47297.057376] bdbm: [EUNJI] [DATA SAFE] lpa = 204006 +[47297.057855] bdbm: [EUNJI] [DATA SAFE] lpa = 204007 +[47297.058329] bdbm: [EUNJI] [DATA SAFE] lpa = 204008 +[47297.058804] bdbm: [EUNJI] [DATA SAFE] lpa = 204009 +[47297.059280] bdbm: [EUNJI] [DATA SAFE] lpa = 204010 +[47297.059756] bdbm: [EUNJI] [DATA SAFE] lpa = 204011 +[47297.060231] bdbm: [EUNJI] [DATA SAFE] lpa = 204012 +[47297.060706] bdbm: [EUNJI] [DATA SAFE] lpa = 204013 +[47297.061179] bdbm: [EUNJI] [DATA SAFE] lpa = 204014 +[47297.061653] bdbm: [EUNJI] [DATA SAFE] lpa = 204015 +[47297.062139] bdbm: [EUNJI] [DATA SAFE] lpa = 204016 +[47297.062613] bdbm: [EUNJI] [DATA SAFE] lpa = 204017 +[47297.063086] bdbm: [EUNJI] [DATA SAFE] lpa = 204018 +[47297.063559] bdbm: [EUNJI] [DATA SAFE] lpa = 204019 +[47297.064035] bdbm: [EUNJI] [DATA SAFE] lpa = 204020 +[47297.064508] bdbm: [EUNJI] [DATA SAFE] lpa = 204021 +[47297.064982] bdbm: [EUNJI] [DATA SAFE] lpa = 204022 +[47297.065462] bdbm: [EUNJI] [DATA SAFE] lpa = 204023 +[47297.065939] bdbm: [EUNJI] [DATA SAFE] lpa = 204024 +[47297.066414] bdbm: [EUNJI] [DATA SAFE] lpa = 204025 +[47297.066888] bdbm: [EUNJI] [DATA SAFE] lpa = 204026 +[47297.067365] bdbm: [EUNJI] [DATA SAFE] lpa = 204027 +[47297.067839] bdbm: [EUNJI] [DATA SAFE] lpa = 204028 +[47297.068314] bdbm: [EUNJI] [DATA SAFE] lpa = 204029 +[47297.068786] bdbm: [EUNJI] [DATA SAFE] lpa = 204030 +[47297.069261] bdbm: [EUNJI] [DATA SAFE] lpa = 204031 +[47297.069737] bdbm: [EUNJI] [DATA SAFE] lpa = 204032 +[47297.070210] bdbm: [EUNJI] [DATA SAFE] lpa = 204033 +[47297.070684] bdbm: [EUNJI] [DATA SAFE] lpa = 204034 +[47297.071156] bdbm: [EUNJI] [DATA SAFE] lpa = 204035 +[47297.071629] bdbm: [EUNJI] [DATA SAFE] lpa = 204036 +[47297.072101] bdbm: [EUNJI] [DATA SAFE] lpa = 204037 +[47297.072572] bdbm: [EUNJI] [DATA SAFE] lpa = 204038 +[47297.073043] bdbm: [EUNJI] [DATA SAFE] lpa = 204039 +[47297.073515] bdbm: [EUNJI] [DATA SAFE] lpa = 204040 +[47297.073990] bdbm: [EUNJI] [DATA SAFE] lpa = 204041 +[47297.074465] bdbm: [EUNJI] [DATA SAFE] lpa = 204042 +[47297.074939] bdbm: [EUNJI] [DATA SAFE] lpa = 204043 +[47297.075412] bdbm: [EUNJI] [DATA SAFE] lpa = 204044 +[47297.075884] bdbm: [EUNJI] [DATA SAFE] lpa = 204045 +[47297.076356] bdbm: [EUNJI] [DATA SAFE] lpa = 204046 +[47297.076829] bdbm: [EUNJI] [DATA SAFE] lpa = 204047 +[47297.077301] bdbm: [EUNJI] [DATA SAFE] lpa = 204048 +[47297.077776] bdbm: [EUNJI] [DATA SAFE] lpa = 204049 +[47297.078258] bdbm: [EUNJI] [DATA SAFE] lpa = 204050 +[47297.078732] bdbm: [EUNJI] [DATA SAFE] lpa = 204051 +[47297.079206] bdbm: [EUNJI] [DATA SAFE] lpa = 204052 +[47297.079679] bdbm: [EUNJI] [DATA SAFE] lpa = 204053 +[47297.080152] bdbm: [EUNJI] [DATA SAFE] lpa = 204054 +[47297.080627] bdbm: [EUNJI] [DATA SAFE] lpa = 204055 +[47297.081100] bdbm: [EUNJI] [DATA SAFE] lpa = 204056 +[47297.081575] bdbm: [EUNJI] [DATA SAFE] lpa = 204057 +[47297.082050] bdbm: [EUNJI] [DATA SAFE] lpa = 204058 +[47297.082523] bdbm: [EUNJI] [DATA SAFE] lpa = 204059 +[47297.082998] bdbm: [EUNJI] [DATA SAFE] lpa = 204060 +[47297.083471] bdbm: [EUNJI] [DATA SAFE] lpa = 204061 +[47297.083945] bdbm: [EUNJI] [DATA SAFE] lpa = 204062 +[47297.084421] bdbm: [EUNJI] [DATA SAFE] lpa = 204063 +[47297.084895] bdbm: [EUNJI] [DATA SAFE] lpa = 204064 +[47297.085371] bdbm: [EUNJI] [DATA SAFE] lpa = 204065 +[47297.085843] bdbm: [EUNJI] [DATA SAFE] lpa = 204066 +[47297.086319] bdbm: [EUNJI] [DATA SAFE] lpa = 204067 +[47297.086793] bdbm: [EUNJI] [DATA SAFE] lpa = 204068 +[47297.087268] bdbm: [EUNJI] [DATA SAFE] lpa = 204069 +[47297.087742] bdbm: [EUNJI] [DATA SAFE] lpa = 204070 +[47297.088218] bdbm: [EUNJI] [DATA SAFE] lpa = 204071 +[47297.088692] bdbm: [EUNJI] [DATA SAFE] lpa = 204072 +[47297.089165] bdbm: [EUNJI] [DATA SAFE] lpa = 204073 +[47297.089645] bdbm: [EUNJI] [DATA SAFE] lpa = 204074 +[47297.090118] bdbm: [EUNJI] [DATA SAFE] lpa = 204075 +[47297.090593] bdbm: [EUNJI] [DATA SAFE] lpa = 204076 +[47297.091066] bdbm: [EUNJI] [DATA SAFE] lpa = 204077 +[47297.091539] bdbm: [EUNJI] [DATA SAFE] lpa = 204078 +[47297.092014] bdbm: [EUNJI] [DATA SAFE] lpa = 204079 +[47297.092489] bdbm: [EUNJI] [DATA SAFE] lpa = 204080 +[47297.092962] bdbm: [EUNJI] [DATA SAFE] lpa = 204081 +[47297.093437] bdbm: [EUNJI] [DATA SAFE] lpa = 204082 +[47297.093913] bdbm: [EUNJI] [DATA SAFE] lpa = 204083 +[47297.094391] bdbm: [EUNJI] [DATA SAFE] lpa = 204084 +[47297.094870] bdbm: [EUNJI] [DATA SAFE] lpa = 204085 +[47297.095344] bdbm: [EUNJI] [DATA SAFE] lpa = 204086 +[47297.095820] bdbm: [EUNJI] [DATA SAFE] lpa = 204087 +[47297.096300] bdbm: [EUNJI] [DATA SAFE] lpa = 204088 +[47297.096779] bdbm: [EUNJI] [DATA SAFE] lpa = 204089 +[47297.097251] bdbm: [EUNJI] [DATA SAFE] lpa = 204090 +[47297.097726] bdbm: [EUNJI] [DATA SAFE] lpa = 204091 +[47297.098198] bdbm: [EUNJI] [DATA SAFE] lpa = 204092 +[47297.098670] bdbm: [EUNJI] [DATA SAFE] lpa = 204093 +[47297.099143] bdbm: [EUNJI] [DATA SAFE] lpa = 204094 +[47297.099616] bdbm: [EUNJI] [DATA SAFE] lpa = 204095 +[47297.100089] bdbm: [EUNJI] [DATA SAFE] lpa = 204096 +[47297.100561] bdbm: [EUNJI] [DATA SAFE] lpa = 204097 +[47297.101035] bdbm: [EUNJI] [DATA SAFE] lpa = 204098 +[47297.101508] bdbm: [EUNJI] [DATA SAFE] lpa = 204099 +[47297.101981] bdbm: [EUNJI] [DATA SAFE] lpa = 204100 +[47297.102457] bdbm: [EUNJI] [DATA SAFE] lpa = 204101 +[47297.102932] bdbm: [EUNJI] [DATA SAFE] lpa = 204102 +[47297.103406] bdbm: [EUNJI] [DATA SAFE] lpa = 204103 +[47297.103880] bdbm: [EUNJI] [DATA SAFE] lpa = 204104 +[47297.104352] bdbm: [EUNJI] [DATA SAFE] lpa = 204105 +[47297.104825] bdbm: [EUNJI] [DATA SAFE] lpa = 204106 +[47297.105298] bdbm: [EUNJI] [DATA SAFE] lpa = 204107 +[47297.105776] bdbm: [EUNJI] [DATA SAFE] lpa = 204108 +[47297.106261] bdbm: [EUNJI] [DATA SAFE] lpa = 204109 +[47297.106735] bdbm: [EUNJI] [DATA SAFE] lpa = 204110 +[47297.107210] bdbm: [EUNJI] [DATA SAFE] lpa = 204111 +[47297.107684] bdbm: [EUNJI] [DATA SAFE] lpa = 204112 +[47297.108158] bdbm: [EUNJI] [DATA SAFE] lpa = 204113 +[47297.108632] bdbm: [EUNJI] [DATA SAFE] lpa = 204114 +[47297.109105] bdbm: [EUNJI] [DATA SAFE] lpa = 204115 +[47297.109581] bdbm: [EUNJI] [DATA SAFE] lpa = 204116 +[47297.110052] bdbm: [EUNJI] [DATA SAFE] lpa = 204117 +[47297.110525] bdbm: [EUNJI] [DATA SAFE] lpa = 204118 +[47297.110996] bdbm: [EUNJI] [DATA SAFE] lpa = 204119 +[47297.111470] bdbm: [EUNJI] [DATA SAFE] lpa = 204120 +[47297.111944] bdbm: [EUNJI] [DATA SAFE] lpa = 204121 +[47297.112418] bdbm: [EUNJI] [DATA SAFE] lpa = 204122 +[47297.112891] bdbm: [EUNJI] [DATA SAFE] lpa = 204123 +[47297.113365] bdbm: [EUNJI] [DATA SAFE] lpa = 204124 +[47297.113842] bdbm: [EUNJI] [DATA SAFE] lpa = 204125 +[47297.114316] bdbm: [EUNJI] [DATA SAFE] lpa = 204126 +[47297.114791] bdbm: [EUNJI] [DATA SAFE] lpa = 204127 +[47297.115267] bdbm: [EUNJI] [DATA SAFE] lpa = 204128 +[47297.115741] bdbm: [EUNJI] [DATA SAFE] lpa = 204129 +[47297.116215] bdbm: [EUNJI] [DATA SAFE] lpa = 204130 +[47297.116689] bdbm: [EUNJI] [DATA SAFE] lpa = 204131 +[47297.117163] bdbm: [EUNJI] [DATA SAFE] lpa = 204132 +[47297.117647] bdbm: [EUNJI] [DATA SAFE] lpa = 204133 +[47297.118122] bdbm: [EUNJI] [DATA SAFE] lpa = 204134 +[47297.118597] bdbm: [EUNJI] [DATA SAFE] lpa = 204135 +[47297.119072] bdbm: [EUNJI] [DATA SAFE] lpa = 204136 +[47297.119546] bdbm: [EUNJI] [DATA SAFE] lpa = 204137 +[47297.120020] bdbm: [EUNJI] [DATA SAFE] lpa = 204138 +[47297.120494] bdbm: [EUNJI] [DATA SAFE] lpa = 204139 +[47297.120968] bdbm: [EUNJI] [DATA SAFE] lpa = 204140 +[47297.121442] bdbm: [EUNJI] [DATA SAFE] lpa = 204141 +[47297.121920] bdbm: [EUNJI] [DATA SAFE] lpa = 204142 +[47297.122395] bdbm: [EUNJI] [DATA SAFE] lpa = 204143 +[47297.122868] bdbm: [EUNJI] [DATA SAFE] lpa = 204144 +[47297.123341] bdbm: [EUNJI] [DATA SAFE] lpa = 204145 +[47297.123815] bdbm: [EUNJI] [DATA SAFE] lpa = 204146 +[47297.124290] bdbm: [EUNJI] [DATA SAFE] lpa = 204147 +[47297.124764] bdbm: [EUNJI] [DATA SAFE] lpa = 204148 +[47297.125237] bdbm: [EUNJI] [DATA SAFE] lpa = 204149 +[47297.125714] bdbm: [EUNJI] [DATA SAFE] lpa = 204150 +[47297.126189] bdbm: [EUNJI] [DATA SAFE] lpa = 204151 +[47297.126667] bdbm: [EUNJI] [DATA SAFE] lpa = 204152 +[47297.127142] bdbm: [EUNJI] [DATA SAFE] lpa = 204153 +[47297.127616] bdbm: [EUNJI] [DATA SAFE] lpa = 204154 +[47297.128089] bdbm: [EUNJI] [DATA SAFE] lpa = 204155 +[47297.128562] bdbm: [EUNJI] [DATA SAFE] lpa = 204156 +[47297.129035] bdbm: [EUNJI] [DATA SAFE] lpa = 204157 +[47297.129509] bdbm: [EUNJI] [DATA SAFE] lpa = 204158 +[47297.129984] bdbm: [EUNJI] [DATA SAFE] lpa = 204159 +[47297.130460] bdbm: [EUNJI] [DATA SAFE] lpa = 204160 +[47297.130933] bdbm: [EUNJI] [DATA SAFE] lpa = 204161 +[47297.131408] bdbm: [EUNJI] [DATA SAFE] lpa = 204162 +[47297.131881] bdbm: [EUNJI] [DATA SAFE] lpa = 204163 +[47297.132356] bdbm: [EUNJI] [DATA SAFE] lpa = 204164 +[47297.132826] bdbm: [EUNJI] [DATA SAFE] lpa = 204165 +[47297.133297] bdbm: [EUNJI] [DATA SAFE] lpa = 204166 +[47297.133783] bdbm: [EUNJI] [DATA SAFE] lpa = 204167 +[47297.134254] bdbm: [EUNJI] [DATA SAFE] lpa = 204168 +[47297.134726] bdbm: [EUNJI] [DATA SAFE] lpa = 204169 +[47297.135199] bdbm: [EUNJI] [DATA SAFE] lpa = 204170 +[47297.135672] bdbm: [EUNJI] [DATA SAFE] lpa = 204171 +[47297.136147] bdbm: [EUNJI] [DATA SAFE] lpa = 204172 +[47297.136620] bdbm: [EUNJI] [DATA SAFE] lpa = 204173 +[47297.137095] bdbm: [EUNJI] [DATA SAFE] lpa = 204174 +[47297.137567] bdbm: [EUNJI] [DATA SAFE] lpa = 204175 +[47297.138038] bdbm: [EUNJI] [DATA SAFE] lpa = 204176 +[47297.138513] bdbm: [EUNJI] [DATA SAFE] lpa = 204177 +[47297.138987] bdbm: [EUNJI] [DATA SAFE] lpa = 204178 +[47297.139461] bdbm: [EUNJI] [DATA SAFE] lpa = 204179 +[47297.139935] bdbm: [EUNJI] [DATA SAFE] lpa = 204180 +[47297.140409] bdbm: [EUNJI] [DATA SAFE] lpa = 204181 +[47297.140883] bdbm: [EUNJI] [DATA SAFE] lpa = 204182 +[47297.141357] bdbm: [EUNJI] [DATA SAFE] lpa = 204183 +[47297.141832] bdbm: [EUNJI] [DATA SAFE] lpa = 204184 +[47297.142309] bdbm: [EUNJI] [DATA SAFE] lpa = 204185 +[47297.142784] bdbm: [EUNJI] [DATA SAFE] lpa = 204186 +[47297.143258] bdbm: [EUNJI] [DATA SAFE] lpa = 204187 +[47297.143732] bdbm: [EUNJI] [DATA SAFE] lpa = 204188 +[47297.144205] bdbm: [EUNJI] [DATA SAFE] lpa = 204189 +[47297.144678] bdbm: [EUNJI] [DATA SAFE] lpa = 204190 +[47297.145150] bdbm: [EUNJI] [DATA SAFE] lpa = 204191 +[47297.145645] bdbm: [EUNJI] [DATA SAFE] lpa = 204192 +[47297.146164] bdbm: [EUNJI] [DATA SAFE] lpa = 204193 +[47297.146643] bdbm: [EUNJI] [DATA SAFE] lpa = 204194 +[47297.147120] bdbm: [EUNJI] [DATA SAFE] lpa = 204195 +[47297.147605] bdbm: [EUNJI] [DATA SAFE] lpa = 204196 +[47297.148118] bdbm: [EUNJI] [DATA SAFE] lpa = 204197 +[47297.148631] bdbm: [EUNJI] [DATA SAFE] lpa = 204198 +[47297.149122] bdbm: [EUNJI] [DATA SAFE] lpa = 204199 +[47297.149592] bdbm: [EUNJI] [DATA SAFE] lpa = 204200 +[47297.150209] bdbm: [EUNJI] [DATA SAFE] lpa = 204201 +[47297.150689] bdbm: [EUNJI] [DATA SAFE] lpa = 204202 +[47297.151166] bdbm: [EUNJI] [DATA SAFE] lpa = 204203 +[47297.151637] bdbm: [EUNJI] [DATA SAFE] lpa = 204204 +[47297.152108] bdbm: [EUNJI] [DATA SAFE] lpa = 204205 +[47297.152578] bdbm: [EUNJI] [DATA SAFE] lpa = 204206 +[47297.153049] bdbm: [EUNJI] [DATA SAFE] lpa = 204207 +[47297.153520] bdbm: [EUNJI] [DATA SAFE] lpa = 204208 +[47297.153992] bdbm: [EUNJI] [DATA SAFE] lpa = 204209 +[47297.154467] bdbm: [EUNJI] [DATA SAFE] lpa = 204210 +[47297.154938] bdbm: [EUNJI] [DATA SAFE] lpa = 204211 +[47297.155407] bdbm: [EUNJI] [DATA SAFE] lpa = 204212 +[47297.155884] bdbm: [EUNJI] [DATA SAFE] lpa = 204213 +[47297.156354] bdbm: [EUNJI] [DATA SAFE] lpa = 204214 +[47297.156830] bdbm: [EUNJI] [DATA SAFE] lpa = 204215 +[47297.157301] bdbm: [EUNJI] [DATA SAFE] lpa = 204216 +[47297.157778] bdbm: [EUNJI] [DATA SAFE] lpa = 204217 +[47297.158253] bdbm: [EUNJI] [DATA SAFE] lpa = 204218 +[47297.158723] bdbm: [EUNJI] [DATA SAFE] lpa = 204219 +[47297.159193] bdbm: [EUNJI] [DATA SAFE] lpa = 204220 +[47297.159663] bdbm: [EUNJI] [DATA SAFE] lpa = 204221 +[47297.160133] bdbm: [EUNJI] [DATA SAFE] lpa = 204222 +[47297.160604] bdbm: [EUNJI] [DATA SAFE] lpa = 204223 +[47297.161074] bdbm: [EUNJI] [DATA SAFE] lpa = 204224 +[47297.161544] bdbm: [EUNJI] [DATA SAFE] lpa = 204225 +[47297.162015] bdbm: [EUNJI] [DATA SAFE] lpa = 204226 +[47297.162484] bdbm: [EUNJI] [DATA SAFE] lpa = 204227 +[47297.162955] bdbm: [EUNJI] [DATA SAFE] lpa = 204228 +[47297.163425] bdbm: [EUNJI] [DATA SAFE] lpa = 204229 +[47297.163895] bdbm: [EUNJI] [DATA SAFE] lpa = 204230 +[47297.164365] bdbm: [EUNJI] [DATA SAFE] lpa = 204231 +[47297.164835] bdbm: [EUNJI] [DATA SAFE] lpa = 204232 +[47297.165305] bdbm: [EUNJI] [DATA SAFE] lpa = 204233 +[47297.165777] bdbm: [EUNJI] [DATA SAFE] lpa = 204234 +[47297.166248] bdbm: [EUNJI] [DATA SAFE] lpa = 204235 +[47297.166719] bdbm: [EUNJI] [DATA SAFE] lpa = 204236 +[47297.167191] bdbm: [EUNJI] [DATA SAFE] lpa = 204237 +[47297.167663] bdbm: [EUNJI] [DATA SAFE] lpa = 204238 +[47297.168134] bdbm: [EUNJI] [DATA SAFE] lpa = 204239 +[47297.168606] bdbm: [EUNJI] [DATA SAFE] lpa = 204240 +[47297.169078] bdbm: [EUNJI] [DATA SAFE] lpa = 204241 +[47297.169549] bdbm: [EUNJI] [DATA SAFE] lpa = 204242 +[47297.170019] bdbm: [EUNJI] [DATA SAFE] lpa = 204243 +[47297.170489] bdbm: [EUNJI] [DATA SAFE] lpa = 204244 +[47297.170965] bdbm: [EUNJI] [DATA SAFE] lpa = 204245 +[47297.171436] bdbm: [EUNJI] [DATA SAFE] lpa = 204246 +[47297.171906] bdbm: [EUNJI] [DATA SAFE] lpa = 204247 +[47297.172377] bdbm: [EUNJI] [DATA SAFE] lpa = 204248 +[47297.172847] bdbm: [EUNJI] [DATA SAFE] lpa = 204249 +[47297.173317] bdbm: [EUNJI] [DATA SAFE] lpa = 204250 +[47297.173789] bdbm: [EUNJI] [DATA SAFE] lpa = 204251 +[47297.174259] bdbm: [EUNJI] [DATA SAFE] lpa = 204252 +[47297.174729] bdbm: [EUNJI] [DATA SAFE] lpa = 204253 +[47297.175199] bdbm: [EUNJI] [DATA SAFE] lpa = 204254 +[47297.175669] bdbm: [EUNJI] [DATA SAFE] lpa = 204255 +[47297.176139] bdbm: [EUNJI] [DATA SAFE] lpa = 204256 +[47297.176609] bdbm: [EUNJI] [DATA SAFE] lpa = 204257 +[47297.177079] bdbm: [EUNJI] [DATA SAFE] lpa = 204258 +[47297.177550] bdbm: [EUNJI] [DATA SAFE] lpa = 204259 +[47297.178020] bdbm: [EUNJI] [DATA SAFE] lpa = 204260 +[47297.178495] bdbm: [EUNJI] [DATA SAFE] lpa = 204261 +[47297.178965] bdbm: [EUNJI] [DATA SAFE] lpa = 204262 +[47297.179435] bdbm: [EUNJI] [DATA SAFE] lpa = 204263 +[47297.179905] bdbm: [EUNJI] [DATA SAFE] lpa = 204264 +[47297.180375] bdbm: [EUNJI] [DATA SAFE] lpa = 204265 +[47297.180845] bdbm: [EUNJI] [DATA SAFE] lpa = 204266 +[47297.181315] bdbm: [EUNJI] [DATA SAFE] lpa = 204267 +[47297.181785] bdbm: [EUNJI] [DATA SAFE] lpa = 204268 +[47297.182260] bdbm: [EUNJI] [DATA SAFE] lpa = 204269 +[47297.182735] bdbm: [EUNJI] [DATA SAFE] lpa = 204270 +[47297.183205] bdbm: [EUNJI] [DATA SAFE] lpa = 204271 +[47297.183675] bdbm: [EUNJI] [DATA SAFE] lpa = 204272 +[47297.184150] bdbm: [EUNJI] [DATA SAFE] lpa = 204273 +[47297.184620] bdbm: [EUNJI] [DATA SAFE] lpa = 204274 +[47297.185096] bdbm: [EUNJI] [DATA SAFE] lpa = 204275 +[47297.185571] bdbm: [EUNJI] [DATA SAFE] lpa = 204276 +[47297.186045] bdbm: [EUNJI] [DATA SAFE] lpa = 204277 +[47297.186521] bdbm: [EUNJI] [DATA SAFE] lpa = 204278 +[47297.186992] bdbm: [EUNJI] [DATA SAFE] lpa = 204279 +[47297.187463] bdbm: [EUNJI] [DATA SAFE] lpa = 204280 +[47297.187935] bdbm: [EUNJI] [DATA SAFE] lpa = 204281 +[47297.188406] bdbm: [EUNJI] [DATA SAFE] lpa = 204282 +[47297.188878] bdbm: [EUNJI] [DATA SAFE] lpa = 204283 +[47297.189349] bdbm: [EUNJI] [DATA SAFE] lpa = 204284 +[47297.189818] bdbm: [EUNJI] [DATA SAFE] lpa = 204285 +[47297.190288] bdbm: [EUNJI] [DATA SAFE] lpa = 204286 +[47297.190758] bdbm: [EUNJI] [DATA SAFE] lpa = 204287 +[47297.191229] bdbm: [EUNJI] [DATA SAFE] lpa = 204288 +[47297.191699] bdbm: [EUNJI] [DATA SAFE] lpa = 204289 +[47297.192169] bdbm: [EUNJI] [DATA SAFE] lpa = 204290 +[47297.192640] bdbm: [EUNJI] [DATA SAFE] lpa = 204291 +[47297.193111] bdbm: [EUNJI] [DATA SAFE] lpa = 204292 +[47297.193581] bdbm: [EUNJI] [DATA SAFE] lpa = 204293 +[47297.194054] bdbm: [EUNJI] [DATA SAFE] lpa = 204294 +[47297.194525] bdbm: [EUNJI] [DATA SAFE] lpa = 204295 +[47297.194997] bdbm: [EUNJI] [DATA SAFE] lpa = 204296 +[47297.195468] bdbm: [EUNJI] [DATA SAFE] lpa = 204297 +[47297.195941] bdbm: [EUNJI] [DATA SAFE] lpa = 204298 +[47297.196413] bdbm: [EUNJI] [DATA SAFE] lpa = 204299 +[47297.196885] bdbm: [EUNJI] [DATA SAFE] lpa = 204300 +[47297.197357] bdbm: [EUNJI] [DATA SAFE] lpa = 204301 +[47297.197830] bdbm: [EUNJI] [DATA SAFE] lpa = 204302 +[47297.198301] bdbm: [EUNJI] [DATA SAFE] lpa = 204303 +[47297.198772] bdbm: [EUNJI] [DATA SAFE] lpa = 204304 +[47297.199243] bdbm: [EUNJI] [DATA SAFE] lpa = 204305 +[47297.199715] bdbm: [EUNJI] [DATA SAFE] lpa = 204306 +[47297.200185] bdbm: [EUNJI] [DATA SAFE] lpa = 204307 +[47297.200656] bdbm: [EUNJI] [DATA SAFE] lpa = 204308 +[47297.201128] bdbm: [EUNJI] [DATA SAFE] lpa = 204309 +[47297.201599] bdbm: [EUNJI] [DATA SAFE] lpa = 204310 +[47297.202145] bdbm: [EUNJI] [DATA SAFE] lpa = 204311 +[47297.202616] bdbm: [EUNJI] [DATA SAFE] lpa = 204312 +[47297.203087] bdbm: [EUNJI] [DATA SAFE] lpa = 204313 +[47297.203558] bdbm: [EUNJI] [DATA SAFE] lpa = 204314 +[47297.204029] bdbm: [EUNJI] [DATA SAFE] lpa = 204315 +[47297.204501] bdbm: [EUNJI] [DATA SAFE] lpa = 204316 +[47297.204971] bdbm: [EUNJI] [DATA SAFE] lpa = 204317 +[47297.205442] bdbm: [EUNJI] [DATA SAFE] lpa = 204318 +[47297.205913] bdbm: [EUNJI] [DATA SAFE] lpa = 204319 +[47297.206395] bdbm: [EUNJI] [DATA SAFE] lpa = 204320 +[47297.206872] bdbm: [EUNJI] [DATA SAFE] lpa = 204321 +[47297.207348] bdbm: [EUNJI] [DATA SAFE] lpa = 204322 +[47297.207821] bdbm: [EUNJI] [DATA SAFE] lpa = 204323 +[47297.208298] bdbm: [EUNJI] [DATA SAFE] lpa = 204324 +[47297.208776] bdbm: [EUNJI] [DATA SAFE] lpa = 204325 +[47297.209250] bdbm: [EUNJI] [DATA SAFE] lpa = 204326 +[47297.209725] bdbm: [EUNJI] [DATA SAFE] lpa = 204327 +[47297.210202] bdbm: [EUNJI] [DATA SAFE] lpa = 204328 +[47297.210679] bdbm: [EUNJI] [DATA SAFE] lpa = 204329 +[47297.211158] bdbm: [EUNJI] [DATA SAFE] lpa = 204330 +[47297.211635] bdbm: [EUNJI] [DATA SAFE] lpa = 204331 +[47297.212108] bdbm: [EUNJI] [DATA SAFE] lpa = 204332 +[47297.212586] bdbm: [EUNJI] [DATA SAFE] lpa = 204333 +[47297.213065] bdbm: [EUNJI] [DATA SAFE] lpa = 204334 +[47297.213542] bdbm: [EUNJI] [DATA SAFE] lpa = 204335 +[47297.214019] bdbm: [EUNJI] [DATA SAFE] lpa = 204336 +[47297.214499] bdbm: [EUNJI] [DATA SAFE] lpa = 204337 +[47297.214977] bdbm: [EUNJI] [DATA SAFE] lpa = 204338 +[47297.215454] bdbm: [EUNJI] [DATA SAFE] lpa = 204339 +[47297.215931] bdbm: [EUNJI] [DATA SAFE] lpa = 204340 +[47297.216407] bdbm: [EUNJI] [DATA SAFE] lpa = 204341 +[47297.216880] bdbm: [EUNJI] [DATA SAFE] lpa = 204342 +[47297.217361] bdbm: [EUNJI] [DATA SAFE] lpa = 204343 +[47297.217838] bdbm: [EUNJI] [DATA SAFE] lpa = 204344 +[47297.218315] bdbm: [EUNJI] [DATA SAFE] lpa = 204345 +[47297.218787] bdbm: [EUNJI] [DATA SAFE] lpa = 204346 +[47297.219261] bdbm: [EUNJI] [DATA SAFE] lpa = 204347 +[47297.219734] bdbm: [EUNJI] [DATA SAFE] lpa = 204348 +[47297.220208] bdbm: [EUNJI] [DATA SAFE] lpa = 204349 +[47297.220681] bdbm: [EUNJI] [DATA SAFE] lpa = 204350 +[47297.221154] bdbm: [EUNJI] [DATA SAFE] lpa = 204351 +[47297.221650] bdbm: [EUNJI] [DATA SAFE] lpa = 204352 +[47297.222125] bdbm: [EUNJI] [DATA SAFE] lpa = 204353 +[47297.222595] bdbm: [EUNJI] [DATA SAFE] lpa = 204354 +[47297.223068] bdbm: [EUNJI] [DATA SAFE] lpa = 204355 +[47297.223541] bdbm: [EUNJI] [DATA SAFE] lpa = 204356 +[47297.224015] bdbm: [EUNJI] [DATA SAFE] lpa = 204357 +[47297.224491] bdbm: [EUNJI] [DATA SAFE] lpa = 204358 +[47297.224964] bdbm: [EUNJI] [DATA SAFE] lpa = 204359 +[47297.225438] bdbm: [EUNJI] [DATA SAFE] lpa = 204360 +[47297.225912] bdbm: [EUNJI] [DATA SAFE] lpa = 204361 +[47297.226387] bdbm: [EUNJI] [DATA SAFE] lpa = 204362 +[47297.226861] bdbm: [EUNJI] [DATA SAFE] lpa = 204363 +[47297.227334] bdbm: [EUNJI] [DATA SAFE] lpa = 204364 +[47297.227807] bdbm: [EUNJI] [DATA SAFE] lpa = 204365 +[47297.228281] bdbm: [EUNJI] [DATA SAFE] lpa = 204366 +[47297.228756] bdbm: [EUNJI] [DATA SAFE] lpa = 204367 +[47297.229230] bdbm: [EUNJI] [DATA SAFE] lpa = 204368 +[47297.229707] bdbm: [EUNJI] [DATA SAFE] lpa = 204369 +[47297.230182] bdbm: [EUNJI] [DATA SAFE] lpa = 204370 +[47297.230656] bdbm: [EUNJI] [DATA SAFE] lpa = 204371 +[47297.231133] bdbm: [EUNJI] [DATA SAFE] lpa = 204372 +[47297.231605] bdbm: [EUNJI] [DATA SAFE] lpa = 204373 +[47297.232081] bdbm: [EUNJI] [DATA SAFE] lpa = 204374 +[47297.232553] bdbm: [EUNJI] [DATA SAFE] lpa = 204375 +[47297.233027] bdbm: [EUNJI] [DATA SAFE] lpa = 204376 +[47297.233500] bdbm: [EUNJI] [DATA SAFE] lpa = 204377 +[47297.233975] bdbm: [EUNJI] [DATA SAFE] lpa = 204378 +[47297.234447] bdbm: [EUNJI] [DATA SAFE] lpa = 204379 +[47297.234923] bdbm: [EUNJI] [DATA SAFE] lpa = 204380 +[47297.235396] bdbm: [EUNJI] [DATA SAFE] lpa = 204381 +[47297.235869] bdbm: [EUNJI] [DATA SAFE] lpa = 204382 +[47297.236342] bdbm: [EUNJI] [DATA SAFE] lpa = 204383 +[47297.236815] bdbm: [EUNJI] [DATA SAFE] lpa = 204384 +[47297.237289] bdbm: [EUNJI] [DATA SAFE] lpa = 204385 +[47297.237774] bdbm: [EUNJI] [DATA SAFE] lpa = 204386 +[47297.238262] bdbm: [EUNJI] [DATA SAFE] lpa = 204387 +[47297.238736] bdbm: [EUNJI] [DATA SAFE] lpa = 204388 +[47297.239212] bdbm: [EUNJI] [DATA SAFE] lpa = 204389 +[47297.239686] bdbm: [EUNJI] [DATA SAFE] lpa = 204390 +[47297.240161] bdbm: [EUNJI] [DATA SAFE] lpa = 204391 +[47297.240633] bdbm: [EUNJI] [DATA SAFE] lpa = 204392 +[47297.241106] bdbm: [EUNJI] [DATA SAFE] lpa = 204393 +[47297.241579] bdbm: [EUNJI] [DATA SAFE] lpa = 204394 +[47297.242056] bdbm: [EUNJI] [DATA SAFE] lpa = 204395 +[47297.242529] bdbm: [EUNJI] [DATA SAFE] lpa = 204396 +[47297.243002] bdbm: [EUNJI] [DATA SAFE] lpa = 204397 +[47297.243477] bdbm: [EUNJI] [DATA SAFE] lpa = 204398 +[47297.243950] bdbm: [EUNJI] [DATA SAFE] lpa = 204399 +[47297.244424] bdbm: [EUNJI] [DATA SAFE] lpa = 204400 +[47297.244903] bdbm: [EUNJI] [DATA SAFE] lpa = 204401 +[47297.245377] bdbm: [EUNJI] [DATA SAFE] lpa = 204402 +[47297.245852] bdbm: [EUNJI] [DATA SAFE] lpa = 204403 +[47297.246325] bdbm: [EUNJI] [DATA SAFE] lpa = 204404 +[47297.246800] bdbm: [EUNJI] [DATA SAFE] lpa = 204405 +[47297.247274] bdbm: [EUNJI] [DATA SAFE] lpa = 204406 +[47297.247748] bdbm: [EUNJI] [DATA SAFE] lpa = 204407 +[47297.248222] bdbm: [EUNJI] [DATA SAFE] lpa = 204408 +[47297.248696] bdbm: [EUNJI] [DATA SAFE] lpa = 204409 +[47297.249169] bdbm: [EUNJI] [DATA SAFE] lpa = 204410 +[47297.249653] bdbm: [EUNJI] [DATA SAFE] lpa = 204411 +[47297.250143] bdbm: [EUNJI] [DATA SAFE] lpa = 204412 +[47297.250616] bdbm: [EUNJI] [DATA SAFE] lpa = 204413 +[47297.251088] bdbm: [EUNJI] [DATA SAFE] lpa = 204414 +[47297.251561] bdbm: [EUNJI] [DATA SAFE] lpa = 204415 +[47297.252035] bdbm: [EUNJI] [DATA SAFE] lpa = 204416 +[47297.252510] bdbm: [EUNJI] [DATA SAFE] lpa = 204417 +[47297.252982] bdbm: [EUNJI] [DATA SAFE] lpa = 204418 +[47297.253454] bdbm: [EUNJI] [DATA SAFE] lpa = 204419 +[47297.253955] bdbm: [EUNJI] [DATA SAFE] lpa = 204420 +[47297.254468] bdbm: [EUNJI] [DATA SAFE] lpa = 204421 +[47297.254990] bdbm: [EUNJI] [DATA SAFE] lpa = 204422 +[47297.255524] bdbm: [EUNJI] [DATA SAFE] lpa = 204423 +[47297.256032] bdbm: [EUNJI] [DATA SAFE] lpa = 204424 +[47297.256553] bdbm: [EUNJI] [DATA SAFE] lpa = 204425 +[47297.257067] bdbm: [EUNJI] [DATA SAFE] lpa = 204426 +[47297.257557] bdbm: [EUNJI] [DATA SAFE] lpa = 204427 +[47297.258062] bdbm: [EUNJI] [DATA SAFE] lpa = 204428 +[47297.258593] bdbm: [EUNJI] [DATA SAFE] lpa = 204429 +[47297.259124] bdbm: [EUNJI] [DATA SAFE] lpa = 204430 +[47297.259630] bdbm: [EUNJI] [DATA SAFE] lpa = 204431 +[47297.260142] bdbm: [EUNJI] [DATA SAFE] lpa = 204432 +[47297.260666] bdbm: [EUNJI] [DATA SAFE] lpa = 204433 +[47297.261176] bdbm: [EUNJI] [DATA SAFE] lpa = 204434 +[47297.261711] bdbm: [EUNJI] [DATA SAFE] lpa = 204435 +[47297.262230] bdbm: [EUNJI] [DATA SAFE] lpa = 204436 +[47297.262763] bdbm: [EUNJI] [DATA SAFE] lpa = 204437 +[47297.263297] bdbm: [EUNJI] [DATA SAFE] lpa = 204438 +[47297.263816] bdbm: [EUNJI] [DATA SAFE] lpa = 204439 +[47297.264321] bdbm: [EUNJI] [DATA SAFE] lpa = 204440 +[47297.264829] bdbm: [EUNJI] [DATA SAFE] lpa = 204441 +[47297.265363] bdbm: [EUNJI] [DATA SAFE] lpa = 204442 +[47297.265872] bdbm: [EUNJI] [DATA SAFE] lpa = 204443 +[47297.266405] bdbm: [EUNJI] [DATA SAFE] lpa = 204444 +[47297.266926] bdbm: [EUNJI] [DATA SAFE] lpa = 204445 +[47297.267435] bdbm: [EUNJI] [DATA SAFE] lpa = 204446 +[47297.267950] bdbm: [EUNJI] [DATA SAFE] lpa = 204447 +[47297.268453] bdbm: [EUNJI] [DATA SAFE] lpa = 204448 +[47297.268957] bdbm: [EUNJI] [DATA SAFE] lpa = 204449 +[47297.269497] bdbm: [EUNJI] [DATA SAFE] lpa = 204450 +[47297.270004] bdbm: [EUNJI] [DATA SAFE] lpa = 204451 +[47297.270525] bdbm: [EUNJI] [DATA SAFE] lpa = 204452 +[47297.271049] bdbm: [EUNJI] [DATA SAFE] lpa = 204453 +[47297.271568] bdbm: [EUNJI] [DATA SAFE] lpa = 204454 +[47297.272077] bdbm: [EUNJI] [DATA SAFE] lpa = 204455 +[47297.272585] bdbm: [EUNJI] [DATA SAFE] lpa = 204456 +[47297.273103] bdbm: [EUNJI] [DATA SAFE] lpa = 204457 +[47297.273657] bdbm: [EUNJI] [DATA SAFE] lpa = 204458 +[47297.274156] bdbm: [EUNJI] [DATA SAFE] lpa = 204459 +[47297.274635] bdbm: [EUNJI] [DATA SAFE] lpa = 204460 +[47297.275109] bdbm: [EUNJI] [DATA SAFE] lpa = 204461 +[47297.275579] bdbm: [EUNJI] [DATA SAFE] lpa = 204462 +[47297.276054] bdbm: [EUNJI] [DATA SAFE] lpa = 204463 +[47297.276530] bdbm: [EUNJI] [DATA SAFE] lpa = 204464 +[47297.277006] bdbm: [EUNJI] [DATA SAFE] lpa = 204465 +[47297.277482] bdbm: [EUNJI] [DATA SAFE] lpa = 204466 +[47297.277956] bdbm: [EUNJI] [DATA SAFE] lpa = 204467 +[47297.278432] bdbm: [EUNJI] [DATA SAFE] lpa = 204468 +[47297.278904] bdbm: [EUNJI] [DATA SAFE] lpa = 204469 +[47297.279376] bdbm: [EUNJI] [DATA SAFE] lpa = 204470 +[47297.279877] bdbm: [EUNJI] [DATA SAFE] lpa = 204471 +[47297.280379] bdbm: [EUNJI] [DATA SAFE] lpa = 204472 +[47297.280881] bdbm: [EUNJI] [DATA SAFE] lpa = 204473 +[47297.281365] bdbm: [EUNJI] [DATA SAFE] lpa = 204474 +[47297.281838] bdbm: [EUNJI] [DATA SAFE] lpa = 204475 +[47297.282353] bdbm: [EUNJI] [DATA SAFE] lpa = 204476 +[47297.282872] bdbm: [EUNJI] [DATA SAFE] lpa = 204477 +[47297.283378] bdbm: [EUNJI] [DATA SAFE] lpa = 204478 +[47297.283857] bdbm: [EUNJI] [DATA SAFE] lpa = 204479 +[47297.284337] bdbm: [EUNJI] [DATA SAFE] lpa = 204480 +[47297.284825] bdbm: [EUNJI] [DATA SAFE] lpa = 204481 +[47297.285296] bdbm: [EUNJI] [DATA SAFE] lpa = 204482 +[47297.285772] bdbm: [EUNJI] [DATA SAFE] lpa = 204483 +[47297.286243] bdbm: [EUNJI] [DATA SAFE] lpa = 204484 +[47297.286715] bdbm: [EUNJI] [DATA SAFE] lpa = 204485 +[47297.287188] bdbm: [EUNJI] [DATA SAFE] lpa = 204486 +[47297.287662] bdbm: [EUNJI] [DATA SAFE] lpa = 204487 +[47297.288135] bdbm: [EUNJI] [DATA SAFE] lpa = 204488 +[47297.288609] bdbm: [EUNJI] [DATA SAFE] lpa = 204489 +[47297.289080] bdbm: [EUNJI] [DATA SAFE] lpa = 204490 +[47297.289551] bdbm: [EUNJI] [DATA SAFE] lpa = 204491 +[47297.290025] bdbm: [EUNJI] [DATA SAFE] lpa = 204492 +[47297.290498] bdbm: [EUNJI] [DATA SAFE] lpa = 204493 +[47297.290970] bdbm: [EUNJI] [DATA SAFE] lpa = 204494 +[47297.291441] bdbm: [EUNJI] [DATA SAFE] lpa = 204495 +[47297.291917] bdbm: [EUNJI] [DATA SAFE] lpa = 204496 +[47297.292388] bdbm: [EUNJI] [DATA SAFE] lpa = 204497 +[47297.292865] bdbm: [EUNJI] [DATA SAFE] lpa = 204498 +[47297.293336] bdbm: [EUNJI] [DATA SAFE] lpa = 204499 +[47297.293811] bdbm: [EUNJI] [DATA SAFE] lpa = 204500 +[47297.294291] bdbm: [EUNJI] [DATA SAFE] lpa = 204501 +[47297.294762] bdbm: [EUNJI] [DATA SAFE] lpa = 204502 +[47297.295235] bdbm: [EUNJI] [DATA SAFE] lpa = 204503 +[47297.295720] bdbm: [EUNJI] [DATA SAFE] lpa = 204504 +[47297.296200] bdbm: [EUNJI] [DATA SAFE] lpa = 204505 +[47297.296675] bdbm: [EUNJI] [DATA SAFE] lpa = 204506 +[47297.297145] bdbm: [EUNJI] [DATA SAFE] lpa = 204507 +[47297.297623] bdbm: [EUNJI] [DATA SAFE] lpa = 204508 +[47297.298094] bdbm: [EUNJI] [DATA SAFE] lpa = 204509 +[47297.298565] bdbm: [EUNJI] [DATA SAFE] lpa = 204510 +[47297.299036] bdbm: [EUNJI] [DATA SAFE] lpa = 204511 +[47297.299537] bdbm: [EUNJI] [DATA SAFE] lpa = 204512 +[47297.300043] bdbm: [EUNJI] [DATA SAFE] lpa = 204513 +[47297.300559] bdbm: [EUNJI] [DATA SAFE] lpa = 204514 +[47297.301076] bdbm: [EUNJI] [DATA SAFE] lpa = 204515 +[47297.301549] bdbm: [EUNJI] [DATA SAFE] lpa = 204516 +[47297.302033] bdbm: [EUNJI] [DATA SAFE] lpa = 204517 +[47297.302539] bdbm: [EUNJI] [DATA SAFE] lpa = 204518 +[47297.303047] bdbm: [EUNJI] [DATA SAFE] lpa = 204519 +[47297.303554] bdbm: [EUNJI] [DATA SAFE] lpa = 204520 +[47297.304062] bdbm: [EUNJI] [DATA SAFE] lpa = 204521 +[47297.304588] bdbm: [EUNJI] [DATA SAFE] lpa = 204522 +[47297.305108] bdbm: [EUNJI] [DATA SAFE] lpa = 204523 +[47297.305598] bdbm: [EUNJI] [DATA SAFE] lpa = 204524 +[47297.306104] bdbm: [EUNJI] [DATA SAFE] lpa = 204525 +[47297.306606] bdbm: [EUNJI] [DATA SAFE] lpa = 204526 +[47297.307130] bdbm: [EUNJI] [DATA SAFE] lpa = 204527 +[47297.307640] bdbm: [EUNJI] [DATA SAFE] lpa = 204528 +[47297.308163] bdbm: [EUNJI] [DATA SAFE] lpa = 204529 +[47297.308725] bdbm: [EUNJI] [DATA SAFE] lpa = 204530 +[47297.309232] bdbm: [EUNJI] [DATA SAFE] lpa = 204531 +[47297.309754] bdbm: [EUNJI] [DATA SAFE] lpa = 204532 +[47297.310257] bdbm: [EUNJI] [DATA SAFE] lpa = 204533 +[47297.310736] bdbm: [EUNJI] [DATA SAFE] lpa = 204534 +[47297.311212] bdbm: [EUNJI] [DATA SAFE] lpa = 204535 +[47297.311697] bdbm: [EUNJI] [DATA SAFE] lpa = 204536 +[47297.312172] bdbm: [EUNJI] [DATA SAFE] lpa = 204537 +[47297.312642] bdbm: [EUNJI] [DATA SAFE] lpa = 204538 +[47297.313112] bdbm: [EUNJI] [DATA SAFE] lpa = 204539 +[47297.313582] bdbm: [EUNJI] [DATA SAFE] lpa = 204540 +[47297.314051] bdbm: [EUNJI] [DATA SAFE] lpa = 204541 +[47297.314521] bdbm: [EUNJI] [DATA SAFE] lpa = 204542 +[47297.314993] bdbm: [EUNJI] [DATA SAFE] lpa = 204543 +[47297.315461] bdbm: [EUNJI] [DATA SAFE] lpa = 204544 +[47297.315958] bdbm: [EUNJI] [DATA SAFE] lpa = 204545 +[47297.316475] bdbm: [EUNJI] [DATA SAFE] lpa = 204546 +[47297.316948] bdbm: [EUNJI] [DATA SAFE] lpa = 204547 +[47297.317421] bdbm: [EUNJI] [DATA SAFE] lpa = 204548 +[47297.317925] bdbm: [EUNJI] [DATA SAFE] lpa = 204549 +[47297.318442] bdbm: [EUNJI] [DATA SAFE] lpa = 204550 +[47297.318960] bdbm: [EUNJI] [DATA SAFE] lpa = 204551 +[47297.319468] bdbm: [EUNJI] [DATA SAFE] lpa = 204552 +[47297.319974] bdbm: [EUNJI] [DATA SAFE] lpa = 204553 +[47297.320508] bdbm: [EUNJI] [DATA SAFE] lpa = 204554 +[47297.321035] bdbm: [EUNJI] [DATA SAFE] lpa = 204555 +[47297.321539] bdbm: [EUNJI] [DATA SAFE] lpa = 204556 +[47297.322032] bdbm: [EUNJI] [DATA SAFE] lpa = 204557 +[47297.322509] bdbm: [EUNJI] [DATA SAFE] lpa = 204558 +[47297.322998] bdbm: [EUNJI] [DATA SAFE] lpa = 204559 +[47297.323468] bdbm: [EUNJI] [DATA SAFE] lpa = 204560 +[47297.323937] bdbm: [EUNJI] [DATA SAFE] lpa = 204561 +[47297.324407] bdbm: [EUNJI] [DATA SAFE] lpa = 204562 +[47297.324883] bdbm: [EUNJI] [DATA SAFE] lpa = 204563 +[47297.325353] bdbm: [EUNJI] [DATA SAFE] lpa = 204564 +[47297.325825] bdbm: [EUNJI] [DATA SAFE] lpa = 204565 +[47297.326303] bdbm: [EUNJI] [DATA SAFE] lpa = 204566 +[47297.326781] bdbm: [EUNJI] [DATA SAFE] lpa = 204567 +[47297.327259] bdbm: [EUNJI] [DATA SAFE] lpa = 204568 +[47297.327736] bdbm: [EUNJI] [DATA SAFE] lpa = 204569 +[47297.328212] bdbm: [EUNJI] [DATA SAFE] lpa = 204570 +[47297.328690] bdbm: [EUNJI] [DATA SAFE] lpa = 204571 +[47297.329167] bdbm: [EUNJI] [DATA SAFE] lpa = 204572 +[47297.329644] bdbm: [EUNJI] [DATA SAFE] lpa = 204573 +[47297.330123] bdbm: [EUNJI] [DATA SAFE] lpa = 204574 +[47297.330601] bdbm: [EUNJI] [DATA SAFE] lpa = 204575 +[47297.331072] bdbm: [EUNJI] [DATA SAFE] lpa = 204576 +[47297.331572] bdbm: [EUNJI] [DATA SAFE] lpa = 204577 +[47297.332072] bdbm: [EUNJI] [DATA SAFE] lpa = 204578 +[47297.332591] bdbm: [EUNJI] [DATA SAFE] lpa = 204579 +[47297.333078] bdbm: [EUNJI] [DATA SAFE] lpa = 204580 +[47297.333554] bdbm: [EUNJI] [DATA SAFE] lpa = 204581 +[47297.334059] bdbm: [EUNJI] [DATA SAFE] lpa = 204582 +[47297.334560] bdbm: [EUNJI] [DATA SAFE] lpa = 204583 +[47297.335064] bdbm: [EUNJI] [DATA SAFE] lpa = 204584 +[47297.335594] bdbm: [EUNJI] [DATA SAFE] lpa = 204585 +[47297.336101] bdbm: [EUNJI] [DATA SAFE] lpa = 204586 +[47297.336629] bdbm: [EUNJI] [DATA SAFE] lpa = 204587 +[47297.337133] bdbm: [EUNJI] [DATA SAFE] lpa = 204588 +[47297.337613] bdbm: [EUNJI] [DATA SAFE] lpa = 204589 +[47297.338091] bdbm: [EUNJI] [DATA SAFE] lpa = 204590 +[47297.338571] bdbm: [EUNJI] [DATA SAFE] lpa = 204591 +[47297.339042] bdbm: [EUNJI] [DATA SAFE] lpa = 204592 +[47297.339519] bdbm: [EUNJI] [DATA SAFE] lpa = 204593 +[47297.339989] bdbm: [EUNJI] [DATA SAFE] lpa = 204594 +[47297.340465] bdbm: [EUNJI] [DATA SAFE] lpa = 204595 +[47297.340936] bdbm: [EUNJI] [DATA SAFE] lpa = 204596 +[47297.341407] bdbm: [EUNJI] [DATA SAFE] lpa = 204597 +[47297.341878] bdbm: [EUNJI] [DATA SAFE] lpa = 204598 +[47297.342355] bdbm: [EUNJI] [DATA SAFE] lpa = 204599 +[47297.342826] bdbm: [EUNJI] [DATA SAFE] lpa = 204600 +[47297.343297] bdbm: [EUNJI] [DATA SAFE] lpa = 204601 +[47297.343767] bdbm: [EUNJI] [DATA SAFE] lpa = 204602 +[47297.344239] bdbm: [EUNJI] [DATA SAFE] lpa = 204603 +[47297.344710] bdbm: [EUNJI] [DATA SAFE] lpa = 204604 +[47297.345181] bdbm: [EUNJI] [DATA SAFE] lpa = 204605 +[47297.345654] bdbm: [EUNJI] [DATA SAFE] lpa = 204606 +[47297.346128] bdbm: [EUNJI] [DATA SAFE] lpa = 204607 +[47297.346600] bdbm: [EUNJI] [DATA SAFE] lpa = 204608 +[47297.347070] bdbm: [EUNJI] [DATA SAFE] lpa = 204609 +[47297.347541] bdbm: [EUNJI] [DATA SAFE] lpa = 204610 +[47297.348013] bdbm: [EUNJI] [DATA SAFE] lpa = 204611 +[47297.348490] bdbm: [EUNJI] [DATA SAFE] lpa = 204612 +[47297.348961] bdbm: [EUNJI] [DATA SAFE] lpa = 204613 +[47297.349433] bdbm: [EUNJI] [DATA SAFE] lpa = 204614 +[47297.349909] bdbm: [EUNJI] [DATA SAFE] lpa = 204615 +[47297.350389] bdbm: [EUNJI] [DATA SAFE] lpa = 204616 +[47297.350861] bdbm: [EUNJI] [DATA SAFE] lpa = 204617 +[47297.351333] bdbm: [EUNJI] [DATA SAFE] lpa = 204618 +[47297.351808] bdbm: [EUNJI] [DATA SAFE] lpa = 204619 +[47297.352279] bdbm: [EUNJI] [DATA SAFE] lpa = 204620 +[47297.352750] bdbm: [EUNJI] [DATA SAFE] lpa = 204621 +[47297.353221] bdbm: [EUNJI] [DATA SAFE] lpa = 204622 +[47297.353696] bdbm: [EUNJI] [DATA SAFE] lpa = 204623 +[47297.354169] bdbm: [EUNJI] [DATA SAFE] lpa = 204624 +[47297.354642] bdbm: [EUNJI] [DATA SAFE] lpa = 204625 +[47297.355117] bdbm: [EUNJI] [DATA SAFE] lpa = 204626 +[47297.355594] bdbm: [EUNJI] [DATA SAFE] lpa = 204627 +[47297.356066] bdbm: [EUNJI] [DATA SAFE] lpa = 204628 +[47297.356537] bdbm: [EUNJI] [DATA SAFE] lpa = 204629 +[47297.357013] bdbm: [EUNJI] [DATA SAFE] lpa = 204630 +[47297.357485] bdbm: [EUNJI] [DATA SAFE] lpa = 204631 +[47297.357956] bdbm: [EUNJI] [DATA SAFE] lpa = 204632 +[47297.358435] bdbm: [EUNJI] [DATA SAFE] lpa = 204633 +[47297.358907] bdbm: [EUNJI] [DATA SAFE] lpa = 204634 +[47297.359383] bdbm: [EUNJI] [DATA SAFE] lpa = 204635 +[47297.359856] bdbm: [EUNJI] [DATA SAFE] lpa = 204636 +[47297.360333] bdbm: [EUNJI] [DATA SAFE] lpa = 204637 +[47297.360805] bdbm: [EUNJI] [DATA SAFE] lpa = 204638 +[47297.361280] bdbm: [EUNJI] [DATA SAFE] lpa = 204639 +[47297.361756] bdbm: [EUNJI] [DATA SAFE] lpa = 204640 +[47297.362230] bdbm: [EUNJI] [DATA SAFE] lpa = 204641 +[47297.362706] bdbm: [EUNJI] [DATA SAFE] lpa = 204642 +[47297.363177] bdbm: [EUNJI] [DATA SAFE] lpa = 204643 +[47297.363655] bdbm: [EUNJI] [DATA SAFE] lpa = 204644 +[47297.364130] bdbm: [EUNJI] [DATA SAFE] lpa = 204645 +[47297.364609] bdbm: [EUNJI] [DATA SAFE] lpa = 204646 +[47297.365082] bdbm: [EUNJI] [DATA SAFE] lpa = 204647 +[47297.365559] bdbm: [EUNJI] [DATA SAFE] lpa = 204648 +[47297.366034] bdbm: [EUNJI] [DATA SAFE] lpa = 204649 +[47297.366509] bdbm: [EUNJI] [DATA SAFE] lpa = 204650 +[47297.366986] bdbm: [EUNJI] [DATA SAFE] lpa = 204651 +[47297.367462] bdbm: [EUNJI] [DATA SAFE] lpa = 204652 +[47297.367938] bdbm: [EUNJI] [DATA SAFE] lpa = 204653 +[47297.368415] bdbm: [EUNJI] [DATA SAFE] lpa = 204654 +[47297.368893] bdbm: [EUNJI] [DATA SAFE] lpa = 204655 +[47297.369366] bdbm: [EUNJI] [DATA SAFE] lpa = 204656 +[47297.369846] bdbm: [EUNJI] [DATA SAFE] lpa = 204657 +[47297.370325] bdbm: [EUNJI] [DATA SAFE] lpa = 204658 +[47297.370798] bdbm: [EUNJI] [DATA SAFE] lpa = 204659 +[47297.371272] bdbm: [EUNJI] [DATA SAFE] lpa = 204660 +[47297.371747] bdbm: [EUNJI] [DATA SAFE] lpa = 204661 +[47297.372224] bdbm: [EUNJI] [DATA SAFE] lpa = 204662 +[47297.372700] bdbm: [EUNJI] [DATA SAFE] lpa = 204663 +[47297.373177] bdbm: [EUNJI] [DATA SAFE] lpa = 204664 +[47297.373675] bdbm: [EUNJI] [DATA SAFE] lpa = 204665 +[47297.374149] bdbm: [EUNJI] [DATA SAFE] lpa = 204666 +[47297.374620] bdbm: [EUNJI] [DATA SAFE] lpa = 204667 +[47297.375090] bdbm: [EUNJI] [DATA SAFE] lpa = 204668 +[47297.375561] bdbm: [EUNJI] [DATA SAFE] lpa = 204669 +[47297.376033] bdbm: [EUNJI] [DATA SAFE] lpa = 204670 +[47297.376504] bdbm: [EUNJI] [DATA SAFE] lpa = 204671 +[47297.376975] bdbm: [EUNJI] [DATA SAFE] lpa = 204672 +[47297.377448] bdbm: [EUNJI] [DATA SAFE] lpa = 204673 +[47297.377922] bdbm: [EUNJI] [DATA SAFE] lpa = 204674 +[47297.378400] bdbm: [EUNJI] [DATA SAFE] lpa = 204675 +[47297.378878] bdbm: [EUNJI] [DATA SAFE] lpa = 204676 +[47297.379350] bdbm: [EUNJI] [DATA SAFE] lpa = 204677 +[47297.379820] bdbm: [EUNJI] [DATA SAFE] lpa = 204678 +[47297.380293] bdbm: [EUNJI] [DATA SAFE] lpa = 204679 +[47297.380769] bdbm: [EUNJI] [DATA SAFE] lpa = 204680 +[47297.381245] bdbm: [EUNJI] [DATA SAFE] lpa = 204681 +[47297.381718] bdbm: [EUNJI] [DATA SAFE] lpa = 204682 +[47297.382190] bdbm: [EUNJI] [DATA SAFE] lpa = 204683 +[47297.382661] bdbm: [EUNJI] [DATA SAFE] lpa = 204684 +[47297.383137] bdbm: [EUNJI] [DATA SAFE] lpa = 204685 +[47297.383613] bdbm: [EUNJI] [DATA SAFE] lpa = 204686 +[47297.384090] bdbm: [EUNJI] [DATA SAFE] lpa = 204687 +[47297.384566] bdbm: [EUNJI] [DATA SAFE] lpa = 204688 +[47297.385038] bdbm: [EUNJI] [DATA SAFE] lpa = 204689 +[47297.385511] bdbm: [EUNJI] [DATA SAFE] lpa = 204690 +[47297.385986] bdbm: [EUNJI] [DATA SAFE] lpa = 204691 +[47297.386458] bdbm: [EUNJI] [DATA SAFE] lpa = 204692 +[47297.386930] bdbm: [EUNJI] [DATA SAFE] lpa = 204693 +[47297.387403] bdbm: [EUNJI] [DATA SAFE] lpa = 204694 +[47297.387880] bdbm: [EUNJI] [DATA SAFE] lpa = 204695 +[47297.388356] bdbm: [EUNJI] [DATA SAFE] lpa = 204696 +[47297.388832] bdbm: [EUNJI] [DATA SAFE] lpa = 204697 +[47297.389310] bdbm: [EUNJI] [DATA SAFE] lpa = 204698 +[47297.389783] bdbm: [EUNJI] [DATA SAFE] lpa = 204699 +[47297.390255] bdbm: [EUNJI] [DATA SAFE] lpa = 204700 +[47297.390731] bdbm: [EUNJI] [DATA SAFE] lpa = 204701 +[47297.391204] bdbm: [EUNJI] [DATA SAFE] lpa = 204702 +[47297.391682] bdbm: [EUNJI] [DATA SAFE] lpa = 204703 +[47297.392156] bdbm: [EUNJI] [DATA SAFE] lpa = 204704 +[47297.392635] bdbm: [EUNJI] [DATA SAFE] lpa = 204705 +[47297.393113] bdbm: [EUNJI] [DATA SAFE] lpa = 204706 +[47297.393589] bdbm: [EUNJI] [DATA SAFE] lpa = 204707 +[47297.394068] bdbm: [EUNJI] [DATA SAFE] lpa = 204708 +[47297.394545] bdbm: [EUNJI] [DATA SAFE] lpa = 204709 +[47297.395021] bdbm: [EUNJI] [DATA SAFE] lpa = 204710 +[47297.395498] bdbm: [EUNJI] [DATA SAFE] lpa = 204711 +[47297.395975] bdbm: [EUNJI] [DATA SAFE] lpa = 204712 +[47297.396449] bdbm: [EUNJI] [DATA SAFE] lpa = 204713 +[47297.396927] bdbm: [EUNJI] [DATA SAFE] lpa = 204714 +[47297.397403] bdbm: [EUNJI] [DATA SAFE] lpa = 204715 +[47297.397879] bdbm: [EUNJI] [DATA SAFE] lpa = 204716 +[47297.398359] bdbm: [EUNJI] [DATA SAFE] lpa = 204717 +[47297.398835] bdbm: [EUNJI] [DATA SAFE] lpa = 204718 +[47297.399312] bdbm: [EUNJI] [DATA SAFE] lpa = 204719 +[47297.399789] bdbm: [EUNJI] [DATA SAFE] lpa = 204720 +[47297.400267] bdbm: [EUNJI] [DATA SAFE] lpa = 204721 +[47297.400744] bdbm: [EUNJI] [DATA SAFE] lpa = 204722 +[47297.401224] bdbm: [EUNJI] [DATA SAFE] lpa = 204723 +[47297.401702] bdbm: [EUNJI] [DATA SAFE] lpa = 204724 +[47297.402177] bdbm: [EUNJI] [DATA SAFE] lpa = 204725 +[47297.402657] bdbm: [EUNJI] [DATA SAFE] lpa = 204726 +[47297.403133] bdbm: [EUNJI] [DATA SAFE] lpa = 204727 +[47297.403612] bdbm: [EUNJI] [DATA SAFE] lpa = 204728 +[47297.404089] bdbm: [EUNJI] [DATA SAFE] lpa = 204729 +[47297.404558] bdbm: [EUNJI] [DATA SAFE] lpa = 204730 +[47297.405031] bdbm: [EUNJI] [DATA SAFE] lpa = 204731 +[47297.405504] bdbm: [EUNJI] [DATA SAFE] lpa = 204732 +[47297.405980] bdbm: [EUNJI] [DATA SAFE] lpa = 204733 +[47297.406453] bdbm: [EUNJI] [DATA SAFE] lpa = 204734 +[47297.406927] bdbm: [EUNJI] [DATA SAFE] lpa = 204735 +[47297.407403] bdbm: [EUNJI] [DATA SAFE] lpa = 204736 +[47297.407875] bdbm: [EUNJI] [DATA SAFE] lpa = 204737 +[47297.408351] bdbm: [EUNJI] [DATA SAFE] lpa = 204738 +[47297.408827] bdbm: [EUNJI] [DATA SAFE] lpa = 204739 +[47297.409300] bdbm: [EUNJI] [DATA SAFE] lpa = 204740 +[47297.409776] bdbm: [EUNJI] [DATA SAFE] lpa = 204741 +[47297.410249] bdbm: [EUNJI] [DATA SAFE] lpa = 204742 +[47297.410720] bdbm: [EUNJI] [DATA SAFE] lpa = 204743 +[47297.411193] bdbm: [EUNJI] [DATA SAFE] lpa = 204744 +[47297.411665] bdbm: [EUNJI] [DATA SAFE] lpa = 204745 +[47297.412141] bdbm: [EUNJI] [DATA SAFE] lpa = 204746 +[47297.412612] bdbm: [EUNJI] [DATA SAFE] lpa = 204747 +[47297.413083] bdbm: [EUNJI] [DATA SAFE] lpa = 204748 +[47297.413554] bdbm: [EUNJI] [DATA SAFE] lpa = 204749 +[47297.414030] bdbm: [EUNJI] [DATA SAFE] lpa = 204750 +[47297.414502] bdbm: [EUNJI] [DATA SAFE] lpa = 204751 +[47297.414975] bdbm: [EUNJI] [DATA SAFE] lpa = 204752 +[47297.415452] bdbm: [EUNJI] [DATA SAFE] lpa = 204753 +[47297.415929] bdbm: [EUNJI] [DATA SAFE] lpa = 204754 +[47297.416404] bdbm: [EUNJI] [DATA SAFE] lpa = 204755 +[47297.416881] bdbm: [EUNJI] [DATA SAFE] lpa = 204756 +[47297.417352] bdbm: [EUNJI] [DATA SAFE] lpa = 204757 +[47297.417825] bdbm: [EUNJI] [DATA SAFE] lpa = 204758 +[47297.418301] bdbm: [EUNJI] [DATA SAFE] lpa = 204759 +[47297.418777] bdbm: [EUNJI] [DATA SAFE] lpa = 204760 +[47297.419254] bdbm: [EUNJI] [DATA SAFE] lpa = 204761 +[47297.419726] bdbm: [EUNJI] [DATA SAFE] lpa = 204762 +[47297.420199] bdbm: [EUNJI] [DATA SAFE] lpa = 204763 +[47297.420672] bdbm: [EUNJI] [DATA SAFE] lpa = 204764 +[47297.421149] bdbm: [EUNJI] [DATA SAFE] lpa = 204765 +[47297.421640] bdbm: [EUNJI] [DATA SAFE] lpa = 204766 +[47297.422118] bdbm: [EUNJI] [DATA SAFE] lpa = 204767 +[47297.422590] bdbm: [EUNJI] [DATA SAFE] lpa = 204768 +[47297.423067] bdbm: [EUNJI] [DATA SAFE] lpa = 204769 +[47297.423545] bdbm: [EUNJI] [DATA SAFE] lpa = 204770 +[47297.424022] bdbm: [EUNJI] [DATA SAFE] lpa = 204771 +[47297.424493] bdbm: [EUNJI] [DATA SAFE] lpa = 204772 +[47297.424973] bdbm: [EUNJI] [DATA SAFE] lpa = 204773 +[47297.425450] bdbm: [EUNJI] [DATA SAFE] lpa = 204774 +[47297.425926] bdbm: [EUNJI] [DATA SAFE] lpa = 204775 +[47297.426399] bdbm: [EUNJI] [DATA SAFE] lpa = 204776 +[47297.426877] bdbm: [EUNJI] [DATA SAFE] lpa = 204777 +[47297.427353] bdbm: [EUNJI] [DATA SAFE] lpa = 204778 +[47297.427831] bdbm: [EUNJI] [DATA SAFE] lpa = 204779 +[47297.428305] bdbm: [EUNJI] [DATA SAFE] lpa = 204780 +[47297.428782] bdbm: [EUNJI] [DATA SAFE] lpa = 204781 +[47297.429260] bdbm: [EUNJI] [DATA SAFE] lpa = 204782 +[47297.429738] bdbm: [EUNJI] [DATA SAFE] lpa = 204783 +[47297.430212] bdbm: [EUNJI] [DATA SAFE] lpa = 204784 +[47297.430690] bdbm: [EUNJI] [DATA SAFE] lpa = 204785 +[47297.431168] bdbm: [EUNJI] [DATA SAFE] lpa = 204786 +[47297.431645] bdbm: [EUNJI] [DATA SAFE] lpa = 204787 +[47297.432124] bdbm: [EUNJI] [DATA SAFE] lpa = 204788 +[47297.432601] bdbm: [EUNJI] [DATA SAFE] lpa = 204789 +[47297.433076] bdbm: [EUNJI] [DATA SAFE] lpa = 204790 +[47297.433553] bdbm: [EUNJI] [DATA SAFE] lpa = 204791 +[47297.434029] bdbm: [EUNJI] [DATA SAFE] lpa = 204792 +[47297.434508] bdbm: [EUNJI] [DATA SAFE] lpa = 204793 +[47297.434977] bdbm: [EUNJI] [DATA SAFE] lpa = 204794 +[47297.435448] bdbm: [EUNJI] [DATA SAFE] lpa = 204795 +[47297.435924] bdbm: [EUNJI] [DATA SAFE] lpa = 204796 +[47297.436396] bdbm: [EUNJI] [DATA SAFE] lpa = 204797 +[47297.436862] bdbm: [EUNJI] [DATA SAFE] lpa = 204798 +[47297.437337] bdbm: [EUNJI] [DATA SAFE] lpa = 204799 +[47297.437804] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 229376 +[47297.438275] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 229377 +[47297.438748] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 294912 +[47297.439217] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 294913 +[47297.439690] bdbm: [EUNJI] [DATA SAFE] lpa = 471840 +[47297.440161] bdbm: [EUNJI] [DATA SAFE] lpa = 471841 +[47297.440632] bdbm: [EUNJI] [DATA SAFE] lpa = 471842 +[47297.441104] bdbm: [EUNJI] [DATA SAFE] lpa = 471843 +[47297.441575] bdbm: [EUNJI] [DATA SAFE] lpa = 471844 +[47297.442049] bdbm: [EUNJI] [DATA SAFE] lpa = 471845 +[47297.442526] bdbm: [EUNJI] [DATA SAFE] lpa = 471846 +[47297.442998] bdbm: [EUNJI] [DATA SAFE] lpa = 471847 +[47297.443469] bdbm: [EUNJI] [DATA SAFE] lpa = 471848 +[47297.443940] bdbm: [EUNJI] [DATA SAFE] lpa = 471849 +[47297.444412] bdbm: [EUNJI] [DATA SAFE] lpa = 471850 +[47297.444888] bdbm: [EUNJI] [DATA SAFE] lpa = 471851 +[47297.445361] bdbm: [EUNJI] [DATA SAFE] lpa = 471852 +[47297.445833] bdbm: [EUNJI] [DATA SAFE] lpa = 471853 +[47297.446310] bdbm: [EUNJI] [DATA SAFE] lpa = 471854 +[47297.446781] bdbm: [EUNJI] [DATA SAFE] lpa = 471855 +[47297.447272] bdbm: [EUNJI] [DATA SAFE] lpa = 471856 +[47297.458270] bdbm: [EUNJI] read miss: 1 remains +[47297.458425] bdbm: [EUNJI] lpa=1 req complete ff0101 +[47297.458430] EXT4-fs (robusta): ext4_check_descriptors: Inode table for group 0 overlaps superblock +[47297.458433] EXT4-fs (robusta): ext4_check_descriptors: Checksum for group 0 failed (63685!=0) +[47297.458435] EXT4-fs (robusta): group descriptors corrupted! +[47443.804293] bdbm: ----------------------------------------------- +[47443.804295] bdbm: < PERFORMANCE SUMMARY > +[47443.804296] bdbm: [0] Execution Time (us): 151.456374 +[47443.804297] bdbm: +[47443.804297] bdbm: [1] Total I/Os +[47443.804298] bdbm: # of page reads: 1 +[47443.804298] bdbm: # of page writes: 0 +[47443.804299] bdbm: # of block erase: 0 +[47443.804299] bdbm: +[47443.804300] bdbm: [2] Normal I/Os +[47443.804300] bdbm: # of page reads: 1 +[47443.804300] bdbm: # of page writes: 0 +[47443.804301] bdbm: # of page rmw reads: 0 +[47443.804301] bdbm: # of page rmw writes: 0 +[47443.804302] bdbm: +[47443.804302] bdbm: [3] GC I/Os +[47443.804303] bdbm: # of GC invocation: 0 +[47443.804303] bdbm: # of page reads: 0 +[47443.804304] bdbm: # of page writes: 0 +[47443.804304] bdbm: # of block erase: 0 +[47443.804304] bdbm: +[47443.804305] bdbm: [4] Meta I/Os +[47443.804305] bdbm: # of meta page reads: 0 +[47443.804306] bdbm: # of meta page writes: 0 +[47443.804306] bdbm: +[47443.804307] bdbm: [5] Elapsed Time +[47443.804307] bdbm: page read (us): 155 (S:17 + Q:39 + D:99) +[47443.804308] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[47443.804309] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[47443.804309] bdbm: +[47443.804309] bdbm: [6] Utilization (R) +[47443.804321] bdbm: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +[47443.804322] bdbm: +[47443.804322] bdbm: [7] Utilization (W) +[47443.804333] bdbm: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +[47443.804334] bdbm: ----------------------------------------------- +[47443.804334] bdbm: ----------------------------------------------- +[47443.935436] bdbm: done +[47443.935437] bdbm: [dm_ramdrive_close] closed! +[47443.989453] bdbm: [bdbm_drv_main] bdbm_drv is closed +[47443.989456] bdbm: [bdbm_drv_main] bdbm_drv is removed +[47444.030730] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[47444.076424] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[47444.100964] bdbm: ===================================================================== +[47444.100966] bdbm: DEVICE PARAMETERS +[47444.100967] bdbm: ===================================================================== +[47444.100968] bdbm: # of channels = 64 +[47444.100968] bdbm: # of chips per channel = 1 +[47444.100969] bdbm: # of blocks per chip = 128 +[47444.100969] bdbm: # of pages per block = 64 +[47444.100970] bdbm: # of subpages per page = 1 +[47444.100970] bdbm: page main size = 4096 bytes +[47444.100971] bdbm: page oob size = 64 bytes +[47444.100971] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[47444.100972] bdbm: +[47444.100973] bdbm: ===================================================================== +[47444.100973] bdbm: RAM DISK INFO +[47444.100973] bdbm: ===================================================================== +[47444.100974] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) +[47444.298306] bdbm: ramssd addr = ffffc90050001000 +[47444.298308] bdbm: +[47444.298308] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[47444.493554] bdbm: *** building ptr_ramssd_data done +[47444.493759] bdbm: [dm_ramdrive_probe] probe done! +[47444.493762] bdbm: [dm_ramdrive_open] open done! +[47444.493782] bdbm: nvm cache addr = ffffc90006e22000 +[47444.493799] bdbm: ========================================================== +[47444.493800] bdbm: NVM CONFIGURATION +[47444.493800] bdbm: ========================================================== +[47444.493801] bdbm: total size = 12288, nr_nvm_pages = 3, nvm_page_size = 4096 +[47444.598598] bdbm: TRIM is disabled +[47444.598724] bdbm: ===================================================================== +[47444.598725] bdbm: DEVICE PARAMETERS +[47444.598727] bdbm: ===================================================================== +[47444.598729] bdbm: # of channels = 64 +[47444.598729] bdbm: # of chips per channel = 1 +[47444.598730] bdbm: # of blocks per chip = 128 +[47444.598731] bdbm: # of pages per block = 64 +[47444.598733] bdbm: # of subpages per page = 1 +[47444.598735] bdbm: page main size = 4096 bytes +[47444.598736] bdbm: page oob size = 64 bytes +[47444.598737] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[47444.598738] bdbm: +[47444.598740] bdbm: ===================================================================== +[47444.598741] bdbm: FTL CONFIGURATION +[47444.598741] bdbm: ===================================================================== +[47444.598743] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[47444.598744] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[47444.598745] bdbm: wl policy = 1 (1: none, 2: swap) +[47444.598745] bdbm: trim mode = 2 (1: enable, 2: disable) +[47444.598747] bdbm: kernel sector = 512 bytes +[47444.598749] bdbm: +[47444.598750] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[47445.622704] bdbm: llm_make_req: 0, 1 +[47445.622808] bdbm: [EUNJI] read miss: 1 remains +[47445.622822] bdbm: [EUNJI] lpa=1 req complete ff0102 +[47445.623253] bdbm: [EUNJI] lpa=1 req complete ff0102 +[47445.642047] bdbm: [EUNJI] write hit: 0 remains +[47445.642050] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642052] bdbm: [EUNJI] write hit: 0 remains +[47445.642053] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642055] bdbm: [EUNJI] write hit: 0 remains +[47445.642056] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642057] bdbm: [EUNJI] write hit: 0 remains +[47445.642058] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642060] bdbm: [EUNJI] write hit: 0 remains +[47445.642061] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642062] bdbm: [EUNJI] write hit: 0 remains +[47445.642063] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642064] bdbm: [EUNJI] write hit: 0 remains +[47445.642065] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.642067] bdbm: [EUNJI] write hit: 0 remains +[47445.642068] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47445.643044] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 1 +[47445.643517] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 2 +[47445.643990] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 3 +[47445.644462] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 4 +[47445.644936] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 5 +[47445.645409] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 6 +[47445.645883] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 7 +[47445.646355] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 8 +[47445.646828] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 9 +[47445.647302] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 10 +[47445.647777] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 11 +[47445.648251] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 12 +[47445.648726] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 13 +[47445.649202] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 14 +[47445.649678] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 15 +[47445.650153] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 16 +[47445.650629] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 17 +[47445.651105] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 18 +[47445.651579] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 19 +[47445.652049] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 20 +[47445.656853] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 21 +[47445.657379] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 22 +[47445.657884] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 23 +[47445.658395] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 24 +[47445.658890] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 25 +[47445.659412] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 26 +[47445.659910] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 27 +[47445.660381] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 28 +[47445.660851] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 29 +[47445.661321] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 30 +[47445.661795] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 31 +[47445.662279] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 32 +[47445.662765] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 33 +[47445.663254] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 34 +[47445.663741] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 35 +[47445.664241] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 36 +[47445.664712] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 37 +[47445.665252] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 38 +[47445.665759] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 39 +[47445.666272] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 40 +[47445.666783] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 41 +[47445.667302] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 42 +[47445.667810] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 43 +[47445.668332] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 44 +[47445.668814] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 45 +[47445.669293] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 46 +[47445.669777] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 47 +[47445.670252] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 48 +[47445.670728] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 49 +[47445.671205] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 50 +[47445.671682] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 51 +[47445.672159] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 52 +[47445.672632] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 53 +[47445.673109] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 54 +[47445.673698] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 55 +[47445.674175] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 56 +[47445.674648] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 57 +[47445.675121] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 58 +[47445.675594] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 59 +[47445.676070] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 60 +[47445.676548] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 61 +[47445.677024] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 62 +[47445.677498] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 63 +[47445.677968] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 64 +[47445.678437] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 65 +[47445.678910] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 66 +[47445.679384] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 67 +[47445.679857] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 68 +[47445.680332] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 69 +[47445.680805] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 70 +[47445.681277] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 71 +[47445.681751] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 72 +[47445.682224] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 73 +[47445.682698] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 74 +[47445.683171] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 75 +[47445.683644] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 76 +[47445.684118] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 77 +[47445.684586] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 78 +[47445.685061] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 79 +[47445.685530] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 80 +[47445.686004] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 81 +[47445.686479] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 82 +[47445.686953] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 83 +[47445.687425] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 84 +[47445.687899] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 85 +[47445.688373] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 86 +[47445.688845] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 87 +[47445.689319] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 88 +[47445.689794] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 89 +[47445.690269] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 90 +[47445.690744] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 91 +[47445.691217] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 92 +[47445.691690] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 93 +[47445.692163] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 94 +[47445.692635] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 95 +[47445.693109] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 96 +[47445.693701] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 97 +[47445.694176] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 98 +[47445.694651] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 99 +[47445.695125] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 100 +[47445.695598] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 101 +[47445.696071] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 102 +[47445.696544] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 103 +[47445.697017] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 104 +[47445.697489] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 105 +[47445.697964] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 106 +[47445.698439] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 107 +[47445.698912] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 108 +[47445.699386] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 109 +[47445.699861] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 110 +[47445.700335] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 111 +[47445.700808] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 112 +[47445.701292] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 113 +[47445.701767] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 114 +[47445.702241] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 115 +[47445.702715] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 116 +[47445.703188] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 117 +[47445.703664] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 123 +[47445.704138] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 131 +[47445.704612] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 132 +[47445.705085] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 147 +[47445.705563] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 7527 +[47445.706038] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 7528 +[47445.707935] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 7532 +[47445.708402] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 32768 +[47445.708873] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 32769 +[47445.709340] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 98304 +[47445.709810] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 98305 +[47445.710283] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 163840 +[47445.710758] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 163841 +[47445.711229] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 196608 +[47449.603193] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 229376 +[47449.603663] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 229377 +[47449.604134] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 294912 +[47449.604605] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 294913 +[47449.622248] bdbm: [EUNJI] read miss: 1 remains +[47449.622358] bdbm: [EUNJI] lpa=1 req complete ff0101 +[47449.622364] EXT4-fs (robusta): ext4_check_descriptors: Inode table for group 0 overlaps superblock +[47449.622366] EXT4-fs (robusta): ext4_check_descriptors: Checksum for group 0 failed (32419!=0) +[47449.622368] EXT4-fs (robusta): group descriptors corrupted! +[47468.131543] bdbm: ----------------------------------------------- +[47468.131545] bdbm: < PERFORMANCE SUMMARY > +[47468.131546] bdbm: [0] Execution Time (us): 23.532185 +[47468.131547] bdbm: +[47468.131547] bdbm: [1] Total I/Os +[47468.131548] bdbm: # of page reads: 1 +[47468.131548] bdbm: # of page writes: 0 +[47468.131549] bdbm: # of block erase: 0 +[47468.131550] bdbm: +[47468.131551] bdbm: [2] Normal I/Os +[47468.131551] bdbm: # of page reads: 1 +[47468.131551] bdbm: # of page writes: 0 +[47468.131552] bdbm: # of page rmw reads: 0 +[47468.131552] bdbm: # of page rmw writes: 0 +[47468.131553] bdbm: +[47468.131553] bdbm: [3] GC I/Os +[47468.131554] bdbm: # of GC invocation: 0 +[47468.131554] bdbm: # of page reads: 0 +[47468.131554] bdbm: # of page writes: 0 +[47468.131556] bdbm: # of block erase: 0 +[47468.131556] bdbm: +[47468.131557] bdbm: [4] Meta I/Os +[47468.131557] bdbm: # of meta page reads: 0 +[47468.131558] bdbm: # of meta page writes: 0 +[47468.131558] bdbm: +[47468.131558] bdbm: [5] Elapsed Time +[47468.131559] bdbm: page read (us): 112 (S:4 + Q:10 + D:98) +[47468.131560] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[47468.131560] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[47468.131562] bdbm: +[47468.131562] bdbm: [6] Utilization (R) +[47468.131575] bdbm: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +[47468.131576] bdbm: +[47468.131576] bdbm: [7] Utilization (W) +[47468.131589] bdbm: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +[47468.131590] bdbm: ----------------------------------------------- +[47468.131591] bdbm: ----------------------------------------------- +[47468.272367] bdbm: done +[47468.272369] bdbm: [dm_ramdrive_close] closed! +[47468.326632] bdbm: [bdbm_drv_main] bdbm_drv is closed +[47468.326635] bdbm: [bdbm_drv_main] bdbm_drv is removed +[47468.356498] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[47468.403157] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[47468.429897] bdbm: ===================================================================== +[47468.429898] bdbm: DEVICE PARAMETERS +[47468.429899] bdbm: ===================================================================== +[47468.429899] bdbm: # of channels = 64 +[47468.429900] bdbm: # of chips per channel = 1 +[47468.429900] bdbm: # of blocks per chip = 128 +[47468.429901] bdbm: # of pages per block = 64 +[47468.429901] bdbm: # of subpages per page = 1 +[47468.429901] bdbm: page main size = 4096 bytes +[47468.429902] bdbm: page oob size = 64 bytes +[47468.429903] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[47468.429903] bdbm: +[47468.429904] bdbm: ===================================================================== +[47468.429904] bdbm: RAM DISK INFO +[47468.429905] bdbm: ===================================================================== +[47468.429906] bdbm: the SSD capacity: 2147483648 (B), 2097152 (KB), 2048 (MB) +[47468.623601] bdbm: ramssd addr = ffffc90050001000 +[47468.623602] bdbm: +[47468.623602] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[47468.815669] bdbm: *** building ptr_ramssd_data done +[47468.815857] bdbm: [dm_ramdrive_probe] probe done! +[47468.815859] bdbm: [dm_ramdrive_open] open done! +[47468.815879] bdbm: nvm cache addr = ffffc90006e22000 +[47468.815882] bdbm: ========================================================== +[47468.815897] bdbm: NVM CONFIGURATION +[47468.815897] bdbm: ========================================================== +[47468.815898] bdbm: total size = 12288, nr_nvm_pages = 3, nvm_page_size = 4096 +[47468.921081] bdbm: TRIM is disabled +[47468.921227] bdbm: ===================================================================== +[47468.921228] bdbm: DEVICE PARAMETERS +[47468.921228] bdbm: ===================================================================== +[47468.921229] bdbm: # of channels = 64 +[47468.921242] bdbm: # of chips per channel = 1 +[47468.921242] bdbm: # of blocks per chip = 128 +[47468.921243] bdbm: # of pages per block = 64 +[47468.921243] bdbm: # of subpages per page = 1 +[47468.921244] bdbm: page main size = 4096 bytes +[47468.921244] bdbm: page oob size = 64 bytes +[47468.921245] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[47468.921245] bdbm: +[47468.921246] bdbm: ===================================================================== +[47468.921246] bdbm: FTL CONFIGURATION +[47468.921247] bdbm: ===================================================================== +[47468.921247] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[47468.921248] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[47468.921248] bdbm: wl policy = 1 (1: none, 2: swap) +[47468.921249] bdbm: trim mode = 2 (1: enable, 2: disable) +[47468.921249] bdbm: kernel sector = 512 bytes +[47468.921250] bdbm: +[47468.921250] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[47469.942326] bdbm: llm_make_req: 0, 1 +[47469.942432] bdbm: [EUNJI] read miss: 1 remains +[47469.942445] bdbm: [EUNJI] lpa=1 req complete ff0102 +[47469.942935] bdbm: [EUNJI] lpa=1 req complete ff0102 +[47469.961759] bdbm: [EUNJI] write hit: 0 remains +[47469.961760] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47469.961763] bdbm: [EUNJI] write hit: 0 remains +[47469.961764] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47469.961765] bdbm: [EUNJI] write hit: 0 remains +[47469.961766] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47469.961767] bdbm: [EUNJI] write hit: 0 remains +[47469.961769] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47469.961771] bdbm: [EUNJI] write hit: 0 remains +[47469.961771] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47469.961773] bdbm: [EUNJI] write hit: 0 remains +[47469.961773] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47469.961775] bdbm: [EUNJI] write hit: 0 remains +[47469.961776] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47469.961791] bdbm: [EUNJI] write hit: 0 remains +[47469.961791] bdbm: [EUNJI] lpa=1 req complete ff0104 +[47469.962759] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 1 +[47469.963230] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 2 +[47469.963701] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 3 +[47469.964172] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 4 +[47469.964643] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 5 +[47469.965130] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 6 +[47469.965600] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 7 +[47469.966071] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 8 +[47469.966553] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 9 +[47469.967053] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 10 +[47469.967580] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 11 +[47469.968103] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 12 +[47469.968625] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 13 +[47469.969131] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 14 +[47469.969632] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 15 +[47469.970122] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 16 +[47469.970593] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 17 +[47469.971079] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 18 +[47469.971584] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 19 +[47469.972096] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 20 +[47469.976335] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 21 +[47469.976865] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 22 +[47469.977412] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 23 +[47469.977920] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 24 +[47469.978456] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 25 +[47469.979007] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 26 +[47469.979555] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 27 +[47469.980105] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 28 +[47469.980655] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 29 +[47469.981202] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 30 +[47469.981707] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 31 +[47469.982245] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 32 +[47469.982752] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 33 +[47469.983288] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 34 +[47469.983827] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 35 +[47469.984347] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 36 +[47469.984870] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 37 +[47469.985391] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 38 +[47469.985898] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 39 +[47469.986406] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 40 +[47469.986929] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 41 +[47469.987436] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 42 +[47469.987957] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 43 +[47469.988481] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 44 +[47469.989014] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 45 +[47469.989522] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 46 +[47469.990044] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 47 +[47469.990580] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 48 +[47469.991116] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 49 +[47469.991624] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 50 +[47469.992159] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 51 +[47469.992667] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 52 +[47469.993176] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 53 +[47469.993695] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 54 +[47469.994186] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 55 +[47469.994668] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 56 +[47469.995144] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 57 +[47469.995631] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 58 +[47469.996109] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 59 +[47469.996586] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 60 +[47469.997064] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 61 +[47469.997543] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 62 +[47469.998022] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 63 +[47469.998498] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 64 +[47469.998965] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 65 +[47469.999437] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 66 +[47469.999909] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 67 +[47470.000375] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 68 +[47470.000847] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 69 +[47470.001319] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 70 +[47470.001787] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 71 +[47470.002257] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 72 +[47470.002729] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 73 +[47470.003201] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 74 +[47470.003667] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 75 +[47470.004134] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 76 +[47470.004606] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 77 +[47470.005077] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 78 +[47470.005549] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 79 +[47470.006021] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 80 +[47470.006492] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 81 +[47470.006964] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 82 +[47470.007435] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 83 +[47470.007908] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 84 +[47470.008379] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 85 +[47470.008851] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 86 +[47470.009323] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 87 +[47470.009794] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 88 +[47470.010264] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 89 +[47470.010735] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 90 +[47470.011207] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 91 +[47470.011678] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 92 +[47470.012149] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 93 +[47470.012620] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 94 +[47470.013092] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 95 +[47470.013563] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 96 +[47470.014033] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 97 +[47470.014504] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 98 +[47470.014975] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 99 +[47470.015447] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 100 +[47470.015918] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 101 +[47470.016389] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 102 +[47470.016861] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 103 +[47470.017332] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 104 +[47470.017802] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 105 +[47470.018286] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 106 +[47470.018757] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 107 +[47470.019228] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 108 +[47470.019700] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 109 +[47470.020171] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 110 +[47470.020643] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 111 +[47470.021114] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 112 +[47470.021586] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 113 +[47470.022057] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 114 +[47470.022528] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 115 +[47470.022999] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 116 +[47470.023470] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 117 +[47470.023941] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 123 +[47470.024413] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 131 +[47470.024884] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 132 +[47470.025355] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 147 +[47470.025825] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 7527 +[47470.026298] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 7528 +[47470.028177] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 7532 +[47470.028643] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 32768 +[47470.029108] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 32769 +[47470.029574] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 98304 +[47470.030043] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 98305 +[47470.030511] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 163840 +[47470.030977] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 163841 +[47470.031447] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 196608 +[47474.068116] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 229376 +[47474.068587] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 229377 +[47474.069060] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 294912 +[47474.069533] bdbm: [EUNJI] [DATA CORRUPTION] lpa = 294913 +[47474.087864] bdbm: [EUNJI] read miss: 1 remains +[47474.088003] bdbm: [EUNJI] lpa=1 req complete ff0101 +[47474.088009] EXT4-fs (robusta): ext4_check_descriptors: Inode table for group 0 overlaps superblock +[47474.088011] EXT4-fs (robusta): ext4_check_descriptors: Checksum for group 0 failed (37445!=0) +[47474.088013] EXT4-fs (robusta): group descriptors corrupted! diff --git a/frontend/kernel/.nvm_cache.c.swp b/frontend/kernel/.nvm_cache.c.swp deleted file mode 100644 index 9df309a2cbd230f50a6931f16d479173eb406a03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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 VXIw%#qM+-sz3u8@oC_PA{{cX%Jn;Yk diff --git a/frontend/kernel/blkio.c b/frontend/kernel/blkio.c index a9ac9f3..3c46eef 100644 --- a/frontend/kernel/blkio.c +++ b/frontend/kernel/blkio.c @@ -223,6 +223,32 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) remains = bdi->ptr_nvm_inf->make_req(bdi, hr); bdbm_bug_on(remains < 0); } + + if(hr->nr_llm_reqs && hr->llm_reqs[0].logaddr.lpa[0] == 1){ + if(remains == hr->nr_llm_reqs){ + if (bdbm_is_read(hr->req_type)){ + bdbm_msg ("[EUNJI] read miss: %d remains", remains); + } + else{ + bdbm_msg ("[EUNJI] write miss: %d remains", remains); + } + }else if (remains == 0){ + if (bdbm_is_read(hr->req_type)){ + bdbm_msg ("[EUNJI] read hit: %d remains", remains); + } + else{ + bdbm_msg ("[EUNJI] write hit: %d remains", remains); + } + + }else{ + if (bdbm_is_read(hr->req_type)){ + bdbm_msg ("[EUNJI] partial read hit: %d remains", remains); + } + else{ + bdbm_msg ("[EUNJI] partial write hit: %d remains", remains); + } + } + } // bdbm_msg("nvm search ends"); #endif diff --git a/frontend/kernel/nvm_cache.c b/frontend/kernel/nvm_cache.c index 4f751d7..5fee830 100644 --- a/frontend/kernel/nvm_cache.c +++ b/frontend/kernel/nvm_cache.c @@ -49,6 +49,48 @@ bdbm_nvm_inf_t _nvm_dev = { }; +static void __display_hex_values (uint8_t* host, uint8_t* back) +{ + bdbm_msg (" * HOST: %x %x %x %x %x != FLASH: %x %x %x %x %x", + host[0], host[1], host[2], host[3], host[4], + back[0], back[1], back[2], back[3], back[4]); +} +static void __display_hex_values_all (uint8_t* host, uint8_t* back) +{ + int i = 0; + for (i = 0; i < KPAGE_SIZE; i+=4) { + bdbm_msg (" * HOST: %x %x %x %x != FLASH: %x %x %x %x", + host[i+0], host[i+1], host[i+2], host[i+3], + back[i+0], back[i+1], back[i+2], back[i+3]); + } +} +static void __display_hex_values_all_host (uint8_t* host) +{ + int i = 0; + for (i = 0; i < KPAGE_SIZE; i+=4) { + bdbm_msg (" * HOST: %x %x %x %x", + host[i+0], host[i+1], host[i+2], host[i+3]); + } +} +static void __display_hex_values_all_range (uint8_t* host, uint8_t* back, int size) +{ + int i = 0; + for (i = 0; i < size; i+=4) { + bdbm_msg (" * HOST: %x %x %x %x != FLASH: %x %x %x %x", + host[i+0], host[i+1], host[i+2], host[i+3], + back[i+0], back[i+1], back[i+2], back[i+3]); + } +} +static void __display_hex_values_all_host_range (uint8_t* host, int size) +{ + int i = 0; + for (i = 0; i < size; i+=4) { + bdbm_msg (" * HOST: %x %x %x %x", + host[i+0], host[i+1], host[i+2], host[i+3]); + } +} + + static void* __nvm_alloc_nvmram (bdbm_device_params_t* ptr_np) { void* ptr_nvmram = NULL; @@ -212,9 +254,10 @@ int64_t bdbm_nvm_find_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) lpa = lr->logaddr.lpa[0]; for(i = 0; i < p->nr_total_pages; i++){ - bdbm_msg("nvm_tbl[%llu] lpa = %d, tlpa = %d", i, nvm_tbl[i].logaddr.lpa[0], lpa); + if(lpa == 1) + bdbm_msg("nvm_tbl[%llu] lpa = %d, tlpa = %d", i, nvm_tbl[i].logaddr.lpa[0], lpa); if(nvm_tbl[i].logaddr.lpa[0] == lpa){ - bdbm_msg("hit: lpa = %llu", lpa); +// bdbm_msg("hit: lpa = %llu", lpa); found = i; break; } @@ -276,7 +319,9 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) bdbm_hlm_req_t* hr = NULL; int64_t nindex = -1; int64_t eindex = -1; - +#ifdef NVM_CACHE_DEBUG + uint8_t* ptr_ramssd_data = NULL; +#endif /* get a free page */ // if(p->nr_free_pages > LOW_WATERMARK){ if(p->nr_free_pages > 0){ @@ -289,7 +334,6 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) p->nr_inuse_pages ++; } else { // eviction is needed -// bdbm_msg("nvm is full"); #ifndef NVM_CACHE_WB return -1; #endif @@ -298,14 +342,19 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) bdbm_bug_on(epage == NULL); eindex = epage->index; edata_ptr = p->ptr_nvmram + (eindex * np->nvm_page_size); + bdbm_bug_on(!edata_ptr); + + if(epage->logaddr.lpa[0] == 1){ + bdbm_msg("evict page logaddr = %d, data_ptr = %p", epage->logaddr.lpa[0], edata_ptr); + __display_hex_values_all_host_range(edata_ptr, 16); + } /* get a free hlm_req from the hlm_reqs_pool */ if((hr = bdbm_hlm_reqs_pool_get_item(bp->hlm_reqs_pool)) == NULL){ bdbm_error("bdbm_hlm_reqs_pool_get_item () failed"); goto fail; } - //bdbm_msg("hr is created"); // 여기에서 edata cpy 할 때 lock 걸어야 할듯. 일단은 global lock 사용해보자. /* build hlm_req with nvm_info */ @@ -324,14 +373,34 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) } bdbm_sema_unlock (&bp->host_lock); - /* wait for writeback to be completed */ + /* wait for write back to be completed */ // bdbm_msg("try to get hr->done lock"); bdbm_sema_lock (&hr->done); // bdbm_msg("writeback is completed"); - bdbm_hlm_reqs_pool_free_item (bp->hlm_reqs_pool, hr); // release lock here +// DATA CHECK +#ifdef NVM_CACHE_DEBUG + + if(bdi->ptr_dm_inf->get_data){ + ptr_ramssd_data = bdi->ptr_dm_inf->get_data(bdi, epage->logaddr.lpa[0]); + } + bdbm_bug_on(edata_ptr == NULL); + bdbm_bug_on(ptr_ramssd_data == NULL); + + if(epage->logaddr.lpa[0] == 1){ + if (memcmp(edata_ptr, ptr_ramssd_data, KPAGE_SIZE)!=0){ + bdbm_msg("[EUNJI] [DATA CORRUPTION] lpa = %d", epage->logaddr.lpa[0]); + __display_hex_values_all_range (edata_ptr, ptr_ramssd_data, 16); + } + else{ + bdbm_msg("[EUNJI] [DATA SAFE] lpa = %d", epage->logaddr.lpa[0]); + } + } +#endif + bdbm_hlm_reqs_pool_free_item (bp->hlm_reqs_pool, hr); // release lock here + /* set new page index */ nindex = eindex; npage = epage; @@ -397,9 +466,9 @@ uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) nvm_tbl[nvm_idx].logaddr.lpa[0] = lr->logaddr.lpa[0]; // bdbm_msg("data write succeeds"); - for(i = 0; i < p->nr_total_pages; i++){ - bdbm_msg("nvm_tbl[%llu] lpa = %d", i, nvm_tbl[i].logaddr.lpa[0]); - } +// for(i = 0; i < p->nr_total_pages; i++){ +// bdbm_msg("nvm_tbl[%llu] lpa = %d", i, nvm_tbl[i].logaddr.lpa[0]); +// } /* update lr req's status */ lr->serviced_by_nvm = 1; diff --git a/ftl/hlm_nobuf.c b/ftl/hlm_nobuf.c index efc7cbb..2c6adeb 100644 --- a/ftl/hlm_nobuf.c +++ b/ftl/hlm_nobuf.c @@ -113,13 +113,13 @@ uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) uint64_t i = 0, j = 0, sp_ofs; /* perform mapping with the FTL */ +// bdbm_msg("[EUNJI] __hlm_nobuf_make_rw_req"); bdbm_hlm_for_each_llm_req (lr, hr, i) { /* (1) get the physical locations through the FTL */ #ifdef NVM_CACHE_SKIP if(lr->serviced_by_nvm){ -// bdbm_msg("skip mapping of lr serviced by nvm"); -// hlm_nobuf_end_req (bdi, lr); +// bdbm_msg("[EUNJI] skip :%llu", i); }else #endif if (bdbm_is_normal (lr->req_type)) { @@ -256,12 +256,12 @@ uint32_t __hlm_nobuf_make_wb_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) bdbm_llm_req_t* lr = NULL; uint64_t i = 0, j = 0; - bdbm_msg("make_wb_req() is called"); +// bdbm_msg("make_wb_req() is called"); /* perform mapping with the FTL */ bdbm_hlm_for_each_llm_req (lr, hr, i) { /* (1) get the physical locations through the FTL */ - bdbm_msg("make llm req %d", i); + //bdbm_msg("make llm req %d", i); bdbm_bug_on(lr->req_type != REQTYPE_WRITE_BACK) if (ftl->get_free_ppa (bdi, lr->logaddr.lpa[0], &lr->phyaddr) != 0) { @@ -370,20 +370,29 @@ uint32_t hlm_nobuf_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) void __hlm_nobuf_end_blkio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) { + int flag = 0; bdbm_hlm_req_t* hr = (bdbm_hlm_req_t* )lr->ptr_hlm_req; /* increase # of reqs finished */ atomic64_inc (&hr->nr_llm_reqs_done); lr->req_type |= REQTYPE_DONE; #ifdef NVM_CACHE + if(lr->logaddr.lpa[0] == 1) + bdbm_msg("[EUNJI] lpa=1 req complete %x", lr->req_type); + if(lr->serviced_by_nvm){ // bdbm_msg("lr serviced by nvm is completed"); lr->serviced_by_nvm = 0; + flag = 1; } #endif if (atomic64_read (&hr->nr_llm_reqs_done) == hr->nr_llm_reqs) { /* finish the host request */ +#ifdef NVM_CACHE + //if(flag) + // bdbm_msg("[EUNJI] skipped req calls host end_req"); +#endif bdi->ptr_host_inf->end_req (bdi, hr); } } diff --git a/ftl/hlm_reqs_pool.c b/ftl/hlm_reqs_pool.c index 7c1f48c..6d8ff98 100644 --- a/ftl/hlm_reqs_pool.c +++ b/ftl/hlm_reqs_pool.c @@ -44,6 +44,18 @@ THE SOFTWARE. #define DEFAULT_POOL_SIZE 128 #define DEFAULT_POOL_INC_SIZE DEFAULT_POOL_SIZE / 5 + +static void __display_hex_values_all_range (uint8_t* host, uint8_t* back, int size) +{ + int i = 0; + for (i = 0; i < size; i+=4) { + bdbm_msg (" * HOST: %x %x %x %x != FLASH: %x %x %x %x", + host[i+0], host[i+1], host[i+2], host[i+3], + back[i+0], back[i+1], back[i+2], back[i+3]); + } +} + + bdbm_hlm_reqs_pool_t* bdbm_hlm_reqs_pool_create ( int32_t mapping_unit_size, int32_t io_unit_size) @@ -340,7 +352,13 @@ static int __hlm_reqs_pool_create_wb_req ( ptr_fm->kp_ptr[0] = (uint8_t*) bdbm_zmalloc (sizeof(KPAGE_SIZE)); bdbm_memcpy (&ptr_lr->logaddr, logaddr, sizeof(bdbm_logaddr_t)); - bdbm_memcpy (ptr_fm->kp_ptr[0], ptr_data, sizeof(KPAGE_SIZE)); + bdbm_memcpy (ptr_fm->kp_ptr[0], ptr_data, KPAGE_SIZE); + + if(logaddr->lpa[0] == 1){ + bdbm_msg("hlm_reqs_pool_create_wb_req"); + __display_hex_values_all_range(ptr_data, ptr_fm->kp_ptr[0], 16); + } + /* decide the reqtype for llm_req */ ptr_lr->req_type = REQTYPE_WRITE_BACK; diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index e7ecdb5..89811ab 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -1,6 +1,7 @@ #define NVM_CACHE -//#define NVM_CACHE_WB +#define NVM_CACHE_WB #define NVM_CACHE_SKIP +#define NVM_CACHE_DEBUG /* The MIT License (MIT) @@ -319,6 +320,9 @@ typedef struct { void (*end_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req); uint32_t (*load) (bdbm_drv_info_t* bdi, const char* fn); uint32_t (*store) (bdbm_drv_info_t* bdi, const char* fn); +#ifdef NVM_CACHE_DEBUG + uint8_t* (*get_data) (bdbm_drv_info_t* bdi, int64_t lpa); +#endif } bdbm_dm_inf_t; /* a generic FTL interface */ @@ -426,6 +430,7 @@ struct _bdbm_drv_info_t { bdbm_perf_monitor_t pm; }; + /* functions for bdi creation, setup, run, and remove */ bdbm_drv_info_t* bdbm_drv_create (void); int bdbm_drv_setup (bdbm_drv_info_t* bdi, bdbm_host_inf_t* host_inf, bdbm_dm_inf_t* dm_inf); From 2fa48b0288c921e8a04e90792ffe9a212af00729 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 30 Oct 2016 12:43:18 +0900 Subject: [PATCH 38/51] minor fix --- devices/common/dev_params.c | 2 +- devices/ramdrive/dev_ramssd.c | 13 +++++------ frontend/kernel/blkio.c | 42 +++++++++++++---------------------- frontend/kernel/blkio.h | 1 + frontend/kernel/nvm_cache.c | 33 +++++++++------------------ ftl/hlm_nobuf.c | 17 +++++--------- ftl/hlm_reqs_pool.c | 17 ++++++++------ include/bdbm_drv.h | 3 +++ 8 files changed, 50 insertions(+), 78 deletions(-) diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index 7f7ef6a..00f54dd 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -55,7 +55,7 @@ enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_READ_TIME_US = 100, /* 100us */ NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ #ifdef NVM_CACHE - NR_NVM_PAGES = 3, /* 4KB * 1048576 = 4GB */ + NR_NVM_PAGES = 262144, /* 4KB * 262144 = 1G / 4KB * 1048576 = 4GB */ NVM_PAGE_SIZE = 4096, /* 4KB */ #endif }; diff --git a/devices/ramdrive/dev_ramssd.c b/devices/ramdrive/dev_ramssd.c index ca6acfd..38dd965 100644 --- a/devices/ramdrive/dev_ramssd.c +++ b/devices/ramdrive/dev_ramssd.c @@ -64,6 +64,9 @@ static void __display_hex_values (uint8_t* host, uint8_t* back) host[0], host[1], host[2], host[3], host[4], back[0], back[1], back[2], back[3], back[4]); } +#if 0 +#ifdef NVM_CACHE_DEBUG + static void __display_hex_values_all (uint8_t* host, uint8_t* back) { int i = 0; @@ -74,7 +77,6 @@ static void __display_hex_values_all (uint8_t* host, uint8_t* back) } } - static void __display_hex_values_all_host (uint8_t* host) { int i = 0; @@ -100,6 +102,8 @@ static void __display_hex_values_all_host_range (uint8_t* host, int size) host[i+0], host[i+1], host[i+2], host[i+3]); } } +#endif // NVM_CACHE_DEBUG +#endif #endif @@ -426,13 +430,6 @@ static uint32_t __ramssd_send_cmd ( break; #ifdef NVM_CACHE case REQTYPE_WRITE_BACK: - if(ptr_req->logaddr.lpa[0] == 1){ - bdbm_msg("REQTYPE_WRITE_BACK arrives: logaddr = %d", ptr_req->logaddr.lpa[0]); -// bdbm_msg ("%llu %llu %llu %llu, fmain.kp_ptr = %p, foob.data = %p, ", -// ptr_req->phyaddr.channel_no, ptr_req->phyaddr.chip_no, ptr_req->phyaddr.block_no, ptr_req->phyaddr.page_no, -// ptr_req->fmain.kp_ptr, ptr_req->foob.da; - __display_hex_values_all_host_range(ptr_req->fmain.kp_ptr[0], 16); - } #endif case REQTYPE_RMW_WRITE: case REQTYPE_WRITE: diff --git a/frontend/kernel/blkio.c b/frontend/kernel/blkio.c index 3c46eef..ee9b114 100644 --- a/frontend/kernel/blkio.c +++ b/frontend/kernel/blkio.c @@ -50,6 +50,9 @@ bdbm_host_inf_t _blkio_inf = { .close = blkio_close, .make_req = blkio_make_req, .end_req = blkio_end_req, +#ifdef NVM_CACHE + .end_wb_req = blkio_end_wb_req, +#endif }; #ifdef NVM_CACHE @@ -223,33 +226,6 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) remains = bdi->ptr_nvm_inf->make_req(bdi, hr); bdbm_bug_on(remains < 0); } - - if(hr->nr_llm_reqs && hr->llm_reqs[0].logaddr.lpa[0] == 1){ - if(remains == hr->nr_llm_reqs){ - if (bdbm_is_read(hr->req_type)){ - bdbm_msg ("[EUNJI] read miss: %d remains", remains); - } - else{ - bdbm_msg ("[EUNJI] write miss: %d remains", remains); - } - }else if (remains == 0){ - if (bdbm_is_read(hr->req_type)){ - bdbm_msg ("[EUNJI] read hit: %d remains", remains); - } - else{ - bdbm_msg ("[EUNJI] write hit: %d remains", remains); - } - - }else{ - if (bdbm_is_read(hr->req_type)){ - bdbm_msg ("[EUNJI] partial read hit: %d remains", remains); - } - else{ - bdbm_msg ("[EUNJI] partial write hit: %d remains", remains); - } - } - } -// bdbm_msg("nvm search ends"); #endif /* lock a global mutex -- this function must be finished as soon as possible */ @@ -279,6 +255,18 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) if (br) __free_blkio_req (br); } + +#ifdef NVM_CACHE +void blkio_end_wb_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) +{ + bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); + + /* destroy hlm_req */ + bdbm_hlm_reqs_pool_free_item (p->hlm_reqs_pool, hr); + +} +#endif + void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) { bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); diff --git a/frontend/kernel/blkio.h b/frontend/kernel/blkio.h index 175ef11..bfead13 100644 --- a/frontend/kernel/blkio.h +++ b/frontend/kernel/blkio.h @@ -31,6 +31,7 @@ uint32_t blkio_open (bdbm_drv_info_t* bdi); void blkio_close (bdbm_drv_info_t* bdi); void blkio_make_req (bdbm_drv_info_t* bdi, void* req); void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req); +void blkio_end_wb_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr); #ifdef NVM_CACHE #include "hlm_reqs_pool.h" diff --git a/frontend/kernel/nvm_cache.c b/frontend/kernel/nvm_cache.c index 5fee830..7db4fdc 100644 --- a/frontend/kernel/nvm_cache.c +++ b/frontend/kernel/nvm_cache.c @@ -32,7 +32,7 @@ THE SOFTWARE. #include "debug.h" #include "params.h" #include "umemory.h" -//#include "hlm_reqs_pool.h" +//#include "hlm_reqs_pool.h" // included in blkio.h #include "blkio.h" //#include "blkdev.h" //#include "blkdev_ioctl.h" @@ -254,8 +254,7 @@ int64_t bdbm_nvm_find_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) lpa = lr->logaddr.lpa[0]; for(i = 0; i < p->nr_total_pages; i++){ - if(lpa == 1) - bdbm_msg("nvm_tbl[%llu] lpa = %d, tlpa = %d", i, nvm_tbl[i].logaddr.lpa[0], lpa); +// bdbm_msg("nvm_tbl[%llu] lpa = %d, tlpa = %d", i, nvm_tbl[i].logaddr.lpa[0], lpa); if(nvm_tbl[i].logaddr.lpa[0] == lpa){ // bdbm_msg("hit: lpa = %llu", lpa); found = i; @@ -345,17 +344,11 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) bdbm_bug_on(!edata_ptr); - if(epage->logaddr.lpa[0] == 1){ - bdbm_msg("evict page logaddr = %d, data_ptr = %p", epage->logaddr.lpa[0], edata_ptr); - __display_hex_values_all_host_range(edata_ptr, 16); - } - /* get a free hlm_req from the hlm_reqs_pool */ if((hr = bdbm_hlm_reqs_pool_get_item(bp->hlm_reqs_pool)) == NULL){ bdbm_error("bdbm_hlm_reqs_pool_get_item () failed"); goto fail; } -// 여기에서 edata cpy 할 때 lock 걸어야 할듯. 일단은 global lock 사용해보자. /* build hlm_req with nvm_info */ // 아래 함수에서 logaddr 을 많이 보내고, 그걸로 만들도록 하는게 좋을듯. @@ -364,6 +357,7 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) bdbm_error ("bdbm_hlm_reqs_pool_build_req () failed"); goto fail; } + /* hr->done is locked in pool_build_wb_req() */ /* send req */ bdbm_sema_lock (&bp->host_lock); @@ -374,32 +368,25 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) bdbm_sema_unlock (&bp->host_lock); /* wait for write back to be completed */ -// bdbm_msg("try to get hr->done lock"); - bdbm_sema_lock (&hr->done); -// bdbm_msg("writeback is completed"); + /* no need to wait. assume kp_ptr[0] gets allocated buffer in nvm */ +// bdbm_sema_lock (&hr->done); +// bdbm_sema_unlock (&hr->done); -// DATA CHECK #ifdef NVM_CACHE_DEBUG - if(bdi->ptr_dm_inf->get_data){ ptr_ramssd_data = bdi->ptr_dm_inf->get_data(bdi, epage->logaddr.lpa[0]); } bdbm_bug_on(edata_ptr == NULL); bdbm_bug_on(ptr_ramssd_data == NULL); - if(epage->logaddr.lpa[0] == 1){ - if (memcmp(edata_ptr, ptr_ramssd_data, KPAGE_SIZE)!=0){ - bdbm_msg("[EUNJI] [DATA CORRUPTION] lpa = %d", epage->logaddr.lpa[0]); - __display_hex_values_all_range (edata_ptr, ptr_ramssd_data, 16); - } - else{ - bdbm_msg("[EUNJI] [DATA SAFE] lpa = %d", epage->logaddr.lpa[0]); - } + if (memcmp(edata_ptr, ptr_ramssd_data, KPAGE_SIZE)!=0){ + bdbm_msg("[EUNJI] [DATA CORRUPTION] lpa = %d", epage->logaddr.lpa[0]); + __display_hex_values_all_range (edata_ptr, ptr_ramssd_data, 16); } #endif - bdbm_hlm_reqs_pool_free_item (bp->hlm_reqs_pool, hr); // release lock here +// bdbm_hlm_reqs_pool_free_item (bp->hlm_reqs_pool, hr); // moved to hlm_end_wb_req /* set new page index */ nindex = eindex; diff --git a/ftl/hlm_nobuf.c b/ftl/hlm_nobuf.c index 2c6adeb..4b286bc 100644 --- a/ftl/hlm_nobuf.c +++ b/ftl/hlm_nobuf.c @@ -370,29 +370,18 @@ uint32_t hlm_nobuf_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) void __hlm_nobuf_end_blkio_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) { - int flag = 0; bdbm_hlm_req_t* hr = (bdbm_hlm_req_t* )lr->ptr_hlm_req; /* increase # of reqs finished */ atomic64_inc (&hr->nr_llm_reqs_done); lr->req_type |= REQTYPE_DONE; #ifdef NVM_CACHE - if(lr->logaddr.lpa[0] == 1) - bdbm_msg("[EUNJI] lpa=1 req complete %x", lr->req_type); - if(lr->serviced_by_nvm){ -// bdbm_msg("lr serviced by nvm is completed"); lr->serviced_by_nvm = 0; - flag = 1; } #endif - if (atomic64_read (&hr->nr_llm_reqs_done) == hr->nr_llm_reqs) { /* finish the host request */ -#ifdef NVM_CACHE - //if(flag) - // bdbm_msg("[EUNJI] skipped req calls host end_req"); -#endif bdi->ptr_host_inf->end_req (bdi, hr); } } @@ -414,11 +403,15 @@ void __hlm_nobuf_end_wb_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) { bdbm_hlm_req_t* hr = (bdbm_hlm_req_t* )lr->ptr_hlm_req; + /* increase # of reqs finished */ atomic64_inc (&hr->nr_llm_reqs_done); lr->req_type |= REQTYPE_DONE; + if (lr->fmain.kp_ptr[0]) + bdbm_free(lr->fmain.kp_ptr[0]); + if (atomic64_read (&hr->nr_llm_reqs_done) == hr->nr_llm_reqs) { - bdbm_sema_unlock (&hr->done); + bdi->ptr_host_inf->end_wb_req (bdi, hr); } } #endif diff --git a/ftl/hlm_reqs_pool.c b/ftl/hlm_reqs_pool.c index 6d8ff98..5b5f859 100644 --- a/ftl/hlm_reqs_pool.c +++ b/ftl/hlm_reqs_pool.c @@ -44,7 +44,7 @@ THE SOFTWARE. #define DEFAULT_POOL_SIZE 128 #define DEFAULT_POOL_INC_SIZE DEFAULT_POOL_SIZE / 5 - +#ifdef NVM_CACHE_DEBUG static void __display_hex_values_all_range (uint8_t* host, uint8_t* back, int size) { int i = 0; @@ -54,7 +54,7 @@ static void __display_hex_values_all_range (uint8_t* host, uint8_t* back, int si back[i+0], back[i+1], back[i+2], back[i+3]); } } - +#endif bdbm_hlm_reqs_pool_t* bdbm_hlm_reqs_pool_create ( int32_t mapping_unit_size, @@ -349,16 +349,18 @@ static int __hlm_reqs_pool_create_wb_req ( hlm_reqs_pool_reset_logaddr (&ptr_lr->logaddr); ptr_fm->kp_stt[0] = KP_STT_DATA; - ptr_fm->kp_ptr[0] = (uint8_t*) bdbm_zmalloc (sizeof(KPAGE_SIZE)); + ptr_fm->kp_ptr[0] = (uint8_t*) bdbm_zmalloc (KPAGE_SIZE); // free in hlm_nobuf_end_wb_req bdbm_memcpy (&ptr_lr->logaddr, logaddr, sizeof(bdbm_logaddr_t)); bdbm_memcpy (ptr_fm->kp_ptr[0], ptr_data, KPAGE_SIZE); - if(logaddr->lpa[0] == 1){ - bdbm_msg("hlm_reqs_pool_create_wb_req"); + +#ifdef NVM_CACHE_DEBUG + if(memcmp(ptr_data, ptr_fm->kp_ptr[0], KPAGE_SIZE) != 0){ + bdbm_msg("hlm_reqs_pool_create_wb_req: DATA CORRUPTION"); __display_hex_values_all_range(ptr_data, ptr_fm->kp_ptr[0], 16); } - +#endif /* decide the reqtype for llm_req */ ptr_lr->req_type = REQTYPE_WRITE_BACK; @@ -370,7 +372,8 @@ static int __hlm_reqs_pool_create_wb_req ( bdbm_stopwatch_start (&hr->sw); hr->nr_llm_reqs = nr_llm_reqs; atomic64_set (&hr->nr_llm_reqs_done, 0); - bdbm_sema_lock (&hr->done); + + bdbm_sema_lock (&hr->done); // grabs sema lock. hr->blkio_req = NULL; //hr->blkio_req = (void*)br; hr->ret = 0; diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 89811ab..f6da5cf 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -267,6 +267,9 @@ typedef struct { void (*close) (bdbm_drv_info_t* bdi); void (*make_req) (bdbm_drv_info_t* bdi, void* req); void (*end_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req); +#ifdef NVM_CACHE + void (*end_wb_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req); +#endif } bdbm_host_inf_t; #ifdef NVM_CACHE From aa3750a4438ae49de9fec7a2693700ae94fb3bba Mon Sep 17 00:00:00 2001 From: root Date: Sun, 30 Oct 2016 14:17:16 +0900 Subject: [PATCH 39/51] nvm cache - v1 full version. (wb, skip, trim) --- exec.sh | 2 +- frontend/kernel/blkio.c | 25 +- frontend/kernel/mount_ext4_ram.sh | 2 +- frontend/kernel/nvm_cache.c | 33 ++ frontend/mount_ext4_ram.sh | 13 + ftl/hlm_nobuf.c | 4 +- ftl/hlm_reqs_pool.c | 41 +- ftl/hlm_reqs_pool.h | 1 + include/bdbm_drv.h | 4 + mount_ext4_ram.sh | 13 + tags | 634 +++++++++++++++--------------- 11 files changed, 430 insertions(+), 342 deletions(-) create mode 100755 frontend/mount_ext4_ram.sh create mode 100755 mount_ext4_ram.sh diff --git a/exec.sh b/exec.sh index 2044f9f..604d29d 100755 --- a/exec.sh +++ b/exec.sh @@ -6,7 +6,7 @@ if [[ $# -lt 1 ]]; then fi if [[ $1 == "iozone" ]]; then - $BENCH_HOME/iozone3_420/src/current/iozone -R -l 1 -u 1 -r 4k -s 100m -I -F /media/robusta/d -i 0 + $BENCH_HOME/iozone3_420/src/current/iozone -R -l 1 -u 1 -r 4k -s 1g -I -F /media/robusta/d -i 0 fi if [[ $1 == "fio" ]]; then diff --git a/frontend/kernel/blkio.c b/frontend/kernel/blkio.c index ee9b114..2af67f7 100644 --- a/frontend/kernel/blkio.c +++ b/frontend/kernel/blkio.c @@ -50,9 +50,6 @@ bdbm_host_inf_t _blkio_inf = { .close = blkio_close, .make_req = blkio_make_req, .end_req = blkio_end_req, -#ifdef NVM_CACHE - .end_wb_req = blkio_end_wb_req, -#endif }; #ifdef NVM_CACHE @@ -256,22 +253,16 @@ void blkio_make_req (bdbm_drv_info_t* bdi, void* bio) __free_blkio_req (br); } -#ifdef NVM_CACHE -void blkio_end_wb_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) -{ - bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); - - /* destroy hlm_req */ - bdbm_hlm_reqs_pool_free_item (p->hlm_reqs_pool, hr); - -} -#endif - void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) { bdbm_blkio_private_t* p = (bdbm_blkio_private_t*)BDBM_HOST_PRIV(bdi); bdbm_blkio_req_t* br = (bdbm_blkio_req_t*)hr->blkio_req; +#ifdef NVM_CACHE + if(bdbm_is_internal(hr->req_type)) + goto destroy; +#endif + /* end bio */ if (hr->ret == 0) bio_endio ((struct bio*)br->bio); @@ -283,9 +274,15 @@ void blkio_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr) /* free blkio_req */ __free_blkio_req (br); +destroy: /* destroy hlm_req */ bdbm_hlm_reqs_pool_free_item (p->hlm_reqs_pool, hr); +#ifdef NVM_CACHE + if(bdbm_is_internal(hr->req_type)) + return; +#endif + /* decreate # of reqs */ atomic_dec (&p->nr_host_reqs); } diff --git a/frontend/kernel/mount_ext4_ram.sh b/frontend/kernel/mount_ext4_ram.sh index 672544a..c31ad5a 100755 --- a/frontend/kernel/mount_ext4_ram.sh +++ b/frontend/kernel/mount_ext4_ram.sh @@ -6,8 +6,8 @@ sudo umount /media/robusta sudo rmmod robusta_drv sudo rmmod risa_dev_ramdrive_timing + sudo insmod risa_dev_ramdrive_timing.ko sudo insmod robusta_drv.ko -sleep 1 sudo mkfs -t ext4 -b 4096 /dev/robusta sudo mount -t ext4 -o discard /dev/robusta /media/robusta diff --git a/frontend/kernel/nvm_cache.c b/frontend/kernel/nvm_cache.c index 7db4fdc..0012d05 100644 --- a/frontend/kernel/nvm_cache.c +++ b/frontend/kernel/nvm_cache.c @@ -418,8 +418,10 @@ uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) { /* find nvm cache */ bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); + bdbm_blkio_private_t* bp = (bdbm_blkio_private_t*) BDBM_HOST_PRIV(bdi); bdbm_nvm_dev_private_t* p = _nvm_dev.ptr_private; bdbm_nvm_page_t* nvm_tbl = p->ptr_nvm_tbl; + bdbm_hlm_req_t* hr = NULL; int64_t nvm_idx = -1; uint8_t* ptr_nvmram_addr = NULL; uint64_t i; @@ -466,7 +468,38 @@ uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) /* */ /**********************************/ +#ifdef NVM_CACHE_TRIM +// bdbm_msg("[%s] send TRIM", __FUNCTION__); + + /* get a free hlm_req from the hlm_reqs_pool */ + if((hr = bdbm_hlm_reqs_pool_get_item(bp->hlm_reqs_pool)) == NULL){ + bdbm_error("bdbm_hlm_reqs_pool_get_item () failed"); + goto fail; + } + + /* build trim hr with lpa, len */ + /* hr->done is locked in pool_build_wb_req() */ + if (bdbm_hlm_reqs_pool_build_int_trim_req (hr, lr->logaddr.lpa[0], 1) != 0) { + bdbm_error ("bdbm_hlm_reqs_pool_build_req () failed"); + goto fail; + } + + + /* send req */ + bdbm_sema_lock (&bp->host_lock); + + if(bdi->ptr_hlm_inf->make_req (bdi, hr) != 0) { + bdbm_error ("'bdi->ptr_hlm_inf->make_req' failed"); + } + bdbm_sema_unlock (&bp->host_lock); +#endif return 1; + +fail: + if (hr) + bdbm_hlm_reqs_pool_free_item (bp->hlm_reqs_pool, hr); + return 1; + } diff --git a/frontend/mount_ext4_ram.sh b/frontend/mount_ext4_ram.sh new file mode 100755 index 0000000..c31ad5a --- /dev/null +++ b/frontend/mount_ext4_ram.sh @@ -0,0 +1,13 @@ +sudo mkdir -p /usr/share/bdbm_drv +sudo touch /usr/share/bdbm_drv/ftl.dat +sudo touch /usr/share/bdbm_drv/dm.dat + +sudo umount /media/robusta + +sudo rmmod robusta_drv +sudo rmmod risa_dev_ramdrive_timing + +sudo insmod risa_dev_ramdrive_timing.ko +sudo insmod robusta_drv.ko +sudo mkfs -t ext4 -b 4096 /dev/robusta +sudo mount -t ext4 -o discard /dev/robusta /media/robusta diff --git a/ftl/hlm_nobuf.c b/ftl/hlm_nobuf.c index 4b286bc..9de8fff 100644 --- a/ftl/hlm_nobuf.c +++ b/ftl/hlm_nobuf.c @@ -411,7 +411,7 @@ void __hlm_nobuf_end_wb_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) bdbm_free(lr->fmain.kp_ptr[0]); if (atomic64_read (&hr->nr_llm_reqs_done) == hr->nr_llm_reqs) { - bdi->ptr_host_inf->end_wb_req (bdi, hr); + bdi->ptr_host_inf->end_req (bdi, hr); } } #endif @@ -421,7 +421,7 @@ void hlm_nobuf_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) #ifdef NVM_CACHE if(bdbm_is_writeback(lr->req_type)){ __hlm_nobuf_end_wb_req (bdi, lr); - }else + } #endif if (bdbm_is_gc (lr->req_type)) { __hlm_nobuf_end_gcio_req (bdi, lr); diff --git a/ftl/hlm_reqs_pool.c b/ftl/hlm_reqs_pool.c index 5b5f859..fe50a77 100644 --- a/ftl/hlm_reqs_pool.c +++ b/ftl/hlm_reqs_pool.c @@ -230,6 +230,22 @@ void bdbm_hlm_reqs_pool_free_item ( bdbm_spin_unlock (&pool->lock); } +#ifdef NVM_CACHE_TRIM +static int __hlm_reqs_pool_create_int_trim_req ( + bdbm_hlm_req_t* hr, uint64_t lpa, uint64_t len) +{ + /* initialize variables */ + hr->req_type = REQTYPE_INT_TRIM; + bdbm_stopwatch_start (&hr->sw); + hr->lpa = lpa; + hr->len = len; + hr->blkio_req = NULL; + hr->ret = 0; + + return 0; +} +#endif + static int __hlm_reqs_pool_create_trim_req ( bdbm_hlm_reqs_pool_t* pool, bdbm_hlm_req_t* hr, @@ -541,16 +557,25 @@ int bdbm_hlm_reqs_pool_build_wb_req ( ret = __hlm_reqs_pool_create_wb_req (hr, logaddr, ptr_data); -#if 0 - /* create a hlm_req using a bio */ - if (br->bi_rw == REQTYPE_TRIM) { - ret = __hlm_reqs_pool_create_trim_req (pool, hr, br); - } else if (br->bi_rw == REQTYPE_WRITE) { - ret = __hlm_reqs_pool_create_write_req (pool, hr, br); - } else if (br->bi_rw == REQTYPE_READ) { - ret = __hlm_reqs_pool_create_read_req (pool, hr, br); + /* are there any errors? */ + if (ret != 0) { + bdbm_msg("error: failed to make wb_req"); } + + return 0; +} #endif + +#ifdef NVM_CACHE_TRIM +int bdbm_hlm_reqs_pool_build_int_trim_req ( + bdbm_hlm_req_t* hr, + uint64_t lpa, + uint64_t len) +{ + int ret = 1; + + ret = __hlm_reqs_pool_create_int_trim_req (hr, lpa, len); + /* are there any errors? */ if (ret != 0) { bdbm_msg("error: failed to make wb_req"); diff --git a/ftl/hlm_reqs_pool.h b/ftl/hlm_reqs_pool.h index b9838c8..a008c79 100644 --- a/ftl/hlm_reqs_pool.h +++ b/ftl/hlm_reqs_pool.h @@ -55,5 +55,6 @@ void hlm_reqs_pool_relocate_kp (bdbm_llm_req_t* lr, uint64_t new_sp_ofs); void hlm_reqs_pool_write_compaction (bdbm_hlm_req_gc_t* dst, bdbm_hlm_req_gc_t* src, bdbm_device_params_t* np); #ifdef NVM_CACHE int bdbm_hlm_reqs_pool_build_wb_req (bdbm_hlm_req_t* hr, bdbm_logaddr_t* logaddr, uint8_t* ptr_data); +int bdbm_hlm_reqs_pool_build_int_trim_req (bdbm_hlm_req_t* hr, uint64_t lpa, uint64_t len); #endif #endif diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index f6da5cf..262292a 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -2,6 +2,7 @@ #define NVM_CACHE_WB #define NVM_CACHE_SKIP #define NVM_CACHE_DEBUG +#define NVM_CACHE_TRIM /* The MIT License (MIT) @@ -121,6 +122,8 @@ enum BDBM_REQTYPE { REQTYPE_META_WRITE = REQTYPE_META | REQTYPE_IO_WRITE, #ifdef NVM_CACHE REQTYPE_WRITE_BACK = REQTYPE_NORNAL | REQTYPE_IO_WRITE | REQTYPE_INTERNAL, + REQTYPE_INT_TRIM = REQTYPE_NORNAL | REQTYPE_IO_TRIM | REQTYPE_INTERNAL, + #endif }; @@ -135,6 +138,7 @@ enum BDBM_REQTYPE { #ifdef NVM_CACHE #define bdbm_is_writeback(type) (((type & REQTYPE_WRITE_BACK) == REQTYPE_WRITE_BACK) ? 1 : 0) +#define bdbm_is_internal(type) (((type & REQTYPE_INTERNAL) == REQTYPE_INTERNAL) ? 1 : 0) #endif diff --git a/mount_ext4_ram.sh b/mount_ext4_ram.sh new file mode 100755 index 0000000..c31ad5a --- /dev/null +++ b/mount_ext4_ram.sh @@ -0,0 +1,13 @@ +sudo mkdir -p /usr/share/bdbm_drv +sudo touch /usr/share/bdbm_drv/ftl.dat +sudo touch /usr/share/bdbm_drv/dm.dat + +sudo umount /media/robusta + +sudo rmmod robusta_drv +sudo rmmod risa_dev_ramdrive_timing + +sudo insmod risa_dev_ramdrive_timing.ko +sudo insmod robusta_drv.ko +sudo mkfs -t ext4 -b 4096 /dev/robusta +sudo mount -t ext4 -o discard /dev/robusta /media/robusta diff --git a/tags b/tags index 6ac58c5..a1f015c 100644 --- a/tags +++ b/tags @@ -29,13 +29,13 @@ BDBM_ABM_BLK_FREE_PREPARE ftl/algo/abm.h /^ BDBM_ABM_BLK_FREE_PREPARE,$/;" e enu BDBM_ABM_BLK_STATUS ftl/algo/abm.h /^enum BDBM_ABM_BLK_STATUS {$/;" g BDBM_ABM_SUBPAGE_INVALID ftl/algo/abm.h /^ BDBM_ABM_SUBPAGE_INVALID,$/;" e enum:BDBM_ABM_SUBPAGE_STATUS BDBM_ABM_SUBPAGE_STATUS ftl/algo/abm.h /^enum BDBM_ABM_SUBPAGE_STATUS {$/;" g -BDBM_ALIGN_DOWN include/bdbm_drv.h 167;" d -BDBM_ALIGN_UP include/bdbm_drv.h 166;" d +BDBM_ALIGN_DOWN include/bdbm_drv.h 169;" d +BDBM_ALIGN_UP include/bdbm_drv.h 168;" d BDBM_BADBLOCK_SCAN frontend/kernel/blkdev_ioctl.h 28;" d BDBM_BADBLOCK_SCAN_CHECK frontend/kernel/blkdev_ioctl.h 29;" d BDBM_BFTL_BLOCK_STATUS ftl/algo/block_ftl.c /^enum BDBM_BFTL_BLOCK_STATUS {$/;" g file: BDBM_BFTL_PAGE_STATUS ftl/algo/block_ftl.c /^enum BDBM_BFTL_PAGE_STATUS {$/;" g file: -BDBM_BLKIO_MAX_VECS include/bdbm_drv.h 152;" d +BDBM_BLKIO_MAX_VECS include/bdbm_drv.h 154;" d BDBM_BLOCKIO_PROXY_IOCTL_DEVNAME frontend/hybrid/blkio_proxy_ioctl.h 51;" d BDBM_BLOCKIO_PROXY_IOCTL_DONE frontend/hybrid/blkio_proxy_ioctl.h 54;" d BDBM_BLOCKIO_PROXY_IOCTL_MAGIC frontend/hybrid/blkio_proxy_ioctl.h 52;" d @@ -52,34 +52,30 @@ BDBM_DM_IOCTL_NAME devices/common/dev_stub.h 59;" d BDBM_DM_IOCTL_OPEN devices/common/dev_stub.h 64;" d BDBM_DM_IOCTL_PROBE devices/common/dev_stub.h 63;" d BDBM_DM_IOCTL_STORE devices/common/dev_stub.h 69;" d -BDBM_DM_PRIV include/bdbm_drv.h 82;" d +BDBM_DM_PRIV include/bdbm_drv.h 85;" d BDBM_FLASH_PAGE_SIZE devices/bluedbm/dm_bluedbm.c 249;" d file: -BDBM_FTL_PRIV include/bdbm_drv.h 85;" d -BDBM_GB include/bdbm_drv.h 66;" d +BDBM_FTL_PRIV include/bdbm_drv.h 88;" d +BDBM_GB include/bdbm_drv.h 69;" d BDBM_GC_POLICY include/params.h /^enum BDBM_GC_POLICY {$/;" g -BDBM_GET_DEVICE_PARAMS include/bdbm_drv.h 77;" d -BDBM_GET_DM_INF include/bdbm_drv.h 74;" d -BDBM_GET_DRIVER_PARAMS include/bdbm_drv.h 78;" d -BDBM_GET_FTL_INF include/bdbm_drv.h 79;" d -BDBM_GET_HLM_INF include/bdbm_drv.h 75;" d -BDBM_GET_HOST_INF include/bdbm_drv.h 73;" d -BDBM_GET_LLM_INF include/bdbm_drv.h 76;" d -BDBM_GET_NR_PUNITS include/bdbm_drv.h 87;" d -BDBM_GET_PUNIT_ID include/bdbm_drv.h 89;" d -BDBM_HLM_PRIV include/bdbm_drv.h 83;" d +BDBM_GET_DEVICE_PARAMS include/bdbm_drv.h 80;" d +BDBM_GET_DM_INF include/bdbm_drv.h 77;" d +BDBM_GET_DRIVER_PARAMS include/bdbm_drv.h 81;" d +BDBM_GET_FTL_INF include/bdbm_drv.h 82;" d +BDBM_GET_HLM_INF include/bdbm_drv.h 78;" d +BDBM_GET_HOST_INF include/bdbm_drv.h 76;" d +BDBM_GET_LLM_INF include/bdbm_drv.h 79;" d +BDBM_GET_NR_PUNITS include/bdbm_drv.h 90;" d +BDBM_GET_PUNIT_ID include/bdbm_drv.h 92;" d +BDBM_HLM_PRIV include/bdbm_drv.h 86;" d BDBM_HLM_TYPE include/params.h /^enum BDBM_HLM_TYPE {$/;" g -BDBM_HOST_PRIV include/bdbm_drv.h 81;" d -BDBM_KB include/bdbm_drv.h 64;" d -BDBM_LLM_PRIV include/bdbm_drv.h 84;" d +BDBM_HOST_PRIV include/bdbm_drv.h 84;" d +BDBM_KB include/bdbm_drv.h 67;" d +BDBM_LLM_PRIV include/bdbm_drv.h 87;" d BDBM_LLM_TYPE include/params.h /^enum BDBM_LLM_TYPE {$/;" g BDBM_MAPPING_POLICY include/params.h /^enum BDBM_MAPPING_POLICY {$/;" g -BDBM_MAX_PAGES include/bdbm_drv.h 149;" d -BDBM_MB include/bdbm_drv.h 65;" d +BDBM_MAX_PAGES include/bdbm_drv.h 151;" d +BDBM_MB include/bdbm_drv.h 68;" d BDBM_NUM_TAGS devices/bluedbm/dm_bluedbm.c 250;" d file: -BDBM_NVM_BLK_CLEAN frontend/kernel/nvm_cache_bak/nvm_cache.h /^ BDBM_NVM_BLK_CLEAN,$/;" e enum:BDBM_NVM_BLK_STATUS -BDBM_NVM_BLK_DIRTY frontend/kernel/nvm_cache_bak/nvm_cache.h /^ BDBM_NVM_BLK_DIRTY,$/;" e enum:BDBM_NVM_BLK_STATUS -BDBM_NVM_BLK_FREE frontend/kernel/nvm_cache_bak/nvm_cache.h /^ BDBM_NVM_BLK_FREE = 0,$/;" e enum:BDBM_NVM_BLK_STATUS -BDBM_NVM_BLK_STATUS frontend/kernel/nvm_cache_bak/nvm_cache.h /^enum BDBM_NVM_BLK_STATUS {$/;" g BDBM_PFTL_PAGE_STATUS ftl/algo/page_ftl.c /^enum BDBM_PFTL_PAGE_STATUS {$/;" g file: BDBM_PRIOR_QUEUE_SIZE ftl/queue/prior_queue.h /^enum BDBM_PRIOR_QUEUE_SIZE {$/;" g BDBM_PROXY_MAX_REQS frontend/hybrid/blkio_proxy_ioctl.h 29;" d @@ -87,11 +83,11 @@ BDBM_QUEUE_POLICY include/params.h /^enum BDBM_QUEUE_POLICY {$/;" g BDBM_QUEUE_SIZE ftl/queue/queue.h /^enum BDBM_QUEUE_SIZE {$/;" g BDBM_RD_PRIOR_QUEUE_SIZE ftl/queue/rd_prior_queue.h /^enum BDBM_RD_PRIOR_QUEUE_SIZE {$/;" g BDBM_REQTYPE include/bdbm_drv.h /^enum BDBM_REQTYPE {$/;" g -BDBM_SIZE_GB include/bdbm_drv.h 71;" d -BDBM_SIZE_KB include/bdbm_drv.h 69;" d -BDBM_SIZE_MB include/bdbm_drv.h 70;" d +BDBM_SIZE_GB include/bdbm_drv.h 74;" d +BDBM_SIZE_KB include/bdbm_drv.h 72;" d +BDBM_SIZE_MB include/bdbm_drv.h 73;" d BDBM_SNAPSHOT include/params.h /^enum BDBM_SNAPSHOT {$/;" g -BDBM_TB include/bdbm_drv.h 67;" d +BDBM_TB include/bdbm_drv.h 70;" d BDBM_TRIM include/params.h /^enum BDBM_TRIM {$/;" g BDBM_WL_POLICY include/params.h /^enum BDBM_WL_POLICY {$/;" g BFTL_ALLOCATED ftl/algo/block_ftl.c /^ BFTL_ALLOCATED,$/;" e enum:BDBM_BFTL_BLOCK_STATUS file: @@ -199,11 +195,11 @@ DEV_COMMON devices/dumbssd/Makefile /^DEV_COMMON = ..\/common$/;" m DEV_COMMON devices/libdummy/Makefile /^DEV_COMMON = ..\/common$/;" m DEV_COMMON devices/ramdrive/Makefile /^DEV_COMMON = ..\/common$/;" m DEV_COMMON devices/ramdrive_timing/Makefile /^DEV_COMMON = ..\/common$/;" m -DFTL_DIR_CLEAN ftl/algo/dftl_map.h /^ DFTL_DIR_CLEAN = DFTL_DIR_DRAM | 0x1,$/;" e enum:__anon86 -DFTL_DIR_DIRTY ftl/algo/dftl_map.h /^ DFTL_DIR_DIRTY = DFTL_DIR_DRAM | 0x2,$/;" e enum:__anon86 -DFTL_DIR_DRAM ftl/algo/dftl_map.h /^ DFTL_DIR_DRAM = 0x200,$/;" e enum:__anon86 -DFTL_DIR_EMPTY ftl/algo/dftl_map.h /^ DFTL_DIR_EMPTY = 0,$/;" e enum:__anon86 -DFTL_DIR_FLASH ftl/algo/dftl_map.h /^ DFTL_DIR_FLASH = 0x100,$/;" e enum:__anon86 +DFTL_DIR_CLEAN ftl/algo/dftl_map.h /^ DFTL_DIR_CLEAN = DFTL_DIR_DRAM | 0x1,$/;" e enum:__anon85 +DFTL_DIR_DIRTY ftl/algo/dftl_map.h /^ DFTL_DIR_DIRTY = DFTL_DIR_DRAM | 0x2,$/;" e enum:__anon85 +DFTL_DIR_DRAM ftl/algo/dftl_map.h /^ DFTL_DIR_DRAM = 0x200,$/;" e enum:__anon85 +DFTL_DIR_EMPTY ftl/algo/dftl_map.h /^ DFTL_DIR_EMPTY = 0,$/;" e enum:__anon85 +DFTL_DIR_FLASH ftl/algo/dftl_map.h /^ DFTL_DIR_FLASH = 0x100,$/;" e enum:__anon85 DFTL_PAGE_INVALID ftl/algo/dftl_map.h /^ DFTL_PAGE_INVALID,$/;" e enum:BDBM_DFTL_PAGE_STATUS DFTL_PAGE_INVALID_ADDR ftl/algo/dftl_map.h /^ DFTL_PAGE_INVALID_ADDR = -1,$/;" e enum:BDBM_DFTL_PAGE_STATUS DFTL_PAGE_NOT_EXIST ftl/algo/dftl_map.h /^ DFTL_PAGE_NOT_EXIST = 0,$/;" e enum:BDBM_DFTL_PAGE_STATUS @@ -439,10 +435,10 @@ KBUILD_EXTRA_SYMBOLS tools/nvmedrv-v4.5.3/Makefile /^KBUILD_EXTRA_SYMBOLS := $(P KELVIN_TEMP_FACTOR tools/nvme/scsi.c 89;" d file: KELVIN_TEMP_FACTOR tools/nvmedrv-v4.5.3/scsi.c 89;" d file: KERN frontend/hybrid/Makefile /^KERN := ..\/kernel$/;" m -KERNEL_PAGE_SIZE include/bdbm_drv.h 32;" d -KERNEL_PAGE_SIZE include/bdbm_drv.h 46;" d +KERNEL_PAGE_SIZE include/bdbm_drv.h 35;" d +KERNEL_PAGE_SIZE include/bdbm_drv.h 49;" d KERNEL_SECTOR_SIZE include/params.h 30;" d -KPAGE_SIZE include/bdbm_drv.h 59;" d +KPAGE_SIZE include/bdbm_drv.h 62;" d KP_STT_DATA include/bdbm_drv.h /^ KP_STT_DATA = 0x20,$/;" e enum:__anon27 KP_STT_DATA_DONE include/bdbm_drv.h /^ KP_STT_DATA_DONE = KP_STT_DATA | KP_STT_DONE,$/;" e enum:__anon27 KP_STT_DONE include/bdbm_drv.h /^ KP_STT_DONE = 0x0F,$/;" e enum:__anon27 @@ -648,7 +644,7 @@ MODULE_PARAM_PREFIX tools/lightnvm-v4.5.3/core.c 896;" d file: MODULE_PARAM_PREFIX tools/lightnvm-v4.5.3/core.c 897;" d file: MODULE_PARAM_PREFIX tools/lightnvm/core.c 896;" d file: MODULE_PARAM_PREFIX tools/lightnvm/core.c 897;" d file: -MODULE_PARM_DESC include/bdbm_drv.h 45;" d +MODULE_PARM_DESC include/bdbm_drv.h 48;" d MUR_FMIX common/3rd/uthash.h 570;" d MUR_GETBLOCK common/3rd/uthash.h 548;" d MUR_GETBLOCK common/3rd/uthash.h 564;" d @@ -677,9 +673,9 @@ NR_BLOCKS_PER_CHIP devices/common/dev_params.c /^ NR_BLOCKS_PER_CHIP = 128,$/;" NR_CHANNELS devices/common/dev_params.c /^ NR_CHANNELS = 64,$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: NR_CHIPS_PER_CHANNEL devices/common/dev_params.c /^ NR_CHIPS_PER_CHANNEL = 1,$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: NR_DIES devices/dumbssd/dm_dumbssd.c 44;" d file: -NR_KPAGES_IN include/bdbm_drv.h 169;" d -NR_KSECTORS_IN include/bdbm_drv.h 168;" d -NR_NVM_PAGES devices/common/dev_params.c /^ NR_NVM_PAGES = 100, \/* 4KB * 1048576 = 4GB *\/$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: +NR_KPAGES_IN include/bdbm_drv.h 171;" d +NR_KSECTORS_IN include/bdbm_drv.h 170;" d +NR_NVM_PAGES devices/common/dev_params.c /^ NR_NVM_PAGES = 262144, \/* 4KB * 262144 = 1G \/ 4KB * 1048576 = 4GB *\/$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: NR_PAGES_PER_BLOCK devices/common/dev_params.c /^ NR_PAGES_PER_BLOCK = 64,$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: NR_PHY_IN_LOG tools/lightnvm-v4.5.3/rrpc.h 36;" d NR_PHY_IN_LOG tools/lightnvm/rrpc.h 36;" d @@ -738,6 +734,9 @@ NVME_SC_CANCELLED tools/nvme/nvme.h /^ NVME_SC_CANCELLED = -EINTR,$/;" e enum:_ NVME_SC_CANCELLED tools/nvmedrv-v4.5.3/nvme.h /^ NVME_SC_CANCELLED = -EINTR,$/;" e enum:__anon51 NVM_BLK_SIZE frontend/kernel/nvm_cache.h 29;" d NVM_CACHE include/bdbm_drv.h 1;" d +NVM_CACHE_DEBUG include/bdbm_drv.h 4;" d +NVM_CACHE_SKIP include/bdbm_drv.h 3;" d +NVM_CACHE_WB include/bdbm_drv.h 2;" d NVM_PAGE_SIZE devices/common/dev_params.c /^ NVM_PAGE_SIZE = 4096, \/* 4KB *\/$/;" e enum:BDBM_DEFAULT_NAND_PARAMS file: OBJS examples/stringsearch/Makefile /^OBJS = ss.o ss_impl_sw.o ss_impl_hw.o$/;" m OBJS_FORMAT tools/dumbssd-format/Makefile /^OBJS_FORMAT=dumbssd-format.o $/;" m @@ -773,8 +772,8 @@ QUEUE_POLICY_NO include/params.h /^ QUEUE_POLICY_NO,$/;" e enum:BDBM_QUEUE_POLIC QUEUE_POLICY_NOT_SPECIFIED include/params.h /^ QUEUE_POLICY_NOT_SPECIFIED = 0,$/;" e enum:BDBM_QUEUE_POLICY QUEUE_POLICY_SINGLE_FIFO include/params.h /^ QUEUE_POLICY_SINGLE_FIFO,$/;" e enum:BDBM_QUEUE_POLICY QUICK_FIX_FOR_RWM ftl/llm_rmq.c 56;" d file: -RD_PRIORITY_READ ftl/queue/rd_prior_queue.h /^ RD_PRIORITY_READ = 0,$/;" e enum:__anon78 -RD_PRIORITY_WRITE ftl/queue/rd_prior_queue.h /^ RD_PRIORITY_WRITE = 1,$/;" e enum:__anon78 +RD_PRIORITY_READ ftl/queue/rd_prior_queue.h /^ RD_PRIORITY_READ = 0,$/;" e enum:__anon77 +RD_PRIORITY_WRITE ftl/queue/rd_prior_queue.h /^ RD_PRIORITY_WRITE = 1,$/;" e enum:__anon77 READ_CAP_10_RESP_SIZE tools/nvme/scsi.c 170;" d file: READ_CAP_10_RESP_SIZE tools/nvmedrv-v4.5.3/scsi.c 170;" d file: READ_CAP_16_RESP_SIZE tools/nvme/scsi.c 171;" d file: @@ -785,7 +784,6 @@ REMAINING_TEMP_PAGE_LENGTH tools/nvme/scsi.c 164;" d file: REMAINING_TEMP_PAGE_LENGTH tools/nvmedrv-v4.5.3/scsi.c 164;" d file: REPORT_LUNS_FIRST_LUN_OFFSET tools/nvme/scsi.c 178;" d file: REPORT_LUNS_FIRST_LUN_OFFSET tools/nvmedrv-v4.5.3/scsi.c 178;" d file: -REQTYOE_WRITE_BACK include/bdbm_drv.h /^ REQTYOE_WRITE_BACK = REQTYPE_NORMAL | REQTYPE_IO_WRITE | REQTYPE_INTERNAL$/;" e enum:BDBM_REQTYPE REQTYPE_DONE include/bdbm_drv.h /^ REQTYPE_DONE = 0xFF0000,$/;" e enum:BDBM_REQTYPE REQTYPE_GC include/bdbm_drv.h /^ REQTYPE_GC = 0x000400,$/;" e enum:BDBM_REQTYPE REQTYPE_GC_ERASE include/bdbm_drv.h /^ REQTYPE_GC_ERASE = REQTYPE_GC | REQTYPE_IO_ERASE,$/;" e enum:BDBM_REQTYPE @@ -808,18 +806,19 @@ REQTYPE_RMW_READ include/bdbm_drv.h /^ REQTYPE_RMW_READ = REQTYPE_RMW | REQT REQTYPE_RMW_WRITE include/bdbm_drv.h /^ REQTYPE_RMW_WRITE = REQTYPE_RMW | REQTYPE_IO_WRITE,$/;" e enum:BDBM_REQTYPE REQTYPE_TRIM include/bdbm_drv.h /^ REQTYPE_TRIM = REQTYPE_NORNAL | REQTYPE_IO_TRIM,$/;" e enum:BDBM_REQTYPE REQTYPE_WRITE include/bdbm_drv.h /^ REQTYPE_WRITE = REQTYPE_NORNAL | REQTYPE_IO_WRITE,$/;" e enum:BDBM_REQTYPE -REQ_STT_ALLOC frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_ALLOC = 0x0100,$/;" e enum:__anon67 -REQ_STT_FREE frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_FREE = 0,$/;" e enum:__anon67 -REQ_STT_KERN_INIT frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_KERN_INIT = REQ_STT_ALLOC | 0x1, $/;" e enum:__anon67 -REQ_STT_KERN_SENT frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_KERN_SENT = REQ_STT_ALLOC | 0x2,$/;" e enum:__anon67 -REQ_STT_USER_DONE frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_USER_DONE = REQ_STT_ALLOC | 0x4,$/;" e enum:__anon67 -REQ_STT_USER_PROG frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_USER_PROG = REQ_STT_ALLOC | 0x3,$/;" e enum:__anon67 +REQTYPE_WRITE_BACK include/bdbm_drv.h /^ REQTYPE_WRITE_BACK = REQTYPE_NORNAL | REQTYPE_IO_WRITE | REQTYPE_INTERNAL,$/;" e enum:BDBM_REQTYPE +REQ_STT_ALLOC frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_ALLOC = 0x0100,$/;" e enum:__anon66 +REQ_STT_FREE frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_FREE = 0,$/;" e enum:__anon66 +REQ_STT_KERN_INIT frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_KERN_INIT = REQ_STT_ALLOC | 0x1, $/;" e enum:__anon66 +REQ_STT_KERN_SENT frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_KERN_SENT = REQ_STT_ALLOC | 0x2,$/;" e enum:__anon66 +REQ_STT_USER_DONE frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_USER_DONE = REQ_STT_ALLOC | 0x4,$/;" e enum:__anon66 +REQ_STT_USER_PROG frontend/hybrid/blkio_proxy_ioctl.h /^ REQ_STT_USER_PROG = REQ_STT_ALLOC | 0x3,$/;" e enum:__anon66 RESERVED_FIELD tools/nvme/scsi.c 108;" d file: RESERVED_FIELD tools/nvmedrv-v4.5.3/scsi.c 108;" d file: RESTRICTED_LUNS_RETURNED tools/nvme/scsi.c 74;" d file: RESTRICTED_LUNS_RETURNED tools/nvmedrv-v4.5.3/scsi.c 74;" d file: -RP_MEM_PHY ftl/hlm_reqs_pool.h /^ RP_MEM_PHY = 1,$/;" e enum:__anon72 -RP_MEM_VIRT ftl/hlm_reqs_pool.h /^ RP_MEM_VIRT = 0,$/;" e enum:__anon72 +RP_MEM_PHY ftl/hlm_reqs_pool.h /^ RP_MEM_PHY = 1,$/;" e enum:__anon71 +RP_MEM_VIRT ftl/hlm_reqs_pool.h /^ RP_MEM_VIRT = 0,$/;" e enum:__anon71 RRPC_EXPOSED_PAGE_SIZE tools/lightnvm-v4.5.3/rrpc.h 34;" d RRPC_EXPOSED_PAGE_SIZE tools/lightnvm/rrpc.h 34;" d RRPC_H_ tools/lightnvm-v4.5.3/rrpc.h 18;" d @@ -951,12 +950,12 @@ _BLUEDBM_DEBUG_H include/debug.h 26;" d _BLUEDBM_DEV_HYNIX_NVME_H devices/dumbssd/dev_hynix_nvme.h 26;" d _BLUEDBM_DEV_RAMDRV_H devices/dumbssd/dm_dumbssd.h 26;" d _BLUEDBM_DEV_RAMDRV_H devices/ramdrive/dm_ramdrive.h 26;" d -_BLUEDBM_DEV_RAMSSD_H devices/ramdrive/dev_ramssd.h 26;" d +_BLUEDBM_DEV_RAMSSD_H devices/ramdrive/dev_ramssd.h 27;" d _BLUEDBM_DM_BLUEDBM_H devices/bluedbm/dm_bluedbm.h 26;" d _BLUEDBM_DM_DF_H devices/dragonfire/dm_df.h 26;" d _BLUEDBM_DM_PARAMS_H devices/common/dev_params.h 26;" d _BLUEDBM_DM_USER_H devices/libdummy/dm_dummy.h 26;" d -_BLUEDBM_DRV_H include/bdbm_drv.h 28;" d +_BLUEDBM_DRV_H include/bdbm_drv.h 31;" d _BLUEDBM_ERROR_CODES_H ftl/error_codes.h 26;" d _BLUEDBM_FILE_H common/utils/ufile.h 26;" d _BLUEDBM_FTL_ABM_H ftl/algo/abm.h 26;" d @@ -1059,6 +1058,12 @@ __copy_bio_to_dma devices/bluedbm/dm_bluedbm.c /^void __copy_bio_to_dma ($/;" f __copy_dma_to_bio devices/bluedbm/dm_bluedbm.c /^void __copy_dma_to_bio ($/;" f __dev_ramssd_fops_wq_handler devices/ramdrive/dev_ramssd.c /^static void __dev_ramssd_fops_wq_handler (struct work_struct *w)$/;" f file: __display_hex_values devices/ramdrive/dev_ramssd.c /^static void __display_hex_values (uint8_t* host, uint8_t* back)$/;" f file: +__display_hex_values frontend/kernel/nvm_cache.c /^static void __display_hex_values (uint8_t* host, uint8_t* back)$/;" f file: +__display_hex_values_all frontend/kernel/nvm_cache.c /^static void __display_hex_values_all (uint8_t* host, uint8_t* back)$/;" f file: +__display_hex_values_all_host frontend/kernel/nvm_cache.c /^static void __display_hex_values_all_host (uint8_t* host)$/;" f file: +__display_hex_values_all_host_range frontend/kernel/nvm_cache.c /^static void __display_hex_values_all_host_range (uint8_t* host, int size)$/;" f file: +__display_hex_values_all_range frontend/kernel/nvm_cache.c /^static void __display_hex_values_all_range (uint8_t* host, uint8_t* back, int size)$/;" f file: +__display_hex_values_all_range ftl/hlm_reqs_pool.c /^static void __display_hex_values_all_range (uint8_t* host, uint8_t* back, int size)$/;" f file: __dm_intr_handler devices/common/dev_stub.c /^void __dm_intr_handler (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r)$/;" f __dm_intr_handler examples/raw-flash/raw-flash.c /^static void __dm_intr_handler ($/;" f file: __dm_proxy_thread frontend/user/dev_proxy.c /^int __dm_proxy_thread (void* arg) $/;" f @@ -1094,6 +1099,7 @@ __hlm_nobuf_end_wb_req ftl/hlm_nobuf.c /^void __hlm_nobuf_end_wb_req (bdbm_drv_i __hlm_nobuf_make_rw_req ftl/hlm_nobuf.c /^uint32_t __hlm_nobuf_make_rw_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f __hlm_nobuf_make_trim_req ftl/hlm_nobuf.c /^uint32_t __hlm_nobuf_make_trim_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* ptr_hlm_req)$/;" f __hlm_nobuf_make_wb_req ftl/hlm_nobuf.c /^uint32_t __hlm_nobuf_make_wb_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f +__hlm_reqs_pool_create_int_trim_req ftl/hlm_reqs_pool.c /^static int __hlm_reqs_pool_create_int_trim_req ($/;" f file: __hlm_reqs_pool_create_read_req ftl/hlm_reqs_pool.c /^static int __hlm_reqs_pool_create_read_req ($/;" f file: __hlm_reqs_pool_create_trim_req ftl/hlm_reqs_pool.c /^static int __hlm_reqs_pool_create_trim_req ($/;" f file: __hlm_reqs_pool_create_wb_req ftl/hlm_reqs_pool.c /^static int __hlm_reqs_pool_create_wb_req ($/;" f file: @@ -1140,6 +1146,7 @@ __packed tools/nvmedrv-v4.5.3/lightnvm.c /^} __packed;$/;" v typeref:struct:nvme __packed tools/nvmedrv-v4.5.3/lightnvm.c /^} __packed;$/;" v typeref:struct:nvme_nvm_id __packed tools/nvmedrv-v4.5.3/lightnvm.c /^} __packed;$/;" v typeref:struct:nvme_nvm_id_group __ptr_ramssd_data devices/ramdrive/dev_ramssd.c /^static void* __ptr_ramssd_data = NULL;$/;" v file: +__ptr_ramssd_data_to_nvm devices/ramdrive/dm_ramdrive.h /^void* __ptr_ramssd_data_to_nvm = NULL;$/;" v __ramssd_alloc_ssdram devices/ramdrive/dev_ramssd.c /^static void* __ramssd_alloc_ssdram (bdbm_device_params_t* ptr_np)$/;" f file: __ramssd_block_addr devices/ramdrive/dev_ramssd.c /^static uint8_t* __ramssd_block_addr ($/;" f file: __ramssd_cmd_done devices/ramdrive/dev_ramssd.c /^void __ramssd_cmd_done (dev_ramssd_info_t* ri)$/;" f @@ -1156,6 +1163,9 @@ __ramssd_timing_register_schedule devices/ramdrive/dev_ramssd.c /^uint32_t __ram __return_llm_req devices/common/dev_stub.c /^static void __return_llm_req ($/;" f file: __rrpc_lock_laddr tools/lightnvm-v4.5.3/rrpc.h /^static int __rrpc_lock_laddr(struct rrpc *rrpc, sector_t laddr,$/;" f __rrpc_lock_laddr tools/lightnvm/rrpc.h /^static int __rrpc_lock_laddr(struct rrpc *rrpc, sector_t laddr,$/;" f +__this_module devices/ramdrive/risa_dev_ramdrive.mod.c /^__visible struct module __this_module$/;" v typeref:struct:module +__used devices/ramdrive/risa_dev_ramdrive.mod.c /^__used$/;" v file: +__used devices/ramdrive/risa_dev_ramdrive.mod.c /^__used$/;" v typeref:struct:____versions file: _bdbm_dm_inf devices/bluedbm/dm_bluedbm.c /^bdbm_dm_inf_t _bdbm_dm_inf = {$/;" v _bdbm_dm_inf devices/dumbssd/dm_dumbssd.c /^bdbm_dm_inf_t _bdbm_dm_inf = {$/;" v _bdbm_dm_inf devices/libdummy/dm_dummy.c /^bdbm_dm_inf_t _bdbm_dm_inf = {$/;" v @@ -1203,7 +1213,6 @@ _llm_noq_inf ftl/llm_noq.c /^bdbm_llm_inf_t _llm_noq_inf = {$/;" v _llm_noq_lock_inf ftl/llm_noq_lock.c /^bdbm_llm_inf_t _llm_noq_lock_inf = {$/;" v _llm_rmq_inf ftl/llm_rmq.c /^bdbm_llm_inf_t _llm_rmq_inf = {$/;" v _nvm_dev frontend/kernel/nvm_cache.c /^bdbm_nvm_inf_t _nvm_dev = {$/;" v -_nvm_dev frontend/kernel/nvm_cache_bak/nvm_cache.c /^bdbm_nvm_inf_t _nvm_dev = {$/;" v _nvm_misc devices/dumbssd/dm_dumbssd.c /^static struct miscdevice _nvm_misc = {$/;" v typeref:struct:miscdevice file: _nvm_misc tools/lightnvm-v4.5.3/core.c /^static struct miscdevice _nvm_misc = {$/;" v typeref:struct:miscdevice file: _nvm_misc tools/lightnvm/core.c /^static struct miscdevice _nvm_misc = {$/;" v typeref:struct:miscdevice file: @@ -1250,15 +1259,15 @@ _utstring_BuildTable common/3rd/utstring.h /^_UNUSED_ static void _utstring_Buil _utstring_BuildTableR common/3rd/utstring.h /^_UNUSED_ static void _utstring_BuildTableR($/;" f _utstring_find common/3rd/utstring.h /^_UNUSED_ static long _utstring_find($/;" f _utstring_findR common/3rd/utstring.h /^_UNUSED_ static long _utstring_findR($/;" f -abm ftl/algo/block_ftl.c /^ bdbm_abm_info_t* abm;$/;" m struct:__anon83 file: +abm ftl/algo/block_ftl.c /^ bdbm_abm_info_t* abm;$/;" m struct:__anon82 file: abort_endio tools/nvme/pci.c /^static void abort_endio(struct request *req, int error)$/;" f file: abort_endio tools/nvmedrv-v4.5.3/pci.c /^static void abort_endio(struct request *req, int error)$/;" f file: abort_limit tools/nvme/nvme.h /^ atomic_t abort_limit;$/;" m struct:nvme_ctrl abort_limit tools/nvmedrv-v4.5.3/nvme.h /^ atomic_t abort_limit;$/;" m struct:nvme_ctrl aborted tools/nvme/pci.c /^ int aborted;$/;" m struct:nvme_iod file: aborted tools/nvmedrv-v4.5.3/pci.c /^ int aborted;$/;" m struct:nvme_iod file: -ac_bab ftl/algo/dftl.c /^ bdbm_abm_block_t** ac_bab;$/;" m struct:__anon91 file: -ac_bab ftl/algo/page_ftl.c /^ bdbm_abm_block_t** ac_bab;$/;" m struct:__anon93 file: +ac_bab ftl/algo/dftl.c /^ bdbm_abm_block_t** ac_bab;$/;" m struct:__anon90 file: +ac_bab ftl/algo/page_ftl.c /^ bdbm_abm_block_t** ac_bab;$/;" m struct:__anon92 file: act_blk tools/lightnvm-v4.5.3/sysblk.c /^ int act_blk[MAX_SYSBLKS];$/;" m struct:sysblk_scan file: act_blk tools/lightnvm/sysblk.c /^ int act_blk[MAX_SYSBLKS];$/;" m struct:sysblk_scan file: adapter_alloc_cq tools/nvme/pci.c /^static int adapter_alloc_cq(struct nvme_dev *dev, u16 qid,$/;" f file: @@ -1308,17 +1317,17 @@ atomic_sub common/3rd/uatomic.h /^static inline void atomic_sub( int i, atomic_t atomic_sub_and_test common/3rd/uatomic.h /^static inline int atomic_sub_and_test( int i, atomic_t *v )$/;" f atomic_t common/3rd/uatomic.h /^} atomic_t;$/;" t typeref:struct:__anon7 babm_abm_subpage_t ftl/algo/abm.h /^typedef uint8_t babm_abm_subpage_t; \/* BDBM_ABM_PAGE_STATUS *\/$/;" t -badblk ftl/algo/dftl.c /^ bdbm_sema_t badblk;$/;" m struct:__anon91 file: -badblk ftl/algo/page_ftl.c /^ bdbm_sema_t badblk;$/;" m struct:__anon93 file: +badblk ftl/algo/dftl.c /^ bdbm_sema_t badblk;$/;" m struct:__anon90 file: +badblk ftl/algo/page_ftl.c /^ bdbm_sema_t badblk;$/;" m struct:__anon92 file: badblock_scan_thread_fn frontend/kernel/blkdev.c /^int badblock_scan_thread_fn (void* arg) $/;" f badblock_scan_thread_fn frontend/kernel/blkdev_bak.c /^int badblock_scan_thread_fn (void* arg) $/;" f -bai ftl/algo/dftl.c /^ bdbm_abm_info_t* bai;$/;" m struct:__anon91 file: -bai ftl/algo/page_ftl.c /^ bdbm_abm_info_t* bai;$/;" m struct:__anon93 file: +bai ftl/algo/dftl.c /^ bdbm_abm_info_t* bai;$/;" m struct:__anon90 file: +bai ftl/algo/page_ftl.c /^ bdbm_abm_info_t* bai;$/;" m struct:__anon92 file: bar tools/nvme/pci.c /^ void __iomem *bar;$/;" m struct:nvme_dev file: bar tools/nvmedrv-v4.5.3/pci.c /^ void __iomem *bar;$/;" m struct:nvme_dev file: bb_list tools/lightnvm-v4.5.3/gennvm.h /^ struct list_head bb_list; \/* Bad blocks. Mutually exclusive with$/;" m struct:gen_lun typeref:struct:gen_lun::list_head bb_list tools/lightnvm/gennvm.h /^ struct list_head bb_list; \/* Bad blocks. Mutually exclusive with$/;" m struct:gen_lun typeref:struct:gen_lun::list_head -bdbm_abm_block_t ftl/algo/abm.h /^} bdbm_abm_block_t;$/;" t typeref:struct:__anon84 +bdbm_abm_block_t ftl/algo/abm.h /^} bdbm_abm_block_t;$/;" t typeref:struct:__anon83 bdbm_abm_create ftl/algo/abm.c /^bdbm_abm_info_t* bdbm_abm_create ($/;" f bdbm_abm_destroy ftl/algo/abm.c /^void bdbm_abm_destroy (bdbm_abm_info_t* bai) $/;" f bdbm_abm_erase_block ftl/algo/abm.c /^void bdbm_abm_erase_block ($/;" f @@ -1332,7 +1341,7 @@ bdbm_abm_get_nr_dirty_blocks ftl/algo/abm.h /^static inline uint64_t bdbm_abm_ge bdbm_abm_get_nr_free_blocks ftl/algo/abm.h /^static inline uint64_t bdbm_abm_get_nr_free_blocks (bdbm_abm_info_t* bai) { return bai->nr_free_blks; }$/;" f bdbm_abm_get_nr_free_blocks_prepared ftl/algo/abm.h /^static inline uint64_t bdbm_abm_get_nr_free_blocks_prepared (bdbm_abm_info_t* bai) { return bai->nr_free_blks_prepared; }$/;" f bdbm_abm_get_nr_total_blocks ftl/algo/abm.h /^static inline uint64_t bdbm_abm_get_nr_total_blocks (bdbm_abm_info_t* bai) { return bai->nr_total_blks; }$/;" f -bdbm_abm_info_t ftl/algo/abm.h /^} bdbm_abm_info_t;$/;" t typeref:struct:__anon85 +bdbm_abm_info_t ftl/algo/abm.h /^} bdbm_abm_info_t;$/;" t typeref:struct:__anon84 bdbm_abm_invalidate_page ftl/algo/abm.c /^void bdbm_abm_invalidate_page ($/;" f bdbm_abm_list_for_each_dirty_block ftl/algo/abm.h 109;" d bdbm_abm_load ftl/algo/abm.c /^uint32_t bdbm_abm_load (bdbm_abm_info_t* bai, const char* fn)$/;" f @@ -1342,12 +1351,13 @@ bdbm_blk_getgeo frontend/kernel/blkdev.c /^int bdbm_blk_getgeo (struct block_dev bdbm_blk_getgeo frontend/kernel/blkdev_bak.c /^int bdbm_blk_getgeo (struct block_device *bdev, struct hd_geometry* geo)$/;" f bdbm_blk_ioctl frontend/kernel/blkdev.c /^int bdbm_blk_ioctl ($/;" f bdbm_blk_ioctl frontend/kernel/blkdev_bak.c /^int bdbm_blk_ioctl ($/;" f -bdbm_blkio_private_t frontend/kernel/blkio.c /^} bdbm_blkio_private_t;$/;" t typeref:struct:__anon60 file: -bdbm_blkio_proxy_req_t frontend/hybrid/blkio_proxy_ioctl.h /^} bdbm_blkio_proxy_req_t;$/;" t typeref:struct:__anon68 -bdbm_blkio_proxy_t frontend/hybrid/blkio_proxy.c /^} bdbm_blkio_proxy_t;$/;" t typeref:struct:__anon66 file: -bdbm_blkio_proxy_wq_t frontend/hybrid/blkio_proxy.c /^} bdbm_blkio_proxy_wq_t;$/;" t typeref:struct:__anon65 file: +bdbm_blkio_private_t frontend/kernel/blkio.c /^} bdbm_blkio_private_t;$/;" t typeref:struct:__anon59 file: +bdbm_blkio_private_t frontend/kernel/blkio.h /^} bdbm_blkio_private_t;$/;" t typeref:struct:__anon56 +bdbm_blkio_proxy_req_t frontend/hybrid/blkio_proxy_ioctl.h /^} bdbm_blkio_proxy_req_t;$/;" t typeref:struct:__anon67 +bdbm_blkio_proxy_t frontend/hybrid/blkio_proxy.c /^} bdbm_blkio_proxy_t;$/;" t typeref:struct:__anon65 file: +bdbm_blkio_proxy_wq_t frontend/hybrid/blkio_proxy.c /^} bdbm_blkio_proxy_wq_t;$/;" t typeref:struct:__anon64 file: bdbm_blkio_req_t include/bdbm_drv.h /^} bdbm_blkio_req_t;$/;" t typeref:struct:__anon26 -bdbm_blkio_stub_private_t frontend/hybrid/blkio_stub.c /^} bdbm_blkio_stub_private_t;$/;" t typeref:struct:__anon69 file: +bdbm_blkio_stub_private_t frontend/hybrid/blkio_stub.c /^} bdbm_blkio_stub_private_t;$/;" t typeref:struct:__anon68 file: bdbm_block_ftl_badblock_scan ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_badblock_scan (bdbm_drv_info_t* bdi)$/;" f bdbm_block_ftl_create ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_create (bdbm_drv_info_t* bdi)$/;" f bdbm_block_ftl_destroy ftl/algo/block_ftl.c /^void bdbm_block_ftl_destroy ($/;" f @@ -1359,9 +1369,9 @@ bdbm_block_ftl_invalidate_lpa ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_inv bdbm_block_ftl_is_gc_needed ftl/algo/block_ftl.c /^uint8_t bdbm_block_ftl_is_gc_needed (bdbm_drv_info_t* bdi, int64_t lpa)$/;" f bdbm_block_ftl_load ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_load (bdbm_drv_info_t* bdi, const char* fn)$/;" f bdbm_block_ftl_map_lpa_to_ppa ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_map_lpa_to_ppa ($/;" f -bdbm_block_ftl_private_t ftl/algo/block_ftl.c /^} bdbm_block_ftl_private_t;$/;" t typeref:struct:__anon83 file: +bdbm_block_ftl_private_t ftl/algo/block_ftl.c /^} bdbm_block_ftl_private_t;$/;" t typeref:struct:__anon82 file: bdbm_block_ftl_store ftl/algo/block_ftl.c /^uint32_t bdbm_block_ftl_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f -bdbm_block_mapping_entry_t ftl/algo/block_ftl.c /^} bdbm_block_mapping_entry_t;$/;" t typeref:struct:__anon82 file: +bdbm_block_mapping_entry_t ftl/algo/block_ftl.c /^} bdbm_block_mapping_entry_t;$/;" t typeref:struct:__anon81 file: bdbm_bug_on include/debug.h 108;" d bdbm_bug_on include/debug.h 97;" d bdbm_complete common/utils/usync.h 37;" d @@ -1404,7 +1414,7 @@ bdbm_dftl_missing_dir_prepare ftl/algo/dftl_map.c /^directory_slot_t* bdbm_dftl_ bdbm_dftl_prepare_mapblk_eviction ftl/algo/dftl.c /^bdbm_llm_req_t* bdbm_dftl_prepare_mapblk_eviction ($/;" f bdbm_dftl_prepare_mapblk_load ftl/algo/dftl.c /^bdbm_llm_req_t* bdbm_dftl_prepare_mapblk_load ($/;" f bdbm_dftl_prepare_victim_mapblk ftl/algo/dftl_map.c /^directory_slot_t* bdbm_dftl_prepare_victim_mapblk ($/;" f -bdbm_dftl_private_t ftl/algo/dftl.c /^} bdbm_dftl_private_t;$/;" t typeref:struct:__anon91 file: +bdbm_dftl_private_t ftl/algo/dftl.c /^} bdbm_dftl_private_t;$/;" t typeref:struct:__anon90 file: bdbm_dftl_set_mapping_entry ftl/algo/dftl_map.c /^int bdbm_dftl_set_mapping_entry (dftl_mapping_table_t* mt, uint64_t lpa, mapping_entry_t* me)$/;" f bdbm_dftl_store ftl/algo/dftl.c /^uint32_t bdbm_dftl_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f bdbm_dftl_update_dir_phyaddr ftl/algo/dftl_map.c /^void bdbm_dftl_update_dir_phyaddr ($/;" f @@ -1427,7 +1437,7 @@ bdbm_dm_init devices/dumbssd/dm_dumbssd.c /^EXPORT_SYMBOL (bdbm_dm_init);$/;" v bdbm_dm_init devices/dumbssd/dm_dumbssd.c /^int bdbm_dm_init (bdbm_drv_info_t* bdi)$/;" f bdbm_dm_init frontend/df-user/dev_proxy.c /^int bdbm_dm_init (bdbm_drv_info_t* bdi)$/;" f bdbm_dm_init frontend/user/dev_proxy.c /^int bdbm_dm_init (bdbm_drv_info_t* bdi)$/;" f -bdbm_dm_proxy_t frontend/df-user/dev_proxy.c /^} bdbm_dm_proxy_t;$/;" t typeref:struct:__anon62 file: +bdbm_dm_proxy_t frontend/df-user/dev_proxy.c /^} bdbm_dm_proxy_t;$/;" t typeref:struct:__anon61 file: bdbm_dm_proxy_t frontend/user/dev_proxy.c /^} bdbm_dm_proxy_t;$/;" t typeref:struct:__anon55 file: bdbm_dm_stub_exit devices/common/dev_stub.c /^void bdbm_dm_stub_exit (void)$/;" f bdbm_dm_stub_init devices/common/dev_stub.c /^int bdbm_dm_stub_init (void)$/;" f @@ -1473,33 +1483,34 @@ bdbm_ftl_params include/params.h /^} bdbm_ftl_params;$/;" t typeref:struct:__ano bdbm_funlink common/utils/ufile.c /^uint32_t bdbm_funlink (bdbm_file_t file)$/;" f bdbm_fwrite common/utils/ufile.c /^uint64_t bdbm_fwrite (bdbm_file_t file, uint64_t offset, uint8_t* data, uint64_t size) $/;" f bdbm_hlm_buf_private ftl/hlm_buf.c /^struct bdbm_hlm_buf_private {$/;" s file: -bdbm_hlm_dftl_private_t ftl/hlm_dftl.c /^} bdbm_hlm_dftl_private_t;$/;" t typeref:struct:__anon94 file: -bdbm_hlm_for_each_llm_req include/bdbm_drv.h 245;" d +bdbm_hlm_dftl_private_t ftl/hlm_dftl.c /^} bdbm_hlm_dftl_private_t;$/;" t typeref:struct:__anon93 file: +bdbm_hlm_for_each_llm_req include/bdbm_drv.h 247;" d bdbm_hlm_inf_t include/bdbm_drv.h /^} bdbm_hlm_inf_t;$/;" t typeref:struct:__anon40 -bdbm_hlm_nobuf_private_t ftl/hlm_nobuf.c /^} bdbm_hlm_nobuf_private_t;$/;" t typeref:struct:__anon70 file: +bdbm_hlm_nobuf_private_t ftl/hlm_nobuf.c /^} bdbm_hlm_nobuf_private_t;$/;" t typeref:struct:__anon69 file: bdbm_hlm_req_gc_t include/bdbm_drv.h /^} bdbm_hlm_req_gc_t;$/;" t typeref:struct:__anon37 bdbm_hlm_req_t include/bdbm_drv.h /^} bdbm_hlm_req_t;$/;" t typeref:struct:__anon32 +bdbm_hlm_reqs_pool_build_int_trim_req ftl/hlm_reqs_pool.c /^int bdbm_hlm_reqs_pool_build_int_trim_req ($/;" f bdbm_hlm_reqs_pool_build_req ftl/hlm_reqs_pool.c /^int bdbm_hlm_reqs_pool_build_req ($/;" f bdbm_hlm_reqs_pool_build_wb_req ftl/hlm_reqs_pool.c /^int bdbm_hlm_reqs_pool_build_wb_req ($/;" f bdbm_hlm_reqs_pool_create ftl/hlm_reqs_pool.c /^bdbm_hlm_reqs_pool_t* bdbm_hlm_reqs_pool_create ($/;" f bdbm_hlm_reqs_pool_destroy ftl/hlm_reqs_pool.c /^void bdbm_hlm_reqs_pool_destroy ($/;" f bdbm_hlm_reqs_pool_free_item ftl/hlm_reqs_pool.c /^void bdbm_hlm_reqs_pool_free_item ($/;" f bdbm_hlm_reqs_pool_get_item ftl/hlm_reqs_pool.c /^bdbm_hlm_req_t* bdbm_hlm_reqs_pool_get_item ($/;" f -bdbm_hlm_reqs_pool_t ftl/hlm_reqs_pool.h /^} bdbm_hlm_reqs_pool_t;$/;" t typeref:struct:__anon71 -bdbm_hlm_rsd_private_t ftl/hlm_rsd.c /^}bdbm_hlm_rsd_private_t;$/;" t typeref:struct:__anon96 file: +bdbm_hlm_reqs_pool_t ftl/hlm_reqs_pool.h /^} bdbm_hlm_reqs_pool_t;$/;" t typeref:struct:__anon70 +bdbm_hlm_rsd_private_t ftl/hlm_rsd.c /^}bdbm_hlm_rsd_private_t;$/;" t typeref:struct:__anon95 file: bdbm_host_inf_t include/bdbm_drv.h /^} bdbm_host_inf_t;$/;" t typeref:struct:__anon38 bdbm_init_completion common/utils/usync.h 34;" d -bdbm_is_erase include/bdbm_drv.h 131;" d -bdbm_is_gc include/bdbm_drv.h 127;" d -bdbm_is_meta include/bdbm_drv.h 128;" d -bdbm_is_normal include/bdbm_drv.h 125;" d -bdbm_is_read include/bdbm_drv.h 129;" d -bdbm_is_rmw include/bdbm_drv.h 126;" d -bdbm_is_trim include/bdbm_drv.h 132;" d -bdbm_is_write include/bdbm_drv.h 130;" d -bdbm_is_writeback include/bdbm_drv.h 135;" d -bdbm_llm_get_logaddr include/bdbm_drv.h 248;" d -bdbm_llm_get_phyaddr include/bdbm_drv.h 250;" d +bdbm_is_erase include/bdbm_drv.h 133;" d +bdbm_is_gc include/bdbm_drv.h 129;" d +bdbm_is_meta include/bdbm_drv.h 130;" d +bdbm_is_normal include/bdbm_drv.h 127;" d +bdbm_is_read include/bdbm_drv.h 131;" d +bdbm_is_rmw include/bdbm_drv.h 128;" d +bdbm_is_trim include/bdbm_drv.h 134;" d +bdbm_is_write include/bdbm_drv.h 132;" d +bdbm_is_writeback include/bdbm_drv.h 137;" d +bdbm_llm_get_logaddr include/bdbm_drv.h 250;" d +bdbm_llm_get_phyaddr include/bdbm_drv.h 252;" d bdbm_llm_inf_t include/bdbm_drv.h /^} bdbm_llm_inf_t;$/;" t typeref:struct:__anon41 bdbm_llm_mq_private ftl/llm_mq.c /^struct bdbm_llm_mq_private {$/;" s file: bdbm_llm_noq_lock_private ftl/llm_noq_lock.c /^struct bdbm_llm_noq_lock_private {$/;" s file: @@ -1507,8 +1518,8 @@ bdbm_llm_noq_private ftl/llm_noq.c /^struct bdbm_llm_noq_private {$/;" s file: bdbm_llm_req_ioctl_t devices/common/dev_stub.h /^} bdbm_llm_req_ioctl_t;$/;" t typeref:struct:__anon10 bdbm_llm_req_t include/bdbm_drv.h /^} bdbm_llm_req_t;$/;" t typeref:struct:__anon31 bdbm_llm_rmq_private ftl/llm_rmq.c /^struct bdbm_llm_rmq_private {$/;" s file: -bdbm_llm_set_logaddr include/bdbm_drv.h 247;" d -bdbm_llm_set_phyaddr include/bdbm_drv.h 249;" d +bdbm_llm_set_logaddr include/bdbm_drv.h 249;" d +bdbm_llm_set_phyaddr include/bdbm_drv.h 251;" d bdbm_logaddr_t include/bdbm_drv.h /^} bdbm_logaddr_t;$/;" t typeref:struct:__anon28 bdbm_malloc common/utils/umemory.c /^void* bdbm_malloc (size_t size) { return calloc (1, size); }$/;" f bdbm_malloc common/utils/umemory.c /^void* bdbm_malloc (size_t size) { return vzalloc (size); }$/;" f @@ -1548,16 +1559,14 @@ bdbm_no_ftl_get_free_ppa ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_get_free_ppa ( bdbm_no_ftl_get_ppa ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_get_ppa (bdbm_drv_info_t* bdi, uint64_t lpa, bdbm_phyaddr_t* ppa)$/;" f bdbm_no_ftl_invalidate_lpa ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_invalidate_lpa (bdbm_drv_info_t* bdi, uint64_t lpa, uint64_t len)$/;" f bdbm_no_ftl_map_lpa_to_ppa ftl/algo/no_ftl.c /^uint32_t bdbm_no_ftl_map_lpa_to_ppa (bdbm_drv_info_t* bdi, uint64_t lpa, bdbm_phyaddr_t* ptr_phyaddr)$/;" f -bdbm_nvm_alloc_slot frontend/kernel/nvm_cache.c /^uint64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f -bdbm_nvm_block_t frontend/kernel/nvm_cache_bak/nvm_cache.h /^} bdbm_nvm_block_t;$/;" t typeref:struct:__anon58 +bdbm_nvm_alloc_slot frontend/kernel/nvm_cache.c /^static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f file: bdbm_nvm_create frontend/kernel/nvm_cache.c /^uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi){$/;" f -bdbm_nvm_create frontend/kernel/nvm_cache_bak/nvm_cache.c /^uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi){$/;" f bdbm_nvm_destroy frontend/kernel/nvm_cache.c /^void bdbm_nvm_destroy (bdbm_drv_info_t* bdi)$/;" f -bdbm_nvm_dev_private_t frontend/kernel/nvm_cache.h /^} bdbm_nvm_dev_private_t;$/;" t typeref:struct:__anon57 -bdbm_nvm_dev_private_t frontend/kernel/nvm_cache_bak/nvm_cache.h /^} bdbm_nvm_dev_private_t;$/;" t typeref:struct:__anon59 -bdbm_nvm_find_data frontend/kernel/nvm_cache.c /^uint64_t bdbm_nvm_find_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f +bdbm_nvm_dev_private_t frontend/kernel/nvm_cache.h /^} bdbm_nvm_dev_private_t;$/;" t typeref:struct:__anon58 +bdbm_nvm_find_data frontend/kernel/nvm_cache.c /^int64_t bdbm_nvm_find_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f bdbm_nvm_inf_t include/bdbm_drv.h /^} bdbm_nvm_inf_t;$/;" t typeref:struct:__anon39 -bdbm_nvm_page_t frontend/kernel/nvm_cache.h /^} bdbm_nvm_page_t;$/;" t typeref:struct:__anon56 +bdbm_nvm_make_req frontend/kernel/nvm_cache.c /^int64_t bdbm_nvm_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr){$/;" f +bdbm_nvm_page_t frontend/kernel/nvm_cache.h /^} bdbm_nvm_page_t;$/;" t typeref:struct:__anon57 bdbm_nvm_read_data frontend/kernel/nvm_cache.c /^uint64_t bdbm_nvm_read_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f bdbm_nvm_write_data frontend/kernel/nvm_cache.c /^uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f bdbm_page_badblock_scan ftl/algo/page_ftl.c /^uint32_t bdbm_page_badblock_scan (bdbm_drv_info_t* bdi)$/;" f @@ -1570,12 +1579,12 @@ bdbm_page_ftl_invalidate_lpa ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_invali bdbm_page_ftl_is_gc_needed ftl/algo/page_ftl.c /^uint8_t bdbm_page_ftl_is_gc_needed (bdbm_drv_info_t* bdi, int64_t lpa)$/;" f bdbm_page_ftl_load ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_load (bdbm_drv_info_t* bdi, const char* fn)$/;" f bdbm_page_ftl_map_lpa_to_ppa ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_map_lpa_to_ppa ($/;" f -bdbm_page_ftl_private_t ftl/algo/page_ftl.c /^} bdbm_page_ftl_private_t;$/;" t typeref:struct:__anon93 file: +bdbm_page_ftl_private_t ftl/algo/page_ftl.c /^} bdbm_page_ftl_private_t;$/;" t typeref:struct:__anon92 file: bdbm_page_ftl_store ftl/algo/page_ftl.c /^uint32_t bdbm_page_ftl_store (bdbm_drv_info_t* bdi, const char* fn)$/;" f -bdbm_page_mapping_entry_t ftl/algo/page_ftl.c /^} bdbm_page_mapping_entry_t;$/;" t typeref:struct:__anon92 file: +bdbm_page_mapping_entry_t ftl/algo/page_ftl.c /^} bdbm_page_mapping_entry_t;$/;" t typeref:struct:__anon91 file: bdbm_perf_monitor_t include/bdbm_drv.h /^} bdbm_perf_monitor_t;$/;" t typeref:struct:__anon44 bdbm_phyaddr_t include/bdbm_drv.h /^} bdbm_phyaddr_t;$/;" t typeref:struct:__anon25 -bdbm_prior_lpa_item_t ftl/queue/prior_queue.h /^} bdbm_prior_lpa_item_t;$/;" t typeref:struct:__anon76 +bdbm_prior_lpa_item_t ftl/queue/prior_queue.h /^} bdbm_prior_lpa_item_t;$/;" t typeref:struct:__anon75 bdbm_prior_queue_create ftl/queue/prior_queue.c /^bdbm_prior_queue_t* bdbm_prior_queue_create ($/;" f bdbm_prior_queue_dequeue ftl/queue/prior_queue.c /^void* bdbm_prior_queue_dequeue ($/;" f bdbm_prior_queue_destroy ftl/queue/prior_queue.c /^void bdbm_prior_queue_destroy (bdbm_prior_queue_t* mq)$/;" f @@ -1584,16 +1593,16 @@ bdbm_prior_queue_get_nr_items ftl/queue/prior_queue.c /^uint64_t bdbm_prior_queu bdbm_prior_queue_is_all_empty ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_is_all_empty (bdbm_prior_queue_t* mq)$/;" f bdbm_prior_queue_is_empty ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_is_empty ($/;" f bdbm_prior_queue_is_full ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_is_full (bdbm_prior_queue_t* mq)$/;" f -bdbm_prior_queue_item_t ftl/queue/prior_queue.h /^} bdbm_prior_queue_item_t;$/;" t typeref:struct:__anon75 +bdbm_prior_queue_item_t ftl/queue/prior_queue.h /^} bdbm_prior_queue_item_t;$/;" t typeref:struct:__anon74 bdbm_prior_queue_move ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_move ($/;" f bdbm_prior_queue_remove ftl/queue/prior_queue.c /^uint8_t bdbm_prior_queue_remove ($/;" f -bdbm_prior_queue_t ftl/queue/prior_queue.h /^} bdbm_prior_queue_t;$/;" t typeref:struct:__anon77 -bdbm_proxy_req_status_t frontend/hybrid/blkio_proxy_ioctl.h /^} bdbm_proxy_req_status_t;$/;" t typeref:enum:__anon67 +bdbm_prior_queue_t ftl/queue/prior_queue.h /^} bdbm_prior_queue_t;$/;" t typeref:struct:__anon76 +bdbm_proxy_req_status_t frontend/hybrid/blkio_proxy_ioctl.h /^} bdbm_proxy_req_status_t;$/;" t typeref:enum:__anon66 bdbm_proxy_reqs_pool_alloc_item frontend/hybrid/blkio_proxy_reqs_pool.c /^bdbm_blkio_proxy_req_t* bdbm_proxy_reqs_pool_alloc_item ($/;" f bdbm_proxy_reqs_pool_create frontend/hybrid/blkio_proxy_reqs_pool.c /^bdbm_proxy_reqs_pool_t* bdbm_proxy_reqs_pool_create ($/;" f bdbm_proxy_reqs_pool_destroy frontend/hybrid/blkio_proxy_reqs_pool.c /^void bdbm_proxy_reqs_pool_destroy (bdbm_proxy_reqs_pool_t* pool)$/;" f bdbm_proxy_reqs_pool_free_item frontend/hybrid/blkio_proxy_reqs_pool.c /^void bdbm_proxy_reqs_pool_free_item ($/;" f -bdbm_proxy_reqs_pool_t frontend/hybrid/blkio_proxy_reqs_pool.h /^} bdbm_proxy_reqs_pool_t;$/;" t typeref:struct:__anon63 +bdbm_proxy_reqs_pool_t frontend/hybrid/blkio_proxy_reqs_pool.h /^} bdbm_proxy_reqs_pool_t;$/;" t typeref:struct:__anon62 bdbm_queue_create ftl/queue/queue.c /^bdbm_queue_t* bdbm_queue_create (uint64_t nr_queues, int64_t max_size)$/;" f bdbm_queue_dequeue ftl/queue/queue.c /^void* bdbm_queue_dequeue (bdbm_queue_t* mq, uint64_t qid)$/;" f bdbm_queue_destroy ftl/queue/queue.c /^void bdbm_queue_destroy (bdbm_queue_t* mq)$/;" f @@ -1603,8 +1612,8 @@ bdbm_queue_get_nr_items ftl/queue/queue.c /^uint64_t bdbm_queue_get_nr_items (bd bdbm_queue_is_all_empty ftl/queue/queue.c /^uint8_t bdbm_queue_is_all_empty (bdbm_queue_t* mq)$/;" f bdbm_queue_is_empty ftl/queue/queue.c /^uint8_t bdbm_queue_is_empty (bdbm_queue_t* mq, uint64_t qid)$/;" f bdbm_queue_is_full ftl/queue/queue.c /^uint8_t bdbm_queue_is_full (bdbm_queue_t* mq)$/;" f -bdbm_queue_item_t ftl/queue/queue.h /^} bdbm_queue_item_t;$/;" t typeref:struct:__anon73 -bdbm_queue_t ftl/queue/queue.h /^} bdbm_queue_t;$/;" t typeref:struct:__anon74 +bdbm_queue_item_t ftl/queue/queue.h /^} bdbm_queue_item_t;$/;" t typeref:struct:__anon72 +bdbm_queue_t ftl/queue/queue.h /^} bdbm_queue_t;$/;" t typeref:struct:__anon73 bdbm_raw_flash_erase_block examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_erase_block ($/;" f bdbm_raw_flash_erase_block_async examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_erase_block_async ($/;" f bdbm_raw_flash_exit examples/raw-flash/raw-flash.c /^void bdbm_raw_flash_exit (bdbm_raw_flash_t* rf)$/;" f @@ -1620,7 +1629,7 @@ bdbm_raw_flash_t examples/raw-flash/raw-flash.h /^} bdbm_raw_flash_t;$/;" t type bdbm_raw_flash_wait examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_wait ($/;" f bdbm_raw_flash_write_page examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_write_page ($/;" f bdbm_raw_flash_write_page_async examples/raw-flash/raw-flash.c /^int bdbm_raw_flash_write_page_async ($/;" f -bdbm_rd_prior_lpa_item_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_lpa_item_t;$/;" t typeref:struct:__anon80 +bdbm_rd_prior_lpa_item_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_lpa_item_t;$/;" t typeref:struct:__anon79 bdbm_rd_prior_queue_create ftl/queue/rd_prior_queue.c /^bdbm_rd_prior_queue_t* bdbm_rd_prior_queue_create ($/;" f bdbm_rd_prior_queue_dequeue ftl/queue/rd_prior_queue.c /^void* bdbm_rd_prior_queue_dequeue ($/;" f bdbm_rd_prior_queue_destroy ftl/queue/rd_prior_queue.c /^void bdbm_rd_prior_queue_destroy (bdbm_rd_prior_queue_t* mq)$/;" f @@ -1629,15 +1638,15 @@ bdbm_rd_prior_queue_get_nr_items ftl/queue/rd_prior_queue.c /^uint64_t bdbm_rd_p bdbm_rd_prior_queue_is_all_empty ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_is_all_empty (bdbm_rd_prior_queue_t* mq)$/;" f bdbm_rd_prior_queue_is_empty ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_is_empty ($/;" f bdbm_rd_prior_queue_is_full ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_is_full (bdbm_rd_prior_queue_t* mq)$/;" f -bdbm_rd_prior_queue_item_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_queue_item_t;$/;" t typeref:struct:__anon79 +bdbm_rd_prior_queue_item_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_queue_item_t;$/;" t typeref:struct:__anon78 bdbm_rd_prior_queue_move ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_move ($/;" f bdbm_rd_prior_queue_remove ftl/queue/rd_prior_queue.c /^uint8_t bdbm_rd_prior_queue_remove ($/;" f -bdbm_rd_prior_queue_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_queue_t;$/;" t typeref:struct:__anon81 +bdbm_rd_prior_queue_t ftl/queue/rd_prior_queue.h /^} bdbm_rd_prior_queue_t;$/;" t typeref:struct:__anon80 bdbm_register devices/dumbssd/dm_dumbssd.c /^EXPORT_SYMBOL (bdbm_register);$/;" v bdbm_register devices/dumbssd/dm_dumbssd.c /^int bdbm_register (struct request_queue* q, char* disk_name)$/;" f bdbm_reinit_completion common/utils/usync.h 39;" d bdbm_reinit_completion common/utils/usync.h 41;" d -bdbm_rp_mem ftl/hlm_reqs_pool.h /^} bdbm_rp_mem;$/;" t typeref:enum:__anon72 +bdbm_rp_mem ftl/hlm_reqs_pool.h /^} bdbm_rp_mem;$/;" t typeref:enum:__anon71 bdbm_sema_free common/utils/usync.h 103;" d bdbm_sema_free common/utils/usync.h 56;" d bdbm_sema_init common/utils/usync.h 47;" d @@ -1693,7 +1702,7 @@ bdbm_track include/debug.h 67;" d bdbm_try_wait_for_completion common/utils/usync.h 36;" d bdbm_unregister devices/dumbssd/dm_dumbssd.c /^EXPORT_SYMBOL(bdbm_unregister);$/;" v bdbm_unregister devices/dumbssd/dm_dumbssd.c /^void bdbm_unregister (char* disk_name)$/;" f -bdbm_userio_private_t frontend/df-user/userio.c /^} bdbm_userio_private_t;$/;" t typeref:struct:__anon61 file: +bdbm_userio_private_t frontend/df-user/userio.c /^} bdbm_userio_private_t;$/;" t typeref:struct:__anon60 file: bdbm_userio_private_t frontend/user/userio.c /^} bdbm_userio_private_t;$/;" t typeref:struct:__anon54 file: bdbm_wait_for_completion common/utils/usync.h 35;" d bdbm_warn_on include/debug.h 88;" d @@ -1704,11 +1713,11 @@ bdbm_zmalloc common/utils/umemory.c /^void* bdbm_zmalloc (size_t size) { return bdbm_zmalloc frontend/df-user/df_umemory.c /^void* bdbm_zmalloc (size_t size) { return calloc (1, size); }$/;" f bdi devices/common/dev_stub.c /^ bdbm_drv_info_t* bdi;$/;" m struct:__anon9 file: bdi examples/raw-flash/raw-flash.h /^ bdbm_drv_info_t bdi; $/;" m struct:__anon20 -bdi frontend/hybrid/blkio_proxy.c /^ bdbm_drv_info_t* bdi;$/;" m struct:__anon65 file: +bdi frontend/hybrid/blkio_proxy.c /^ bdbm_drv_info_t* bdi;$/;" m struct:__anon64 file: bdops frontend/kernel/blkdev.c /^static struct block_device_operations bdops = {$/;" v typeref:struct:block_device_operations file: bdops frontend/kernel/blkdev_bak.c /^static struct block_device_operations bdops = {$/;" v typeref:struct:block_device_operations file: bi_bvec_cnt include/bdbm_drv.h /^ uint64_t bi_bvec_cnt; \/* unit: kernel-page (4KB); it must be equal to 'bi_size \/ 8' *\/$/;" m struct:__anon26 -bi_bvec_ptr frontend/hybrid/blkio_proxy_ioctl.h /^ uint8_t bi_bvec_ptr[BDBM_BLKIO_MAX_VECS][KERNEL_PAGE_SIZE]; \/* keep data shared by both kernel and user *\/$/;" m struct:__anon68 +bi_bvec_ptr frontend/hybrid/blkio_proxy_ioctl.h /^ uint8_t bi_bvec_ptr[BDBM_BLKIO_MAX_VECS][KERNEL_PAGE_SIZE]; \/* keep data shared by both kernel and user *\/$/;" m struct:__anon67 bi_bvec_ptr include/bdbm_drv.h /^ uint8_t* bi_bvec_ptr[BDBM_BLKIO_MAX_VECS]; \/* an array of 4 KB data for bvec *\/$/;" m struct:__anon26 bi_offset include/bdbm_drv.h /^ uint64_t bi_offset; \/* unit: sector (512B) *\/$/;" m struct:__anon26 bi_rw include/bdbm_drv.h /^ uint64_t bi_rw; \/* REQTYPE_WRITE or REQTYPE_READ *\/$/;" m struct:__anon26 @@ -1740,7 +1749,7 @@ blkio_proxy_make_req frontend/hybrid/blkio_proxy.c /^void blkio_proxy_make_req ( blkio_proxy_mmap_close frontend/hybrid/blkio_proxy.c /^void blkio_proxy_mmap_close (struct vm_area_struct *vma)$/;" f blkio_proxy_mmap_open frontend/hybrid/blkio_proxy.c /^void blkio_proxy_mmap_open (struct vm_area_struct *vma)$/;" f blkio_proxy_open frontend/hybrid/blkio_proxy.c /^uint32_t blkio_proxy_open (bdbm_drv_info_t* bdi)$/;" f -blkio_req frontend/hybrid/blkio_proxy_ioctl.h /^ bdbm_blkio_req_t blkio_req; \/* must be at the top of the structure *\/$/;" m struct:__anon68 +blkio_req frontend/hybrid/blkio_proxy_ioctl.h /^ bdbm_blkio_req_t blkio_req; \/* must be at the top of the structure *\/$/;" m struct:__anon67 blkio_req include/bdbm_drv.h /^ void* blkio_req;$/;" m struct:__anon32 blkio_stub_close frontend/hybrid/blkio_stub.c /^void blkio_stub_close (bdbm_drv_info_t* bdi)$/;" f blkio_stub_end_req frontend/hybrid/blkio_stub.c /^void blkio_stub_end_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req)$/;" f @@ -1753,15 +1762,15 @@ block devices/dumbssd/dm_dumbssd.h /^ int block;$/;" m struct:__anon18 block_erase_time_us include/params.h /^ uint64_t block_erase_time_us;$/;" m struct:__anon47 block_is_full tools/lightnvm-v4.5.3/rrpc.c /^static int block_is_full(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: block_is_full tools/lightnvm/rrpc.c /^static int block_is_full(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: -block_no ftl/algo/abm.h /^ uint64_t block_no;$/;" m struct:__anon84 -block_no ftl/algo/block_ftl.c /^ uint64_t block_no;$/;" m struct:__anon82 file: -block_no ftl/algo/dftl_map.h /^ uint64_t block_no;$/;" m struct:__anon87 +block_no ftl/algo/abm.h /^ uint64_t block_no;$/;" m struct:__anon83 +block_no ftl/algo/block_ftl.c /^ uint64_t block_no;$/;" m struct:__anon81 file: +block_no ftl/algo/dftl_map.h /^ uint64_t block_no;$/;" m struct:__anon86 block_no include/bdbm_drv.h /^ uint64_t block_no;$/;" m struct:__anon25 block_prio_find_max tools/lightnvm-v4.5.3/rrpc.c /^static struct rrpc_block *block_prio_find_max(struct rrpc_lun *rlun)$/;" f file: block_prio_find_max tools/lightnvm/rrpc.c /^static struct rrpc_block *block_prio_find_max(struct rrpc_lun *rlun)$/;" f file: block_to_addr tools/lightnvm-v4.5.3/rrpc.c /^static u64 block_to_addr(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: block_to_addr tools/lightnvm/rrpc.c /^static u64 block_to_addr(struct rrpc *rrpc, struct rrpc_block *rblk)$/;" f file: -blocks ftl/algo/abm.h /^ bdbm_abm_block_t* blocks;$/;" m struct:__anon85 +blocks ftl/algo/abm.h /^ bdbm_abm_block_t* blocks;$/;" m struct:__anon84 blocks tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_block *blocks; \/* Reference to block allocation *\/$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc_block blocks tools/lightnvm/rrpc.h /^ struct rrpc_block *blocks; \/* Reference to block allocation *\/$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc_block bloom_bv common/3rd/uthash.h /^ uint8_t *bloom_bv;$/;" m struct:UT_hash_table @@ -1793,16 +1802,16 @@ ch_len tools/nvme/lightnvm.c /^ __u8 ch_len;$/;" m struct:nvme_nvm_addr_format ch_len tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 ch_len;$/;" m struct:nvme_nvm_addr_format file: ch_offset tools/nvme/lightnvm.c /^ __u8 ch_offset;$/;" m struct:nvme_nvm_addr_format file: ch_offset tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 ch_offset;$/;" m struct:nvme_nvm_addr_format file: -channel_no ftl/algo/abm.h /^ uint64_t channel_no;$/;" m struct:__anon84 -channel_no ftl/algo/block_ftl.c /^ uint64_t channel_no;$/;" m struct:__anon82 file: -channel_no ftl/algo/dftl_map.h /^ uint8_t channel_no;$/;" m struct:__anon87 +channel_no ftl/algo/abm.h /^ uint64_t channel_no;$/;" m struct:__anon83 +channel_no ftl/algo/block_ftl.c /^ uint64_t channel_no;$/;" m struct:__anon81 file: +channel_no ftl/algo/dftl_map.h /^ uint8_t channel_no;$/;" m struct:__anon86 channel_no include/bdbm_drv.h /^ uint64_t channel_no;$/;" m struct:__anon25 check_mapblk include/bdbm_drv.h /^ uint8_t (*check_mapblk) (bdbm_drv_info_t* bdi, uint64_t lpa);$/;" m struct:__anon43 check_thread_fn examples/stub_test/main.c /^void check_thread_fn (void* data)$/;" f check_thread_t examples/stub_test/main.c /^} check_thread_t;$/;" t typeref:struct:__anon23 file: -chip_no ftl/algo/abm.h /^ uint64_t chip_no;$/;" m struct:__anon84 -chip_no ftl/algo/block_ftl.c /^ uint64_t chip_no;$/;" m struct:__anon82 file: -chip_no ftl/algo/dftl_map.h /^ uint8_t chip_no;$/;" m struct:__anon87 +chip_no ftl/algo/abm.h /^ uint64_t chip_no;$/;" m struct:__anon83 +chip_no ftl/algo/block_ftl.c /^ uint64_t chip_no;$/;" m struct:__anon81 file: +chip_no ftl/algo/dftl_map.h /^ uint8_t chip_no;$/;" m struct:__anon86 chip_no include/bdbm_drv.h /^ uint64_t chip_no;$/;" m struct:__anon25 chnl_off tools/nvme/lightnvm.c /^ __le32 chnl_off;$/;" m struct:nvme_nvm_identity file: chnl_off tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 chnl_off;$/;" m struct:nvme_nvm_identity file: @@ -1883,12 +1892,12 @@ ctrl_config tools/nvme/nvme.h /^ u32 ctrl_config;$/;" m struct:nvme_ctrl ctrl_config tools/nvmedrv-v4.5.3/nvme.h /^ u32 ctrl_config;$/;" m struct:nvme_ctrl cur tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_block *cur, *gc_cur;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc_block cur tools/lightnvm/rrpc.h /^ struct rrpc_block *cur, *gc_cur;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::rrpc_block -cur_tag ftl/queue/prior_queue.h /^ uint64_t cur_tag;$/;" m struct:__anon76 -cur_tag ftl/queue/rd_prior_queue.h /^ uint64_t cur_tag;$/;" m struct:__anon80 -curr_page_ofs ftl/algo/dftl.c /^ uint64_t curr_page_ofs;$/;" m struct:__anon91 file: -curr_page_ofs ftl/algo/page_ftl.c /^ uint64_t curr_page_ofs;$/;" m struct:__anon93 file: -curr_puid ftl/algo/dftl.c /^ uint64_t curr_puid;$/;" m struct:__anon91 file: -curr_puid ftl/algo/page_ftl.c /^ uint64_t curr_puid;$/;" m struct:__anon93 file: +cur_tag ftl/queue/prior_queue.h /^ uint64_t cur_tag;$/;" m struct:__anon75 +cur_tag ftl/queue/rd_prior_queue.h /^ uint64_t cur_tag;$/;" m struct:__anon79 +curr_page_ofs ftl/algo/dftl.c /^ uint64_t curr_page_ofs;$/;" m struct:__anon90 file: +curr_page_ofs ftl/algo/page_ftl.c /^ uint64_t curr_page_ofs;$/;" m struct:__anon92 file: +curr_puid ftl/algo/dftl.c /^ uint64_t curr_puid;$/;" m struct:__anon90 file: +curr_puid ftl/algo/page_ftl.c /^ uint64_t curr_puid;$/;" m struct:__anon92 file: d common/3rd/utarray.h /^ char *d; \/* n slots of size icd->sz*\/$/;" m struct:__anon5 d common/3rd/utstring.h /^ char *d;$/;" m struct:__anon8 data include/bdbm_drv.h /^ uint8_t* data;$/;" m struct:__anon30 @@ -1937,6 +1946,7 @@ dev_ramssd_get_channles_per_ssd devices/ramdrive/dev_ramssd.h /^uint64_t dev_ram dev_ramssd_get_chip_size devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_chip_size (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f dev_ramssd_get_chips_per_channel devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_chips_per_channel (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f dev_ramssd_get_chips_per_ssd devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_chips_per_ssd (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f +dev_ramssd_get_data devices/ramdrive/dev_ramssd.c /^uint8_t* dev_ramssd_get_data (dev_ramssd_info_t* ri, int64_t lpa)$/;" f dev_ramssd_get_page_size devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_page_size (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f dev_ramssd_get_page_size_main devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_page_size_main (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f dev_ramssd_get_page_size_oob devices/ramdrive/dev_ramssd.h /^uint64_t dev_ramssd_get_page_size_oob (dev_ramssd_info_t* ptr_ramssd_info) {$/;" f @@ -1956,13 +1966,13 @@ device_capacity_in_byte include/params.h /^ uint64_t device_capacity_in_byte;$/; device_type include/params.h /^ uint32_t device_type;$/;" m struct:__anon47 devnum devices/common/dev_stub.c /^static dev_t devnum = 0; $/;" v file: devnum frontend/hybrid/blkio_proxy.c /^static dev_t devnum = 0; $/;" v file: -dftl_mapping_table_t ftl/algo/dftl_map.h /^} dftl_mapping_table_t;$/;" t typeref:struct:__anon90 +dftl_mapping_table_t ftl/algo/dftl_map.h /^} dftl_mapping_table_t;$/;" t typeref:struct:__anon89 die devices/dumbssd/dev_hynix_nvme.h /^ uint64_t die;$/;" m struct:__anon17 die devices/dumbssd/dm_dumbssd.h /^ int die;$/;" m struct:__anon18 die_locks devices/dumbssd/dm_dumbssd.c /^bdbm_sema_t die_locks[NR_DIES];$/;" v -dir ftl/algo/dftl_map.h /^ directory_slot_t* dir; \/* always maintained in DRAM *\/$/;" m struct:__anon90 -dir_stat ftl/algo/dftl_map.h /^} dir_stat;$/;" t typeref:enum:__anon86 -directory_slot_t ftl/algo/dftl_map.h /^} directory_slot_t;$/;" t typeref:struct:__anon89 +dir ftl/algo/dftl_map.h /^ directory_slot_t* dir; \/* always maintained in DRAM *\/$/;" m struct:__anon89 +dir_stat ftl/algo/dftl_map.h /^} dir_stat;$/;" t typeref:enum:__anon85 +directory_slot_t ftl/algo/dftl_map.h /^} directory_slot_t;$/;" t typeref:struct:__anon88 disk tools/lightnvm-v4.5.3/rrpc.h /^ struct gendisk *disk;$/;" m struct:rrpc typeref:struct:rrpc::gendisk disk tools/lightnvm/rrpc.h /^ struct gendisk *disk;$/;" m struct:rrpc typeref:struct:rrpc::gendisk disk tools/nvme/nvme.h /^ struct gendisk *disk;$/;" m struct:nvme_ns typeref:struct:nvme_ns::gendisk @@ -2018,6 +2028,7 @@ dm_proxy_store frontend/user/dev_proxy.c /^uint32_t dm_proxy_store ($/;" f dm_proxy_thread frontend/user/dev_proxy.c /^ bdbm_thread_t* dm_proxy_thread;$/;" m struct:__anon55 file: dm_ramdrive_close devices/ramdrive/dm_ramdrive.c /^void dm_ramdrive_close (bdbm_drv_info_t* bdi)$/;" f dm_ramdrive_end_req devices/ramdrive/dm_ramdrive.c /^void dm_ramdrive_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req)$/;" f +dm_ramdrive_get_data devices/ramdrive/dm_ramdrive.c /^uint8_t* dm_ramdrive_get_data (bdbm_drv_info_t* bdi, int64_t lpa)$/;" f dm_ramdrive_load devices/ramdrive/dm_ramdrive.c /^uint32_t dm_ramdrive_load (bdbm_drv_info_t* bdi, const char* fn)$/;" f dm_ramdrive_make_req devices/ramdrive/dm_ramdrive.c /^uint32_t dm_ramdrive_make_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* ptr_llm_req)$/;" f dm_ramdrive_make_reqs devices/ramdrive/dm_ramdrive.c /^uint32_t dm_ramdrive_make_reqs (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f @@ -2065,11 +2076,12 @@ end_req include/bdbm_drv.h /^ void (*end_req) (bdbm_drv_info_t* bdi, bdbm_hlm_re end_req include/bdbm_drv.h /^ void (*end_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon40 end_req include/bdbm_drv.h /^ void (*end_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon41 end_req include/bdbm_drv.h /^ void (*end_req) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* req);$/;" m struct:__anon42 +end_wb_req include/bdbm_drv.h /^ void (*end_wb_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon38 entry tools/nvme/pci.c /^ struct msix_entry *entry;$/;" m struct:nvme_dev typeref:struct:nvme_dev::msix_entry file: entry tools/nvmedrv-v4.5.3/pci.c /^ struct msix_entry *entry;$/;" m struct:nvme_dev typeref:struct:nvme_dev::msix_entry file: erase tools/nvme/lightnvm.c /^ struct nvme_nvm_erase_blk erase;$/;" m union:nvme_nvm_command::__anon50 typeref:struct:nvme_nvm_command::__anon50::nvme_nvm_erase_blk file: erase tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_erase_blk erase;$/;" m union:nvme_nvm_command::__anon53 typeref:struct:nvme_nvm_command::__anon53::nvme_nvm_erase_blk file: -erase_count ftl/algo/abm.h /^ uint32_t erase_count;$/;" m struct:__anon84 +erase_count ftl/algo/abm.h /^ uint32_t erase_count;$/;" m struct:__anon83 eui tools/nvme/nvme.h /^ u8 eui[8];$/;" m struct:nvme_ns eui tools/nvmedrv-v4.5.3/nvme.h /^ u8 eui[8];$/;" m struct:nvme_ns eui_show tools/nvme/core.c /^static ssize_t eui_show(struct device *dev, struct device_attribute *attr,$/;" f file: @@ -2092,7 +2104,7 @@ factory_nblks tools/lightnvm-v4.5.3/sysblk.c /^static int factory_nblks(int nblk factory_nblks tools/lightnvm/sysblk.c /^static int factory_nblks(int nblks)$/;" f file: fd examples/stub_test/main.c /^ int fd;$/;" m struct:__anon23 file: fd examples/stub_test/main.c /^ int fd;$/;" m struct:__anon24 file: -fd frontend/hybrid/blkio_stub.c /^ int fd;$/;" m struct:__anon69 file: +fd frontend/hybrid/blkio_stub.c /^ int fd;$/;" m struct:__anon68 file: fd frontend/user/dev_proxy.c /^ int fd;$/;" m struct:__anon55 file: finish_mapblk_eviction include/bdbm_drv.h /^ void (*finish_mapblk_eviction) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r);$/;" m struct:__anon43 finish_mapblk_load include/bdbm_drv.h /^ void (*finish_mapblk_load) (bdbm_drv_info_t* bdi, bdbm_llm_req_t* r);$/;" m struct:__anon43 @@ -2138,30 +2150,30 @@ fpg_sz tools/nvme/lightnvm.c /^ __le16 fpg_sz;$/;" m struct:nvme_nvm_id_group fpg_sz tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 fpg_sz;$/;" m struct:nvme_nvm_id_group file: free_ctrl tools/nvme/nvme.h /^ void (*free_ctrl)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops free_ctrl tools/nvmedrv-v4.5.3/nvme.h /^ void (*free_ctrl)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops -free_list frontend/hybrid/blkio_proxy_reqs_pool.h /^ struct list_head free_list;$/;" m struct:__anon63 typeref:struct:__anon63::list_head -free_list frontend/kernel/nvm_cache.h /^ struct list_head* free_list;$/;" m struct:__anon57 typeref:struct:__anon57::list_head -free_list ftl/hlm_reqs_pool.h /^ struct list_head free_list;$/;" m struct:__anon71 typeref:struct:__anon71::list_head +free_list frontend/hybrid/blkio_proxy_reqs_pool.h /^ struct list_head free_list;$/;" m struct:__anon62 typeref:struct:__anon62::list_head +free_list frontend/kernel/nvm_cache.h /^ struct list_head* free_list;$/;" m struct:__anon58 typeref:struct:__anon58::list_head +free_list ftl/hlm_reqs_pool.h /^ struct list_head free_list;$/;" m struct:__anon70 typeref:struct:__anon70::list_head free_list tools/lightnvm-v4.5.3/gennvm.h /^ struct list_head free_list; \/* Not used blocks i.e. released$/;" m struct:gen_lun typeref:struct:gen_lun::list_head free_list tools/lightnvm/gennvm.h /^ struct list_head free_list; \/* Not used blocks i.e. released$/;" m struct:gen_lun typeref:struct:gen_lun::list_head free_page common/utils/upage.c /^void free_page (unsigned long addr) {$/;" f -ftl ftl/hlm_dftl.c /^ bdbm_ftl_inf_t* ftl; \/* for hlm_nobuff (it must be on top of this structure) *\/$/;" m struct:__anon94 file: -ftl_lock ftl/algo/block_ftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon83 file: -ftl_lock ftl/algo/dftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon91 file: -ftl_lock ftl/algo/page_ftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon93 file: -ftl_lock ftl/hlm_dftl.c /^ bdbm_sema_t ftl_lock;$/;" m struct:__anon94 file: +ftl ftl/hlm_dftl.c /^ bdbm_ftl_inf_t* ftl; \/* for hlm_nobuff (it must be on top of this structure) *\/$/;" m struct:__anon93 file: +ftl_lock ftl/algo/block_ftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon82 file: +ftl_lock ftl/algo/dftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon90 file: +ftl_lock ftl/algo/page_ftl.c /^ bdbm_spinlock_t ftl_lock;$/;" m struct:__anon92 file: +ftl_lock ftl/hlm_dftl.c /^ bdbm_sema_t ftl_lock;$/;" m struct:__anon93 file: fua tools/nvme/scsi.c /^ u8 fua;$/;" m struct:nvme_trans_io_cdb file: fua tools/nvmedrv-v4.5.3/scsi.c /^ u8 fua;$/;" m struct:nvme_trans_io_cdb file: -gc_bab ftl/algo/block_ftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon83 file: -gc_bab ftl/algo/dftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon91 file: -gc_bab ftl/algo/page_ftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon93 file: +gc_bab ftl/algo/block_ftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon82 file: +gc_bab ftl/algo/dftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon90 file: +gc_bab ftl/algo/page_ftl.c /^ bdbm_abm_block_t** gc_bab;$/;" m struct:__anon92 file: gc_cnt include/bdbm_drv.h /^ atomic64_t gc_cnt;$/;" m struct:__anon44 gc_cur tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_block *cur, *gc_cur;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun:: gc_cur tools/lightnvm/rrpc.h /^ struct rrpc_block *cur, *gc_cur;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun:: gc_erase_cnt include/bdbm_drv.h /^ atomic64_t gc_erase_cnt;$/;" m struct:__anon44 -gc_hlm ftl/algo/block_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon83 file: -gc_hlm ftl/algo/dftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon91 file: -gc_hlm ftl/algo/page_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon93 file: -gc_hlm_w ftl/algo/page_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm_w;$/;" m struct:__anon93 file: +gc_hlm ftl/algo/block_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon82 file: +gc_hlm ftl/algo/dftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon90 file: +gc_hlm ftl/algo/page_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm;$/;" m struct:__anon92 file: +gc_hlm_w ftl/algo/page_ftl.c /^ bdbm_hlm_req_gc_t gc_hlm_w;$/;" m struct:__anon92 file: gc_policy include/params.h /^ uint32_t gc_policy;$/;" m struct:__anon46 gc_read_cnt include/bdbm_drv.h /^ atomic64_t gc_read_cnt;$/;" m struct:__anon44 gc_timer tools/lightnvm-v4.5.3/rrpc.h /^ struct timer_list gc_timer;$/;" m struct:rrpc typeref:struct:rrpc::timer_list @@ -2233,6 +2245,7 @@ get16bits common/3rd/uthash.h 486;" d get16bits common/3rd/uthash.h 490;" d get_bb tools/nvme/lightnvm.c /^ struct nvme_nvm_getbbtbl get_bb;$/;" m union:nvme_nvm_command::__anon50 typeref:struct:nvme_nvm_command::__anon50::nvme_nvm_getbbtbl file: get_bb tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_getbbtbl get_bb;$/;" m union:nvme_nvm_command::__anon53 typeref:struct:nvme_nvm_command::__anon53::nvme_nvm_getbbtbl file: +get_data include/bdbm_drv.h /^ uint8_t* (*get_data) (bdbm_drv_info_t* bdi, int64_t lpa);$/;" m struct:__anon42 get_default_device_params devices/common/dev_params.c /^bdbm_device_params_t get_default_device_params (void)$/;" f get_default_ftl_params ftl/ftl_params.c /^bdbm_ftl_params get_default_ftl_params (void)$/;" f get_free_ppa include/bdbm_drv.h /^ uint32_t (*get_free_ppa) (bdbm_drv_info_t* bdi, int64_t lpa, bdbm_phyaddr_t* ppa);$/;" m struct:__anon43 @@ -2249,15 +2262,15 @@ get_unaligned_be24 tools/nvmedrv-v4.5.3/scsi.c /^static inline u32 get_unaligned get_zeroed_page common/utils/upage.c /^unsigned long get_zeroed_page (int gfp_mask) {$/;" f groups tools/nvme/lightnvm.c /^ struct nvme_nvm_id_group groups[4];$/;" m struct:nvme_nvm_id typeref:struct:nvme_nvm_id::nvme_nvm_id_group file: groups tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_id_group groups[4];$/;" m struct:nvme_nvm_id typeref:struct:nvme_nvm_id::nvme_nvm_id_group file: -hash_lpa ftl/queue/prior_queue.h /^ bdbm_prior_lpa_item_t* hash_lpa; \/* lpa hash *\/$/;" m struct:__anon77 -hash_lpa ftl/queue/rd_prior_queue.h /^ bdbm_rd_prior_lpa_item_t* hash_lpa; \/* lpa hash *\/$/;" m struct:__anon81 +hash_lpa ftl/queue/prior_queue.h /^ bdbm_prior_lpa_item_t* hash_lpa; \/* lpa hash *\/$/;" m struct:__anon76 +hash_lpa ftl/queue/rd_prior_queue.h /^ bdbm_rd_prior_lpa_item_t* hash_lpa; \/* lpa hash *\/$/;" m struct:__anon80 hashv common/3rd/uthash.h /^ unsigned hashv; \/* result of hash-fcn(key) *\/$/;" m struct:UT_hash_handle hb_rw tools/nvme/lightnvm.c /^ struct nvme_nvm_hb_rw hb_rw;$/;" m union:nvme_nvm_command::__anon50 typeref:struct:nvme_nvm_command::__anon50::nvme_nvm_hb_rw file: hb_rw tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_hb_rw hb_rw;$/;" m union:nvme_nvm_command::__anon53 typeref:struct:nvme_nvm_command::__anon53::nvme_nvm_hb_rw file: hd_req_t devices/dumbssd/dev_hynix_nvme.h /^} hd_req_t;$/;" t typeref:struct:__anon17 -hh ftl/hlm_rsd.c /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon95 file: -hh ftl/queue/prior_queue.h /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon76 -hh ftl/queue/rd_prior_queue.h /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon80 +hh ftl/hlm_rsd.c /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon94 file: +hh ftl/queue/prior_queue.h /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon75 +hh ftl/queue/rd_prior_queue.h /^ UT_hash_handle hh; \/* hash header *\/$/;" m struct:__anon79 hh_head common/3rd/uthash.h /^ struct UT_hash_handle *hh_head;$/;" m struct:UT_hash_bucket typeref:struct:UT_hash_bucket::UT_hash_handle hh_next common/3rd/uthash.h /^ struct UT_hash_handle *hh_next; \/* next hh in bucket order *\/$/;" m struct:UT_hash_handle typeref:struct:UT_hash_handle::UT_hash_handle hh_prev common/3rd/uthash.h /^ struct UT_hash_handle *hh_prev; \/* previous hh in bucket order *\/$/;" m struct:UT_hash_handle typeref:struct:UT_hash_handle::UT_hash_handle @@ -2291,10 +2304,11 @@ hlm_nobuf_destroy ftl/hlm_nobuf.c /^void hlm_nobuf_destroy (bdbm_drv_info_t* bdi hlm_nobuf_end_req ftl/hlm_nobuf.c /^void hlm_nobuf_end_req (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr)$/;" f hlm_nobuf_make_req ftl/hlm_nobuf.c /^uint32_t hlm_nobuf_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f hlm_nobuf_make_wb_req ftl/hlm_nobuf.c /^uint32_t hlm_nobuf_make_wb_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr)$/;" f -hlm_req ftl/hlm_rsd.c /^ bdbm_hlm_req_t* hlm_req;$/;" m struct:__anon95 file: -hlm_reqs_pool frontend/df-user/userio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon61 file: -hlm_reqs_pool frontend/hybrid/blkio_stub.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon69 file: -hlm_reqs_pool frontend/kernel/blkio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon60 file: +hlm_req ftl/hlm_rsd.c /^ bdbm_hlm_req_t* hlm_req;$/;" m struct:__anon94 file: +hlm_reqs_pool frontend/df-user/userio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon60 file: +hlm_reqs_pool frontend/hybrid/blkio_stub.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon68 file: +hlm_reqs_pool frontend/kernel/blkio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon59 file: +hlm_reqs_pool frontend/kernel/blkio.h /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon56 hlm_reqs_pool frontend/user/userio.c /^ bdbm_hlm_reqs_pool_t* hlm_reqs_pool;$/;" m struct:__anon54 file: hlm_reqs_pool_allocate_llm_reqs ftl/hlm_reqs_pool.c /^void hlm_reqs_pool_allocate_llm_reqs ($/;" f hlm_reqs_pool_release_llm_reqs ftl/hlm_reqs_pool.c /^void hlm_reqs_pool_release_llm_reqs ($/;" f @@ -2307,17 +2321,18 @@ hlm_rsd_destroy ftl/hlm_rsd.c /^void hlm_rsd_destroy (bdbm_drv_info_t* bdi)$/;" hlm_rsd_end_req ftl/hlm_rsd.c /^void hlm_rsd_end_req ($/;" f hlm_rsd_make_req ftl/hlm_rsd.c /^uint32_t hlm_rsd_make_req ($/;" f hlm_thread ftl/hlm_buf.c /^ bdbm_thread_t* hlm_thread;$/;" m struct:bdbm_hlm_buf_private file: -hlm_thread ftl/hlm_dftl.c /^ bdbm_thread_t* hlm_thread;$/;" m struct:__anon94 file: +hlm_thread ftl/hlm_dftl.c /^ bdbm_thread_t* hlm_thread;$/;" m struct:__anon93 file: hlm_type include/params.h /^ uint32_t hlm_type;$/;" m struct:__anon46 host_blkdev_register_device frontend/kernel/blkdev.c /^uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn)$/;" f host_blkdev_register_device frontend/kernel/blkdev_bak.c /^uint32_t host_blkdev_register_device (bdbm_drv_info_t* bdi, make_request_fn* fn)$/;" f host_blkdev_unregister_block_device frontend/kernel/blkdev.c /^void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi)$/;" f host_blkdev_unregister_block_device frontend/kernel/blkdev_bak.c /^void host_blkdev_unregister_block_device (bdbm_drv_info_t* bdi)$/;" f -host_lock frontend/df-user/userio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon61 file: -host_lock frontend/hybrid/blkio_stub.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon69 file: -host_lock frontend/kernel/blkio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon60 file: +host_lock frontend/df-user/userio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon60 file: +host_lock frontend/hybrid/blkio_stub.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon68 file: +host_lock frontend/kernel/blkio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon59 file: +host_lock frontend/kernel/blkio.h /^ bdbm_sema_t host_lock;$/;" m struct:__anon56 host_lock frontend/user/userio.c /^ bdbm_sema_t host_lock;$/;" m struct:__anon54 file: -host_stub_thread frontend/hybrid/blkio_stub.c /^ bdbm_thread_t* host_stub_thread; \/* polling the blockio proxy *\/$/;" m struct:__anon69 file: +host_stub_thread frontend/hybrid/blkio_stub.c /^ bdbm_thread_t* host_stub_thread; \/* polling the blockio proxy *\/$/;" m struct:__anon68 file: host_thread_fn_read frontend/df-user/main.c /^void host_thread_fn_read (void *data) $/;" f host_thread_fn_read frontend/user/main.c /^void host_thread_fn_read (void *data) $/;" f host_thread_fn_write frontend/df-user/main.c /^void host_thread_fn_write (void *data) $/;" f @@ -2327,20 +2342,19 @@ hrtimer devices/ramdrive/dev_ramssd.h /^ struct hrtimer hrtimer; \/* hrtimer mus hw_comp examples/stringsearch/ss_impl_hw.c /^int hw_comp (const int fd_dev, const char* pattern, const int start_blk, const int blks)$/;" f i common/3rd/utarray.h /^ unsigned i,n;\/* i: index of next available slot, n: num slots *\/$/;" m struct:__anon5 i common/3rd/utstring.h /^ size_t i; \/* index of first unused byte *\/$/;" m struct:__anon8 -i frontend/kernel/nvm_cache.c /^ uint64_t i, n, nr_remains;$/;" v icd common/3rd/utarray.h /^ UT_icd icd; \/* initializer, copy and destructor functions *\/$/;" m struct:__anon5 id examples/stub_test/main.c /^ int32_t id;$/;" m struct:__anon24 file: -id frontend/hybrid/blkio_proxy.c /^ int id;$/;" m struct:__anon65 file: -id frontend/hybrid/blkio_proxy_ioctl.h /^ uint32_t id;$/;" m struct:__anon68 -id ftl/algo/dftl_map.h /^ uint64_t id;$/;" m struct:__anon89 +id frontend/hybrid/blkio_proxy.c /^ int id;$/;" m struct:__anon64 file: +id frontend/hybrid/blkio_proxy_ioctl.h /^ uint32_t id;$/;" m struct:__anon67 +id ftl/algo/dftl_map.h /^ uint64_t id;$/;" m struct:__anon88 id tools/nvme/lightnvm.c /^ __u8 id[8];$/;" m struct:nvme_nvm_lp_tbl file: id tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 id[8];$/;" m struct:nvme_nvm_lp_tbl file: ideal_chain_maxlen common/3rd/uthash.h /^ unsigned ideal_chain_maxlen;$/;" m struct:UT_hash_table identity tools/nvme/lightnvm.c /^ struct nvme_nvm_identity identity;$/;" m union:nvme_nvm_command::__anon50 typeref:struct:nvme_nvm_command::__anon50::nvme_nvm_identity file: identity tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_identity identity;$/;" m union:nvme_nvm_command::__anon53 typeref:struct:nvme_nvm_command::__anon53::nvme_nvm_identity file: ilog2 common/3rd/uilog.c /^int ilog2 (int x) {$/;" f -in_place_rmw ftl/hlm_reqs_pool.h /^ int8_t in_place_rmw; \/* if it is set (1), the FTL uses in-place-rmw *\/$/;" m struct:__anon71 -index frontend/kernel/nvm_cache.h /^ uint64_t index;$/;" m struct:__anon56 +in_place_rmw ftl/hlm_reqs_pool.h /^ int8_t in_place_rmw; \/* if it is set (1), the FTL uses in-place-rmw *\/$/;" m struct:__anon70 +index frontend/kernel/nvm_cache.h /^ int64_t index;$/;" m struct:__anon57 ineff_expands common/3rd/uthash.h /^ unsigned ineff_expands, noexpand;$/;" m struct:UT_hash_table inflight_rq tools/lightnvm-v4.5.3/rrpc.h /^ struct rrpc_inflight_rq inflight_rq;$/;" m struct:rrpc_rq typeref:struct:rrpc_rq::rrpc_inflight_rq inflight_rq tools/lightnvm/rrpc.h /^ struct rrpc_inflight_rq inflight_rq;$/;" m struct:rrpc_rq typeref:struct:rrpc_rq::rrpc_inflight_rq @@ -2366,7 +2380,7 @@ invalidate_lpa include/bdbm_drv.h /^ uint32_t (*invalidate_lpa) (bdbm_drv_info_t io_done devices/dumbssd/dm_dumbssd.c /^static void io_done (void* arg)$/;" f file: io_incapable tools/nvme/nvme.h /^ bool (*io_incapable)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops io_incapable tools/nvmedrv-v4.5.3/nvme.h /^ bool (*io_incapable)(struct nvme_ctrl *ctrl);$/;" m struct:nvme_ctrl_ops -io_unit ftl/hlm_reqs_pool.h /^ int32_t io_unit; \/* bytes *\/$/;" m struct:__anon71 +io_unit ftl/hlm_reqs_pool.h /^ int32_t io_unit; \/* bytes *\/$/;" m struct:__anon70 ioctl_io_done devices/dumbssd/dm_dumbssd.c /^static void ioctl_io_done (void* arg)$/;" f file: iod_list tools/nvme/pci.c /^static __le64 **iod_list(struct request *req)$/;" f file: iod_list tools/nvmedrv-v4.5.3/pci.c /^static __le64 **iod_list(struct request *req)$/;" f file: @@ -2376,7 +2390,7 @@ irqname tools/nvme/pci.c /^ char irqname[24]; \/* nvme4294967295-65535\\0 *\/$/; irqname tools/nvmedrv-v4.5.3/pci.c /^ char irqname[24]; \/* nvme4294967295-65535\\0 *\/$/;" m struct:nvme_queue file: is_gc_needed include/bdbm_drv.h /^ uint8_t (*is_gc_needed) (bdbm_drv_info_t* bdi, int64_t lpa);$/;" m struct:__anon43 is_init devices/ramdrive/dev_ramssd.h /^ uint8_t is_init; \/* 0: not initialized, 1: initialized *\/$/;" m struct:__anon13 -is_under_load ftl/algo/dftl_map.h /^ uint32_t is_under_load;$/;" m struct:__anon89 +is_under_load ftl/algo/dftl_map.h /^ uint32_t is_under_load;$/;" m struct:__anon88 kernel_sector_size include/params.h /^ uint32_t kernel_sector_size;$/;" m struct:__anon46 key common/3rd/uthash.h /^ void *key; \/* ptr to enclosing struct's key *\/$/;" m struct:UT_hash_handle keylen common/3rd/uthash.h /^ unsigned keylen; \/* enclosing struct's key len *\/$/;" m struct:UT_hash_handle @@ -2418,15 +2432,15 @@ lightnvm-y tools/lightnvm-v4.5.3/Makefile /^lightnvm-y := core.o sysblk.o gennvm lightnvm-y tools/lightnvm/Makefile /^lightnvm-y := core.o sysblk.o gennvm.o rrpc.o$/;" m linear_to_generic_addr tools/lightnvm-v4.5.3/rrpc.c /^static struct ppa_addr linear_to_generic_addr(struct nvm_dev *dev,$/;" f file: linear_to_generic_addr tools/lightnvm/rrpc.c /^static struct ppa_addr linear_to_generic_addr(struct nvm_dev *dev,$/;" f file: -list frontend/hybrid/blkio_proxy_reqs_pool.c /^ struct list_head list;$/;" m struct:__anon64 typeref:struct:__anon64::list_head file: -list frontend/kernel/nvm_cache.h /^ struct list_head list; \/* for lru list *\/$/;" m struct:__anon56 typeref:struct:__anon56::list_head -list ftl/algo/abm.h /^ struct list_head list; \/* for list *\/$/;" m struct:__anon84 typeref:struct:__anon84::list_head -list ftl/algo/dftl_map.h /^ struct list_head list;$/;" m struct:__anon89 typeref:struct:__anon89::list_head -list ftl/queue/prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon76 typeref:struct:__anon76::list_head -list ftl/queue/prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon75 typeref:struct:__anon75::list_head -list ftl/queue/queue.h /^ struct list_head list;$/;" m struct:__anon73 typeref:struct:__anon73::list_head -list ftl/queue/rd_prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon80 typeref:struct:__anon80::list_head -list ftl/queue/rd_prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon79 typeref:struct:__anon79::list_head +list frontend/hybrid/blkio_proxy_reqs_pool.c /^ struct list_head list;$/;" m struct:__anon63 typeref:struct:__anon63::list_head file: +list frontend/kernel/nvm_cache.h /^ struct list_head list; \/* for lru list *\/$/;" m struct:__anon57 typeref:struct:__anon57::list_head +list ftl/algo/abm.h /^ struct list_head list; \/* for list *\/$/;" m struct:__anon83 typeref:struct:__anon83::list_head +list ftl/algo/dftl_map.h /^ struct list_head list;$/;" m struct:__anon88 typeref:struct:__anon88::list_head +list ftl/queue/prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon75 typeref:struct:__anon75::list_head +list ftl/queue/prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon74 typeref:struct:__anon74::list_head +list ftl/queue/queue.h /^ struct list_head list;$/;" m struct:__anon72 typeref:struct:__anon72::list_head +list ftl/queue/rd_prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon79 typeref:struct:__anon79::list_head +list ftl/queue/rd_prior_queue.h /^ struct list_head list; \/* list header *\/$/;" m struct:__anon78 typeref:struct:__anon78::list_head list include/bdbm_drv.h /^ struct list_head list; \/* for hlm_reqs_pool *\/$/;" m struct:__anon32 typeref:struct:__anon32::list_head list tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head list;$/;" m struct:rrpc_block typeref:struct:rrpc_block::list_head list tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head list;$/;" m struct:rrpc_inflight_rq typeref:struct:rrpc_inflight_rq::list_head @@ -2450,10 +2464,10 @@ list_for_each_entry_safe_reverse common/3rd/ulist.h 361;" d list_for_each_prev common/3rd/ulist.h 268;" d list_for_each_safe common/3rd/ulist.h 278;" d list_head common/3rd/ulist.h /^struct list_head {$/;" s -list_head_bad ftl/algo/abm.h /^ struct list_head** list_head_bad;$/;" m struct:__anon85 typeref:struct:__anon85::list_head -list_head_clean ftl/algo/abm.h /^ struct list_head** list_head_clean;$/;" m struct:__anon85 typeref:struct:__anon85::list_head -list_head_dirty ftl/algo/abm.h /^ struct list_head** list_head_dirty;$/;" m struct:__anon85 typeref:struct:__anon85::list_head -list_head_free ftl/algo/abm.h /^ struct list_head** list_head_free;$/;" m struct:__anon85 typeref:struct:__anon85::list_head +list_head_bad ftl/algo/abm.h /^ struct list_head** list_head_bad;$/;" m struct:__anon84 typeref:struct:__anon84::list_head +list_head_clean ftl/algo/abm.h /^ struct list_head** list_head_clean;$/;" m struct:__anon84 typeref:struct:__anon84::list_head +list_head_dirty ftl/algo/abm.h /^ struct list_head** list_head_dirty;$/;" m struct:__anon84 typeref:struct:__anon84::list_head +list_head_free ftl/algo/abm.h /^ struct list_head** list_head_free;$/;" m struct:__anon84 typeref:struct:__anon84::list_head list_move common/3rd/ulist.h /^static inline void list_move(struct list_head *list, struct list_head *head)$/;" f list_move_tail common/3rd/ulist.h /^static inline void list_move_tail(struct list_head *list,$/;" f list_prepare_entry common/3rd/ulist.h 311;" d @@ -2491,15 +2505,15 @@ load include/bdbm_drv.h /^ uint32_t (*load) (bdbm_drv_info_t* bdi, const char* f load include/bdbm_drv.h /^ uint32_t (*load) (bdbm_drv_info_t* bdi, const char* fn);$/;" m struct:__anon43 lock devices/bluedbm/dm_bluedbm.c /^ bdbm_spinlock_t lock;$/;" m struct:dm_bluedbm_private file: lock devices/common/dev_stub.c /^ bdbm_spinlock_t lock;$/;" m struct:__anon9 file: -lock frontend/hybrid/blkio_proxy.c /^ bdbm_spinlock_t lock;$/;" m struct:__anon66 file: -lock frontend/hybrid/blkio_proxy_reqs_pool.h /^ bdbm_spinlock_t lock;$/;" m struct:__anon63 +lock frontend/hybrid/blkio_proxy.c /^ bdbm_spinlock_t lock;$/;" m struct:__anon65 file: +lock frontend/hybrid/blkio_proxy_reqs_pool.h /^ bdbm_spinlock_t lock;$/;" m struct:__anon62 lock frontend/user/dev_proxy.c /^ bdbm_spinlock_t lock;$/;" m struct:__anon55 file: -lock ftl/hlm_reqs_pool.h /^ bdbm_spinlock_t lock;$/;" m struct:__anon71 -lock ftl/queue/prior_queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon77 -lock ftl/queue/prior_queue.h /^ uint8_t lock;$/;" m struct:__anon75 -lock ftl/queue/queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon74 -lock ftl/queue/rd_prior_queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon81 -lock ftl/queue/rd_prior_queue.h /^ uint8_t lock;$/;" m struct:__anon79 +lock ftl/hlm_reqs_pool.h /^ bdbm_spinlock_t lock;$/;" m struct:__anon70 +lock ftl/queue/prior_queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon76 +lock ftl/queue/prior_queue.h /^ uint8_t lock;$/;" m struct:__anon74 +lock ftl/queue/queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon73 +lock ftl/queue/rd_prior_queue.h /^ bdbm_spinlock_t lock; \/* queue lock *\/$/;" m struct:__anon80 +lock ftl/queue/rd_prior_queue.h /^ uint8_t lock;$/;" m struct:__anon78 lock tools/lightnvm-v4.5.3/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_block lock tools/lightnvm-v4.5.3/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_inflight lock tools/lightnvm-v4.5.3/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_lun @@ -2509,21 +2523,18 @@ lock tools/lightnvm/rrpc.h /^ spinlock_t lock;$/;" m struct:rrpc_lun lock_busy devices/common/dev_stub.c /^ bdbm_spinlock_t lock_busy;$/;" m struct:__anon9 file: log2_num_buckets common/3rd/uthash.h /^ unsigned num_buckets, log2_num_buckets;$/;" m struct:UT_hash_table logaddr devices/common/dev_stub.h /^ bdbm_logaddr_t logaddr;$/;" m struct:__anon10 -logaddr frontend/kernel/nvm_cache.h /^ bdbm_logaddr_t logaddr;$/;" m struct:__anon56 -logaddr frontend/kernel/nvm_cache_bak/nvm_cache.h /^ bdbm_logaddr_t logaddr;$/;" m struct:__anon58 +logaddr frontend/kernel/nvm_cache.h /^ bdbm_logaddr_t logaddr;$/;" m struct:__anon57 logaddr include/bdbm_drv.h /^ bdbm_logaddr_t logaddr;$/;" m struct:__anon31 +lpa ftl/queue/prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon74 lpa ftl/queue/prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon75 -lpa ftl/queue/prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon76 +lpa ftl/queue/rd_prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon78 lpa ftl/queue/rd_prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon79 -lpa ftl/queue/rd_prior_queue.h /^ uint64_t lpa;$/;" m struct:__anon80 lpa include/bdbm_drv.h /^ uint64_t lpa;$/;" m struct:__anon32::__anon33::__anon35 lpa include/bdbm_drv.h /^ int64_t lpa[BDBM_MAX_PAGES];$/;" m struct:__anon28 lptbl tools/nvme/lightnvm.c /^ struct nvme_nvm_lp_tbl lptbl;$/;" m struct:nvme_nvm_id_group typeref:struct:nvme_nvm_id_group::nvme_nvm_lp_tbl file: lptbl tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_lp_tbl lptbl;$/;" m struct:nvme_nvm_id_group typeref:struct:nvme_nvm_id_group::nvme_nvm_lp_tbl file: -lr frontend/kernel/nvm_cache.c /^ bdbm_llm_req_t* lr; $/;" v -lru_list frontend/kernel/nvm_cache.h /^ struct list_head* lru_list;$/;" m struct:__anon57 typeref:struct:__anon57::list_head -lru_list frontend/kernel/nvm_cache_bak/nvm_cache.h /^ struct list_head lru_list;$/;" m struct:__anon59 typeref:struct:__anon59::list_head -lru_list ftl/algo/dftl_map.h /^ struct list_head lru_list; \/* dirty-list header *\/$/;" m struct:__anon90 typeref:struct:__anon90::list_head +lru_list frontend/kernel/nvm_cache.h /^ struct list_head* lru_list;$/;" m struct:__anon58 typeref:struct:__anon58::list_head +lru_list ftl/algo/dftl_map.h /^ struct list_head lru_list; \/* dirty-list header *\/$/;" m struct:__anon89 typeref:struct:__anon89::list_head lun_len tools/nvme/lightnvm.c /^ __u8 lun_len;$/;" m struct:nvme_nvm_addr_format file: lun_len tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 lun_len;$/;" m struct:nvme_nvm_addr_format file: lun_offset tools/lightnvm-v4.5.3/rrpc.h /^ int lun_offset;$/;" m struct:rrpc @@ -2550,27 +2561,28 @@ make_req include/bdbm_drv.h /^ uint64_t (*make_req) (bdbm_drv_info_t* bdi, bdbm_ make_req include/bdbm_drv.h /^ void (*make_req) (bdbm_drv_info_t* bdi, void* req);$/;" m struct:__anon38 make_reqs include/bdbm_drv.h /^ uint32_t (*make_reqs) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon41 make_reqs include/bdbm_drv.h /^ uint32_t (*make_reqs) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* req);$/;" m struct:__anon42 +make_wb_req include/bdbm_drv.h /^ uint32_t (*make_wb_req) (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr);$/;" m struct:__anon40 manual_event devices/bluedbm/dm_bluedbm.c /^void manual_event (struct dm_bluedbm_private* priv)$/;" f map_lpa_to_ppa include/bdbm_drv.h /^ uint32_t (*map_lpa_to_ppa) (bdbm_drv_info_t* bdi, bdbm_logaddr_t* logaddr, bdbm_phyaddr_t* ppa);$/;" m struct:__anon43 -map_unit ftl/hlm_reqs_pool.h /^ int32_t map_unit; \/* bytes *\/$/;" m struct:__anon71 -mapblk_phyaddr_t ftl/algo/dftl_map.h /^} mapblk_phyaddr_t;$/;" t typeref:struct:__anon87 -mapping_entry_size ftl/algo/dftl_map.h /^ uint64_t mapping_entry_size;$/;" m struct:__anon90 -mapping_entry_t ftl/algo/dftl_map.h /^} mapping_entry_t;$/;" t typeref:struct:__anon88 +map_unit ftl/hlm_reqs_pool.h /^ int32_t map_unit; \/* bytes *\/$/;" m struct:__anon70 +mapblk_phyaddr_t ftl/algo/dftl_map.h /^} mapblk_phyaddr_t;$/;" t typeref:struct:__anon86 +mapping_entry_size ftl/algo/dftl_map.h /^ uint64_t mapping_entry_size;$/;" m struct:__anon89 +mapping_entry_t ftl/algo/dftl_map.h /^} mapping_entry_t;$/;" t typeref:struct:__anon87 mapping_type include/params.h /^ uint32_t mapping_type;$/;" m struct:__anon46 -max_cached_dir_slots ftl/algo/dftl_map.h /^ uint64_t max_cached_dir_slots;$/;" m struct:__anon90 +max_cached_dir_slots ftl/algo/dftl_map.h /^ uint64_t max_cached_dir_slots;$/;" m struct:__anon89 max_hw_sectors tools/nvme/nvme.h /^ u32 max_hw_sectors;$/;" m struct:nvme_ctrl max_hw_sectors tools/nvmedrv-v4.5.3/nvme.h /^ u32 max_hw_sectors;$/;" m struct:nvme_ctrl max_qid tools/nvme/pci.c /^ unsigned max_qid;$/;" m struct:nvme_dev file: max_qid tools/nvmedrv-v4.5.3/pci.c /^ unsigned max_qid;$/;" m struct:nvme_dev file: max_queue_items ftl/queue/queue.c /^static uint64_t max_queue_items = 0;$/;" v file: -max_size ftl/queue/prior_queue.h /^ int64_t max_size;$/;" m struct:__anon77 -max_size ftl/queue/queue.h /^ int64_t max_size;$/;" m struct:__anon74 -max_size ftl/queue/rd_prior_queue.h /^ int64_t max_size;$/;" m struct:__anon81 -max_tag ftl/queue/prior_queue.h /^ uint64_t max_tag;$/;" m struct:__anon76 -max_tag ftl/queue/rd_prior_queue.h /^ uint64_t max_tag;$/;" m struct:__anon80 +max_size ftl/queue/prior_queue.h /^ int64_t max_size;$/;" m struct:__anon76 +max_size ftl/queue/queue.h /^ int64_t max_size;$/;" m struct:__anon73 +max_size ftl/queue/rd_prior_queue.h /^ int64_t max_size;$/;" m struct:__anon80 +max_tag ftl/queue/prior_queue.h /^ uint64_t max_tag;$/;" m struct:__anon75 +max_tag ftl/queue/rd_prior_queue.h /^ uint64_t max_tag;$/;" m struct:__anon79 mccap tools/nvme/lightnvm.c /^ __le32 mccap;$/;" m struct:nvme_nvm_id_group file: mccap tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 mccap;$/;" m struct:nvme_nvm_id_group file: -me ftl/algo/dftl_map.h /^ mapping_entry_t* me; \/* the size of me is equal to a single flash size *\/$/;" m struct:__anon89 +me ftl/algo/dftl_map.h /^ mapping_entry_t* me; \/* the size of me is equal to a single flash size *\/$/;" m struct:__anon88 meta_read_cnt include/bdbm_drv.h /^ atomic64_t meta_read_cnt;$/;" m struct:__anon44 meta_sg tools/nvme/pci.c /^ struct scatterlist meta_sg; \/* metadata requires single contiguous buffer *\/$/;" m struct:nvme_iod typeref:struct:nvme_iod::scatterlist file: meta_sg tools/nvmedrv-v4.5.3/pci.c /^ struct scatterlist meta_sg; \/* metadata requires single contiguous buffer *\/$/;" m struct:nvme_iod typeref:struct:nvme_iod::scatterlist file: @@ -2582,12 +2594,12 @@ metadata tools/nvmedrv-v4.5.3/lightnvm.c /^ __le64 metadata;$/;" m struct:nvme mlc tools/nvme/lightnvm.c /^ struct nvme_nvm_lp_mlc mlc;$/;" m struct:nvme_nvm_lp_tbl typeref:struct:nvme_nvm_lp_tbl::nvme_nvm_lp_mlc file: mlc tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_lp_mlc mlc;$/;" m struct:nvme_nvm_lp_tbl typeref:struct:nvme_nvm_lp_tbl::nvme_nvm_lp_mlc file: mmap_close devices/common/dev_stub.c /^void mmap_close (struct vm_area_struct *vma)$/;" f -mmap_nr_reqs frontend/hybrid/blkio_proxy.c /^ int64_t mmap_nr_reqs;$/;" m struct:__anon66 file: +mmap_nr_reqs frontend/hybrid/blkio_proxy.c /^ int64_t mmap_nr_reqs;$/;" m struct:__anon65 file: mmap_open devices/common/dev_stub.c /^void mmap_open (struct vm_area_struct *vma)$/;" f -mmap_req frontend/hybrid/blkio_proxy_reqs_pool.c /^ bdbm_blkio_proxy_req_t* mmap_req;$/;" m struct:__anon64 file: -mmap_reqs frontend/hybrid/blkio_proxy_reqs_pool.h /^ bdbm_blkio_proxy_req_t* mmap_reqs;$/;" m struct:__anon63 -mmap_reqs frontend/hybrid/blkio_stub.c /^ bdbm_blkio_proxy_req_t* mmap_reqs;$/;" m struct:__anon69 file: -mmap_reqs_buf frontend/hybrid/blkio_proxy.c /^ bdbm_blkio_proxy_req_t* mmap_reqs_buf;$/;" m struct:__anon66 file: +mmap_req frontend/hybrid/blkio_proxy_reqs_pool.c /^ bdbm_blkio_proxy_req_t* mmap_req;$/;" m struct:__anon63 file: +mmap_reqs frontend/hybrid/blkio_proxy_reqs_pool.h /^ bdbm_blkio_proxy_req_t* mmap_reqs;$/;" m struct:__anon62 +mmap_reqs frontend/hybrid/blkio_stub.c /^ bdbm_blkio_proxy_req_t* mmap_reqs;$/;" m struct:__anon68 file: +mmap_reqs_buf frontend/hybrid/blkio_proxy.c /^ bdbm_blkio_proxy_req_t* mmap_reqs_buf;$/;" m struct:__anon65 file: mmap_shared devices/common/dev_stub.c /^ uint8_t* mmap_shared;$/;" m struct:__anon9 file: mmap_shared frontend/user/dev_proxy.c /^ uint8_t* mmap_shared;$/;" m struct:__anon55 file: mmap_shared_size devices/common/dev_stub.c /^ uint64_t mmap_shared_size;$/;" m struct:__anon9 file: @@ -2602,19 +2614,18 @@ model tools/nvme/nvme.h /^ char model[40];$/;" m struct:nvme_ctrl model tools/nvmedrv-v4.5.3/core.c /^nvme_show_function(model);$/;" v model tools/nvmedrv-v4.5.3/nvme.h /^ char model[40];$/;" m struct:nvme_ctrl module_main-y examples/raw-flash/Makefile /^module_main-y := \\$/;" m -module_param include/bdbm_drv.h 44;" d +module_param include/bdbm_drv.h 47;" d mpos tools/nvme/lightnvm.c /^ __le32 mpos;$/;" m struct:nvme_nvm_id_group file: mpos tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 mpos;$/;" m struct:nvme_nvm_id_group file: ms tools/nvme/nvme.h /^ u16 ms;$/;" m struct:nvme_ns ms tools/nvmedrv-v4.5.3/nvme.h /^ u16 ms;$/;" m struct:nvme_ns -mt ftl/algo/block_ftl.c /^ bdbm_block_mapping_entry_t** mt;$/;" m struct:__anon83 file: -mt ftl/algo/dftl.c /^ dftl_mapping_table_t* mt;$/;" m struct:__anon91 file: +mt ftl/algo/block_ftl.c /^ bdbm_block_mapping_entry_t** mt;$/;" m struct:__anon82 file: +mt ftl/algo/dftl.c /^ dftl_mapping_table_t* mt;$/;" m struct:__anon90 file: mtype tools/nvme/lightnvm.c /^ __u8 mtype;$/;" m struct:nvme_nvm_id_group file: mtype tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 mtype;$/;" m struct:nvme_nvm_id_group file: -mutex frontend/hybrid/blkio_proxy.c /^ bdbm_sema_t mutex;$/;" m struct:__anon66 file: +mutex frontend/hybrid/blkio_proxy.c /^ bdbm_sema_t mutex;$/;" m struct:__anon65 file: n common/3rd/utarray.h /^ unsigned i,n;\/* i: index of next available slot, n: num slots *\/$/;" m struct:__anon5 n common/3rd/utstring.h /^ size_t n; \/* allocd size *\/$/;" m struct:__anon8 -n frontend/kernel/nvm_cache.c /^ uint64_t i, n, nr_remains;$/;" v name tools/nvme/nvme.h /^ char name[12];$/;" m struct:nvme_ctrl name tools/nvmedrv-v4.5.3/nvme.h /^ char name[12];$/;" m struct:nvme_ctrl namespaces tools/nvme/nvme.h /^ struct list_head namespaces;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::list_head @@ -2645,34 +2656,35 @@ nonideal_items common/3rd/uthash.h /^ unsigned nonideal_items;$/;" m struct:UT np devices/ramdrive/dev_ramssd.h /^ bdbm_device_params_t* np;$/;" m struct:__anon13 np examples/raw-flash/raw-flash.h /^ bdbm_device_params_t* np;$/;" m struct:__anon20 np examples/stub_test/main.c /^bdbm_device_params_t np;$/;" v -np frontend/kernel/nvm_cache.h /^ bdbm_device_params_t* np;$/;" m struct:__anon57 -np frontend/kernel/nvm_cache_bak/nvm_cache.h /^ bdbm_device_params_t* np;$/;" m struct:__anon59 -np ftl/algo/abm.h /^ bdbm_device_params_t* np;$/;" m struct:__anon85 +np frontend/kernel/nvm_cache.h /^ bdbm_device_params_t* np;$/;" m struct:__anon58 +np ftl/algo/abm.h /^ bdbm_device_params_t* np;$/;" m struct:__anon84 npages tools/nvme/pci.c /^ int npages; \/* In the PRP list. 0 means small pool in use *\/$/;" m struct:nvme_iod file: npages tools/nvmedrv-v4.5.3/pci.c /^ int npages; \/* In the PRP list. 0 means small pool in use *\/$/;" m struct:nvme_iod file: -nr_bad_blks ftl/algo/abm.h /^ uint64_t nr_bad_blks;$/;" m struct:__anon85 -nr_blks_per_seg ftl/algo/block_ftl.c /^ uint64_t nr_blks_per_seg; \/* how many blocks belong to a segment *\/$/;" m struct:__anon83 file: +nr_bad_blks ftl/algo/abm.h /^ uint64_t nr_bad_blks;$/;" m struct:__anon84 +nr_blks_per_seg ftl/algo/block_ftl.c /^ uint64_t nr_blks_per_seg; \/* how many blocks belong to a segment *\/$/;" m struct:__anon82 file: nr_blocks_per_channel include/params.h /^ uint64_t nr_blocks_per_channel;$/;" m struct:__anon47 nr_blocks_per_chip include/params.h /^ uint64_t nr_blocks_per_chip;$/;" m struct:__anon47 nr_blocks_per_ssd include/params.h /^ uint64_t nr_blocks_per_ssd;$/;" m struct:__anon47 -nr_cached_slots ftl/algo/dftl_map.h /^ atomic64_t nr_cached_slots;$/;" m struct:__anon90 +nr_cached_slots ftl/algo/dftl_map.h /^ atomic64_t nr_cached_slots;$/;" m struct:__anon89 nr_channels include/params.h /^ uint64_t nr_channels;$/;" m struct:__anon47 nr_chips_per_channel include/params.h /^ uint64_t nr_chips_per_channel;$/;" m struct:__anon47 nr_chips_per_ssd include/params.h /^ uint64_t nr_chips_per_ssd;$/;" m struct:__anon47 -nr_clean_blks ftl/algo/abm.h /^ uint64_t nr_clean_blks;$/;" m struct:__anon85 -nr_dead_segs ftl/algo/block_ftl.c /^ int64_t nr_dead_segs;$/;" m struct:__anon83 file: -nr_dirty_blks ftl/algo/abm.h /^ uint64_t nr_dirty_blks;$/;" m struct:__anon85 -nr_entires_per_dir_slot ftl/algo/dftl_map.h /^ uint64_t nr_entires_per_dir_slot;$/;" m struct:__anon90 -nr_free_blks ftl/algo/abm.h /^ uint64_t nr_free_blks;$/;" m struct:__anon85 -nr_free_blks_prepared ftl/algo/abm.h /^ uint64_t nr_free_blks_prepared;$/;" m struct:__anon85 -nr_free_pages frontend/kernel/nvm_cache.h /^ uint64_t nr_free_pages;$/;" m struct:__anon57 -nr_host_reqs frontend/df-user/userio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon61 file: -nr_host_reqs frontend/hybrid/blkio_stub.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon69 file: -nr_host_reqs frontend/kernel/blkio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon60 file: +nr_clean_blks ftl/algo/abm.h /^ uint64_t nr_clean_blks;$/;" m struct:__anon84 +nr_dead_segs ftl/algo/block_ftl.c /^ int64_t nr_dead_segs;$/;" m struct:__anon82 file: +nr_dirty_blks ftl/algo/abm.h /^ uint64_t nr_dirty_blks;$/;" m struct:__anon84 +nr_entires_per_dir_slot ftl/algo/dftl_map.h /^ uint64_t nr_entires_per_dir_slot;$/;" m struct:__anon89 +nr_free_blks ftl/algo/abm.h /^ uint64_t nr_free_blks;$/;" m struct:__anon84 +nr_free_blks_prepared ftl/algo/abm.h /^ uint64_t nr_free_blks_prepared;$/;" m struct:__anon84 +nr_free_pages frontend/kernel/nvm_cache.h /^ uint64_t nr_free_pages;$/;" m struct:__anon58 +nr_host_reqs frontend/df-user/userio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon60 file: +nr_host_reqs frontend/hybrid/blkio_stub.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon68 file: +nr_host_reqs frontend/kernel/blkio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon59 file: +nr_host_reqs frontend/kernel/blkio.h /^ atomic_t nr_host_reqs;$/;" m struct:__anon56 nr_host_reqs frontend/user/userio.c /^ atomic_t nr_host_reqs;$/;" m struct:__anon54 file: +nr_inuse_pages frontend/kernel/nvm_cache.h /^ uint64_t nr_inuse_pages; $/;" m struct:__anon58 nr_invalid_pages tools/lightnvm-v4.5.3/rrpc.h /^ unsigned int nr_invalid_pages;$/;" m struct:rrpc_block nr_invalid_pages tools/lightnvm/rrpc.h /^ unsigned int nr_invalid_pages;$/;" m struct:rrpc_block -nr_invalid_subpages ftl/algo/abm.h /^ uint32_t nr_invalid_subpages;$/;" m struct:__anon84 +nr_invalid_subpages ftl/algo/abm.h /^ uint32_t nr_invalid_subpages;$/;" m struct:__anon83 nr_kp_per_fp examples/raw-flash/raw-flash.h /^ uint64_t nr_kp_per_fp;$/;" m struct:__anon20 nr_kp_per_fp examples/stub_test/main.c /^int nr_kp_per_fp = 1;$/;" v nr_llm_reqs include/bdbm_drv.h /^ uint64_t nr_llm_reqs;$/;" m struct:__anon32::__anon33::__anon34 @@ -2684,38 +2696,36 @@ nr_luns tools/lightnvm-v4.5.3/rrpc.h /^ int nr_luns;$/;" m struct:rrpc nr_luns tools/lightnvm/gennvm.h /^ int nr_luns;$/;" m struct:gen_nvm nr_luns tools/lightnvm/rrpc.h /^ int nr_luns;$/;" m struct:rrpc nr_nvm_pages include/params.h /^ uint64_t nr_nvm_pages;$/;" m struct:__anon47 -nr_out_reqs frontend/hybrid/blkio_proxy.c /^ atomic_t nr_out_reqs; \/* # of outstanding requests *\/$/;" m struct:__anon66 file: +nr_out_reqs frontend/hybrid/blkio_proxy.c /^ atomic_t nr_out_reqs; \/* # of outstanding requests *\/$/;" m struct:__anon65 file: nr_pages tools/lightnvm-v4.5.3/rrpc.h /^ unsigned long long nr_pages;$/;" m struct:rrpc nr_pages tools/lightnvm/rrpc.h /^ unsigned long long nr_pages;$/;" m struct:rrpc nr_pages_per_block include/params.h /^ uint64_t nr_pages_per_block;$/;" m struct:__anon47 nr_pages_per_ssd include/params.h /^ uint64_t nr_pages_per_ssd;$/;" m struct:__anon47 -nr_pgs_per_seg ftl/algo/block_ftl.c /^ uint64_t nr_pgs_per_seg; \/* how many pages belong to a segment *\/$/;" m struct:__anon83 file: +nr_pgs_per_seg ftl/algo/block_ftl.c /^ uint64_t nr_pgs_per_seg; \/* how many pages belong to a segment *\/$/;" m struct:__anon82 file: nr_ppas tools/lightnvm-v4.5.3/sysblk.c /^ int nr_ppas;$/;" m struct:sysblk_scan file: nr_ppas tools/lightnvm/sysblk.c /^ int nr_ppas;$/;" m struct:sysblk_scan file: nr_punits examples/raw-flash/raw-flash.h /^ uint64_t nr_punits;$/;" m struct:__anon20 -nr_punits ftl/algo/dftl.c /^ uint64_t nr_punits; $/;" m struct:__anon91 file: -nr_punits ftl/algo/page_ftl.c /^ uint64_t nr_punits;$/;" m struct:__anon93 file: +nr_punits ftl/algo/dftl.c /^ uint64_t nr_punits; $/;" m struct:__anon90 file: +nr_punits ftl/algo/page_ftl.c /^ uint64_t nr_punits;$/;" m struct:__anon92 file: nr_punits ftl/llm_mq.c /^ uint64_t nr_punits;$/;" m struct:bdbm_llm_mq_private file: nr_punits ftl/llm_noq_lock.c /^ uint64_t nr_punits;$/;" m struct:bdbm_llm_noq_lock_private file: nr_punits ftl/llm_rmq.c /^ uint64_t nr_punits;$/;" m struct:bdbm_llm_rmq_private file: -nr_punits_pages ftl/algo/page_ftl.c /^ uint64_t nr_punits_pages;$/;" m struct:__anon93 file: -nr_queues ftl/queue/prior_queue.h /^ uint64_t nr_queues;$/;" m struct:__anon77 -nr_queues ftl/queue/queue.h /^ uint64_t nr_queues;$/;" m struct:__anon74 -nr_queues ftl/queue/rd_prior_queue.h /^ uint64_t nr_queues;$/;" m struct:__anon81 -nr_remains frontend/kernel/nvm_cache.c /^ uint64_t i, n, nr_remains;$/;" v -nr_reqs frontend/hybrid/blkio_proxy_reqs_pool.h /^ int64_t nr_reqs;$/;" m struct:__anon63 +nr_punits_pages ftl/algo/page_ftl.c /^ uint64_t nr_punits_pages;$/;" m struct:__anon92 file: +nr_queues ftl/queue/prior_queue.h /^ uint64_t nr_queues;$/;" m struct:__anon76 +nr_queues ftl/queue/queue.h /^ uint64_t nr_queues;$/;" m struct:__anon73 +nr_queues ftl/queue/rd_prior_queue.h /^ uint64_t nr_queues;$/;" m struct:__anon80 +nr_reqs frontend/hybrid/blkio_proxy_reqs_pool.h /^ int64_t nr_reqs;$/;" m struct:__anon62 nr_rows tools/lightnvm-v4.5.3/sysblk.c /^ int nr_rows;$/;" m struct:sysblk_scan file: nr_rows tools/lightnvm/sysblk.c /^ int nr_rows;$/;" m struct:sysblk_scan file: -nr_segs ftl/algo/block_ftl.c /^ uint64_t nr_segs; \/* a segment is the unit of mapping *\/$/;" m struct:__anon83 file: +nr_segs ftl/algo/block_ftl.c /^ uint64_t nr_segs; \/* a segment is the unit of mapping *\/$/;" m struct:__anon82 file: nr_subpages_per_block include/params.h /^ uint64_t nr_subpages_per_block;$/;" m struct:__anon47 nr_subpages_per_page include/params.h /^ uint64_t nr_subpages_per_page;$/;" m struct:__anon47 nr_subpages_per_ssd include/params.h /^ uint64_t nr_subpages_per_ssd; \/* subpage size must be4 KB *\/$/;" m struct:__anon47 -nr_total_blks frontend/kernel/nvm_cache_bak/nvm_cache.h /^ uint64_t nr_total_blks;$/;" m struct:__anon59 -nr_total_blks ftl/algo/abm.h /^ uint64_t nr_total_blks;$/;" m struct:__anon85 -nr_total_dir_slots ftl/algo/dftl_map.h /^ uint64_t nr_total_dir_slots;$/;" m struct:__anon90 -nr_total_pages frontend/kernel/nvm_cache.h /^ uint64_t nr_total_pages;$/;" m struct:__anon57 -nr_trim_pgs ftl/algo/block_ftl.c /^ uint64_t* nr_trim_pgs;$/;" m struct:__anon83 file: -nr_valid_pgs ftl/algo/block_ftl.c /^ uint64_t* nr_valid_pgs;$/;" m struct:__anon83 file: +nr_total_blks ftl/algo/abm.h /^ uint64_t nr_total_blks;$/;" m struct:__anon84 +nr_total_dir_slots ftl/algo/dftl_map.h /^ uint64_t nr_total_dir_slots;$/;" m struct:__anon89 +nr_total_pages frontend/kernel/nvm_cache.h /^ uint64_t nr_total_pages;$/;" m struct:__anon58 +nr_trim_pgs ftl/algo/block_ftl.c /^ uint64_t* nr_trim_pgs;$/;" m struct:__anon82 file: +nr_valid_pgs ftl/algo/block_ftl.c /^ uint64_t* nr_valid_pgs;$/;" m struct:__anon82 file: ns_cmp tools/nvme/core.c /^static int ns_cmp(void *priv, struct list_head *a, struct list_head *b)$/;" f file: ns_cmp tools/nvmedrv-v4.5.3/core.c /^static int ns_cmp(void *priv, struct list_head *a, struct list_head *b)$/;" f file: ns_id tools/nvme/nvme.h /^ unsigned ns_id;$/;" m struct:nvme_ns @@ -2843,7 +2853,6 @@ nvm_get_blk_unlocked tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_get_blk_unlocked) nvm_get_blk_unlocked tools/lightnvm/core.c /^struct nvm_block *nvm_get_blk_unlocked(struct nvm_dev *dev, struct nvm_lun *lun,$/;" f nvm_get_sysblock tools/lightnvm-v4.5.3/sysblk.c /^int nvm_get_sysblock(struct nvm_dev *dev, struct nvm_sb_info *info)$/;" f nvm_get_sysblock tools/lightnvm/sysblk.c /^int nvm_get_sysblock(struct nvm_dev *dev, struct nvm_sb_info *info)$/;" f -nvm_idx frontend/kernel/nvm_cache.c /^ uint64_t nvm_idx = -1;$/;" v nvm_init tools/lightnvm-v4.5.3/core.c /^static int nvm_init(struct nvm_dev *dev)$/;" f file: nvm_init tools/lightnvm/core.c /^static int nvm_init(struct nvm_dev *dev)$/;" f file: nvm_init_mgr tools/lightnvm-v4.5.3/core.c /^struct nvmm_type *nvm_init_mgr(struct nvm_dev *dev)$/;" f @@ -2866,8 +2875,7 @@ nvm_ioctl_get_devices tools/lightnvm-v4.5.3/core.c /^static long nvm_ioctl_get_d nvm_ioctl_get_devices tools/lightnvm/core.c /^static long nvm_ioctl_get_devices(struct file *file, void __user *arg)$/;" f file: nvm_ioctl_info tools/lightnvm-v4.5.3/core.c /^static long nvm_ioctl_info(struct file *file, void __user *arg)$/;" f file: nvm_ioctl_info tools/lightnvm/core.c /^static long nvm_ioctl_info(struct file *file, void __user *arg)$/;" f file: -nvm_lock frontend/kernel/nvm_cache.h /^ bdbm_spinlock_t nvm_lock;$/;" m struct:__anon57 -nvm_lock frontend/kernel/nvm_cache_bak/nvm_cache.h /^ bdbm_spinlock_t nvm_lock;$/;" m struct:__anon59 +nvm_lock frontend/kernel/nvm_cache.h /^ bdbm_sema_t nvm_lock;$/;" m struct:__anon58 nvm_mod_exit tools/lightnvm-v4.5.3/core.c /^module_exit(nvm_mod_exit);$/;" v nvm_mod_exit tools/lightnvm-v4.5.3/core.c /^static void __exit nvm_mod_exit(void)$/;" f file: nvm_mod_exit tools/lightnvm/core.c /^module_exit(nvm_mod_exit);$/;" v @@ -2925,7 +2933,6 @@ nvm_submit_ppa tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_submit_ppa);$/;" v nvm_submit_ppa tools/lightnvm/core.c /^int nvm_submit_ppa(struct nvm_dev *dev, struct ppa_addr *ppa, int nr_ppas,$/;" f nvm_sysblk_to_cpu tools/lightnvm-v4.5.3/sysblk.c /^void nvm_sysblk_to_cpu(struct nvm_sb_info *info, struct nvm_system_block *sb)$/;" f nvm_sysblk_to_cpu tools/lightnvm/sysblk.c /^void nvm_sysblk_to_cpu(struct nvm_sb_info *info, struct nvm_system_block *sb)$/;" f -nvm_tbl frontend/kernel/nvm_cache.c /^ bdbm_nvm_page_t* nvm_tbl = p->ptr_nvm_tbl;$/;" v nvm_unregister tools/lightnvm-v4.5.3/core.c /^EXPORT_SYMBOL(nvm_unregister);$/;" v nvm_unregister tools/lightnvm-v4.5.3/core.c /^void nvm_unregister(char *disk_name)$/;" f nvm_unregister tools/lightnvm/core.c /^EXPORT_SYMBOL(nvm_unregister);$/;" v @@ -3546,9 +3553,8 @@ open_list tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head open_list; \/* In-use open_list tools/lightnvm/rrpc.h /^ struct list_head open_list; \/* In-use open blocks. These are blocks$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::list_head ops tools/nvme/nvme.h /^ const struct nvme_ctrl_ops *ops;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::nvme_ctrl_ops ops tools/nvmedrv-v4.5.3/nvme.h /^ const struct nvme_ctrl_ops *ops;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::nvme_ctrl_ops -p frontend/kernel/nvm_cache.c /^ bdbm_nvm_dev_private_t* p = _nvm_dev.ptr_private;$/;" v page_main_size include/params.h /^ uint64_t page_main_size;$/;" m struct:__anon47 -page_no ftl/algo/dftl_map.h /^ uint64_t page_no;$/;" m struct:__anon87 +page_no ftl/algo/dftl_map.h /^ uint64_t page_no;$/;" m struct:__anon86 page_no include/bdbm_drv.h /^ uint64_t page_no;$/;" m struct:__anon25 page_oob_size include/params.h /^ uint64_t page_oob_size;$/;" m struct:__anon47 page_pool tools/lightnvm-v4.5.3/rrpc.h /^ mempool_t *page_pool;$/;" m struct:rrpc @@ -3576,9 +3582,9 @@ pg_offset tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 pg_offset;$/;" m struct:nvme ph_rw tools/nvme/lightnvm.c /^ struct nvme_nvm_ph_rw ph_rw;$/;" m union:nvme_nvm_command::__anon50 typeref:struct:nvme_nvm_command::__anon50::nvme_nvm_ph_rw file: ph_rw tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_ph_rw ph_rw;$/;" m union:nvme_nvm_command::__anon53 typeref:struct:nvme_nvm_command::__anon53::nvme_nvm_ph_rw file: phyaddr devices/common/dev_stub.h /^ bdbm_phyaddr_t phyaddr;$/;" m struct:__anon10 -phyaddr ftl/algo/dftl_map.h /^ bdbm_phyaddr_t phyaddr; \/* the physical location where mapping entries are stored *\/$/;" m struct:__anon89 -phyaddr ftl/algo/dftl_map.h /^ mapblk_phyaddr_t phyaddr; \/* physical location *\/$/;" m struct:__anon88 -phyaddr ftl/algo/page_ftl.c /^ bdbm_phyaddr_t phyaddr; \/* physical location *\/$/;" m struct:__anon92 file: +phyaddr ftl/algo/dftl_map.h /^ bdbm_phyaddr_t phyaddr; \/* the physical location where mapping entries are stored *\/$/;" m struct:__anon88 +phyaddr ftl/algo/dftl_map.h /^ mapblk_phyaddr_t phyaddr; \/* physical location *\/$/;" m struct:__anon87 +phyaddr ftl/algo/page_ftl.c /^ bdbm_phyaddr_t phyaddr; \/* physical location *\/$/;" m struct:__anon91 file: phyaddr include/bdbm_drv.h /^ bdbm_phyaddr_t phyaddr;$/;" m struct:__anon31 phyaddr_dst include/bdbm_drv.h /^ bdbm_phyaddr_t phyaddr_dst;$/;" m struct:__anon31 phyaddr_src include/bdbm_drv.h /^ bdbm_phyaddr_t phyaddr_src;$/;" m struct:__anon31 @@ -3654,9 +3660,9 @@ pmu_update_w_tot ftl/pmu.c /^void pmu_update_w_tot (bdbm_drv_info_t* bdi, bdbm_s poffset tools/lightnvm-v4.5.3/rrpc.h /^ u64 poffset; \/* physical page offset *\/$/;" m struct:rrpc poffset tools/lightnvm/rrpc.h /^ u64 poffset; \/* physical page offset *\/$/;" m struct:rrpc pollwq devices/common/dev_stub.c /^ wait_queue_head_t pollwq;$/;" m struct:__anon9 file: -pollwq frontend/hybrid/blkio_proxy.c /^ wait_queue_head_t pollwq;$/;" m struct:__anon66 file: -pool_item_t frontend/hybrid/blkio_proxy_reqs_pool.c /^} pool_item_t;$/;" t typeref:struct:__anon64 file: -pool_size ftl/hlm_reqs_pool.h /^ int32_t pool_size; \/* # of items *\/$/;" m struct:__anon71 +pollwq frontend/hybrid/blkio_proxy.c /^ wait_queue_head_t pollwq;$/;" m struct:__anon65 file: +pool_item_t frontend/hybrid/blkio_proxy_reqs_pool.c /^} pool_item_t;$/;" t typeref:struct:__anon63 file: +pool_size ftl/hlm_reqs_pool.h /^ int32_t pool_size; \/* # of items *\/$/;" m struct:__anon70 ppaf tools/nvme/lightnvm.c /^ struct nvme_nvm_addr_format ppaf;$/;" m struct:nvme_nvm_id typeref:struct:nvme_nvm_id::nvme_nvm_addr_format file: ppaf tools/nvmedrv-v4.5.3/lightnvm.c /^ struct nvme_nvm_addr_format ppaf;$/;" m struct:nvme_nvm_id typeref:struct:nvme_nvm_id::nvme_nvm_addr_format file: ppas tools/lightnvm-v4.5.3/sysblk.c /^ struct ppa_addr ppas[MAX_SYSBLKS * MAX_BLKS_PR_SYSBLK];\/* all sysblks *\/$/;" m struct:sysblk_scan typeref:struct:sysblk_scan::ppa_addr file: @@ -3708,8 +3714,8 @@ prp_page_pool tools/nvmedrv-v4.5.3/pci.c /^ struct dma_pool *prp_page_pool;$/;" prp_small_pool tools/nvme/pci.c /^ struct dma_pool *prp_small_pool;$/;" m struct:nvme_dev typeref:struct:nvme_dev::dma_pool file: prp_small_pool tools/nvmedrv-v4.5.3/pci.c /^ struct dma_pool *prp_small_pool;$/;" m struct:nvme_dev typeref:struct:nvme_dev::dma_pool file: ps frontend/user/dev_proxy.c /^ uint8_t* ps; \/* punit status *\/$/;" m struct:__anon55 file: -pst ftl/algo/abm.h /^ babm_abm_subpage_t* pst; \/* a page status table; used when the FTL requires *\/$/;" m struct:__anon84 -pst ftl/algo/block_ftl.c /^ uint8_t* pst; \/* status of pages in a block *\/$/;" m struct:__anon82 file: +pst ftl/algo/abm.h /^ babm_abm_subpage_t* pst; \/* a page status table; used when the FTL requires *\/$/;" m struct:__anon83 +pst ftl/algo/block_ftl.c /^ uint8_t* pst; \/* status of pages in a block *\/$/;" m struct:__anon81 file: ptr_dm_inf include/bdbm_drv.h /^ bdbm_dm_inf_t* ptr_dm_inf;$/;" m struct:_bdbm_drv_info_t ptr_ftl_inf ftl/hlm_buf.c /^ bdbm_ftl_inf_t* ptr_ftl_inf; \/* for hlm_nobuff (it must be on top of this structure) *\/$/;" m struct:bdbm_hlm_buf_private file: ptr_ftl_inf include/bdbm_drv.h /^ bdbm_ftl_inf_t* ptr_ftl_inf;$/;" m struct:_bdbm_drv_info_t @@ -3717,13 +3723,10 @@ ptr_hlm_inf include/bdbm_drv.h /^ bdbm_hlm_inf_t* ptr_hlm_inf;$/;" m struct:_bdb ptr_hlm_req include/bdbm_drv.h /^ void* ptr_hlm_req;$/;" m struct:__anon31 ptr_host_inf include/bdbm_drv.h /^ bdbm_host_inf_t* ptr_host_inf; $/;" m struct:_bdbm_drv_info_t ptr_llm_inf include/bdbm_drv.h /^ bdbm_llm_inf_t* ptr_llm_inf;$/;" m struct:_bdbm_drv_info_t -ptr_mapping_table ftl/algo/page_ftl.c /^ bdbm_page_mapping_entry_t* ptr_mapping_table;$/;" m struct:__anon93 file: +ptr_mapping_table ftl/algo/page_ftl.c /^ bdbm_page_mapping_entry_t* ptr_mapping_table;$/;" m struct:__anon92 file: ptr_nvm_inf include/bdbm_drv.h /^ bdbm_nvm_inf_t* ptr_nvm_inf;$/;" m struct:_bdbm_drv_info_t -ptr_nvm_tbl frontend/kernel/nvm_cache.h /^ bdbm_nvm_page_t* ptr_nvm_tbl;$/;" m struct:__anon57 -ptr_nvm_tbl frontend/kernel/nvm_cache_bak/nvm_cache.h /^ bdbm_nvm_block_t* ptr_nvm_tbl;$/;" m struct:__anon59 -ptr_nvmram frontend/kernel/nvm_cache.h /^ void* ptr_nvmram; \/* DRAM memory for nvm *\/$/;" m struct:__anon57 -ptr_nvmram frontend/kernel/nvm_cache_bak/nvm_cache.h /^ void* ptr_nvmram; \/* DRAM memory for nvm *\/$/;" m struct:__anon59 -ptr_nvmram_data frontend/kernel/nvm_cache_bak/nvm_cache.h /^ void* ptr_nvmram_data;$/;" m struct:__anon58 +ptr_nvm_tbl frontend/kernel/nvm_cache.h /^ bdbm_nvm_page_t* ptr_nvm_tbl;$/;" m struct:__anon58 +ptr_nvmram frontend/kernel/nvm_cache.h /^ void* ptr_nvmram; \/* DRAM memory for nvm *\/$/;" m struct:__anon58 ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon38 ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon39 ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon40 @@ -3733,9 +3736,9 @@ ptr_private include/bdbm_drv.h /^ void* ptr_private;$/;" m struct:__anon43 ptr_punits devices/ramdrive/dev_ramssd.h /^ dev_ramssd_punit_t* ptr_punits; \/* parallel units *\/$/;" m struct:__anon13 ptr_qitem include/bdbm_drv.h /^ void* ptr_qitem;$/;" m struct:__anon31 ptr_req devices/ramdrive/dev_ramssd.h /^ void* ptr_req;$/;" m struct:__anon11 -ptr_req ftl/queue/prior_queue.h /^ void* ptr_req;$/;" m struct:__anon75 -ptr_req ftl/queue/queue.h /^ void* ptr_req;$/;" m struct:__anon73 -ptr_req ftl/queue/rd_prior_queue.h /^ void* ptr_req;$/;" m struct:__anon79 +ptr_req ftl/queue/prior_queue.h /^ void* ptr_req;$/;" m struct:__anon74 +ptr_req ftl/queue/queue.h /^ void* ptr_req;$/;" m struct:__anon72 +ptr_req ftl/queue/rd_prior_queue.h /^ void* ptr_req;$/;" m struct:__anon78 ptr_ssdram devices/ramdrive/dev_ramssd.h /^ void* ptr_ssdram; \/* DRAM memory for SSD *\/$/;" m struct:__anon13 punit devices/common/dev_stub.c /^ uint64_t punit;$/;" m struct:__anon9 file: punit frontend/user/dev_proxy.c /^ int punit;$/;" m struct:__anon55 file: @@ -3753,7 +3756,7 @@ punit_status examples/raw-flash/raw-flash.h /^ atomic_t* punit_status;$/;" m str punit_status examples/stub_test/main.c /^ uint8_t* punit_status;$/;" m struct:__anon23 file: q devices/dumbssd/dev_hynix_nvme.h /^ struct request_queue *q;$/;" m struct:__anon16 typeref:struct:__anon16::request_queue q ftl/hlm_buf.c /^ bdbm_queue_t* q;$/;" m struct:bdbm_hlm_buf_private file: -q ftl/hlm_dftl.c /^ bdbm_queue_t* q;$/;" m struct:__anon94 file: +q ftl/hlm_dftl.c /^ bdbm_queue_t* q;$/;" m struct:__anon93 file: q ftl/llm_mq.c /^ bdbm_prior_queue_t* q;$/;" m struct:bdbm_llm_mq_private file: q ftl/llm_rmq.c /^ bdbm_rd_prior_queue_t* q;$/;" m struct:bdbm_llm_rmq_private file: q_db tools/nvme/pci.c /^ u32 __iomem *q_db;$/;" m struct:nvme_queue file: @@ -3766,14 +3769,14 @@ q_dmadev tools/nvme/pci.c /^ struct device *q_dmadev;$/;" m struct:nvme_queue ty q_dmadev tools/nvmedrv-v4.5.3/pci.c /^ struct device *q_dmadev;$/;" m struct:nvme_queue typeref:struct:nvme_queue::device file: q_lock tools/nvme/pci.c /^ spinlock_t q_lock;$/;" m struct:nvme_queue file: q_lock tools/nvmedrv-v4.5.3/pci.c /^ spinlock_t q_lock;$/;" m struct:nvme_queue file: -qic ftl/queue/prior_queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon77 -qic ftl/queue/queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon74 -qic ftl/queue/rd_prior_queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon81 +qic ftl/queue/prior_queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon76 +qic ftl/queue/queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon73 +qic ftl/queue/rd_prior_queue.h /^ int64_t qic; \/* queue item count *\/$/;" m struct:__anon80 qid tools/nvme/pci.c /^ u16 qid;$/;" m struct:nvme_queue file: qid tools/nvmedrv-v4.5.3/pci.c /^ u16 qid;$/;" m struct:nvme_queue file: -qlh ftl/queue/prior_queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon77 typeref:struct:__anon77::list_head -qlh ftl/queue/queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon74 typeref:struct:__anon74::list_head -qlh ftl/queue/rd_prior_queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon81 typeref:struct:__anon81::list_head +qlh ftl/queue/prior_queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon76 typeref:struct:__anon76::list_head +qlh ftl/queue/queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon73 typeref:struct:__anon73::list_head +qlh ftl/queue/rd_prior_queue.h /^ struct list_head* qlh; \/* queue list header *\/$/;" m struct:__anon80 typeref:struct:__anon80::list_head queue devices/dumbssd/dev_hynix_nvme.h /^ struct request_queue *queue;$/;" m struct:__anon16 typeref:struct:__anon16::request_queue queue frontend/kernel/blkdev.c /^ struct request_queue *queue;$/;" m struct:bdbm_device_t typeref:struct:bdbm_device_t::request_queue file: queue frontend/kernel/blkdev_bak.c /^ struct request_queue *queue;$/;" m struct:bdbm_device_t typeref:struct:bdbm_device_t::request_queue file: @@ -3801,9 +3804,9 @@ rblk tools/lightnvm/rrpc.h /^ struct rrpc_block *rblk;$/;" m struct:rrpc_block_g rblock_max_invalid tools/lightnvm-v4.5.3/rrpc.c /^static struct rrpc_block *rblock_max_invalid(struct rrpc_block *ra,$/;" f file: rblock_max_invalid tools/lightnvm/rrpc.c /^static struct rrpc_block *rblock_max_invalid(struct rrpc_block *ra,$/;" f file: rbuf devices/bluedbm/dm_bluedbm.c /^ uint8_t** rbuf;$/;" m struct:dm_bluedbm_private file: -rd_prior_iotype_t ftl/queue/rd_prior_queue.h /^} rd_prior_iotype_t;$/;" t typeref:enum:__anon78 +rd_prior_iotype_t ftl/queue/rd_prior_queue.h /^} rd_prior_iotype_t;$/;" t typeref:enum:__anon77 ref_cnt devices/common/dev_stub.c /^ uint32_t ref_cnt;$/;" m struct:__anon9 file: -ref_cnt frontend/hybrid/blkio_proxy.c /^ atomic_t ref_cnt; \/* # of the user-level FTLs that are linked to the kernel *\/$/;" m struct:__anon66 file: +ref_cnt frontend/hybrid/blkio_proxy.c /^ atomic_t ref_cnt; \/* # of the user-level FTLs that are linked to the kernel *\/$/;" m struct:__anon65 file: reg_read32 tools/nvme/nvme.h /^ int (*reg_read32)(struct nvme_ctrl *ctrl, u32 off, u32 *val);$/;" m struct:nvme_ctrl_ops reg_read32 tools/nvmedrv-v4.5.3/nvme.h /^ int (*reg_read32)(struct nvme_ctrl *ctrl, u32 off, u32 *val);$/;" m struct:nvme_ctrl_ops reg_read64 tools/nvme/nvme.h /^ int (*reg_read64)(struct nvme_ctrl *ctrl, u32 off, u64 *val);$/;" m struct:nvme_ctrl_ops @@ -3824,7 +3827,7 @@ req_type include/bdbm_drv.h /^ uint32_t req_type;$/;" m struct:__anon37 reqs examples/stub_test/main.c /^bdbm_llm_req_t** reqs = NULL;$/;" v reqs tools/lightnvm-v4.5.3/rrpc.h /^ struct list_head reqs;$/;" m struct:rrpc_inflight typeref:struct:rrpc_inflight::list_head reqs tools/lightnvm/rrpc.h /^ struct list_head reqs;$/;" m struct:rrpc_inflight typeref:struct:rrpc_inflight::list_head -reqs_pool frontend/hybrid/blkio_proxy.c /^ bdbm_proxy_reqs_pool_t* reqs_pool;$/;" m struct:__anon66 file: +reqs_pool frontend/hybrid/blkio_proxy.c /^ bdbm_proxy_reqs_pool_t* reqs_pool;$/;" m struct:__anon65 file: request_intersects tools/lightnvm-v4.5.3/rrpc.h /^static inline int request_intersects(struct rrpc_inflight_rq *r,$/;" f request_intersects tools/lightnvm/rrpc.h /^static inline int request_intersects(struct rrpc_inflight_rq *r,$/;" f requeue_bios tools/lightnvm-v4.5.3/rrpc.h /^ struct bio_list requeue_bios;$/;" m struct:rrpc typeref:struct:rrpc::bio_list @@ -4064,7 +4067,7 @@ run_sync_test examples/raw-flash/kmain.c /^static void run_sync_test (bdbm_devic rvsd1 tools/nvme/lightnvm.c /^ __le32 rvsd1;$/;" m struct:nvme_nvm_bb_tbl file: rvsd1 tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 rvsd1;$/;" m struct:nvme_nvm_bb_tbl file: rw devices/dumbssd/dev_hynix_nvme.h /^ int rw;$/;" m struct:__anon17 -rw_pg_ofs ftl/algo/block_ftl.c /^ int64_t rw_pg_ofs; \/* recently-written page offset *\/$/;" m struct:__anon82 file: +rw_pg_ofs ftl/algo/block_ftl.c /^ int64_t rw_pg_ofs; \/* recently-written page offset *\/$/;" m struct:__anon81 file: scan_badblocks include/bdbm_drv.h /^ uint32_t (*scan_badblocks) (bdbm_drv_info_t* bdi);$/;" m struct:__anon43 scan_ppa_idx tools/lightnvm-v4.5.3/sysblk.c /^static inline int scan_ppa_idx(int row, int blkid)$/;" f file: scan_ppa_idx tools/lightnvm/sysblk.c /^static inline int scan_ppa_idx(int row, int blkid)$/;" f file: @@ -4080,10 +4083,10 @@ sect_len tools/nvme/lightnvm.c /^ __u8 sect_len;$/;" m struct:nvme_nvm_addr_fo sect_len tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 sect_len;$/;" m struct:nvme_nvm_addr_format file: sect_offset tools/nvme/lightnvm.c /^ __u8 sect_offset;$/;" m struct:nvme_nvm_addr_format file: sect_offset tools/nvmedrv-v4.5.3/lightnvm.c /^ __u8 sect_offset;$/;" m struct:nvme_nvm_addr_format file: -seg_buf ftl/hlm_rsd.c /^ segment_buf_t* seg_buf;$/;" m struct:__anon96 file: -seg_no ftl/hlm_rsd.c /^ uint32_t seg_no;$/;" m struct:__anon95 file: -segment_buf_t ftl/hlm_rsd.c /^} segment_buf_t;$/;" t typeref:struct:__anon95 file: -sem frontend/hybrid/blkio_proxy.c /^ struct semaphore sem;$/;" m struct:__anon66 typeref:struct:__anon66::semaphore file: +seg_buf ftl/hlm_rsd.c /^ segment_buf_t* seg_buf;$/;" m struct:__anon95 file: +seg_no ftl/hlm_rsd.c /^ uint32_t seg_no;$/;" m struct:__anon94 file: +segment_buf_t ftl/hlm_rsd.c /^} segment_buf_t;$/;" t typeref:struct:__anon94 file: +sem frontend/hybrid/blkio_proxy.c /^ struct semaphore sem;$/;" m struct:__anon65 typeref:struct:__anon65::semaphore file: serial tools/nvme/core.c /^nvme_show_function(serial);$/;" v serial tools/nvme/nvme.h /^ char serial[20];$/;" m struct:nvme_ctrl serial tools/nvmedrv-v4.5.3/core.c /^nvme_show_function(serial);$/;" v @@ -4113,7 +4116,7 @@ slba tools/nvmedrv-v4.5.3/scsi.c /^ __be64 slba;$/;" m struct:scsi_unmap_blk_des snapshot include/params.h /^ uint32_t snapshot; \/* 0: disable (default), 1: enable *\/$/;" m struct:__anon46 sos tools/nvme/lightnvm.c /^ __le16 sos;$/;" m struct:nvme_nvm_id_group file: sos tools/nvmedrv-v4.5.3/lightnvm.c /^ __le16 sos;$/;" m struct:nvme_nvm_id_group file: -sp_off ftl/algo/page_ftl.c /^ uint8_t sp_off;$/;" m struct:__anon92 file: +sp_off ftl/algo/page_ftl.c /^ uint8_t sp_off;$/;" m struct:__anon91 file: spba tools/nvme/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_erase_blk file: spba tools/nvme/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_getbbtbl file: spba tools/nvme/lightnvm.c /^ __le64 spba;$/;" m struct:nvme_nvm_hb_rw file: @@ -4135,22 +4138,21 @@ sq_head tools/nvmedrv-v4.5.3/pci.c /^ u16 sq_head;$/;" m struct:nvme_queue file: sq_tail tools/nvme/pci.c /^ u16 sq_tail;$/;" m struct:nvme_queue file: sq_tail tools/nvmedrv-v4.5.3/pci.c /^ u16 sq_tail;$/;" m struct:nvme_queue file: start common/utils/utime.h /^ ktime_t start;$/;" m struct:__anon3 -status frontend/kernel/nvm_cache.h /^ uint8_t status;$/;" m struct:__anon56 -status frontend/kernel/nvm_cache_bak/nvm_cache.h /^ uint8_t status;$/;" m struct:__anon58 -status ftl/algo/abm.h /^ uint8_t status; \/* ABM_BLK_STATUS *\/$/;" m struct:__anon84 -status ftl/algo/block_ftl.c /^ uint8_t status; \/* BDBM_BFTL_BLOCK_STATUS *\/$/;" m struct:__anon82 file: -status ftl/algo/dftl_map.h /^ dir_stat status;$/;" m struct:__anon89 -status ftl/algo/dftl_map.h /^ uint8_t status;$/;" m struct:__anon88 -status ftl/algo/page_ftl.c /^ uint8_t status; \/* BDBM_PFTL_PAGE_STATUS *\/$/;" m struct:__anon92 file: +status frontend/kernel/nvm_cache.h /^ uint8_t status;$/;" m struct:__anon57 +status ftl/algo/abm.h /^ uint8_t status; \/* ABM_BLK_STATUS *\/$/;" m struct:__anon83 +status ftl/algo/block_ftl.c /^ uint8_t status; \/* BDBM_BFTL_BLOCK_STATUS *\/$/;" m struct:__anon81 file: +status ftl/algo/dftl_map.h /^ dir_stat status;$/;" m struct:__anon88 +status ftl/algo/dftl_map.h /^ uint8_t status;$/;" m struct:__anon87 +status ftl/algo/page_ftl.c /^ uint8_t status; \/* BDBM_PFTL_PAGE_STATUS *\/$/;" m struct:__anon91 file: stop examples/stub_test/main.c /^ int stop;$/;" m struct:__anon23 file: -stop frontend/hybrid/blkio_stub.c /^ int stop;$/;" m struct:__anon69 file: +stop frontend/hybrid/blkio_stub.c /^ int stop;$/;" m struct:__anon68 file: stop frontend/user/dev_proxy.c /^ int stop;$/;" m struct:__anon55 file: store include/bdbm_drv.h /^ uint32_t (*store) (bdbm_drv_info_t* bdi, const char* fn);$/;" m struct:__anon42 store include/bdbm_drv.h /^ uint32_t (*store) (bdbm_drv_info_t* bdi, const char* fn);$/;" m struct:__anon43 str ftl/pmu.c /^char str[1024];$/;" v stripe_size tools/nvme/nvme.h /^ u32 stripe_size;$/;" m struct:nvme_ctrl stripe_size tools/nvmedrv-v4.5.3/nvme.h /^ u32 stripe_size;$/;" m struct:nvme_ctrl -stt frontend/hybrid/blkio_proxy_ioctl.h /^ bdbm_proxy_req_status_t stt;$/;" m struct:__anon68 +stt frontend/hybrid/blkio_proxy_ioctl.h /^ bdbm_proxy_req_status_t stt;$/;" m struct:__anon67 submit_io_done devices/dumbssd/dev_hynix_nvme.c /^static void submit_io_done (struct request *rq, int error)$/;" f file: subsystem tools/nvme/nvme.h /^ bool subsystem;$/;" m struct:nvme_ctrl subsystem tools/nvme/pci.c /^ bool subsystem;$/;" m struct:nvme_dev file: @@ -4167,8 +4169,8 @@ sysblk_get_host_blks tools/lightnvm/sysblk.c /^static int sysblk_get_host_blks(s sysblk_scan tools/lightnvm-v4.5.3/sysblk.c /^struct sysblk_scan {$/;" s file: sysblk_scan tools/lightnvm/sysblk.c /^struct sysblk_scan {$/;" s file: sz common/3rd/utarray.h /^ size_t sz;$/;" m struct:__anon4 -tag ftl/queue/prior_queue.h /^ uint64_t tag;$/;" m struct:__anon75 -tag ftl/queue/rd_prior_queue.h /^ uint64_t tag;$/;" m struct:__anon79 +tag ftl/queue/prior_queue.h /^ uint64_t tag;$/;" m struct:__anon74 +tag ftl/queue/rd_prior_queue.h /^ uint64_t tag;$/;" m struct:__anon78 tags tools/nvme/pci.c /^ struct blk_mq_tags **tags;$/;" m struct:nvme_queue typeref:struct:nvme_queue::blk_mq_tags file: tags tools/nvmedrv-v4.5.3/pci.c /^ struct blk_mq_tags **tags;$/;" m struct:nvme_queue typeref:struct:nvme_queue::blk_mq_tags file: tagset tools/nvme/nvme.h /^ struct blk_mq_tag_set *tagset;$/;" m struct:nvme_ctrl typeref:struct:nvme_ctrl::blk_mq_tag_set @@ -4194,7 +4196,7 @@ tdresv tools/nvme/lightnvm.c /^ __le32 tdresv;$/;" m struct:nvme_nvm_bb_tbl file tdresv tools/nvmedrv-v4.5.3/lightnvm.c /^ __le32 tdresv;$/;" m struct:nvme_nvm_bb_tbl file: temp_main examples/raw-flash/kmain.c /^uint8_t* temp_main = NULL;$/;" v temp_oob examples/raw-flash/kmain.c /^uint8_t* temp_oob = NULL;$/;" v -test frontend/df-user/dev_proxy.c /^ int test;$/;" m struct:__anon62 file: +test frontend/df-user/dev_proxy.c /^ int test;$/;" m struct:__anon61 file: test_erase tools/dumbssd-format/dumbssd-format.c /^void test_erase (int32_t dev_h, int die, int block)$/;" f test_erase tools/dumbssd-test/dumbssd-test.c /^void test_erase (int32_t dev_h, int die, int block)$/;" f test_read tools/dumbssd-format/dumbssd-format.c /^void test_read (int32_t dev_h, int die, int block, int wu)$/;" f @@ -4229,7 +4231,7 @@ time_w_q include/bdbm_drv.h /^ uint64_t time_w_q;$/;" m struct:__anon44 time_w_sw include/bdbm_drv.h /^ uint64_t time_w_sw;$/;" m struct:__anon44 time_w_tot include/bdbm_drv.h /^ uint64_t time_w_tot;$/;" m struct:__anon44 timeval_subtract common/utils/utime.c /^int timeval_subtract ($/;" f -tmp_hr ftl/hlm_nobuf.c /^ bdbm_hlm_req_t tmp_hr;$/;" m struct:__anon70 file: +tmp_hr ftl/hlm_nobuf.c /^ bdbm_hlm_req_t tmp_hr;$/;" m struct:__anon69 file: to_nvme_dev tools/nvme/pci.c /^static inline struct nvme_dev *to_nvme_dev(struct nvme_ctrl *ctrl)$/;" f file: to_nvme_dev tools/nvmedrv-v4.5.3/pci.c /^static inline struct nvme_dev *to_nvme_dev(struct nvme_ctrl *ctrl)$/;" f file: total_blocks tools/lightnvm-v4.5.3/rrpc.h /^ unsigned long total_blocks;$/;" m struct:rrpc @@ -4249,7 +4251,7 @@ tt_rrpc tools/lightnvm-v4.5.3/rrpc.c /^static struct nvm_tgt_type tt_rrpc = {$/; tt_rrpc tools/lightnvm-v4.5.3/rrpc.c /^static struct nvm_tgt_type tt_rrpc;$/;" v typeref:struct:nvm_tgt_type file: tt_rrpc tools/lightnvm/rrpc.c /^static struct nvm_tgt_type tt_rrpc = {$/;" v typeref:struct:nvm_tgt_type file: tt_rrpc tools/lightnvm/rrpc.c /^static struct nvm_tgt_type tt_rrpc;$/;" v typeref:struct:nvm_tgt_type file: -type ftl/queue/rd_prior_queue.h /^ rd_prior_iotype_t type;$/;" m struct:__anon79 +type ftl/queue/rd_prior_queue.h /^ rd_prior_iotype_t type;$/;" m struct:__anon78 type tools/nvme/nvme.h /^ int type;$/;" m struct:nvme_ns type tools/nvmedrv-v4.5.3/nvme.h /^ int type;$/;" m struct:nvme_ns uint32_t common/3rd/uthash.h /^typedef unsigned int uint32_t;$/;" t @@ -4264,8 +4266,8 @@ use_cmb_sqes tools/nvme/pci.c /^static bool use_cmb_sqes = true;$/;" v file: use_cmb_sqes tools/nvmedrv-v4.5.3/pci.c /^static bool use_cmb_sqes = true;$/;" v file: use_threaded_interrupts tools/nvme/pci.c /^static int use_threaded_interrupts;$/;" v file: use_threaded_interrupts tools/nvmedrv-v4.5.3/pci.c /^static int use_threaded_interrupts;$/;" v file: -used_list frontend/hybrid/blkio_proxy_reqs_pool.h /^ struct list_head used_list;$/;" m struct:__anon63 typeref:struct:__anon63::list_head -used_list ftl/hlm_reqs_pool.h /^ struct list_head used_list;$/;" m struct:__anon71 typeref:struct:__anon71::list_head +used_list frontend/hybrid/blkio_proxy_reqs_pool.h /^ struct list_head used_list;$/;" m struct:__anon62 typeref:struct:__anon62::list_head +used_list ftl/hlm_reqs_pool.h /^ struct list_head used_list;$/;" m struct:__anon70 typeref:struct:__anon70::list_head used_list tools/lightnvm-v4.5.3/gennvm.h /^ struct list_head used_list; \/* In-use blocks *\/$/;" m struct:gen_lun typeref:struct:gen_lun::list_head used_list tools/lightnvm/gennvm.h /^ struct list_head used_list; \/* In-use blocks *\/$/;" m struct:gen_lun typeref:struct:gen_lun::list_head user devices/bluedbm/dm_bluedbm.c /^ void* user;$/;" m struct:__anon15 file: @@ -4359,14 +4361,14 @@ wbuf devices/bluedbm/dm_bluedbm.c /^ uint8_t** wbuf;$/;" m struct:dm_bluedbm_pri wl_policy include/params.h /^ uint32_t wl_policy;$/;" m struct:__anon46 work devices/bluedbm/dm_bluedbm.c /^ struct work_struct work; \/* it must be at the end of structre *\/$/;" m struct:__anon15 typeref:struct:__anon15::work_struct file: work devices/ramdrive/dev_ramssd.h /^ struct work_struct work; \/* it must be at the end of structre *\/$/;" m struct:__anon12 typeref:struct:__anon12::work_struct -work frontend/hybrid/blkio_proxy.c /^ struct work_struct work; \/* it must be at the end of structre *\/$/;" m struct:__anon65 typeref:struct:__anon65::work_struct file: +work frontend/hybrid/blkio_proxy.c /^ struct work_struct work; \/* it must be at the end of structre *\/$/;" m struct:__anon64 typeref:struct:__anon64::work_struct file: works devices/bluedbm/dm_bluedbm.c /^ dm_bluedbm_wq_t works;$/;" m struct:dm_bluedbm_private file: works devices/ramdrive/dev_ramssd.h /^ dev_ramssd_wq_t works;$/;" m struct:__anon13 -works frontend/hybrid/blkio_proxy.c /^ bdbm_blkio_proxy_wq_t* works;$/;" m struct:__anon66 file: +works frontend/hybrid/blkio_proxy.c /^ bdbm_blkio_proxy_wq_t* works;$/;" m struct:__anon65 file: wq common/utils/uthread.h /^ wait_queue_head_t wq;$/;" m struct:__anon1 wq devices/bluedbm/dm_bluedbm.c /^ struct workqueue_struct *wq;$/;" m struct:dm_bluedbm_private typeref:struct:dm_bluedbm_private::workqueue_struct file: wq devices/ramdrive/dev_ramssd.h /^ struct workqueue_struct *wq;$/;" m struct:__anon13 typeref:struct:__anon13::workqueue_struct -wq frontend/hybrid/blkio_proxy.c /^ struct workqueue_struct *wq;$/;" m struct:__anon66 typeref:struct:__anon66::workqueue_struct file: +wq frontend/hybrid/blkio_proxy.c /^ struct workqueue_struct *wq;$/;" m struct:__anon65 typeref:struct:__anon65::workqueue_struct file: ws_gc tools/lightnvm-v4.5.3/rrpc.h /^ struct work_struct ws_gc;$/;" m struct:rrpc_block_gc typeref:struct:rrpc_block_gc::work_struct ws_gc tools/lightnvm-v4.5.3/rrpc.h /^ struct work_struct ws_gc;$/;" m struct:rrpc_lun typeref:struct:rrpc_lun::work_struct ws_gc tools/lightnvm/rrpc.h /^ struct work_struct ws_gc;$/;" m struct:rrpc_block_gc typeref:struct:rrpc_block_gc::work_struct From f640903bcb59ca62612e0efc912f46485a733497 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 30 Oct 2016 18:31:08 +0900 Subject: [PATCH 40/51] nvm cache - v1 full version (with nvm statistics) --- frontend/kernel/nvm_cache.c | 50 ++++++++++++++++++++++++++++++------- frontend/kernel/nvm_cache.h | 8 ++++++ ftl/hlm_reqs_pool.c | 1 + include/bdbm_drv.h | 2 +- 4 files changed, 51 insertions(+), 10 deletions(-) diff --git a/frontend/kernel/nvm_cache.c b/frontend/kernel/nvm_cache.c index 0012d05..dccad9b 100644 --- a/frontend/kernel/nvm_cache.c +++ b/frontend/kernel/nvm_cache.c @@ -168,6 +168,15 @@ uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi){ p->nr_inuse_pages = 0; p->np = np; + p->nr_total_access = 0; + p->nr_total_write = 0; + p->nr_total_read = 0; + p->nr_write = 0; + p->nr_read = 0; + p->nr_total_hit = 0; + p->nr_evict = 0; + + /* alloc ptr_nvmram_data: ptr_nvm_data */ if((p->ptr_nvmram = __nvm_alloc_nvmram (np)) == NULL) { bdbm_error ("__alloc_nvmram failed"); @@ -257,6 +266,7 @@ int64_t bdbm_nvm_find_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) // bdbm_msg("nvm_tbl[%llu] lpa = %d, tlpa = %d", i, nvm_tbl[i].logaddr.lpa[0], lpa); if(nvm_tbl[i].logaddr.lpa[0] == lpa){ // bdbm_msg("hit: lpa = %llu", lpa); + p->nr_total_hit++; found = i; break; } @@ -273,6 +283,7 @@ uint64_t bdbm_nvm_read_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) int64_t nvm_idx = -1; uint8_t* ptr_nvmram_addr = NULL; + p->nr_total_read++; /* search data */ nvm_idx = bdbm_nvm_find_data(bdi, lr); @@ -282,6 +293,8 @@ uint64_t bdbm_nvm_read_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) return 0; // not found } + p->nr_read++; + /* get data addr */ bdbm_bug_on(np->nr_subpages_per_page != 1); bdbm_bug_on(np->page_main_size / KERNEL_PAGE_SIZE != 1); @@ -336,6 +349,8 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) #ifndef NVM_CACHE_WB return -1; #endif + p->nr_evict++; + bdbm_bug_on(!list_empty(p->free_list)); epage = list_last_entry(p->lru_list, bdbm_nvm_page_t, list); bdbm_bug_on(epage == NULL); @@ -365,14 +380,11 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) if(bdi->ptr_hlm_inf->make_wb_req (bdi, hr) != 0) { bdbm_error ("'bdi->ptr_hlm_inf->make_req' failed"); } - bdbm_sema_unlock (&bp->host_lock); - - /* wait for write back to be completed */ - /* no need to wait. assume kp_ptr[0] gets allocated buffer in nvm */ -// bdbm_sema_lock (&hr->done); -// bdbm_sema_unlock (&hr->done); #ifdef NVM_CACHE_DEBUG +#if 0 +// 여기는 쓰기 전에 읽어와서 문제가 되는 듯. 의미 없을듯. 보내고 반영되기 전 or 다른 애가 변경한 후에 읽을 수 있음. + if(bdi->ptr_dm_inf->get_data){ ptr_ramssd_data = bdi->ptr_dm_inf->get_data(bdi, epage->logaddr.lpa[0]); } @@ -382,9 +394,19 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) if (memcmp(edata_ptr, ptr_ramssd_data, KPAGE_SIZE)!=0){ bdbm_msg("[EUNJI] [DATA CORRUPTION] lpa = %d", epage->logaddr.lpa[0]); __display_hex_values_all_range (edata_ptr, ptr_ramssd_data, 16); + bdbm_bug_on(1); } #endif - +#endif + + bdbm_sema_unlock (&bp->host_lock); + + /* wait for write back to be completed */ + /* no need to wait. assume kp_ptr[0] gets allocated buffer in nvm */ +// bdbm_sema_lock (&hr->done); +// bdbm_sema_unlock (&hr->done); + + // bdbm_hlm_reqs_pool_free_item (bp->hlm_reqs_pool, hr); // moved to hlm_end_wb_req @@ -426,6 +448,7 @@ uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) uint8_t* ptr_nvmram_addr = NULL; uint64_t i; + p->nr_total_write++; /* find data */ nvm_idx = bdbm_nvm_find_data(bdi, lr); @@ -436,8 +459,8 @@ uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) if((nvm_idx = bdbm_nvm_alloc_slot(bdi, lr)) < 0) return 0; } - if(nvm_idx < 0) - bdbm_msg("failed to alloc nvm buffer"); + + p->nr_write++; /* get data addr */ bdbm_bug_on(np->nr_subpages_per_page != 1); @@ -514,8 +537,17 @@ int64_t bdbm_nvm_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr){ bdbm_sema_lock (&p->nvm_lock); + /* for nr_llm_reqs */ for (n = 0; n < hr->nr_llm_reqs; n++) { + + p->nr_total_access++; + + if ((p->nr_total_access % 500) == 0){ + bdbm_msg("nvm: total access = %llu, total read = %llu, read hit = %llu, total_write = %llu, write hit = %llu, hit = %llu, evict = %llu", + p->nr_total_access, p->nr_total_read, p->nr_read, p->nr_total_write, p->nr_write, p->nr_total_hit, p->nr_evict); + } + lr = &hr->llm_reqs[n]; if(lr->req_type == REQTYPE_READ){ diff --git a/frontend/kernel/nvm_cache.h b/frontend/kernel/nvm_cache.h index e8352ca..84ed392 100644 --- a/frontend/kernel/nvm_cache.h +++ b/frontend/kernel/nvm_cache.h @@ -45,6 +45,14 @@ typedef struct { uint64_t nr_free_pages; uint64_t nr_inuse_pages; + uint64_t nr_total_access; + uint64_t nr_total_write; + uint64_t nr_total_read; + uint64_t nr_write; + uint64_t nr_read; + uint64_t nr_total_hit; + uint64_t nr_evict; + void* ptr_nvmram; /* DRAM memory for nvm */ // bdbm_nvm_page_t* ptr_nvm_rb_tree; bdbm_nvm_page_t* ptr_nvm_tbl; diff --git a/ftl/hlm_reqs_pool.c b/ftl/hlm_reqs_pool.c index fe50a77..92d1894 100644 --- a/ftl/hlm_reqs_pool.c +++ b/ftl/hlm_reqs_pool.c @@ -375,6 +375,7 @@ static int __hlm_reqs_pool_create_wb_req ( if(memcmp(ptr_data, ptr_fm->kp_ptr[0], KPAGE_SIZE) != 0){ bdbm_msg("hlm_reqs_pool_create_wb_req: DATA CORRUPTION"); __display_hex_values_all_range(ptr_data, ptr_fm->kp_ptr[0], 16); + bdbm_bug_on(1); } #endif diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 262292a..097a448 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -2,7 +2,7 @@ #define NVM_CACHE_WB #define NVM_CACHE_SKIP #define NVM_CACHE_DEBUG -#define NVM_CACHE_TRIM +//#define NVM_CACHE_TRIM /* The MIT License (MIT) From 35f81a5d9d3c2ab3a92d0ea896fb12239ea5123f Mon Sep 17 00:00:00 2001 From: root Date: Sun, 30 Oct 2016 21:04:00 +0900 Subject: [PATCH 41/51] ssd size setup --- devices/common/dev_params.c | 19 ++++++++++++++++++- frontend/kernel/nvm_cache.c | 2 +- ftl/algo/page_ftl.c | 4 +--- include/bdbm_drv.h | 2 +- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index 00f54dd..1ee15dd 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -45,17 +45,34 @@ THE SOFTWARE. enum BDBM_DEFAULT_NAND_PARAMS { NAND_PAGE_SIZE = 4096*BDBM_MAX_PAGES, NAND_PAGE_OOB_SIZE = 64, +//#ifdef SSD_SIZE_8G + NR_PAGES_PER_BLOCK = 128, + NR_BLOCKS_PER_CHIP = 256, + NR_CHIPS_PER_CHANNEL = 16, + NR_CHANNELS = 8, +//#endif +#if 0 +//#ifdef SSD_SIZE_8G + NR_PAGES_PER_BLOCK = 128, + NR_BLOCKS_PER_CHIP = 256, + NR_CHIPS_PER_CHANNEL = 1, + NR_CHANNELS = 64, +//#endif +#endif +#if 0 NR_PAGES_PER_BLOCK = 64, NR_BLOCKS_PER_CHIP = 128, NR_CHIPS_PER_CHANNEL = 1, NR_CHANNELS = 64, +#endif NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ NAND_PAGE_PROG_TIME_US = 500, /* 1.3ms */ NAND_PAGE_READ_TIME_US = 100, /* 100us */ NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ #ifdef NVM_CACHE - NR_NVM_PAGES = 262144, /* 4KB * 262144 = 1G / 4KB * 1048576 = 4GB */ +// NR_NVM_PAGES = 262144, /* 4KB * 262144 = 1G / 4KB * 1048576 = 4GB */ + NR_NVM_PAGES = 1024, /* 4KB * 262144 = 1G / 4KB * 1048576 = 4GB */ NVM_PAGE_SIZE = 4096, /* 4KB */ #endif }; diff --git a/frontend/kernel/nvm_cache.c b/frontend/kernel/nvm_cache.c index dccad9b..476b169 100644 --- a/frontend/kernel/nvm_cache.c +++ b/frontend/kernel/nvm_cache.c @@ -543,7 +543,7 @@ int64_t bdbm_nvm_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr){ p->nr_total_access++; - if ((p->nr_total_access % 500) == 0){ + if ((p->nr_total_access % 5000) == 0){ bdbm_msg("nvm: total access = %llu, total read = %llu, read hit = %llu, total_write = %llu, write hit = %llu, hit = %llu, evict = %llu", p->nr_total_access, p->nr_total_read, p->nr_read, p->nr_total_write, p->nr_write, p->nr_total_hit, p->nr_evict); } diff --git a/ftl/algo/page_ftl.c b/ftl/algo/page_ftl.c index 0d7bd7c..c87b897 100644 --- a/ftl/algo/page_ftl.c +++ b/ftl/algo/page_ftl.c @@ -494,7 +494,7 @@ uint8_t bdbm_page_ftl_is_gc_needed (bdbm_drv_info_t* bdi, int64_t lpa) uint64_t nr_free_blks = bdbm_abm_get_nr_free_blocks (p->bai); /* invoke gc when remaining free blocks are less than 1% of total blocks */ - if ((nr_free_blks * 100 / nr_total_blks) <= 20) { + if ((nr_free_blks * 100 / nr_total_blks) <= 2) { return 1; } @@ -820,11 +820,9 @@ uint32_t bdbm_page_ftl_do_gc (bdbm_drv_info_t* bdi, int64_t lpa) } } - /* bdbm_msg ("----------------------------------------------"); bdbm_msg ("gc-victim: %llu pages, %llu blocks, %llu us", nr_llm_reqs, nr_gc_blks, bdbm_stopwatch_get_elapsed_time_us (&sw)); - */ /* wait until Q in llm becomes empty * TODO: it might be possible to further optimize this */ diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 097a448..262292a 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -2,7 +2,7 @@ #define NVM_CACHE_WB #define NVM_CACHE_SKIP #define NVM_CACHE_DEBUG -//#define NVM_CACHE_TRIM +#define NVM_CACHE_TRIM /* The MIT License (MIT) From ba345f091b4f820cd4d63a853f86baedc553d316 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 30 Oct 2016 21:31:58 +0900 Subject: [PATCH 42/51] with pmu statistics --- frontend/kernel/nvm_cache.c | 9 ++++++++- ftl/pmu.c | 30 ++++++++++++++++++++++++++++++ include/bdbm_drv.h | 9 +++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/frontend/kernel/nvm_cache.c b/frontend/kernel/nvm_cache.c index 476b169..638cbeb 100644 --- a/frontend/kernel/nvm_cache.c +++ b/frontend/kernel/nvm_cache.c @@ -267,6 +267,7 @@ int64_t bdbm_nvm_find_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) if(nvm_tbl[i].logaddr.lpa[0] == lpa){ // bdbm_msg("hit: lpa = %llu", lpa); p->nr_total_hit++; + atomic64_inc(&bdi->pm.nvm_h_cnt); found = i; break; } @@ -284,6 +285,7 @@ uint64_t bdbm_nvm_read_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) uint8_t* ptr_nvmram_addr = NULL; p->nr_total_read++; + atomic64_inc(&bdi->pm.nvm_r_cnt); /* search data */ nvm_idx = bdbm_nvm_find_data(bdi, lr); @@ -294,6 +296,7 @@ uint64_t bdbm_nvm_read_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) } p->nr_read++; + atomic64_inc(&bdi->pm.nvm_r_cnt); /* get data addr */ bdbm_bug_on(np->nr_subpages_per_page != 1); @@ -350,6 +353,7 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) return -1; #endif p->nr_evict++; + atomic64_inc(&bdi->pm.nvm_ev_cnt); bdbm_bug_on(!list_empty(p->free_list)); epage = list_last_entry(p->lru_list, bdbm_nvm_page_t, list); @@ -449,6 +453,7 @@ uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) uint64_t i; p->nr_total_write++; + atomic64_inc (&bdi->pm.nvm_w_cnt); /* find data */ nvm_idx = bdbm_nvm_find_data(bdi, lr); @@ -461,6 +466,7 @@ uint64_t bdbm_nvm_write_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) } p->nr_write++; + atomic64_inc (&bdi->pm.nvm_wh_cnt); /* get data addr */ bdbm_bug_on(np->nr_subpages_per_page != 1); @@ -542,8 +548,9 @@ int64_t bdbm_nvm_make_req (bdbm_drv_info_t* bdi, bdbm_hlm_req_t* hr){ for (n = 0; n < hr->nr_llm_reqs; n++) { p->nr_total_access++; + atomic64_inc(&bdi->pm.nvm_a_cnt); - if ((p->nr_total_access % 5000) == 0){ + if ((p->nr_total_access % 100000) == 0){ bdbm_msg("nvm: total access = %llu, total read = %llu, read hit = %llu, total_write = %llu, write hit = %llu, hit = %llu, evict = %llu", p->nr_total_access, p->nr_total_read, p->nr_read, p->nr_total_write, p->nr_write, p->nr_total_hit, p->nr_evict); } diff --git a/ftl/pmu.c b/ftl/pmu.c index 84a51c2..58b867e 100644 --- a/ftl/pmu.c +++ b/ftl/pmu.c @@ -65,6 +65,16 @@ void pmu_create (bdbm_drv_info_t* bdi) atomic64_set (&bdi->pm.gc_read_cnt, 0); atomic64_set (&bdi->pm.gc_write_cnt, 0); +#ifdef NVM_CACHE + atomic64_set (&bdi->pm.nvm_a_cnt, 0); + atomic64_set (&bdi->pm.nvm_w_cnt, 0); + atomic64_set (&bdi->pm.nvm_r_cnt, 0); + atomic64_set (&bdi->pm.nvm_wh_cnt, 0); + atomic64_set (&bdi->pm.nvm_rh_cnt, 0); + atomic64_set (&bdi->pm.nvm_h_cnt, 0); + atomic64_set (&bdi->pm.nvm_ev_cnt, 0); +#endif + /* elapsed times taken to handle normal I/Os */ bdi->pm.time_r_sw = 0; bdi->pm.time_r_q = 0; @@ -531,6 +541,26 @@ void pmu_display (bdbm_drv_info_t* bdi) bdbm_memset (format, 0x00, sizeof (format)); } +#ifdef NVM_CACHE + bdbm_msg ("[8] NVM I/Os"); + bdbm_msg ("# of total accesses: %ld", + atomic64_read (&bdi->pm.nvm_a_cnt)); + bdbm_msg ("# of total write reqests: %ld", + atomic64_read (&bdi->pm.nvm_w_cnt)); + bdbm_msg ("# of total read requests: %ld", + atomic64_read (&bdi->pm.nvm_r_cnt)); + bdbm_msg ("# of write requests serviced by nvm: %ld", + atomic64_read (&bdi->pm.nvm_wh_cnt)); + bdbm_msg ("# of read requests serviced by nvm: %ld", + atomic64_read (&bdi->pm.nvm_rh_cnt)); + bdbm_msg ("# of total requests serviced by nvm: %ld", + atomic64_read (&bdi->pm.nvm_h_cnt)); + bdbm_msg ("# of evict from nvm: %ld", + atomic64_read (&bdi->pm.nvm_ev_cnt)); + + bdbm_msg (""); +#endif + bdbm_msg ("-----------------------------------------------"); bdbm_msg ("-----------------------------------------------"); } diff --git a/include/bdbm_drv.h b/include/bdbm_drv.h index 262292a..4ab7a48 100644 --- a/include/bdbm_drv.h +++ b/include/bdbm_drv.h @@ -404,6 +404,15 @@ typedef struct { atomic64_t gc_write_cnt; atomic64_t meta_read_cnt; atomic64_t meta_write_cnt; +#ifdef NVM_CACHE + atomic64_t nvm_a_cnt; // all + atomic64_t nvm_w_cnt; // all write + atomic64_t nvm_r_cnt; // all read + atomic64_t nvm_wh_cnt; // write hit (include miss + alloc) + atomic64_t nvm_rh_cnt; // read hit + atomic64_t nvm_h_cnt; // rh_cnt + real wh + atomic64_t nvm_ev_cnt; // evict +#endif uint64_t time_r_sw; uint64_t time_r_q; uint64_t time_r_tot; From d63410dd14eac3e16c88753e6e27b0be0549353b Mon Sep 17 00:00:00 2001 From: root Date: Mon, 14 Nov 2016 14:02:05 +0900 Subject: [PATCH 43/51] nvm_tbl --- devices/common/dev_params.c | 6 +- exec.sh | 8 +- frontend/kernel/nvm_cache.c | 48 +- frontend/kernel/nvm_cache.h | 6 +- ftl/algo/page_ftl.c | 4 +- ftl/pmu.c | 16 +- result/extract.sh | 17 + result/fio.nonvm.dmesg | 1554 +++++++++++++++ result/fio.nonvm.rslt | 39 + result/fio.toff_n1g.dmesg | 599 ++++++ result/fio.toff_n1g.rslt | 45 + result/fio.toff_n2g.dmesg | 136 ++ result/fio.toff_n2g.rslt | 44 + result/fio.toff_n500m.dmesg | 922 +++++++++ result/fio.toff_n500m.rslt | 45 + result/fio.ton_n1g.dmesg | 1271 ++++++++++++ result/fio.ton_n1g.rslt | 44 + result/fio.ton_n2g.dmesg | 1843 ++++++++++++++++++ result/fio.ton_n2g.rslt | 44 + result/fio.ton_n500m.dmesg | 137 ++ result/fio.ton_n500m.rslt | 45 + result/fio_toff_o1_n1g.dmesg | 540 +++++ result/fio_toff_o1_n1g.rslt | 44 + result/fio_toff_o1_n2g.dmesg | 622 ++++++ result/fio_toff_o1_n2g.rslt | 44 + result/fio_toff_o1_n500m.dmesg | 1185 +++++++++++ result/fio_toff_o1_n500m.rslt | 43 + result/fio_ton_o1_n1g.dmesg | 1153 +++++++++++ result/fio_ton_o1_n1g.rslt | 44 + result/fio_ton_o1_n2g.dmesg | 3355 ++++++++++++++++++++++++++++++++ result/fio_ton_o1_n2g.rslt | 43 + result/fio_ton_o1_n500m.dmesg | 1823 +++++++++++++++++ result/fio_ton_o1_n500m.rslt | 44 + 33 files changed, 15796 insertions(+), 17 deletions(-) create mode 100755 result/extract.sh create mode 100644 result/fio.nonvm.dmesg create mode 100644 result/fio.nonvm.rslt create mode 100644 result/fio.toff_n1g.dmesg create mode 100644 result/fio.toff_n1g.rslt create mode 100644 result/fio.toff_n2g.dmesg create mode 100644 result/fio.toff_n2g.rslt create mode 100644 result/fio.toff_n500m.dmesg create mode 100644 result/fio.toff_n500m.rslt create mode 100644 result/fio.ton_n1g.dmesg create mode 100644 result/fio.ton_n1g.rslt create mode 100644 result/fio.ton_n2g.dmesg create mode 100644 result/fio.ton_n2g.rslt create mode 100644 result/fio.ton_n500m.dmesg create mode 100644 result/fio.ton_n500m.rslt create mode 100644 result/fio_toff_o1_n1g.dmesg create mode 100644 result/fio_toff_o1_n1g.rslt create mode 100644 result/fio_toff_o1_n2g.dmesg create mode 100644 result/fio_toff_o1_n2g.rslt create mode 100644 result/fio_toff_o1_n500m.dmesg create mode 100644 result/fio_toff_o1_n500m.rslt create mode 100644 result/fio_ton_o1_n1g.dmesg create mode 100644 result/fio_ton_o1_n1g.rslt create mode 100644 result/fio_ton_o1_n2g.dmesg create mode 100644 result/fio_ton_o1_n2g.rslt create mode 100644 result/fio_ton_o1_n500m.dmesg create mode 100644 result/fio_ton_o1_n500m.rslt diff --git a/devices/common/dev_params.c b/devices/common/dev_params.c index 1ee15dd..462318d 100644 --- a/devices/common/dev_params.c +++ b/devices/common/dev_params.c @@ -67,12 +67,16 @@ enum BDBM_DEFAULT_NAND_PARAMS { #endif NAND_HOST_BUS_TRANS_TIME_US = 0, /* assume to be 0 */ NAND_CHIP_BUS_TRANS_TIME_US = 100, /* 100us */ +// NAND_PAGE_PROG_TIME_US = 3000, /* 1.3ms */ +// NAND_PAGE_READ_TIME_US = 500, /* 100us */ NAND_PAGE_PROG_TIME_US = 500, /* 1.3ms */ NAND_PAGE_READ_TIME_US = 100, /* 100us */ NAND_BLOCK_ERASE_TIME_US = 3000, /* 3ms */ #ifdef NVM_CACHE + NR_NVM_PAGES = 131072, /* 4KB * 131072 = 500M / 4KB * 1048576 = 4GB */ // NR_NVM_PAGES = 262144, /* 4KB * 262144 = 1G / 4KB * 1048576 = 4GB */ - NR_NVM_PAGES = 1024, /* 4KB * 262144 = 1G / 4KB * 1048576 = 4GB */ +// NR_NVM_PAGES = 524288, /* 4KB * 524288 = 2G / 4KB * 1048576 = 4GB */ +// NR_NVM_PAGES = 1024, /* 4KB * 262144 = 1G / 4KB * 1048576 = 4GB */ NVM_PAGE_SIZE = 4096, /* 4KB */ #endif }; diff --git a/exec.sh b/exec.sh index 604d29d..8aeeb19 100755 --- a/exec.sh +++ b/exec.sh @@ -15,10 +15,14 @@ fi if [[ $1 == "tpcc" ]]; then service mysql stop - cp ~/mysql_bak/mysql* /media/robusta/ + echo "copy database ... " +# cp -rf ~/mysql_bak/mysql* /media/robusta/ + sudo chown -R mysql:mysql /media/robusta/mysql* + echo "start mysql daemon ..." service mysql start sleep 3 - $BENCH_HOME/tpcc_start -h127.0.0.1 -dtpcc1000 -uroot -p -w20 -c16 -r10 -l1200 > ~/tpcc-output-ps-55-bpool-256.log + echo "start tpcc ..." + $BENCH_HOME/tpcc-mysql/tpcc_start -h127.0.0.1 -dtpcc1000 -uroot -p -w20 -c16 -r10 -l1200 > ~/tpcc-output-ps-55-bpool-256.log fi diff --git a/frontend/kernel/nvm_cache.c b/frontend/kernel/nvm_cache.c index 638cbeb..9b17bcb 100644 --- a/frontend/kernel/nvm_cache.c +++ b/frontend/kernel/nvm_cache.c @@ -140,6 +140,26 @@ static void* __nvm_alloc_nvmram_tbl (bdbm_device_params_t* np) return me; } +static void* __nvm_alloc_nvmram_lookup_tbl (bdbm_device_params_t* np) +{ + bdbm_nvm_lookup_tbl_entry_t* me; + uint64_t i, j; + + /* allocate mapping entries */ + if ((me = (bdbm_nvm_lookup_tbl_entry_t*) bdbm_zmalloc + (sizeof (bdbm_nvm_lookup_tbl_entry_t) * np->nr_subpages_per_ssd)) == NULL) { + return NULL; + } + + /* initialize a mapping table */ + for (i = 0; i < np->nr_subpages_per_ssd; i++){ + // index + me[i].tbl_idx = -1; + } + + return me; +} + @@ -191,6 +211,13 @@ uint32_t bdbm_nvm_create (bdbm_drv_info_t* bdi){ return 1; } + /* alloc lookup page tabl: ptr_nvm_lookup_tbl */ + if((p->ptr_nvm_lookup_tbl = __nvm_alloc_nvmram_lookup_tbl (np)) == NULL) { + bdbm_error ("__alloc_nvmram table failed"); + bdbm_nvm_destroy(bdi); + return 1; + } + /* initialize lock and list */ bdbm_sema_init (&p->nvm_lock); @@ -256,12 +283,16 @@ int64_t bdbm_nvm_find_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) /* search nvm cache */ bdbm_nvm_dev_private_t* p = _nvm_dev.ptr_private; bdbm_nvm_page_t* nvm_tbl = p->ptr_nvm_tbl; + bdbm_nvm_lookup_tbl_entry_t* nvm_lookup_tbl = p->ptr_nvm_lookup_tbl; uint64_t i = 0; int64_t found = -1; int64_t lpa; lpa = lr->logaddr.lpa[0]; + found = nvm_lookup_tbl[lpa].tbl_idx; + +#if 0 for(i = 0; i < p->nr_total_pages; i++){ // bdbm_msg("nvm_tbl[%llu] lpa = %d, tlpa = %d", i, nvm_tbl[i].logaddr.lpa[0], lpa); if(nvm_tbl[i].logaddr.lpa[0] == lpa){ @@ -272,7 +303,7 @@ int64_t bdbm_nvm_find_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) break; } } - +#endif return found; } @@ -296,7 +327,7 @@ uint64_t bdbm_nvm_read_data (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) } p->nr_read++; - atomic64_inc(&bdi->pm.nvm_r_cnt); + atomic64_inc(&bdi->pm.nvm_rh_cnt); /* get data addr */ bdbm_bug_on(np->nr_subpages_per_page != 1); @@ -327,6 +358,7 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) bdbm_device_params_t* np = BDBM_GET_DEVICE_PARAMS (bdi); bdbm_blkio_private_t* bp = (bdbm_blkio_private_t*) BDBM_HOST_PRIV(bdi); bdbm_nvm_dev_private_t* p = _nvm_dev.ptr_private; + bdbm_nvm_lookup_tbl_entry_t* nvm_lookup_tbl = p->ptr_nvm_lookup_tbl; bdbm_nvm_page_t* npage = NULL; bdbm_nvm_page_t* epage = NULL; @@ -334,9 +366,14 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) bdbm_hlm_req_t* hr = NULL; int64_t nindex = -1; int64_t eindex = -1; + int64_t elpa = -1; + int64_t lpa = -1; #ifdef NVM_CACHE_DEBUG uint8_t* ptr_ramssd_data = NULL; #endif + + lpa = lr->logaddr.lpa[0]; + /* get a free page */ // if(p->nr_free_pages > LOW_WATERMARK){ if(p->nr_free_pages > 0){ @@ -360,6 +397,7 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) bdbm_bug_on(epage == NULL); eindex = epage->index; edata_ptr = p->ptr_nvmram + (eindex * np->nvm_page_size); + elpa = epage->logaddr.lpa[0]; bdbm_bug_on(!edata_ptr); @@ -410,10 +448,10 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) // bdbm_sema_lock (&hr->done); // bdbm_sema_unlock (&hr->done); - - // bdbm_hlm_reqs_pool_free_item (bp->hlm_reqs_pool, hr); // moved to hlm_end_wb_req + nvm_lookup_tbl[elpa].tbl_idx = -1; + /* set new page index */ nindex = eindex; npage = epage; @@ -426,6 +464,8 @@ static int64_t bdbm_nvm_alloc_slot (bdbm_drv_info_t* bdi, bdbm_llm_req_t* lr) list_del(&npage->list); list_add(&npage->list, p->lru_list); // bdbm_msg("new nvm_buffer is added to lru_list"); + + nvm_lookup_tbl[lpa].tbl_idx = nindex; bdbm_bug_on(p->nr_free_pages + p->nr_inuse_pages != p->nr_total_pages); diff --git a/frontend/kernel/nvm_cache.h b/frontend/kernel/nvm_cache.h index 84ed392..7c3bea6 100644 --- a/frontend/kernel/nvm_cache.h +++ b/frontend/kernel/nvm_cache.h @@ -39,6 +39,10 @@ typedef struct { struct list_head list; /* for lru list */ } bdbm_nvm_page_t; +typedef struct { + int64_t tbl_idx; +} bdbm_nvm_lookup_tbl_entry_t; + typedef struct { bdbm_device_params_t* np; uint64_t nr_total_pages; @@ -56,7 +60,7 @@ typedef struct { void* ptr_nvmram; /* DRAM memory for nvm */ // bdbm_nvm_page_t* ptr_nvm_rb_tree; bdbm_nvm_page_t* ptr_nvm_tbl; - + bdbm_nvm_page_t* ptr_nvm_lookup_tbl; bdbm_sema_t nvm_lock; struct list_head* lru_list; diff --git a/ftl/algo/page_ftl.c b/ftl/algo/page_ftl.c index c87b897..c326fbe 100644 --- a/ftl/algo/page_ftl.c +++ b/ftl/algo/page_ftl.c @@ -819,11 +819,11 @@ uint32_t bdbm_page_ftl_do_gc (bdbm_drv_info_t* bdi, int64_t lpa) } } } - +#if 0 bdbm_msg ("----------------------------------------------"); bdbm_msg ("gc-victim: %llu pages, %llu blocks, %llu us", nr_llm_reqs, nr_gc_blks, bdbm_stopwatch_get_elapsed_time_us (&sw)); - +#endif /* wait until Q in llm becomes empty * TODO: it might be possible to further optimize this */ bdi->ptr_llm_inf->flush (bdi); diff --git a/ftl/pmu.c b/ftl/pmu.c index 58b867e..91ea5ab 100644 --- a/ftl/pmu.c +++ b/ftl/pmu.c @@ -543,20 +543,22 @@ void pmu_display (bdbm_drv_info_t* bdi) #ifdef NVM_CACHE bdbm_msg ("[8] NVM I/Os"); - bdbm_msg ("# of total accesses: %ld", + bdbm_msg ("#_of_nvm_total_accesses: %ld", atomic64_read (&bdi->pm.nvm_a_cnt)); - bdbm_msg ("# of total write reqests: %ld", + bdbm_msg ("#_of_nvm_total_write_requests: %ld", atomic64_read (&bdi->pm.nvm_w_cnt)); - bdbm_msg ("# of total read requests: %ld", + bdbm_msg ("#_of_nvm_total_read_requests: %ld", atomic64_read (&bdi->pm.nvm_r_cnt)); - bdbm_msg ("# of write requests serviced by nvm: %ld", + bdbm_msg ("#_of_nvm_write_requests_serviced_by_nvm: %ld", atomic64_read (&bdi->pm.nvm_wh_cnt)); - bdbm_msg ("# of read requests serviced by nvm: %ld", + bdbm_msg ("#_of_nvm_read_requests_serviced_by_nvm: %ld", atomic64_read (&bdi->pm.nvm_rh_cnt)); - bdbm_msg ("# of total requests serviced by nvm: %ld", + bdbm_msg ("#_of_nvm_total_requests_serviced_by_nvm: %ld", atomic64_read (&bdi->pm.nvm_h_cnt)); - bdbm_msg ("# of evict from nvm: %ld", + bdbm_msg ("#_of_nvm_evict_from_nvm: %ld", atomic64_read (&bdi->pm.nvm_ev_cnt)); + bdbm_msg ("#_of_nvm_write_amplification: %ld : %ld", + atomic64_read (&bdi->pm.nvm_ev_cnt), atomic64_read (&bdi->pm.gc_write_cnt)+ atomic64_read (&bdi->pm.nvm_ev_cnt)); bdbm_msg (""); #endif diff --git a/result/extract.sh b/result/extract.sh new file mode 100755 index 0000000..0d3f788 --- /dev/null +++ b/result/extract.sh @@ -0,0 +1,17 @@ +SIZE="n500m n1g n2g" + +echo "nvm_size trim io(MB) bw(KB/s) iops runt(msec)" + + +for s in $SIZE;do + f="fio_toff_o1_$s.rslt" + echo $s off `grep "runt" $f | grep "read" |sed -e 's/[a-z, A-Z,\/,\:]*//g' | sed -e 's/=/ /g'` + +done + +echo " " + +for s in $SIZE;do + f="fio_ton_o1_$s.rslt" + echo $s on `grep "runt" $f | grep "read" |sed -e 's/[a-z, A-Z,\/,\:]*//g' | sed -e 's/=/ /g'` +done diff --git a/result/fio.nonvm.dmesg b/result/fio.nonvm.dmesg new file mode 100644 index 0000000..7098f02 --- /dev/null +++ b/result/fio.nonvm.dmesg @@ -0,0 +1,1554 @@ +[ 0.000000] Initializing cgroup subsys cpuset +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Initializing cgroup subsys cpuacct +[ 0.000000] Linux version 4.4.0-42-generic (buildd@lgw01-13) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.2) ) #62-Ubuntu SMP Fri Oct 7 23:11:45 UTC 2016 (Ubuntu 4.4.0-42.62-generic 4.4.21) +[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-42-generic.efi.signed root=UUID=f5bf218f-1f62-4a63-bcfe-1bdb8e06f01c ro quiet splash vt.handoff=7 +[ 0.000000] KERNEL supported cpus: +[ 0.000000] Intel GenuineIntel +[ 0.000000] AMD AuthenticAMD +[ 0.000000] Centaur CentaurHauls +[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256 +[ 0.000000] x86/fpu: xstate_offset[3]: 960, xstate_sizes[3]: 64 +[ 0.000000] x86/fpu: xstate_offset[4]: 1024, xstate_sizes[4]: 64 +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers' +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers' +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers' +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x08: 'MPX bounds registers' +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x10: 'MPX CSR' +[ 0.000000] x86/fpu: Enabled xstate features 0x1f, context size is 1088 bytes, using 'standard' format. +[ 0.000000] x86/fpu: Using 'eager' FPU context switches. +[ 0.000000] e820: BIOS-provided physical RAM map: +[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x0000000000057fff] usable +[ 0.000000] BIOS-e820: [mem 0x0000000000058000-0x0000000000058fff] reserved +[ 0.000000] BIOS-e820: [mem 0x0000000000059000-0x000000000009efff] usable +[ 0.000000] BIOS-e820: [mem 0x000000000009f000-0x000000000009ffff] reserved +[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000008277cfff] usable +[ 0.000000] BIOS-e820: [mem 0x000000008277d000-0x000000008277dfff] ACPI NVS +[ 0.000000] BIOS-e820: [mem 0x000000008277e000-0x00000000827a7fff] reserved +[ 0.000000] BIOS-e820: [mem 0x00000000827a8000-0x00000000827f9fff] usable +[ 0.000000] BIOS-e820: [mem 0x00000000827fa000-0x000000008303afff] reserved +[ 0.000000] BIOS-e820: [mem 0x000000008303b000-0x000000008a2a5fff] usable +[ 0.000000] BIOS-e820: [mem 0x000000008a2a6000-0x000000008a582fff] reserved +[ 0.000000] BIOS-e820: [mem 0x000000008a583000-0x000000008a749fff] usable +[ 0.000000] BIOS-e820: [mem 0x000000008a74a000-0x000000008ada0fff] ACPI NVS +[ 0.000000] BIOS-e820: [mem 0x000000008ada1000-0x000000008b393fff] reserved +[ 0.000000] BIOS-e820: [mem 0x000000008b394000-0x000000008b3fefff] type 20 +[ 0.000000] BIOS-e820: [mem 0x000000008b3ff000-0x000000008b3fffff] usable +[ 0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved +[ 0.000000] BIOS-e820: [mem 0x00000000fe000000-0x00000000fe010fff] reserved +[ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved +[ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved +[ 0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved +[ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000106effffff] usable +[ 0.000000] NX (Execute Disable) protection: active +[ 0.000000] efi: EFI v2.40 by American Megatrends +[ 0.000000] efi: ESRT=0x8b25af98 ACPI=0x8ad5c000 ACPI 2.0=0x8ad5c000 SMBIOS=0xf05e0 MPS=0xfc9d0 +[ 0.000000] esrt: Reserving ESRT space from 0x000000008b25af98 to 0x000000008b25afd0. +[ 0.000000] SMBIOS 3.0 present. +[ 0.000000] DMI: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved +[ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable +[ 0.000000] e820: last_pfn = 0x106f000 max_arch_pfn = 0x400000000 +[ 0.000000] MTRR default type: write-back +[ 0.000000] MTRR fixed ranges enabled: +[ 0.000000] 00000-9FFFF write-back +[ 0.000000] A0000-BFFFF uncachable +[ 0.000000] C0000-FFFFF write-protect +[ 0.000000] MTRR variable ranges enabled: +[ 0.000000] 0 base 00C0000000 mask 7FC0000000 uncachable +[ 0.000000] 1 base 00A0000000 mask 7FE0000000 uncachable +[ 0.000000] 2 base 0090000000 mask 7FF0000000 uncachable +[ 0.000000] 3 base 008C000000 mask 7FFC000000 uncachable +[ 0.000000] 4 base 008B800000 mask 7FFF800000 uncachable +[ 0.000000] 5 disabled +[ 0.000000] 6 disabled +[ 0.000000] 7 disabled +[ 0.000000] 8 disabled +[ 0.000000] 9 disabled +[ 0.000000] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WC UC- WT +[ 0.000000] e820: last_pfn = 0x8b400 max_arch_pfn = 0x400000000 +[ 0.000000] found SMP MP-table at [mem 0x000fcc70-0x000fcc7f] mapped at [ffff8800000fcc70] +[ 0.000000] Scanning 1 areas for low memory corruption +[ 0.000000] Base memory trampoline at [ffff880000096000] 96000 size 24576 +[ 0.000000] Using GB pages for direct mapping +[ 0.000000] BRK [0x03201000, 0x03201fff] PGTABLE +[ 0.000000] BRK [0x03202000, 0x03202fff] PGTABLE +[ 0.000000] BRK [0x03203000, 0x03203fff] PGTABLE +[ 0.000000] BRK [0x03204000, 0x03204fff] PGTABLE +[ 0.000000] BRK [0x03205000, 0x03205fff] PGTABLE +[ 0.000000] BRK [0x03206000, 0x03206fff] PGTABLE +[ 0.000000] RAMDISK: [mem 0x33aaa000-0x35d4cfff] +[ 0.000000] ACPI: Early table checksum verification disabled +[ 0.000000] ACPI: RSDP 0x000000008AD5C000 000024 (v02 ALASKA) +[ 0.000000] ACPI: XSDT 0x000000008AD5C098 0000B4 (v01 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: FACP 0x000000008AD7E928 00010C (v05 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: DSDT 0x000000008AD5C1E8 02273A (v02 ALASKA A M I 01072009 INTL 20120913) +[ 0.000000] ACPI: FACS 0x000000008ADA0F80 000040 +[ 0.000000] ACPI: APIC 0x000000008AD7EA38 000084 (v03 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: FPDT 0x000000008AD7EAC0 000044 (v01 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: FIDT 0x000000008AD7EB08 00009C (v01 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: MCFG 0x000000008AD7EBA8 00003C (v01 ALASKA A M I 01072009 MSFT 00000097) +[ 0.000000] ACPI: HPET 0x000000008AD7EBE8 000038 (v01 ALASKA A M I 01072009 AMI. 0005000B) +[ 0.000000] ACPI: SSDT 0x000000008AD7EC20 00036D (v01 SataRe SataTabl 00001000 INTL 20120913) +[ 0.000000] ACPI: LPIT 0x000000008AD7EF90 000094 (v01 INTEL SKL 00000000 MSFT 0000005F) +[ 0.000000] ACPI: SSDT 0x000000008AD7F028 000248 (v02 INTEL sensrhub 00000000 INTL 20120913) +[ 0.000000] ACPI: SSDT 0x000000008AD7F270 002BAE (v02 INTEL PtidDevc 00001000 INTL 20120913) +[ 0.000000] ACPI: SSDT 0x000000008AD81E20 000C45 (v02 INTEL Ther_Rvp 00001000 INTL 20120913) +[ 0.000000] ACPI: DBGP 0x000000008AD82A68 000034 (v01 INTEL 00000000 MSFT 0000005F) +[ 0.000000] ACPI: DBG2 0x000000008AD82AA0 000054 (v00 INTEL 00000000 MSFT 0000005F) +[ 0.000000] ACPI: SSDT 0x000000008AD82AF8 000615 (v02 INTEL xh_rvp08 00000000 INTL 20120913) +[ 0.000000] ACPI: SSDT 0x000000008AD83110 0053B2 (v02 SaSsdt SaSsdt 00003000 INTL 20120913) +[ 0.000000] ACPI: UEFI 0x000000008AD884C8 000042 (v01 00000000 00000000) +[ 0.000000] ACPI: SSDT 0x000000008AD88510 000E9A (v02 CpuRef CpuSsdt 00003000 INTL 20120913) +[ 0.000000] ACPI: BGRT 0x000000008AD893B0 000038 (v01 ALASKA A M I 01072009 AMI 00010013) +[ 0.000000] ACPI: Local APIC address 0xfee00000 +[ 0.000000] No NUMA configuration found +[ 0.000000] Faking a node at [mem 0x0000000000000000-0x000000106effffff] +[ 0.000000] NODE_DATA(0) allocated [mem 0x106eff6000-0x106effafff] +[ 0.000000] Zone ranges: +[ 0.000000] DMA [mem 0x0000000000001000-0x0000000000ffffff] +[ 0.000000] DMA32 [mem 0x0000000001000000-0x00000000ffffffff] +[ 0.000000] Normal [mem 0x0000000100000000-0x000000106effffff] +[ 0.000000] Device empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000000001000-0x0000000000057fff] +[ 0.000000] node 0: [mem 0x0000000000059000-0x000000000009efff] +[ 0.000000] node 0: [mem 0x0000000000100000-0x000000008277cfff] +[ 0.000000] node 0: [mem 0x00000000827a8000-0x00000000827f9fff] +[ 0.000000] node 0: [mem 0x000000008303b000-0x000000008a2a5fff] +[ 0.000000] node 0: [mem 0x000000008a583000-0x000000008a749fff] +[ 0.000000] node 0: [mem 0x000000008b3ff000-0x000000008b3fffff] +[ 0.000000] node 0: [mem 0x0000000100000000-0x000000106effffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000106effffff] +[ 0.000000] On node 0 totalpages: 16747423 +[ 0.000000] DMA zone: 64 pages used for memmap +[ 0.000000] DMA zone: 26 pages reserved +[ 0.000000] DMA zone: 3997 pages, LIFO batch:0 +[ 0.000000] DMA32 zone: 8753 pages used for memmap +[ 0.000000] DMA32 zone: 560130 pages, LIFO batch:31 +[ 0.000000] Normal zone: 252864 pages used for memmap +[ 0.000000] Normal zone: 16183296 pages, LIFO batch:31 +[ 0.000000] Reserving Intel graphics stolen memory at 0x8c000000-0x8fffffff +[ 0.000000] ACPI: PM-Timer IO Port: 0x1808 +[ 0.000000] ACPI: Local APIC address 0xfee00000 +[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) +[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1]) +[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1]) +[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x04] high edge lint[0x1]) +[ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-119 +[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) +[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) +[ 0.000000] ACPI: IRQ0 used by override. +[ 0.000000] ACPI: IRQ9 used by override. +[ 0.000000] Using ACPI (MADT) for SMP configuration information +[ 0.000000] ACPI: HPET id: 0x8086a701 base: 0xfed00000 +[ 0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs +[ 0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x00058000-0x00058fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff] +[ 0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000fffff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8277d000-0x8277dfff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8277e000-0x827a7fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x827fa000-0x8303afff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8a2a6000-0x8a582fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8a74a000-0x8ada0fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8ada1000-0x8b393fff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8b394000-0x8b3fefff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8b400000-0x8bffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0x8c000000-0x8fffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0x90000000-0xdfffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xe0000000-0xefffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xf0000000-0xfdffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfe000000-0xfe010fff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfe011000-0xfebfffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfec00000-0xfec00fff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfec01000-0xfedfffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfee00000-0xfee00fff] +[ 0.000000] PM: Registered nosave memory: [mem 0xfee01000-0xfeffffff] +[ 0.000000] PM: Registered nosave memory: [mem 0xff000000-0xffffffff] +[ 0.000000] e820: [mem 0x90000000-0xdfffffff] available for PCI devices +[ 0.000000] Booting paravirtualized kernel on bare hardware +[ 0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns +[ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:4 nr_node_ids:1 +[ 0.000000] PERCPU: Embedded 33 pages/cpu @ffff88106ec00000 s98008 r8192 d28968 u524288 +[ 0.000000] pcpu-alloc: s98008 r8192 d28968 u524288 alloc=1*2097152 +[ 0.000000] pcpu-alloc: [0] 0 1 2 3 +[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 16485716 +[ 0.000000] Policy zone: Normal +[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-42-generic.efi.signed root=UUID=f5bf218f-1f62-4a63-bcfe-1bdb8e06f01c ro quiet splash vt.handoff=7 +[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) +[ 0.000000] Calgary: detecting Calgary via BIOS EBDA area +[ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! +[ 0.000000] Memory: 65700716K/66989692K available (8409K kernel code, 1283K rwdata, 3944K rodata, 1480K init, 1292K bss, 1288976K reserved, 0K cma-reserved) +[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 +[ 0.000000] Hierarchical RCU implementation. +[ 0.000000] Build-time adjustment of leaf fanout to 64. +[ 0.000000] RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4. +[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=4 +[ 0.000000] NR_IRQS:16640 nr_irqs:1024 16 +[ 0.000000] spurious 8259A interrupt: IRQ7. +[ 0.000000] vt handoff: transparent VT on vt#7 +[ 0.000000] Console: colour dummy device 80x25 +[ 0.000000] console [tty0] enabled +[ 0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635855245 ns +[ 0.000000] hpet clockevent registered +[ 0.000000] tsc: PIT calibration matches HPET. 1 loops +[ 0.000000] tsc: Detected 3311.928 MHz processor +[ 0.000021] Calibrating delay loop (skipped), value calculated using timer frequency.. 6623.85 BogoMIPS (lpj=13247712) +[ 0.000023] pid_max: default: 32768 minimum: 301 +[ 0.000026] ACPI: Core revision 20150930 +[ 0.018771] ACPI Error: [\_SB_.PCI0.XHC_.RHUB.HS11] Namespace lookup failure, AE_NOT_FOUND (20150930/dswload-210) +[ 0.018775] ACPI Exception: AE_NOT_FOUND, During name lookup/catalog (20150930/psobject-227) +[ 0.018803] ACPI Exception: AE_NOT_FOUND, (SSDT:xh_rvp08) while loading table (20150930/tbxfload-193) +[ 0.025000] ACPI Error: 1 table load failures, 7 successful (20150930/tbxfload-214) +[ 0.026907] Security Framework initialized +[ 0.026908] Yama: becoming mindful. +[ 0.026917] AppArmor: AppArmor initialized +[ 0.029486] Dentry cache hash table entries: 8388608 (order: 14, 67108864 bytes) +[ 0.037878] Inode-cache hash table entries: 4194304 (order: 13, 33554432 bytes) +[ 0.041498] Mount-cache hash table entries: 131072 (order: 8, 1048576 bytes) +[ 0.041538] Mountpoint-cache hash table entries: 131072 (order: 8, 1048576 bytes) +[ 0.041793] Initializing cgroup subsys io +[ 0.041795] Initializing cgroup subsys memory +[ 0.041798] Initializing cgroup subsys devices +[ 0.041800] Initializing cgroup subsys freezer +[ 0.041802] Initializing cgroup subsys net_cls +[ 0.041803] Initializing cgroup subsys perf_event +[ 0.041804] Initializing cgroup subsys net_prio +[ 0.041806] Initializing cgroup subsys hugetlb +[ 0.041807] Initializing cgroup subsys pids +[ 0.041824] CPU: Physical Processor ID: 0 +[ 0.041824] CPU: Processor Core ID: 0 +[ 0.042730] mce: CPU supports 10 MCE banks +[ 0.042744] CPU0: Thermal monitoring enabled (TM1) +[ 0.042751] process: using mwait in idle threads +[ 0.042753] Last level iTLB entries: 4KB 128, 2MB 8, 4MB 8 +[ 0.042754] Last level dTLB entries: 4KB 64, 2MB 0, 4MB 0, 1GB 4 +[ 0.043007] Freeing SMP alternatives memory: 32K (ffffffff820b4000 - ffffffff820bc000) +[ 0.047205] ftrace: allocating 32007 entries in 126 pages +[ 0.056734] smpboot: Max logical packages: 1 +[ 0.056736] smpboot: APIC(0) Converting physical 0 to logical package 0 +[ 0.057995] x2apic: IRQ remapping doesn't support X2APIC mode +[ 0.061069] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0 +[ 0.100756] TSC deadline timer enabled +[ 0.100761] smpboot: CPU0: Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz (family: 0x6, model: 0x5e, stepping: 0x3) +[ 0.100773] Performance Events: PEBS fmt3+, 32-deep LBR, Skylake events, full-width counters, Intel PMU driver. +[ 0.100793] ... version: 4 +[ 0.100794] ... bit width: 48 +[ 0.100795] ... generic registers: 8 +[ 0.100795] ... value mask: 0000ffffffffffff +[ 0.100796] ... max period: 0000ffffffffffff +[ 0.100796] ... fixed-purpose events: 3 +[ 0.100797] ... event mask: 00000007000000ff +[ 0.101340] x86: Booting SMP configuration: +[ 0.101341] .... node #0, CPUs: #1 +[ 0.104601] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter. +[ 0.104644] #2 #3 +[ 0.111166] x86: Booted up 1 node, 4 CPUs +[ 0.111169] smpboot: Total of 4 processors activated (26495.42 BogoMIPS) +[ 0.113698] devtmpfs: initialized +[ 0.113737] memory block size : 128MB +[ 0.118598] evm: security.selinux +[ 0.118599] evm: security.SMACK64 +[ 0.118600] evm: security.SMACK64EXEC +[ 0.118600] evm: security.SMACK64TRANSMUTE +[ 0.118601] evm: security.SMACK64MMAP +[ 0.118601] evm: security.ima +[ 0.118602] evm: security.capability +[ 0.118638] PM: Registering ACPI NVS region [mem 0x8277d000-0x8277dfff] (4096 bytes) +[ 0.118639] PM: Registering ACPI NVS region [mem 0x8a74a000-0x8ada0fff] (6647808 bytes) +[ 0.118732] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.118787] pinctrl core: initialized pinctrl subsystem +[ 0.118932] RTC time: 5:48:47, date: 11/07/16 +[ 0.119726] NET: Registered protocol family 16 +[ 0.133557] cpuidle: using governor ladder +[ 0.145558] cpuidle: using governor menu +[ 0.145561] PCCT header not found. +[ 0.145606] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it +[ 0.145607] ACPI: bus type PCI registered +[ 0.145608] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 +[ 0.145655] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) +[ 0.145657] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 +[ 0.145666] PCI: Using configuration type 1 for base access +[ 0.157754] ACPI: Added _OSI(Module Device) +[ 0.157755] ACPI: Added _OSI(Processor Device) +[ 0.157756] ACPI: Added _OSI(3.0 _SCP Extensions) +[ 0.157757] ACPI: Added _OSI(Processor Aggregator Device) +[ 0.162933] ACPI: Executed 21 blocks of module-level executable AML code +[ 0.167125] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored +[ 0.169373] ACPI: Dynamic OEM Table Load: +[ 0.169380] ACPI: SSDT 0xFFFF8810270E3000 0006C3 (v02 PmRef Cpu0Ist 00003000 INTL 20120913) +[ 0.170002] ACPI: \_PR_.CPU0: _OSC native thermal LVT Acked +[ 0.171082] ACPI: Dynamic OEM Table Load: +[ 0.171085] ACPI: SSDT 0xFFFF88102712D800 00037F (v02 PmRef Cpu0Cst 00003001 INTL 20120913) +[ 0.172179] ACPI: Dynamic OEM Table Load: +[ 0.172183] ACPI: SSDT 0xFFFF8810270E3800 0005AA (v02 PmRef ApIst 00003000 INTL 20120913) +[ 0.172929] ACPI: Dynamic OEM Table Load: +[ 0.172931] ACPI: SSDT 0xFFFF881027159600 000119 (v02 PmRef ApCst 00003000 INTL 20120913) +[ 0.174998] ACPI: Interpreter enabled +[ 0.175005] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20150930/hwxface-580) +[ 0.175011] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20150930/hwxface-580) +[ 0.175026] ACPI: (supports S0 S3 S4 S5) +[ 0.175027] ACPI: Using IOAPIC for interrupt routing +[ 0.175050] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug +[ 0.176455] ACPI: Power Resource [PG00] (on) +[ 0.176728] ACPI: Power Resource [PG01] (on) +[ 0.176971] ACPI: Power Resource [PG02] (on) +[ 0.178034] ACPI: Power Resource [WRST] (off) +[ 0.178247] ACPI: Power Resource [WRST] (off) +[ 0.178467] ACPI: Power Resource [WRST] (off) +[ 0.178678] ACPI: Power Resource [WRST] (off) +[ 0.178890] ACPI: Power Resource [WRST] (off) +[ 0.179104] ACPI: Power Resource [WRST] (off) +[ 0.179320] ACPI: Power Resource [WRST] (off) +[ 0.179533] ACPI: Power Resource [WRST] (off) +[ 0.179746] ACPI: Power Resource [WRST] (off) +[ 0.179957] ACPI: Power Resource [WRST] (off) +[ 0.180170] ACPI: Power Resource [WRST] (off) +[ 0.180381] ACPI: Power Resource [WRST] (off) +[ 0.180594] ACPI: Power Resource [WRST] (off) +[ 0.180867] ACPI: Power Resource [WRST] (off) +[ 0.181081] ACPI: Power Resource [WRST] (off) +[ 0.181294] ACPI: Power Resource [WRST] (off) +[ 0.181508] ACPI: Power Resource [WRST] (off) +[ 0.181727] ACPI: Power Resource [WRST] (off) +[ 0.181947] ACPI: Power Resource [WRST] (off) +[ 0.182158] ACPI: Power Resource [WRST] (off) +[ 0.186915] ACPI: Power Resource [FN00] (off) +[ 0.186963] ACPI: Power Resource [FN01] (off) +[ 0.187009] ACPI: Power Resource [FN02] (off) +[ 0.187054] ACPI: Power Resource [FN03] (off) +[ 0.187098] ACPI: Power Resource [FN04] (off) +[ 0.187877] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe]) +[ 0.187882] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] +[ 0.187902] \_SB_.PCI0:_OSC invalid UUID +[ 0.187903] _OSC request data:1 1f 0 +[ 0.187905] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM +[ 0.188386] PCI host bridge to bus 0000:00 +[ 0.188388] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window] +[ 0.188389] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window] +[ 0.188390] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window] +[ 0.188391] pci_bus 0000:00: root bus resource [mem 0x91000000-0xdfffffff window] +[ 0.188392] pci_bus 0000:00: root bus resource [mem 0xfd000000-0xfe7fffff window] +[ 0.188393] pci_bus 0000:00: root bus resource [bus 00-fe] +[ 0.188398] pci 0000:00:00.0: [8086:191f] type 00 class 0x060000 +[ 0.188611] pci 0000:00:02.0: [8086:1912] type 00 class 0x030000 +[ 0.188621] pci 0000:00:02.0: reg 0x10: [mem 0xde000000-0xdeffffff 64bit] +[ 0.188626] pci 0000:00:02.0: reg 0x18: [mem 0xc0000000-0xcfffffff 64bit pref] +[ 0.188629] pci 0000:00:02.0: reg 0x20: [io 0xf000-0xf03f] +[ 0.188728] pci 0000:00:08.0: [8086:1911] type 00 class 0x088000 +[ 0.188738] pci 0000:00:08.0: reg 0x10: [mem 0xdf152000-0xdf152fff 64bit] +[ 0.188848] pci 0000:00:14.0: [8086:a12f] type 00 class 0x0c0330 +[ 0.188871] pci 0000:00:14.0: reg 0x10: [mem 0xdf130000-0xdf13ffff 64bit] +[ 0.188917] pci 0000:00:14.0: PME# supported from D3hot D3cold +[ 0.188990] pci 0000:00:14.0: System wakeup disabled by ACPI +[ 0.189017] pci 0000:00:14.2: [8086:a131] type 00 class 0x118000 +[ 0.189039] pci 0000:00:14.2: reg 0x10: [mem 0xdf151000-0xdf151fff 64bit] +[ 0.189193] pci 0000:00:15.0: [8086:a160] type 00 class 0x118000 +[ 0.189248] pci 0000:00:15.0: reg 0x10: [mem 0xdf150000-0xdf150fff 64bit] +[ 0.189458] pci 0000:00:15.1: [8086:a161] type 00 class 0x118000 +[ 0.189513] pci 0000:00:15.1: reg 0x10: [mem 0xdf14f000-0xdf14ffff 64bit] +[ 0.189713] pci 0000:00:16.0: [8086:a13a] type 00 class 0x078000 +[ 0.189762] pci 0000:00:16.0: reg 0x10: [mem 0xdf14e000-0xdf14efff 64bit] +[ 0.189849] pci 0000:00:16.0: PME# supported from D3hot +[ 0.189961] pci 0000:00:17.0: [8086:a102] type 00 class 0x010601 +[ 0.189980] pci 0000:00:17.0: reg 0x10: [mem 0xdf148000-0xdf149fff] +[ 0.189986] pci 0000:00:17.0: reg 0x14: [mem 0xdf14d000-0xdf14d0ff] +[ 0.189992] pci 0000:00:17.0: reg 0x18: [io 0xf090-0xf097] +[ 0.189998] pci 0000:00:17.0: reg 0x1c: [io 0xf080-0xf083] +[ 0.190003] pci 0000:00:17.0: reg 0x20: [io 0xf060-0xf07f] +[ 0.190009] pci 0000:00:17.0: reg 0x24: [mem 0xdf14c000-0xdf14c7ff] +[ 0.190034] pci 0000:00:17.0: PME# supported from D3hot +[ 0.190129] pci 0000:00:1b.0: [8086:a167] type 01 class 0x060400 +[ 0.190177] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold +[ 0.190258] pci 0000:00:1b.0: System wakeup disabled by ACPI +[ 0.190307] pci 0000:00:1d.0: [8086:a118] type 01 class 0x060400 +[ 0.190351] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold +[ 0.190426] pci 0000:00:1d.0: System wakeup disabled by ACPI +[ 0.190452] pci 0000:00:1d.2: [8086:a11a] type 01 class 0x060400 +[ 0.190498] pci 0000:00:1d.2: PME# supported from D0 D3hot D3cold +[ 0.190576] pci 0000:00:1d.2: System wakeup disabled by ACPI +[ 0.190654] pci 0000:00:1e.0: [8086:a127] type 00 class 0x118000 +[ 0.190708] pci 0000:00:1e.0: reg 0x10: [mem 0xdf14b000-0xdf14bfff 64bit] +[ 0.190931] pci 0000:00:1f.0: [8086:a145] type 00 class 0x060100 +[ 0.191103] pci 0000:00:1f.2: [8086:a121] type 00 class 0x058000 +[ 0.191113] pci 0000:00:1f.2: reg 0x10: [mem 0xdf144000-0xdf147fff] +[ 0.191228] pci 0000:00:1f.3: [8086:a170] type 00 class 0x040300 +[ 0.191256] pci 0000:00:1f.3: reg 0x10: [mem 0xdf140000-0xdf143fff 64bit] +[ 0.191278] pci 0000:00:1f.3: reg 0x20: [mem 0xdf120000-0xdf12ffff 64bit] +[ 0.191307] pci 0000:00:1f.3: PME# supported from D3hot D3cold +[ 0.191411] pci 0000:00:1f.3: System wakeup disabled by ACPI +[ 0.191441] pci 0000:00:1f.4: [8086:a123] type 00 class 0x0c0500 +[ 0.191494] pci 0000:00:1f.4: reg 0x10: [mem 0xdf14a000-0xdf14a0ff 64bit] +[ 0.191563] pci 0000:00:1f.4: reg 0x20: [io 0xf040-0xf05f] +[ 0.191714] pci 0000:00:1f.6: [8086:15b8] type 00 class 0x020000 +[ 0.191748] pci 0000:00:1f.6: reg 0x10: [mem 0xdf100000-0xdf11ffff] +[ 0.191835] pci 0000:00:1f.6: PME# supported from D0 D3hot D3cold +[ 0.191906] pci 0000:00:1f.6: System wakeup disabled by ACPI +[ 0.191995] pci 0000:01:00.0: [144d:a802] type 00 class 0x010802 +[ 0.192021] pci 0000:01:00.0: reg 0x10: [mem 0xdf010000-0xdf013fff 64bit] +[ 0.192026] pci 0000:01:00.0: reg 0x18: [io 0xe000-0xe0ff] +[ 0.192045] pci 0000:01:00.0: reg 0x30: [mem 0xdf000000-0xdf00ffff pref] +[ 0.192137] pci 0000:01:00.0: System wakeup disabled by ACPI +[ 0.197890] pci 0000:00:1b.0: PCI bridge to [bus 01] +[ 0.197892] pci 0000:00:1b.0: bridge window [io 0xe000-0xefff] +[ 0.197894] pci 0000:00:1b.0: bridge window [mem 0xdf000000-0xdf0fffff] +[ 0.197960] acpiphp: Slot [1] registered +[ 0.197963] pci 0000:00:1d.0: PCI bridge to [bus 02] +[ 0.198040] pci 0000:03:00.0: [1b21:1080] type 01 class 0x060400 +[ 0.198151] pci 0000:03:00.0: supports D1 D2 +[ 0.198152] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold +[ 0.198200] pci 0000:03:00.0: System wakeup disabled by ACPI +[ 0.205891] pci 0000:00:1d.2: PCI bridge to [bus 03-04] +[ 0.205995] pci 0000:03:00.0: PCI bridge to [bus 04] +[ 0.207321] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207357] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 *10 11 12 14 15) +[ 0.207392] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207425] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207459] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207492] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207526] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207559] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207836] ACPI: Enabled 5 GPEs in block 00 to 7F +[ 0.207905] vgaarb: setting as boot device: PCI:0000:00:02.0 +[ 0.207907] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none +[ 0.207909] vgaarb: loaded +[ 0.207909] vgaarb: bridge control possible 0000:00:02.0 +[ 0.208041] SCSI subsystem initialized +[ 0.208058] libata version 3.00 loaded. +[ 0.208070] ACPI: bus type USB registered +[ 0.208082] usbcore: registered new interface driver usbfs +[ 0.208086] usbcore: registered new interface driver hub +[ 0.208094] usbcore: registered new device driver usb +[ 0.208202] PCI: Using ACPI for IRQ routing +[ 0.236060] PCI: pci_cache_line_size set to 64 bytes +[ 0.236162] e820: reserve RAM buffer [mem 0x00058000-0x0005ffff] +[ 0.236163] e820: reserve RAM buffer [mem 0x0009f000-0x0009ffff] +[ 0.236164] e820: reserve RAM buffer [mem 0x8277d000-0x83ffffff] +[ 0.236165] e820: reserve RAM buffer [mem 0x827fa000-0x83ffffff] +[ 0.236166] e820: reserve RAM buffer [mem 0x8a2a6000-0x8bffffff] +[ 0.236167] e820: reserve RAM buffer [mem 0x8a74a000-0x8bffffff] +[ 0.236168] e820: reserve RAM buffer [mem 0x8b400000-0x8bffffff] +[ 0.236168] e820: reserve RAM buffer [mem 0x106f000000-0x106fffffff] +[ 0.236236] NetLabel: Initializing +[ 0.236237] NetLabel: domain hash size = 128 +[ 0.236237] NetLabel: protocols = UNLABELED CIPSOv4 +[ 0.236244] NetLabel: unlabeled traffic allowed by default +[ 0.236318] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0 +[ 0.236321] hpet0: 8 comparators, 64-bit 24.000000 MHz counter +[ 0.238354] amd_nb: Cannot enumerate AMD northbridges +[ 0.238365] clocksource: Switched to clocksource hpet +[ 0.242118] AppArmor: AppArmor Filesystem Enabled +[ 0.242148] pnp: PnP ACPI init +[ 0.242329] system 00:00: [io 0x0a00-0x0a0f] has been reserved +[ 0.242330] system 00:00: [io 0x0a10-0x0a1f] has been reserved +[ 0.242332] system 00:00: [io 0x0a20-0x0a2f] has been reserved +[ 0.242333] system 00:00: [io 0x0a30-0x0a3f] has been reserved +[ 0.242335] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242482] system 00:01: [io 0x0680-0x069f] has been reserved +[ 0.242484] system 00:01: [io 0xffff] has been reserved +[ 0.242484] system 00:01: [io 0xffff] has been reserved +[ 0.242485] system 00:01: [io 0xffff] has been reserved +[ 0.242487] system 00:01: [io 0x1800-0x18fe] could not be reserved +[ 0.242487] system 00:01: [io 0x164e-0x164f] has been reserved +[ 0.242489] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242545] system 00:02: [io 0x0800-0x087f] has been reserved +[ 0.242546] system 00:02: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242560] pnp 00:03: Plug and Play ACPI device, IDs PNP0b00 (active) +[ 0.242584] system 00:04: [io 0x1854-0x1857] has been reserved +[ 0.242585] system 00:04: Plug and Play ACPI device, IDs INT3f0d PNP0c02 (active) +[ 0.242721] system 00:05: [mem 0xfed10000-0xfed17fff] has been reserved +[ 0.242722] system 00:05: [mem 0xfed18000-0xfed18fff] has been reserved +[ 0.242723] system 00:05: [mem 0xfed19000-0xfed19fff] has been reserved +[ 0.242724] system 00:05: [mem 0xe0000000-0xefffffff] has been reserved +[ 0.242725] system 00:05: [mem 0xfed20000-0xfed3ffff] has been reserved +[ 0.242727] system 00:05: [mem 0xfed90000-0xfed93fff] has been reserved +[ 0.242728] system 00:05: [mem 0xfed45000-0xfed8ffff] has been reserved +[ 0.242729] system 00:05: [mem 0xff000000-0xffffffff] has been reserved +[ 0.242730] system 00:05: [mem 0xfee00000-0xfeefffff] could not be reserved +[ 0.242731] system 00:05: [mem 0xdffc0000-0xdffdffff] has been reserved +[ 0.242732] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242757] system 00:06: [mem 0xfd000000-0xfdabffff] has been reserved +[ 0.242759] system 00:06: [mem 0xfdad0000-0xfdadffff] has been reserved +[ 0.242760] system 00:06: [mem 0xfdb00000-0xfdffffff] has been reserved +[ 0.242761] system 00:06: [mem 0xfe000000-0xfe01ffff] could not be reserved +[ 0.242762] system 00:06: [mem 0xfe036000-0xfe03bfff] has been reserved +[ 0.242763] system 00:06: [mem 0xfe03d000-0xfe3fffff] has been reserved +[ 0.242764] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242943] system 00:07: [io 0xff00-0xfffe] has been reserved +[ 0.242944] system 00:07: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.243555] system 00:08: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.244099] pnp: PnP ACPI: found 9 devices +[ 0.252045] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns +[ 0.252073] pci 0000:00:1b.0: PCI bridge to [bus 01] +[ 0.252075] pci 0000:00:1b.0: bridge window [io 0xe000-0xefff] +[ 0.252078] pci 0000:00:1b.0: bridge window [mem 0xdf000000-0xdf0fffff] +[ 0.252082] pci 0000:00:1d.0: PCI bridge to [bus 02] +[ 0.252089] pci 0000:03:00.0: PCI bridge to [bus 04] +[ 0.252102] pci 0000:00:1d.2: PCI bridge to [bus 03-04] +[ 0.252109] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window] +[ 0.252110] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window] +[ 0.252111] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window] +[ 0.252112] pci_bus 0000:00: resource 7 [mem 0x91000000-0xdfffffff window] +[ 0.252113] pci_bus 0000:00: resource 8 [mem 0xfd000000-0xfe7fffff window] +[ 0.252114] pci_bus 0000:01: resource 0 [io 0xe000-0xefff] +[ 0.252115] pci_bus 0000:01: resource 1 [mem 0xdf000000-0xdf0fffff] +[ 0.252133] NET: Registered protocol family 2 +[ 0.252300] TCP established hash table entries: 524288 (order: 10, 4194304 bytes) +[ 0.252716] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) +[ 0.252799] TCP: Hash tables configured (established 524288 bind 65536) +[ 0.252833] UDP hash table entries: 32768 (order: 8, 1048576 bytes) +[ 0.252945] UDP-Lite hash table entries: 32768 (order: 8, 1048576 bytes) +[ 0.253054] NET: Registered protocol family 1 +[ 0.253064] pci 0000:00:02.0: Video device with shadowed ROM +[ 0.253266] PCI: CLS 0 bytes, default 64 +[ 0.253295] Trying to unpack rootfs image as initramfs... +[ 0.631688] Freeing initrd memory: 35468K (ffff880033aaa000 - ffff880035d4d000) +[ 0.631711] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) +[ 0.631712] software IO TLB [mem 0x7e3ab000-0x823ab000] (64MB) mapped at [ffff88007e3ab000-ffff8800823aafff] +[ 0.631836] Scanning for low memory corruption every 60 seconds +[ 0.632102] futex hash table entries: 1024 (order: 4, 65536 bytes) +[ 0.632122] audit: initializing netlink subsys (disabled) +[ 0.632133] audit: type=2000 audit(1478497727.636:1): initialized +[ 0.632389] Initialise system trusted keyring +[ 0.632526] HugeTLB registered 1 GB page size, pre-allocated 0 pages +[ 0.632527] HugeTLB registered 2 MB page size, pre-allocated 0 pages +[ 0.633449] zbud: loaded +[ 0.633620] VFS: Disk quotas dquot_6.6.0 +[ 0.633642] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) +[ 0.633803] squashfs: version 4.0 (2009/01/31) Phillip Lougher +[ 0.634003] fuse init (API version 7.23) +[ 0.634104] Key type big_key registered +[ 0.634125] Allocating IMA MOK and blacklist keyrings. +[ 0.635054] Key type asymmetric registered +[ 0.635056] Asymmetric key parser 'x509' registered +[ 0.635077] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249) +[ 0.635137] io scheduler noop registered +[ 0.635138] io scheduler deadline registered (default) +[ 0.635156] io scheduler cfq registered +[ 0.635488] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 +[ 0.635493] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 +[ 0.635515] efifb: probing for efifb +[ 0.635524] efifb: framebuffer at 0xc0000000, mapped to 0xffffc90006c00000, using 3072k, total 3072k +[ 0.635525] efifb: mode is 1024x768x32, linelength=4096, pages=1 +[ 0.635525] efifb: scrolling: redraw +[ 0.635526] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0 +[ 0.635586] Console: switching to colour frame buffer device 128x48 +[ 0.635594] fb0: EFI VGA frame buffer device +[ 0.635600] intel_idle: MWAIT substates: 0x142120 +[ 0.635601] intel_idle: v0.4.1 model 0x5E +[ 0.635601] intel_idle: lapic_timer_reliable_states 0xffffffff +[ 0.635786] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input0 +[ 0.635789] ACPI: Sleep Button [SLPB] +[ 0.635810] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1 +[ 0.635811] ACPI: Power Button [PWRB] +[ 0.635832] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 +[ 0.635833] ACPI: Power Button [PWRF] +[ 0.636355] thermal LNXTHERM:00: registered as thermal_zone0 +[ 0.636356] ACPI: Thermal Zone [TZ00] (28 C) +[ 0.636436] thermal LNXTHERM:01: registered as thermal_zone1 +[ 0.636437] ACPI: Thermal Zone [TZ01] (30 C) +[ 0.636466] GHES: HEST is not enabled! +[ 0.636550] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled +[ 0.657104] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A +[ 0.677695] serial8250: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A +[ 0.679815] Linux agpgart interface v0.103 +[ 0.683415] brd: module loaded +[ 0.685084] loop: module loaded +[ 0.685197] libphy: Fixed MDIO Bus: probed +[ 0.685198] tun: Universal TUN/TAP device driver, 1.6 +[ 0.685199] tun: (C) 1999-2004 Max Krasnyansky +[ 0.685248] PPP generic driver version 2.4.2 +[ 0.685312] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver +[ 0.685315] ehci-pci: EHCI PCI platform driver +[ 0.685321] ehci-platform: EHCI generic platform driver +[ 0.685327] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver +[ 0.685329] ohci-pci: OHCI PCI platform driver +[ 0.685335] ohci-platform: OHCI generic platform driver +[ 0.685340] uhci_hcd: USB Universal Host Controller Interface driver +[ 0.685435] xhci_hcd 0000:00:14.0: xHCI Host Controller +[ 0.685438] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1 +[ 0.686513] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x00109810 +[ 0.686517] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported +[ 0.686573] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 +[ 0.686574] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 +[ 0.686575] usb usb1: Product: xHCI Host Controller +[ 0.686576] usb usb1: Manufacturer: Linux 4.4.0-42-generic xhci-hcd +[ 0.686577] usb usb1: SerialNumber: 0000:00:14.0 +[ 0.686664] hub 1-0:1.0: USB hub found +[ 0.686678] hub 1-0:1.0: 16 ports detected +[ 0.694059] xhci_hcd 0000:00:14.0: xHCI Host Controller +[ 0.694061] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2 +[ 0.694079] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003 +[ 0.694080] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 +[ 0.694080] usb usb2: Product: xHCI Host Controller +[ 0.694081] usb usb2: Manufacturer: Linux 4.4.0-42-generic xhci-hcd +[ 0.694082] usb usb2: SerialNumber: 0000:00:14.0 +[ 0.694184] hub 2-0:1.0: USB hub found +[ 0.694194] hub 2-0:1.0: 10 ports detected +[ 0.698905] i8042: PNP: No PS/2 controller found. Probing ports directly. +[ 0.702032] serio: i8042 KBD port at 0x60,0x64 irq 1 +[ 0.702034] serio: i8042 AUX port at 0x60,0x64 irq 12 +[ 0.702201] mousedev: PS/2 mouse device common for all mice +[ 0.702506] rtc_cmos 00:03: RTC can wake from S4 +[ 0.702921] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 +[ 0.703001] rtc_cmos 00:03: alarms up to one month, y3k, 242 bytes nvram, hpet irqs +[ 0.703006] i2c /dev entries driver +[ 0.703035] device-mapper: uevent: version 1.0.3 +[ 0.703151] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@redhat.com +[ 0.703164] Intel P-state driver initializing. +[ 0.703165] intel_pstate: HWP enabled +[ 0.704049] ledtrig-cpu: registered to indicate activity on CPUs +[ 0.704052] EFI Variables Facility v0.08 2004-May-17 +[ 0.709771] NET: Registered protocol family 10 +[ 0.710110] NET: Registered protocol family 17 +[ 0.710119] Key type dns_resolver registered +[ 0.710373] microcode: CPU0 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.710470] microcode: CPU1 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.710484] microcode: CPU2 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.710487] microcode: CPU3 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.710525] microcode: Microcode Update Driver: v2.01 , Peter Oruba +[ 0.711039] registered taskstats version 1 +[ 0.711049] Loading compiled-in X.509 certificates +[ 0.711477] Loaded X.509 cert 'Build time autogenerated kernel key: e837129128998c98ce5a834cc756a195b6db2f40' +[ 0.711489] zswap: loaded using pool lzo/zbud +[ 0.713315] Key type trusted registered +[ 0.716985] Key type encrypted registered +[ 0.716989] AppArmor: AppArmor sha1 policy hashing enabled +[ 0.716991] ima: No TPM chip found, activating TPM-bypass! +[ 0.717002] evm: HMAC attrs: 0x1 +[ 0.717855] Magic number: 8:870:819 +[ 0.718189] rtc_cmos 00:03: setting system clock to 2016-11-07 05:48:48 UTC (1478497728) +[ 0.718335] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found +[ 0.718336] EDD information not available. +[ 0.718424] PM: Hibernation image not present or could not be loaded. +[ 0.719312] Freeing unused kernel memory: 1480K (ffffffff81f42000 - ffffffff820b4000) +[ 0.719313] Write protecting the kernel read-only data: 14336k +[ 0.719935] Freeing unused kernel memory: 1820K (ffff880002839000 - ffff880002a00000) +[ 0.720263] Freeing unused kernel memory: 152K (ffff880002dda000 - ffff880002e00000) +[ 0.727499] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.727541] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.727548] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.727810] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.727836] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.727971] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.727998] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.728023] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.728045] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.728072] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.750592] FUJITSU Extended Socket Network Device Driver - version 1.0 - Copyright (c) 2015 FUJITSU LIMITED +[ 0.757920] wmi: Mapper loaded +[ 0.771240] hidraw: raw HID events driver (C) Jiri Kosina +[ 0.776605] ahci 0000:00:17.0: version 3.0 +[ 0.777407] [drm] Initialized drm 1.1.0 20060810 +[ 0.777514] pps_core: LinuxPPS API ver. 1 registered +[ 0.777515] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti +[ 0.778224] PTP clock support registered +[ 0.780511] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k +[ 0.780512] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. +[ 0.780577] nvme 0000:01:00.0: enabling device (0000 -> 0002) +[ 0.790616] ahci 0000:00:17.0: AHCI 0001.0301 32 slots 4 ports 6 Gbps 0xf impl SATA mode +[ 0.790618] ahci 0000:00:17.0: flags: 64bit ncq sntf led clo only pio slum part ems deso sadm sds apst +[ 0.819332] scsi host0: ahci +[ 0.819596] scsi host1: ahci +[ 0.819831] scsi host2: ahci +[ 0.820096] scsi host3: ahci +[ 0.820131] ata1: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c100 irq 313 +[ 0.820135] ata2: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c180 irq 313 +[ 0.820140] ata3: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c200 irq 313 +[ 0.820144] ata4: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c280 irq 313 +[ 0.820412] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode +[ 1.002519] usb 1-1: new low-speed USB device number 2 using xhci_hcd +[ 1.138661] ata4: SATA link down (SStatus 4 SControl 300) +[ 1.138691] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300) +[ 1.138718] ata3: SATA link down (SStatus 4 SControl 300) +[ 1.138769] ata1: SATA link down (SStatus 4 SControl 300) +[ 1.139439] ata2.00: ATA-9: WDC WD10EZEX-00BN5A0, 01.01A01, max UDMA/133 +[ 1.139441] ata2.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA +[ 1.140352] ata2.00: configured for UDMA/133 +[ 1.140848] scsi 1:0:0:0: Direct-Access ATA WDC WD10EZEX-00B 1A01 PQ: 0 ANSI: 5 +[ 1.141354] sd 1:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB) +[ 1.141355] sd 1:0:0:0: [sda] 4096-byte physical blocks +[ 1.141376] sd 1:0:0:0: Attached scsi generic sg0 type 0 +[ 1.141916] sd 1:0:0:0: [sda] Write Protect is off +[ 1.141918] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00 +[ 1.142111] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA +[ 1.192566] usb 1-1: New USB device found, idVendor=046d, idProduct=c31c +[ 1.192567] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 +[ 1.192568] usb 1-1: Product: USB Keyboard +[ 1.192569] usb 1-1: Manufacturer: Logitech +[ 1.192743] usb 1-1: ep 0x81 - rounding interval to 64 microframes, ep desc says 80 microframes +[ 1.192745] usb 1-1: ep 0x82 - rounding interval to 1024 microframes, ep desc says 2040 microframes +[ 1.203996] sda: sda1 sda2 sda3 +[ 1.204715] sd 1:0:0:0: [sda] Attached SCSI disk +[ 1.204820] usbcore: registered new interface driver usbhid +[ 1.204821] usbhid: USB HID core driver +[ 1.206298] input: Logitech USB Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:046D:C31C.0001/input/input6 +[ 1.258885] hid-generic 0003:046D:C31C.0001: input,hidraw0: USB HID v1.10 Keyboard [Logitech USB Keyboard] on usb-0000:00:14.0-1/input0 +[ 1.260276] input: Logitech USB Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.1/0003:046D:C31C.0002/input/input7 +[ 1.314820] hid-generic 0003:046D:C31C.0002: input,hidraw1: USB HID v1.10 Device [Logitech USB Keyboard] on usb-0000:00:14.0-1/input1 +[ 1.315043] e1000e 0000:00:1f.6 eth0: registered PHC clock +[ 1.315044] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) d8:cb:8a:c4:3a:78 +[ 1.315045] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection +[ 1.315119] e1000e 0000:00:1f.6 eth0: MAC: 12, PHY: 12, PBA No: FFFFFF-0FF +[ 1.315824] e1000e 0000:00:1f.6 enp0s31f6: renamed from eth0 +[ 1.316014] [drm] Memory usable by graphics device = 4096M +[ 1.316016] checking generic (c0000000 300000) vs hw (c0000000 10000000) +[ 1.316017] fb: switching to inteldrmfb from EFI VGA +[ 1.316031] Console: switching to colour dummy device 80x25 +[ 1.316162] [drm] Replacing VGA console driver +[ 1.322347] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). +[ 1.322348] [drm] Driver supports precise vblank timestamp query. +[ 1.329078] [drm] Finished loading i915/skl_dmc_ver1.bin (v1.26) +[ 1.331645] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem +[ 1.340844] [drm] failed to retrieve link info, disabling eDP +[ 1.345582] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) +[ 1.345910] acpi device:0f: registered as cooling_device9 +[ 1.345958] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input8 +[ 1.346150] [drm] Initialized i915_bpo 1.6.0 20160425 for 0000:00:02.0 on minor 0 +[ 1.366557] usb 1-2: new full-speed USB device number 3 using xhci_hcd +[ 1.484566] fbcon: inteldrmfb (fb0) is primary device +[ 1.484612] Console: switching to colour frame buffer device 160x64 +[ 1.484635] i915_bpo 0000:00:02.0: fb0: inteldrmfb frame buffer device +[ 1.496879] usb 1-2: New USB device found, idVendor=046d, idProduct=c247 +[ 1.496880] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 +[ 1.496881] usb 1-2: Product: G100s Optical Gaming Mouse +[ 1.496882] usb 1-2: Manufacturer: Logitech +[ 1.498669] input: Logitech G100s Optical Gaming Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:046D:C247.0003/input/input9 +[ 1.499035] hid-generic 0003:046D:C247.0003: input,hidraw2: USB HID v1.10 Mouse [Logitech G100s Optical Gaming Mouse] on usb-0000:00:14.0-2/input0 +[ 1.630599] tsc: Refined TSC clocksource calibration: 3311.992 MHz +[ 1.630601] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x2fbd8cbe157, max_idle_ns: 440795320157 ns +[ 2.029158] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) +[ 2.630952] clocksource: Switched to clocksource tsc +[ 2.662430] random: nonblocking pool is initialized +[ 2.790854] [drm] RC6 on +[ 2.913361] systemd[1]: systemd 229 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN) +[ 2.913436] systemd[1]: Detected architecture x86-64. +[ 2.921671] systemd[1]: Set hostname to . +[ 4.413881] systemd[1]: Listening on fsck to fsckd communication Socket. +[ 4.413922] systemd[1]: Listening on Journal Socket. +[ 4.413938] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe. +[ 4.413983] systemd[1]: Created slice System Slice. +[ 4.426596] systemd[1]: Mounting Huge Pages File System... +[ 4.428097] systemd[1]: Starting Load Kernel Modules... +[ 4.428154] systemd[1]: Created slice system-systemd\x2dfsck.slice. +[ 4.428173] systemd[1]: Reached target Encrypted Volumes. +[ 4.428195] systemd[1]: Listening on Journal Socket (/dev/log). +[ 4.428413] systemd[1]: Started Read required files in advance. +[ 4.428559] systemd[1]: Listening on udev Kernel Socket. +[ 4.428852] systemd[1]: Starting Uncomplicated firewall... +[ 4.428883] systemd[1]: Started Forward Password Requests to Wall Directory Watch. +[ 4.429108] systemd[1]: Mounting POSIX Message Queue File System... +[ 4.429177] systemd[1]: Created slice system-getty.slice. +[ 4.429218] systemd[1]: Created slice User and Session Slice. +[ 4.429228] systemd[1]: Reached target User and Group Name Lookups. +[ 4.429239] systemd[1]: Reached target Slices. +[ 4.429257] systemd[1]: Listening on Syslog Socket. +[ 4.429262] systemd[1]: Reached target Remote File Systems (Pre). +[ 4.429531] systemd[1]: Starting Create list of required static device nodes for the current kernel... +[ 4.429642] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point. +[ 4.641503] systemd[1]: Reached target Remote File Systems. +[ 4.641562] systemd[1]: Listening on Journal Audit Socket. +[ 4.650721] systemd[1]: Starting Journal Service... +[ 4.650756] systemd[1]: Listening on udev Control Socket. +[ 4.651027] systemd[1]: Mounting Debug File System... +[ 4.651240] systemd[1]: Starting Braille Device Support... +[ 4.652109] systemd[1]: Started Uncomplicated firewall. +[ 4.652259] systemd[1]: Started Create list of required static device nodes for the current kernel. +[ 4.661956] systemd[1]: Starting Create Static Device Nodes in /dev... +[ 5.002917] lp: driver loaded but no devices found +[ 5.034274] ppdev: user-space parallel port driver +[ 5.072695] systemd[1]: Started Journal Service. +[ 5.076269] parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE,EPP] +[ 5.076901] parport0: irq 7 detected +[ 5.170810] lp0: using parport0 (polling). +[ 9.264316] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro +[ 9.419063] systemd-journald[235]: Received request to flush runtime journal from PID 1 +[ 9.758450] mei_me 0000:00:16.0: enabling device (0000 -> 0002) +[ 9.785562] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 +[ 9.802626] intel-lpss 0000:00:15.0: enabling device (0000 -> 0002) +[ 9.870894] idma64 idma64.0: Found Intel integrated DMA 64-bit +[ 9.902566] intel-lpss 0000:00:15.1: enabling device (0000 -> 0002) +[ 9.902763] idma64 idma64.1: Found Intel integrated DMA 64-bit +[ 9.934567] intel-lpss 0000:00:1e.0: enabling device (0000 -> 0002) +[ 9.934762] idma64 idma64.2: Found Intel integrated DMA 64-bit +[ 9.971878] Bluetooth: Core ver 2.21 +[ 9.971886] NET: Registered protocol family 31 +[ 9.971887] Bluetooth: HCI device and connection manager initialized +[ 9.971889] Bluetooth: HCI socket layer initialized +[ 9.971891] Bluetooth: L2CAP socket layer initialized +[ 9.971893] Bluetooth: SCO socket layer initialized +[ 10.190441] Bluetooth: HCI UART driver ver 2.3 +[ 10.190443] Bluetooth: HCI UART protocol H4 registered +[ 10.190443] Bluetooth: HCI UART protocol BCSP registered +[ 10.190444] Bluetooth: HCI UART protocol LL registered +[ 10.190444] Bluetooth: HCI UART protocol ATH3K registered +[ 10.190445] Bluetooth: HCI UART protocol Three-wire (H5) registered +[ 10.190463] Bluetooth: HCI UART protocol Intel registered +[ 10.190469] Bluetooth: HCI UART protocol BCM registered +[ 10.190470] Bluetooth: HCI UART protocol QCA registered +[ 10.253741] AVX2 version of gcm_enc/dec engaged. +[ 10.253742] AES CTR mode by8 optimization enabled +[ 10.502714] dw-apb-uart.2: ttyS4 at MMIO 0xdf14b000 (irq = 20, base_baud = 115200) is a 16550A +[ 10.620393] snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002) +[ 10.620497] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915_bpo]) +[ 10.716741] snd_hda_codec_realtek hdaudioC0D0: ALC1150: SKU not ready 0x00000000 +[ 10.717223] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC1150: line_outs=3 (0x14/0x15/0x16/0x0/0x0) type:line +[ 10.717224] snd_hda_codec_realtek hdaudioC0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) +[ 10.717225] snd_hda_codec_realtek hdaudioC0D0: hp_outs=1 (0x1b/0x0/0x0/0x0/0x0) +[ 10.717226] snd_hda_codec_realtek hdaudioC0D0: mono: mono_out=0x0 +[ 10.717227] snd_hda_codec_realtek hdaudioC0D0: dig-out=0x1e/0x0 +[ 10.717228] snd_hda_codec_realtek hdaudioC0D0: inputs: +[ 10.717229] snd_hda_codec_realtek hdaudioC0D0: Front Mic=0x19 +[ 10.717230] snd_hda_codec_realtek hdaudioC0D0: Rear Mic=0x18 +[ 10.717230] snd_hda_codec_realtek hdaudioC0D0: Line=0x1a +[ 10.755617] input: HDA Intel PCH Front Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input10 +[ 10.755651] input: HDA Intel PCH Rear Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input11 +[ 10.755678] input: HDA Intel PCH Line as /devices/pci0000:00/0000:00:1f.3/sound/card0/input12 +[ 10.755705] input: HDA Intel PCH Line Out Front as /devices/pci0000:00/0000:00:1f.3/sound/card0/input13 +[ 10.755732] input: HDA Intel PCH Line Out Surround as /devices/pci0000:00/0000:00:1f.3/sound/card0/input14 +[ 10.755759] input: HDA Intel PCH Line Out CLFE as /devices/pci0000:00/0000:00:1f.3/sound/card0/input15 +[ 10.755785] input: HDA Intel PCH Front Headphone as /devices/pci0000:00/0000:00:1f.3/sound/card0/input16 +[ 10.755812] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input17 +[ 10.755839] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input18 +[ 10.755868] input: HDA Intel PCH HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input19 +[ 10.898309] intel_rapl: Found RAPL domain package +[ 10.898310] intel_rapl: Found RAPL domain core +[ 10.898311] intel_rapl: Found RAPL domain uncore +[ 10.898312] intel_rapl: Found RAPL domain dram +[ 11.595395] Adding 8268796k swap on /dev/sda3. Priority:-1 extents:1 across:8268796k FS +[ 18.860473] audit: type=1400 audit(1478497746.636:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/ubuntu-core-launcher" pid=581 comm="apparmor_parser" +[ 18.861195] audit: type=1400 audit(1478497746.636:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/sbin/dhclient" pid=578 comm="apparmor_parser" +[ 18.861199] audit: type=1400 audit(1478497746.636:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=578 comm="apparmor_parser" +[ 18.861201] audit: type=1400 audit(1478497746.636:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-helper" pid=578 comm="apparmor_parser" +[ 18.861218] audit: type=1400 audit(1478497746.636:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=578 comm="apparmor_parser" +[ 18.861444] audit: type=1400 audit(1478497746.636:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/lightdm/lightdm-guest-session" pid=577 comm="apparmor_parser" +[ 18.861448] audit: type=1400 audit(1478497746.636:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/lightdm/lightdm-guest-session//chromium" pid=577 comm="apparmor_parser" +[ 18.862049] audit: type=1400 audit(1478497746.636:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/cups-browsed" pid=583 comm="apparmor_parser" +[ 18.862532] audit: type=1400 audit(1478497746.636:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/ippusbxd" pid=585 comm="apparmor_parser" +[ 18.862920] audit: type=1400 audit(1478497746.640:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/cups/backend/cups-pdf" pid=584 comm="apparmor_parser" +[ 21.632541] IPv6: ADDRCONF(NETDEV_UP): enp0s31f6: link is not ready +[ 21.839070] IPv6: ADDRCONF(NETDEV_UP): enp0s31f6: link is not ready +[ 24.388841] e1000e: enp0s31f6 NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx/Tx +[ 24.388848] e1000e 0000:00:1f.6 enp0s31f6: 10/100 speed: disabling TSO +[ 24.388896] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s31f6: link becomes ready +[ 31.331711] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 +[ 31.331712] Bluetooth: BNEP filters: protocol multicast +[ 31.331715] Bluetooth: BNEP socket layer initialized +[ 201.164830] risa_dev_ramdrive_timing: module verification failed: signature and/or required key missing - tainting kernel +[ 201.166005] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 201.179129] bdbm: ===================================================================== +[ 201.179134] bdbm: DEVICE PARAMETERS +[ 201.179137] bdbm: ===================================================================== +[ 201.179139] bdbm: # of channels = 8 +[ 201.179142] bdbm: # of chips per channel = 16 +[ 201.179144] bdbm: # of blocks per chip = 256 +[ 201.179146] bdbm: # of pages per block = 128 +[ 201.179148] bdbm: # of subpages per page = 1 +[ 201.179150] bdbm: page main size = 4096 bytes +[ 201.179153] bdbm: page oob size = 64 bytes +[ 201.179156] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 201.179158] bdbm: +[ 201.179161] bdbm: ===================================================================== +[ 201.179163] bdbm: RAM DISK INFO +[ 201.179165] bdbm: ===================================================================== +[ 201.179168] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[ 202.774307] bdbm: ramssd addr = ffffc90050001000 +[ 202.774310] bdbm: +[ 202.774310] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 204.335386] bdbm: *** building ptr_ramssd_data done +[ 204.335622] bdbm: [dm_ramdrive_probe] probe done! +[ 204.335624] bdbm: [dm_ramdrive_open] open done! +[ 204.385624] bdbm: nvm cache addr = ffffc90870003000 +[ 204.386642] bdbm: ========================================================== +[ 204.386643] bdbm: NVM CONFIGURATION +[ 204.386644] bdbm: ========================================================== +[ 204.386645] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[ 204.544637] bdbm: TRIM is disabled +[ 204.544769] bdbm: ===================================================================== +[ 204.544770] bdbm: DEVICE PARAMETERS +[ 204.544770] bdbm: ===================================================================== +[ 204.544771] bdbm: # of channels = 8 +[ 204.544771] bdbm: # of chips per channel = 16 +[ 204.544772] bdbm: # of blocks per chip = 256 +[ 204.544772] bdbm: # of pages per block = 128 +[ 204.544772] bdbm: # of subpages per page = 1 +[ 204.544774] bdbm: page main size = 4096 bytes +[ 204.544775] bdbm: page oob size = 64 bytes +[ 204.544775] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 204.544776] bdbm: +[ 204.544776] bdbm: ===================================================================== +[ 204.544777] bdbm: FTL CONFIGURATION +[ 204.544777] bdbm: ===================================================================== +[ 204.544778] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 204.544778] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 204.544780] bdbm: wl policy = 1 (1: none, 2: swap) +[ 204.544780] bdbm: trim mode = 2 (1: enable, 2: disable) +[ 204.544781] bdbm: kernel sector = 512 bytes +[ 204.544781] bdbm: +[ 204.544783] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 204.614242] bdbm: llm_make_req: 0, 1 +[ 205.039138] bdbm: llm_make_req: 50000, 96 +[ 205.186154] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[ 205.186157] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 210.266040] bdbm: llm_make_req: 100000, 95 +[ 221.656156] bdbm: llm_make_req: 150000, 96 +[ 221.901463] bdbm: llm_make_req: 200000, 96 +[ 222.146440] bdbm: llm_make_req: 250000, 96 +[ 222.392132] bdbm: llm_make_req: 300000, 96 +[ 222.637308] bdbm: llm_make_req: 350000, 96 +[ 222.881605] bdbm: llm_make_req: 400000, 96 +[ 223.129922] bdbm: llm_make_req: 450000, 96 +[ 223.374084] bdbm: llm_make_req: 500000, 96 +[ 223.618766] bdbm: llm_make_req: 550000, 96 +[ 223.862906] bdbm: llm_make_req: 600000, 96 +[ 224.111674] bdbm: llm_make_req: 650000, 96 +[ 224.355987] bdbm: llm_make_req: 700000, 96 +[ 224.599779] bdbm: llm_make_req: 750000, 94 +[ 224.842620] bdbm: llm_make_req: 800000, 96 +[ 225.085519] bdbm: llm_make_req: 850000, 96 +[ 225.328288] bdbm: llm_make_req: 900000, 96 +[ 225.571774] bdbm: llm_make_req: 950000, 96 +[ 225.815612] bdbm: llm_make_req: 1000000, 96 +[ 226.058492] bdbm: llm_make_req: 1050000, 96 +[ 226.301717] bdbm: llm_make_req: 1100000, 96 +[ 226.554982] bdbm: llm_make_req: 1150000, 96 +[ 226.798877] bdbm: llm_make_req: 1200000, 96 +[ 227.041770] bdbm: llm_make_req: 1250000, 96 +[ 227.285225] bdbm: llm_make_req: 1300000, 96 +[ 227.527897] bdbm: llm_make_req: 1350000, 96 +[ 227.770621] bdbm: llm_make_req: 1400000, 96 +[ 228.013155] bdbm: llm_make_req: 1450000, 96 +[ 228.255755] bdbm: llm_make_req: 1500000, 96 +[ 228.504349] bdbm: llm_make_req: 1550000, 96 +[ 228.749987] bdbm: llm_make_req: 1600000, 96 +[ 228.996107] bdbm: llm_make_req: 1650000, 96 +[ 229.243641] bdbm: llm_make_req: 1700000, 96 +[ 229.490537] bdbm: llm_make_req: 1750000, 96 +[ 229.737032] bdbm: llm_make_req: 1800000, 96 +[ 229.983577] bdbm: llm_make_req: 1850000, 95 +[ 230.229291] bdbm: llm_make_req: 1900000, 96 +[ 230.475663] bdbm: llm_make_req: 1950000, 78 +[ 230.721034] bdbm: llm_make_req: 2000000, 96 +[ 230.967432] bdbm: llm_make_req: 2050000, 96 +[ 231.214258] bdbm: llm_make_req: 2100000, 96 +[ 231.458001] bdbm: llm_make_req: 2150000, 96 +[ 231.700608] bdbm: llm_make_req: 2200000, 96 +[ 231.943900] bdbm: llm_make_req: 2250000, 96 +[ 232.186359] bdbm: llm_make_req: 2300000, 96 +[ 232.429009] bdbm: llm_make_req: 2350000, 96 +[ 232.671224] bdbm: llm_make_req: 2400000, 96 +[ 232.913611] bdbm: llm_make_req: 2450000, 96 +[ 233.155616] bdbm: llm_make_req: 2500000, 96 +[ 233.398179] bdbm: llm_make_req: 2550000, 95 +[ 233.641571] bdbm: llm_make_req: 2600000, 96 +[ 233.884897] bdbm: llm_make_req: 2650000, 96 +[ 234.128019] bdbm: llm_make_req: 2700000, 95 +[ 235.140299] bdbm: llm_make_req: 2750000, 94 +[ 235.338086] bdbm: llm_make_req: 2800000, 89 +[ 235.537758] bdbm: llm_make_req: 2850000, 95 +[ 235.738426] bdbm: llm_make_req: 2900000, 96 +[ 235.938552] bdbm: llm_make_req: 2950000, 91 +[ 236.138003] bdbm: llm_make_req: 3000000, 95 +[ 236.336530] bdbm: llm_make_req: 3050000, 92 +[ 236.534261] bdbm: llm_make_req: 3100000, 94 +[ 236.734500] bdbm: llm_make_req: 3150000, 95 +[ 236.932780] bdbm: llm_make_req: 3200000, 96 +[ 237.132222] bdbm: llm_make_req: 3250000, 95 +[ 237.331569] bdbm: llm_make_req: 3300000, 83 +[ 237.530720] bdbm: llm_make_req: 3350000, 96 +[ 237.731338] bdbm: llm_make_req: 3400000, 96 +[ 237.929979] bdbm: llm_make_req: 3450000, 96 +[ 238.128180] bdbm: llm_make_req: 3500000, 96 +[ 238.327188] bdbm: llm_make_req: 3550000, 96 +[ 238.526338] bdbm: llm_make_req: 3600000, 96 +[ 238.724756] bdbm: llm_make_req: 3650000, 95 +[ 238.923889] bdbm: llm_make_req: 3700000, 96 +[ 239.123168] bdbm: llm_make_req: 3750000, 85 +[ 239.323025] bdbm: llm_make_req: 3800000, 93 +[ 239.522488] bdbm: llm_make_req: 3850000, 96 +[ 239.720887] bdbm: llm_make_req: 3900000, 95 +[ 239.920058] bdbm: llm_make_req: 3950000, 96 +[ 240.120300] bdbm: llm_make_req: 4000000, 96 +[ 240.319086] bdbm: llm_make_req: 4050000, 95 +[ 240.517112] bdbm: llm_make_req: 4100000, 95 +[ 240.714603] bdbm: llm_make_req: 4150000, 95 +[ 240.914436] bdbm: llm_make_req: 4200000, 96 +[ 241.113846] bdbm: llm_make_req: 4250000, 96 +[ 241.313106] bdbm: llm_make_req: 4300000, 92 +[ 241.512986] bdbm: llm_make_req: 4350000, 91 +[ 241.711582] bdbm: llm_make_req: 4400000, 96 +[ 241.909202] bdbm: llm_make_req: 4450000, 96 +[ 242.108501] bdbm: llm_make_req: 4500000, 96 +[ 242.306706] bdbm: llm_make_req: 4550000, 96 +[ 242.505194] bdbm: llm_make_req: 4600000, 95 +[ 242.703368] bdbm: llm_make_req: 4650000, 96 +[ 242.901631] bdbm: llm_make_req: 4700000, 96 +[ 243.100489] bdbm: llm_make_req: 4750000, 95 +[ 243.299840] bdbm: llm_make_req: 4800000, 96 +[ 243.498800] bdbm: llm_make_req: 4850000, 96 +[ 243.697887] bdbm: llm_make_req: 4900000, 94 +[ 244.262378] bdbm: llm_make_req: 4950000, 96 +[ 245.203313] bdbm: llm_make_req: 5000000, 96 +[ 246.361698] bdbm: llm_make_req: 5050000, 96 +[ 248.227744] bdbm: llm_make_req: 5100000, 92 +[ 249.827652] bdbm: llm_make_req: 5150000, 96 +[ 251.541004] bdbm: llm_make_req: 5200000, 96 +[ 253.597251] bdbm: llm_make_req: 5250000, 96 +[ 255.781240] bdbm: llm_make_req: 5300000, 96 +[ 257.618401] bdbm: llm_make_req: 5350000, 96 +[ 259.858078] bdbm: llm_make_req: 5400000, 93 +[ 262.006318] bdbm: llm_make_req: 5450000, 96 +[ 263.866201] bdbm: llm_make_req: 5500000, 96 +[ 266.282530] bdbm: llm_make_req: 5550000, 96 +[ 268.619633] bdbm: llm_make_req: 5600000, 96 +[ 270.468954] bdbm: llm_make_req: 5650000, 96 +[ 273.175339] bdbm: llm_make_req: 5700000, 96 +[ 275.532183] bdbm: llm_make_req: 5750000, 96 +[ 277.329108] bdbm: llm_make_req: 5800000, 95 +[ 279.807165] bdbm: llm_make_req: 5850000, 96 +[ 282.330197] bdbm: llm_make_req: 5900000, 96 +[ 284.593995] bdbm: llm_make_req: 5950000, 96 +[ 287.177560] bdbm: llm_make_req: 6000000, 96 +[ 289.355869] bdbm: llm_make_req: 6050000, 96 +[ 291.985928] bdbm: llm_make_req: 6100000, 96 +[ 294.560538] bdbm: llm_make_req: 6150000, 96 +[ 296.509470] bdbm: llm_make_req: 6200000, 96 +[ 299.171818] bdbm: llm_make_req: 6250000, 96 +[ 301.798241] bdbm: llm_make_req: 6300000, 96 +[ 304.096547] bdbm: llm_make_req: 6350000, 93 +[ 306.702625] bdbm: llm_make_req: 6400000, 96 +[ 308.908055] bdbm: llm_make_req: 6450000, 96 +[ 311.727119] bdbm: llm_make_req: 6500000, 32 +[ 314.293999] bdbm: llm_make_req: 6550000, 96 +[ 316.331564] bdbm: llm_make_req: 6600000, 96 +[ 319.043634] bdbm: llm_make_req: 6650000, 96 +[ 321.502084] bdbm: llm_make_req: 6700000, 96 +[ 324.258749] bdbm: llm_make_req: 6750000, 95 +[ 327.025064] bdbm: llm_make_req: 6800000, 96 +[ 329.120779] bdbm: llm_make_req: 6850000, 96 +[ 332.014897] bdbm: llm_make_req: 6900000, 96 +[ 334.549682] bdbm: llm_make_req: 6950000, 96 +[ 337.143361] bdbm: llm_make_req: 7000000, 96 +[ 340.296449] bdbm: llm_make_req: 7050000, 96 +[ 342.600292] bdbm: llm_make_req: 7100000, 95 +[ 345.535470] bdbm: llm_make_req: 7150000, 96 +[ 348.044884] bdbm: llm_make_req: 7200000, 96 +[ 350.618577] bdbm: llm_make_req: 7250000, 96 +[ 353.757609] bdbm: llm_make_req: 7300000, 96 +[ 356.148928] bdbm: llm_make_req: 7350000, 96 +[ 359.216706] bdbm: llm_make_req: 7400000, 96 +[ 361.626726] bdbm: llm_make_req: 7450000, 96 +[ 364.501103] bdbm: llm_make_req: 7500000, 95 +[ 367.500019] bdbm: llm_make_req: 7550000, 96 +[ 370.274734] bdbm: llm_make_req: 7600000, 96 +[ 373.361624] bdbm: llm_make_req: 7650000, 96 +[ 375.633550] bdbm: llm_make_req: 7700000, 88 +[ 378.705761] bdbm: llm_make_req: 7750000, 95 +[ 381.325732] bdbm: llm_make_req: 7800000, 96 +[ 384.002692] bdbm: llm_make_req: 7850000, 96 +[ 387.103504] bdbm: llm_make_req: 7900000, 96 +[ 389.598918] bdbm: llm_make_req: 7950000, 79 +[ 392.648276] bdbm: llm_make_req: 8000000, 95 +[ 394.972355] bdbm: llm_make_req: 8050000, 96 +[ 397.896511] bdbm: llm_make_req: 8100000, 96 +[ 400.738839] bdbm: llm_make_req: 8150000, 96 +[ 403.237549] bdbm: llm_make_req: 8200000, 96 +[ 406.510201] bdbm: llm_make_req: 8250000, 96 +[ 408.967336] bdbm: llm_make_req: 8300000, 96 +[ 412.044499] bdbm: llm_make_req: 8350000, 96 +[ 414.443778] bdbm: llm_make_req: 8400000, 96 +[ 417.362853] bdbm: llm_make_req: 8450000, 96 +[ 420.305143] bdbm: llm_make_req: 8500000, 96 +[ 422.749583] bdbm: llm_make_req: 8550000, 95 +[ 426.055212] bdbm: llm_make_req: 8600000, 96 +[ 428.415057] bdbm: llm_make_req: 8650000, 96 +[ 431.586515] bdbm: llm_make_req: 8700000, 96 +[ 434.092372] bdbm: llm_make_req: 8750000, 96 +[ 436.951925] bdbm: llm_make_req: 8800000, 96 +[ 439.963240] bdbm: llm_make_req: 8850000, 96 +[ 442.613082] bdbm: llm_make_req: 8900000, 94 +[ 445.624892] bdbm: llm_make_req: 8950000, 96 +[ 447.814728] bdbm: llm_make_req: 9000000, 96 +[ 450.768162] bdbm: llm_make_req: 9050000, 96 +[ 453.427122] bdbm: llm_make_req: 9100000, 96 +[ 456.203081] bdbm: llm_make_req: 9150000, 96 +[ 459.095193] bdbm: llm_make_req: 9200000, 96 +[ 461.352915] bdbm: llm_make_req: 9250000, 92 +[ 464.347346] bdbm: llm_make_req: 9300000, 96 +[ 466.881884] bdbm: llm_make_req: 9350000, 96 +[ 469.432553] bdbm: llm_make_req: 9400000, 96 +[ 472.471076] bdbm: llm_make_req: 9450000, 96 +[ 474.770441] bdbm: llm_make_req: 9500000, 96 +[ 477.660217] bdbm: llm_make_req: 9550000, 96 +[ 480.058891] bdbm: llm_make_req: 9600000, 96 +[ 482.719745] bdbm: llm_make_req: 9650000, 96 +[ 485.687242] bdbm: llm_make_req: 9700000, 96 +[ 488.003533] bdbm: llm_make_req: 9750000, 96 +[ 490.764676] bdbm: llm_make_req: 9800000, 96 +[ 493.101724] bdbm: llm_make_req: 9850000, 96 +[ 495.624300] bdbm: llm_make_req: 9900000, 96 +[ 498.571196] bdbm: llm_make_req: 9950000, 96 +[ 500.723782] bdbm: llm_make_req: 10000000, 96 +[ 503.362873] bdbm: llm_make_req: 10050000, 96 +[ 505.891213] bdbm: llm_make_req: 10100000, 96 +[ 508.367461] bdbm: llm_make_req: 10150000, 96 +[ 510.859033] bdbm: llm_make_req: 10200000, 96 +[ 512.875896] bdbm: llm_make_req: 10250000, 96 +[ 515.528765] bdbm: llm_make_req: 10300000, 96 +[ 517.796255] bdbm: llm_make_req: 10350000, 96 +[ 519.583320] bdbm: llm_make_req: 10400000, 94 +[ 522.112638] bdbm: llm_make_req: 10450000, 94 +[ 524.176712] bdbm: llm_make_req: 10500000, 96 +[ 525.869177] bdbm: llm_make_req: 10550000, 96 +[ 528.054248] bdbm: llm_make_req: 10600000, 94 +[ 529.819268] bdbm: llm_make_req: 10650000, 96 +[ 531.474200] bdbm: llm_make_req: 10700000, 96 +[ 533.395905] bdbm: llm_make_req: 10750000, 95 +[ 535.344286] bdbm: llm_make_req: 10800000, 96 +[ 536.913559] bdbm: llm_make_req: 10850000, 96 +[ 538.308890] bdbm: llm_make_req: 10900000, 93 +[ 540.060481] bdbm: llm_make_req: 10950000, 95 +[ 541.805470] bdbm: llm_make_req: 11000000, 95 +[ 543.069033] bdbm: llm_make_req: 11050000, 96 +[ 544.469768] bdbm: llm_make_req: 11100000, 96 +[ 546.148145] bdbm: llm_make_req: 11150000, 96 +[ 547.847593] bdbm: llm_make_req: 11200000, 93 +[ 548.973972] bdbm: llm_make_req: 11250000, 96 +[ 550.504478] bdbm: llm_make_req: 11300000, 96 +[ 552.226897] bdbm: llm_make_req: 11350000, 96 +[ 553.562940] bdbm: llm_make_req: 11400000, 96 +[ 554.887879] bdbm: llm_make_req: 11450000, 96 +[ 556.595483] bdbm: llm_make_req: 11500000, 96 +[ 558.322996] bdbm: llm_make_req: 11550000, 95 +[ 559.652525] bdbm: llm_make_req: 11600000, 96 +[ 560.967344] bdbm: llm_make_req: 11650000, 96 +[ 562.669621] bdbm: llm_make_req: 11700000, 96 +[ 564.351260] bdbm: llm_make_req: 11750000, 92 +[ 565.692940] bdbm: llm_make_req: 11800000, 95 +[ 566.980850] bdbm: llm_make_req: 11850000, 96 +[ 568.668540] bdbm: llm_make_req: 11900000, 96 +[ 570.365368] bdbm: llm_make_req: 11950000, 96 +[ 571.733207] bdbm: llm_make_req: 12000000, 94 +[ 573.058497] bdbm: llm_make_req: 12050000, 88 +[ 574.782891] bdbm: llm_make_req: 12100000, 96 +[ 576.500224] bdbm: llm_make_req: 12150000, 96 +[ 577.721657] bdbm: llm_make_req: 12200000, 96 +[ 579.150671] bdbm: llm_make_req: 12250000, 96 +[ 580.926699] bdbm: llm_make_req: 12300000, 96 +[ 582.699336] bdbm: llm_make_req: 12350000, 96 +[ 583.818186] bdbm: llm_make_req: 12400000, 96 +[ 585.683170] bdbm: llm_make_req: 12450000, 90 +[ 587.795552] bdbm: llm_make_req: 12500000, 96 +[ 589.381448] bdbm: llm_make_req: 12550000, 96 +[ 591.259697] bdbm: llm_make_req: 12600000, 93 +[ 593.534836] bdbm: llm_make_req: 12650000, 96 +[ 595.307871] bdbm: llm_make_req: 12700000, 96 +[ 597.203129] bdbm: llm_make_req: 12750000, 96 +[ 599.226624] bdbm: llm_make_req: 12800000, 96 +[ 601.292379] bdbm: llm_make_req: 12850000, 96 +[ 603.260673] bdbm: llm_make_req: 12900000, 96 +[ 605.308290] bdbm: llm_make_req: 12950000, 96 +[ 607.441487] bdbm: llm_make_req: 13000000, 96 +[ 609.416070] bdbm: llm_make_req: 13050000, 96 +[ 611.537479] bdbm: llm_make_req: 13100000, 96 +[ 613.675423] bdbm: llm_make_req: 13150000, 96 +[ 615.769390] bdbm: llm_make_req: 13200000, 90 +[ 617.958838] bdbm: llm_make_req: 13250000, 95 +[ 620.050179] bdbm: llm_make_req: 13300000, 96 +[ 622.372563] bdbm: llm_make_req: 13350000, 96 +[ 624.686290] bdbm: llm_make_req: 13400000, 96 +[ 626.569784] bdbm: llm_make_req: 13450000, 96 +[ 629.156648] bdbm: llm_make_req: 13500000, 95 +[ 631.498905] bdbm: llm_make_req: 13550000, 96 +[ 633.298713] bdbm: llm_make_req: 13600000, 94 +[ 635.651791] bdbm: llm_make_req: 13650000, 96 +[ 638.153701] bdbm: llm_make_req: 13700000, 96 +[ 640.221419] bdbm: llm_make_req: 13750000, 94 +[ 642.632220] bdbm: llm_make_req: 13800000, 96 +[ 644.886739] bdbm: llm_make_req: 13850000, 96 +[ 647.234697] bdbm: llm_make_req: 13900000, 95 +[ 649.675524] bdbm: llm_make_req: 13950000, 96 +[ 651.691675] bdbm: llm_make_req: 14000000, 96 +[ 654.345878] bdbm: llm_make_req: 14050000, 95 +[ 656.911662] bdbm: llm_make_req: 14100000, 96 +[ 658.841216] bdbm: llm_make_req: 14150000, 92 +[ 661.483398] bdbm: llm_make_req: 14200000, 96 +[ 664.087358] bdbm: llm_make_req: 14250000, 96 +[ 666.427651] bdbm: llm_make_req: 14300000, 96 +[ 669.133103] bdbm: llm_make_req: 14350000, 96 +[ 671.303958] bdbm: llm_make_req: 14400000, 96 +[ 673.855542] bdbm: llm_make_req: 14450000, 96 +[ 676.776821] bdbm: llm_make_req: 14500000, 96 +[ 678.988975] bdbm: llm_make_req: 14550000, 96 +[ 681.712767] bdbm: llm_make_req: 14600000, 96 +[ 684.087130] bdbm: llm_make_req: 14650000, 96 +[ 686.776235] bdbm: llm_make_req: 14700000, 95 +[ 689.417925] bdbm: llm_make_req: 14750000, 96 +[ 691.532511] bdbm: llm_make_req: 14800000, 95 +[ 694.296593] bdbm: llm_make_req: 14850000, 96 +[ 696.793824] bdbm: llm_make_req: 14900000, 96 +[ 699.564918] bdbm: llm_make_req: 14950000, 90 +[ 702.386407] bdbm: llm_make_req: 15000000, 96 +[ 704.505684] bdbm: llm_make_req: 15050000, 96 +[ 707.382962] bdbm: llm_make_req: 15100000, 96 +[ 709.914429] bdbm: llm_make_req: 15150000, 96 +[ 712.679289] bdbm: llm_make_req: 15200000, 95 +[ 715.506695] bdbm: llm_make_req: 15250000, 96 +[ 717.613619] bdbm: llm_make_req: 15300000, 96 +[ 720.437621] bdbm: llm_make_req: 15350000, 96 +[ 723.046525] bdbm: llm_make_req: 15400000, 96 +[ 725.757361] bdbm: llm_make_req: 15450000, 96 +[ 728.601973] bdbm: llm_make_req: 15500000, 96 +[ 730.739266] bdbm: llm_make_req: 15550000, 96 +[ 733.586833] bdbm: llm_make_req: 15600000, 96 +[ 736.075221] bdbm: llm_make_req: 15650000, 96 +[ 738.853875] bdbm: llm_make_req: 15700000, 96 +[ 741.726354] bdbm: llm_make_req: 15750000, 96 +[ 743.770837] bdbm: llm_make_req: 15800000, 96 +[ 746.597093] bdbm: llm_make_req: 15850000, 96 +[ 749.167747] bdbm: llm_make_req: 15900000, 96 +[ 751.831554] bdbm: llm_make_req: 15950000, 96 +[ 754.680467] bdbm: llm_make_req: 16000000, 96 +[ 756.775950] bdbm: llm_make_req: 16050000, 96 +[ 759.650773] bdbm: llm_make_req: 16100000, 95 +[ 762.241261] bdbm: llm_make_req: 16150000, 96 +[ 764.954648] bdbm: llm_make_req: 16200000, 96 +[ 767.764600] bdbm: llm_make_req: 16250000, 78 +[ 769.850016] bdbm: llm_make_req: 16300000, 92 +[ 772.710733] bdbm: llm_make_req: 16350000, 96 +[ 775.339036] bdbm: llm_make_req: 16400000, 96 +[ 777.927050] bdbm: llm_make_req: 16450000, 96 +[ 780.700524] bdbm: llm_make_req: 16500000, 96 +[ 782.777149] bdbm: llm_make_req: 16550000, 96 +[ 785.468723] bdbm: llm_make_req: 16600000, 96 +[ 788.165198] bdbm: llm_make_req: 16650000, 96 +[ 790.578227] bdbm: llm_make_req: 16700000, 96 +[ 793.318965] bdbm: llm_make_req: 16750000, 96 +[ 795.455501] bdbm: llm_make_req: 16800000, 96 +[ 798.097038] bdbm: llm_make_req: 16850000, 96 +[ 800.994822] bdbm: llm_make_req: 16900000, 96 +[ 803.262234] bdbm: llm_make_req: 16950000, 96 +[ 805.984086] bdbm: llm_make_req: 17000000, 95 +[ 808.333939] bdbm: llm_make_req: 17050000, 96 +[ 811.016979] bdbm: llm_make_req: 17100000, 95 +[ 813.658153] bdbm: llm_make_req: 17150000, 96 +[ 815.662260] bdbm: llm_make_req: 17200000, 92 +[ 818.298221] bdbm: llm_make_req: 17250000, 96 +[ 820.928330] bdbm: llm_make_req: 17300000, 96 +[ 823.200946] bdbm: llm_make_req: 17350000, 93 +[ 825.766215] bdbm: llm_make_req: 17400000, 96 +[ 827.961875] bdbm: llm_make_req: 17450000, 96 +[ 830.568125] bdbm: llm_make_req: 17500000, 96 +[ 833.124537] bdbm: llm_make_req: 17550000, 96 +[ 835.057069] bdbm: llm_make_req: 17600000, 96 +[ 837.739938] bdbm: llm_make_req: 17650000, 96 +[ 840.063749] bdbm: llm_make_req: 17700000, 96 +[ 841.875868] bdbm: llm_make_req: 17750000, 96 +[ 844.499381] bdbm: llm_make_req: 17800000, 24 +[ 846.671470] bdbm: llm_make_req: 17850000, 94 +[ 848.404506] bdbm: llm_make_req: 17900000, 95 +[ 850.843021] bdbm: llm_make_req: 17950000, 96 +[ 852.865212] bdbm: llm_make_req: 18000000, 96 +[ 854.464659] bdbm: llm_make_req: 18050000, 96 +[ 856.799006] bdbm: llm_make_req: 18100000, 96 +[ 858.674418] bdbm: llm_make_req: 18150000, 96 +[ 860.311504] bdbm: llm_make_req: 18200000, 96 +[ 862.414257] bdbm: llm_make_req: 18250000, 96 +[ 864.528815] bdbm: llm_make_req: 18300000, 93 +[ 866.113422] bdbm: llm_make_req: 18350000, 96 +[ 867.756478] bdbm: llm_make_req: 18400000, 86 +[ 869.802358] bdbm: llm_make_req: 18450000, 96 +[ 871.488698] bdbm: llm_make_req: 18500000, 96 +[ 872.975192] bdbm: llm_make_req: 18550000, 87 +[ 874.972364] bdbm: llm_make_req: 18600000, 96 +[ 876.679027] bdbm: llm_make_req: 18650000, 96 +[ 878.364709] bdbm: llm_make_req: 18700000, 96 +[ 880.218703] bdbm: llm_make_req: 18750000, 96 +[ 882.264468] bdbm: llm_make_req: 18800000, 95 +[ 883.924440] bdbm: llm_make_req: 18850000, 96 +[ 885.459701] bdbm: llm_make_req: 18900000, 93 +[ 887.517535] bdbm: llm_make_req: 18950000, 96 +[ 889.250898] bdbm: llm_make_req: 19000000, 96 +[ 890.874357] bdbm: llm_make_req: 19050000, 96 +[ 892.769542] bdbm: llm_make_req: 19100000, 94 +[ 894.792923] bdbm: llm_make_req: 19150000, 96 +[ 896.432877] bdbm: llm_make_req: 19200000, 96 +[ 897.939600] bdbm: llm_make_req: 19250000, 96 +[ 899.954273] bdbm: llm_make_req: 19300000, 96 +[ 901.634361] bdbm: llm_make_req: 19350000, 96 +[ 903.307181] bdbm: llm_make_req: 19400000, 96 +[ 905.147896] bdbm: llm_make_req: 19450000, 96 +[ 907.180658] bdbm: llm_make_req: 19500000, 96 +[ 908.857362] bdbm: llm_make_req: 19550000, 96 +[ 910.361492] bdbm: llm_make_req: 19600000, 92 +[ 912.367679] bdbm: llm_make_req: 19650000, 96 +[ 914.052745] bdbm: llm_make_req: 19700000, 95 +[ 915.569218] bdbm: llm_make_req: 19750000, 96 +[ 917.694603] bdbm: llm_make_req: 19800000, 96 +[ 919.560649] bdbm: llm_make_req: 19850000, 96 +[ 921.364986] bdbm: llm_make_req: 19900000, 96 +[ 923.536612] bdbm: llm_make_req: 19950000, 96 +[ 925.626838] bdbm: llm_make_req: 20000000, 96 +[ 927.535716] bdbm: llm_make_req: 20050000, 96 +[ 929.820923] bdbm: llm_make_req: 20100000, 96 +[ 931.912598] bdbm: llm_make_req: 20150000, 96 +[ 933.730627] bdbm: llm_make_req: 20200000, 96 +[ 935.981809] bdbm: llm_make_req: 20250000, 96 +[ 938.063434] bdbm: llm_make_req: 20300000, 96 +[ 939.964391] bdbm: llm_make_req: 20350000, 96 +[ 942.188190] bdbm: llm_make_req: 20400000, 94 +[ 944.340132] bdbm: llm_make_req: 20450000, 96 +[ 946.225362] bdbm: llm_make_req: 20500000, 96 +[ 948.534124] bdbm: llm_make_req: 20550000, 35 +[ 950.728902] bdbm: llm_make_req: 20600000, 96 +[ 952.581970] bdbm: llm_make_req: 20650000, 96 +[ 955.052930] bdbm: llm_make_req: 20700000, 96 +[ 957.291202] bdbm: llm_make_req: 20750000, 96 +[ 959.052652] bdbm: llm_make_req: 20800000, 96 +[ 961.678031] bdbm: llm_make_req: 20850000, 96 +[ 963.939429] bdbm: llm_make_req: 20900000, 96 +[ 965.751944] bdbm: llm_make_req: 20950000, 96 +[ 968.044500] bdbm: llm_make_req: 21000000, 96 +[ 970.511669] bdbm: llm_make_req: 21050000, 96 +[ 972.633966] bdbm: llm_make_req: 21100000, 96 +[ 975.018109] bdbm: llm_make_req: 21150000, 96 +[ 977.266454] bdbm: llm_make_req: 21200000, 96 +[ 979.581088] bdbm: llm_make_req: 21250000, 96 +[ 981.963867] bdbm: llm_make_req: 21300000, 96 +[ 984.004174] bdbm: llm_make_req: 21350000, 96 +[ 986.530572] bdbm: llm_make_req: 21400000, 96 +[ 988.908490] bdbm: llm_make_req: 21450000, 96 +[ 990.777452] bdbm: llm_make_req: 21500000, 96 +[ 993.186457] bdbm: llm_make_req: 21550000, 96 +[ 995.852629] bdbm: llm_make_req: 21600000, 96 +[ 997.979062] bdbm: llm_make_req: 21650000, 94 +[ 1000.531001] bdbm: llm_make_req: 21700000, 96 +[ 1002.825582] bdbm: llm_make_req: 21750000, 96 +[ 1005.363225] bdbm: llm_make_req: 21800000, 48 +[ 1007.934134] bdbm: llm_make_req: 21850000, 96 +[ 1009.874032] bdbm: llm_make_req: 21900000, 96 +[ 1012.440622] bdbm: llm_make_req: 21950000, 96 +[ 1015.108627] bdbm: llm_make_req: 22000000, 96 +[ 1017.349052] bdbm: llm_make_req: 22050000, 95 +[ 1019.948243] bdbm: llm_make_req: 22100000, 96 +[ 1022.250064] bdbm: llm_make_req: 22150000, 96 +[ 1024.882620] bdbm: llm_make_req: 22200000, 94 +[ 1027.462212] bdbm: llm_make_req: 22250000, 94 +[ 1029.421569] bdbm: llm_make_req: 22300000, 95 +[ 1032.036924] bdbm: llm_make_req: 22350000, 96 +[ 1034.527576] bdbm: llm_make_req: 22400000, 96 +[ 1037.032505] bdbm: llm_make_req: 22450000, 95 +[ 1039.717767] bdbm: llm_make_req: 22500000, 96 +[ 1041.764288] bdbm: llm_make_req: 22550000, 96 +[ 1044.428194] bdbm: llm_make_req: 22600000, 95 +[ 1047.253781] bdbm: llm_make_req: 22650000, 96 +[ 1049.440927] bdbm: llm_make_req: 22700000, 96 +[ 1052.108954] bdbm: llm_make_req: 22750000, 96 +[ 1054.517900] bdbm: llm_make_req: 22800000, 96 +[ 1057.207401] bdbm: llm_make_req: 22850000, 96 +[ 1059.920103] bdbm: llm_make_req: 22900000, 96 +[ 1061.913899] bdbm: llm_make_req: 22950000, 95 +[ 1064.617592] bdbm: llm_make_req: 23000000, 96 +[ 1067.297377] bdbm: llm_make_req: 23050000, 96 +[ 1069.641900] bdbm: llm_make_req: 23100000, 93 +[ 1072.287878] bdbm: llm_make_req: 23150000, 96 +[ 1074.479317] bdbm: llm_make_req: 23200000, 96 +[ 1077.030799] bdbm: llm_make_req: 23250000, 96 +[ 1079.899466] bdbm: llm_make_req: 23300000, 96 +[ 1082.007026] bdbm: llm_make_req: 23350000, 93 +[ 1084.693103] bdbm: llm_make_req: 23400000, 95 +[ 1087.127281] bdbm: llm_make_req: 23450000, 96 +[ 1089.609595] bdbm: llm_make_req: 23500000, 96 +[ 1092.263352] bdbm: llm_make_req: 23550000, 96 +[ 1094.267879] bdbm: llm_make_req: 23600000, 96 +[ 1096.895139] bdbm: llm_make_req: 23650000, 96 +[ 1099.638237] bdbm: llm_make_req: 23700000, 96 +[ 1101.893132] bdbm: llm_make_req: 23750000, 92 +[ 1104.480325] bdbm: llm_make_req: 23800000, 96 +[ 1106.633248] bdbm: llm_make_req: 23850000, 96 +[ 1109.383580] bdbm: llm_make_req: 23900000, 84 +[ 1111.953416] bdbm: llm_make_req: 23950000, 96 +[ 1113.975691] bdbm: llm_make_req: 24000000, 95 +[ 1116.561842] bdbm: llm_make_req: 24050000, 96 +[ 1119.043919] bdbm: llm_make_req: 24100000, 96 +[ 1121.463187] bdbm: llm_make_req: 24150000, 96 +[ 1124.019250] bdbm: llm_make_req: 24200000, 96 +[ 1126.164204] bdbm: llm_make_req: 24250000, 96 +[ 1128.909700] bdbm: llm_make_req: 24300000, 96 +[ 1131.390590] bdbm: llm_make_req: 24350000, 96 +[ 1133.416554] bdbm: llm_make_req: 24400000, 96 +[ 1136.019775] bdbm: llm_make_req: 24450000, 96 +[ 1138.487052] bdbm: llm_make_req: 24500000, 96 +[ 1140.905735] bdbm: llm_make_req: 24550000, 96 +[ 1143.490370] bdbm: llm_make_req: 24600000, 96 +[ 1145.515730] bdbm: llm_make_req: 24650000, 96 +[ 1148.330722] bdbm: llm_make_req: 24700000, 96 +[ 1150.746030] bdbm: llm_make_req: 24750000, 96 +[ 1152.692383] bdbm: llm_make_req: 24800000, 90 +[ 1155.170325] bdbm: llm_make_req: 24850000, 96 +[ 1157.649534] bdbm: llm_make_req: 24900000, 96 +[ 1159.896568] bdbm: llm_make_req: 24950000, 94 +[ 1162.321110] bdbm: llm_make_req: 25000000, 96 +[ 1164.603986] bdbm: llm_make_req: 25050000, 96 +[ 1166.907378] bdbm: llm_make_req: 25100000, 96 +[ 1169.217464] bdbm: llm_make_req: 25150000, 96 +[ 1171.235460] bdbm: llm_make_req: 25200000, 96 +[ 1173.555108] bdbm: llm_make_req: 25250000, 92 +[ 1175.752545] bdbm: llm_make_req: 25300000, 96 +[ 1177.584922] bdbm: llm_make_req: 25350000, 96 +[ 1179.936214] bdbm: llm_make_req: 25400000, 92 +[ 1181.986248] bdbm: llm_make_req: 25450000, 96 +[ 1183.832613] bdbm: llm_make_req: 25500000, 96 +[ 1185.928516] bdbm: llm_make_req: 25550000, 93 +[ 1187.874957] bdbm: llm_make_req: 25600000, 96 +[ 1189.725385] bdbm: llm_make_req: 25650000, 96 +[ 1191.754060] bdbm: llm_make_req: 25700000, 96 +[ 1193.651505] bdbm: llm_make_req: 25750000, 96 +[ 1195.535726] bdbm: llm_make_req: 25800000, 96 +[ 1197.467036] bdbm: llm_make_req: 25850000, 96 +[ 1199.672395] bdbm: llm_make_req: 25900000, 89 +[ 1201.309931] bdbm: llm_make_req: 25950000, 96 +[ 1203.104748] bdbm: llm_make_req: 26000000, 96 +[ 1205.300452] bdbm: llm_make_req: 26050000, 96 +[ 1207.034694] bdbm: llm_make_req: 26100000, 96 +[ 1208.731167] bdbm: llm_make_req: 26150000, 88 +[ 1755.127772] bdbm: ----------------------------------------------- +[ 1755.127773] bdbm: < PERFORMANCE SUMMARY > +[ 1755.127774] bdbm: [0] Execution Time (us): 1550.520673 +[ 1755.127775] bdbm: +[ 1755.127775] bdbm: [1] Total I/Os +[ 1755.127776] bdbm: # of page reads: 10602848 +[ 1755.127776] bdbm: # of page writes: 15507069 +[ 1755.127777] bdbm: # of block erase: 89472 +[ 1755.127777] bdbm: +[ 1755.127777] bdbm: [2] Normal I/Os +[ 1755.127778] bdbm: # of page reads: 4333928 +[ 1755.127778] bdbm: # of page writes: 9237450 +[ 1755.127779] bdbm: # of page rmw reads: 0 +[ 1755.127779] bdbm: # of page rmw writes: 0 +[ 1755.127780] bdbm: +[ 1755.127780] bdbm: [3] GC I/Os +[ 1755.127781] bdbm: # of GC invocation: 0 +[ 1755.127781] bdbm: # of page reads: 6268920 +[ 1755.127782] bdbm: # of page writes: 6269619 +[ 1755.127782] bdbm: # of block erase: 89472 +[ 1755.127782] bdbm: +[ 1755.127783] bdbm: [4] Meta I/Os +[ 1755.127783] bdbm: # of meta page reads: 0 +[ 1755.127784] bdbm: # of meta page writes: 0 +[ 1755.127784] bdbm: +[ 1755.127785] bdbm: [5] Elapsed Time +[ 1755.127785] bdbm: page read (us): 93 (S:0 + Q:0 + D:93) +[ 1755.127786] bdbm: page write (us): 451 (S:0 + Q:0 + D:451) +[ 1755.127787] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 1755.127787] bdbm: +[ 1755.127787] bdbm: [6] Utilization (R) +[ 1755.127789] bdbm: 82755 83065 82600 83275 82616 83080 83082 83271 +[ 1755.127791] bdbm: 82607 83204 82658 82459 82904 82583 82401 83025 +[ 1755.127792] bdbm: 82581 82650 82635 83204 82736 83036 82784 83123 +[ 1755.127793] bdbm: 82676 82734 82869 83277 82510 83065 82935 82969 +[ 1755.127794] bdbm: 82342 82621 82638 83453 82778 83135 82671 82484 +[ 1755.127795] bdbm: 82153 82638 82891 83307 82377 82945 82665 83044 +[ 1755.127796] bdbm: 82874 82660 82661 82859 82781 82730 82498 82510 +[ 1755.127797] bdbm: 82985 82912 82199 83004 82778 82989 82784 83021 +[ 1755.127799] bdbm: 83000 82771 82889 83154 83060 83006 83076 82932 +[ 1755.127800] bdbm: 82570 82858 82624 82960 82793 82908 82784 83074 +[ 1755.127801] bdbm: 82228 83070 82827 82743 82321 83286 82955 82971 +[ 1755.127802] bdbm: 82575 82891 82534 82743 82903 83010 82771 82879 +[ 1755.127803] bdbm: 82693 83007 83075 83093 83009 82776 82330 82918 +[ 1755.127804] bdbm: 82846 83089 82922 83491 82904 82851 82675 83209 +[ 1755.127805] bdbm: 82724 83144 83161 83317 83091 82570 82003 82827 +[ 1755.127807] bdbm: 82695 82931 82283 82504 82775 83008 83054 82951 +[ 1755.127807] bdbm: +[ 1755.127807] bdbm: [7] Utilization (W) +[ 1755.127809] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127810] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127811] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127812] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127813] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127815] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127816] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127817] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127818] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127819] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127820] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127821] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127822] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127824] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127825] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127826] bdbm: 121149 121149 121149 121149 121149 121148 121148 121148 +[ 1755.127826] bdbm: [8] NVM I/Os +[ 1755.127827] bdbm: #_of_nvm_total_accesses: 0 +[ 1755.127827] bdbm: #_of_nvm_total_write_requests: 0 +[ 1755.127828] bdbm: #_of_nvm_total_read_requests: 0 +[ 1755.127828] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 0 +[ 1755.127829] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 0 +[ 1755.127829] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[ 1755.127830] bdbm: #_of_nvm_evict_from_nvm: 0 +[ 1755.127830] bdbm: #_of_nvm_write_amplification: 0 : 6269619 +[ 1755.127831] bdbm: +[ 1755.127831] bdbm: ----------------------------------------------- +[ 1755.127831] bdbm: ----------------------------------------------- +[ 1755.261820] bdbm: done +[ 1755.261838] bdbm: [dm_ramdrive_close] closed! +[ 1755.649620] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 1755.649622] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 1755.666008] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 1755.683293] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 1755.687242] bdbm: ===================================================================== +[ 1755.687258] bdbm: DEVICE PARAMETERS +[ 1755.687258] bdbm: ===================================================================== +[ 1755.687259] bdbm: # of channels = 8 +[ 1755.687259] bdbm: # of chips per channel = 16 +[ 1755.687260] bdbm: # of blocks per chip = 256 +[ 1755.687260] bdbm: # of pages per block = 128 +[ 1755.687261] bdbm: # of subpages per page = 1 +[ 1755.687261] bdbm: page main size = 4096 bytes +[ 1755.687262] bdbm: page oob size = 64 bytes +[ 1755.687262] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 1755.687263] bdbm: +[ 1755.687264] bdbm: ===================================================================== +[ 1755.687264] bdbm: RAM DISK INFO +[ 1755.687264] bdbm: ===================================================================== +[ 1755.687265] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[ 1757.226946] bdbm: ramssd addr = ffffc90050001000 +[ 1757.226948] bdbm: +[ 1757.226949] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 1758.752756] bdbm: *** building ptr_ramssd_data done +[ 1758.752941] bdbm: [dm_ramdrive_probe] probe done! +[ 1758.752943] bdbm: [dm_ramdrive_open] open done! +[ 1758.815285] bdbm: nvm cache addr = ffffc90870003000 +[ 1758.816513] bdbm: ========================================================== +[ 1758.816516] bdbm: NVM CONFIGURATION +[ 1758.816517] bdbm: ========================================================== +[ 1758.816518] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[ 1758.971348] bdbm: TRIM is disabled +[ 1758.971509] bdbm: ===================================================================== +[ 1758.971510] bdbm: DEVICE PARAMETERS +[ 1758.971510] bdbm: ===================================================================== +[ 1758.971511] bdbm: # of channels = 8 +[ 1758.971511] bdbm: # of chips per channel = 16 +[ 1758.971512] bdbm: # of blocks per chip = 256 +[ 1758.971512] bdbm: # of pages per block = 128 +[ 1758.971513] bdbm: # of subpages per page = 1 +[ 1758.971513] bdbm: page main size = 4096 bytes +[ 1758.971514] bdbm: page oob size = 64 bytes +[ 1758.971514] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 1758.971515] bdbm: +[ 1758.971515] bdbm: ===================================================================== +[ 1758.971516] bdbm: FTL CONFIGURATION +[ 1758.971516] bdbm: ===================================================================== +[ 1758.971517] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 1758.971517] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 1758.971518] bdbm: wl policy = 1 (1: none, 2: swap) +[ 1758.971518] bdbm: trim mode = 2 (1: enable, 2: disable) +[ 1758.971519] bdbm: kernel sector = 512 bytes +[ 1758.971519] bdbm: +[ 1758.971521] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 1758.988443] bdbm: llm_make_req: 0, 1 +[ 1759.393744] bdbm: llm_make_req: 50000, 96 +[ 1759.538277] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[ 1759.538278] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 1764.688546] bdbm: llm_make_req: 100000, 96 diff --git a/result/fio.nonvm.rslt b/result/fio.nonvm.rslt new file mode 100644 index 0000000..cb794d4 --- /dev/null +++ b/result/fio.nonvm.rslt @@ -0,0 +1,39 @@ +D219: (groupid=0, jobs=4): err= 0: pid=3176: Mon Nov 7 15:08:58 2016 + read : io=16404MB, bw=17210KB/s, iops=2251, runt=976069msec + slat (usec): min=1, max=1797.7K, avg=423.48, stdev=23445.83 + clat (usec): min=455, max=3567.6K, avg=145190.94, stdev=418117.61 + lat (usec): min=462, max=3567.6K, avg=145614.49, stdev=418650.51 + clat percentiles (usec): + | 1.00th=[ 1480], 5.00th=[ 1672], 10.00th=[ 1832], 20.00th=[ 2192], + | 30.00th=[ 4320], 40.00th=[ 5408], 50.00th=[ 6048], 60.00th=[ 6944], + | 70.00th=[ 8512], 80.00th=[11968], 90.00th=[782336], 95.00th=[1433600], + | 99.00th=[1695744], 99.50th=[1744896], 99.90th=[1794048], 99.95th=[1794048 ], + | 99.99th=[1810432] + write: io=24556MB, bw=25762KB/s, iops=3377, runt=976069msec + slat (usec): min=2, max=1798.5K, avg=688.91, stdev=30352.88 + clat (usec): min=463, max=3567.6K, avg=151163.85, stdev=425915.53 + lat (usec): min=472, max=3567.6K, avg=151852.84, stdev=426794.70 + clat percentiles (usec): + | 1.00th=[ 1768], 5.00th=[ 1944], 10.00th=[ 2064], 20.00th=[ 2320], + | 30.00th=[ 4640], 40.00th=[ 5728], 50.00th=[ 6368], 60.00th=[ 7264], + | 70.00th=[ 8896], 80.00th=[12608], 90.00th=[823296], 95.00th=[1449984], + | 99.00th=[1695744], 99.50th=[1744896], 99.90th=[1794048], 99.95th=[1794048 ], + | 99.99th=[1810432] + lat (usec) : 500=0.01%, 750=0.01%, 1000=0.01% + lat (msec) : 2=10.72%, 4=16.11%, 10=47.90%, 20=12.71%, 50=1.93% + lat (msec) : 100=0.01%, 500=0.02%, 750=0.04%, 1000=1.68%, 2000=8.87% + lat (msec) : >=2000=0.01% + cpu : usr=0.13%, sys=25.52%, ctx=1463594, majf=0, minf=44 + IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% + submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% + complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1% + issued : total=r=2198068/w=3296267/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/ d=0 + latency : target=0, window=0, percentile=100.00%, depth=256 + +Run status group 0 (all jobs): + READ: io=16404MB, aggrb=17209KB/s, minb=17209KB/s, maxb=17209KB/s, mint=97606 9msec, maxt=976069msec + WRITE: io=24556MB, aggrb=25761KB/s, minb=25761KB/s, maxb=25761KB/s, mint=97606 9msec, maxt=976069msec + +Disk stats (read/write): + robusta: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00% + diff --git a/result/fio.toff_n1g.dmesg b/result/fio.toff_n1g.dmesg new file mode 100644 index 0000000..fc6942f --- /dev/null +++ b/result/fio.toff_n1g.dmesg @@ -0,0 +1,599 @@ +[250040.050587] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[250162.943822] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[250162.970031] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[250162.975804] bdbm: ===================================================================== +[250162.975806] bdbm: DEVICE PARAMETERS +[250162.975807] bdbm: ===================================================================== +[250162.975808] bdbm: # of channels = 8 +[250162.975809] bdbm: # of chips per channel = 16 +[250162.975810] bdbm: # of blocks per chip = 256 +[250162.975810] bdbm: # of pages per block = 128 +[250162.975811] bdbm: # of subpages per page = 1 +[250162.975812] bdbm: page main size = 4096 bytes +[250162.975813] bdbm: page oob size = 64 bytes +[250162.975814] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[250162.975815] bdbm: +[250162.975816] bdbm: ===================================================================== +[250162.975817] bdbm: RAM DISK INFO +[250162.975818] bdbm: ===================================================================== +[250162.975819] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[250164.546034] bdbm: ramssd addr = ffffc90050001000 +[250164.546036] bdbm: +[250164.546037] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[250166.093908] bdbm: *** building ptr_ramssd_data done +[250166.094055] bdbm: [dm_ramdrive_probe] probe done! +[250166.094056] bdbm: [dm_ramdrive_open] open done! +[250166.221207] bdbm: nvm cache addr = ffffc90870003000 +[250166.224810] bdbm: ========================================================== +[250166.224813] bdbm: NVM CONFIGURATION +[250166.224813] bdbm: ========================================================== +[250166.224814] bdbm: total size = 1073741824, nr_nvm_pages = 262144, nvm_page_size = 4096 +[250166.379469] bdbm: TRIM is disabled +[250166.379653] bdbm: ===================================================================== +[250166.379654] bdbm: DEVICE PARAMETERS +[250166.379654] bdbm: ===================================================================== +[250166.379655] bdbm: # of channels = 8 +[250166.379656] bdbm: # of chips per channel = 16 +[250166.379656] bdbm: # of blocks per chip = 256 +[250166.379657] bdbm: # of pages per block = 128 +[250166.379657] bdbm: # of subpages per page = 1 +[250166.379658] bdbm: page main size = 4096 bytes +[250166.379658] bdbm: page oob size = 64 bytes +[250166.379659] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[250166.379659] bdbm: +[250166.379660] bdbm: ===================================================================== +[250166.379660] bdbm: FTL CONFIGURATION +[250166.379661] bdbm: ===================================================================== +[250166.379661] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[250166.379662] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[250166.379663] bdbm: wl policy = 1 (1: none, 2: swap) +[250166.379663] bdbm: trim mode = 2 (1: enable, 2: disable) +[250166.379664] bdbm: kernel sector = 512 bytes +[250166.379664] bdbm: +[250166.379665] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[250166.397653] bdbm: llm_make_req: 0, 1 +[250182.253944] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[250182.253946] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[250300.204276] bdbm: nvm: total access = 100000, total read = 42, read hit = 14, total_write = 99957, write hit = 99957, hit = 33880, evict = 0 +[250345.475603] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 33941, evict = 0 +[250391.792336] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 33993, evict = 3834 +[250412.537128] bdbm: llm_make_req: 50000, 2 +[250436.059243] bdbm: llm_make_req: 100000, 2 +[250437.785729] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 33998, evict = 103829 +[250458.451574] bdbm: llm_make_req: 150000, 2 +[250480.866962] bdbm: llm_make_req: 200000, 2 +[250482.636888] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 34002, evict = 203825 +[250506.559436] bdbm: llm_make_req: 250000, 1 +[250534.470156] bdbm: llm_make_req: 300000, 2 +[250536.179056] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 34003, evict = 303824 +[250556.753326] bdbm: llm_make_req: 350000, 2 +[250579.843673] bdbm: llm_make_req: 400000, 2 +[250581.563857] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 34003, evict = 403824 +[250602.161282] bdbm: llm_make_req: 450000, 2 +[250624.453157] bdbm: llm_make_req: 500000, 2 +[250626.176183] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 34003, evict = 503824 +[250648.984772] bdbm: llm_make_req: 550000, 2 +[250677.252332] bdbm: llm_make_req: 600000, 1 +[250679.471740] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 34003, evict = 603824 +[250702.968582] bdbm: llm_make_req: 650000, 2 +[250725.276328] bdbm: llm_make_req: 700000, 2 +[250726.991142] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 34003, evict = 703824 +[250747.601496] bdbm: llm_make_req: 750000, 2 +[250769.740017] bdbm: llm_make_req: 800000, 2 +[250771.436639] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 34003, evict = 803824 +[250791.824528] bdbm: llm_make_req: 850000, 2 +[250815.483764] bdbm: llm_make_req: 900000, 1 +[250817.713436] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 34003, evict = 903824 +[250844.275351] bdbm: llm_make_req: 950000, 2 +[250866.604238] bdbm: llm_make_req: 1000000, 2 +[250868.304124] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 34003, evict = 1003824 +[250888.779520] bdbm: llm_make_req: 1050000, 2 +[250911.070088] bdbm: llm_make_req: 1100000, 2 +[250912.786509] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 34003, evict = 1103824 +[250935.799150] bdbm: llm_make_req: 1150000, 2 +[250958.177857] bdbm: llm_make_req: 1200000, 2 +[250959.903239] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 34003, evict = 1203824 +[250980.969397] bdbm: llm_make_req: 1250000, 2 +[251005.275206] bdbm: llm_make_req: 1300000, 2 +[251006.991955] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 34003, evict = 1303824 +[251029.085962] bdbm: llm_make_req: 1350000, 2 +[251052.901013] bdbm: llm_make_req: 1400000, 2 +[251054.878664] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 34003, evict = 1403824 +[251077.102003] bdbm: llm_make_req: 1450000, 2 +[251101.601803] bdbm: llm_make_req: 1500000, 2 +[251103.628622] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 34003, evict = 1503824 +[251126.704180] bdbm: llm_make_req: 1550000, 2 +[251150.537979] bdbm: llm_make_req: 1600000, 1 +[251152.352022] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 34003, evict = 1603824 +[251174.208485] bdbm: llm_make_req: 1650000, 1 +[251198.930623] bdbm: llm_make_req: 1700000, 2 +[251200.712942] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 34003, evict = 1703824 +[251222.481704] bdbm: llm_make_req: 1750000, 1 +[251246.263540] bdbm: llm_make_req: 1800000, 2 +[251248.249030] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 34003, evict = 1803824 +[251270.542601] bdbm: llm_make_req: 1850000, 1 +[251295.258651] bdbm: llm_make_req: 1900000, 2 +[251297.100388] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 34003, evict = 1903824 +[251320.389873] bdbm: llm_make_req: 1950000, 1 +[251344.895283] bdbm: llm_make_req: 2000000, 1 +[251346.889888] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 34003, evict = 2003824 +[251370.413871] bdbm: llm_make_req: 2050000, 1 +[251395.958165] bdbm: llm_make_req: 2100000, 2 +[251397.934635] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 34003, evict = 2103824 +[251419.978830] bdbm: llm_make_req: 2150000, 2 +[251444.012874] bdbm: llm_make_req: 2200000, 2 +[251445.955613] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 34003, evict = 2203824 +[251468.155591] bdbm: llm_make_req: 2250000, 1 +[251493.300149] bdbm: llm_make_req: 2300000, 1 +[251495.111344] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 34003, evict = 2303824 +[251517.555939] bdbm: llm_make_req: 2350000, 2 +[251541.496248] bdbm: llm_make_req: 2400000, 2 +[251543.192737] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 34003, evict = 2403824 +[251565.560210] bdbm: llm_make_req: 2450000, 2 +[251590.518628] bdbm: llm_make_req: 2500000, 1 +[251591.019725] bdbm: nvm: total access = 2800000, total read = 20505, read hit = 1214, total_write = 2779494, write hit = 2779494, hit = 36842, evict = 2481722 +[251615.635780] bdbm: llm_make_req: 2550000, 1 +[251635.178590] bdbm: nvm: total access = 2900000, total read = 60948, read hit = 6544, total_write = 2839051, write hit = 2839051, hit = 50205, evict = 2533246 +[251641.667953] bdbm: llm_make_req: 2600000, 2 +[251669.449085] bdbm: llm_make_req: 2650000, 2 +[251678.169017] bdbm: nvm: total access = 3000000, total read = 100976, read hit = 15576, total_write = 2899023, write hit = 2899023, hit = 72891, evict = 2579564 +[251698.906649] bdbm: llm_make_req: 2700000, 1 +[251720.329396] bdbm: nvm: total access = 3100000, total read = 141018, read hit = 27497, total_write = 2958981, write hit = 2958981, hit = 103015, evict = 2621319 +[251729.965047] bdbm: llm_make_req: 2750000, 1 +[251761.144414] bdbm: nvm: total access = 3200000, total read = 180966, read hit = 41891, total_write = 3019033, write hit = 3019033, hit = 138909, evict = 2659871 +[251761.842635] bdbm: llm_make_req: 2800000, 14 +[251794.684088] bdbm: llm_make_req: 2850000, 6 +[251800.044874] bdbm: nvm: total access = 3300000, total read = 221806, read hit = 58429, total_write = 3078193, write hit = 3078193, hit = 180056, evict = 2694422 +[251828.880021] bdbm: llm_make_req: 2900000, 16 +[251837.792708] bdbm: nvm: total access = 3400000, total read = 261622, read hit = 76401, total_write = 3138377, write hit = 3138377, hit = 224596, evict = 2728038 +[251862.298596] bdbm: llm_make_req: 2950000, 1 +[251875.804857] bdbm: nvm: total access = 3500000, total read = 301015, read hit = 92959, total_write = 3198984, write hit = 3198984, hit = 267400, evict = 2762399 +[251895.212859] bdbm: llm_make_req: 3000000, 1 +[251914.339450] bdbm: nvm: total access = 3600000, total read = 341315, read hit = 109580, total_write = 3258684, write hit = 3258684, hit = 308159, evict = 2797961 +[251927.462954] bdbm: llm_make_req: 3050000, 3 +[251953.268778] bdbm: nvm: total access = 3700000, total read = 381505, read hit = 125470, total_write = 3318494, write hit = 3318494, hit = 347609, evict = 2834211 +[251959.385973] bdbm: llm_make_req: 3100000, 2 +[251990.858479] bdbm: llm_make_req: 3150000, 4 +[251991.860598] bdbm: nvm: total access = 3800000, total read = 421450, read hit = 141028, total_write = 3378549, write hit = 3378549, hit = 386237, evict = 2871196 +[252022.361470] bdbm: llm_make_req: 3200000, 2 +[252030.667013] bdbm: nvm: total access = 3900000, total read = 461276, read hit = 156352, total_write = 3438723, write hit = 3438723, hit = 424822, evict = 2908109 +[252053.870682] bdbm: llm_make_req: 3250000, 1 +[252069.545428] bdbm: nvm: total access = 4000000, total read = 501721, read hit = 171735, total_write = 3498278, write hit = 3498278, hit = 462932, evict = 2944937 +[252085.574414] bdbm: llm_make_req: 3300000, 1 +[252108.297039] bdbm: nvm: total access = 4100000, total read = 541725, read hit = 187722, total_write = 3558274, write hit = 3558274, hit = 502639, evict = 2981213 +[252117.558643] bdbm: llm_make_req: 3350000, 1 +[252146.441722] bdbm: nvm: total access = 4200000, total read = 582097, read hit = 203887, total_write = 3617902, write hit = 3617902, hit = 542563, evict = 3017082 +[252149.450142] bdbm: llm_make_req: 3400000, 1 +[252181.249100] bdbm: llm_make_req: 3450000, 13 +[252184.434662] bdbm: nvm: total access = 4300000, total read = 622361, read hit = 220282, total_write = 3677638, write hit = 3677638, hit = 582750, evict = 3053026 +[252212.881063] bdbm: llm_make_req: 3500000, 1 +[252222.904129] bdbm: nvm: total access = 4400000, total read = 661439, read hit = 235666, total_write = 3738560, write hit = 3738560, hit = 622333, evict = 3089749 +[252244.870231] bdbm: llm_make_req: 3550000, 5 +[252260.856028] bdbm: nvm: total access = 4500000, total read = 701667, read hit = 251855, total_write = 3798332, write hit = 3798332, hit = 662397, evict = 3125646 +[252276.481538] bdbm: llm_make_req: 3600000, 5 +[252298.972657] bdbm: nvm: total access = 4600000, total read = 742128, read hit = 268155, total_write = 3857871, write hit = 3857871, hit = 702312, evict = 3161570 +[252308.296689] bdbm: llm_make_req: 3650000, 5 +[252337.671658] bdbm: nvm: total access = 4700000, total read = 781651, read hit = 283725, total_write = 3918348, write hit = 3918348, hit = 741833, evict = 3198096 +[252340.105635] bdbm: llm_make_req: 3700000, 1 +[252371.366666] bdbm: llm_make_req: 3750000, 1 +[252375.825091] bdbm: nvm: total access = 4800000, total read = 821952, read hit = 299342, total_write = 3978047, write hit = 3978047, hit = 780730, evict = 3234515 +[252403.205662] bdbm: llm_make_req: 3800000, 21 +[252414.291448] bdbm: nvm: total access = 4900000, total read = 861874, read hit = 315238, total_write = 4038125, write hit = 4038125, hit = 820117, evict = 3271102 +[252434.543085] bdbm: llm_make_req: 3850000, 7 +[252452.378803] bdbm: nvm: total access = 5000000, total read = 901986, read hit = 330985, total_write = 4098013, write hit = 4098013, hit = 859479, evict = 3307375 +[252466.137472] bdbm: llm_make_req: 3900000, 1 +[252490.748414] bdbm: nvm: total access = 5100000, total read = 942035, read hit = 346734, total_write = 4157964, write hit = 4157964, hit = 898735, evict = 3343819 +[252497.586878] bdbm: llm_make_req: 3950000, 2 +[252529.287763] bdbm: nvm: total access = 5200000, total read = 982016, read hit = 362508, total_write = 4217983, write hit = 4217983, hit = 938167, evict = 3380180 +[252529.474693] bdbm: llm_make_req: 4000000, 4 +[252561.389192] bdbm: llm_make_req: 4050000, 2 +[252567.572759] bdbm: nvm: total access = 5300000, total read = 1022436, read hit = 378308, total_write = 4277563, write hit = 4277563, hit = 978195, evict = 3415532 +[252593.090999] bdbm: llm_make_req: 4100000, 23 +[252605.892509] bdbm: nvm: total access = 5400000, total read = 1062879, read hit = 394211, total_write = 4337120, write hit = 4337120, hit = 1017571, evict = 3451616 +[252624.810186] bdbm: llm_make_req: 4150000, 19 +[252644.219452] bdbm: nvm: total access = 5500000, total read = 1102697, read hit = 409974, total_write = 4397302, write hit = 4397302, hit = 1056941, evict = 3488191 +[252656.405836] bdbm: llm_make_req: 4200000, 1 +[252683.052246] bdbm: nvm: total access = 5600000, total read = 1142602, read hit = 425622, total_write = 4457397, write hit = 4457397, hit = 1096010, evict = 3524865 +[252688.177392] bdbm: llm_make_req: 4250000, 2 +[252719.530971] bdbm: llm_make_req: 4300000, 2 +[252721.218275] bdbm: nvm: total access = 5700000, total read = 1182536, read hit = 441147, total_write = 4517463, write hit = 4517463, hit = 1135055, evict = 3561411 +[252751.322201] bdbm: llm_make_req: 4350000, 2 +[252759.793963] bdbm: nvm: total access = 5800000, total read = 1223021, read hit = 457022, total_write = 4576978, write hit = 4576978, hit = 1174434, evict = 3597422 +[252782.899960] bdbm: llm_make_req: 4400000, 14 +[252798.556580] bdbm: nvm: total access = 5900000, total read = 1263610, read hit = 473111, total_write = 4636389, write hit = 4636389, hit = 1213557, evict = 3633799 +[252814.888402] bdbm: llm_make_req: 4450000, 1 +[252836.858673] bdbm: nvm: total access = 6000000, total read = 1303765, read hit = 489097, total_write = 4696234, write hit = 4696234, hit = 1253068, evict = 3670119 +[252846.392242] bdbm: llm_make_req: 4500000, 1 +[252875.379648] bdbm: nvm: total access = 6100000, total read = 1343560, read hit = 504642, total_write = 4756439, write hit = 4756439, hit = 1291924, evict = 3707013 +[252877.910405] bdbm: llm_make_req: 4550000, 2 +[252909.817175] bdbm: llm_make_req: 4600000, 1 +[252913.991045] bdbm: nvm: total access = 6200000, total read = 1383653, read hit = 520303, total_write = 4816346, write hit = 4816346, hit = 1331253, evict = 3743252 +[252941.494456] bdbm: llm_make_req: 4650000, 9 +[252952.422209] bdbm: nvm: total access = 6300000, total read = 1423572, read hit = 536267, total_write = 4876427, write hit = 4876427, hit = 1370863, evict = 3779687 +[252973.489342] bdbm: llm_make_req: 4700000, 1 +[252990.901079] bdbm: nvm: total access = 6400000, total read = 1463663, read hit = 551900, total_write = 4936336, write hit = 4936336, hit = 1410370, evict = 3815722 +[253005.236226] bdbm: llm_make_req: 4750000, 2 +[253029.127658] bdbm: nvm: total access = 6500000, total read = 1504018, read hit = 568106, total_write = 4995981, write hit = 4995981, hit = 1449923, evict = 3852020 +[253036.785371] bdbm: llm_make_req: 4800000, 1 +[253067.657615] bdbm: nvm: total access = 6600000, total read = 1543440, read hit = 583860, total_write = 5056559, write hit = 5056559, hit = 1489242, evict = 3889033 +[253068.530507] bdbm: llm_make_req: 4850000, 1 +[253100.308836] bdbm: llm_make_req: 4900000, 2 +[253106.150998] bdbm: nvm: total access = 6700000, total read = 1583786, read hit = 599638, total_write = 5116213, write hit = 5116213, hit = 1528491, evict = 3925216 +[253132.018247] bdbm: llm_make_req: 4950000, 2 +[253144.693147] bdbm: nvm: total access = 6800000, total read = 1623504, read hit = 615160, total_write = 5176495, write hit = 5176495, hit = 1567878, evict = 3961633 +[253163.597604] bdbm: llm_make_req: 5000000, 4 +[253183.215167] bdbm: nvm: total access = 6900000, total read = 1663607, read hit = 630770, total_write = 5236392, write hit = 5236392, hit = 1607112, evict = 3997906 +[253195.435159] bdbm: llm_make_req: 5050000, 1 +[253221.863311] bdbm: nvm: total access = 7000000, total read = 1703745, read hit = 646338, total_write = 5296254, write hit = 5296254, hit = 1646166, evict = 4034282 +[253227.131372] bdbm: llm_make_req: 5100000, 10 +[253253.604050] bdbm: llm_make_req: 5150000, 96 +[253263.208481] bdbm: nvm: total access = 7100000, total read = 1743609, read hit = 661972, total_write = 5356390, write hit = 5356390, hit = 1685599, evict = 4070619 +[253267.481674] bdbm: llm_make_req: 5200000, 1 +[253288.499487] bdbm: llm_make_req: 5250000, 2 +[253304.531040] bdbm: nvm: total access = 7200000, total read = 1782942, read hit = 677441, total_write = 5417057, write hit = 5417057, hit = 1724893, evict = 4107461 +[253308.035852] bdbm: llm_make_req: 5300000, 1 +[253331.690473] bdbm: llm_make_req: 5350000, 96 +[253346.671841] bdbm: nvm: total access = 7300000, total read = 1822321, read hit = 692937, total_write = 5477678, write hit = 5477678, hit = 1764491, evict = 4143980 +[253354.560094] bdbm: llm_make_req: 5400000, 2 +[253374.555256] bdbm: llm_make_req: 5450000, 2 +[253387.962301] bdbm: nvm: total access = 7400000, total read = 1862173, read hit = 708998, total_write = 5537826, write hit = 5537826, hit = 1804503, evict = 4180177 +[253395.314488] bdbm: llm_make_req: 5500000, 96 +[253417.388343] bdbm: llm_make_req: 5550000, 11 +[253430.581842] bdbm: nvm: total access = 7500000, total read = 1901942, read hit = 725138, total_write = 5598057, write hit = 5598057, hit = 1844502, evict = 4216549 +[253435.092835] bdbm: llm_make_req: 5600000, 1 +[253454.747109] bdbm: llm_make_req: 5650000, 1 +[253472.069630] bdbm: nvm: total access = 7600000, total read = 1941993, read hit = 740717, total_write = 5658006, write hit = 5658006, hit = 1883725, evict = 4252854 +[253478.006806] bdbm: llm_make_req: 5700000, 96 +[253495.849173] bdbm: llm_make_req: 5750000, 1 +[253513.216092] bdbm: llm_make_req: 5800000, 11 +[253514.753856] bdbm: nvm: total access = 7700000, total read = 1981408, read hit = 756023, total_write = 5718591, write hit = 5718591, hit = 1922551, evict = 4289919 +[253534.955015] bdbm: llm_make_req: 5850000, 96 +[253553.755813] bdbm: llm_make_req: 5900000, 4 +[253556.576501] bdbm: nvm: total access = 7800000, total read = 2021266, read hit = 771579, total_write = 5778733, write hit = 5778733, hit = 1961749, evict = 4326419 +[253570.554583] bdbm: llm_make_req: 5950000, 18 +[253590.913626] bdbm: llm_make_req: 6000000, 96 +[253599.539683] bdbm: nvm: total access = 7900000, total read = 2061599, read hit = 787387, total_write = 5838400, write hit = 5838400, hit = 2000956, evict = 4362687 +[253607.987107] bdbm: llm_make_req: 6050000, 1 +[253622.097086] bdbm: llm_make_req: 6100000, 96 +[253642.449384] bdbm: llm_make_req: 6150000, 96 +[253644.051838] bdbm: nvm: total access = 8000000, total read = 2101742, read hit = 803172, total_write = 5898257, write hit = 5898257, hit = 2040385, evict = 4398900 +[253660.541826] bdbm: llm_make_req: 6200000, 1 +[253674.862923] bdbm: llm_make_req: 6250000, 1 +[253687.325184] bdbm: nvm: total access = 8100000, total read = 2141642, read hit = 818963, total_write = 5958357, write hit = 5958357, hit = 2079744, evict = 4435432 +[253694.936578] bdbm: llm_make_req: 6300000, 96 +[253710.584132] bdbm: llm_make_req: 6350000, 25 +[253724.831060] bdbm: llm_make_req: 6400000, 96 +[253730.980517] bdbm: nvm: total access = 8200000, total read = 2181715, read hit = 834543, total_write = 6018284, write hit = 6018284, hit = 2118773, evict = 4471910 +[253743.351589] bdbm: llm_make_req: 6450000, 96 +[253758.952050] bdbm: llm_make_req: 6500000, 16 +[253772.778058] bdbm: llm_make_req: 6550000, 96 +[253775.957190] bdbm: nvm: total access = 8300000, total read = 2221599, read hit = 850453, total_write = 6078400, write hit = 6078400, hit = 2158145, evict = 4508564 +[253789.939507] bdbm: llm_make_req: 6600000, 96 +[253801.462876] bdbm: llm_make_req: 6650000, 4 +[253816.153835] bdbm: llm_make_req: 6700000, 96 +[253821.085302] bdbm: nvm: total access = 8400000, total read = 2260798, read hit = 866129, total_write = 6139201, write hit = 6139201, hit = 2197261, evict = 4545925 +[253832.435880] bdbm: llm_make_req: 6750000, 96 +[253843.264854] bdbm: llm_make_req: 6800000, 4 +[253858.845372] bdbm: llm_make_req: 6850000, 96 +[253867.872765] bdbm: nvm: total access = 8500000, total read = 2301485, read hit = 882112, total_write = 6198514, write hit = 6198514, hit = 2236716, evict = 4581766 +[253873.318515] bdbm: llm_make_req: 6900000, 2 +[253884.489955] bdbm: llm_make_req: 6950000, 96 +[253900.259740] bdbm: llm_make_req: 7000000, 96 +[253910.690081] bdbm: llm_make_req: 7050000, 1 +[253913.426603] bdbm: nvm: total access = 8600000, total read = 2341875, read hit = 897763, total_write = 6258124, write hit = 6258124, hit = 2276090, evict = 4617653 +[253924.631323] bdbm: llm_make_req: 7100000, 96 +[253938.731166] bdbm: llm_make_req: 7150000, 1 +[253947.661005] bdbm: llm_make_req: 7200000, 96 +[253961.293130] bdbm: nvm: total access = 8700000, total read = 2381257, read hit = 912997, total_write = 6318742, write hit = 6318742, hit = 2315477, evict = 4654118 +[253962.250823] bdbm: llm_make_req: 7250000, 96 +[253973.840811] bdbm: llm_make_req: 7300000, 1 +[253985.147060] bdbm: llm_make_req: 7350000, 95 +[253998.853671] bdbm: llm_make_req: 7400000, 96 +[254006.957974] bdbm: llm_make_req: 7450000, 96 +[254010.542364] bdbm: nvm: total access = 8800000, total read = 2421616, read hit = 929009, total_write = 6378383, write hit = 6378383, hit = 2355044, evict = 4690204 +[254020.887170] bdbm: llm_make_req: 7500000, 96 +[254031.487964] bdbm: llm_make_req: 7550000, 12 +[254042.145558] bdbm: llm_make_req: 7600000, 96 +[254054.787358] bdbm: llm_make_req: 7650000, 96 +[254060.137384] bdbm: nvm: total access = 8900000, total read = 2461438, read hit = 944633, total_write = 6438561, write hit = 6438561, hit = 2394536, evict = 4726514 +[254062.866358] bdbm: llm_make_req: 7700000, 96 +[254076.039139] bdbm: llm_make_req: 7750000, 96 +[254085.333846] bdbm: llm_make_req: 7800000, 2 +[254096.062015] bdbm: llm_make_req: 7850000, 96 +[254107.774835] bdbm: llm_make_req: 7900000, 96 +[254111.390230] bdbm: nvm: total access = 9000000, total read = 2501200, read hit = 960459, total_write = 6498799, write hit = 6498799, hit = 2434095, evict = 4763019 +[254115.128537] bdbm: llm_make_req: 7950000, 95 +[254127.813746] bdbm: llm_make_req: 8000000, 96 +[254136.898881] bdbm: llm_make_req: 8050000, 1 +[254147.659074] bdbm: llm_make_req: 8100000, 96 +[254159.335744] bdbm: llm_make_req: 8150000, 96 +[254163.375607] bdbm: nvm: total access = 9100000, total read = 2540992, read hit = 975921, total_write = 6559007, write hit = 6559007, hit = 2472976, evict = 4799808 +[254167.165842] bdbm: llm_make_req: 8200000, 96 +[254179.700946] bdbm: llm_make_req: 8250000, 96 +[254188.292794] bdbm: llm_make_req: 8300000, 2 +[254199.300352] bdbm: llm_make_req: 8350000, 95 +[254210.958168] bdbm: llm_make_req: 8400000, 96 +[254215.057561] bdbm: nvm: total access = 9200000, total read = 2580801, read hit = 991674, total_write = 6619198, write hit = 6619198, hit = 2512464, evict = 4836264 +[254218.843979] bdbm: llm_make_req: 8450000, 96 +[254230.980261] bdbm: llm_make_req: 8500000, 96 +[254239.311683] bdbm: llm_make_req: 8550000, 1 +[254251.191558] bdbm: llm_make_req: 8600000, 96 +[254262.472714] bdbm: llm_make_req: 8650000, 1 +[254266.607306] bdbm: nvm: total access = 9300000, total read = 2620405, read hit = 1007241, total_write = 6679594, write hit = 6679594, hit = 2551904, evict = 4872787 +[254270.381464] bdbm: llm_make_req: 8700000, 96 +[254282.997777] bdbm: llm_make_req: 8750000, 96 +[254291.266007] bdbm: llm_make_req: 8800000, 2 +[254303.649254] bdbm: llm_make_req: 8850000, 96 +[254315.001417] bdbm: llm_make_req: 8900000, 1 +[254318.313937] bdbm: nvm: total access = 9400000, total read = 2660413, read hit = 1023261, total_write = 6739586, write hit = 6739586, hit = 2591536, evict = 4909167 +[254323.448184] bdbm: llm_make_req: 8950000, 95 +[254335.894699] bdbm: llm_make_req: 9000000, 96 +[254343.737272] bdbm: llm_make_req: 9050000, 2 +[254356.563892] bdbm: llm_make_req: 9100000, 96 +[254367.372996] bdbm: llm_make_req: 9150000, 15 +[254368.630697] bdbm: nvm: total access = 9500000, total read = 2700744, read hit = 1038957, total_write = 6799255, write hit = 6799255, hit = 2630944, evict = 4945124 +[254376.662721] bdbm: llm_make_req: 9200000, 96 +[254388.993760] bdbm: llm_make_req: 9250000, 96 +[254396.591271] bdbm: llm_make_req: 9300000, 96 +[254409.760530] bdbm: llm_make_req: 9350000, 96 +[254419.981411] bdbm: nvm: total access = 9600000, total read = 2741056, read hit = 1055295, total_write = 6858943, write hit = 6858943, hit = 2670804, evict = 4981290 +[254420.285009] bdbm: llm_make_req: 9400000, 1 +[254429.980307] bdbm: llm_make_req: 9450000, 96 +[254442.507395] bdbm: llm_make_req: 9500000, 96 +[254450.125065] bdbm: llm_make_req: 9550000, 96 +[254463.253512] bdbm: llm_make_req: 9600000, 96 +[254471.794184] bdbm: nvm: total access = 9700000, total read = 2781771, read hit = 1071260, total_write = 6918228, write hit = 6918228, hit = 2709927, evict = 5017417 +[254473.057644] bdbm: llm_make_req: 9650000, 2 +[254483.362642] bdbm: llm_make_req: 9700000, 96 +[254495.711606] bdbm: llm_make_req: 9750000, 96 +[254503.182431] bdbm: llm_make_req: 9800000, 96 +[254516.302749] bdbm: llm_make_req: 9850000, 96 +[254521.721717] bdbm: nvm: total access = 9800000, total read = 2821887, read hit = 1086894, total_write = 6978112, write hit = 6978112, hit = 2748976, evict = 5053886 +[254525.824810] bdbm: llm_make_req: 9900000, 29 +[254536.677586] bdbm: llm_make_req: 9950000, 96 +[254549.300077] bdbm: llm_make_req: 10000000, 96 +[254557.342746] bdbm: llm_make_req: 10050000, 96 +[254570.753142] bdbm: nvm: total access = 9900000, total read = 2861872, read hit = 1102741, total_write = 7038127, write hit = 7038127, hit = 2788222, evict = 5090502 +[254573.696156] bdbm: llm_make_req: 10100000, 96 +[254593.914042] bdbm: llm_make_req: 10150000, 96 +[254609.958941] bdbm: llm_make_req: 10200000, 1 +[254613.653615] bdbm: nvm: total access = 10000000, total read = 2901620, read hit = 1118330, total_write = 7098379, write hit = 7098379, hit = 2827405, evict = 5127160 +[254629.852767] bdbm: llm_make_req: 10250000, 2 +[254654.738458] bdbm: llm_make_req: 10300000, 96 +[254655.303098] bdbm: nvm: total access = 10100000, total read = 2942017, read hit = 1134458, total_write = 7157982, write hit = 7157982, hit = 2866707, evict = 5163589 +[254678.608790] bdbm: llm_make_req: 10350000, 2 +[254695.604572] bdbm: nvm: total access = 10200000, total read = 2981590, read hit = 1149706, total_write = 7218409, write hit = 7218409, hit = 2905471, evict = 5200500 +[254702.196883] bdbm: llm_make_req: 10400000, 6 +[254725.861019] bdbm: llm_make_req: 10450000, 16 +[254736.575534] bdbm: nvm: total access = 10300000, total read = 3021441, read hit = 1165352, total_write = 7278558, write hit = 7278558, hit = 2944456, evict = 5237310 +[254751.874110] bdbm: llm_make_req: 10500000, 96 +[254775.750516] bdbm: llm_make_req: 10550000, 2 +[254777.391619] bdbm: nvm: total access = 10400000, total read = 3061327, read hit = 1180938, total_write = 7338672, write hit = 7338672, hit = 2983796, evict = 5273670 +[254797.902843] bdbm: llm_make_req: 10600000, 3 +[254818.226083] bdbm: nvm: total access = 10500000, total read = 3101871, read hit = 1196949, total_write = 7398128, write hit = 7398128, hit = 3023321, evict = 5309612 +[254819.774334] bdbm: llm_make_req: 10650000, 96 +[254845.766737] bdbm: llm_make_req: 10700000, 1 +[254860.429166] bdbm: nvm: total access = 10600000, total read = 3142114, read hit = 1212523, total_write = 7457885, write hit = 7457885, hit = 3061841, evict = 5346423 +[254867.534127] bdbm: llm_make_req: 10750000, 1 +[254889.878583] bdbm: llm_make_req: 10800000, 2 +[254901.182998] bdbm: nvm: total access = 10700000, total read = 3181923, read hit = 1228154, total_write = 7518076, write hit = 7518076, hit = 3101089, evict = 5382997 +[254914.101692] bdbm: llm_make_req: 10850000, 96 +[254939.334352] bdbm: llm_make_req: 10900000, 1 +[254941.920819] bdbm: nvm: total access = 10800000, total read = 3221689, read hit = 1243856, total_write = 7578310, write hit = 7578310, hit = 3140420, evict = 5419602 +[254961.858289] bdbm: llm_make_req: 10950000, 1 +[254982.829589] bdbm: nvm: total access = 10900000, total read = 3261293, read hit = 1259740, total_write = 7638706, write hit = 7638706, hit = 3179854, evict = 5456448 +[254984.765699] bdbm: llm_make_req: 11000000, 1 +[255009.422581] bdbm: llm_make_req: 11050000, 96 +[255023.669997] bdbm: nvm: total access = 11000000, total read = 3300066, read hit = 1274980, total_write = 7699933, write hit = 7699933, hit = 3219709, evict = 5493060 +[255034.645123] bdbm: llm_make_req: 11100000, 1 +[255057.087645] bdbm: llm_make_req: 11150000, 18 +[255064.146942] bdbm: nvm: total access = 11100000, total read = 3339079, read hit = 1290447, total_write = 7760920, write hit = 7760920, hit = 3259515, evict = 5529708 +[255079.141011] bdbm: llm_make_req: 11200000, 5 +[255103.727114] bdbm: llm_make_req: 11250000, 96 +[255105.019420] bdbm: nvm: total access = 11200000, total read = 3379058, read hit = 1306072, total_write = 7820941, write hit = 7820941, hit = 3299024, evict = 5565845 +[255128.018757] bdbm: llm_make_req: 11300000, 17 +[255145.930761] bdbm: nvm: total access = 11300000, total read = 3418642, read hit = 1321543, total_write = 7881357, write hit = 7881357, hit = 3338350, evict = 5602406 +[255149.897141] bdbm: llm_make_req: 11350000, 1 +[255172.349779] bdbm: llm_make_req: 11400000, 2 +[255186.545293] bdbm: nvm: total access = 11400000, total read = 3458805, read hit = 1337422, total_write = 7941194, write hit = 7941194, hit = 3377738, evict = 5638734 +[255198.304585] bdbm: llm_make_req: 11450000, 96 +[255221.553232] bdbm: llm_make_req: 11500000, 1 +[255227.401288] bdbm: nvm: total access = 11500000, total read = 3499503, read hit = 1353334, total_write = 8000496, write hit = 8000496, hit = 3417083, evict = 5674603 +[255243.629599] bdbm: llm_make_req: 11550000, 2 +[255266.164140] bdbm: llm_make_req: 11600000, 96 +[255268.339971] bdbm: nvm: total access = 11600000, total read = 3539152, read hit = 1368863, total_write = 8060847, write hit = 8060847, hit = 3455984, evict = 5711582 +[255292.228672] bdbm: llm_make_req: 11650000, 2 +[255309.418461] bdbm: nvm: total access = 11700000, total read = 3579237, read hit = 1384441, total_write = 8120762, write hit = 8120762, hit = 3494512, evict = 5748547 +[255313.853550] bdbm: llm_make_req: 11700000, 1 +[255335.369402] bdbm: llm_make_req: 11750000, 2 +[255350.273526] bdbm: nvm: total access = 11800000, total read = 3619439, read hit = 1399812, total_write = 8180560, write hit = 8180560, hit = 3533337, evict = 5784891 +[255359.636628] bdbm: llm_make_req: 11800000, 95 +[255383.986883] bdbm: llm_make_req: 11850000, 2 +[255391.167527] bdbm: nvm: total access = 11900000, total read = 3659703, read hit = 1415657, total_write = 8240296, write hit = 8240296, hit = 3572523, evict = 5821286 +[255405.706312] bdbm: llm_make_req: 11900000, 11 +[255427.527913] bdbm: llm_make_req: 11950000, 2 +[255431.859447] bdbm: nvm: total access = 12000000, total read = 3699747, read hit = 1431770, total_write = 8300252, write hit = 8300252, hit = 3611999, evict = 5857879 +[255452.756297] bdbm: llm_make_req: 12000000, 96 +[255472.752060] bdbm: nvm: total access = 12100000, total read = 3739588, read hit = 1447415, total_write = 8360411, write hit = 8360411, hit = 3651367, evict = 5894315 +[255476.270956] bdbm: llm_make_req: 12050000, 2 +[255497.439456] bdbm: llm_make_req: 12100000, 2 +[255513.851386] bdbm: nvm: total access = 12200000, total read = 3779884, read hit = 1463160, total_write = 8420115, write hit = 8420115, hit = 3690488, evict = 5930643 +[255518.722195] bdbm: llm_make_req: 12150000, 96 +[255541.701972] bdbm: llm_make_req: 12200000, 5 +[255556.358719] bdbm: nvm: total access = 12300000, total read = 3819943, read hit = 1478760, total_write = 8480056, write hit = 8480056, hit = 3729559, evict = 5967113 +[255559.686262] bdbm: llm_make_req: 12250000, 4 +[255578.974443] bdbm: llm_make_req: 12300000, 96 +[255597.625100] bdbm: nvm: total access = 12400000, total read = 3859402, read hit = 1494357, total_write = 8540597, write hit = 8540597, hit = 3768897, evict = 6003913 +[255602.238587] bdbm: llm_make_req: 12350000, 96 +[255622.135426] bdbm: llm_make_req: 12400000, 3 +[255640.247493] bdbm: nvm: total access = 12500000, total read = 3900012, read hit = 1510349, total_write = 8599987, write hit = 8599987, hit = 3807973, evict = 6040219 +[255640.677585] bdbm: llm_make_req: 12450000, 3 +[255663.569386] bdbm: llm_make_req: 12500000, 96 +[255681.637044] bdbm: nvm: total access = 12600000, total read = 3939805, read hit = 1526079, total_write = 8660194, write hit = 8660194, hit = 3847367, evict = 6076762 +[255684.292214] bdbm: llm_make_req: 12550000, 2 +[255702.359803] bdbm: llm_make_req: 12600000, 31 +[255723.020643] bdbm: llm_make_req: 12650000, 96 +[255724.078582] bdbm: nvm: total access = 12700000, total read = 3979968, read hit = 1541331, total_write = 8720031, write hit = 8720031, hit = 3886054, evict = 6113164 +[255744.342962] bdbm: llm_make_req: 12700000, 1 +[255762.854316] bdbm: llm_make_req: 12750000, 1 +[255765.497943] bdbm: nvm: total access = 12800000, total read = 4020055, read hit = 1556643, total_write = 8779944, write hit = 8779944, hit = 3924838, evict = 6149605 +[255782.446278] bdbm: llm_make_req: 12800000, 96 +[255805.932779] bdbm: llm_make_req: 12850000, 1 +[255808.023734] bdbm: nvm: total access = 12900000, total read = 4060103, read hit = 1572204, total_write = 8839896, write hit = 8839896, hit = 3963946, evict = 6186010 +[255823.697280] bdbm: llm_make_req: 12900000, 1 +[255842.196201] bdbm: llm_make_req: 12950000, 96 +[255849.385547] bdbm: nvm: total access = 13000000, total read = 4100143, read hit = 1587651, total_write = 8899856, write hit = 8899856, hit = 4002936, evict = 6222427 +[255864.626244] bdbm: llm_make_req: 13000000, 96 +[255883.839700] bdbm: llm_make_req: 13050000, 1 +[255892.013412] bdbm: nvm: total access = 13100000, total read = 4139480, read hit = 1602751, total_write = 8960519, write hit = 8960519, hit = 4041723, evict = 6259403 +[255900.735410] bdbm: llm_make_req: 13100000, 1 +[255921.868534] bdbm: llm_make_req: 13150000, 96 +[255935.007610] bdbm: nvm: total access = 13200000, total read = 4179192, read hit = 1618287, total_write = 9020807, write hit = 9020807, hit = 4081002, evict = 6295948 +[255940.351014] bdbm: llm_make_req: 13200000, 1 +[255955.376194] bdbm: llm_make_req: 13250000, 1 +[255975.752254] bdbm: llm_make_req: 13300000, 96 +[255978.084610] bdbm: nvm: total access = 13300000, total read = 4219021, read hit = 1634113, total_write = 9080978, write hit = 9080978, hit = 4120635, evict = 6332312 +[255993.534327] bdbm: llm_make_req: 13350000, 1 +[256008.724174] bdbm: llm_make_req: 13400000, 2 +[256021.098831] bdbm: nvm: total access = 13400000, total read = 4258920, read hit = 1649928, total_write = 9141079, write hit = 9141079, hit = 4160092, evict = 6368771 +[256028.573332] bdbm: llm_make_req: 13450000, 96 +[256046.769894] bdbm: llm_make_req: 13500000, 10 +[256061.060864] bdbm: llm_make_req: 13550000, 4 +[256064.149811] bdbm: nvm: total access = 13500000, total read = 4299202, read hit = 1665798, total_write = 9200797, write hit = 9200797, hit = 4199393, evict = 6405058 +[256080.812256] bdbm: llm_make_req: 13600000, 96 +[270427.270101] bdbm: ----------------------------------------------- +[270427.270102] bdbm: < PERFORMANCE SUMMARY > +[270427.270103] bdbm: [0] Execution Time (us): 20259.690859 +[270427.270104] bdbm: +[270427.270105] bdbm: [1] Total I/Os +[270427.270106] bdbm: # of page reads: 4914639 +[270427.270106] bdbm: # of page writes: 2263687 +[270427.270107] bdbm: # of block erase: 36224 +[270427.270107] bdbm: +[270427.270108] bdbm: [2] Normal I/Os +[270427.270108] bdbm: # of page reads: 2651235 +[270427.270109] bdbm: # of page writes: 0 +[270427.270109] bdbm: # of page rmw reads: 0 +[270427.270110] bdbm: # of page rmw writes: 0 +[270427.270111] bdbm: +[270427.270111] bdbm: [3] GC I/Os +[270427.270112] bdbm: # of GC invocation: 0 +[270427.270113] bdbm: # of page reads: 2263404 +[270427.270113] bdbm: # of page writes: 2263687 +[270427.270114] bdbm: # of block erase: 36224 +[270427.270114] bdbm: +[270427.270115] bdbm: [4] Meta I/Os +[270427.270115] bdbm: # of meta page reads: 0 +[270427.270116] bdbm: # of meta page writes: 0 +[270427.270117] bdbm: +[270427.270117] bdbm: [5] Elapsed Time +[270427.270118] bdbm: page read (us): 515 (S:403 + Q:10 + D:102) +[270427.270119] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[270427.270119] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[270427.270120] bdbm: +[270427.270120] bdbm: [6] Utilization (R) +[270427.270123] bdbm: 38399 38327 38401 38696 38708 38543 38327 38515 +[270427.270124] bdbm: 38281 38510 38162 38567 38445 38239 38625 38352 +[270427.270126] bdbm: 38281 38165 38324 38253 37974 38003 38138 38422 +[270427.270127] bdbm: 37998 38362 38152 38023 38148 38294 38128 38313 +[270427.270129] bdbm: 38475 38458 38604 38434 38580 38472 38424 38016 +[270427.270130] bdbm: 38642 38232 38578 38397 37951 38051 38511 38043 +[270427.270131] bdbm: 38005 38121 38352 37969 38281 38422 38577 38725 +[270427.270132] bdbm: 38733 38701 38233 38802 38511 38260 38173 38528 +[270427.270135] bdbm: 38100 38395 38338 38540 38658 38223 38787 38479 +[270427.270136] bdbm: 38381 38387 38298 38375 38069 38215 38476 38504 +[270427.270137] bdbm: 38847 38344 38339 37810 38225 38378 38573 38809 +[270427.270138] bdbm: 38189 38432 38061 37915 38596 38408 38738 38843 +[270427.270140] bdbm: 38456 38488 38181 38517 38392 38443 38688 38368 +[270427.270141] bdbm: 38573 38831 38766 38748 38689 38570 38349 38290 +[270427.270143] bdbm: 38121 38313 38521 38570 38697 38789 38678 38453 +[270427.270144] bdbm: 38400 38350 38313 38363 38101 38513 38551 38489 +[270427.270144] bdbm: +[270427.270145] bdbm: [7] Utilization (W) +[270427.270147] bdbm: 17691 17731 17755 17772 17780 17786 17792 17798 +[270427.270148] bdbm: 17796 17800 17801 17803 17803 17802 17800 17799 +[270427.270149] bdbm: 17799 17796 17794 17791 17790 17785 17783 17781 +[270427.270151] bdbm: 17779 17779 17776 17772 17771 17770 17769 17768 +[270427.270153] bdbm: 17767 17766 17764 17763 17761 17757 17754 17751 +[270427.270154] bdbm: 17747 17744 17743 17742 17739 17736 17735 17732 +[270427.270155] bdbm: 17726 17721 17719 17718 17715 17713 17709 17705 +[270427.270156] bdbm: 17703 17699 17698 17698 17695 17694 17690 17688 +[270427.270158] bdbm: 17686 17684 17683 17682 17681 17678 17675 17672 +[270427.270160] bdbm: 17668 17665 17664 17660 17655 17652 17649 17645 +[270427.270161] bdbm: 17642 17642 17642 17639 17637 17637 17633 17630 +[270427.270162] bdbm: 17629 17624 17622 17621 17621 17615 17614 17612 +[270427.270164] bdbm: 17610 17610 17607 17605 17604 17603 17602 17599 +[270427.270165] bdbm: 17599 17598 17595 17590 17590 17588 17586 17585 +[270427.270166] bdbm: 17583 17580 17577 17575 17571 17571 17569 17567 +[270427.270168] bdbm: 17565 17565 17562 17560 17555 17552 17551 17550 +[270427.270168] bdbm: [8] NVM I/Os +[270427.270170] bdbm: #_of_nvm_total_accesses: 13573748 +[270427.270170] bdbm: #_of_nvm_total_write_requests: 9244769 +[270427.270171] bdbm: #_of_nvm_total_read_requests: 4328979 +[270427.270171] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9244769 +[270427.270172] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1677716 +[270427.270172] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 4228630 +[270427.270173] bdbm: #_of_nvm_evict_from_nvm: 6431711 +[270427.270173] bdbm: #_of_nvm_write_amplification: 6431711 : 8695398 +[270427.270174] bdbm: +[270427.270174] bdbm: ----------------------------------------------- +[270427.270176] bdbm: ----------------------------------------------- +[270427.442544] bdbm: done +[270427.442547] bdbm: [dm_ramdrive_close] closed! +[270427.831286] bdbm: [bdbm_drv_main] bdbm_drv is closed +[270427.831289] bdbm: [bdbm_drv_main] bdbm_drv is removed +[270427.851434] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[270427.868561] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[270427.872251] bdbm: ===================================================================== +[270427.872252] bdbm: DEVICE PARAMETERS +[270427.872253] bdbm: ===================================================================== +[270427.872253] bdbm: # of channels = 8 +[270427.872254] bdbm: # of chips per channel = 16 +[270427.872254] bdbm: # of blocks per chip = 256 +[270427.872255] bdbm: # of pages per block = 128 +[270427.872255] bdbm: # of subpages per page = 1 +[270427.872256] bdbm: page main size = 4096 bytes +[270427.872256] bdbm: page oob size = 64 bytes +[270427.872257] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[270427.872258] bdbm: +[270427.872258] bdbm: ===================================================================== +[270427.872259] bdbm: RAM DISK INFO +[270427.872259] bdbm: ===================================================================== +[270427.872260] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[270429.434027] bdbm: ramssd addr = ffffc90050001000 +[270429.434029] bdbm: +[270429.434030] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[270430.958710] bdbm: *** building ptr_ramssd_data done +[270430.958899] bdbm: [dm_ramdrive_probe] probe done! +[270430.958900] bdbm: [dm_ramdrive_open] open done! +[270431.083067] bdbm: nvm cache addr = ffffc90870003000 +[270431.086041] bdbm: ========================================================== +[270431.086042] bdbm: NVM CONFIGURATION +[270431.086043] bdbm: ========================================================== +[270431.086044] bdbm: total size = 1073741824, nr_nvm_pages = 262144, nvm_page_size = 4096 +[270431.276371] bdbm: TRIM is disabled +[270431.276493] bdbm: ===================================================================== +[270431.276493] bdbm: DEVICE PARAMETERS +[270431.276494] bdbm: ===================================================================== +[270431.276494] bdbm: # of channels = 8 +[270431.276495] bdbm: # of chips per channel = 16 +[270431.276495] bdbm: # of blocks per chip = 256 +[270431.276496] bdbm: # of pages per block = 128 +[270431.276497] bdbm: # of subpages per page = 1 +[270431.276498] bdbm: page main size = 4096 bytes +[270431.276499] bdbm: page oob size = 64 bytes +[270431.276499] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[270431.276500] bdbm: +[270431.276500] bdbm: ===================================================================== +[270431.276501] bdbm: FTL CONFIGURATION +[270431.276501] bdbm: ===================================================================== +[270431.276503] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[270431.276504] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[270431.276504] bdbm: wl policy = 1 (1: none, 2: swap) +[270431.276505] bdbm: trim mode = 2 (1: enable, 2: disable) +[270431.276505] bdbm: kernel sector = 512 bytes +[270431.276505] bdbm: +[270431.276506] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[270431.296550] bdbm: llm_make_req: 0, 1 +[270447.320937] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[270447.320939] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard diff --git a/result/fio.toff_n1g.rslt b/result/fio.toff_n1g.rslt new file mode 100644 index 0000000..ada4bac --- /dev/null +++ b/result/fio.toff_n1g.rslt @@ -0,0 +1,45 @@ +JESD219: (g=0): rw=randrw, bs=512-64K/512-64K/512-64K, ioengine=libaio, iodepth=256 +... +fio-2.14-20-gd6192-dirty +Starting 4 processes +JESD219: Laying out IO file(s) (1 file(s) / 10240MB) +Jobs: 1 (f=0): [_(1),f(1),_(2)] [100.0% done] [4851KB/7096KB/0KB /s] [678/971/0 iops] [eta 00m:00s] +JESD219: (groupid=0, jobs=4): err= 0: pid=32167: Wed Nov 2 17:33:05 2016 + read : io=16385MB, bw=3703.8KB/s, iops=485, runt=4530132msec + slat (usec): min=4, max=2133.9K, avg=3257.53, stdev=22172.72 + clat (usec): min=114, max=3681.8K, avg=839815.07, stdev=398251.43 + lat (msec): min=4, max=3684, avg=843.07, stdev=398.95 + clat percentiles (msec): + | 1.00th=[ 367], 5.00th=[ 429], 10.00th=[ 478], 20.00th=[ 553], + | 30.00th=[ 619], 40.00th=[ 685], 50.00th=[ 750], 60.00th=[ 824], + | 70.00th=[ 906], 80.00th=[ 1029], 90.00th=[ 1254], 95.00th=[ 1631], + | 99.00th=[ 2474], 99.50th=[ 2638], 99.90th=[ 2933], 99.95th=[ 3064], + | 99.99th=[ 3359] + write: io=24575MB, bw=5554.1KB/s, iops=727, runt=4530132msec + slat (usec): min=4, max=2145.2K, avg=3306.47, stdev=24541.26 + clat (usec): min=88, max=3679.5K, avg=838464.97, stdev=397993.42 + lat (msec): min=3, max=3680, avg=841.77, stdev=398.82 + clat percentiles (msec): + | 1.00th=[ 363], 5.00th=[ 429], 10.00th=[ 478], 20.00th=[ 553], + | 30.00th=[ 619], 40.00th=[ 685], 50.00th=[ 750], 60.00th=[ 816], + | 70.00th=[ 906], 80.00th=[ 1029], 90.00th=[ 1254], 95.00th=[ 1631], + | 99.00th=[ 2474], 99.50th=[ 2606], 99.90th=[ 2933], 99.95th=[ 3064], + | 99.99th=[ 3326] + lat (usec) : 100=0.01%, 250=0.01%, 500=0.01% + lat (msec) : 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01%, 100=0.01% + lat (msec) : 250=0.10%, 500=12.65%, 750=37.59%, 1000=27.85%, 2000=18.80% + lat (msec) : >=2000=3.01% + cpu : usr=0.10%, sys=47.11%, ctx=5233407, majf=0, minf=44 + IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% + submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% + complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1% + issued : total=r=2197218/w=3295326/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 + latency : target=0, window=0, percentile=100.00%, depth=256 + +Run status group 0 (all jobs): + READ: io=16385MB, aggrb=3703KB/s, minb=3703KB/s, maxb=3703KB/s, mint=4530132msec, maxt=4530132msec + WRITE: io=24575MB, aggrb=5554KB/s, minb=5554KB/s, maxb=5554KB/s, mint=4530132msec, maxt=4530132msec + +Disk stats (read/write): + robusta: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00% + diff --git a/result/fio.toff_n2g.dmesg b/result/fio.toff_n2g.dmesg new file mode 100644 index 0000000..a8e06e5 --- /dev/null +++ b/result/fio.toff_n2g.dmesg @@ -0,0 +1,136 @@ +[331746.627948] bdbm: ----------------------------------------------- +[331746.627950] bdbm: < PERFORMANCE SUMMARY > +[331746.627950] bdbm: [0] Execution Time (us): 12400.513227 +[331746.627951] bdbm: +[331746.627952] bdbm: [1] Total I/Os +[331746.627952] bdbm: # of page reads: 2777349 +[331746.627953] bdbm: # of page writes: 895341 +[331746.627953] bdbm: # of block erase: 14336 +[331746.627954] bdbm: +[331746.627954] bdbm: [2] Normal I/Os +[331746.627954] bdbm: # of page reads: 1882120 +[331746.627955] bdbm: # of page writes: 0 +[331746.627955] bdbm: # of page rmw reads: 0 +[331746.627956] bdbm: # of page rmw writes: 0 +[331746.627956] bdbm: +[331746.627957] bdbm: [3] GC I/Os +[331746.627957] bdbm: # of GC invocation: 0 +[331746.627958] bdbm: # of page reads: 895229 +[331746.627958] bdbm: # of page writes: 895341 +[331746.627959] bdbm: # of block erase: 14336 +[331746.627959] bdbm: +[331746.627960] bdbm: [4] Meta I/Os +[331746.627960] bdbm: # of meta page reads: 0 +[331746.627960] bdbm: # of meta page writes: 0 +[331746.627961] bdbm: +[331746.627961] bdbm: [5] Elapsed Time +[331746.627962] bdbm: page read (us): 1068 (S:956 + Q:7 + D:105) +[331746.627963] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[331746.627963] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[331746.627964] bdbm: +[331746.627964] bdbm: [6] Utilization (R) +[331746.627966] bdbm: 21470 21632 21560 21802 21611 21576 21577 21750 +[331746.627967] bdbm: 21863 21556 21856 21869 21649 21691 21428 21650 +[331746.627968] bdbm: 21522 21731 21674 21800 21696 21521 21553 21875 +[331746.627970] bdbm: 21798 21474 21841 21593 21537 21595 21505 21533 +[331746.627971] bdbm: 21399 21704 21437 21695 21809 21615 21413 21824 +[331746.627972] bdbm: 21920 21633 21822 21744 21834 21580 21872 21848 +[331746.627973] bdbm: 21789 21738 21616 21643 21894 21812 21732 21741 +[331746.627974] bdbm: 21974 21870 21738 21718 21854 21723 21884 21717 +[331746.627975] bdbm: 21565 21720 21781 21795 21401 21440 21417 21475 +[331746.627976] bdbm: 21396 21524 21396 21648 21641 21652 21788 21890 +[331746.627978] bdbm: 21688 21992 21699 21391 21841 21632 21783 21763 +[331746.627979] bdbm: 22032 21798 21954 22008 21648 21649 21667 21693 +[331746.627980] bdbm: 21649 21760 21726 21837 21722 21830 21699 21968 +[331746.627981] bdbm: 21818 21847 21863 21694 21714 22028 21582 21741 +[331746.627982] bdbm: 21701 21874 21551 21747 21476 21546 21702 21335 +[331746.627983] bdbm: 21604 21713 21762 21679 21652 21876 21849 21657 +[331746.627984] bdbm: +[331746.627984] bdbm: [7] Utilization (W) +[331746.627986] bdbm: 7005 7019 7023 7032 7034 7035 7035 7037 +[331746.627987] bdbm: 7039 7039 7039 7039 7040 7040 7038 7038 +[331746.627988] bdbm: 7037 7037 7036 7034 7033 7032 7032 7032 +[331746.627989] bdbm: 7029 7029 7029 7029 7028 7026 7026 7026 +[331746.627990] bdbm: 7026 7026 7024 7022 7021 7021 7021 7020 +[331746.627991] bdbm: 7018 7015 7015 7012 7010 7008 7008 7008 +[331746.627992] bdbm: 7004 7004 7004 7003 7001 7001 7001 6999 +[331746.627994] bdbm: 6999 6998 6998 6998 6998 6997 6997 6997 +[331746.627995] bdbm: 6996 6996 6995 6995 6993 6990 6989 6989 +[331746.627996] bdbm: 6988 6988 6987 6987 6986 6984 6982 6981 +[331746.627997] bdbm: 6980 6980 6979 6979 6978 6978 6976 6975 +[331746.627998] bdbm: 6975 6975 6974 6970 6969 6968 6968 6967 +[331746.627999] bdbm: 6967 6967 6967 6965 6965 6963 6963 6963 +[331746.628000] bdbm: 6963 6963 6962 6961 6961 6960 6960 6959 +[331746.628001] bdbm: 6958 6958 6956 6954 6954 6952 6951 6951 +[331746.628003] bdbm: 6950 6949 6949 6948 6946 6946 6946 6946 +[331746.628003] bdbm: [8] NVM I/Os +[331746.628004] bdbm: #_of_nvm_total_accesses: 13577339 +[331746.628004] bdbm: #_of_nvm_total_write_requests: 9233759 +[331746.628005] bdbm: #_of_nvm_total_read_requests: 4343580 +[331746.628005] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9233759 +[331746.628006] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 2461432 +[331746.628006] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 6170610 +[331746.628007] bdbm: #_of_nvm_evict_from_nvm: 5000293 +[331746.628007] bdbm: #_of_nvm_write_amplification: 5000293 : 5895634 +[331746.628008] bdbm: +[331746.628008] bdbm: ----------------------------------------------- +[331746.628009] bdbm: ----------------------------------------------- +[331746.789728] bdbm: done +[331746.789731] bdbm: [dm_ramdrive_close] closed! +[331747.178601] bdbm: [bdbm_drv_main] bdbm_drv is closed +[331747.178603] bdbm: [bdbm_drv_main] bdbm_drv is removed +[331747.207050] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[331747.224383] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[331747.227771] bdbm: ===================================================================== +[331747.227772] bdbm: DEVICE PARAMETERS +[331747.227773] bdbm: ===================================================================== +[331747.227773] bdbm: # of channels = 8 +[331747.227774] bdbm: # of chips per channel = 16 +[331747.227774] bdbm: # of blocks per chip = 256 +[331747.227775] bdbm: # of pages per block = 128 +[331747.227775] bdbm: # of subpages per page = 1 +[331747.227776] bdbm: page main size = 4096 bytes +[331747.227776] bdbm: page oob size = 64 bytes +[331747.227777] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[331747.227778] bdbm: +[331747.227778] bdbm: ===================================================================== +[331747.227779] bdbm: RAM DISK INFO +[331747.227779] bdbm: ===================================================================== +[331747.227780] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[331748.781042] bdbm: ramssd addr = ffffc90050001000 +[331748.781044] bdbm: +[331748.781044] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[331750.332816] bdbm: *** building ptr_ramssd_data done +[331750.333001] bdbm: [dm_ramdrive_probe] probe done! +[331750.333003] bdbm: [dm_ramdrive_open] open done! +[331750.530166] bdbm: nvm cache addr = ffffc908d1385000 +[331750.535443] bdbm: ========================================================== +[331750.535444] bdbm: NVM CONFIGURATION +[331750.535444] bdbm: ========================================================== +[331750.535445] bdbm: total size = 2147483648, nr_nvm_pages = 524288, nvm_page_size = 4096 +[331750.693720] bdbm: TRIM is disabled +[331750.693827] bdbm: ===================================================================== +[331750.693828] bdbm: DEVICE PARAMETERS +[331750.693829] bdbm: ===================================================================== +[331750.693829] bdbm: # of channels = 8 +[331750.693830] bdbm: # of chips per channel = 16 +[331750.693830] bdbm: # of blocks per chip = 256 +[331750.693831] bdbm: # of pages per block = 128 +[331750.693831] bdbm: # of subpages per page = 1 +[331750.693832] bdbm: page main size = 4096 bytes +[331750.693832] bdbm: page oob size = 64 bytes +[331750.693833] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[331750.693833] bdbm: +[331750.693834] bdbm: ===================================================================== +[331750.693834] bdbm: FTL CONFIGURATION +[331750.693835] bdbm: ===================================================================== +[331750.693836] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[331750.693836] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[331750.693837] bdbm: wl policy = 1 (1: none, 2: swap) +[331750.693837] bdbm: trim mode = 2 (1: enable, 2: disable) +[331750.693838] bdbm: kernel sector = 512 bytes +[331750.693838] bdbm: +[331750.693839] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[331750.712838] bdbm: llm_make_req: 0, 1 +[331786.504094] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[331786.504096] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard diff --git a/result/fio.toff_n2g.rslt b/result/fio.toff_n2g.rslt new file mode 100644 index 0000000..6d2cefa --- /dev/null +++ b/result/fio.toff_n2g.rslt @@ -0,0 +1,44 @@ +JESD219: (g=0): rw=randrw, bs=512-64K/512-64K/512-64K, ioengine=libaio, iodepth=256 +... +fio-2.14-20-gd6192-dirty +Starting 4 processes +JESD219: Laying out IO file(s) (1 file(s) / 10240MB) + +JESD219: (groupid=0, jobs=4): err= 0: pid=12513: Thu Nov 3 14:13:52 2016 + read : io=16439MB, bw=2032.8KB/s, iops=265, runt=8281133msec + slat (usec): min=4, max=1800.9K, avg=6056.84, stdev=24470.63 + clat (usec): min=4, max=5296.7K, avg=1534991.67, stdev=408352.89 + lat (msec): min=1, max=5298, avg=1541.05, stdev=409.17 + clat percentiles (msec): + | 1.00th=[ 807], 5.00th=[ 988], 10.00th=[ 1074], 20.00th=[ 1205], + | 30.00th=[ 1303], 40.00th=[ 1401], 50.00th=[ 1483], 60.00th=[ 1582], + | 70.00th=[ 1680], 80.00th=[ 1811], 90.00th=[ 2040], 95.00th=[ 2278], + | 99.00th=[ 2900], 99.50th=[ 3130], 99.90th=[ 3589], 99.95th=[ 3752], + | 99.99th=[ 4047] + write: io=24521MB, bw=3032.2KB/s, iops=397, runt=8281133msec + slat (usec): min=4, max=1890.4K, avg=5983.13, stdev=24490.35 + clat (usec): min=4, max=5207.1K, avg=1533285.61, stdev=408324.94 + lat (msec): min=3, max=5298, avg=1539.27, stdev=409.19 + clat percentiles (msec): + | 1.00th=[ 799], 5.00th=[ 979], 10.00th=[ 1074], 20.00th=[ 1205], + | 30.00th=[ 1303], 40.00th=[ 1401], 50.00th=[ 1483], 60.00th=[ 1582], + | 70.00th=[ 1680], 80.00th=[ 1811], 90.00th=[ 2040], 95.00th=[ 2278], + | 99.00th=[ 2868], 99.50th=[ 3130], 99.90th=[ 3589], 99.95th=[ 3720], + | 99.99th=[ 4047] + lat (usec) : 10=0.01%, 20=0.01% + lat (msec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01% + lat (msec) : 100=0.01%, 250=0.01%, 500=0.11%, 750=0.46%, 1000=5.15% + lat (msec) : 2000=83.10%, >=2000=11.17% + cpu : usr=0.06%, sys=48.27%, ctx=5511135, majf=0, minf=47 + IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% + submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% + complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1% + issued : total=r=2200389/w=3292504/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 + latency : target=0, window=0, percentile=100.00%, depth=256 + +Run status group 0 (all jobs): + READ: io=16439MB, aggrb=2032KB/s, minb=2032KB/s, maxb=2032KB/s, mint=8281133msec, maxt=8281133msec + WRITE: io=24521MB, aggrb=3032KB/s, minb=3032KB/s, maxb=3032KB/s, mint=8281133msec, maxt=8281133msec + +Disk stats (read/write): + robusta: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00% diff --git a/result/fio.toff_n500m.dmesg b/result/fio.toff_n500m.dmesg new file mode 100644 index 0000000..bdd0315 --- /dev/null +++ b/result/fio.toff_n500m.dmesg @@ -0,0 +1,922 @@ +[331746.627948] bdbm: ----------------------------------------------- +[331746.627950] bdbm: < PERFORMANCE SUMMARY > +[331746.627950] bdbm: [0] Execution Time (us): 12400.513227 +[331746.627951] bdbm: +[331746.627952] bdbm: [1] Total I/Os +[331746.627952] bdbm: # of page reads: 2777349 +[331746.627953] bdbm: # of page writes: 895341 +[331746.627953] bdbm: # of block erase: 14336 +[331746.627954] bdbm: +[331746.627954] bdbm: [2] Normal I/Os +[331746.627954] bdbm: # of page reads: 1882120 +[331746.627955] bdbm: # of page writes: 0 +[331746.627955] bdbm: # of page rmw reads: 0 +[331746.627956] bdbm: # of page rmw writes: 0 +[331746.627956] bdbm: +[331746.627957] bdbm: [3] GC I/Os +[331746.627957] bdbm: # of GC invocation: 0 +[331746.627958] bdbm: # of page reads: 895229 +[331746.627958] bdbm: # of page writes: 895341 +[331746.627959] bdbm: # of block erase: 14336 +[331746.627959] bdbm: +[331746.627960] bdbm: [4] Meta I/Os +[331746.627960] bdbm: # of meta page reads: 0 +[331746.627960] bdbm: # of meta page writes: 0 +[331746.627961] bdbm: +[331746.627961] bdbm: [5] Elapsed Time +[331746.627962] bdbm: page read (us): 1068 (S:956 + Q:7 + D:105) +[331746.627963] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[331746.627963] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[331746.627964] bdbm: +[331746.627964] bdbm: [6] Utilization (R) +[331746.627966] bdbm: 21470 21632 21560 21802 21611 21576 21577 21750 +[331746.627967] bdbm: 21863 21556 21856 21869 21649 21691 21428 21650 +[331746.627968] bdbm: 21522 21731 21674 21800 21696 21521 21553 21875 +[331746.627970] bdbm: 21798 21474 21841 21593 21537 21595 21505 21533 +[331746.627971] bdbm: 21399 21704 21437 21695 21809 21615 21413 21824 +[331746.627972] bdbm: 21920 21633 21822 21744 21834 21580 21872 21848 +[331746.627973] bdbm: 21789 21738 21616 21643 21894 21812 21732 21741 +[331746.627974] bdbm: 21974 21870 21738 21718 21854 21723 21884 21717 +[331746.627975] bdbm: 21565 21720 21781 21795 21401 21440 21417 21475 +[331746.627976] bdbm: 21396 21524 21396 21648 21641 21652 21788 21890 +[331746.627978] bdbm: 21688 21992 21699 21391 21841 21632 21783 21763 +[331746.627979] bdbm: 22032 21798 21954 22008 21648 21649 21667 21693 +[331746.627980] bdbm: 21649 21760 21726 21837 21722 21830 21699 21968 +[331746.627981] bdbm: 21818 21847 21863 21694 21714 22028 21582 21741 +[331746.627982] bdbm: 21701 21874 21551 21747 21476 21546 21702 21335 +[331746.627983] bdbm: 21604 21713 21762 21679 21652 21876 21849 21657 +[331746.627984] bdbm: +[331746.627984] bdbm: [7] Utilization (W) +[331746.627986] bdbm: 7005 7019 7023 7032 7034 7035 7035 7037 +[331746.627987] bdbm: 7039 7039 7039 7039 7040 7040 7038 7038 +[331746.627988] bdbm: 7037 7037 7036 7034 7033 7032 7032 7032 +[331746.627989] bdbm: 7029 7029 7029 7029 7028 7026 7026 7026 +[331746.627990] bdbm: 7026 7026 7024 7022 7021 7021 7021 7020 +[331746.627991] bdbm: 7018 7015 7015 7012 7010 7008 7008 7008 +[331746.627992] bdbm: 7004 7004 7004 7003 7001 7001 7001 6999 +[331746.627994] bdbm: 6999 6998 6998 6998 6998 6997 6997 6997 +[331746.627995] bdbm: 6996 6996 6995 6995 6993 6990 6989 6989 +[331746.627996] bdbm: 6988 6988 6987 6987 6986 6984 6982 6981 +[331746.627997] bdbm: 6980 6980 6979 6979 6978 6978 6976 6975 +[331746.627998] bdbm: 6975 6975 6974 6970 6969 6968 6968 6967 +[331746.627999] bdbm: 6967 6967 6967 6965 6965 6963 6963 6963 +[331746.628000] bdbm: 6963 6963 6962 6961 6961 6960 6960 6959 +[331746.628001] bdbm: 6958 6958 6956 6954 6954 6952 6951 6951 +[331746.628003] bdbm: 6950 6949 6949 6948 6946 6946 6946 6946 +[331746.628003] bdbm: [8] NVM I/Os +[331746.628004] bdbm: #_of_nvm_total_accesses: 13577339 +[331746.628004] bdbm: #_of_nvm_total_write_requests: 9233759 +[331746.628005] bdbm: #_of_nvm_total_read_requests: 4343580 +[331746.628005] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9233759 +[331746.628006] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 2461432 +[331746.628006] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 6170610 +[331746.628007] bdbm: #_of_nvm_evict_from_nvm: 5000293 +[331746.628007] bdbm: #_of_nvm_write_amplification: 5000293 : 5895634 +[331746.628008] bdbm: +[331746.628008] bdbm: ----------------------------------------------- +[331746.628009] bdbm: ----------------------------------------------- +[331746.789728] bdbm: done +[331746.789731] bdbm: [dm_ramdrive_close] closed! +[331747.178601] bdbm: [bdbm_drv_main] bdbm_drv is closed +[331747.178603] bdbm: [bdbm_drv_main] bdbm_drv is removed +[331747.207050] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[331747.224383] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[331747.227771] bdbm: ===================================================================== +[331747.227772] bdbm: DEVICE PARAMETERS +[331747.227773] bdbm: ===================================================================== +[331747.227773] bdbm: # of channels = 8 +[331747.227774] bdbm: # of chips per channel = 16 +[331747.227774] bdbm: # of blocks per chip = 256 +[331747.227775] bdbm: # of pages per block = 128 +[331747.227775] bdbm: # of subpages per page = 1 +[331747.227776] bdbm: page main size = 4096 bytes +[331747.227776] bdbm: page oob size = 64 bytes +[331747.227777] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[331747.227778] bdbm: +[331747.227778] bdbm: ===================================================================== +[331747.227779] bdbm: RAM DISK INFO +[331747.227779] bdbm: ===================================================================== +[331747.227780] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[331748.781042] bdbm: ramssd addr = ffffc90050001000 +[331748.781044] bdbm: +[331748.781044] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[331750.332816] bdbm: *** building ptr_ramssd_data done +[331750.333001] bdbm: [dm_ramdrive_probe] probe done! +[331750.333003] bdbm: [dm_ramdrive_open] open done! +[331750.530166] bdbm: nvm cache addr = ffffc908d1385000 +[331750.535443] bdbm: ========================================================== +[331750.535444] bdbm: NVM CONFIGURATION +[331750.535444] bdbm: ========================================================== +[331750.535445] bdbm: total size = 2147483648, nr_nvm_pages = 524288, nvm_page_size = 4096 +[331750.693720] bdbm: TRIM is disabled +[331750.693827] bdbm: ===================================================================== +[331750.693828] bdbm: DEVICE PARAMETERS +[331750.693829] bdbm: ===================================================================== +[331750.693829] bdbm: # of channels = 8 +[331750.693830] bdbm: # of chips per channel = 16 +[331750.693830] bdbm: # of blocks per chip = 256 +[331750.693831] bdbm: # of pages per block = 128 +[331750.693831] bdbm: # of subpages per page = 1 +[331750.693832] bdbm: page main size = 4096 bytes +[331750.693832] bdbm: page oob size = 64 bytes +[331750.693833] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[331750.693833] bdbm: +[331750.693834] bdbm: ===================================================================== +[331750.693834] bdbm: FTL CONFIGURATION +[331750.693835] bdbm: ===================================================================== +[331750.693836] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[331750.693836] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[331750.693837] bdbm: wl policy = 1 (1: none, 2: swap) +[331750.693837] bdbm: trim mode = 2 (1: enable, 2: disable) +[331750.693838] bdbm: kernel sector = 512 bytes +[331750.693838] bdbm: +[331750.693839] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[331750.712838] bdbm: llm_make_req: 0, 1 +[331786.504094] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[331786.504096] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[332071.969845] bdbm: ----------------------------------------------- +[332071.969846] bdbm: < PERFORMANCE SUMMARY > +[332071.969847] bdbm: [0] Execution Time (us): 321.253216 +[332071.969848] bdbm: +[332071.969848] bdbm: [1] Total I/Os +[332071.969849] bdbm: # of page reads: 0 +[332071.969849] bdbm: # of page writes: 0 +[332071.969850] bdbm: # of block erase: 0 +[332071.969850] bdbm: +[332071.969851] bdbm: [2] Normal I/Os +[332071.969851] bdbm: # of page reads: 0 +[332071.969852] bdbm: # of page writes: 0 +[332071.969852] bdbm: # of page rmw reads: 0 +[332071.969852] bdbm: # of page rmw writes: 0 +[332071.969853] bdbm: +[332071.969853] bdbm: [3] GC I/Os +[332071.969854] bdbm: # of GC invocation: 0 +[332071.969854] bdbm: # of page reads: 0 +[332071.969855] bdbm: # of page writes: 0 +[332071.969855] bdbm: # of block erase: 0 +[332071.969856] bdbm: +[332071.969856] bdbm: [4] Meta I/Os +[332071.969856] bdbm: # of meta page reads: 0 +[332071.969857] bdbm: # of meta page writes: 0 +[332071.969857] bdbm: +[332071.969858] bdbm: [5] Elapsed Time +[332071.969859] bdbm: page read (us): 0 (S:0 + Q:0 + D:0) +[332071.969859] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[332071.969860] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[332071.969860] bdbm: +[332071.969861] bdbm: [6] Utilization (R) +[332071.969862] bdbm: 0 0 0 0 0 0 0 0 +[332071.969863] bdbm: 0 0 0 0 0 0 0 0 +[332071.969865] bdbm: 0 0 0 0 0 0 0 0 +[332071.969866] bdbm: 0 0 0 0 0 0 0 0 +[332071.969867] bdbm: 0 0 0 0 0 0 0 0 +[332071.969868] bdbm: 0 0 0 0 0 0 0 0 +[332071.969869] bdbm: 0 0 0 0 0 0 0 0 +[332071.969870] bdbm: 0 0 0 0 0 0 0 0 +[332071.969871] bdbm: 0 0 0 0 0 0 0 0 +[332071.969872] bdbm: 0 0 0 0 0 0 0 0 +[332071.969873] bdbm: 0 0 0 0 0 0 0 0 +[332071.969875] bdbm: 0 0 0 0 0 0 0 0 +[332071.969876] bdbm: 0 0 0 0 0 0 0 0 +[332071.969877] bdbm: 0 0 0 0 0 0 0 0 +[332071.969878] bdbm: 0 0 0 0 0 0 0 0 +[332071.969879] bdbm: 0 0 0 0 0 0 0 0 +[332071.969879] bdbm: +[332071.969880] bdbm: [7] Utilization (W) +[332071.969881] bdbm: 0 0 0 0 0 0 0 0 +[332071.969882] bdbm: 0 0 0 0 0 0 0 0 +[332071.969883] bdbm: 0 0 0 0 0 0 0 0 +[332071.969884] bdbm: 0 0 0 0 0 0 0 0 +[332071.969886] bdbm: 0 0 0 0 0 0 0 0 +[332071.969887] bdbm: 0 0 0 0 0 0 0 0 +[332071.969888] bdbm: 0 0 0 0 0 0 0 0 +[332071.969889] bdbm: 0 0 0 0 0 0 0 0 +[332071.969890] bdbm: 0 0 0 0 0 0 0 0 +[332071.969891] bdbm: 0 0 0 0 0 0 0 0 +[332071.969892] bdbm: 0 0 0 0 0 0 0 0 +[332071.969893] bdbm: 0 0 0 0 0 0 0 0 +[332071.969894] bdbm: 0 0 0 0 0 0 0 0 +[332071.969896] bdbm: 0 0 0 0 0 0 0 0 +[332071.969897] bdbm: 0 0 0 0 0 0 0 0 +[332071.969898] bdbm: 0 0 0 0 0 0 0 0 +[332071.969898] bdbm: [8] NVM I/Os +[332071.969899] bdbm: #_of_nvm_total_accesses: 89042 +[332071.969899] bdbm: #_of_nvm_total_write_requests: 89008 +[332071.969900] bdbm: #_of_nvm_total_read_requests: 34 +[332071.969900] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 89008 +[332071.969901] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 6 +[332071.969901] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 33884 +[332071.969902] bdbm: #_of_nvm_evict_from_nvm: 0 +[332071.969902] bdbm: #_of_nvm_write_amplification: 0 : 0 +[332071.969903] bdbm: +[332071.969903] bdbm: ----------------------------------------------- +[332071.969904] bdbm: ----------------------------------------------- +[332072.139172] bdbm: done +[332072.139174] bdbm: [dm_ramdrive_close] closed! +[332072.528125] bdbm: [bdbm_drv_main] bdbm_drv is closed +[332072.528128] bdbm: [bdbm_drv_main] bdbm_drv is removed +[332072.553804] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[332072.583816] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[332072.587882] bdbm: ===================================================================== +[332072.587884] bdbm: DEVICE PARAMETERS +[332072.587885] bdbm: ===================================================================== +[332072.587885] bdbm: # of channels = 8 +[332072.587886] bdbm: # of chips per channel = 16 +[332072.587886] bdbm: # of blocks per chip = 256 +[332072.587887] bdbm: # of pages per block = 128 +[332072.587888] bdbm: # of subpages per page = 1 +[332072.587888] bdbm: page main size = 4096 bytes +[332072.587889] bdbm: page oob size = 64 bytes +[332072.587889] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[332072.587890] bdbm: +[332072.587891] bdbm: ===================================================================== +[332072.587891] bdbm: RAM DISK INFO +[332072.587892] bdbm: ===================================================================== +[332072.587892] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[332074.158083] bdbm: ramssd addr = ffffc90050001000 +[332074.158085] bdbm: +[332074.158085] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[332075.754783] bdbm: *** building ptr_ramssd_data done +[332075.754963] bdbm: [dm_ramdrive_probe] probe done! +[332075.754965] bdbm: [dm_ramdrive_open] open done! +[332075.817521] bdbm: nvm cache addr = ffffc90870003000 +[332075.818952] bdbm: ========================================================== +[332075.818953] bdbm: NVM CONFIGURATION +[332075.818954] bdbm: ========================================================== +[332075.818954] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[332075.974845] bdbm: TRIM is disabled +[332075.974966] bdbm: ===================================================================== +[332075.974967] bdbm: DEVICE PARAMETERS +[332075.974967] bdbm: ===================================================================== +[332075.974968] bdbm: # of channels = 8 +[332075.974968] bdbm: # of chips per channel = 16 +[332075.974969] bdbm: # of blocks per chip = 256 +[332075.974969] bdbm: # of pages per block = 128 +[332075.974970] bdbm: # of subpages per page = 1 +[332075.974970] bdbm: page main size = 4096 bytes +[332075.974971] bdbm: page oob size = 64 bytes +[332075.974971] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[332075.974972] bdbm: +[332075.974973] bdbm: ===================================================================== +[332075.974973] bdbm: FTL CONFIGURATION +[332075.974973] bdbm: ===================================================================== +[332075.974974] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[332075.974975] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[332075.974975] bdbm: wl policy = 1 (1: none, 2: swap) +[332075.974976] bdbm: trim mode = 2 (1: enable, 2: disable) +[332075.974976] bdbm: kernel sector = 512 bytes +[332075.974976] bdbm: +[332075.974977] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[332075.992790] bdbm: llm_make_req: 0, 1 +[332082.506011] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[332082.506014] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[332112.487147] bdbm: nvm: total access = 100000, total read = 42, read hit = 14, total_write = 99957, write hit = 99957, hit = 33859, evict = 0 +[332130.646755] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 33873, evict = 35026 +[332133.412726] bdbm: llm_make_req: 50000, 3 +[332142.702356] bdbm: llm_make_req: 100000, 3 +[332149.383500] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 33873, evict = 135026 +[332152.511361] bdbm: llm_make_req: 150000, 3 +[332162.841791] bdbm: llm_make_req: 200000, 3 +[332169.990871] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 33873, evict = 235026 +[332173.250079] bdbm: llm_make_req: 250000, 2 +[332183.825200] bdbm: llm_make_req: 300000, 3 +[332190.754500] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 33873, evict = 335026 +[332194.063844] bdbm: llm_make_req: 350000, 3 +[332205.027050] bdbm: llm_make_req: 400000, 3 +[332211.959156] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 33873, evict = 435026 +[332214.722387] bdbm: llm_make_req: 450000, 3 +[332223.942392] bdbm: llm_make_req: 500000, 3 +[332230.384017] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 33873, evict = 535026 +[332233.126499] bdbm: llm_make_req: 550000, 3 +[332242.248113] bdbm: llm_make_req: 600000, 3 +[332248.637843] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 33873, evict = 635026 +[332251.356670] bdbm: llm_make_req: 650000, 3 +[332262.413254] bdbm: llm_make_req: 700000, 3 +[332268.957307] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 33873, evict = 735026 +[332271.760709] bdbm: llm_make_req: 750000, 3 +[332281.076802] bdbm: llm_make_req: 800000, 3 +[332287.608278] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 33873, evict = 835026 +[332290.396236] bdbm: llm_make_req: 850000, 3 +[332299.727349] bdbm: llm_make_req: 900000, 3 +[332306.205378] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 33873, evict = 935026 +[332308.969280] bdbm: llm_make_req: 950000, 3 +[332318.507453] bdbm: llm_make_req: 1000000, 3 +[332326.067024] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 33873, evict = 1035026 +[332328.830562] bdbm: llm_make_req: 1050000, 3 +[332338.198237] bdbm: llm_make_req: 1100000, 3 +[332344.773632] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 33873, evict = 1135026 +[332347.563391] bdbm: llm_make_req: 1150000, 3 +[332356.892870] bdbm: llm_make_req: 1200000, 3 +[332363.410772] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 33873, evict = 1235026 +[332366.177468] bdbm: llm_make_req: 1250000, 3 +[332375.351798] bdbm: llm_make_req: 1300000, 3 +[332381.867725] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 33873, evict = 1335026 +[332384.783550] bdbm: llm_make_req: 1350000, 3 +[332394.676277] bdbm: llm_make_req: 1400000, 3 +[332401.570848] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 33873, evict = 1435026 +[332404.598253] bdbm: llm_make_req: 1450000, 3 +[332414.511933] bdbm: llm_make_req: 1500000, 3 +[332421.472164] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 33873, evict = 1535026 +[332424.693691] bdbm: llm_make_req: 1550000, 3 +[332434.639186] bdbm: llm_make_req: 1600000, 3 +[332441.646683] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 33873, evict = 1635026 +[332444.682330] bdbm: llm_make_req: 1650000, 3 +[332454.856879] bdbm: llm_make_req: 1700000, 3 +[332461.845919] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 33873, evict = 1735026 +[332465.030208] bdbm: llm_make_req: 1750000, 3 +[332475.252621] bdbm: llm_make_req: 1800000, 2 +[332482.489795] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 33873, evict = 1835026 +[332485.561732] bdbm: llm_make_req: 1850000, 3 +[332495.311822] bdbm: llm_make_req: 1900000, 3 +[332501.901010] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 33873, evict = 1935026 +[332504.871331] bdbm: llm_make_req: 1950000, 3 +[332514.703148] bdbm: llm_make_req: 2000000, 2 +[332521.586579] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 33873, evict = 2035026 +[332524.583953] bdbm: llm_make_req: 2050000, 2 +[332534.960811] bdbm: llm_make_req: 2100000, 3 +[332542.075299] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 33873, evict = 2135026 +[332544.991002] bdbm: llm_make_req: 2150000, 3 +[332554.823212] bdbm: llm_make_req: 2200000, 3 +[332561.982790] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 33873, evict = 2235026 +[332564.991905] bdbm: llm_make_req: 2250000, 3 +[332574.945532] bdbm: llm_make_req: 2300000, 3 +[332581.765395] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 33873, evict = 2335026 +[332584.719048] bdbm: llm_make_req: 2350000, 3 +[332594.616124] bdbm: llm_make_req: 2400000, 3 +[332601.683303] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 33873, evict = 2435026 +[332604.565456] bdbm: llm_make_req: 2450000, 2 +[332614.433469] bdbm: llm_make_req: 2500000, 3 +[332621.718157] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 33873, evict = 2535026 +[332624.638846] bdbm: llm_make_req: 2550000, 3 +[332635.437857] bdbm: llm_make_req: 2600000, 11 +[332641.857185] bdbm: nvm: total access = 2800000, total read = 21127, read hit = 961, total_write = 2778872, write hit = 2778872, hit = 36058, evict = 2612703 +[332645.262582] bdbm: llm_make_req: 2650000, 2 +[332655.552081] bdbm: llm_make_req: 2700000, 3 +[332659.748336] bdbm: nvm: total access = 2900000, total read = 60831, read hit = 5844, total_write = 2839168, write hit = 2839168, hit = 48481, evict = 2665459 +[332665.872489] bdbm: llm_make_req: 2750000, 3 +[332676.206572] bdbm: nvm: total access = 3000000, total read = 100697, read hit = 14369, total_write = 2899302, write hit = 2899302, hit = 70143, evict = 2712456 +[332676.481063] bdbm: llm_make_req: 2800000, 3 +[332687.321017] bdbm: llm_make_req: 2850000, 2 +[332692.428446] bdbm: nvm: total access = 3100000, total read = 140950, read hit = 24461, total_write = 2959049, write hit = 2959049, hit = 95067, evict = 2757371 +[332698.095294] bdbm: llm_make_req: 2900000, 61 +[332708.902162] bdbm: llm_make_req: 2950000, 16 +[332708.913893] bdbm: nvm: total access = 3200000, total read = 181166, read hit = 34240, total_write = 3018833, write hit = 3018833, hit = 118860, evict = 2803141 +[332719.604489] bdbm: llm_make_req: 3000000, 2 +[332725.231216] bdbm: nvm: total access = 3300000, total read = 219911, read hit = 43271, total_write = 3080088, write hit = 3080088, hit = 142290, evict = 2849997 +[332730.197378] bdbm: llm_make_req: 3050000, 8 +[332740.733600] bdbm: llm_make_req: 3100000, 3 +[332741.392422] bdbm: nvm: total access = 3400000, total read = 260083, read hit = 52681, total_write = 3139916, write hit = 3139916, hit = 165837, evict = 2895688 +[332751.449637] bdbm: llm_make_req: 3150000, 2 +[332757.724321] bdbm: nvm: total access = 3500000, total read = 300886, read hit = 62310, total_write = 3199113, write hit = 3199113, hit = 189540, evict = 2940811 +[332762.080959] bdbm: llm_make_req: 3200000, 8 +[332772.785293] bdbm: llm_make_req: 3250000, 1 +[332774.098942] bdbm: nvm: total access = 3600000, total read = 340472, read hit = 71543, total_write = 3259527, write hit = 3259527, hit = 212960, evict = 2987038 +[332783.409825] bdbm: llm_make_req: 3300000, 2 +[332790.393958] bdbm: nvm: total access = 3700000, total read = 380668, read hit = 80835, total_write = 3319331, write hit = 3319331, hit = 236164, evict = 3032930 +[332794.116772] bdbm: llm_make_req: 3350000, 3 +[332804.904656] bdbm: llm_make_req: 3400000, 3 +[332806.937631] bdbm: nvm: total access = 3800000, total read = 420484, read hit = 90194, total_write = 3379515, write hit = 3379515, hit = 259487, evict = 3079150 +[332815.672153] bdbm: llm_make_req: 3450000, 2 +[332823.301398] bdbm: nvm: total access = 3900000, total read = 460445, read hit = 99396, total_write = 3439554, write hit = 3439554, hit = 283159, evict = 3124719 +[332826.352832] bdbm: llm_make_req: 3500000, 1 +[332837.098566] bdbm: llm_make_req: 3550000, 1 +[332839.751959] bdbm: nvm: total access = 4000000, total read = 500053, read hit = 108768, total_write = 3499946, write hit = 3499946, hit = 306911, evict = 3170731 +[332847.866176] bdbm: llm_make_req: 3600000, 2 +[332856.196316] bdbm: nvm: total access = 4100000, total read = 540527, read hit = 118129, total_write = 3559472, write hit = 3559472, hit = 330252, evict = 3216277 +[332858.635053] bdbm: llm_make_req: 3650000, 15 +[332869.333428] bdbm: llm_make_req: 3700000, 1 +[332872.668570] bdbm: nvm: total access = 4200000, total read = 580650, read hit = 127421, total_write = 3619349, write hit = 3619349, hit = 353160, evict = 3262538 +[332880.120521] bdbm: llm_make_req: 3750000, 8 +[332889.253628] bdbm: nvm: total access = 4300000, total read = 620476, read hit = 136706, total_write = 3679523, write hit = 3679523, hit = 376833, evict = 3308324 +[332890.925935] bdbm: llm_make_req: 3800000, 2 +[332901.758634] bdbm: llm_make_req: 3850000, 2 +[332905.702263] bdbm: nvm: total access = 4400000, total read = 660958, read hit = 146526, total_write = 3739041, write hit = 3739041, hit = 400788, evict = 3353707 +[332912.502089] bdbm: llm_make_req: 3900000, 2 +[332921.955051] bdbm: nvm: total access = 4500000, total read = 700719, read hit = 155915, total_write = 3799280, write hit = 3799280, hit = 424615, evict = 3399508 +[332923.209364] bdbm: llm_make_req: 3950000, 3 +[332934.065730] bdbm: llm_make_req: 4000000, 3 +[332938.500896] bdbm: nvm: total access = 4600000, total read = 740636, read hit = 165519, total_write = 3859363, write hit = 3859363, hit = 448491, evict = 3445319 +[332944.755313] bdbm: llm_make_req: 4050000, 73 +[332954.910708] bdbm: nvm: total access = 4700000, total read = 780716, read hit = 174870, total_write = 3919283, write hit = 3919283, hit = 472086, evict = 3490995 +[332955.618488] bdbm: llm_make_req: 4100000, 10 +[332966.316364] bdbm: llm_make_req: 4150000, 1 +[332971.259252] bdbm: nvm: total access = 4800000, total read = 821361, read hit = 184383, total_write = 3978638, write hit = 3978638, hit = 495610, evict = 3536339 +[332976.969021] bdbm: llm_make_req: 4200000, 3 +[332987.552513] bdbm: nvm: total access = 4900000, total read = 862333, read hit = 193870, total_write = 4037666, write hit = 4037666, hit = 519169, evict = 3581295 +[332987.605340] bdbm: llm_make_req: 4250000, 14 +[332998.277581] bdbm: llm_make_req: 4300000, 2 +[333003.952477] bdbm: nvm: total access = 5000000, total read = 903052, read hit = 203665, total_write = 4096947, write hit = 4096947, hit = 542604, evict = 3626936 +[333008.933689] bdbm: llm_make_req: 4350000, 3 +[333019.457540] bdbm: llm_make_req: 4400000, 3 +[333020.096269] bdbm: nvm: total access = 5100000, total read = 942949, read hit = 212963, total_write = 4157050, write hit = 4157050, hit = 566055, evict = 3672886 +[333030.294711] bdbm: llm_make_req: 4450000, 4 +[333036.537852] bdbm: nvm: total access = 5200000, total read = 983064, read hit = 222834, total_write = 4216935, write hit = 4216935, hit = 589969, evict = 3718728 +[333041.113824] bdbm: llm_make_req: 4500000, 2 +[333051.777977] bdbm: llm_make_req: 4550000, 8 +[333052.878915] bdbm: nvm: total access = 5300000, total read = 1022758, read hit = 232228, total_write = 4277241, write hit = 4277241, hit = 613680, evict = 3764717 +[333062.423709] bdbm: llm_make_req: 4600000, 13 +[333069.190394] bdbm: nvm: total access = 5400000, total read = 1062899, read hit = 241701, total_write = 4337100, write hit = 4337100, hit = 637592, evict = 3810137 +[333073.223742] bdbm: llm_make_req: 4650000, 3 +[333083.788819] bdbm: llm_make_req: 4700000, 2 +[333085.485090] bdbm: nvm: total access = 5500000, total read = 1103222, read hit = 251244, total_write = 4396777, write hit = 4396777, hit = 660970, evict = 3855979 +[333094.543508] bdbm: llm_make_req: 4750000, 2 +[333101.906068] bdbm: nvm: total access = 5600000, total read = 1142994, read hit = 260797, total_write = 4457005, write hit = 4457005, hit = 684479, evict = 3902251 +[333105.235229] bdbm: llm_make_req: 4800000, 1 +[333115.836342] bdbm: llm_make_req: 4850000, 2 +[333118.213271] bdbm: nvm: total access = 5700000, total read = 1182689, read hit = 270113, total_write = 4517310, write hit = 4517310, hit = 707995, evict = 3948356 +[333126.607148] bdbm: llm_make_req: 4900000, 3 +[333134.578317] bdbm: nvm: total access = 5800000, total read = 1223064, read hit = 279909, total_write = 4576935, write hit = 4576935, hit = 731653, evict = 3994119 +[333137.323631] bdbm: llm_make_req: 4950000, 2 +[333148.109311] bdbm: llm_make_req: 5000000, 3 +[333151.079971] bdbm: nvm: total access = 5900000, total read = 1262856, read hit = 289150, total_write = 4637143, write hit = 4637143, hit = 755207, evict = 4040014 +[333158.785576] bdbm: llm_make_req: 5050000, 2 +[333163.584806] bdbm: llm_make_req: 5100000, 14 +[333171.244364] bdbm: nvm: total access = 6000000, total read = 1303085, read hit = 298373, total_write = 4696914, write hit = 4696914, hit = 778439, evict = 4085776 +[333172.398091] bdbm: llm_make_req: 5150000, 95 +[333181.466464] bdbm: llm_make_req: 5200000, 2 +[333189.437379] bdbm: llm_make_req: 5250000, 8 +[333191.295155] bdbm: nvm: total access = 6100000, total read = 1343229, read hit = 307854, total_write = 4756770, write hit = 4756770, hit = 801932, evict = 4131620 +[333197.203684] bdbm: llm_make_req: 5300000, 1 +[333206.295947] bdbm: llm_make_req: 5350000, 96 +[333212.496283] bdbm: nvm: total access = 6200000, total read = 1383669, read hit = 317189, total_write = 4816330, write hit = 4816330, hit = 825045, evict = 4177402 +[333214.277502] bdbm: llm_make_req: 5400000, 2 +[333222.074626] bdbm: llm_make_req: 5450000, 3 +[333230.378047] bdbm: llm_make_req: 5500000, 96 +[333233.433214] bdbm: nvm: total access = 6300000, total read = 1422769, read hit = 326453, total_write = 4877230, write hit = 4877230, hit = 848725, evict = 4223886 +[333237.318026] bdbm: llm_make_req: 5550000, 1 +[333244.074775] bdbm: llm_make_req: 5600000, 3 +[333252.076366] bdbm: llm_make_req: 5650000, 96 +[333257.126551] bdbm: nvm: total access = 6400000, total read = 1462928, read hit = 335814, total_write = 4937071, write hit = 4937071, hit = 872215, evict = 4269598 +[333258.726443] bdbm: llm_make_req: 5700000, 11 +[333264.863566] bdbm: llm_make_req: 5750000, 96 +[333273.019399] bdbm: llm_make_req: 5800000, 96 +[333279.629964] bdbm: nvm: total access = 6500000, total read = 1503539, read hit = 345274, total_write = 4996460, write hit = 4996460, hit = 895718, evict = 4314944 +[333279.647725] bdbm: llm_make_req: 5850000, 2 +[333286.146481] bdbm: llm_make_req: 5900000, 96 +[333293.594067] bdbm: llm_make_req: 5950000, 96 +[333299.662360] bdbm: llm_make_req: 6000000, 16 +[333303.535482] bdbm: nvm: total access = 6600000, total read = 1543618, read hit = 354908, total_write = 5056381, write hit = 5056381, hit = 919684, evict = 4360533 +[333306.503678] bdbm: llm_make_req: 6050000, 96 +[333313.486700] bdbm: llm_make_req: 6100000, 96 +[333319.136450] bdbm: llm_make_req: 6150000, 1 +[333326.007336] bdbm: llm_make_req: 6200000, 94 +[333328.135043] bdbm: nvm: total access = 6700000, total read = 1583506, read hit = 364249, total_write = 5116493, write hit = 5116493, hit = 943155, evict = 4406515 +[333332.439887] bdbm: llm_make_req: 6250000, 3 +[333338.193752] bdbm: llm_make_req: 6300000, 96 +[333345.386790] bdbm: llm_make_req: 6350000, 96 +[333351.009046] bdbm: llm_make_req: 6400000, 2 +[333354.143283] bdbm: nvm: total access = 6800000, total read = 1623565, read hit = 373693, total_write = 5176434, write hit = 5176434, hit = 966836, evict = 4452219 +[333356.783999] bdbm: llm_make_req: 6450000, 96 +[333363.517159] bdbm: llm_make_req: 6500000, 96 +[333368.945512] bdbm: llm_make_req: 6550000, 16 +[333375.431601] bdbm: llm_make_req: 6600000, 96 +[333380.607128] bdbm: nvm: total access = 6900000, total read = 1663363, read hit = 383051, total_write = 5236636, write hit = 5236636, hit = 990258, evict = 4498357 +[333381.495815] bdbm: llm_make_req: 6650000, 11 +[333386.381293] bdbm: llm_make_req: 6700000, 95 +[333393.092366] bdbm: llm_make_req: 6750000, 96 +[333398.144645] bdbm: llm_make_req: 6800000, 3 +[333404.067219] bdbm: llm_make_req: 6850000, 94 +[333409.001699] bdbm: nvm: total access = 7000000, total read = 1703265, read hit = 392394, total_write = 5296734, write hit = 5296734, hit = 1013930, evict = 4544126 +[333410.201290] bdbm: llm_make_req: 6900000, 96 +[333414.872253] bdbm: llm_make_req: 6950000, 96 +[333421.712886] bdbm: llm_make_req: 7000000, 96 +[333426.892146] bdbm: llm_make_req: 7050000, 2 +[333432.665072] bdbm: llm_make_req: 7100000, 96 +[333437.787865] bdbm: nvm: total access = 7100000, total read = 1743791, read hit = 402005, total_write = 5356208, write hit = 5356208, hit = 1037530, evict = 4589611 +[333438.447578] bdbm: llm_make_req: 7150000, 96 +[333442.788015] bdbm: llm_make_req: 7200000, 96 +[333449.205978] bdbm: llm_make_req: 7250000, 96 +[333454.129139] bdbm: llm_make_req: 7300000, 2 +[333459.471270] bdbm: llm_make_req: 7350000, 96 +[333465.077610] bdbm: llm_make_req: 7400000, 96 +[333469.529188] bdbm: llm_make_req: 7450000, 96 +[333470.357624] bdbm: nvm: total access = 7200000, total read = 1783819, read hit = 411419, total_write = 5416180, write hit = 5416180, hit = 1060903, evict = 4635624 +[333475.508756] bdbm: llm_make_req: 7500000, 96 +[333480.061490] bdbm: llm_make_req: 7550000, 3 +[333485.611122] bdbm: llm_make_req: 7600000, 96 +[333490.620013] bdbm: llm_make_req: 7650000, 96 +[333494.934812] bdbm: llm_make_req: 7700000, 96 +[333500.552693] bdbm: llm_make_req: 7750000, 96 +[333504.660488] bdbm: llm_make_req: 7800000, 3 +[333505.152702] bdbm: nvm: total access = 7300000, total read = 1822942, read hit = 420903, total_write = 5477057, write hit = 5477057, hit = 1084926, evict = 4681962 +[333510.287525] bdbm: llm_make_req: 7850000, 96 +[333515.043211] bdbm: llm_make_req: 7900000, 3 +[333519.681325] bdbm: llm_make_req: 7950000, 96 +[333524.908386] bdbm: llm_make_req: 8000000, 96 +[333528.967836] bdbm: llm_make_req: 8050000, 96 +[333534.698917] bdbm: llm_make_req: 8100000, 96 +[333538.866668] bdbm: llm_make_req: 8150000, 16 +[333542.088081] bdbm: nvm: total access = 7400000, total read = 1863309, read hit = 430501, total_write = 5536690, write hit = 5536690, hit = 1108315, evict = 4727804 +[333544.302444] bdbm: llm_make_req: 8200000, 96 +[333549.337385] bdbm: llm_make_req: 8250000, 96 +[333553.743567] bdbm: llm_make_req: 8300000, 96 +[333559.029905] bdbm: llm_make_req: 8350000, 96 +[333562.828256] bdbm: llm_make_req: 8400000, 96 +[333568.575536] bdbm: llm_make_req: 8450000, 96 +[333573.018330] bdbm: llm_make_req: 8500000, 3 +[333577.923582] bdbm: llm_make_req: 8550000, 96 +[333579.180976] bdbm: nvm: total access = 7500000, total read = 1903628, read hit = 439914, total_write = 5596371, write hit = 5596371, hit = 1131513, evict = 4773700 +[333582.867559] bdbm: llm_make_req: 8600000, 96 +[333587.118631] bdbm: llm_make_req: 8650000, 96 +[333592.631705] bdbm: llm_make_req: 8700000, 96 +[333596.708215] bdbm: llm_make_req: 8750000, 2 +[333602.334464] bdbm: llm_make_req: 8800000, 96 +[333606.942315] bdbm: llm_make_req: 8850000, 8 +[333611.515383] bdbm: llm_make_req: 8900000, 96 +[333616.203176] bdbm: nvm: total access = 7600000, total read = 1943734, read hit = 448987, total_write = 5656265, write hit = 5656265, hit = 1154831, evict = 4819349 +[333616.673557] bdbm: llm_make_req: 8950000, 96 +[333620.685160] bdbm: llm_make_req: 9000000, 96 +[333626.390207] bdbm: llm_make_req: 9050000, 96 +[333630.594530] bdbm: llm_make_req: 9100000, 2 +[333635.920642] bdbm: llm_make_req: 9150000, 96 +[333640.801759] bdbm: llm_make_req: 9200000, 96 +[333645.074927] bdbm: llm_make_req: 9250000, 96 +[333650.511344] bdbm: llm_make_req: 9300000, 96 +[333654.334147] bdbm: llm_make_req: 9350000, 96 +[333655.158109] bdbm: nvm: total access = 7700000, total read = 1983296, read hit = 458147, total_write = 5716703, write hit = 5716703, hit = 1178108, evict = 4865670 +[333660.410996] bdbm: llm_make_req: 9400000, 96 +[333665.035318] bdbm: llm_make_req: 9450000, 2 +[333669.960141] bdbm: llm_make_req: 9500000, 96 +[333675.544166] bdbm: llm_make_req: 9550000, 96 +[333680.011622] bdbm: llm_make_req: 9600000, 1 +[333686.379376] bdbm: llm_make_req: 9650000, 96 +[333687.817034] bdbm: nvm: total access = 7800000, total read = 2023004, read hit = 467637, total_write = 5776995, write hit = 5776995, hit = 1201904, evict = 4911656 +[333691.852596] bdbm: llm_make_req: 9700000, 4 +[333696.872870] bdbm: llm_make_req: 9750000, 96 +[333703.572111] bdbm: llm_make_req: 9800000, 96 +[333708.692764] bdbm: llm_make_req: 9850000, 8 +[333714.966090] bdbm: llm_make_req: 9900000, 96 +[333716.264397] bdbm: nvm: total access = 7900000, total read = 2063235, read hit = 477344, total_write = 5836764, write hit = 5836764, hit = 1225652, evict = 4957384 +[333721.112147] bdbm: llm_make_req: 9950000, 96 +[333726.528210] bdbm: llm_make_req: 10000000, 3 +[333733.363435] bdbm: llm_make_req: 10050000, 96 +[333739.733151] bdbm: llm_make_req: 10100000, 2 +[333742.580143] bdbm: nvm: total access = 8000000, total read = 2103525, read hit = 487010, total_write = 5896474, write hit = 5896474, hit = 1248944, evict = 5003468 +[333745.469034] bdbm: llm_make_req: 10150000, 2 +[333752.923969] bdbm: llm_make_req: 10200000, 96 +[333759.575140] bdbm: llm_make_req: 10250000, 16 +[333765.679832] bdbm: llm_make_req: 10300000, 1 +[333766.514653] bdbm: nvm: total access = 8100000, total read = 2143458, read hit = 496377, total_write = 5956541, write hit = 5956541, hit = 1272199, evict = 5049647 +[333773.783013] bdbm: llm_make_req: 10350000, 96 +[333781.883952] bdbm: llm_make_req: 10400000, 10 +[333788.409644] bdbm: nvm: total access = 8200000, total read = 2183572, read hit = 505639, total_write = 6016427, write hit = 6016427, hit = 1295373, evict = 5095621 +[333789.492668] bdbm: llm_make_req: 10450000, 2 +[333797.393774] bdbm: llm_make_req: 10500000, 96 +[333806.815650] bdbm: llm_make_req: 10550000, 96 +[333808.620849] bdbm: nvm: total access = 8300000, total read = 2223936, read hit = 515111, total_write = 6076063, write hit = 6076063, hit = 1318801, evict = 5141301 +[333815.253761] bdbm: llm_make_req: 10600000, 8 +[333823.784584] bdbm: llm_make_req: 10650000, 16 +[333828.628088] bdbm: nvm: total access = 8400000, total read = 2263652, read hit = 524583, total_write = 6136347, write hit = 6136347, hit = 1342444, evict = 5187414 +[333832.769569] bdbm: llm_make_req: 10700000, 96 +[333841.990910] bdbm: llm_make_req: 10750000, 3 +[333847.524601] bdbm: nvm: total access = 8500000, total read = 2303534, read hit = 534053, total_write = 6196465, write hit = 6196465, hit = 1366079, evict = 5233367 +[333850.640588] bdbm: llm_make_req: 10800000, 13 +[333859.498436] bdbm: llm_make_req: 10850000, 3 +[333867.138333] bdbm: nvm: total access = 8600000, total read = 2343054, read hit = 543499, total_write = 6256945, write hit = 6256945, hit = 1389955, evict = 5279417 +[333868.805591] bdbm: llm_make_req: 10900000, 96 +[333878.057267] bdbm: llm_make_req: 10950000, 2 +[333886.599664] bdbm: nvm: total access = 8700000, total read = 2383408, read hit = 552911, total_write = 6316591, write hit = 6316591, hit = 1413482, evict = 5324948 +[333886.815428] bdbm: llm_make_req: 11000000, 2 +[333895.529245] bdbm: llm_make_req: 11050000, 2 +[333905.088940] bdbm: llm_make_req: 11100000, 96 +[333906.165360] bdbm: nvm: total access = 8800000, total read = 2423285, read hit = 562523, total_write = 6376714, write hit = 6376714, hit = 1437559, evict = 5370606 +[333914.119212] bdbm: llm_make_req: 11150000, 10 +[333922.882549] bdbm: llm_make_req: 11200000, 3 +[333924.869291] bdbm: nvm: total access = 8900000, total read = 2463973, read hit = 572124, total_write = 6436026, write hit = 6436026, hit = 1461051, evict = 5416027 +[333931.419542] bdbm: llm_make_req: 11250000, 96 +[333941.375914] bdbm: llm_make_req: 11300000, 96 +[333944.472028] bdbm: nvm: total access = 9000000, total read = 2503599, read hit = 581572, total_write = 6496400, write hit = 6496400, hit = 1484995, evict = 5461905 +[333950.094294] bdbm: llm_make_req: 11350000, 6 +[333958.890148] bdbm: llm_make_req: 11400000, 2 +[333964.142376] bdbm: nvm: total access = 9100000, total read = 2544329, read hit = 591010, total_write = 6555670, write hit = 6555670, hit = 1508704, evict = 5506904 +[333967.892920] bdbm: llm_make_req: 11450000, 96 +[333977.291020] bdbm: llm_make_req: 11500000, 2 +[333982.930094] bdbm: nvm: total access = 9200000, total read = 2584505, read hit = 600507, total_write = 6615494, write hit = 6615494, hit = 1532302, evict = 5552627 +[333986.122764] bdbm: llm_make_req: 11550000, 2 +[333994.951695] bdbm: llm_make_req: 11600000, 1 +[334002.549263] bdbm: nvm: total access = 9300000, total read = 2624374, read hit = 609971, total_write = 6675625, write hit = 6675625, hit = 1556087, evict = 5598437 +[334004.184415] bdbm: llm_make_req: 11650000, 96 +[334013.251629] bdbm: llm_make_req: 11700000, 1 +[334021.920755] bdbm: llm_make_req: 11750000, 16 +[334022.023361] bdbm: nvm: total access = 9400000, total read = 2663664, read hit = 619364, total_write = 6736335, write hit = 6736335, hit = 1579826, evict = 5644801 +[334030.645001] bdbm: llm_make_req: 11800000, 2 +[334039.984182] bdbm: llm_make_req: 11850000, 96 +[334041.516320] bdbm: nvm: total access = 9500000, total read = 2703102, read hit = 628770, total_write = 6796897, write hit = 6796897, hit = 1603769, evict = 5690826 +[334048.927984] bdbm: llm_make_req: 11900000, 16 +[334057.499045] bdbm: llm_make_req: 11950000, 3 +[334060.961433] bdbm: nvm: total access = 9600000, total read = 2743075, read hit = 638159, total_write = 6856924, write hit = 6856924, hit = 1627383, evict = 5736628 +[334066.217630] bdbm: llm_make_req: 12000000, 7 +[334075.765549] bdbm: llm_make_req: 12050000, 96 +[334079.785558] bdbm: nvm: total access = 9700000, total read = 2783322, read hit = 647797, total_write = 6916677, write hit = 6916677, hit = 1651023, evict = 5782379 +[334084.679272] bdbm: llm_make_req: 12100000, 8 +[334093.260026] bdbm: llm_make_req: 12150000, 17 +[334099.466517] bdbm: nvm: total access = 9800000, total read = 2823221, read hit = 657014, total_write = 6976778, write hit = 6976778, hit = 1674185, evict = 5828535 +[334101.866633] bdbm: llm_make_req: 12200000, 95 +[334111.490488] bdbm: llm_make_req: 12250000, 4 +[334119.078234] bdbm: nvm: total access = 9900000, total read = 2863781, read hit = 666541, total_write = 7036218, write hit = 7036218, hit = 1697866, evict = 5873821 +[334120.072134] bdbm: llm_make_req: 12300000, 4 +[334128.438104] bdbm: llm_make_req: 12350000, 8 +[334137.341159] bdbm: llm_make_req: 12400000, 96 +[334139.097307] bdbm: nvm: total access = 10000000, total read = 2903576, read hit = 675992, total_write = 7096423, write hit = 7096423, hit = 1721738, evict = 5919605 +[334145.820036] bdbm: llm_make_req: 12450000, 2 +[334153.795226] bdbm: llm_make_req: 12500000, 3 +[334159.328678] bdbm: nvm: total access = 10100000, total read = 2943186, read hit = 685276, total_write = 7156813, write hit = 7156813, hit = 1745284, evict = 5965733 +[334161.836749] bdbm: llm_make_req: 12550000, 96 +[334170.611564] bdbm: llm_make_req: 12600000, 3 +[334178.213336] bdbm: llm_make_req: 12650000, 8 +[334179.601143] bdbm: nvm: total access = 10200000, total read = 2983124, read hit = 694802, total_write = 7216875, write hit = 7216875, hit = 1768660, evict = 6011945 +[334185.396991] bdbm: llm_make_req: 12700000, 96 +[334194.137625] bdbm: llm_make_req: 12750000, 96 +[334201.245586] bdbm: llm_make_req: 12800000, 2 +[334201.398183] bdbm: nvm: total access = 10300000, total read = 3022738, read hit = 704115, total_write = 7277261, write hit = 7277261, hit = 1791785, evict = 6058519 +[334207.894400] bdbm: llm_make_req: 12850000, 96 +[334216.173065] bdbm: llm_make_req: 12900000, 96 +[334223.009543] bdbm: llm_make_req: 12950000, 2 +[334223.674674] bdbm: nvm: total access = 10400000, total read = 3062583, read hit = 713430, total_write = 7337416, write hit = 7337416, hit = 1815534, evict = 6104240 +[334229.423955] bdbm: llm_make_req: 13000000, 96 +[334237.523178] bdbm: llm_make_req: 13050000, 96 +[334244.208162] bdbm: llm_make_req: 13100000, 3 +[334247.008453] bdbm: nvm: total access = 10500000, total read = 3102642, read hit = 722905, total_write = 7397357, write hit = 7397357, hit = 1839006, evict = 6150184 +[334250.702315] bdbm: llm_make_req: 13150000, 96 +[334258.759988] bdbm: llm_make_req: 13200000, 96 +[334265.492386] bdbm: llm_make_req: 13250000, 8 +[334269.318272] bdbm: nvm: total access = 10600000, total read = 3142630, read hit = 732076, total_write = 7457369, write hit = 7457369, hit = 1862484, evict = 6195889 +[334271.953663] bdbm: llm_make_req: 13300000, 96 +[334279.745376] bdbm: llm_make_req: 13350000, 96 +[334286.335035] bdbm: llm_make_req: 13400000, 1 +[334291.842294] bdbm: nvm: total access = 10700000, total read = 3182091, read hit = 741449, total_write = 7517908, write hit = 7517908, hit = 1885979, evict = 6242306 +[334292.792538] bdbm: llm_make_req: 13450000, 96 +[334300.430301] bdbm: llm_make_req: 13500000, 96 +[334306.718738] bdbm: llm_make_req: 13550000, 20 +[334313.325729] bdbm: llm_make_req: 13600000, 96 +[334315.618881] bdbm: nvm: total access = 10800000, total read = 3222176, read hit = 750909, total_write = 7577823, write hit = 7577823, hit = 1909739, evict = 6287921 +[334320.705687] bdbm: llm_make_req: 13650000, 96 +[334326.637757] bdbm: llm_make_req: 13700000, 2 +[334333.605183] bdbm: llm_make_req: 13750000, 95 +[334339.680660] bdbm: nvm: total access = 10900000, total read = 3262198, read hit = 760350, total_write = 7637801, write hit = 7637801, hit = 1933313, evict = 6333766 +[334340.537907] bdbm: llm_make_req: 13800000, 2 +[334346.272823] bdbm: llm_make_req: 13850000, 2 +[334353.342177] bdbm: llm_make_req: 13900000, 95 +[334360.058958] bdbm: llm_make_req: 13950000, 13 +[334363.999230] bdbm: nvm: total access = 11000000, total read = 3301494, read hit = 769868, total_write = 7698505, write hit = 7698505, hit = 1957228, evict = 6380073 +[334365.212800] bdbm: llm_make_req: 14000000, 96 +[334372.679529] bdbm: llm_make_req: 14050000, 96 +[334378.908073] bdbm: llm_make_req: 14100000, 2 +[334384.478748] bdbm: llm_make_req: 14150000, 96 +[334389.908115] bdbm: nvm: total access = 11100000, total read = 3341462, read hit = 779220, total_write = 7758537, write hit = 7758537, hit = 1980341, evict = 6426344 +[334391.781167] bdbm: llm_make_req: 14200000, 96 +[334397.514748] bdbm: llm_make_req: 14250000, 3 +[334403.729776] bdbm: llm_make_req: 14300000, 95 +[334410.596567] bdbm: llm_make_req: 14350000, 96 +[334416.012006] bdbm: llm_make_req: 14400000, 3 +[334416.128926] bdbm: nvm: total access = 11200000, total read = 3381271, read hit = 788813, total_write = 7818728, write hit = 7818728, hit = 2003938, evict = 6472531 +[334422.811189] bdbm: llm_make_req: 14450000, 96 +[334429.106632] bdbm: llm_make_req: 14500000, 3 +[334434.184428] bdbm: llm_make_req: 14550000, 96 +[334441.391609] bdbm: llm_make_req: 14600000, 96 +[334442.843515] bdbm: nvm: total access = 11300000, total read = 3421079, read hit = 797968, total_write = 7878920, write hit = 7878920, hit = 2027226, evict = 6518590 +[334447.070385] bdbm: llm_make_req: 14650000, 2 +[334452.876367] bdbm: llm_make_req: 14700000, 96 +[334459.439651] bdbm: llm_make_req: 14750000, 96 +[334464.525249] bdbm: llm_make_req: 14800000, 3 +[334469.541933] bdbm: nvm: total access = 11400000, total read = 3461532, read hit = 807364, total_write = 7938467, write hit = 7938467, hit = 2050624, evict = 6564135 +[334471.194733] bdbm: llm_make_req: 14850000, 96 +[334476.981659] bdbm: llm_make_req: 14900000, 3 +[334482.165096] bdbm: llm_make_req: 14950000, 96 +[334488.817218] bdbm: llm_make_req: 15000000, 96 +[334494.164760] bdbm: llm_make_req: 15050000, 3 +[334498.040736] bdbm: nvm: total access = 11500000, total read = 3501280, read hit = 816581, total_write = 7998719, write hit = 7998719, hit = 2073693, evict = 6610535 +[334500.383663] bdbm: llm_make_req: 15100000, 96 +[334506.418393] bdbm: llm_make_req: 15150000, 96 +[334511.174291] bdbm: llm_make_req: 15200000, 95 +[334518.059183] bdbm: llm_make_req: 15250000, 96 +[334523.371982] bdbm: llm_make_req: 15300000, 1 +[334526.461132] bdbm: nvm: total access = 11600000, total read = 3541914, read hit = 826224, total_write = 8058085, write hit = 8058085, hit = 2097499, evict = 6655738 +[334529.190103] bdbm: llm_make_req: 15350000, 96 +[334535.324860] bdbm: llm_make_req: 15400000, 96 +[334539.761671] bdbm: llm_make_req: 15450000, 96 +[334546.644816] bdbm: llm_make_req: 15500000, 96 +[334552.022173] bdbm: llm_make_req: 15550000, 2 +[334554.805614] bdbm: nvm: total access = 11700000, total read = 3581996, read hit = 835697, total_write = 8118003, write hit = 8118003, hit = 2121322, evict = 6701306 +[334557.387679] bdbm: llm_make_req: 15600000, 95 +[334563.682650] bdbm: llm_make_req: 15650000, 96 +[334568.579832] bdbm: llm_make_req: 15700000, 3 +[334574.963736] bdbm: llm_make_req: 15750000, 96 +[334580.608819] bdbm: llm_make_req: 15800000, 2 +[334583.279518] bdbm: nvm: total access = 11800000, total read = 3621525, read hit = 845240, total_write = 8178474, write hit = 8178474, hit = 2145442, evict = 6747200 +[334585.553499] bdbm: llm_make_req: 15850000, 96 +[334592.160119] bdbm: llm_make_req: 15900000, 96 +[334597.240305] bdbm: llm_make_req: 15950000, 14 +[334603.226977] bdbm: llm_make_req: 16000000, 96 +[334609.314572] bdbm: llm_make_req: 16050000, 96 +[334611.793377] bdbm: nvm: total access = 11900000, total read = 3661582, read hit = 854883, total_write = 8238417, write hit = 8238417, hit = 2169476, evict = 6792752 +[334613.990057] bdbm: llm_make_req: 16100000, 96 +[334620.667843] bdbm: llm_make_req: 16150000, 96 +[334625.972302] bdbm: llm_make_req: 16200000, 3 +[334631.568710] bdbm: llm_make_req: 16250000, 96 +[334637.816100] bdbm: llm_make_req: 16300000, 96 +[334640.383887] bdbm: nvm: total access = 12000000, total read = 3701932, read hit = 864411, total_write = 8298067, write hit = 8298067, hit = 2193147, evict = 6838259 +[334642.262961] bdbm: llm_make_req: 16350000, 96 +[334649.100851] bdbm: llm_make_req: 16400000, 96 +[334654.612413] bdbm: llm_make_req: 16450000, 2 +[334659.781495] bdbm: llm_make_req: 16500000, 96 +[334666.229381] bdbm: llm_make_req: 16550000, 96 +[334668.833388] bdbm: nvm: total access = 12100000, total read = 3741219, read hit = 873551, total_write = 8358780, write hit = 8358780, hit = 2216319, evict = 6884940 +[334671.394726] bdbm: llm_make_req: 16600000, 3 +[334677.644467] bdbm: llm_make_req: 16650000, 96 +[334683.612785] bdbm: llm_make_req: 16700000, 96 +[334688.299968] bdbm: llm_make_req: 16750000, 96 +[334695.366660] bdbm: llm_make_req: 16800000, 96 +[334697.264959] bdbm: nvm: total access = 12200000, total read = 3781459, read hit = 882753, total_write = 8418540, write hit = 8418540, hit = 2239138, evict = 6931083 +[334700.957720] bdbm: llm_make_req: 16850000, 1 +[334706.612560] bdbm: llm_make_req: 16900000, 96 +[334713.241617] bdbm: llm_make_req: 16950000, 96 +[334718.534601] bdbm: llm_make_req: 17000000, 3 +[334723.877909] bdbm: nvm: total access = 12300000, total read = 3821532, read hit = 892090, total_write = 8478467, write hit = 8478467, hit = 2262592, evict = 6976893 +[334725.173460] bdbm: llm_make_req: 17050000, 96 +[334731.378106] bdbm: llm_make_req: 17100000, 1 +[334736.538576] bdbm: llm_make_req: 17150000, 96 +[334743.672267] bdbm: llm_make_req: 17200000, 96 +[334749.501384] bdbm: llm_make_req: 17250000, 2 +[334750.265962] bdbm: nvm: total access = 12400000, total read = 3861777, read hit = 901484, total_write = 8538222, write hit = 8538222, hit = 2286251, evict = 7022383 +[334755.309427] bdbm: llm_make_req: 17300000, 96 +[334762.410262] bdbm: llm_make_req: 17350000, 96 +[334768.256122] bdbm: llm_make_req: 17400000, 3 +[334774.667208] bdbm: llm_make_req: 17450000, 96 +[334776.118471] bdbm: nvm: total access = 12500000, total read = 3901355, read hit = 910822, total_write = 8598644, write hit = 8598644, hit = 2309812, evict = 7068582 +[334781.964578] bdbm: llm_make_req: 17500000, 96 +[334787.856119] bdbm: llm_make_req: 17550000, 4 +[334794.818064] bdbm: llm_make_req: 17600000, 96 +[334800.243271] bdbm: nvm: total access = 12600000, total read = 3941112, read hit = 919909, total_write = 8658887, write hit = 8658887, hit = 2332935, evict = 7114789 +[334802.119587] bdbm: llm_make_req: 17650000, 96 +[334808.299300] bdbm: llm_make_req: 17700000, 2 +[334815.445962] bdbm: llm_make_req: 17750000, 95 +[334822.616294] bdbm: nvm: total access = 12700000, total read = 3981567, read hit = 929339, total_write = 8718432, write hit = 8718432, hit = 2356252, evict = 7160447 +[334823.151591] bdbm: llm_make_req: 17800000, 23 +[334829.768764] bdbm: llm_make_req: 17850000, 12 +[334837.118667] bdbm: llm_make_req: 17900000, 96 +[334844.571881] bdbm: nvm: total access = 12800000, total read = 4021413, read hit = 938481, total_write = 8778586, write hit = 8778586, hit = 2379202, evict = 7206793 +[334845.322777] bdbm: llm_make_req: 17950000, 96 +[334852.660471] bdbm: llm_make_req: 18000000, 2 +[334860.093294] bdbm: llm_make_req: 18050000, 96 +[334866.242982] bdbm: nvm: total access = 12900000, total read = 4062215, read hit = 947897, total_write = 8837784, write hit = 8837784, hit = 2402800, evict = 7251809 +[334869.004979] bdbm: llm_make_req: 18100000, 96 +[334876.680547] bdbm: llm_make_req: 18150000, 3 +[334884.290744] bdbm: llm_make_req: 18200000, 3 +[334886.768458] bdbm: nvm: total access = 13000000, total read = 4101770, read hit = 957242, total_write = 8898229, write hit = 8898229, hit = 2426469, evict = 7297930 +[334892.909308] bdbm: llm_make_req: 18250000, 96 +[334901.164053] bdbm: llm_make_req: 18300000, 1 +[334908.111209] bdbm: nvm: total access = 13100000, total read = 4141297, read hit = 966672, total_write = 8958702, write hit = 8958702, hit = 2450194, evict = 7344108 +[334908.783419] bdbm: llm_make_req: 18350000, 4 +[334916.717404] bdbm: llm_make_req: 18400000, 96 +[334925.748033] bdbm: llm_make_req: 18450000, 3 +[334928.610797] bdbm: nvm: total access = 13200000, total read = 4181483, read hit = 976071, total_write = 9018516, write hit = 9018516, hit = 2473727, evict = 7389788 +[334933.351325] bdbm: llm_make_req: 18500000, 3 +[334940.739695] bdbm: llm_make_req: 18550000, 96 +[334948.847661] bdbm: nvm: total access = 13300000, total read = 4221525, read hit = 985491, total_write = 9078474, write hit = 9078474, hit = 2497226, evict = 7435667 +[334949.894753] bdbm: llm_make_req: 18600000, 96 +[334957.807043] bdbm: llm_make_req: 18650000, 1 +[334965.413930] bdbm: llm_make_req: 18700000, 1 +[334970.009466] bdbm: nvm: total access = 13400000, total read = 4261048, read hit = 995026, total_write = 9138951, write hit = 9138951, hit = 2521300, evict = 7481605 +[334973.792477] bdbm: llm_make_req: 18750000, 95 +[334982.246213] bdbm: llm_make_req: 18800000, 2 +[334989.749901] bdbm: llm_make_req: 18850000, 8 +[334990.170595] bdbm: nvm: total access = 13500000, total read = 4301132, read hit = 1004515, total_write = 9198867, write hit = 9198867, hit = 2544740, evict = 7527570 +[334997.548176] bdbm: llm_make_req: 18900000, 96 +[358055.381916] bdbm: ----------------------------------------------- +[358055.381918] bdbm: < PERFORMANCE SUMMARY > +[358055.381918] bdbm: [0] Execution Time (us): 25977.836678 +[358055.381919] bdbm: +[358055.381919] bdbm: [1] Total I/Os +[358055.381920] bdbm: # of page reads: 7320189 +[358055.381920] bdbm: # of page writes: 4002239 +[358055.381921] bdbm: # of block erase: 58624 +[358055.381921] bdbm: +[358055.381922] bdbm: [2] Normal I/Os +[358055.381922] bdbm: # of page reads: 3318408 +[358055.381923] bdbm: # of page writes: 0 +[358055.381923] bdbm: # of page rmw reads: 0 +[358055.381924] bdbm: # of page rmw writes: 0 +[358055.381924] bdbm: +[358055.381924] bdbm: [3] GC I/Os +[358055.381925] bdbm: # of GC invocation: 0 +[358055.381925] bdbm: # of page reads: 4001781 +[358055.381926] bdbm: # of page writes: 4002239 +[358055.381926] bdbm: # of block erase: 58624 +[358055.381927] bdbm: +[358055.381927] bdbm: [4] Meta I/Os +[358055.381928] bdbm: # of meta page reads: 0 +[358055.381928] bdbm: # of meta page writes: 0 +[358055.381929] bdbm: +[358055.381929] bdbm: [5] Elapsed Time +[358055.381930] bdbm: page read (us): 227 (S:124 + Q:6 + D:97) +[358055.381930] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[358055.381931] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[358055.381931] bdbm: +[358055.381932] bdbm: [6] Utilization (R) +[358055.381933] bdbm: 57199 57429 57052 57777 57317 57543 56895 57197 +[358055.381934] bdbm: 57074 57208 57118 57190 57445 57143 56972 56879 +[358055.381936] bdbm: 57247 57072 56937 57405 56881 56773 57233 57537 +[358055.381937] bdbm: 57364 57058 57138 57014 57129 57194 57155 57678 +[358055.381938] bdbm: 57029 57117 57352 57448 57390 56807 57407 56983 +[358055.381939] bdbm: 57203 57418 57025 57354 57307 57577 56971 56714 +[358055.381940] bdbm: 56995 57260 56941 57410 57410 57125 56832 57444 +[358055.381941] bdbm: 56896 57183 57244 57175 57442 57160 57189 57380 +[358055.381942] bdbm: 57123 57025 57256 57370 57109 56721 56940 56892 +[358055.381943] bdbm: 57183 57494 57207 56755 57084 57313 57115 57314 +[358055.381945] bdbm: 57177 57506 56846 57049 57121 57495 56964 56931 +[358055.381946] bdbm: 56988 57131 57218 56980 57353 57391 57136 57188 +[358055.381947] bdbm: 57489 57413 57192 56917 57296 57106 57050 57191 +[358055.381948] bdbm: 57013 57398 57179 57025 57245 57272 57283 57233 +[358055.381949] bdbm: 57180 57053 56766 57159 57156 57370 57155 57195 +[358055.381950] bdbm: 57282 57399 57183 57442 57118 57484 57653 57476 +[358055.381950] bdbm: +[358055.381951] bdbm: [7] Utilization (W) +[358055.381952] bdbm: 31276 31326 31356 31376 31391 31408 31410 31423 +[358055.381953] bdbm: 31429 31435 31441 31445 31446 31441 31446 31446 +[358055.381954] bdbm: 31444 31439 31436 31435 31432 31430 31427 31425 +[358055.381956] bdbm: 31424 31422 31419 31413 31410 31408 31403 31399 +[358055.381957] bdbm: 31395 31392 31388 31381 31379 31374 31373 31371 +[358055.381958] bdbm: 31368 31365 31362 31360 31355 31350 31345 31343 +[358055.381959] bdbm: 31337 31332 31327 31324 31320 31319 31315 31309 +[358055.381960] bdbm: 31306 31304 31297 31290 31288 31285 31282 31279 +[358055.381961] bdbm: 31274 31271 31268 31265 31260 31257 31256 31247 +[358055.381962] bdbm: 31244 31240 31236 31232 31226 31224 31222 31214 +[358055.381963] bdbm: 31211 31209 31208 31201 31198 31194 31191 31185 +[358055.381964] bdbm: 31183 31178 31177 31173 31171 31170 31163 31159 +[358055.381966] bdbm: 31155 31150 31148 31142 31140 31136 31135 31132 +[358055.381967] bdbm: 31130 31125 31122 31118 31118 31114 31108 31105 +[358055.381968] bdbm: 31101 31099 31092 31089 31085 31083 31079 31075 +[358055.381969] bdbm: 31070 31067 31065 31060 31058 31054 31053 31048 +[358055.381969] bdbm: [8] NVM I/Os +[358055.381970] bdbm: #_of_nvm_total_accesses: 13571621 +[358055.381970] bdbm: #_of_nvm_total_write_requests: 9242084 +[358055.381971] bdbm: #_of_nvm_total_read_requests: 4329537 +[358055.381971] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9242084 +[358055.381972] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1011101 +[358055.381972] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 2561484 +[358055.381973] bdbm: #_of_nvm_evict_from_nvm: 7560629 +[358055.381973] bdbm: #_of_nvm_write_amplification: 7560629 : 11562868 +[358055.381974] bdbm: +[358055.381974] bdbm: ----------------------------------------------- +[358055.381975] bdbm: ----------------------------------------------- +[358055.524571] bdbm: done +[358055.524573] bdbm: [dm_ramdrive_close] closed! +[358055.914150] bdbm: [bdbm_drv_main] bdbm_drv is closed +[358055.914153] bdbm: [bdbm_drv_main] bdbm_drv is removed +[358055.944776] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[358055.961349] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[358055.965870] bdbm: ===================================================================== +[358055.965872] bdbm: DEVICE PARAMETERS +[358055.965872] bdbm: ===================================================================== +[358055.965873] bdbm: # of channels = 8 +[358055.965874] bdbm: # of chips per channel = 16 +[358055.965874] bdbm: # of blocks per chip = 256 +[358055.965875] bdbm: # of pages per block = 128 +[358055.965876] bdbm: # of subpages per page = 1 +[358055.965876] bdbm: page main size = 4096 bytes +[358055.965877] bdbm: page oob size = 64 bytes +[358055.965878] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[358055.965878] bdbm: +[358055.965879] bdbm: ===================================================================== +[358055.965880] bdbm: RAM DISK INFO +[358055.965880] bdbm: ===================================================================== +[358055.965881] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[358057.495981] bdbm: ramssd addr = ffffc90050001000 +[358057.495983] bdbm: +[358057.495984] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[358059.025295] bdbm: *** building ptr_ramssd_data done +[358059.025510] bdbm: [dm_ramdrive_probe] probe done! +[358059.025512] bdbm: [dm_ramdrive_open] open done! +[358059.075795] bdbm: nvm cache addr = ffffc90870003000 +[358059.076798] bdbm: ========================================================== +[358059.076800] bdbm: NVM CONFIGURATION +[358059.076800] bdbm: ========================================================== +[358059.076801] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[358059.232755] bdbm: TRIM is disabled +[358059.232919] bdbm: ===================================================================== +[358059.232920] bdbm: DEVICE PARAMETERS +[358059.232921] bdbm: ===================================================================== +[358059.232922] bdbm: # of channels = 8 +[358059.232922] bdbm: # of chips per channel = 16 +[358059.232923] bdbm: # of blocks per chip = 256 +[358059.232923] bdbm: # of pages per block = 128 +[358059.232924] bdbm: # of subpages per page = 1 +[358059.232924] bdbm: page main size = 4096 bytes +[358059.232925] bdbm: page oob size = 64 bytes +[358059.232925] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[358059.232926] bdbm: +[358059.232926] bdbm: ===================================================================== +[358059.232927] bdbm: FTL CONFIGURATION +[358059.232927] bdbm: ===================================================================== +[358059.232928] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[358059.232929] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[358059.232929] bdbm: wl policy = 1 (1: none, 2: swap) +[358059.232929] bdbm: trim mode = 2 (1: enable, 2: disable) +[358059.232930] bdbm: kernel sector = 512 bytes +[358059.232930] bdbm: +[358059.232932] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[358059.250280] bdbm: llm_make_req: 0, 1 +[358065.758155] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[358065.758157] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[358123.394093] bdbm: nvm: total access = 100000, total read = 34, read hit = 6, total_write = 99965, write hit = 99965, hit = 33780, evict = 0 diff --git a/result/fio.toff_n500m.rslt b/result/fio.toff_n500m.rslt new file mode 100644 index 0000000..a1d9d8d --- /dev/null +++ b/result/fio.toff_n500m.rslt @@ -0,0 +1,45 @@ +JESD219: (g=0): rw=randrw, bs=512-64K/512-64K/512-64K, ioengine=libaio, iodepth=256 +... +fio-2.14-20-gd6192-dirty +Starting 4 processes +JESD219: Laying out IO file(s) (1 file(s) / 10240MB) + +JESD219: (groupid=0, jobs=4): err= 0: pid=7353: Thu Nov 3 15:28:09 2016 + read : io=16387MB, bw=7070.2KB/s, iops=925, runt=2373389msec + slat (usec): min=3, max=2220.6K, avg=1621.33, stdev=23480.48 + clat (usec): min=97, max=3491.1K, avg=438788.83, stdev=428037.68 + lat (usec): min=467, max=3492.3K, avg=440410.73, stdev=428690.27 + clat percentiles (msec): + | 1.00th=[ 145], 5.00th=[ 159], 10.00th=[ 172], 20.00th=[ 192], + | 30.00th=[ 217], 40.00th=[ 251], 50.00th=[ 293], 60.00th=[ 347], + | 70.00th=[ 412], 80.00th=[ 510], 90.00th=[ 783], 95.00th=[ 1647], + | 99.00th=[ 2114], 99.50th=[ 2245], 99.90th=[ 2507], 99.95th=[ 2606], + | 99.99th=[ 2835] + write: io=24573MB, bw=10602KB/s, iops=1388, runt=2373389msec + slat (usec): min=3, max=2249.1K, avg=1777.30, stdev=27915.84 + clat (usec): min=3, max=3492.5K, avg=437512.52, stdev=427250.18 + lat (usec): min=846, max=3492.9K, avg=439290.40, stdev=428152.56 + clat percentiles (msec): + | 1.00th=[ 145], 5.00th=[ 159], 10.00th=[ 169], 20.00th=[ 190], + | 30.00th=[ 217], 40.00th=[ 251], 50.00th=[ 293], 60.00th=[ 343], + | 70.00th=[ 412], 80.00th=[ 506], 90.00th=[ 783], 95.00th=[ 1647], + | 99.00th=[ 2114], 99.50th=[ 2245], 99.90th=[ 2507], 99.95th=[ 2606], + | 99.99th=[ 2835] + lat (usec) : 4=0.01%, 10=0.01%, 100=0.01%, 250=0.01%, 500=0.01% + lat (usec) : 1000=0.01% + lat (msec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01% + lat (msec) : 100=0.03%, 250=39.66%, 500=39.66%, 750=10.20%, 1000=1.81% + lat (msec) : 2000=6.92%, >=2000=1.71% + cpu : usr=0.16%, sys=42.42%, ctx=4637143, majf=0, minf=42 + IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% + submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% + complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1% + issued : total=r=2196515/w=3296637/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 + latency : target=0, window=0, percentile=100.00%, depth=256 + +Run status group 0 (all jobs): + READ: io=16387MB, aggrb=7070KB/s, minb=7070KB/s, maxb=7070KB/s, mint=2373389msec, maxt=2373389msec + WRITE: io=24573MB, aggrb=10602KB/s, minb=10602KB/s, maxb=10602KB/s, mint=2373389msec, maxt=2373389msec + +Disk stats (read/write): + robusta: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00% diff --git a/result/fio.ton_n1g.dmesg b/result/fio.ton_n1g.dmesg new file mode 100644 index 0000000..047f369 --- /dev/null +++ b/result/fio.ton_n1g.dmesg @@ -0,0 +1,1271 @@ +[250040.050587] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[250162.943822] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[250162.970031] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[250162.975804] bdbm: ===================================================================== +[250162.975806] bdbm: DEVICE PARAMETERS +[250162.975807] bdbm: ===================================================================== +[250162.975808] bdbm: # of channels = 8 +[250162.975809] bdbm: # of chips per channel = 16 +[250162.975810] bdbm: # of blocks per chip = 256 +[250162.975810] bdbm: # of pages per block = 128 +[250162.975811] bdbm: # of subpages per page = 1 +[250162.975812] bdbm: page main size = 4096 bytes +[250162.975813] bdbm: page oob size = 64 bytes +[250162.975814] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[250162.975815] bdbm: +[250162.975816] bdbm: ===================================================================== +[250162.975817] bdbm: RAM DISK INFO +[250162.975818] bdbm: ===================================================================== +[250162.975819] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[250164.546034] bdbm: ramssd addr = ffffc90050001000 +[250164.546036] bdbm: +[250164.546037] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[250166.093908] bdbm: *** building ptr_ramssd_data done +[250166.094055] bdbm: [dm_ramdrive_probe] probe done! +[250166.094056] bdbm: [dm_ramdrive_open] open done! +[250166.221207] bdbm: nvm cache addr = ffffc90870003000 +[250166.224810] bdbm: ========================================================== +[250166.224813] bdbm: NVM CONFIGURATION +[250166.224813] bdbm: ========================================================== +[250166.224814] bdbm: total size = 1073741824, nr_nvm_pages = 262144, nvm_page_size = 4096 +[250166.379469] bdbm: TRIM is disabled +[250166.379653] bdbm: ===================================================================== +[250166.379654] bdbm: DEVICE PARAMETERS +[250166.379654] bdbm: ===================================================================== +[250166.379655] bdbm: # of channels = 8 +[250166.379656] bdbm: # of chips per channel = 16 +[250166.379656] bdbm: # of blocks per chip = 256 +[250166.379657] bdbm: # of pages per block = 128 +[250166.379657] bdbm: # of subpages per page = 1 +[250166.379658] bdbm: page main size = 4096 bytes +[250166.379658] bdbm: page oob size = 64 bytes +[250166.379659] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[250166.379659] bdbm: +[250166.379660] bdbm: ===================================================================== +[250166.379660] bdbm: FTL CONFIGURATION +[250166.379661] bdbm: ===================================================================== +[250166.379661] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[250166.379662] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[250166.379663] bdbm: wl policy = 1 (1: none, 2: swap) +[250166.379663] bdbm: trim mode = 2 (1: enable, 2: disable) +[250166.379664] bdbm: kernel sector = 512 bytes +[250166.379664] bdbm: +[250166.379665] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[250166.397653] bdbm: llm_make_req: 0, 1 +[250182.253944] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[250182.253946] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[250300.204276] bdbm: nvm: total access = 100000, total read = 42, read hit = 14, total_write = 99957, write hit = 99957, hit = 33880, evict = 0 +[250345.475603] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 33941, evict = 0 +[250391.792336] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 33993, evict = 3834 +[250412.537128] bdbm: llm_make_req: 50000, 2 +[250436.059243] bdbm: llm_make_req: 100000, 2 +[250437.785729] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 33998, evict = 103829 +[250458.451574] bdbm: llm_make_req: 150000, 2 +[250480.866962] bdbm: llm_make_req: 200000, 2 +[250482.636888] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 34002, evict = 203825 +[250506.559436] bdbm: llm_make_req: 250000, 1 +[250534.470156] bdbm: llm_make_req: 300000, 2 +[250536.179056] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 34003, evict = 303824 +[250556.753326] bdbm: llm_make_req: 350000, 2 +[250579.843673] bdbm: llm_make_req: 400000, 2 +[250581.563857] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 34003, evict = 403824 +[250602.161282] bdbm: llm_make_req: 450000, 2 +[250624.453157] bdbm: llm_make_req: 500000, 2 +[250626.176183] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 34003, evict = 503824 +[250648.984772] bdbm: llm_make_req: 550000, 2 +[250677.252332] bdbm: llm_make_req: 600000, 1 +[250679.471740] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 34003, evict = 603824 +[250702.968582] bdbm: llm_make_req: 650000, 2 +[250725.276328] bdbm: llm_make_req: 700000, 2 +[250726.991142] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 34003, evict = 703824 +[250747.601496] bdbm: llm_make_req: 750000, 2 +[250769.740017] bdbm: llm_make_req: 800000, 2 +[250771.436639] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 34003, evict = 803824 +[250791.824528] bdbm: llm_make_req: 850000, 2 +[250815.483764] bdbm: llm_make_req: 900000, 1 +[250817.713436] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 34003, evict = 903824 +[250844.275351] bdbm: llm_make_req: 950000, 2 +[250866.604238] bdbm: llm_make_req: 1000000, 2 +[250868.304124] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 34003, evict = 1003824 +[250888.779520] bdbm: llm_make_req: 1050000, 2 +[250911.070088] bdbm: llm_make_req: 1100000, 2 +[250912.786509] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 34003, evict = 1103824 +[250935.799150] bdbm: llm_make_req: 1150000, 2 +[250958.177857] bdbm: llm_make_req: 1200000, 2 +[250959.903239] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 34003, evict = 1203824 +[250980.969397] bdbm: llm_make_req: 1250000, 2 +[251005.275206] bdbm: llm_make_req: 1300000, 2 +[251006.991955] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 34003, evict = 1303824 +[251029.085962] bdbm: llm_make_req: 1350000, 2 +[251052.901013] bdbm: llm_make_req: 1400000, 2 +[251054.878664] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 34003, evict = 1403824 +[251077.102003] bdbm: llm_make_req: 1450000, 2 +[251101.601803] bdbm: llm_make_req: 1500000, 2 +[251103.628622] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 34003, evict = 1503824 +[251126.704180] bdbm: llm_make_req: 1550000, 2 +[251150.537979] bdbm: llm_make_req: 1600000, 1 +[251152.352022] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 34003, evict = 1603824 +[251174.208485] bdbm: llm_make_req: 1650000, 1 +[251198.930623] bdbm: llm_make_req: 1700000, 2 +[251200.712942] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 34003, evict = 1703824 +[251222.481704] bdbm: llm_make_req: 1750000, 1 +[251246.263540] bdbm: llm_make_req: 1800000, 2 +[251248.249030] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 34003, evict = 1803824 +[251270.542601] bdbm: llm_make_req: 1850000, 1 +[251295.258651] bdbm: llm_make_req: 1900000, 2 +[251297.100388] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 34003, evict = 1903824 +[251320.389873] bdbm: llm_make_req: 1950000, 1 +[251344.895283] bdbm: llm_make_req: 2000000, 1 +[251346.889888] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 34003, evict = 2003824 +[251370.413871] bdbm: llm_make_req: 2050000, 1 +[251395.958165] bdbm: llm_make_req: 2100000, 2 +[251397.934635] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 34003, evict = 2103824 +[251419.978830] bdbm: llm_make_req: 2150000, 2 +[251444.012874] bdbm: llm_make_req: 2200000, 2 +[251445.955613] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 34003, evict = 2203824 +[251468.155591] bdbm: llm_make_req: 2250000, 1 +[251493.300149] bdbm: llm_make_req: 2300000, 1 +[251495.111344] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 34003, evict = 2303824 +[251517.555939] bdbm: llm_make_req: 2350000, 2 +[251541.496248] bdbm: llm_make_req: 2400000, 2 +[251543.192737] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 34003, evict = 2403824 +[251565.560210] bdbm: llm_make_req: 2450000, 2 +[251590.518628] bdbm: llm_make_req: 2500000, 1 +[251591.019725] bdbm: nvm: total access = 2800000, total read = 20505, read hit = 1214, total_write = 2779494, write hit = 2779494, hit = 36842, evict = 2481722 +[251615.635780] bdbm: llm_make_req: 2550000, 1 +[251635.178590] bdbm: nvm: total access = 2900000, total read = 60948, read hit = 6544, total_write = 2839051, write hit = 2839051, hit = 50205, evict = 2533246 +[251641.667953] bdbm: llm_make_req: 2600000, 2 +[251669.449085] bdbm: llm_make_req: 2650000, 2 +[251678.169017] bdbm: nvm: total access = 3000000, total read = 100976, read hit = 15576, total_write = 2899023, write hit = 2899023, hit = 72891, evict = 2579564 +[251698.906649] bdbm: llm_make_req: 2700000, 1 +[251720.329396] bdbm: nvm: total access = 3100000, total read = 141018, read hit = 27497, total_write = 2958981, write hit = 2958981, hit = 103015, evict = 2621319 +[251729.965047] bdbm: llm_make_req: 2750000, 1 +[251761.144414] bdbm: nvm: total access = 3200000, total read = 180966, read hit = 41891, total_write = 3019033, write hit = 3019033, hit = 138909, evict = 2659871 +[251761.842635] bdbm: llm_make_req: 2800000, 14 +[251794.684088] bdbm: llm_make_req: 2850000, 6 +[251800.044874] bdbm: nvm: total access = 3300000, total read = 221806, read hit = 58429, total_write = 3078193, write hit = 3078193, hit = 180056, evict = 2694422 +[251828.880021] bdbm: llm_make_req: 2900000, 16 +[251837.792708] bdbm: nvm: total access = 3400000, total read = 261622, read hit = 76401, total_write = 3138377, write hit = 3138377, hit = 224596, evict = 2728038 +[251862.298596] bdbm: llm_make_req: 2950000, 1 +[251875.804857] bdbm: nvm: total access = 3500000, total read = 301015, read hit = 92959, total_write = 3198984, write hit = 3198984, hit = 267400, evict = 2762399 +[251895.212859] bdbm: llm_make_req: 3000000, 1 +[251914.339450] bdbm: nvm: total access = 3600000, total read = 341315, read hit = 109580, total_write = 3258684, write hit = 3258684, hit = 308159, evict = 2797961 +[251927.462954] bdbm: llm_make_req: 3050000, 3 +[251953.268778] bdbm: nvm: total access = 3700000, total read = 381505, read hit = 125470, total_write = 3318494, write hit = 3318494, hit = 347609, evict = 2834211 +[251959.385973] bdbm: llm_make_req: 3100000, 2 +[251990.858479] bdbm: llm_make_req: 3150000, 4 +[251991.860598] bdbm: nvm: total access = 3800000, total read = 421450, read hit = 141028, total_write = 3378549, write hit = 3378549, hit = 386237, evict = 2871196 +[252022.361470] bdbm: llm_make_req: 3200000, 2 +[252030.667013] bdbm: nvm: total access = 3900000, total read = 461276, read hit = 156352, total_write = 3438723, write hit = 3438723, hit = 424822, evict = 2908109 +[252053.870682] bdbm: llm_make_req: 3250000, 1 +[252069.545428] bdbm: nvm: total access = 4000000, total read = 501721, read hit = 171735, total_write = 3498278, write hit = 3498278, hit = 462932, evict = 2944937 +[252085.574414] bdbm: llm_make_req: 3300000, 1 +[252108.297039] bdbm: nvm: total access = 4100000, total read = 541725, read hit = 187722, total_write = 3558274, write hit = 3558274, hit = 502639, evict = 2981213 +[252117.558643] bdbm: llm_make_req: 3350000, 1 +[252146.441722] bdbm: nvm: total access = 4200000, total read = 582097, read hit = 203887, total_write = 3617902, write hit = 3617902, hit = 542563, evict = 3017082 +[252149.450142] bdbm: llm_make_req: 3400000, 1 +[252181.249100] bdbm: llm_make_req: 3450000, 13 +[252184.434662] bdbm: nvm: total access = 4300000, total read = 622361, read hit = 220282, total_write = 3677638, write hit = 3677638, hit = 582750, evict = 3053026 +[252212.881063] bdbm: llm_make_req: 3500000, 1 +[252222.904129] bdbm: nvm: total access = 4400000, total read = 661439, read hit = 235666, total_write = 3738560, write hit = 3738560, hit = 622333, evict = 3089749 +[252244.870231] bdbm: llm_make_req: 3550000, 5 +[252260.856028] bdbm: nvm: total access = 4500000, total read = 701667, read hit = 251855, total_write = 3798332, write hit = 3798332, hit = 662397, evict = 3125646 +[252276.481538] bdbm: llm_make_req: 3600000, 5 +[252298.972657] bdbm: nvm: total access = 4600000, total read = 742128, read hit = 268155, total_write = 3857871, write hit = 3857871, hit = 702312, evict = 3161570 +[252308.296689] bdbm: llm_make_req: 3650000, 5 +[252337.671658] bdbm: nvm: total access = 4700000, total read = 781651, read hit = 283725, total_write = 3918348, write hit = 3918348, hit = 741833, evict = 3198096 +[252340.105635] bdbm: llm_make_req: 3700000, 1 +[252371.366666] bdbm: llm_make_req: 3750000, 1 +[252375.825091] bdbm: nvm: total access = 4800000, total read = 821952, read hit = 299342, total_write = 3978047, write hit = 3978047, hit = 780730, evict = 3234515 +[252403.205662] bdbm: llm_make_req: 3800000, 21 +[252414.291448] bdbm: nvm: total access = 4900000, total read = 861874, read hit = 315238, total_write = 4038125, write hit = 4038125, hit = 820117, evict = 3271102 +[252434.543085] bdbm: llm_make_req: 3850000, 7 +[252452.378803] bdbm: nvm: total access = 5000000, total read = 901986, read hit = 330985, total_write = 4098013, write hit = 4098013, hit = 859479, evict = 3307375 +[252466.137472] bdbm: llm_make_req: 3900000, 1 +[252490.748414] bdbm: nvm: total access = 5100000, total read = 942035, read hit = 346734, total_write = 4157964, write hit = 4157964, hit = 898735, evict = 3343819 +[252497.586878] bdbm: llm_make_req: 3950000, 2 +[252529.287763] bdbm: nvm: total access = 5200000, total read = 982016, read hit = 362508, total_write = 4217983, write hit = 4217983, hit = 938167, evict = 3380180 +[252529.474693] bdbm: llm_make_req: 4000000, 4 +[252561.389192] bdbm: llm_make_req: 4050000, 2 +[252567.572759] bdbm: nvm: total access = 5300000, total read = 1022436, read hit = 378308, total_write = 4277563, write hit = 4277563, hit = 978195, evict = 3415532 +[252593.090999] bdbm: llm_make_req: 4100000, 23 +[252605.892509] bdbm: nvm: total access = 5400000, total read = 1062879, read hit = 394211, total_write = 4337120, write hit = 4337120, hit = 1017571, evict = 3451616 +[252624.810186] bdbm: llm_make_req: 4150000, 19 +[252644.219452] bdbm: nvm: total access = 5500000, total read = 1102697, read hit = 409974, total_write = 4397302, write hit = 4397302, hit = 1056941, evict = 3488191 +[252656.405836] bdbm: llm_make_req: 4200000, 1 +[252683.052246] bdbm: nvm: total access = 5600000, total read = 1142602, read hit = 425622, total_write = 4457397, write hit = 4457397, hit = 1096010, evict = 3524865 +[252688.177392] bdbm: llm_make_req: 4250000, 2 +[252719.530971] bdbm: llm_make_req: 4300000, 2 +[252721.218275] bdbm: nvm: total access = 5700000, total read = 1182536, read hit = 441147, total_write = 4517463, write hit = 4517463, hit = 1135055, evict = 3561411 +[252751.322201] bdbm: llm_make_req: 4350000, 2 +[252759.793963] bdbm: nvm: total access = 5800000, total read = 1223021, read hit = 457022, total_write = 4576978, write hit = 4576978, hit = 1174434, evict = 3597422 +[252782.899960] bdbm: llm_make_req: 4400000, 14 +[252798.556580] bdbm: nvm: total access = 5900000, total read = 1263610, read hit = 473111, total_write = 4636389, write hit = 4636389, hit = 1213557, evict = 3633799 +[252814.888402] bdbm: llm_make_req: 4450000, 1 +[252836.858673] bdbm: nvm: total access = 6000000, total read = 1303765, read hit = 489097, total_write = 4696234, write hit = 4696234, hit = 1253068, evict = 3670119 +[252846.392242] bdbm: llm_make_req: 4500000, 1 +[252875.379648] bdbm: nvm: total access = 6100000, total read = 1343560, read hit = 504642, total_write = 4756439, write hit = 4756439, hit = 1291924, evict = 3707013 +[252877.910405] bdbm: llm_make_req: 4550000, 2 +[252909.817175] bdbm: llm_make_req: 4600000, 1 +[252913.991045] bdbm: nvm: total access = 6200000, total read = 1383653, read hit = 520303, total_write = 4816346, write hit = 4816346, hit = 1331253, evict = 3743252 +[252941.494456] bdbm: llm_make_req: 4650000, 9 +[252952.422209] bdbm: nvm: total access = 6300000, total read = 1423572, read hit = 536267, total_write = 4876427, write hit = 4876427, hit = 1370863, evict = 3779687 +[252973.489342] bdbm: llm_make_req: 4700000, 1 +[252990.901079] bdbm: nvm: total access = 6400000, total read = 1463663, read hit = 551900, total_write = 4936336, write hit = 4936336, hit = 1410370, evict = 3815722 +[253005.236226] bdbm: llm_make_req: 4750000, 2 +[253029.127658] bdbm: nvm: total access = 6500000, total read = 1504018, read hit = 568106, total_write = 4995981, write hit = 4995981, hit = 1449923, evict = 3852020 +[253036.785371] bdbm: llm_make_req: 4800000, 1 +[253067.657615] bdbm: nvm: total access = 6600000, total read = 1543440, read hit = 583860, total_write = 5056559, write hit = 5056559, hit = 1489242, evict = 3889033 +[253068.530507] bdbm: llm_make_req: 4850000, 1 +[253100.308836] bdbm: llm_make_req: 4900000, 2 +[253106.150998] bdbm: nvm: total access = 6700000, total read = 1583786, read hit = 599638, total_write = 5116213, write hit = 5116213, hit = 1528491, evict = 3925216 +[253132.018247] bdbm: llm_make_req: 4950000, 2 +[253144.693147] bdbm: nvm: total access = 6800000, total read = 1623504, read hit = 615160, total_write = 5176495, write hit = 5176495, hit = 1567878, evict = 3961633 +[253163.597604] bdbm: llm_make_req: 5000000, 4 +[253183.215167] bdbm: nvm: total access = 6900000, total read = 1663607, read hit = 630770, total_write = 5236392, write hit = 5236392, hit = 1607112, evict = 3997906 +[253195.435159] bdbm: llm_make_req: 5050000, 1 +[253221.863311] bdbm: nvm: total access = 7000000, total read = 1703745, read hit = 646338, total_write = 5296254, write hit = 5296254, hit = 1646166, evict = 4034282 +[253227.131372] bdbm: llm_make_req: 5100000, 10 +[253253.604050] bdbm: llm_make_req: 5150000, 96 +[253263.208481] bdbm: nvm: total access = 7100000, total read = 1743609, read hit = 661972, total_write = 5356390, write hit = 5356390, hit = 1685599, evict = 4070619 +[253267.481674] bdbm: llm_make_req: 5200000, 1 +[253288.499487] bdbm: llm_make_req: 5250000, 2 +[253304.531040] bdbm: nvm: total access = 7200000, total read = 1782942, read hit = 677441, total_write = 5417057, write hit = 5417057, hit = 1724893, evict = 4107461 +[253308.035852] bdbm: llm_make_req: 5300000, 1 +[253331.690473] bdbm: llm_make_req: 5350000, 96 +[253346.671841] bdbm: nvm: total access = 7300000, total read = 1822321, read hit = 692937, total_write = 5477678, write hit = 5477678, hit = 1764491, evict = 4143980 +[253354.560094] bdbm: llm_make_req: 5400000, 2 +[253374.555256] bdbm: llm_make_req: 5450000, 2 +[253387.962301] bdbm: nvm: total access = 7400000, total read = 1862173, read hit = 708998, total_write = 5537826, write hit = 5537826, hit = 1804503, evict = 4180177 +[253395.314488] bdbm: llm_make_req: 5500000, 96 +[253417.388343] bdbm: llm_make_req: 5550000, 11 +[253430.581842] bdbm: nvm: total access = 7500000, total read = 1901942, read hit = 725138, total_write = 5598057, write hit = 5598057, hit = 1844502, evict = 4216549 +[253435.092835] bdbm: llm_make_req: 5600000, 1 +[253454.747109] bdbm: llm_make_req: 5650000, 1 +[253472.069630] bdbm: nvm: total access = 7600000, total read = 1941993, read hit = 740717, total_write = 5658006, write hit = 5658006, hit = 1883725, evict = 4252854 +[253478.006806] bdbm: llm_make_req: 5700000, 96 +[253495.849173] bdbm: llm_make_req: 5750000, 1 +[253513.216092] bdbm: llm_make_req: 5800000, 11 +[253514.753856] bdbm: nvm: total access = 7700000, total read = 1981408, read hit = 756023, total_write = 5718591, write hit = 5718591, hit = 1922551, evict = 4289919 +[253534.955015] bdbm: llm_make_req: 5850000, 96 +[253553.755813] bdbm: llm_make_req: 5900000, 4 +[253556.576501] bdbm: nvm: total access = 7800000, total read = 2021266, read hit = 771579, total_write = 5778733, write hit = 5778733, hit = 1961749, evict = 4326419 +[253570.554583] bdbm: llm_make_req: 5950000, 18 +[253590.913626] bdbm: llm_make_req: 6000000, 96 +[253599.539683] bdbm: nvm: total access = 7900000, total read = 2061599, read hit = 787387, total_write = 5838400, write hit = 5838400, hit = 2000956, evict = 4362687 +[253607.987107] bdbm: llm_make_req: 6050000, 1 +[253622.097086] bdbm: llm_make_req: 6100000, 96 +[253642.449384] bdbm: llm_make_req: 6150000, 96 +[253644.051838] bdbm: nvm: total access = 8000000, total read = 2101742, read hit = 803172, total_write = 5898257, write hit = 5898257, hit = 2040385, evict = 4398900 +[253660.541826] bdbm: llm_make_req: 6200000, 1 +[253674.862923] bdbm: llm_make_req: 6250000, 1 +[253687.325184] bdbm: nvm: total access = 8100000, total read = 2141642, read hit = 818963, total_write = 5958357, write hit = 5958357, hit = 2079744, evict = 4435432 +[253694.936578] bdbm: llm_make_req: 6300000, 96 +[253710.584132] bdbm: llm_make_req: 6350000, 25 +[253724.831060] bdbm: llm_make_req: 6400000, 96 +[253730.980517] bdbm: nvm: total access = 8200000, total read = 2181715, read hit = 834543, total_write = 6018284, write hit = 6018284, hit = 2118773, evict = 4471910 +[253743.351589] bdbm: llm_make_req: 6450000, 96 +[253758.952050] bdbm: llm_make_req: 6500000, 16 +[253772.778058] bdbm: llm_make_req: 6550000, 96 +[253775.957190] bdbm: nvm: total access = 8300000, total read = 2221599, read hit = 850453, total_write = 6078400, write hit = 6078400, hit = 2158145, evict = 4508564 +[253789.939507] bdbm: llm_make_req: 6600000, 96 +[253801.462876] bdbm: llm_make_req: 6650000, 4 +[253816.153835] bdbm: llm_make_req: 6700000, 96 +[253821.085302] bdbm: nvm: total access = 8400000, total read = 2260798, read hit = 866129, total_write = 6139201, write hit = 6139201, hit = 2197261, evict = 4545925 +[253832.435880] bdbm: llm_make_req: 6750000, 96 +[253843.264854] bdbm: llm_make_req: 6800000, 4 +[253858.845372] bdbm: llm_make_req: 6850000, 96 +[253867.872765] bdbm: nvm: total access = 8500000, total read = 2301485, read hit = 882112, total_write = 6198514, write hit = 6198514, hit = 2236716, evict = 4581766 +[253873.318515] bdbm: llm_make_req: 6900000, 2 +[253884.489955] bdbm: llm_make_req: 6950000, 96 +[253900.259740] bdbm: llm_make_req: 7000000, 96 +[253910.690081] bdbm: llm_make_req: 7050000, 1 +[253913.426603] bdbm: nvm: total access = 8600000, total read = 2341875, read hit = 897763, total_write = 6258124, write hit = 6258124, hit = 2276090, evict = 4617653 +[253924.631323] bdbm: llm_make_req: 7100000, 96 +[253938.731166] bdbm: llm_make_req: 7150000, 1 +[253947.661005] bdbm: llm_make_req: 7200000, 96 +[253961.293130] bdbm: nvm: total access = 8700000, total read = 2381257, read hit = 912997, total_write = 6318742, write hit = 6318742, hit = 2315477, evict = 4654118 +[253962.250823] bdbm: llm_make_req: 7250000, 96 +[253973.840811] bdbm: llm_make_req: 7300000, 1 +[253985.147060] bdbm: llm_make_req: 7350000, 95 +[253998.853671] bdbm: llm_make_req: 7400000, 96 +[254006.957974] bdbm: llm_make_req: 7450000, 96 +[254010.542364] bdbm: nvm: total access = 8800000, total read = 2421616, read hit = 929009, total_write = 6378383, write hit = 6378383, hit = 2355044, evict = 4690204 +[254020.887170] bdbm: llm_make_req: 7500000, 96 +[254031.487964] bdbm: llm_make_req: 7550000, 12 +[254042.145558] bdbm: llm_make_req: 7600000, 96 +[254054.787358] bdbm: llm_make_req: 7650000, 96 +[254060.137384] bdbm: nvm: total access = 8900000, total read = 2461438, read hit = 944633, total_write = 6438561, write hit = 6438561, hit = 2394536, evict = 4726514 +[254062.866358] bdbm: llm_make_req: 7700000, 96 +[254076.039139] bdbm: llm_make_req: 7750000, 96 +[254085.333846] bdbm: llm_make_req: 7800000, 2 +[254096.062015] bdbm: llm_make_req: 7850000, 96 +[254107.774835] bdbm: llm_make_req: 7900000, 96 +[254111.390230] bdbm: nvm: total access = 9000000, total read = 2501200, read hit = 960459, total_write = 6498799, write hit = 6498799, hit = 2434095, evict = 4763019 +[254115.128537] bdbm: llm_make_req: 7950000, 95 +[254127.813746] bdbm: llm_make_req: 8000000, 96 +[254136.898881] bdbm: llm_make_req: 8050000, 1 +[254147.659074] bdbm: llm_make_req: 8100000, 96 +[254159.335744] bdbm: llm_make_req: 8150000, 96 +[254163.375607] bdbm: nvm: total access = 9100000, total read = 2540992, read hit = 975921, total_write = 6559007, write hit = 6559007, hit = 2472976, evict = 4799808 +[254167.165842] bdbm: llm_make_req: 8200000, 96 +[254179.700946] bdbm: llm_make_req: 8250000, 96 +[254188.292794] bdbm: llm_make_req: 8300000, 2 +[254199.300352] bdbm: llm_make_req: 8350000, 95 +[254210.958168] bdbm: llm_make_req: 8400000, 96 +[254215.057561] bdbm: nvm: total access = 9200000, total read = 2580801, read hit = 991674, total_write = 6619198, write hit = 6619198, hit = 2512464, evict = 4836264 +[254218.843979] bdbm: llm_make_req: 8450000, 96 +[254230.980261] bdbm: llm_make_req: 8500000, 96 +[254239.311683] bdbm: llm_make_req: 8550000, 1 +[254251.191558] bdbm: llm_make_req: 8600000, 96 +[254262.472714] bdbm: llm_make_req: 8650000, 1 +[254266.607306] bdbm: nvm: total access = 9300000, total read = 2620405, read hit = 1007241, total_write = 6679594, write hit = 6679594, hit = 2551904, evict = 4872787 +[254270.381464] bdbm: llm_make_req: 8700000, 96 +[254282.997777] bdbm: llm_make_req: 8750000, 96 +[254291.266007] bdbm: llm_make_req: 8800000, 2 +[254303.649254] bdbm: llm_make_req: 8850000, 96 +[254315.001417] bdbm: llm_make_req: 8900000, 1 +[254318.313937] bdbm: nvm: total access = 9400000, total read = 2660413, read hit = 1023261, total_write = 6739586, write hit = 6739586, hit = 2591536, evict = 4909167 +[254323.448184] bdbm: llm_make_req: 8950000, 95 +[254335.894699] bdbm: llm_make_req: 9000000, 96 +[254343.737272] bdbm: llm_make_req: 9050000, 2 +[254356.563892] bdbm: llm_make_req: 9100000, 96 +[254367.372996] bdbm: llm_make_req: 9150000, 15 +[254368.630697] bdbm: nvm: total access = 9500000, total read = 2700744, read hit = 1038957, total_write = 6799255, write hit = 6799255, hit = 2630944, evict = 4945124 +[254376.662721] bdbm: llm_make_req: 9200000, 96 +[254388.993760] bdbm: llm_make_req: 9250000, 96 +[254396.591271] bdbm: llm_make_req: 9300000, 96 +[254409.760530] bdbm: llm_make_req: 9350000, 96 +[254419.981411] bdbm: nvm: total access = 9600000, total read = 2741056, read hit = 1055295, total_write = 6858943, write hit = 6858943, hit = 2670804, evict = 4981290 +[254420.285009] bdbm: llm_make_req: 9400000, 1 +[254429.980307] bdbm: llm_make_req: 9450000, 96 +[254442.507395] bdbm: llm_make_req: 9500000, 96 +[254450.125065] bdbm: llm_make_req: 9550000, 96 +[254463.253512] bdbm: llm_make_req: 9600000, 96 +[254471.794184] bdbm: nvm: total access = 9700000, total read = 2781771, read hit = 1071260, total_write = 6918228, write hit = 6918228, hit = 2709927, evict = 5017417 +[254473.057644] bdbm: llm_make_req: 9650000, 2 +[254483.362642] bdbm: llm_make_req: 9700000, 96 +[254495.711606] bdbm: llm_make_req: 9750000, 96 +[254503.182431] bdbm: llm_make_req: 9800000, 96 +[254516.302749] bdbm: llm_make_req: 9850000, 96 +[254521.721717] bdbm: nvm: total access = 9800000, total read = 2821887, read hit = 1086894, total_write = 6978112, write hit = 6978112, hit = 2748976, evict = 5053886 +[254525.824810] bdbm: llm_make_req: 9900000, 29 +[254536.677586] bdbm: llm_make_req: 9950000, 96 +[254549.300077] bdbm: llm_make_req: 10000000, 96 +[254557.342746] bdbm: llm_make_req: 10050000, 96 +[254570.753142] bdbm: nvm: total access = 9900000, total read = 2861872, read hit = 1102741, total_write = 7038127, write hit = 7038127, hit = 2788222, evict = 5090502 +[254573.696156] bdbm: llm_make_req: 10100000, 96 +[254593.914042] bdbm: llm_make_req: 10150000, 96 +[254609.958941] bdbm: llm_make_req: 10200000, 1 +[254613.653615] bdbm: nvm: total access = 10000000, total read = 2901620, read hit = 1118330, total_write = 7098379, write hit = 7098379, hit = 2827405, evict = 5127160 +[254629.852767] bdbm: llm_make_req: 10250000, 2 +[254654.738458] bdbm: llm_make_req: 10300000, 96 +[254655.303098] bdbm: nvm: total access = 10100000, total read = 2942017, read hit = 1134458, total_write = 7157982, write hit = 7157982, hit = 2866707, evict = 5163589 +[254678.608790] bdbm: llm_make_req: 10350000, 2 +[254695.604572] bdbm: nvm: total access = 10200000, total read = 2981590, read hit = 1149706, total_write = 7218409, write hit = 7218409, hit = 2905471, evict = 5200500 +[254702.196883] bdbm: llm_make_req: 10400000, 6 +[254725.861019] bdbm: llm_make_req: 10450000, 16 +[254736.575534] bdbm: nvm: total access = 10300000, total read = 3021441, read hit = 1165352, total_write = 7278558, write hit = 7278558, hit = 2944456, evict = 5237310 +[254751.874110] bdbm: llm_make_req: 10500000, 96 +[254775.750516] bdbm: llm_make_req: 10550000, 2 +[254777.391619] bdbm: nvm: total access = 10400000, total read = 3061327, read hit = 1180938, total_write = 7338672, write hit = 7338672, hit = 2983796, evict = 5273670 +[254797.902843] bdbm: llm_make_req: 10600000, 3 +[254818.226083] bdbm: nvm: total access = 10500000, total read = 3101871, read hit = 1196949, total_write = 7398128, write hit = 7398128, hit = 3023321, evict = 5309612 +[254819.774334] bdbm: llm_make_req: 10650000, 96 +[254845.766737] bdbm: llm_make_req: 10700000, 1 +[254860.429166] bdbm: nvm: total access = 10600000, total read = 3142114, read hit = 1212523, total_write = 7457885, write hit = 7457885, hit = 3061841, evict = 5346423 +[254867.534127] bdbm: llm_make_req: 10750000, 1 +[254889.878583] bdbm: llm_make_req: 10800000, 2 +[254901.182998] bdbm: nvm: total access = 10700000, total read = 3181923, read hit = 1228154, total_write = 7518076, write hit = 7518076, hit = 3101089, evict = 5382997 +[254914.101692] bdbm: llm_make_req: 10850000, 96 +[254939.334352] bdbm: llm_make_req: 10900000, 1 +[254941.920819] bdbm: nvm: total access = 10800000, total read = 3221689, read hit = 1243856, total_write = 7578310, write hit = 7578310, hit = 3140420, evict = 5419602 +[254961.858289] bdbm: llm_make_req: 10950000, 1 +[254982.829589] bdbm: nvm: total access = 10900000, total read = 3261293, read hit = 1259740, total_write = 7638706, write hit = 7638706, hit = 3179854, evict = 5456448 +[254984.765699] bdbm: llm_make_req: 11000000, 1 +[255009.422581] bdbm: llm_make_req: 11050000, 96 +[255023.669997] bdbm: nvm: total access = 11000000, total read = 3300066, read hit = 1274980, total_write = 7699933, write hit = 7699933, hit = 3219709, evict = 5493060 +[255034.645123] bdbm: llm_make_req: 11100000, 1 +[255057.087645] bdbm: llm_make_req: 11150000, 18 +[255064.146942] bdbm: nvm: total access = 11100000, total read = 3339079, read hit = 1290447, total_write = 7760920, write hit = 7760920, hit = 3259515, evict = 5529708 +[255079.141011] bdbm: llm_make_req: 11200000, 5 +[255103.727114] bdbm: llm_make_req: 11250000, 96 +[255105.019420] bdbm: nvm: total access = 11200000, total read = 3379058, read hit = 1306072, total_write = 7820941, write hit = 7820941, hit = 3299024, evict = 5565845 +[255128.018757] bdbm: llm_make_req: 11300000, 17 +[255145.930761] bdbm: nvm: total access = 11300000, total read = 3418642, read hit = 1321543, total_write = 7881357, write hit = 7881357, hit = 3338350, evict = 5602406 +[255149.897141] bdbm: llm_make_req: 11350000, 1 +[255172.349779] bdbm: llm_make_req: 11400000, 2 +[255186.545293] bdbm: nvm: total access = 11400000, total read = 3458805, read hit = 1337422, total_write = 7941194, write hit = 7941194, hit = 3377738, evict = 5638734 +[255198.304585] bdbm: llm_make_req: 11450000, 96 +[255221.553232] bdbm: llm_make_req: 11500000, 1 +[255227.401288] bdbm: nvm: total access = 11500000, total read = 3499503, read hit = 1353334, total_write = 8000496, write hit = 8000496, hit = 3417083, evict = 5674603 +[255243.629599] bdbm: llm_make_req: 11550000, 2 +[255266.164140] bdbm: llm_make_req: 11600000, 96 +[255268.339971] bdbm: nvm: total access = 11600000, total read = 3539152, read hit = 1368863, total_write = 8060847, write hit = 8060847, hit = 3455984, evict = 5711582 +[255292.228672] bdbm: llm_make_req: 11650000, 2 +[255309.418461] bdbm: nvm: total access = 11700000, total read = 3579237, read hit = 1384441, total_write = 8120762, write hit = 8120762, hit = 3494512, evict = 5748547 +[255313.853550] bdbm: llm_make_req: 11700000, 1 +[255335.369402] bdbm: llm_make_req: 11750000, 2 +[255350.273526] bdbm: nvm: total access = 11800000, total read = 3619439, read hit = 1399812, total_write = 8180560, write hit = 8180560, hit = 3533337, evict = 5784891 +[255359.636628] bdbm: llm_make_req: 11800000, 95 +[255383.986883] bdbm: llm_make_req: 11850000, 2 +[255391.167527] bdbm: nvm: total access = 11900000, total read = 3659703, read hit = 1415657, total_write = 8240296, write hit = 8240296, hit = 3572523, evict = 5821286 +[255405.706312] bdbm: llm_make_req: 11900000, 11 +[255427.527913] bdbm: llm_make_req: 11950000, 2 +[255431.859447] bdbm: nvm: total access = 12000000, total read = 3699747, read hit = 1431770, total_write = 8300252, write hit = 8300252, hit = 3611999, evict = 5857879 +[255452.756297] bdbm: llm_make_req: 12000000, 96 +[255472.752060] bdbm: nvm: total access = 12100000, total read = 3739588, read hit = 1447415, total_write = 8360411, write hit = 8360411, hit = 3651367, evict = 5894315 +[255476.270956] bdbm: llm_make_req: 12050000, 2 +[255497.439456] bdbm: llm_make_req: 12100000, 2 +[255513.851386] bdbm: nvm: total access = 12200000, total read = 3779884, read hit = 1463160, total_write = 8420115, write hit = 8420115, hit = 3690488, evict = 5930643 +[255518.722195] bdbm: llm_make_req: 12150000, 96 +[255541.701972] bdbm: llm_make_req: 12200000, 5 +[255556.358719] bdbm: nvm: total access = 12300000, total read = 3819943, read hit = 1478760, total_write = 8480056, write hit = 8480056, hit = 3729559, evict = 5967113 +[255559.686262] bdbm: llm_make_req: 12250000, 4 +[255578.974443] bdbm: llm_make_req: 12300000, 96 +[255597.625100] bdbm: nvm: total access = 12400000, total read = 3859402, read hit = 1494357, total_write = 8540597, write hit = 8540597, hit = 3768897, evict = 6003913 +[255602.238587] bdbm: llm_make_req: 12350000, 96 +[255622.135426] bdbm: llm_make_req: 12400000, 3 +[255640.247493] bdbm: nvm: total access = 12500000, total read = 3900012, read hit = 1510349, total_write = 8599987, write hit = 8599987, hit = 3807973, evict = 6040219 +[255640.677585] bdbm: llm_make_req: 12450000, 3 +[255663.569386] bdbm: llm_make_req: 12500000, 96 +[255681.637044] bdbm: nvm: total access = 12600000, total read = 3939805, read hit = 1526079, total_write = 8660194, write hit = 8660194, hit = 3847367, evict = 6076762 +[255684.292214] bdbm: llm_make_req: 12550000, 2 +[255702.359803] bdbm: llm_make_req: 12600000, 31 +[255723.020643] bdbm: llm_make_req: 12650000, 96 +[255724.078582] bdbm: nvm: total access = 12700000, total read = 3979968, read hit = 1541331, total_write = 8720031, write hit = 8720031, hit = 3886054, evict = 6113164 +[255744.342962] bdbm: llm_make_req: 12700000, 1 +[255762.854316] bdbm: llm_make_req: 12750000, 1 +[255765.497943] bdbm: nvm: total access = 12800000, total read = 4020055, read hit = 1556643, total_write = 8779944, write hit = 8779944, hit = 3924838, evict = 6149605 +[255782.446278] bdbm: llm_make_req: 12800000, 96 +[255805.932779] bdbm: llm_make_req: 12850000, 1 +[255808.023734] bdbm: nvm: total access = 12900000, total read = 4060103, read hit = 1572204, total_write = 8839896, write hit = 8839896, hit = 3963946, evict = 6186010 +[255823.697280] bdbm: llm_make_req: 12900000, 1 +[255842.196201] bdbm: llm_make_req: 12950000, 96 +[255849.385547] bdbm: nvm: total access = 13000000, total read = 4100143, read hit = 1587651, total_write = 8899856, write hit = 8899856, hit = 4002936, evict = 6222427 +[255864.626244] bdbm: llm_make_req: 13000000, 96 +[255883.839700] bdbm: llm_make_req: 13050000, 1 +[255892.013412] bdbm: nvm: total access = 13100000, total read = 4139480, read hit = 1602751, total_write = 8960519, write hit = 8960519, hit = 4041723, evict = 6259403 +[255900.735410] bdbm: llm_make_req: 13100000, 1 +[255921.868534] bdbm: llm_make_req: 13150000, 96 +[255935.007610] bdbm: nvm: total access = 13200000, total read = 4179192, read hit = 1618287, total_write = 9020807, write hit = 9020807, hit = 4081002, evict = 6295948 +[255940.351014] bdbm: llm_make_req: 13200000, 1 +[255955.376194] bdbm: llm_make_req: 13250000, 1 +[255975.752254] bdbm: llm_make_req: 13300000, 96 +[255978.084610] bdbm: nvm: total access = 13300000, total read = 4219021, read hit = 1634113, total_write = 9080978, write hit = 9080978, hit = 4120635, evict = 6332312 +[255993.534327] bdbm: llm_make_req: 13350000, 1 +[256008.724174] bdbm: llm_make_req: 13400000, 2 +[256021.098831] bdbm: nvm: total access = 13400000, total read = 4258920, read hit = 1649928, total_write = 9141079, write hit = 9141079, hit = 4160092, evict = 6368771 +[256028.573332] bdbm: llm_make_req: 13450000, 96 +[256046.769894] bdbm: llm_make_req: 13500000, 10 +[256061.060864] bdbm: llm_make_req: 13550000, 4 +[256064.149811] bdbm: nvm: total access = 13500000, total read = 4299202, read hit = 1665798, total_write = 9200797, write hit = 9200797, hit = 4199393, evict = 6405058 +[256080.812256] bdbm: llm_make_req: 13600000, 96 +[270427.270101] bdbm: ----------------------------------------------- +[270427.270102] bdbm: < PERFORMANCE SUMMARY > +[270427.270103] bdbm: [0] Execution Time (us): 20259.690859 +[270427.270104] bdbm: +[270427.270105] bdbm: [1] Total I/Os +[270427.270106] bdbm: # of page reads: 4914639 +[270427.270106] bdbm: # of page writes: 2263687 +[270427.270107] bdbm: # of block erase: 36224 +[270427.270107] bdbm: +[270427.270108] bdbm: [2] Normal I/Os +[270427.270108] bdbm: # of page reads: 2651235 +[270427.270109] bdbm: # of page writes: 0 +[270427.270109] bdbm: # of page rmw reads: 0 +[270427.270110] bdbm: # of page rmw writes: 0 +[270427.270111] bdbm: +[270427.270111] bdbm: [3] GC I/Os +[270427.270112] bdbm: # of GC invocation: 0 +[270427.270113] bdbm: # of page reads: 2263404 +[270427.270113] bdbm: # of page writes: 2263687 +[270427.270114] bdbm: # of block erase: 36224 +[270427.270114] bdbm: +[270427.270115] bdbm: [4] Meta I/Os +[270427.270115] bdbm: # of meta page reads: 0 +[270427.270116] bdbm: # of meta page writes: 0 +[270427.270117] bdbm: +[270427.270117] bdbm: [5] Elapsed Time +[270427.270118] bdbm: page read (us): 515 (S:403 + Q:10 + D:102) +[270427.270119] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[270427.270119] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[270427.270120] bdbm: +[270427.270120] bdbm: [6] Utilization (R) +[270427.270123] bdbm: 38399 38327 38401 38696 38708 38543 38327 38515 +[270427.270124] bdbm: 38281 38510 38162 38567 38445 38239 38625 38352 +[270427.270126] bdbm: 38281 38165 38324 38253 37974 38003 38138 38422 +[270427.270127] bdbm: 37998 38362 38152 38023 38148 38294 38128 38313 +[270427.270129] bdbm: 38475 38458 38604 38434 38580 38472 38424 38016 +[270427.270130] bdbm: 38642 38232 38578 38397 37951 38051 38511 38043 +[270427.270131] bdbm: 38005 38121 38352 37969 38281 38422 38577 38725 +[270427.270132] bdbm: 38733 38701 38233 38802 38511 38260 38173 38528 +[270427.270135] bdbm: 38100 38395 38338 38540 38658 38223 38787 38479 +[270427.270136] bdbm: 38381 38387 38298 38375 38069 38215 38476 38504 +[270427.270137] bdbm: 38847 38344 38339 37810 38225 38378 38573 38809 +[270427.270138] bdbm: 38189 38432 38061 37915 38596 38408 38738 38843 +[270427.270140] bdbm: 38456 38488 38181 38517 38392 38443 38688 38368 +[270427.270141] bdbm: 38573 38831 38766 38748 38689 38570 38349 38290 +[270427.270143] bdbm: 38121 38313 38521 38570 38697 38789 38678 38453 +[270427.270144] bdbm: 38400 38350 38313 38363 38101 38513 38551 38489 +[270427.270144] bdbm: +[270427.270145] bdbm: [7] Utilization (W) +[270427.270147] bdbm: 17691 17731 17755 17772 17780 17786 17792 17798 +[270427.270148] bdbm: 17796 17800 17801 17803 17803 17802 17800 17799 +[270427.270149] bdbm: 17799 17796 17794 17791 17790 17785 17783 17781 +[270427.270151] bdbm: 17779 17779 17776 17772 17771 17770 17769 17768 +[270427.270153] bdbm: 17767 17766 17764 17763 17761 17757 17754 17751 +[270427.270154] bdbm: 17747 17744 17743 17742 17739 17736 17735 17732 +[270427.270155] bdbm: 17726 17721 17719 17718 17715 17713 17709 17705 +[270427.270156] bdbm: 17703 17699 17698 17698 17695 17694 17690 17688 +[270427.270158] bdbm: 17686 17684 17683 17682 17681 17678 17675 17672 +[270427.270160] bdbm: 17668 17665 17664 17660 17655 17652 17649 17645 +[270427.270161] bdbm: 17642 17642 17642 17639 17637 17637 17633 17630 +[270427.270162] bdbm: 17629 17624 17622 17621 17621 17615 17614 17612 +[270427.270164] bdbm: 17610 17610 17607 17605 17604 17603 17602 17599 +[270427.270165] bdbm: 17599 17598 17595 17590 17590 17588 17586 17585 +[270427.270166] bdbm: 17583 17580 17577 17575 17571 17571 17569 17567 +[270427.270168] bdbm: 17565 17565 17562 17560 17555 17552 17551 17550 +[270427.270168] bdbm: [8] NVM I/Os +[270427.270170] bdbm: #_of_nvm_total_accesses: 13573748 +[270427.270170] bdbm: #_of_nvm_total_write_requests: 9244769 +[270427.270171] bdbm: #_of_nvm_total_read_requests: 4328979 +[270427.270171] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9244769 +[270427.270172] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1677716 +[270427.270172] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 4228630 +[270427.270173] bdbm: #_of_nvm_evict_from_nvm: 6431711 +[270427.270173] bdbm: #_of_nvm_write_amplification: 6431711 : 8695398 +[270427.270174] bdbm: +[270427.270174] bdbm: ----------------------------------------------- +[270427.270176] bdbm: ----------------------------------------------- +[270427.442544] bdbm: done +[270427.442547] bdbm: [dm_ramdrive_close] closed! +[270427.831286] bdbm: [bdbm_drv_main] bdbm_drv is closed +[270427.831289] bdbm: [bdbm_drv_main] bdbm_drv is removed +[270427.851434] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[270427.868561] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[270427.872251] bdbm: ===================================================================== +[270427.872252] bdbm: DEVICE PARAMETERS +[270427.872253] bdbm: ===================================================================== +[270427.872253] bdbm: # of channels = 8 +[270427.872254] bdbm: # of chips per channel = 16 +[270427.872254] bdbm: # of blocks per chip = 256 +[270427.872255] bdbm: # of pages per block = 128 +[270427.872255] bdbm: # of subpages per page = 1 +[270427.872256] bdbm: page main size = 4096 bytes +[270427.872256] bdbm: page oob size = 64 bytes +[270427.872257] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[270427.872258] bdbm: +[270427.872258] bdbm: ===================================================================== +[270427.872259] bdbm: RAM DISK INFO +[270427.872259] bdbm: ===================================================================== +[270427.872260] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[270429.434027] bdbm: ramssd addr = ffffc90050001000 +[270429.434029] bdbm: +[270429.434030] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[270430.958710] bdbm: *** building ptr_ramssd_data done +[270430.958899] bdbm: [dm_ramdrive_probe] probe done! +[270430.958900] bdbm: [dm_ramdrive_open] open done! +[270431.083067] bdbm: nvm cache addr = ffffc90870003000 +[270431.086041] bdbm: ========================================================== +[270431.086042] bdbm: NVM CONFIGURATION +[270431.086043] bdbm: ========================================================== +[270431.086044] bdbm: total size = 1073741824, nr_nvm_pages = 262144, nvm_page_size = 4096 +[270431.276371] bdbm: TRIM is disabled +[270431.276493] bdbm: ===================================================================== +[270431.276493] bdbm: DEVICE PARAMETERS +[270431.276494] bdbm: ===================================================================== +[270431.276494] bdbm: # of channels = 8 +[270431.276495] bdbm: # of chips per channel = 16 +[270431.276495] bdbm: # of blocks per chip = 256 +[270431.276496] bdbm: # of pages per block = 128 +[270431.276497] bdbm: # of subpages per page = 1 +[270431.276498] bdbm: page main size = 4096 bytes +[270431.276499] bdbm: page oob size = 64 bytes +[270431.276499] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[270431.276500] bdbm: +[270431.276500] bdbm: ===================================================================== +[270431.276501] bdbm: FTL CONFIGURATION +[270431.276501] bdbm: ===================================================================== +[270431.276503] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[270431.276504] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[270431.276504] bdbm: wl policy = 1 (1: none, 2: swap) +[270431.276505] bdbm: trim mode = 2 (1: enable, 2: disable) +[270431.276505] bdbm: kernel sector = 512 bytes +[270431.276505] bdbm: +[270431.276506] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[270431.296550] bdbm: llm_make_req: 0, 1 +[270447.320937] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[270447.320939] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[270624.899688] bdbm: nvm: total access = 100000, total read = 34, read hit = 6, total_write = 99965, write hit = 99965, hit = 33833, evict = 0 +[271324.734911] bdbm: ----------------------------------------------- +[271324.734912] bdbm: < PERFORMANCE SUMMARY > +[271324.734914] bdbm: [0] Execution Time (us): 893.391958 +[271324.734914] bdbm: +[271324.734915] bdbm: [1] Total I/Os +[271324.734915] bdbm: # of page reads: 0 +[271324.734916] bdbm: # of page writes: 0 +[271324.734916] bdbm: # of block erase: 0 +[271324.734917] bdbm: +[271324.734917] bdbm: [2] Normal I/Os +[271324.734918] bdbm: # of page reads: 0 +[271324.734919] bdbm: # of page writes: 0 +[271324.734919] bdbm: # of page rmw reads: 0 +[271324.734920] bdbm: # of page rmw writes: 0 +[271324.734920] bdbm: +[271324.734920] bdbm: [3] GC I/Os +[271324.734921] bdbm: # of GC invocation: 0 +[271324.734921] bdbm: # of page reads: 0 +[271324.734922] bdbm: # of page writes: 0 +[271324.734922] bdbm: # of block erase: 0 +[271324.734923] bdbm: +[271324.734924] bdbm: [4] Meta I/Os +[271324.734924] bdbm: # of meta page reads: 0 +[271324.734924] bdbm: # of meta page writes: 0 +[271324.734925] bdbm: +[271324.734925] bdbm: [5] Elapsed Time +[271324.734926] bdbm: page read (us): 0 (S:0 + Q:0 + D:0) +[271324.734927] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[271324.734927] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[271324.734928] bdbm: +[271324.734928] bdbm: [6] Utilization (R) +[271324.734930] bdbm: 0 0 0 0 0 0 0 0 +[271324.734931] bdbm: 0 0 0 0 0 0 0 0 +[271324.734933] bdbm: 0 0 0 0 0 0 0 0 +[271324.734934] bdbm: 0 0 0 0 0 0 0 0 +[271324.734935] bdbm: 0 0 0 0 0 0 0 0 +[271324.734936] bdbm: 0 0 0 0 0 0 0 0 +[271324.734938] bdbm: 0 0 0 0 0 0 0 0 +[271324.734939] bdbm: 0 0 0 0 0 0 0 0 +[271324.734940] bdbm: 0 0 0 0 0 0 0 0 +[271324.734941] bdbm: 0 0 0 0 0 0 0 0 +[271324.734942] bdbm: 0 0 0 0 0 0 0 0 +[271324.734944] bdbm: 0 0 0 0 0 0 0 0 +[271324.734945] bdbm: 0 0 0 0 0 0 0 0 +[271324.734946] bdbm: 0 0 0 0 0 0 0 0 +[271324.734947] bdbm: 0 0 0 0 0 0 0 0 +[271324.734948] bdbm: 0 0 0 0 0 0 0 0 +[271324.734949] bdbm: +[271324.734950] bdbm: [7] Utilization (W) +[271324.734951] bdbm: 0 0 0 0 0 0 0 0 +[271324.734952] bdbm: 0 0 0 0 0 0 0 0 +[271324.734953] bdbm: 0 0 0 0 0 0 0 0 +[271324.734954] bdbm: 0 0 0 0 0 0 0 0 +[271324.734956] bdbm: 0 0 0 0 0 0 0 0 +[271324.734957] bdbm: 0 0 0 0 0 0 0 0 +[271324.734958] bdbm: 0 0 0 0 0 0 0 0 +[271324.734959] bdbm: 0 0 0 0 0 0 0 0 +[271324.734961] bdbm: 0 0 0 0 0 0 0 0 +[271324.734962] bdbm: 0 0 0 0 0 0 0 0 +[271324.734963] bdbm: 0 0 0 0 0 0 0 0 +[271324.734964] bdbm: 0 0 0 0 0 0 0 0 +[271324.734966] bdbm: 0 0 0 0 0 0 0 0 +[271324.734967] bdbm: 0 0 0 0 0 0 0 0 +[271324.734968] bdbm: 0 0 0 0 0 0 0 0 +[271324.734969] bdbm: 0 0 0 0 0 0 0 0 +[271324.734970] bdbm: [8] NVM I/Os +[271324.734970] bdbm: #_of_nvm_total_accesses: 126730 +[271324.734971] bdbm: #_of_nvm_total_write_requests: 126696 +[271324.734972] bdbm: #_of_nvm_total_read_requests: 34 +[271324.734972] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 126696 +[271324.734973] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 6 +[271324.734973] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 33906 +[271324.734974] bdbm: #_of_nvm_evict_from_nvm: 0 +[271324.734974] bdbm: #_of_nvm_write_amplification: 0 : 0 +[271324.734975] bdbm: +[271324.734975] bdbm: ----------------------------------------------- +[271324.734976] bdbm: ----------------------------------------------- +[271324.907918] bdbm: done +[271324.907921] bdbm: [dm_ramdrive_close] closed! +[271325.295966] bdbm: [bdbm_drv_main] bdbm_drv is closed +[271325.295968] bdbm: [bdbm_drv_main] bdbm_drv is removed +[271325.319276] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[271325.337369] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[271325.341193] bdbm: ===================================================================== +[271325.341194] bdbm: DEVICE PARAMETERS +[271325.341195] bdbm: ===================================================================== +[271325.341196] bdbm: # of channels = 8 +[271325.341196] bdbm: # of chips per channel = 16 +[271325.341197] bdbm: # of blocks per chip = 256 +[271325.341197] bdbm: # of pages per block = 128 +[271325.341198] bdbm: # of subpages per page = 1 +[271325.341198] bdbm: page main size = 4096 bytes +[271325.341199] bdbm: page oob size = 64 bytes +[271325.341199] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[271325.341200] bdbm: +[271325.341201] bdbm: ===================================================================== +[271325.341201] bdbm: RAM DISK INFO +[271325.341202] bdbm: ===================================================================== +[271325.341203] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[271326.876523] bdbm: ramssd addr = ffffc90050001000 +[271326.876524] bdbm: +[271326.876525] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[271328.402530] bdbm: *** building ptr_ramssd_data done +[271328.402760] bdbm: [dm_ramdrive_probe] probe done! +[271328.402775] bdbm: [dm_ramdrive_open] open done! +[271328.502650] bdbm: nvm cache addr = ffffc90870003000 +[271328.505156] bdbm: ========================================================== +[271328.505157] bdbm: NVM CONFIGURATION +[271328.505158] bdbm: ========================================================== +[271328.505159] bdbm: total size = 1073741824, nr_nvm_pages = 262144, nvm_page_size = 4096 +[271328.699411] bdbm: TRIM is disabled +[271328.699537] bdbm: ===================================================================== +[271328.699539] bdbm: DEVICE PARAMETERS +[271328.699539] bdbm: ===================================================================== +[271328.699540] bdbm: # of channels = 8 +[271328.699542] bdbm: # of chips per channel = 16 +[271328.699544] bdbm: # of blocks per chip = 256 +[271328.699545] bdbm: # of pages per block = 128 +[271328.699546] bdbm: # of subpages per page = 1 +[271328.699546] bdbm: page main size = 4096 bytes +[271328.699547] bdbm: page oob size = 64 bytes +[271328.699548] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[271328.699550] bdbm: +[271328.699551] bdbm: ===================================================================== +[271328.699552] bdbm: FTL CONFIGURATION +[271328.699552] bdbm: ===================================================================== +[271328.699553] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[271328.699554] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[271328.699554] bdbm: wl policy = 1 (1: none, 2: swap) +[271328.699555] bdbm: trim mode = 2 (1: enable, 2: disable) +[271328.699557] bdbm: kernel sector = 512 bytes +[271328.699559] bdbm: +[271328.699561] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[271328.720017] bdbm: llm_make_req: 0, 1 +[271344.646228] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[271344.646230] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[271393.242112] bdbm: nvm: total access = 100000, total read = 42, read hit = 14, total_write = 99957, write hit = 99957, hit = 33876, evict = 0 +[271439.550767] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 33925, evict = 0 +[271484.835939] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 33970, evict = 3857 +[271505.452100] bdbm: llm_make_req: 50000, 2 +[271531.491281] bdbm: llm_make_req: 100000, 2 +[271533.202977] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 33974, evict = 103853 +[271557.590647] bdbm: llm_make_req: 150000, 2 +[271580.475080] bdbm: llm_make_req: 200000, 1 +[271582.643970] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 33977, evict = 203850 +[271605.251544] bdbm: llm_make_req: 250000, 1 +[271629.236182] bdbm: llm_make_req: 300000, 2 +[271631.013350] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 33983, evict = 303844 +[271654.830644] bdbm: llm_make_req: 350000, 1 +[271678.338006] bdbm: llm_make_req: 400000, 2 +[271680.066176] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 33989, evict = 403838 +[271700.478387] bdbm: llm_make_req: 450000, 2 +[271722.780074] bdbm: llm_make_req: 500000, 2 +[271724.506695] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 33989, evict = 503838 +[271745.142801] bdbm: llm_make_req: 550000, 2 +[271767.525604] bdbm: llm_make_req: 600000, 2 +[271769.278095] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 33989, evict = 603838 +[271789.937335] bdbm: llm_make_req: 650000, 2 +[271812.203472] bdbm: llm_make_req: 700000, 1 +[271813.921552] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 33989, evict = 703838 +[271834.369725] bdbm: llm_make_req: 750000, 2 +[271856.580482] bdbm: llm_make_req: 800000, 2 +[271858.287835] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 33989, evict = 803838 +[271878.835791] bdbm: llm_make_req: 850000, 2 +[271901.811851] bdbm: llm_make_req: 900000, 2 +[271903.523696] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 33989, evict = 903838 +[271923.986925] bdbm: llm_make_req: 950000, 2 +[271946.114250] bdbm: llm_make_req: 1000000, 2 +[271947.824165] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 33989, evict = 1003838 +[271968.256323] bdbm: llm_make_req: 1050000, 2 +[271990.397624] bdbm: llm_make_req: 1100000, 2 +[271992.103990] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 33989, evict = 1103838 +[272012.515779] bdbm: llm_make_req: 1150000, 2 +[272035.056603] bdbm: llm_make_req: 1200000, 1 +[272037.269890] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 33989, evict = 1203838 +[272061.582672] bdbm: llm_make_req: 1250000, 2 +[272086.827435] bdbm: llm_make_req: 1300000, 2 +[272088.546548] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 33989, evict = 1303838 +[272112.385891] bdbm: llm_make_req: 1350000, 2 +[272136.586544] bdbm: llm_make_req: 1400000, 2 +[272138.684670] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 33989, evict = 1403838 +[272161.541229] bdbm: llm_make_req: 1450000, 2 +[272185.243429] bdbm: llm_make_req: 1500000, 1 +[272187.005950] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 33989, evict = 1503838 +[272210.482376] bdbm: llm_make_req: 1550000, 1 +[272235.770557] bdbm: llm_make_req: 1600000, 1 +[272237.709596] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 33989, evict = 1603838 +[272261.117695] bdbm: llm_make_req: 1650000, 1 +[272286.503923] bdbm: llm_make_req: 1700000, 1 +[272288.372934] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 33989, evict = 1703838 +[272311.215145] bdbm: llm_make_req: 1750000, 2 +[272336.015292] bdbm: llm_make_req: 1800000, 2 +[272337.775944] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 33989, evict = 1803838 +[272360.790284] bdbm: llm_make_req: 1850000, 2 +[272385.689975] bdbm: llm_make_req: 1900000, 1 +[272387.542477] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 33989, evict = 1903838 +[272409.877307] bdbm: llm_make_req: 1950000, 1 +[272435.707282] bdbm: llm_make_req: 2000000, 1 +[272437.649009] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 33989, evict = 2003838 +[272459.585227] bdbm: llm_make_req: 2050000, 1 +[272484.303913] bdbm: llm_make_req: 2100000, 2 +[272486.024583] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 33989, evict = 2103838 +[272508.624314] bdbm: llm_make_req: 2150000, 2 +[272533.573745] bdbm: llm_make_req: 2200000, 1 +[272535.421667] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 33989, evict = 2203838 +[272557.961697] bdbm: llm_make_req: 2250000, 2 +[272583.174335] bdbm: llm_make_req: 2300000, 2 +[272585.214952] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 33989, evict = 2303838 +[272608.644743] bdbm: llm_make_req: 2350000, 1 +[272634.055089] bdbm: llm_make_req: 2400000, 1 +[272635.985107] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 33989, evict = 2403838 +[272658.313476] bdbm: llm_make_req: 2450000, 2 +[272683.122823] bdbm: llm_make_req: 2500000, 1 +[272683.462419] bdbm: nvm: total access = 2800000, total read = 20161, read hit = 1255, total_write = 2779838, write hit = 2779838, hit = 37158, evict = 2481791 +[272708.146793] bdbm: llm_make_req: 2550000, 2 +[272727.427910] bdbm: nvm: total access = 2900000, total read = 60862, read hit = 6901, total_write = 2839137, write hit = 2839137, hit = 50852, evict = 2533042 +[272734.206887] bdbm: llm_make_req: 2600000, 1 +[272761.660305] bdbm: llm_make_req: 2650000, 8 +[272769.916696] bdbm: nvm: total access = 3000000, total read = 100460, read hit = 15827, total_write = 2899539, write hit = 2899539, hit = 73529, evict = 2579693 +[272790.937642] bdbm: llm_make_req: 2700000, 1 +[272812.019000] bdbm: nvm: total access = 3100000, total read = 140064, read hit = 27644, total_write = 2959935, write hit = 2959935, hit = 103401, evict = 2622034 +[272821.807462] bdbm: llm_make_req: 2750000, 2 +[272852.525569] bdbm: nvm: total access = 3200000, total read = 180408, read hit = 42391, total_write = 3019591, write hit = 3019591, hit = 139598, evict = 2660240 +[272853.645303] bdbm: llm_make_req: 2800000, 3 +[272886.305547] bdbm: llm_make_req: 2850000, 1 +[272891.249295] bdbm: nvm: total access = 3300000, total read = 220436, read hit = 58554, total_write = 3079563, write hit = 3079563, hit = 180466, evict = 2695507 +[272919.713550] bdbm: llm_make_req: 2900000, 2 +[272928.420430] bdbm: nvm: total access = 3400000, total read = 260904, read hit = 76694, total_write = 3139095, write hit = 3139095, hit = 225311, evict = 2728334 +[272953.363045] bdbm: llm_make_req: 2950000, 1 +[272966.355316] bdbm: nvm: total access = 3500000, total read = 300670, read hit = 93730, total_write = 3199329, write hit = 3199329, hit = 268285, evict = 2762630 +[272985.954714] bdbm: llm_make_req: 3000000, 16 +[273004.635080] bdbm: nvm: total access = 3600000, total read = 340772, read hit = 110131, total_write = 3259227, write hit = 3259227, hit = 309004, evict = 2798210 +[273018.036020] bdbm: llm_make_req: 3050000, 1 +[273043.483912] bdbm: nvm: total access = 3700000, total read = 380271, read hit = 125362, total_write = 3319728, write hit = 3319728, hit = 348181, evict = 2834765 +[273050.016942] bdbm: llm_make_req: 3100000, 1 +[273081.630798] bdbm: llm_make_req: 3150000, 1 +[273082.685746] bdbm: nvm: total access = 3800000, total read = 420324, read hit = 140624, total_write = 3379675, write hit = 3379675, hit = 386222, evict = 2871933 +[273113.137908] bdbm: llm_make_req: 3200000, 1 +[273121.704972] bdbm: nvm: total access = 3900000, total read = 459555, read hit = 155461, total_write = 3440444, write hit = 3440444, hit = 423991, evict = 2909770 +[273144.486645] bdbm: llm_make_req: 3250000, 2 +[273160.583130] bdbm: nvm: total access = 4000000, total read = 499651, read hit = 171083, total_write = 3500348, write hit = 3500348, hit = 462379, evict = 2946908 +[273175.909219] bdbm: llm_make_req: 3300000, 16 +[273199.020067] bdbm: nvm: total access = 4100000, total read = 539953, read hit = 186617, total_write = 3560046, write hit = 3560046, hit = 501261, evict = 2983258 +[273207.660769] bdbm: llm_make_req: 3350000, 1 +[273237.037339] bdbm: nvm: total access = 4200000, total read = 580544, read hit = 202797, total_write = 3619455, write hit = 3619455, hit = 540979, evict = 3019129 +[273238.978511] bdbm: llm_make_req: 3400000, 2 +[273270.872348] bdbm: llm_make_req: 3450000, 1 +[273275.211986] bdbm: nvm: total access = 4300000, total read = 620702, read hit = 218963, total_write = 3679297, write hit = 3679297, hit = 580971, evict = 3055145 +[273302.559643] bdbm: llm_make_req: 3500000, 2 +[273313.274558] bdbm: nvm: total access = 4400000, total read = 661054, read hit = 235301, total_write = 3738945, write hit = 3738945, hit = 620998, evict = 3091104 +[273334.278686] bdbm: llm_make_req: 3550000, 8 +[273351.619946] bdbm: nvm: total access = 4500000, total read = 701149, read hit = 251185, total_write = 3798850, write hit = 3798850, hit = 660713, evict = 3127178 +[273365.983815] bdbm: llm_make_req: 3600000, 1 +[273389.845233] bdbm: nvm: total access = 4600000, total read = 741205, read hit = 266673, total_write = 3858794, write hit = 3858794, hit = 700044, evict = 3163279 +[273397.439054] bdbm: llm_make_req: 3650000, 2 +[273428.301068] bdbm: nvm: total access = 4700000, total read = 781838, read hit = 282364, total_write = 3918161, write hit = 3918161, hit = 739151, evict = 3199230 +[273429.181849] bdbm: llm_make_req: 3700000, 15 +[273460.563004] bdbm: llm_make_req: 3750000, 1 +[273466.669148] bdbm: nvm: total access = 4800000, total read = 822458, read hit = 298246, total_write = 3977541, write hit = 3977541, hit = 778153, evict = 3235490 +[273492.228891] bdbm: llm_make_req: 3800000, 1 +[273505.440744] bdbm: nvm: total access = 4900000, total read = 862272, read hit = 313735, total_write = 4037727, write hit = 4037727, hit = 817111, evict = 3272207 +[273523.651763] bdbm: llm_make_req: 3850000, 1 +[273543.446382] bdbm: nvm: total access = 5000000, total read = 902488, read hit = 329527, total_write = 4097511, write hit = 4097511, hit = 856348, evict = 3308546 +[273555.072117] bdbm: llm_make_req: 3900000, 1 +[273581.295235] bdbm: nvm: total access = 5100000, total read = 942518, read hit = 345492, total_write = 4157481, write hit = 4157481, hit = 896031, evict = 3344798 +[273586.401428] bdbm: llm_make_req: 3950000, 2 +[273618.152823] bdbm: llm_make_req: 4000000, 2 +[273619.732285] bdbm: nvm: total access = 5200000, total read = 983235, read hit = 361649, total_write = 4216764, write hit = 4216764, hit = 935416, evict = 3380853 +[273649.766809] bdbm: llm_make_req: 4050000, 1 +[273658.137342] bdbm: nvm: total access = 5300000, total read = 1023125, read hit = 377349, total_write = 4276874, write hit = 4276874, hit = 974830, evict = 3417249 +[273681.463544] bdbm: llm_make_req: 4100000, 16 +[273696.404003] bdbm: nvm: total access = 5400000, total read = 1063812, read hit = 393451, total_write = 4336187, write hit = 4336187, hit = 1014454, evict = 3453040 +[273713.275991] bdbm: llm_make_req: 4150000, 1 +[273734.879592] bdbm: nvm: total access = 5500000, total read = 1103607, read hit = 409194, total_write = 4396392, write hit = 4396392, hit = 1053667, evict = 3489775 +[273744.904280] bdbm: llm_make_req: 4200000, 2 +[273773.660821] bdbm: nvm: total access = 5600000, total read = 1143124, read hit = 424759, total_write = 4456875, write hit = 4456875, hit = 1092598, evict = 3526892 +[273776.783193] bdbm: llm_make_req: 4250000, 1 +[273808.394200] bdbm: llm_make_req: 4300000, 1 +[273812.222490] bdbm: nvm: total access = 5700000, total read = 1182573, read hit = 440145, total_write = 4517426, write hit = 4517426, hit = 1131633, evict = 3563794 +[273839.924321] bdbm: llm_make_req: 4350000, 2 +[273850.694244] bdbm: nvm: total access = 5800000, total read = 1223083, read hit = 456223, total_write = 4576916, write hit = 4576916, hit = 1170967, evict = 3600028 +[273871.644645] bdbm: llm_make_req: 4400000, 1 +[273889.159219] bdbm: nvm: total access = 5900000, total read = 1262755, read hit = 471539, total_write = 4637244, write hit = 4637244, hit = 1210015, evict = 3636624 +[273903.080922] bdbm: llm_make_req: 4450000, 38 +[273927.425540] bdbm: nvm: total access = 6000000, total read = 1302639, read hit = 487230, total_write = 4697360, write hit = 4697360, hit = 1249479, evict = 3672967 +[273934.784137] bdbm: llm_make_req: 4500000, 1 +[273965.473920] bdbm: nvm: total access = 6100000, total read = 1342752, read hit = 503151, total_write = 4757247, write hit = 4757247, hit = 1288894, evict = 3709360 +[273966.128287] bdbm: llm_make_req: 4550000, 1 +[273997.651138] bdbm: llm_make_req: 4600000, 7 +[274003.566714] bdbm: nvm: total access = 6200000, total read = 1382751, read hit = 518623, total_write = 4817248, write hit = 4817248, hit = 1328330, evict = 3745397 +[274029.095898] bdbm: llm_make_req: 4650000, 1 +[274041.944817] bdbm: nvm: total access = 6300000, total read = 1422954, read hit = 534464, total_write = 4877045, write hit = 4877045, hit = 1367690, evict = 3781675 +[274061.185860] bdbm: llm_make_req: 4700000, 2 +[274080.683427] bdbm: nvm: total access = 6400000, total read = 1463260, read hit = 550612, total_write = 4936739, write hit = 4936739, hit = 1407272, evict = 3817935 +[274093.117269] bdbm: llm_make_req: 4750000, 1 +[274119.294681] bdbm: nvm: total access = 6500000, total read = 1503603, read hit = 566478, total_write = 4996396, write hit = 4996396, hit = 1446587, evict = 3854143 +[274124.867809] bdbm: llm_make_req: 4800000, 25 +[274156.413392] bdbm: llm_make_req: 4850000, 4 +[274157.699260] bdbm: nvm: total access = 6600000, total read = 1543630, read hit = 582132, total_write = 5056369, write hit = 5056369, hit = 1485922, evict = 3890435 +[274188.356044] bdbm: llm_make_req: 4900000, 16 +[274196.074787] bdbm: nvm: total access = 6700000, total read = 1583935, read hit = 598111, total_write = 5116064, write hit = 5116064, hit = 1525563, evict = 3926468 +[274219.948167] bdbm: llm_make_req: 4950000, 1 +[274234.168962] bdbm: nvm: total access = 6800000, total read = 1624107, read hit = 613887, total_write = 5175892, write hit = 5175892, hit = 1565167, evict = 3962468 +[274251.227196] bdbm: llm_make_req: 5000000, 1 +[274272.206144] bdbm: nvm: total access = 6900000, total read = 1664425, read hit = 629886, total_write = 5235574, write hit = 5235574, hit = 1604395, evict = 3998921 +[274282.566979] bdbm: llm_make_req: 5050000, 13 +[274310.580934] bdbm: nvm: total access = 7000000, total read = 1704742, read hit = 645680, total_write = 5295257, write hit = 5295257, hit = 1643783, evict = 4035010 +[274314.385313] bdbm: llm_make_req: 5100000, 2 +[274341.040064] bdbm: llm_make_req: 5150000, 96 +[274351.681456] bdbm: nvm: total access = 7100000, total read = 1744644, read hit = 661106, total_write = 5355355, write hit = 5355355, hit = 1682546, evict = 4071771 +[274355.224769] bdbm: llm_make_req: 5200000, 15 +[274376.219221] bdbm: llm_make_req: 5250000, 4 +[274392.628603] bdbm: nvm: total access = 7200000, total read = 1784356, read hit = 676697, total_write = 5415643, write hit = 5415643, hit = 1722048, evict = 4108148 +[274398.127128] bdbm: llm_make_req: 5300000, 2 +[274422.825508] bdbm: llm_make_req: 5350000, 96 +[274433.385786] bdbm: nvm: total access = 7300000, total read = 1824498, read hit = 692514, total_write = 5475501, write hit = 5475501, hit = 1761418, evict = 4144453 +[274446.506396] bdbm: llm_make_req: 5400000, 11 +[274467.997652] bdbm: llm_make_req: 5450000, 1 +[274474.515837] bdbm: nvm: total access = 7400000, total read = 1864618, read hit = 708144, total_write = 5535381, write hit = 5535381, hit = 1800693, evict = 4180688 +[274489.412642] bdbm: llm_make_req: 5500000, 96 +[274514.248316] bdbm: llm_make_req: 5550000, 1 +[274516.638464] bdbm: nvm: total access = 7500000, total read = 1904068, read hit = 723843, total_write = 5595931, write hit = 5595931, hit = 1840225, evict = 4217405 +[274533.701373] bdbm: llm_make_req: 5600000, 1 +[274551.662455] bdbm: llm_make_req: 5650000, 1 +[274558.224509] bdbm: nvm: total access = 7600000, total read = 1943804, read hit = 739240, total_write = 5656195, write hit = 5656195, hit = 1878932, evict = 4254359 +[274574.857917] bdbm: llm_make_req: 5700000, 96 +[274593.309627] bdbm: llm_make_req: 5750000, 8 +[274600.689254] bdbm: nvm: total access = 7700000, total read = 1984079, read hit = 755086, total_write = 5715920, write hit = 5715920, hit = 1918299, evict = 4290563 +[274610.327612] bdbm: llm_make_req: 5800000, 96 +[274632.566089] bdbm: llm_make_req: 5850000, 96 +[274642.553216] bdbm: nvm: total access = 7800000, total read = 2024129, read hit = 770825, total_write = 5775870, write hit = 5775870, hit = 1957424, evict = 4327127 +[274651.881301] bdbm: llm_make_req: 5900000, 6 +[274668.582341] bdbm: llm_make_req: 5950000, 9 +[274685.556551] bdbm: nvm: total access = 7900000, total read = 2063686, read hit = 786335, total_write = 5836313, write hit = 5836313, hit = 1996423, evict = 4364081 +[274688.367517] bdbm: llm_make_req: 6000000, 96 +[274708.082946] bdbm: llm_make_req: 6050000, 1 +[274723.033378] bdbm: llm_make_req: 6100000, 9 +[274728.706395] bdbm: nvm: total access = 8000000, total read = 2103640, read hit = 802128, total_write = 5896359, write hit = 5896359, hit = 2035589, evict = 4400754 +[274741.947652] bdbm: llm_make_req: 6150000, 96 +[274760.425806] bdbm: llm_make_req: 6200000, 1 +[274771.748144] bdbm: nvm: total access = 8100000, total read = 2143483, read hit = 817911, total_write = 5956516, write hit = 5956516, hit = 2075092, evict = 4437191 +[274776.035882] bdbm: llm_make_req: 6250000, 14 +[274794.771389] bdbm: llm_make_req: 6300000, 96 +[274813.143231] bdbm: llm_make_req: 6350000, 7 +[274815.922101] bdbm: nvm: total access = 8200000, total read = 2183026, read hit = 833726, total_write = 6016973, write hit = 6016973, hit = 2114585, evict = 4473970 +[274826.969843] bdbm: llm_make_req: 6400000, 1 +[274844.001209] bdbm: llm_make_req: 6450000, 96 +[274859.030321] bdbm: nvm: total access = 8300000, total read = 2223135, read hit = 849837, total_write = 6076864, write hit = 6076864, hit = 2154188, evict = 4510369 +[274861.825835] bdbm: llm_make_req: 6500000, 1 +[274873.808080] bdbm: llm_make_req: 6550000, 1 +[274892.301189] bdbm: llm_make_req: 6600000, 96 +[274903.897234] bdbm: nvm: total access = 8400000, total read = 2263082, read hit = 865400, total_write = 6136917, write hit = 6136917, hit = 2193598, evict = 4546575 +[274907.995888] bdbm: llm_make_req: 6650000, 1 +[274919.751528] bdbm: llm_make_req: 6700000, 96 +[274938.451506] bdbm: llm_make_req: 6750000, 96 +[274948.631775] bdbm: nvm: total access = 8500000, total read = 2303336, read hit = 881341, total_write = 6196663, write hit = 6196663, hit = 2232779, evict = 4583081 +[274953.356077] bdbm: llm_make_req: 6800000, 6 +[274966.069754] bdbm: llm_make_req: 6850000, 96 +[274983.613865] bdbm: llm_make_req: 6900000, 96 +[274994.098087] bdbm: nvm: total access = 8600000, total read = 2343621, read hit = 897201, total_write = 6256378, write hit = 6256378, hit = 2271913, evict = 4619522 +[274995.289420] bdbm: llm_make_req: 6950000, 1 +[275009.269678] bdbm: llm_make_req: 7000000, 96 +[275025.216316] bdbm: llm_make_req: 7050000, 96 +[275035.970775] bdbm: llm_make_req: 7100000, 8 +[275039.374721] bdbm: nvm: total access = 8700000, total read = 2382891, read hit = 912672, total_write = 6317108, write hit = 6317108, hit = 2310953, evict = 4656683 +[275051.452078] bdbm: llm_make_req: 7150000, 96 +[275065.174389] bdbm: llm_make_req: 7200000, 2 +[275076.030104] bdbm: llm_make_req: 7250000, 96 +[275086.672296] bdbm: nvm: total access = 8800000, total read = 2422715, read hit = 928117, total_write = 6377284, write hit = 6377284, hit = 2350174, evict = 4693083 +[275091.301985] bdbm: llm_make_req: 7300000, 96 +[275101.748997] bdbm: llm_make_req: 7350000, 1 +[275115.170677] bdbm: llm_make_req: 7400000, 96 +[275128.318228] bdbm: llm_make_req: 7450000, 1 +[275133.764266] bdbm: nvm: total access = 8900000, total read = 2463048, read hit = 943805, total_write = 6436951, write hit = 6436951, hit = 2389172, evict = 4729440 +[275137.166909] bdbm: llm_make_req: 7500000, 96 +[275151.497673] bdbm: llm_make_req: 7550000, 96 +[275161.916220] bdbm: llm_make_req: 7600000, 1 +[275173.670860] bdbm: llm_make_req: 7650000, 96 +[275182.650693] bdbm: nvm: total access = 9000000, total read = 2503277, read hit = 959423, total_write = 6496722, write hit = 6496722, hit = 2428286, evict = 4765715 +[275187.360826] bdbm: llm_make_req: 7700000, 96 +[275195.486534] bdbm: llm_make_req: 7750000, 95 +[275208.938219] bdbm: llm_make_req: 7800000, 96 +[275219.589878] bdbm: llm_make_req: 7850000, 14 +[275230.612960] bdbm: llm_make_req: 7900000, 96 +[275231.800363] bdbm: nvm: total access = 9100000, total read = 2543321, read hit = 975330, total_write = 6556678, write hit = 6556678, hit = 2467491, evict = 4802373 +[275243.309487] bdbm: llm_make_req: 7950000, 96 +[275251.163505] bdbm: llm_make_req: 8000000, 96 +[275264.875624] bdbm: llm_make_req: 8050000, 96 +[275275.822256] bdbm: llm_make_req: 8100000, 1 +[275281.282956] bdbm: nvm: total access = 9200000, total read = 2582321, read hit = 990502, total_write = 6617678, write hit = 6617678, hit = 2506295, evict = 4839741 +[275285.906258] bdbm: llm_make_req: 8150000, 96 +[275298.966092] bdbm: llm_make_req: 8200000, 96 +[275306.920992] bdbm: llm_make_req: 8250000, 96 +[275320.665498] bdbm: llm_make_req: 8300000, 96 +[275330.388759] bdbm: nvm: total access = 9300000, total read = 2622162, read hit = 1006038, total_write = 6677837, write hit = 6677837, hit = 2545356, evict = 4876375 +[275332.304144] bdbm: llm_make_req: 8350000, 7 +[275341.766990] bdbm: llm_make_req: 8400000, 95 +[275354.995486] bdbm: llm_make_req: 8450000, 96 +[275363.451534] bdbm: llm_make_req: 8500000, 1 +[275376.739347] bdbm: llm_make_req: 8550000, 96 +[275379.778208] bdbm: nvm: total access = 9400000, total read = 2662485, read hit = 1021673, total_write = 6737514, write hit = 6737514, hit = 2584036, evict = 4913007 +[275388.743633] bdbm: llm_make_req: 8600000, 3 +[275397.920390] bdbm: llm_make_req: 8650000, 96 +[275411.213248] bdbm: llm_make_req: 8700000, 96 +[275420.327652] bdbm: llm_make_req: 8750000, 2 +[275429.047696] bdbm: nvm: total access = 9500000, total read = 2702172, read hit = 1037435, total_write = 6797827, write hit = 6797827, hit = 2623451, evict = 4949667 +[275432.990574] bdbm: llm_make_req: 8800000, 96 +[275445.683236] bdbm: llm_make_req: 8850000, 1 +[275454.419507] bdbm: llm_make_req: 8900000, 96 +[275467.998911] bdbm: llm_make_req: 8950000, 96 +[275477.776321] bdbm: llm_make_req: 9000000, 1 +[275478.582838] bdbm: nvm: total access = 9600000, total read = 2741811, read hit = 1052848, total_write = 6858188, write hit = 6858188, hit = 2662599, evict = 4986293 +[275489.515836] bdbm: llm_make_req: 9050000, 96 +[275502.685224] bdbm: llm_make_req: 9100000, 96 +[275511.169518] bdbm: llm_make_req: 9150000, 96 +[275525.342838] bdbm: llm_make_req: 9200000, 96 +[275527.669036] bdbm: nvm: total access = 9700000, total read = 2781298, read hit = 1068343, total_write = 6918701, write hit = 6918701, hit = 2702232, evict = 5022668 +[275536.012220] bdbm: llm_make_req: 9250000, 1 +[275547.075138] bdbm: llm_make_req: 9300000, 96 +[275560.337391] bdbm: llm_make_req: 9350000, 96 +[275568.510702] bdbm: llm_make_req: 9400000, 96 +[275577.125956] bdbm: nvm: total access = 9800000, total read = 2820474, read hit = 1083800, total_write = 6979525, write hit = 6979525, hit = 2741403, evict = 5059778 +[275581.774745] bdbm: llm_make_req: 9450000, 96 +[275593.874691] bdbm: llm_make_req: 9500000, 1 +[275603.543679] bdbm: llm_make_req: 9550000, 96 +[275617.094538] bdbm: llm_make_req: 9600000, 96 +[275626.222441] bdbm: llm_make_req: 9650000, 2 +[275626.336145] bdbm: nvm: total access = 9900000, total read = 2860121, read hit = 1099411, total_write = 7039878, write hit = 7039878, hit = 2780564, evict = 5096581 +[275639.392477] bdbm: llm_make_req: 9700000, 96 +[275652.331974] bdbm: llm_make_req: 9750000, 1 +[275660.850677] bdbm: llm_make_req: 9800000, 96 +[275674.586681] bdbm: llm_make_req: 9850000, 96 +[275675.654387] bdbm: nvm: total access = 10000000, total read = 2899894, read hit = 1115328, total_write = 7100105, write hit = 7100105, hit = 2819911, evict = 5133378 +[275684.752901] bdbm: llm_make_req: 9900000, 1 +[275697.047482] bdbm: llm_make_req: 9950000, 96 +[275710.653650] bdbm: llm_make_req: 10000000, 96 +[275719.852356] bdbm: llm_make_req: 10050000, 1 +[275723.327817] bdbm: nvm: total access = 10100000, total read = 2940213, read hit = 1131352, total_write = 7159786, write hit = 7159786, hit = 2859637, evict = 5169357 +[275736.892331] bdbm: llm_make_req: 10100000, 38 +[275755.294734] bdbm: llm_make_req: 10150000, 6 +[275766.245882] bdbm: nvm: total access = 10200000, total read = 2980717, read hit = 1146900, total_write = 7219282, write hit = 7219282, hit = 2898500, evict = 5205538 +[275773.413456] bdbm: llm_make_req: 10200000, 1 +[275795.126266] bdbm: llm_make_req: 10250000, 1 +[275807.305423] bdbm: nvm: total access = 10300000, total read = 3020902, read hit = 1162595, total_write = 7279097, write hit = 7279097, hit = 2937648, evict = 5241900 +[275821.063411] bdbm: llm_make_req: 10300000, 96 +[275845.566448] bdbm: llm_make_req: 10350000, 1 +[275847.862529] bdbm: nvm: total access = 10400000, total read = 3061027, read hit = 1178514, total_write = 7338972, write hit = 7338972, hit = 2976999, evict = 5278343 +[275869.436082] bdbm: llm_make_req: 10400000, 1 +[275888.426180] bdbm: nvm: total access = 10500000, total read = 3100702, read hit = 1194183, total_write = 7399297, write hit = 7399297, hit = 3016185, evict = 5315151 +[275893.201889] bdbm: llm_make_req: 10450000, 2 +[275919.518798] bdbm: llm_make_req: 10500000, 96 +[275928.888583] bdbm: nvm: total access = 10600000, total read = 3140871, read hit = 1210035, total_write = 7459128, write hit = 7459128, hit = 3055530, evict = 5351489 +[275944.035908] bdbm: llm_make_req: 10550000, 9 +[275966.645049] bdbm: llm_make_req: 10600000, 7 +[275969.698866] bdbm: nvm: total access = 10700000, total read = 3180613, read hit = 1225431, total_write = 7519386, write hit = 7519386, hit = 3094356, evict = 5388317 +[275988.714291] bdbm: llm_make_req: 10650000, 95 +[276010.376036] bdbm: nvm: total access = 10800000, total read = 3220604, read hit = 1240957, total_write = 7579395, write hit = 7579395, hit = 3133504, evict = 5424704 +[276015.735145] bdbm: llm_make_req: 10700000, 96 +[276038.616979] bdbm: llm_make_req: 10750000, 1 +[276050.896688] bdbm: nvm: total access = 10900000, total read = 3260531, read hit = 1256539, total_write = 7639468, write hit = 7639468, hit = 3172539, evict = 5461324 +[276061.060119] bdbm: llm_make_req: 10800000, 21 +[276084.670814] bdbm: llm_make_req: 10850000, 96 +[276091.193208] bdbm: nvm: total access = 11000000, total read = 3300435, read hit = 1272175, total_write = 7699564, write hit = 7699564, hit = 3211989, evict = 5497606 +[276111.496213] bdbm: llm_make_req: 10900000, 2 +[276131.660933] bdbm: nvm: total access = 11100000, total read = 3340839, read hit = 1287948, total_write = 7759160, write hit = 7759160, hit = 3251308, evict = 5533656 +[276134.793897] bdbm: llm_make_req: 10950000, 1 +[276157.953161] bdbm: llm_make_req: 11000000, 15 +[276172.462377] bdbm: nvm: total access = 11200000, total read = 3380397, read hit = 1303307, total_write = 7819602, write hit = 7819602, hit = 3290478, evict = 5570287 +[276182.420377] bdbm: llm_make_req: 11050000, 96 +[276208.664376] bdbm: llm_make_req: 11100000, 1 +[276212.964618] bdbm: nvm: total access = 11300000, total read = 3420341, read hit = 1319283, total_write = 7879658, write hit = 7879658, hit = 3329931, evict = 5606866 +[276231.460562] bdbm: llm_make_req: 11150000, 3 +[276253.588579] bdbm: nvm: total access = 11400000, total read = 3460482, read hit = 1334903, total_write = 7939517, write hit = 7939517, hit = 3369196, evict = 5643080 +[276254.401283] bdbm: llm_make_req: 11200000, 10 +[276279.343716] bdbm: llm_make_req: 11250000, 96 +[276294.329419] bdbm: nvm: total access = 11500000, total read = 3500403, read hit = 1350771, total_write = 7999596, write hit = 7999596, hit = 3408586, evict = 5679637 +[276304.767361] bdbm: llm_make_req: 11300000, 16 +[276327.514590] bdbm: llm_make_req: 11350000, 12 +[276333.902375] bdbm: nvm: total access = 11600000, total read = 3540961, read hit = 1366530, total_write = 8059038, write hit = 8059038, hit = 3447765, evict = 5715659 +[276350.307486] bdbm: llm_make_req: 11400000, 2 +[276374.387558] bdbm: nvm: total access = 11700000, total read = 3580775, read hit = 1382384, total_write = 8119224, write hit = 8119224, hit = 3487287, evict = 5752177 +[276376.037321] bdbm: llm_make_req: 11450000, 96 +[276400.581418] bdbm: llm_make_req: 11500000, 1 +[276415.418556] bdbm: nvm: total access = 11800000, total read = 3620779, read hit = 1398454, total_write = 8179220, write hit = 8179220, hit = 3526861, evict = 5788669 +[276424.100764] bdbm: llm_make_req: 11550000, 1 +[276447.208279] bdbm: llm_make_req: 11600000, 1 +[276456.446066] bdbm: nvm: total access = 11900000, total read = 3660648, read hit = 1414031, total_write = 8239351, write hit = 8239351, hit = 3565727, evict = 5825511 +[276473.041397] bdbm: llm_make_req: 11650000, 96 +[276497.064689] bdbm: nvm: total access = 12000000, total read = 3700410, read hit = 1429340, total_write = 8299589, write hit = 8299589, hit = 3604628, evict = 5862157 +[276497.126342] bdbm: llm_make_req: 11700000, 2 +[276520.036712] bdbm: llm_make_req: 11750000, 9 +[276537.710112] bdbm: nvm: total access = 12100000, total read = 3741093, read hit = 1445248, total_write = 8358906, write hit = 8358906, hit = 3643502, evict = 5898508 +[276542.501663] bdbm: llm_make_req: 11800000, 96 +[276569.978096] bdbm: llm_make_req: 11850000, 96 +[276578.557640] bdbm: nvm: total access = 12200000, total read = 3780712, read hit = 1460673, total_write = 8419287, write hit = 8419287, hit = 3682786, evict = 5935030 +[276593.398584] bdbm: llm_make_req: 11900000, 8 +[276616.734716] bdbm: llm_make_req: 11950000, 1 +[276619.262488] bdbm: nvm: total access = 12300000, total read = 3821226, read hit = 1476919, total_write = 8478773, write hit = 8478773, hit = 3722440, evict = 5971108 +[276639.848515] bdbm: llm_make_req: 12000000, 96 +[276660.342387] bdbm: nvm: total access = 12400000, total read = 3861030, read hit = 1492176, total_write = 8538969, write hit = 8538969, hit = 3760612, evict = 6008389 +[276666.165643] bdbm: llm_make_req: 12050000, 1 +[276689.058837] bdbm: llm_make_req: 12100000, 2 +[276701.149184] bdbm: nvm: total access = 12500000, total read = 3900325, read hit = 1507744, total_write = 8599674, write hit = 8599674, hit = 3800147, evict = 6045127 +[276711.746833] bdbm: llm_make_req: 12150000, 10 +[276735.514550] bdbm: llm_make_req: 12200000, 95 +[276741.951446] bdbm: nvm: total access = 12600000, total read = 3940069, read hit = 1523511, total_write = 8659930, write hit = 8659930, hit = 3839652, evict = 6081645 +[276762.219756] bdbm: llm_make_req: 12250000, 2 +[276782.681463] bdbm: nvm: total access = 12700000, total read = 3979990, read hit = 1539445, total_write = 8720009, write hit = 8720009, hit = 3879013, evict = 6118297 +[276785.260417] bdbm: llm_make_req: 12300000, 21 +[276807.723010] bdbm: llm_make_req: 12350000, 4 +[276823.194607] bdbm: nvm: total access = 12800000, total read = 4020065, read hit = 1555487, total_write = 8779934, write hit = 8779934, hit = 3918385, evict = 6154892 +[276831.849760] bdbm: llm_make_req: 12400000, 96 +[276857.869515] bdbm: llm_make_req: 12450000, 1 +[276863.972321] bdbm: nvm: total access = 12900000, total read = 4059881, read hit = 1571177, total_write = 8840118, write hit = 8840118, hit = 3958003, evict = 6191148 +[276880.722091] bdbm: llm_make_req: 12500000, 11 +[276901.563429] bdbm: llm_make_req: 12550000, 96 +[276905.436207] bdbm: nvm: total access = 13000000, total read = 4099832, read hit = 1586654, total_write = 8900167, write hit = 8900167, hit = 3997202, evict = 6227475 +[276919.860120] bdbm: llm_make_req: 12600000, 96 +[276936.495486] bdbm: llm_make_req: 12650000, 21 +[276948.376172] bdbm: nvm: total access = 13100000, total read = 4140232, read hit = 1602599, total_write = 8959767, write hit = 8959767, hit = 4036821, evict = 6263401 +[276954.248805] bdbm: llm_make_req: 12700000, 96 +[276976.514674] bdbm: llm_make_req: 12750000, 96 +[276991.107483] bdbm: nvm: total access = 13200000, total read = 4180147, read hit = 1618484, total_write = 9019852, write hit = 9019852, hit = 4076397, evict = 6299795 +[276995.073885] bdbm: llm_make_req: 12800000, 1 +[277013.275071] bdbm: llm_make_req: 12850000, 1 +[277032.823568] bdbm: nvm: total access = 13300000, total read = 4220378, read hit = 1634012, total_write = 9079621, write hit = 9079621, hit = 4115546, evict = 6335943 +[277035.417789] bdbm: llm_make_req: 12900000, 96 +[277055.007787] bdbm: llm_make_req: 12950000, 15 +[277071.967179] bdbm: llm_make_req: 13000000, 1 +[277075.900811] bdbm: nvm: total access = 13400000, total read = 4260601, read hit = 1649648, total_write = 9139398, write hit = 9139398, hit = 4154349, evict = 6372553 +[277093.010880] bdbm: llm_make_req: 13050000, 96 +[277112.723563] bdbm: llm_make_req: 13100000, 2 +[277118.812661] bdbm: nvm: total access = 13500000, total read = 4301004, read hit = 1665580, total_write = 9198995, write hit = 9198995, hit = 4193709, evict = 6408722 +[277128.604836] bdbm: llm_make_req: 13150000, 1 +[277148.653392] bdbm: llm_make_req: 13200000, 96 +[290103.230731] bdbm: ----------------------------------------------- +[290103.230733] bdbm: < PERFORMANCE SUMMARY > +[290103.230734] bdbm: [0] Execution Time (us): 18773.387587 +[290103.230734] bdbm: +[290103.230735] bdbm: [1] Total I/Os +[290103.230735] bdbm: # of page reads: 4696064 +[290103.230736] bdbm: # of page writes: 2043341 +[290103.230736] bdbm: # of block erase: 34560 +[290103.230737] bdbm: +[290103.230737] bdbm: [2] Normal I/Os +[290103.230738] bdbm: # of page reads: 2652993 +[290103.230738] bdbm: # of page writes: 0 +[290103.230739] bdbm: # of page rmw reads: 0 +[290103.230739] bdbm: # of page rmw writes: 0 +[290103.230740] bdbm: +[290103.230740] bdbm: [3] GC I/Os +[290103.230741] bdbm: # of GC invocation: 0 +[290103.230741] bdbm: # of page reads: 2043071 +[290103.230741] bdbm: # of page writes: 2043341 +[290103.230742] bdbm: # of block erase: 34560 +[290103.230742] bdbm: +[290103.230743] bdbm: [4] Meta I/Os +[290103.230743] bdbm: # of meta page reads: 0 +[290103.230744] bdbm: # of meta page writes: 0 +[290103.230744] bdbm: +[290103.230745] bdbm: [5] Elapsed Time +[290103.230745] bdbm: page read (us): 514 (S:403 + Q:9 + D:102) +[290103.230746] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[290103.230747] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[290103.230747] bdbm: +[290103.230747] bdbm: [6] Utilization (R) +[290103.230749] bdbm: 36398 36765 36787 36821 37019 36510 36532 36644 +[290103.230751] bdbm: 36549 36836 36498 36545 36963 36580 36719 36726 +[290103.230752] bdbm: 36448 36458 36815 36732 36700 36801 36614 36750 +[290103.230753] bdbm: 36624 36899 36940 36828 36734 36877 36639 36694 +[290103.230754] bdbm: 36713 36879 36506 36851 36575 36552 36702 36733 +[290103.230755] bdbm: 36843 36449 36758 36544 36482 36746 36779 37142 +[290103.230756] bdbm: 36801 36765 36658 36872 36856 36698 36673 36990 +[290103.230758] bdbm: 36692 36767 36679 37010 36682 36653 36806 36544 +[290103.230759] bdbm: 36622 36758 36603 36701 36805 36693 36837 36733 +[290103.230760] bdbm: 36616 36431 36186 36254 36883 36514 36693 36757 +[290103.230761] bdbm: 36835 36675 36398 36418 36874 36417 36652 36566 +[290103.230762] bdbm: 36430 36656 36827 37020 36646 36638 36851 36611 +[290103.230763] bdbm: 36807 36850 36638 36704 36828 36828 36811 36579 +[290103.230764] bdbm: 37035 36965 36527 36450 36429 36725 36528 36862 +[290103.230766] bdbm: 36641 36752 36449 36578 36557 36683 36571 36871 +[290103.230767] bdbm: 36366 36337 36682 36821 36746 36572 36732 36695 +[290103.230767] bdbm: +[290103.230768] bdbm: [7] Utilization (W) +[290103.230769] bdbm: 15976 16005 16028 16038 16051 16056 16058 16060 +[290103.230770] bdbm: 16066 16069 16073 16075 16074 16070 16072 16072 +[290103.230771] bdbm: 16072 16070 16068 16067 16067 16065 16061 16059 +[290103.230772] bdbm: 16057 16055 16052 16051 16050 16045 16042 16039 +[290103.230774] bdbm: 16038 16034 16031 16030 16027 16024 16021 16019 +[290103.230775] bdbm: 16017 16015 16012 16010 16007 16005 16004 16002 +[290103.230776] bdbm: 16001 15998 15993 15992 15989 15988 15986 15982 +[290103.230777] bdbm: 15981 15977 15975 15975 15974 15971 15967 15967 +[290103.230778] bdbm: 15966 15965 15963 15961 15956 15955 15953 15949 +[290103.230779] bdbm: 15948 15946 15945 15942 15941 15937 15936 15932 +[290103.230780] bdbm: 15930 15928 15922 15922 15920 15918 15916 15915 +[290103.230781] bdbm: 15915 15914 15914 15912 15908 15904 15901 15901 +[290103.230783] bdbm: 15899 15896 15893 15889 15886 15885 15884 15880 +[290103.230784] bdbm: 15878 15878 15877 15873 15870 15869 15868 15867 +[290103.230785] bdbm: 15865 15864 15862 15860 15858 15856 15853 15853 +[290103.230786] bdbm: 15852 15851 15850 15849 15846 15842 15840 15838 +[290103.230786] bdbm: [8] NVM I/Os +[290103.230787] bdbm: #_of_nvm_total_accesses: 13573664 +[290103.230788] bdbm: #_of_nvm_total_write_requests: 9243506 +[290103.230788] bdbm: #_of_nvm_total_read_requests: 4330158 +[290103.230788] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9243506 +[290103.230789] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1677137 +[290103.230789] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 4222872 +[290103.230790] bdbm: #_of_nvm_evict_from_nvm: 6435627 +[290103.230790] bdbm: #_of_nvm_write_amplification: 6435627 : 8478968 +[290103.230791] bdbm: +[290103.230791] bdbm: ----------------------------------------------- +[290103.230792] bdbm: ----------------------------------------------- +[290103.381174] bdbm: done +[290103.381177] bdbm: [dm_ramdrive_close] closed! +[290103.771617] bdbm: [bdbm_drv_main] bdbm_drv is closed +[290103.771620] bdbm: [bdbm_drv_main] bdbm_drv is removed +[290103.791281] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[290103.812192] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[290103.815925] bdbm: ===================================================================== +[290103.815927] bdbm: DEVICE PARAMETERS +[290103.815928] bdbm: ===================================================================== +[290103.815928] bdbm: # of channels = 8 +[290103.815929] bdbm: # of chips per channel = 16 +[290103.815929] bdbm: # of blocks per chip = 256 +[290103.815930] bdbm: # of pages per block = 128 +[290103.815930] bdbm: # of subpages per page = 1 +[290103.815931] bdbm: page main size = 4096 bytes +[290103.815932] bdbm: page oob size = 64 bytes +[290103.815932] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[290103.815933] bdbm: +[290103.815933] bdbm: ===================================================================== +[290103.815934] bdbm: RAM DISK INFO +[290103.815934] bdbm: ===================================================================== +[290103.815935] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[290105.366910] bdbm: ramssd addr = ffffc90050001000 +[290105.366912] bdbm: +[290105.366912] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[290106.929416] bdbm: *** building ptr_ramssd_data done +[290106.929607] bdbm: [dm_ramdrive_probe] probe done! +[290106.929622] bdbm: [dm_ramdrive_open] open done! +[290107.027927] bdbm: nvm cache addr = ffffc90870003000 +[290107.030285] bdbm: ========================================================== +[290107.030287] bdbm: NVM CONFIGURATION +[290107.030287] bdbm: ========================================================== +[290107.030288] bdbm: total size = 1073741824, nr_nvm_pages = 262144, nvm_page_size = 4096 +[290107.187150] bdbm: TRIM is disabled +[290107.187307] bdbm: ===================================================================== +[290107.187308] bdbm: DEVICE PARAMETERS +[290107.187309] bdbm: ===================================================================== +[290107.187309] bdbm: # of channels = 8 +[290107.187310] bdbm: # of chips per channel = 16 +[290107.187310] bdbm: # of blocks per chip = 256 +[290107.187311] bdbm: # of pages per block = 128 +[290107.187311] bdbm: # of subpages per page = 1 +[290107.187312] bdbm: page main size = 4096 bytes +[290107.187312] bdbm: page oob size = 64 bytes +[290107.187313] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[290107.187313] bdbm: +[290107.187314] bdbm: ===================================================================== +[290107.187315] bdbm: FTL CONFIGURATION +[290107.187315] bdbm: ===================================================================== +[290107.187316] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[290107.187316] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[290107.187317] bdbm: wl policy = 1 (1: none, 2: swap) +[290107.187317] bdbm: trim mode = 2 (1: enable, 2: disable) +[290107.187318] bdbm: kernel sector = 512 bytes +[290107.187318] bdbm: +[290107.187320] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[290107.205886] bdbm: llm_make_req: 0, 1 +[290123.204357] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[290123.204359] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard diff --git a/result/fio.ton_n1g.rslt b/result/fio.ton_n1g.rslt new file mode 100644 index 0000000..64c6180 --- /dev/null +++ b/result/fio.ton_n1g.rslt @@ -0,0 +1,44 @@ +JESD219: (g=0): rw=randrw, bs=512-64K/512-64K/512-64K, ioengine=libaio, iodepth=256 +... +fio-2.14-20-gd6192-dirty +Starting 4 processes +JESD219: Laying out IO file(s) (1 file(s) / 10240MB) + +JESD219: (groupid=0, jobs=4): err= 0: pid=20275: Wed Nov 2 23:23:58 2016 + read : io=16389MB, bw=3736.8KB/s, iops=489, runt=4491157msec + slat (usec): min=5, max=2006.6K, avg=3231.51, stdev=21279.45 + clat (msec): min=1, max=3786, avg=832.33, stdev=379.75 + lat (msec): min=2, max=3787, avg=835.57, stdev=380.42 + clat percentiles (msec): + | 1.00th=[ 371], 5.00th=[ 433], 10.00th=[ 482], 20.00th=[ 562], + | 30.00th=[ 627], 40.00th=[ 685], 50.00th=[ 750], 60.00th=[ 816], + | 70.00th=[ 906], 80.00th=[ 1012], 90.00th=[ 1221], 95.00th=[ 1549], + | 99.00th=[ 2409], 99.50th=[ 2573], 99.90th=[ 2900], 99.95th=[ 2999], + | 99.99th=[ 3326] + write: io=24571MB, bw=5602.3KB/s, iops=734, runt=4491157msec + slat (usec): min=5, max=2198.6K, avg=3276.42, stdev=23468.95 + clat (usec): min=3, max=3777.3K, avg=831293.88, stdev=379759.08 + lat (usec): min=573, max=3791.8K, avg=834571.01, stdev=380533.69 + clat percentiles (msec): + | 1.00th=[ 371], 5.00th=[ 429], 10.00th=[ 482], 20.00th=[ 562], + | 30.00th=[ 619], 40.00th=[ 685], 50.00th=[ 750], 60.00th=[ 816], + | 70.00th=[ 906], 80.00th=[ 1012], 90.00th=[ 1221], 95.00th=[ 1549], + | 99.00th=[ 2409], 99.50th=[ 2573], 99.90th=[ 2900], 99.95th=[ 2999], + | 99.99th=[ 3326] + lat (usec) : 4=0.01%, 10=0.01%, 750=0.01%, 1000=0.01% + lat (msec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01% + lat (msec) : 100=0.01%, 250=0.02%, 500=12.13%, 750=38.21%, 1000=28.53% + lat (msec) : 2000=18.44%, >=2000=2.66% + cpu : usr=0.10%, sys=47.35%, ctx=5205986, majf=0, minf=41 + IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% + submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% + complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1% + issued : total=r=2197775/w=3297011/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 + latency : target=0, window=0, percentile=100.00%, depth=256 + +Run status group 0 (all jobs): + READ: io=16389MB, aggrb=3736KB/s, minb=3736KB/s, maxb=3736KB/s, mint=4491157msec, maxt=4491157msec + WRITE: io=24571MB, aggrb=5602KB/s, minb=5602KB/s, maxb=5602KB/s, mint=4491157msec, maxt=4491157msec + +Disk stats (read/write): + robusta: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00% diff --git a/result/fio.ton_n2g.dmesg b/result/fio.ton_n2g.dmesg new file mode 100644 index 0000000..4b9154e --- /dev/null +++ b/result/fio.ton_n2g.dmesg @@ -0,0 +1,1843 @@ +[250040.050587] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[250162.943822] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[250162.970031] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[250162.975804] bdbm: ===================================================================== +[250162.975806] bdbm: DEVICE PARAMETERS +[250162.975807] bdbm: ===================================================================== +[250162.975808] bdbm: # of channels = 8 +[250162.975809] bdbm: # of chips per channel = 16 +[250162.975810] bdbm: # of blocks per chip = 256 +[250162.975810] bdbm: # of pages per block = 128 +[250162.975811] bdbm: # of subpages per page = 1 +[250162.975812] bdbm: page main size = 4096 bytes +[250162.975813] bdbm: page oob size = 64 bytes +[250162.975814] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[250162.975815] bdbm: +[250162.975816] bdbm: ===================================================================== +[250162.975817] bdbm: RAM DISK INFO +[250162.975818] bdbm: ===================================================================== +[250162.975819] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[250164.546034] bdbm: ramssd addr = ffffc90050001000 +[250164.546036] bdbm: +[250164.546037] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[250166.093908] bdbm: *** building ptr_ramssd_data done +[250166.094055] bdbm: [dm_ramdrive_probe] probe done! +[250166.094056] bdbm: [dm_ramdrive_open] open done! +[250166.221207] bdbm: nvm cache addr = ffffc90870003000 +[250166.224810] bdbm: ========================================================== +[250166.224813] bdbm: NVM CONFIGURATION +[250166.224813] bdbm: ========================================================== +[250166.224814] bdbm: total size = 1073741824, nr_nvm_pages = 262144, nvm_page_size = 4096 +[250166.379469] bdbm: TRIM is disabled +[250166.379653] bdbm: ===================================================================== +[250166.379654] bdbm: DEVICE PARAMETERS +[250166.379654] bdbm: ===================================================================== +[250166.379655] bdbm: # of channels = 8 +[250166.379656] bdbm: # of chips per channel = 16 +[250166.379656] bdbm: # of blocks per chip = 256 +[250166.379657] bdbm: # of pages per block = 128 +[250166.379657] bdbm: # of subpages per page = 1 +[250166.379658] bdbm: page main size = 4096 bytes +[250166.379658] bdbm: page oob size = 64 bytes +[250166.379659] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[250166.379659] bdbm: +[250166.379660] bdbm: ===================================================================== +[250166.379660] bdbm: FTL CONFIGURATION +[250166.379661] bdbm: ===================================================================== +[250166.379661] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[250166.379662] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[250166.379663] bdbm: wl policy = 1 (1: none, 2: swap) +[250166.379663] bdbm: trim mode = 2 (1: enable, 2: disable) +[250166.379664] bdbm: kernel sector = 512 bytes +[250166.379664] bdbm: +[250166.379665] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[250166.397653] bdbm: llm_make_req: 0, 1 +[250182.253944] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[250182.253946] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[250300.204276] bdbm: nvm: total access = 100000, total read = 42, read hit = 14, total_write = 99957, write hit = 99957, hit = 33880, evict = 0 +[250345.475603] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 33941, evict = 0 +[250391.792336] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 33993, evict = 3834 +[250412.537128] bdbm: llm_make_req: 50000, 2 +[250436.059243] bdbm: llm_make_req: 100000, 2 +[250437.785729] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 33998, evict = 103829 +[250458.451574] bdbm: llm_make_req: 150000, 2 +[250480.866962] bdbm: llm_make_req: 200000, 2 +[250482.636888] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 34002, evict = 203825 +[250506.559436] bdbm: llm_make_req: 250000, 1 +[250534.470156] bdbm: llm_make_req: 300000, 2 +[250536.179056] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 34003, evict = 303824 +[250556.753326] bdbm: llm_make_req: 350000, 2 +[250579.843673] bdbm: llm_make_req: 400000, 2 +[250581.563857] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 34003, evict = 403824 +[250602.161282] bdbm: llm_make_req: 450000, 2 +[250624.453157] bdbm: llm_make_req: 500000, 2 +[250626.176183] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 34003, evict = 503824 +[250648.984772] bdbm: llm_make_req: 550000, 2 +[250677.252332] bdbm: llm_make_req: 600000, 1 +[250679.471740] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 34003, evict = 603824 +[250702.968582] bdbm: llm_make_req: 650000, 2 +[250725.276328] bdbm: llm_make_req: 700000, 2 +[250726.991142] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 34003, evict = 703824 +[250747.601496] bdbm: llm_make_req: 750000, 2 +[250769.740017] bdbm: llm_make_req: 800000, 2 +[250771.436639] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 34003, evict = 803824 +[250791.824528] bdbm: llm_make_req: 850000, 2 +[250815.483764] bdbm: llm_make_req: 900000, 1 +[250817.713436] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 34003, evict = 903824 +[250844.275351] bdbm: llm_make_req: 950000, 2 +[250866.604238] bdbm: llm_make_req: 1000000, 2 +[250868.304124] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 34003, evict = 1003824 +[250888.779520] bdbm: llm_make_req: 1050000, 2 +[250911.070088] bdbm: llm_make_req: 1100000, 2 +[250912.786509] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 34003, evict = 1103824 +[250935.799150] bdbm: llm_make_req: 1150000, 2 +[250958.177857] bdbm: llm_make_req: 1200000, 2 +[250959.903239] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 34003, evict = 1203824 +[250980.969397] bdbm: llm_make_req: 1250000, 2 +[251005.275206] bdbm: llm_make_req: 1300000, 2 +[251006.991955] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 34003, evict = 1303824 +[251029.085962] bdbm: llm_make_req: 1350000, 2 +[251052.901013] bdbm: llm_make_req: 1400000, 2 +[251054.878664] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 34003, evict = 1403824 +[251077.102003] bdbm: llm_make_req: 1450000, 2 +[251101.601803] bdbm: llm_make_req: 1500000, 2 +[251103.628622] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 34003, evict = 1503824 +[251126.704180] bdbm: llm_make_req: 1550000, 2 +[251150.537979] bdbm: llm_make_req: 1600000, 1 +[251152.352022] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 34003, evict = 1603824 +[251174.208485] bdbm: llm_make_req: 1650000, 1 +[251198.930623] bdbm: llm_make_req: 1700000, 2 +[251200.712942] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 34003, evict = 1703824 +[251222.481704] bdbm: llm_make_req: 1750000, 1 +[251246.263540] bdbm: llm_make_req: 1800000, 2 +[251248.249030] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 34003, evict = 1803824 +[251270.542601] bdbm: llm_make_req: 1850000, 1 +[251295.258651] bdbm: llm_make_req: 1900000, 2 +[251297.100388] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 34003, evict = 1903824 +[251320.389873] bdbm: llm_make_req: 1950000, 1 +[251344.895283] bdbm: llm_make_req: 2000000, 1 +[251346.889888] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 34003, evict = 2003824 +[251370.413871] bdbm: llm_make_req: 2050000, 1 +[251395.958165] bdbm: llm_make_req: 2100000, 2 +[251397.934635] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 34003, evict = 2103824 +[251419.978830] bdbm: llm_make_req: 2150000, 2 +[251444.012874] bdbm: llm_make_req: 2200000, 2 +[251445.955613] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 34003, evict = 2203824 +[251468.155591] bdbm: llm_make_req: 2250000, 1 +[251493.300149] bdbm: llm_make_req: 2300000, 1 +[251495.111344] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 34003, evict = 2303824 +[251517.555939] bdbm: llm_make_req: 2350000, 2 +[251541.496248] bdbm: llm_make_req: 2400000, 2 +[251543.192737] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 34003, evict = 2403824 +[251565.560210] bdbm: llm_make_req: 2450000, 2 +[251590.518628] bdbm: llm_make_req: 2500000, 1 +[251591.019725] bdbm: nvm: total access = 2800000, total read = 20505, read hit = 1214, total_write = 2779494, write hit = 2779494, hit = 36842, evict = 2481722 +[251615.635780] bdbm: llm_make_req: 2550000, 1 +[251635.178590] bdbm: nvm: total access = 2900000, total read = 60948, read hit = 6544, total_write = 2839051, write hit = 2839051, hit = 50205, evict = 2533246 +[251641.667953] bdbm: llm_make_req: 2600000, 2 +[251669.449085] bdbm: llm_make_req: 2650000, 2 +[251678.169017] bdbm: nvm: total access = 3000000, total read = 100976, read hit = 15576, total_write = 2899023, write hit = 2899023, hit = 72891, evict = 2579564 +[251698.906649] bdbm: llm_make_req: 2700000, 1 +[251720.329396] bdbm: nvm: total access = 3100000, total read = 141018, read hit = 27497, total_write = 2958981, write hit = 2958981, hit = 103015, evict = 2621319 +[251729.965047] bdbm: llm_make_req: 2750000, 1 +[251761.144414] bdbm: nvm: total access = 3200000, total read = 180966, read hit = 41891, total_write = 3019033, write hit = 3019033, hit = 138909, evict = 2659871 +[251761.842635] bdbm: llm_make_req: 2800000, 14 +[251794.684088] bdbm: llm_make_req: 2850000, 6 +[251800.044874] bdbm: nvm: total access = 3300000, total read = 221806, read hit = 58429, total_write = 3078193, write hit = 3078193, hit = 180056, evict = 2694422 +[251828.880021] bdbm: llm_make_req: 2900000, 16 +[251837.792708] bdbm: nvm: total access = 3400000, total read = 261622, read hit = 76401, total_write = 3138377, write hit = 3138377, hit = 224596, evict = 2728038 +[251862.298596] bdbm: llm_make_req: 2950000, 1 +[251875.804857] bdbm: nvm: total access = 3500000, total read = 301015, read hit = 92959, total_write = 3198984, write hit = 3198984, hit = 267400, evict = 2762399 +[251895.212859] bdbm: llm_make_req: 3000000, 1 +[251914.339450] bdbm: nvm: total access = 3600000, total read = 341315, read hit = 109580, total_write = 3258684, write hit = 3258684, hit = 308159, evict = 2797961 +[251927.462954] bdbm: llm_make_req: 3050000, 3 +[251953.268778] bdbm: nvm: total access = 3700000, total read = 381505, read hit = 125470, total_write = 3318494, write hit = 3318494, hit = 347609, evict = 2834211 +[251959.385973] bdbm: llm_make_req: 3100000, 2 +[251990.858479] bdbm: llm_make_req: 3150000, 4 +[251991.860598] bdbm: nvm: total access = 3800000, total read = 421450, read hit = 141028, total_write = 3378549, write hit = 3378549, hit = 386237, evict = 2871196 +[252022.361470] bdbm: llm_make_req: 3200000, 2 +[252030.667013] bdbm: nvm: total access = 3900000, total read = 461276, read hit = 156352, total_write = 3438723, write hit = 3438723, hit = 424822, evict = 2908109 +[252053.870682] bdbm: llm_make_req: 3250000, 1 +[252069.545428] bdbm: nvm: total access = 4000000, total read = 501721, read hit = 171735, total_write = 3498278, write hit = 3498278, hit = 462932, evict = 2944937 +[252085.574414] bdbm: llm_make_req: 3300000, 1 +[252108.297039] bdbm: nvm: total access = 4100000, total read = 541725, read hit = 187722, total_write = 3558274, write hit = 3558274, hit = 502639, evict = 2981213 +[252117.558643] bdbm: llm_make_req: 3350000, 1 +[252146.441722] bdbm: nvm: total access = 4200000, total read = 582097, read hit = 203887, total_write = 3617902, write hit = 3617902, hit = 542563, evict = 3017082 +[252149.450142] bdbm: llm_make_req: 3400000, 1 +[252181.249100] bdbm: llm_make_req: 3450000, 13 +[252184.434662] bdbm: nvm: total access = 4300000, total read = 622361, read hit = 220282, total_write = 3677638, write hit = 3677638, hit = 582750, evict = 3053026 +[252212.881063] bdbm: llm_make_req: 3500000, 1 +[252222.904129] bdbm: nvm: total access = 4400000, total read = 661439, read hit = 235666, total_write = 3738560, write hit = 3738560, hit = 622333, evict = 3089749 +[252244.870231] bdbm: llm_make_req: 3550000, 5 +[252260.856028] bdbm: nvm: total access = 4500000, total read = 701667, read hit = 251855, total_write = 3798332, write hit = 3798332, hit = 662397, evict = 3125646 +[252276.481538] bdbm: llm_make_req: 3600000, 5 +[252298.972657] bdbm: nvm: total access = 4600000, total read = 742128, read hit = 268155, total_write = 3857871, write hit = 3857871, hit = 702312, evict = 3161570 +[252308.296689] bdbm: llm_make_req: 3650000, 5 +[252337.671658] bdbm: nvm: total access = 4700000, total read = 781651, read hit = 283725, total_write = 3918348, write hit = 3918348, hit = 741833, evict = 3198096 +[252340.105635] bdbm: llm_make_req: 3700000, 1 +[252371.366666] bdbm: llm_make_req: 3750000, 1 +[252375.825091] bdbm: nvm: total access = 4800000, total read = 821952, read hit = 299342, total_write = 3978047, write hit = 3978047, hit = 780730, evict = 3234515 +[252403.205662] bdbm: llm_make_req: 3800000, 21 +[252414.291448] bdbm: nvm: total access = 4900000, total read = 861874, read hit = 315238, total_write = 4038125, write hit = 4038125, hit = 820117, evict = 3271102 +[252434.543085] bdbm: llm_make_req: 3850000, 7 +[252452.378803] bdbm: nvm: total access = 5000000, total read = 901986, read hit = 330985, total_write = 4098013, write hit = 4098013, hit = 859479, evict = 3307375 +[252466.137472] bdbm: llm_make_req: 3900000, 1 +[252490.748414] bdbm: nvm: total access = 5100000, total read = 942035, read hit = 346734, total_write = 4157964, write hit = 4157964, hit = 898735, evict = 3343819 +[252497.586878] bdbm: llm_make_req: 3950000, 2 +[252529.287763] bdbm: nvm: total access = 5200000, total read = 982016, read hit = 362508, total_write = 4217983, write hit = 4217983, hit = 938167, evict = 3380180 +[252529.474693] bdbm: llm_make_req: 4000000, 4 +[252561.389192] bdbm: llm_make_req: 4050000, 2 +[252567.572759] bdbm: nvm: total access = 5300000, total read = 1022436, read hit = 378308, total_write = 4277563, write hit = 4277563, hit = 978195, evict = 3415532 +[252593.090999] bdbm: llm_make_req: 4100000, 23 +[252605.892509] bdbm: nvm: total access = 5400000, total read = 1062879, read hit = 394211, total_write = 4337120, write hit = 4337120, hit = 1017571, evict = 3451616 +[252624.810186] bdbm: llm_make_req: 4150000, 19 +[252644.219452] bdbm: nvm: total access = 5500000, total read = 1102697, read hit = 409974, total_write = 4397302, write hit = 4397302, hit = 1056941, evict = 3488191 +[252656.405836] bdbm: llm_make_req: 4200000, 1 +[252683.052246] bdbm: nvm: total access = 5600000, total read = 1142602, read hit = 425622, total_write = 4457397, write hit = 4457397, hit = 1096010, evict = 3524865 +[252688.177392] bdbm: llm_make_req: 4250000, 2 +[252719.530971] bdbm: llm_make_req: 4300000, 2 +[252721.218275] bdbm: nvm: total access = 5700000, total read = 1182536, read hit = 441147, total_write = 4517463, write hit = 4517463, hit = 1135055, evict = 3561411 +[252751.322201] bdbm: llm_make_req: 4350000, 2 +[252759.793963] bdbm: nvm: total access = 5800000, total read = 1223021, read hit = 457022, total_write = 4576978, write hit = 4576978, hit = 1174434, evict = 3597422 +[252782.899960] bdbm: llm_make_req: 4400000, 14 +[252798.556580] bdbm: nvm: total access = 5900000, total read = 1263610, read hit = 473111, total_write = 4636389, write hit = 4636389, hit = 1213557, evict = 3633799 +[252814.888402] bdbm: llm_make_req: 4450000, 1 +[252836.858673] bdbm: nvm: total access = 6000000, total read = 1303765, read hit = 489097, total_write = 4696234, write hit = 4696234, hit = 1253068, evict = 3670119 +[252846.392242] bdbm: llm_make_req: 4500000, 1 +[252875.379648] bdbm: nvm: total access = 6100000, total read = 1343560, read hit = 504642, total_write = 4756439, write hit = 4756439, hit = 1291924, evict = 3707013 +[252877.910405] bdbm: llm_make_req: 4550000, 2 +[252909.817175] bdbm: llm_make_req: 4600000, 1 +[252913.991045] bdbm: nvm: total access = 6200000, total read = 1383653, read hit = 520303, total_write = 4816346, write hit = 4816346, hit = 1331253, evict = 3743252 +[252941.494456] bdbm: llm_make_req: 4650000, 9 +[252952.422209] bdbm: nvm: total access = 6300000, total read = 1423572, read hit = 536267, total_write = 4876427, write hit = 4876427, hit = 1370863, evict = 3779687 +[252973.489342] bdbm: llm_make_req: 4700000, 1 +[252990.901079] bdbm: nvm: total access = 6400000, total read = 1463663, read hit = 551900, total_write = 4936336, write hit = 4936336, hit = 1410370, evict = 3815722 +[253005.236226] bdbm: llm_make_req: 4750000, 2 +[253029.127658] bdbm: nvm: total access = 6500000, total read = 1504018, read hit = 568106, total_write = 4995981, write hit = 4995981, hit = 1449923, evict = 3852020 +[253036.785371] bdbm: llm_make_req: 4800000, 1 +[253067.657615] bdbm: nvm: total access = 6600000, total read = 1543440, read hit = 583860, total_write = 5056559, write hit = 5056559, hit = 1489242, evict = 3889033 +[253068.530507] bdbm: llm_make_req: 4850000, 1 +[253100.308836] bdbm: llm_make_req: 4900000, 2 +[253106.150998] bdbm: nvm: total access = 6700000, total read = 1583786, read hit = 599638, total_write = 5116213, write hit = 5116213, hit = 1528491, evict = 3925216 +[253132.018247] bdbm: llm_make_req: 4950000, 2 +[253144.693147] bdbm: nvm: total access = 6800000, total read = 1623504, read hit = 615160, total_write = 5176495, write hit = 5176495, hit = 1567878, evict = 3961633 +[253163.597604] bdbm: llm_make_req: 5000000, 4 +[253183.215167] bdbm: nvm: total access = 6900000, total read = 1663607, read hit = 630770, total_write = 5236392, write hit = 5236392, hit = 1607112, evict = 3997906 +[253195.435159] bdbm: llm_make_req: 5050000, 1 +[253221.863311] bdbm: nvm: total access = 7000000, total read = 1703745, read hit = 646338, total_write = 5296254, write hit = 5296254, hit = 1646166, evict = 4034282 +[253227.131372] bdbm: llm_make_req: 5100000, 10 +[253253.604050] bdbm: llm_make_req: 5150000, 96 +[253263.208481] bdbm: nvm: total access = 7100000, total read = 1743609, read hit = 661972, total_write = 5356390, write hit = 5356390, hit = 1685599, evict = 4070619 +[253267.481674] bdbm: llm_make_req: 5200000, 1 +[253288.499487] bdbm: llm_make_req: 5250000, 2 +[253304.531040] bdbm: nvm: total access = 7200000, total read = 1782942, read hit = 677441, total_write = 5417057, write hit = 5417057, hit = 1724893, evict = 4107461 +[253308.035852] bdbm: llm_make_req: 5300000, 1 +[253331.690473] bdbm: llm_make_req: 5350000, 96 +[253346.671841] bdbm: nvm: total access = 7300000, total read = 1822321, read hit = 692937, total_write = 5477678, write hit = 5477678, hit = 1764491, evict = 4143980 +[253354.560094] bdbm: llm_make_req: 5400000, 2 +[253374.555256] bdbm: llm_make_req: 5450000, 2 +[253387.962301] bdbm: nvm: total access = 7400000, total read = 1862173, read hit = 708998, total_write = 5537826, write hit = 5537826, hit = 1804503, evict = 4180177 +[253395.314488] bdbm: llm_make_req: 5500000, 96 +[253417.388343] bdbm: llm_make_req: 5550000, 11 +[253430.581842] bdbm: nvm: total access = 7500000, total read = 1901942, read hit = 725138, total_write = 5598057, write hit = 5598057, hit = 1844502, evict = 4216549 +[253435.092835] bdbm: llm_make_req: 5600000, 1 +[253454.747109] bdbm: llm_make_req: 5650000, 1 +[253472.069630] bdbm: nvm: total access = 7600000, total read = 1941993, read hit = 740717, total_write = 5658006, write hit = 5658006, hit = 1883725, evict = 4252854 +[253478.006806] bdbm: llm_make_req: 5700000, 96 +[253495.849173] bdbm: llm_make_req: 5750000, 1 +[253513.216092] bdbm: llm_make_req: 5800000, 11 +[253514.753856] bdbm: nvm: total access = 7700000, total read = 1981408, read hit = 756023, total_write = 5718591, write hit = 5718591, hit = 1922551, evict = 4289919 +[253534.955015] bdbm: llm_make_req: 5850000, 96 +[253553.755813] bdbm: llm_make_req: 5900000, 4 +[253556.576501] bdbm: nvm: total access = 7800000, total read = 2021266, read hit = 771579, total_write = 5778733, write hit = 5778733, hit = 1961749, evict = 4326419 +[253570.554583] bdbm: llm_make_req: 5950000, 18 +[253590.913626] bdbm: llm_make_req: 6000000, 96 +[253599.539683] bdbm: nvm: total access = 7900000, total read = 2061599, read hit = 787387, total_write = 5838400, write hit = 5838400, hit = 2000956, evict = 4362687 +[253607.987107] bdbm: llm_make_req: 6050000, 1 +[253622.097086] bdbm: llm_make_req: 6100000, 96 +[253642.449384] bdbm: llm_make_req: 6150000, 96 +[253644.051838] bdbm: nvm: total access = 8000000, total read = 2101742, read hit = 803172, total_write = 5898257, write hit = 5898257, hit = 2040385, evict = 4398900 +[253660.541826] bdbm: llm_make_req: 6200000, 1 +[253674.862923] bdbm: llm_make_req: 6250000, 1 +[253687.325184] bdbm: nvm: total access = 8100000, total read = 2141642, read hit = 818963, total_write = 5958357, write hit = 5958357, hit = 2079744, evict = 4435432 +[253694.936578] bdbm: llm_make_req: 6300000, 96 +[253710.584132] bdbm: llm_make_req: 6350000, 25 +[253724.831060] bdbm: llm_make_req: 6400000, 96 +[253730.980517] bdbm: nvm: total access = 8200000, total read = 2181715, read hit = 834543, total_write = 6018284, write hit = 6018284, hit = 2118773, evict = 4471910 +[253743.351589] bdbm: llm_make_req: 6450000, 96 +[253758.952050] bdbm: llm_make_req: 6500000, 16 +[253772.778058] bdbm: llm_make_req: 6550000, 96 +[253775.957190] bdbm: nvm: total access = 8300000, total read = 2221599, read hit = 850453, total_write = 6078400, write hit = 6078400, hit = 2158145, evict = 4508564 +[253789.939507] bdbm: llm_make_req: 6600000, 96 +[253801.462876] bdbm: llm_make_req: 6650000, 4 +[253816.153835] bdbm: llm_make_req: 6700000, 96 +[253821.085302] bdbm: nvm: total access = 8400000, total read = 2260798, read hit = 866129, total_write = 6139201, write hit = 6139201, hit = 2197261, evict = 4545925 +[253832.435880] bdbm: llm_make_req: 6750000, 96 +[253843.264854] bdbm: llm_make_req: 6800000, 4 +[253858.845372] bdbm: llm_make_req: 6850000, 96 +[253867.872765] bdbm: nvm: total access = 8500000, total read = 2301485, read hit = 882112, total_write = 6198514, write hit = 6198514, hit = 2236716, evict = 4581766 +[253873.318515] bdbm: llm_make_req: 6900000, 2 +[253884.489955] bdbm: llm_make_req: 6950000, 96 +[253900.259740] bdbm: llm_make_req: 7000000, 96 +[253910.690081] bdbm: llm_make_req: 7050000, 1 +[253913.426603] bdbm: nvm: total access = 8600000, total read = 2341875, read hit = 897763, total_write = 6258124, write hit = 6258124, hit = 2276090, evict = 4617653 +[253924.631323] bdbm: llm_make_req: 7100000, 96 +[253938.731166] bdbm: llm_make_req: 7150000, 1 +[253947.661005] bdbm: llm_make_req: 7200000, 96 +[253961.293130] bdbm: nvm: total access = 8700000, total read = 2381257, read hit = 912997, total_write = 6318742, write hit = 6318742, hit = 2315477, evict = 4654118 +[253962.250823] bdbm: llm_make_req: 7250000, 96 +[253973.840811] bdbm: llm_make_req: 7300000, 1 +[253985.147060] bdbm: llm_make_req: 7350000, 95 +[253998.853671] bdbm: llm_make_req: 7400000, 96 +[254006.957974] bdbm: llm_make_req: 7450000, 96 +[254010.542364] bdbm: nvm: total access = 8800000, total read = 2421616, read hit = 929009, total_write = 6378383, write hit = 6378383, hit = 2355044, evict = 4690204 +[254020.887170] bdbm: llm_make_req: 7500000, 96 +[254031.487964] bdbm: llm_make_req: 7550000, 12 +[254042.145558] bdbm: llm_make_req: 7600000, 96 +[254054.787358] bdbm: llm_make_req: 7650000, 96 +[254060.137384] bdbm: nvm: total access = 8900000, total read = 2461438, read hit = 944633, total_write = 6438561, write hit = 6438561, hit = 2394536, evict = 4726514 +[254062.866358] bdbm: llm_make_req: 7700000, 96 +[254076.039139] bdbm: llm_make_req: 7750000, 96 +[254085.333846] bdbm: llm_make_req: 7800000, 2 +[254096.062015] bdbm: llm_make_req: 7850000, 96 +[254107.774835] bdbm: llm_make_req: 7900000, 96 +[254111.390230] bdbm: nvm: total access = 9000000, total read = 2501200, read hit = 960459, total_write = 6498799, write hit = 6498799, hit = 2434095, evict = 4763019 +[254115.128537] bdbm: llm_make_req: 7950000, 95 +[254127.813746] bdbm: llm_make_req: 8000000, 96 +[254136.898881] bdbm: llm_make_req: 8050000, 1 +[254147.659074] bdbm: llm_make_req: 8100000, 96 +[254159.335744] bdbm: llm_make_req: 8150000, 96 +[254163.375607] bdbm: nvm: total access = 9100000, total read = 2540992, read hit = 975921, total_write = 6559007, write hit = 6559007, hit = 2472976, evict = 4799808 +[254167.165842] bdbm: llm_make_req: 8200000, 96 +[254179.700946] bdbm: llm_make_req: 8250000, 96 +[254188.292794] bdbm: llm_make_req: 8300000, 2 +[254199.300352] bdbm: llm_make_req: 8350000, 95 +[254210.958168] bdbm: llm_make_req: 8400000, 96 +[254215.057561] bdbm: nvm: total access = 9200000, total read = 2580801, read hit = 991674, total_write = 6619198, write hit = 6619198, hit = 2512464, evict = 4836264 +[254218.843979] bdbm: llm_make_req: 8450000, 96 +[254230.980261] bdbm: llm_make_req: 8500000, 96 +[254239.311683] bdbm: llm_make_req: 8550000, 1 +[254251.191558] bdbm: llm_make_req: 8600000, 96 +[254262.472714] bdbm: llm_make_req: 8650000, 1 +[254266.607306] bdbm: nvm: total access = 9300000, total read = 2620405, read hit = 1007241, total_write = 6679594, write hit = 6679594, hit = 2551904, evict = 4872787 +[254270.381464] bdbm: llm_make_req: 8700000, 96 +[254282.997777] bdbm: llm_make_req: 8750000, 96 +[254291.266007] bdbm: llm_make_req: 8800000, 2 +[254303.649254] bdbm: llm_make_req: 8850000, 96 +[254315.001417] bdbm: llm_make_req: 8900000, 1 +[254318.313937] bdbm: nvm: total access = 9400000, total read = 2660413, read hit = 1023261, total_write = 6739586, write hit = 6739586, hit = 2591536, evict = 4909167 +[254323.448184] bdbm: llm_make_req: 8950000, 95 +[254335.894699] bdbm: llm_make_req: 9000000, 96 +[254343.737272] bdbm: llm_make_req: 9050000, 2 +[254356.563892] bdbm: llm_make_req: 9100000, 96 +[254367.372996] bdbm: llm_make_req: 9150000, 15 +[254368.630697] bdbm: nvm: total access = 9500000, total read = 2700744, read hit = 1038957, total_write = 6799255, write hit = 6799255, hit = 2630944, evict = 4945124 +[254376.662721] bdbm: llm_make_req: 9200000, 96 +[254388.993760] bdbm: llm_make_req: 9250000, 96 +[254396.591271] bdbm: llm_make_req: 9300000, 96 +[254409.760530] bdbm: llm_make_req: 9350000, 96 +[254419.981411] bdbm: nvm: total access = 9600000, total read = 2741056, read hit = 1055295, total_write = 6858943, write hit = 6858943, hit = 2670804, evict = 4981290 +[254420.285009] bdbm: llm_make_req: 9400000, 1 +[254429.980307] bdbm: llm_make_req: 9450000, 96 +[254442.507395] bdbm: llm_make_req: 9500000, 96 +[254450.125065] bdbm: llm_make_req: 9550000, 96 +[254463.253512] bdbm: llm_make_req: 9600000, 96 +[254471.794184] bdbm: nvm: total access = 9700000, total read = 2781771, read hit = 1071260, total_write = 6918228, write hit = 6918228, hit = 2709927, evict = 5017417 +[254473.057644] bdbm: llm_make_req: 9650000, 2 +[254483.362642] bdbm: llm_make_req: 9700000, 96 +[254495.711606] bdbm: llm_make_req: 9750000, 96 +[254503.182431] bdbm: llm_make_req: 9800000, 96 +[254516.302749] bdbm: llm_make_req: 9850000, 96 +[254521.721717] bdbm: nvm: total access = 9800000, total read = 2821887, read hit = 1086894, total_write = 6978112, write hit = 6978112, hit = 2748976, evict = 5053886 +[254525.824810] bdbm: llm_make_req: 9900000, 29 +[254536.677586] bdbm: llm_make_req: 9950000, 96 +[254549.300077] bdbm: llm_make_req: 10000000, 96 +[254557.342746] bdbm: llm_make_req: 10050000, 96 +[254570.753142] bdbm: nvm: total access = 9900000, total read = 2861872, read hit = 1102741, total_write = 7038127, write hit = 7038127, hit = 2788222, evict = 5090502 +[254573.696156] bdbm: llm_make_req: 10100000, 96 +[254593.914042] bdbm: llm_make_req: 10150000, 96 +[254609.958941] bdbm: llm_make_req: 10200000, 1 +[254613.653615] bdbm: nvm: total access = 10000000, total read = 2901620, read hit = 1118330, total_write = 7098379, write hit = 7098379, hit = 2827405, evict = 5127160 +[254629.852767] bdbm: llm_make_req: 10250000, 2 +[254654.738458] bdbm: llm_make_req: 10300000, 96 +[254655.303098] bdbm: nvm: total access = 10100000, total read = 2942017, read hit = 1134458, total_write = 7157982, write hit = 7157982, hit = 2866707, evict = 5163589 +[254678.608790] bdbm: llm_make_req: 10350000, 2 +[254695.604572] bdbm: nvm: total access = 10200000, total read = 2981590, read hit = 1149706, total_write = 7218409, write hit = 7218409, hit = 2905471, evict = 5200500 +[254702.196883] bdbm: llm_make_req: 10400000, 6 +[254725.861019] bdbm: llm_make_req: 10450000, 16 +[254736.575534] bdbm: nvm: total access = 10300000, total read = 3021441, read hit = 1165352, total_write = 7278558, write hit = 7278558, hit = 2944456, evict = 5237310 +[254751.874110] bdbm: llm_make_req: 10500000, 96 +[254775.750516] bdbm: llm_make_req: 10550000, 2 +[254777.391619] bdbm: nvm: total access = 10400000, total read = 3061327, read hit = 1180938, total_write = 7338672, write hit = 7338672, hit = 2983796, evict = 5273670 +[254797.902843] bdbm: llm_make_req: 10600000, 3 +[254818.226083] bdbm: nvm: total access = 10500000, total read = 3101871, read hit = 1196949, total_write = 7398128, write hit = 7398128, hit = 3023321, evict = 5309612 +[254819.774334] bdbm: llm_make_req: 10650000, 96 +[254845.766737] bdbm: llm_make_req: 10700000, 1 +[254860.429166] bdbm: nvm: total access = 10600000, total read = 3142114, read hit = 1212523, total_write = 7457885, write hit = 7457885, hit = 3061841, evict = 5346423 +[254867.534127] bdbm: llm_make_req: 10750000, 1 +[254889.878583] bdbm: llm_make_req: 10800000, 2 +[254901.182998] bdbm: nvm: total access = 10700000, total read = 3181923, read hit = 1228154, total_write = 7518076, write hit = 7518076, hit = 3101089, evict = 5382997 +[254914.101692] bdbm: llm_make_req: 10850000, 96 +[254939.334352] bdbm: llm_make_req: 10900000, 1 +[254941.920819] bdbm: nvm: total access = 10800000, total read = 3221689, read hit = 1243856, total_write = 7578310, write hit = 7578310, hit = 3140420, evict = 5419602 +[254961.858289] bdbm: llm_make_req: 10950000, 1 +[254982.829589] bdbm: nvm: total access = 10900000, total read = 3261293, read hit = 1259740, total_write = 7638706, write hit = 7638706, hit = 3179854, evict = 5456448 +[254984.765699] bdbm: llm_make_req: 11000000, 1 +[255009.422581] bdbm: llm_make_req: 11050000, 96 +[255023.669997] bdbm: nvm: total access = 11000000, total read = 3300066, read hit = 1274980, total_write = 7699933, write hit = 7699933, hit = 3219709, evict = 5493060 +[255034.645123] bdbm: llm_make_req: 11100000, 1 +[255057.087645] bdbm: llm_make_req: 11150000, 18 +[255064.146942] bdbm: nvm: total access = 11100000, total read = 3339079, read hit = 1290447, total_write = 7760920, write hit = 7760920, hit = 3259515, evict = 5529708 +[255079.141011] bdbm: llm_make_req: 11200000, 5 +[255103.727114] bdbm: llm_make_req: 11250000, 96 +[255105.019420] bdbm: nvm: total access = 11200000, total read = 3379058, read hit = 1306072, total_write = 7820941, write hit = 7820941, hit = 3299024, evict = 5565845 +[255128.018757] bdbm: llm_make_req: 11300000, 17 +[255145.930761] bdbm: nvm: total access = 11300000, total read = 3418642, read hit = 1321543, total_write = 7881357, write hit = 7881357, hit = 3338350, evict = 5602406 +[255149.897141] bdbm: llm_make_req: 11350000, 1 +[255172.349779] bdbm: llm_make_req: 11400000, 2 +[255186.545293] bdbm: nvm: total access = 11400000, total read = 3458805, read hit = 1337422, total_write = 7941194, write hit = 7941194, hit = 3377738, evict = 5638734 +[255198.304585] bdbm: llm_make_req: 11450000, 96 +[255221.553232] bdbm: llm_make_req: 11500000, 1 +[255227.401288] bdbm: nvm: total access = 11500000, total read = 3499503, read hit = 1353334, total_write = 8000496, write hit = 8000496, hit = 3417083, evict = 5674603 +[255243.629599] bdbm: llm_make_req: 11550000, 2 +[255266.164140] bdbm: llm_make_req: 11600000, 96 +[255268.339971] bdbm: nvm: total access = 11600000, total read = 3539152, read hit = 1368863, total_write = 8060847, write hit = 8060847, hit = 3455984, evict = 5711582 +[255292.228672] bdbm: llm_make_req: 11650000, 2 +[255309.418461] bdbm: nvm: total access = 11700000, total read = 3579237, read hit = 1384441, total_write = 8120762, write hit = 8120762, hit = 3494512, evict = 5748547 +[255313.853550] bdbm: llm_make_req: 11700000, 1 +[255335.369402] bdbm: llm_make_req: 11750000, 2 +[255350.273526] bdbm: nvm: total access = 11800000, total read = 3619439, read hit = 1399812, total_write = 8180560, write hit = 8180560, hit = 3533337, evict = 5784891 +[255359.636628] bdbm: llm_make_req: 11800000, 95 +[255383.986883] bdbm: llm_make_req: 11850000, 2 +[255391.167527] bdbm: nvm: total access = 11900000, total read = 3659703, read hit = 1415657, total_write = 8240296, write hit = 8240296, hit = 3572523, evict = 5821286 +[255405.706312] bdbm: llm_make_req: 11900000, 11 +[255427.527913] bdbm: llm_make_req: 11950000, 2 +[255431.859447] bdbm: nvm: total access = 12000000, total read = 3699747, read hit = 1431770, total_write = 8300252, write hit = 8300252, hit = 3611999, evict = 5857879 +[255452.756297] bdbm: llm_make_req: 12000000, 96 +[255472.752060] bdbm: nvm: total access = 12100000, total read = 3739588, read hit = 1447415, total_write = 8360411, write hit = 8360411, hit = 3651367, evict = 5894315 +[255476.270956] bdbm: llm_make_req: 12050000, 2 +[255497.439456] bdbm: llm_make_req: 12100000, 2 +[255513.851386] bdbm: nvm: total access = 12200000, total read = 3779884, read hit = 1463160, total_write = 8420115, write hit = 8420115, hit = 3690488, evict = 5930643 +[255518.722195] bdbm: llm_make_req: 12150000, 96 +[255541.701972] bdbm: llm_make_req: 12200000, 5 +[255556.358719] bdbm: nvm: total access = 12300000, total read = 3819943, read hit = 1478760, total_write = 8480056, write hit = 8480056, hit = 3729559, evict = 5967113 +[255559.686262] bdbm: llm_make_req: 12250000, 4 +[255578.974443] bdbm: llm_make_req: 12300000, 96 +[255597.625100] bdbm: nvm: total access = 12400000, total read = 3859402, read hit = 1494357, total_write = 8540597, write hit = 8540597, hit = 3768897, evict = 6003913 +[255602.238587] bdbm: llm_make_req: 12350000, 96 +[255622.135426] bdbm: llm_make_req: 12400000, 3 +[255640.247493] bdbm: nvm: total access = 12500000, total read = 3900012, read hit = 1510349, total_write = 8599987, write hit = 8599987, hit = 3807973, evict = 6040219 +[255640.677585] bdbm: llm_make_req: 12450000, 3 +[255663.569386] bdbm: llm_make_req: 12500000, 96 +[255681.637044] bdbm: nvm: total access = 12600000, total read = 3939805, read hit = 1526079, total_write = 8660194, write hit = 8660194, hit = 3847367, evict = 6076762 +[255684.292214] bdbm: llm_make_req: 12550000, 2 +[255702.359803] bdbm: llm_make_req: 12600000, 31 +[255723.020643] bdbm: llm_make_req: 12650000, 96 +[255724.078582] bdbm: nvm: total access = 12700000, total read = 3979968, read hit = 1541331, total_write = 8720031, write hit = 8720031, hit = 3886054, evict = 6113164 +[255744.342962] bdbm: llm_make_req: 12700000, 1 +[255762.854316] bdbm: llm_make_req: 12750000, 1 +[255765.497943] bdbm: nvm: total access = 12800000, total read = 4020055, read hit = 1556643, total_write = 8779944, write hit = 8779944, hit = 3924838, evict = 6149605 +[255782.446278] bdbm: llm_make_req: 12800000, 96 +[255805.932779] bdbm: llm_make_req: 12850000, 1 +[255808.023734] bdbm: nvm: total access = 12900000, total read = 4060103, read hit = 1572204, total_write = 8839896, write hit = 8839896, hit = 3963946, evict = 6186010 +[255823.697280] bdbm: llm_make_req: 12900000, 1 +[255842.196201] bdbm: llm_make_req: 12950000, 96 +[255849.385547] bdbm: nvm: total access = 13000000, total read = 4100143, read hit = 1587651, total_write = 8899856, write hit = 8899856, hit = 4002936, evict = 6222427 +[255864.626244] bdbm: llm_make_req: 13000000, 96 +[255883.839700] bdbm: llm_make_req: 13050000, 1 +[255892.013412] bdbm: nvm: total access = 13100000, total read = 4139480, read hit = 1602751, total_write = 8960519, write hit = 8960519, hit = 4041723, evict = 6259403 +[255900.735410] bdbm: llm_make_req: 13100000, 1 +[255921.868534] bdbm: llm_make_req: 13150000, 96 +[255935.007610] bdbm: nvm: total access = 13200000, total read = 4179192, read hit = 1618287, total_write = 9020807, write hit = 9020807, hit = 4081002, evict = 6295948 +[255940.351014] bdbm: llm_make_req: 13200000, 1 +[255955.376194] bdbm: llm_make_req: 13250000, 1 +[255975.752254] bdbm: llm_make_req: 13300000, 96 +[255978.084610] bdbm: nvm: total access = 13300000, total read = 4219021, read hit = 1634113, total_write = 9080978, write hit = 9080978, hit = 4120635, evict = 6332312 +[255993.534327] bdbm: llm_make_req: 13350000, 1 +[256008.724174] bdbm: llm_make_req: 13400000, 2 +[256021.098831] bdbm: nvm: total access = 13400000, total read = 4258920, read hit = 1649928, total_write = 9141079, write hit = 9141079, hit = 4160092, evict = 6368771 +[256028.573332] bdbm: llm_make_req: 13450000, 96 +[256046.769894] bdbm: llm_make_req: 13500000, 10 +[256061.060864] bdbm: llm_make_req: 13550000, 4 +[256064.149811] bdbm: nvm: total access = 13500000, total read = 4299202, read hit = 1665798, total_write = 9200797, write hit = 9200797, hit = 4199393, evict = 6405058 +[256080.812256] bdbm: llm_make_req: 13600000, 96 +[270427.270101] bdbm: ----------------------------------------------- +[270427.270102] bdbm: < PERFORMANCE SUMMARY > +[270427.270103] bdbm: [0] Execution Time (us): 20259.690859 +[270427.270104] bdbm: +[270427.270105] bdbm: [1] Total I/Os +[270427.270106] bdbm: # of page reads: 4914639 +[270427.270106] bdbm: # of page writes: 2263687 +[270427.270107] bdbm: # of block erase: 36224 +[270427.270107] bdbm: +[270427.270108] bdbm: [2] Normal I/Os +[270427.270108] bdbm: # of page reads: 2651235 +[270427.270109] bdbm: # of page writes: 0 +[270427.270109] bdbm: # of page rmw reads: 0 +[270427.270110] bdbm: # of page rmw writes: 0 +[270427.270111] bdbm: +[270427.270111] bdbm: [3] GC I/Os +[270427.270112] bdbm: # of GC invocation: 0 +[270427.270113] bdbm: # of page reads: 2263404 +[270427.270113] bdbm: # of page writes: 2263687 +[270427.270114] bdbm: # of block erase: 36224 +[270427.270114] bdbm: +[270427.270115] bdbm: [4] Meta I/Os +[270427.270115] bdbm: # of meta page reads: 0 +[270427.270116] bdbm: # of meta page writes: 0 +[270427.270117] bdbm: +[270427.270117] bdbm: [5] Elapsed Time +[270427.270118] bdbm: page read (us): 515 (S:403 + Q:10 + D:102) +[270427.270119] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[270427.270119] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[270427.270120] bdbm: +[270427.270120] bdbm: [6] Utilization (R) +[270427.270123] bdbm: 38399 38327 38401 38696 38708 38543 38327 38515 +[270427.270124] bdbm: 38281 38510 38162 38567 38445 38239 38625 38352 +[270427.270126] bdbm: 38281 38165 38324 38253 37974 38003 38138 38422 +[270427.270127] bdbm: 37998 38362 38152 38023 38148 38294 38128 38313 +[270427.270129] bdbm: 38475 38458 38604 38434 38580 38472 38424 38016 +[270427.270130] bdbm: 38642 38232 38578 38397 37951 38051 38511 38043 +[270427.270131] bdbm: 38005 38121 38352 37969 38281 38422 38577 38725 +[270427.270132] bdbm: 38733 38701 38233 38802 38511 38260 38173 38528 +[270427.270135] bdbm: 38100 38395 38338 38540 38658 38223 38787 38479 +[270427.270136] bdbm: 38381 38387 38298 38375 38069 38215 38476 38504 +[270427.270137] bdbm: 38847 38344 38339 37810 38225 38378 38573 38809 +[270427.270138] bdbm: 38189 38432 38061 37915 38596 38408 38738 38843 +[270427.270140] bdbm: 38456 38488 38181 38517 38392 38443 38688 38368 +[270427.270141] bdbm: 38573 38831 38766 38748 38689 38570 38349 38290 +[270427.270143] bdbm: 38121 38313 38521 38570 38697 38789 38678 38453 +[270427.270144] bdbm: 38400 38350 38313 38363 38101 38513 38551 38489 +[270427.270144] bdbm: +[270427.270145] bdbm: [7] Utilization (W) +[270427.270147] bdbm: 17691 17731 17755 17772 17780 17786 17792 17798 +[270427.270148] bdbm: 17796 17800 17801 17803 17803 17802 17800 17799 +[270427.270149] bdbm: 17799 17796 17794 17791 17790 17785 17783 17781 +[270427.270151] bdbm: 17779 17779 17776 17772 17771 17770 17769 17768 +[270427.270153] bdbm: 17767 17766 17764 17763 17761 17757 17754 17751 +[270427.270154] bdbm: 17747 17744 17743 17742 17739 17736 17735 17732 +[270427.270155] bdbm: 17726 17721 17719 17718 17715 17713 17709 17705 +[270427.270156] bdbm: 17703 17699 17698 17698 17695 17694 17690 17688 +[270427.270158] bdbm: 17686 17684 17683 17682 17681 17678 17675 17672 +[270427.270160] bdbm: 17668 17665 17664 17660 17655 17652 17649 17645 +[270427.270161] bdbm: 17642 17642 17642 17639 17637 17637 17633 17630 +[270427.270162] bdbm: 17629 17624 17622 17621 17621 17615 17614 17612 +[270427.270164] bdbm: 17610 17610 17607 17605 17604 17603 17602 17599 +[270427.270165] bdbm: 17599 17598 17595 17590 17590 17588 17586 17585 +[270427.270166] bdbm: 17583 17580 17577 17575 17571 17571 17569 17567 +[270427.270168] bdbm: 17565 17565 17562 17560 17555 17552 17551 17550 +[270427.270168] bdbm: [8] NVM I/Os +[270427.270170] bdbm: #_of_nvm_total_accesses: 13573748 +[270427.270170] bdbm: #_of_nvm_total_write_requests: 9244769 +[270427.270171] bdbm: #_of_nvm_total_read_requests: 4328979 +[270427.270171] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9244769 +[270427.270172] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1677716 +[270427.270172] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 4228630 +[270427.270173] bdbm: #_of_nvm_evict_from_nvm: 6431711 +[270427.270173] bdbm: #_of_nvm_write_amplification: 6431711 : 8695398 +[270427.270174] bdbm: +[270427.270174] bdbm: ----------------------------------------------- +[270427.270176] bdbm: ----------------------------------------------- +[270427.442544] bdbm: done +[270427.442547] bdbm: [dm_ramdrive_close] closed! +[270427.831286] bdbm: [bdbm_drv_main] bdbm_drv is closed +[270427.831289] bdbm: [bdbm_drv_main] bdbm_drv is removed +[270427.851434] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[270427.868561] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[270427.872251] bdbm: ===================================================================== +[270427.872252] bdbm: DEVICE PARAMETERS +[270427.872253] bdbm: ===================================================================== +[270427.872253] bdbm: # of channels = 8 +[270427.872254] bdbm: # of chips per channel = 16 +[270427.872254] bdbm: # of blocks per chip = 256 +[270427.872255] bdbm: # of pages per block = 128 +[270427.872255] bdbm: # of subpages per page = 1 +[270427.872256] bdbm: page main size = 4096 bytes +[270427.872256] bdbm: page oob size = 64 bytes +[270427.872257] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[270427.872258] bdbm: +[270427.872258] bdbm: ===================================================================== +[270427.872259] bdbm: RAM DISK INFO +[270427.872259] bdbm: ===================================================================== +[270427.872260] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[270429.434027] bdbm: ramssd addr = ffffc90050001000 +[270429.434029] bdbm: +[270429.434030] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[270430.958710] bdbm: *** building ptr_ramssd_data done +[270430.958899] bdbm: [dm_ramdrive_probe] probe done! +[270430.958900] bdbm: [dm_ramdrive_open] open done! +[270431.083067] bdbm: nvm cache addr = ffffc90870003000 +[270431.086041] bdbm: ========================================================== +[270431.086042] bdbm: NVM CONFIGURATION +[270431.086043] bdbm: ========================================================== +[270431.086044] bdbm: total size = 1073741824, nr_nvm_pages = 262144, nvm_page_size = 4096 +[270431.276371] bdbm: TRIM is disabled +[270431.276493] bdbm: ===================================================================== +[270431.276493] bdbm: DEVICE PARAMETERS +[270431.276494] bdbm: ===================================================================== +[270431.276494] bdbm: # of channels = 8 +[270431.276495] bdbm: # of chips per channel = 16 +[270431.276495] bdbm: # of blocks per chip = 256 +[270431.276496] bdbm: # of pages per block = 128 +[270431.276497] bdbm: # of subpages per page = 1 +[270431.276498] bdbm: page main size = 4096 bytes +[270431.276499] bdbm: page oob size = 64 bytes +[270431.276499] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[270431.276500] bdbm: +[270431.276500] bdbm: ===================================================================== +[270431.276501] bdbm: FTL CONFIGURATION +[270431.276501] bdbm: ===================================================================== +[270431.276503] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[270431.276504] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[270431.276504] bdbm: wl policy = 1 (1: none, 2: swap) +[270431.276505] bdbm: trim mode = 2 (1: enable, 2: disable) +[270431.276505] bdbm: kernel sector = 512 bytes +[270431.276505] bdbm: +[270431.276506] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[270431.296550] bdbm: llm_make_req: 0, 1 +[270447.320937] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[270447.320939] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[270624.899688] bdbm: nvm: total access = 100000, total read = 34, read hit = 6, total_write = 99965, write hit = 99965, hit = 33833, evict = 0 +[271324.734911] bdbm: ----------------------------------------------- +[271324.734912] bdbm: < PERFORMANCE SUMMARY > +[271324.734914] bdbm: [0] Execution Time (us): 893.391958 +[271324.734914] bdbm: +[271324.734915] bdbm: [1] Total I/Os +[271324.734915] bdbm: # of page reads: 0 +[271324.734916] bdbm: # of page writes: 0 +[271324.734916] bdbm: # of block erase: 0 +[271324.734917] bdbm: +[271324.734917] bdbm: [2] Normal I/Os +[271324.734918] bdbm: # of page reads: 0 +[271324.734919] bdbm: # of page writes: 0 +[271324.734919] bdbm: # of page rmw reads: 0 +[271324.734920] bdbm: # of page rmw writes: 0 +[271324.734920] bdbm: +[271324.734920] bdbm: [3] GC I/Os +[271324.734921] bdbm: # of GC invocation: 0 +[271324.734921] bdbm: # of page reads: 0 +[271324.734922] bdbm: # of page writes: 0 +[271324.734922] bdbm: # of block erase: 0 +[271324.734923] bdbm: +[271324.734924] bdbm: [4] Meta I/Os +[271324.734924] bdbm: # of meta page reads: 0 +[271324.734924] bdbm: # of meta page writes: 0 +[271324.734925] bdbm: +[271324.734925] bdbm: [5] Elapsed Time +[271324.734926] bdbm: page read (us): 0 (S:0 + Q:0 + D:0) +[271324.734927] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[271324.734927] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[271324.734928] bdbm: +[271324.734928] bdbm: [6] Utilization (R) +[271324.734930] bdbm: 0 0 0 0 0 0 0 0 +[271324.734931] bdbm: 0 0 0 0 0 0 0 0 +[271324.734933] bdbm: 0 0 0 0 0 0 0 0 +[271324.734934] bdbm: 0 0 0 0 0 0 0 0 +[271324.734935] bdbm: 0 0 0 0 0 0 0 0 +[271324.734936] bdbm: 0 0 0 0 0 0 0 0 +[271324.734938] bdbm: 0 0 0 0 0 0 0 0 +[271324.734939] bdbm: 0 0 0 0 0 0 0 0 +[271324.734940] bdbm: 0 0 0 0 0 0 0 0 +[271324.734941] bdbm: 0 0 0 0 0 0 0 0 +[271324.734942] bdbm: 0 0 0 0 0 0 0 0 +[271324.734944] bdbm: 0 0 0 0 0 0 0 0 +[271324.734945] bdbm: 0 0 0 0 0 0 0 0 +[271324.734946] bdbm: 0 0 0 0 0 0 0 0 +[271324.734947] bdbm: 0 0 0 0 0 0 0 0 +[271324.734948] bdbm: 0 0 0 0 0 0 0 0 +[271324.734949] bdbm: +[271324.734950] bdbm: [7] Utilization (W) +[271324.734951] bdbm: 0 0 0 0 0 0 0 0 +[271324.734952] bdbm: 0 0 0 0 0 0 0 0 +[271324.734953] bdbm: 0 0 0 0 0 0 0 0 +[271324.734954] bdbm: 0 0 0 0 0 0 0 0 +[271324.734956] bdbm: 0 0 0 0 0 0 0 0 +[271324.734957] bdbm: 0 0 0 0 0 0 0 0 +[271324.734958] bdbm: 0 0 0 0 0 0 0 0 +[271324.734959] bdbm: 0 0 0 0 0 0 0 0 +[271324.734961] bdbm: 0 0 0 0 0 0 0 0 +[271324.734962] bdbm: 0 0 0 0 0 0 0 0 +[271324.734963] bdbm: 0 0 0 0 0 0 0 0 +[271324.734964] bdbm: 0 0 0 0 0 0 0 0 +[271324.734966] bdbm: 0 0 0 0 0 0 0 0 +[271324.734967] bdbm: 0 0 0 0 0 0 0 0 +[271324.734968] bdbm: 0 0 0 0 0 0 0 0 +[271324.734969] bdbm: 0 0 0 0 0 0 0 0 +[271324.734970] bdbm: [8] NVM I/Os +[271324.734970] bdbm: #_of_nvm_total_accesses: 126730 +[271324.734971] bdbm: #_of_nvm_total_write_requests: 126696 +[271324.734972] bdbm: #_of_nvm_total_read_requests: 34 +[271324.734972] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 126696 +[271324.734973] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 6 +[271324.734973] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 33906 +[271324.734974] bdbm: #_of_nvm_evict_from_nvm: 0 +[271324.734974] bdbm: #_of_nvm_write_amplification: 0 : 0 +[271324.734975] bdbm: +[271324.734975] bdbm: ----------------------------------------------- +[271324.734976] bdbm: ----------------------------------------------- +[271324.907918] bdbm: done +[271324.907921] bdbm: [dm_ramdrive_close] closed! +[271325.295966] bdbm: [bdbm_drv_main] bdbm_drv is closed +[271325.295968] bdbm: [bdbm_drv_main] bdbm_drv is removed +[271325.319276] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[271325.337369] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[271325.341193] bdbm: ===================================================================== +[271325.341194] bdbm: DEVICE PARAMETERS +[271325.341195] bdbm: ===================================================================== +[271325.341196] bdbm: # of channels = 8 +[271325.341196] bdbm: # of chips per channel = 16 +[271325.341197] bdbm: # of blocks per chip = 256 +[271325.341197] bdbm: # of pages per block = 128 +[271325.341198] bdbm: # of subpages per page = 1 +[271325.341198] bdbm: page main size = 4096 bytes +[271325.341199] bdbm: page oob size = 64 bytes +[271325.341199] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[271325.341200] bdbm: +[271325.341201] bdbm: ===================================================================== +[271325.341201] bdbm: RAM DISK INFO +[271325.341202] bdbm: ===================================================================== +[271325.341203] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[271326.876523] bdbm: ramssd addr = ffffc90050001000 +[271326.876524] bdbm: +[271326.876525] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[271328.402530] bdbm: *** building ptr_ramssd_data done +[271328.402760] bdbm: [dm_ramdrive_probe] probe done! +[271328.402775] bdbm: [dm_ramdrive_open] open done! +[271328.502650] bdbm: nvm cache addr = ffffc90870003000 +[271328.505156] bdbm: ========================================================== +[271328.505157] bdbm: NVM CONFIGURATION +[271328.505158] bdbm: ========================================================== +[271328.505159] bdbm: total size = 1073741824, nr_nvm_pages = 262144, nvm_page_size = 4096 +[271328.699411] bdbm: TRIM is disabled +[271328.699537] bdbm: ===================================================================== +[271328.699539] bdbm: DEVICE PARAMETERS +[271328.699539] bdbm: ===================================================================== +[271328.699540] bdbm: # of channels = 8 +[271328.699542] bdbm: # of chips per channel = 16 +[271328.699544] bdbm: # of blocks per chip = 256 +[271328.699545] bdbm: # of pages per block = 128 +[271328.699546] bdbm: # of subpages per page = 1 +[271328.699546] bdbm: page main size = 4096 bytes +[271328.699547] bdbm: page oob size = 64 bytes +[271328.699548] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[271328.699550] bdbm: +[271328.699551] bdbm: ===================================================================== +[271328.699552] bdbm: FTL CONFIGURATION +[271328.699552] bdbm: ===================================================================== +[271328.699553] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[271328.699554] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[271328.699554] bdbm: wl policy = 1 (1: none, 2: swap) +[271328.699555] bdbm: trim mode = 2 (1: enable, 2: disable) +[271328.699557] bdbm: kernel sector = 512 bytes +[271328.699559] bdbm: +[271328.699561] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[271328.720017] bdbm: llm_make_req: 0, 1 +[271344.646228] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[271344.646230] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[271393.242112] bdbm: nvm: total access = 100000, total read = 42, read hit = 14, total_write = 99957, write hit = 99957, hit = 33876, evict = 0 +[271439.550767] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 33925, evict = 0 +[271484.835939] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 33970, evict = 3857 +[271505.452100] bdbm: llm_make_req: 50000, 2 +[271531.491281] bdbm: llm_make_req: 100000, 2 +[271533.202977] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 33974, evict = 103853 +[271557.590647] bdbm: llm_make_req: 150000, 2 +[271580.475080] bdbm: llm_make_req: 200000, 1 +[271582.643970] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 33977, evict = 203850 +[271605.251544] bdbm: llm_make_req: 250000, 1 +[271629.236182] bdbm: llm_make_req: 300000, 2 +[271631.013350] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 33983, evict = 303844 +[271654.830644] bdbm: llm_make_req: 350000, 1 +[271678.338006] bdbm: llm_make_req: 400000, 2 +[271680.066176] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 33989, evict = 403838 +[271700.478387] bdbm: llm_make_req: 450000, 2 +[271722.780074] bdbm: llm_make_req: 500000, 2 +[271724.506695] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 33989, evict = 503838 +[271745.142801] bdbm: llm_make_req: 550000, 2 +[271767.525604] bdbm: llm_make_req: 600000, 2 +[271769.278095] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 33989, evict = 603838 +[271789.937335] bdbm: llm_make_req: 650000, 2 +[271812.203472] bdbm: llm_make_req: 700000, 1 +[271813.921552] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 33989, evict = 703838 +[271834.369725] bdbm: llm_make_req: 750000, 2 +[271856.580482] bdbm: llm_make_req: 800000, 2 +[271858.287835] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 33989, evict = 803838 +[271878.835791] bdbm: llm_make_req: 850000, 2 +[271901.811851] bdbm: llm_make_req: 900000, 2 +[271903.523696] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 33989, evict = 903838 +[271923.986925] bdbm: llm_make_req: 950000, 2 +[271946.114250] bdbm: llm_make_req: 1000000, 2 +[271947.824165] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 33989, evict = 1003838 +[271968.256323] bdbm: llm_make_req: 1050000, 2 +[271990.397624] bdbm: llm_make_req: 1100000, 2 +[271992.103990] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 33989, evict = 1103838 +[272012.515779] bdbm: llm_make_req: 1150000, 2 +[272035.056603] bdbm: llm_make_req: 1200000, 1 +[272037.269890] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 33989, evict = 1203838 +[272061.582672] bdbm: llm_make_req: 1250000, 2 +[272086.827435] bdbm: llm_make_req: 1300000, 2 +[272088.546548] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 33989, evict = 1303838 +[272112.385891] bdbm: llm_make_req: 1350000, 2 +[272136.586544] bdbm: llm_make_req: 1400000, 2 +[272138.684670] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 33989, evict = 1403838 +[272161.541229] bdbm: llm_make_req: 1450000, 2 +[272185.243429] bdbm: llm_make_req: 1500000, 1 +[272187.005950] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 33989, evict = 1503838 +[272210.482376] bdbm: llm_make_req: 1550000, 1 +[272235.770557] bdbm: llm_make_req: 1600000, 1 +[272237.709596] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 33989, evict = 1603838 +[272261.117695] bdbm: llm_make_req: 1650000, 1 +[272286.503923] bdbm: llm_make_req: 1700000, 1 +[272288.372934] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 33989, evict = 1703838 +[272311.215145] bdbm: llm_make_req: 1750000, 2 +[272336.015292] bdbm: llm_make_req: 1800000, 2 +[272337.775944] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 33989, evict = 1803838 +[272360.790284] bdbm: llm_make_req: 1850000, 2 +[272385.689975] bdbm: llm_make_req: 1900000, 1 +[272387.542477] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 33989, evict = 1903838 +[272409.877307] bdbm: llm_make_req: 1950000, 1 +[272435.707282] bdbm: llm_make_req: 2000000, 1 +[272437.649009] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 33989, evict = 2003838 +[272459.585227] bdbm: llm_make_req: 2050000, 1 +[272484.303913] bdbm: llm_make_req: 2100000, 2 +[272486.024583] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 33989, evict = 2103838 +[272508.624314] bdbm: llm_make_req: 2150000, 2 +[272533.573745] bdbm: llm_make_req: 2200000, 1 +[272535.421667] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 33989, evict = 2203838 +[272557.961697] bdbm: llm_make_req: 2250000, 2 +[272583.174335] bdbm: llm_make_req: 2300000, 2 +[272585.214952] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 33989, evict = 2303838 +[272608.644743] bdbm: llm_make_req: 2350000, 1 +[272634.055089] bdbm: llm_make_req: 2400000, 1 +[272635.985107] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 33989, evict = 2403838 +[272658.313476] bdbm: llm_make_req: 2450000, 2 +[272683.122823] bdbm: llm_make_req: 2500000, 1 +[272683.462419] bdbm: nvm: total access = 2800000, total read = 20161, read hit = 1255, total_write = 2779838, write hit = 2779838, hit = 37158, evict = 2481791 +[272708.146793] bdbm: llm_make_req: 2550000, 2 +[272727.427910] bdbm: nvm: total access = 2900000, total read = 60862, read hit = 6901, total_write = 2839137, write hit = 2839137, hit = 50852, evict = 2533042 +[272734.206887] bdbm: llm_make_req: 2600000, 1 +[272761.660305] bdbm: llm_make_req: 2650000, 8 +[272769.916696] bdbm: nvm: total access = 3000000, total read = 100460, read hit = 15827, total_write = 2899539, write hit = 2899539, hit = 73529, evict = 2579693 +[272790.937642] bdbm: llm_make_req: 2700000, 1 +[272812.019000] bdbm: nvm: total access = 3100000, total read = 140064, read hit = 27644, total_write = 2959935, write hit = 2959935, hit = 103401, evict = 2622034 +[272821.807462] bdbm: llm_make_req: 2750000, 2 +[272852.525569] bdbm: nvm: total access = 3200000, total read = 180408, read hit = 42391, total_write = 3019591, write hit = 3019591, hit = 139598, evict = 2660240 +[272853.645303] bdbm: llm_make_req: 2800000, 3 +[272886.305547] bdbm: llm_make_req: 2850000, 1 +[272891.249295] bdbm: nvm: total access = 3300000, total read = 220436, read hit = 58554, total_write = 3079563, write hit = 3079563, hit = 180466, evict = 2695507 +[272919.713550] bdbm: llm_make_req: 2900000, 2 +[272928.420430] bdbm: nvm: total access = 3400000, total read = 260904, read hit = 76694, total_write = 3139095, write hit = 3139095, hit = 225311, evict = 2728334 +[272953.363045] bdbm: llm_make_req: 2950000, 1 +[272966.355316] bdbm: nvm: total access = 3500000, total read = 300670, read hit = 93730, total_write = 3199329, write hit = 3199329, hit = 268285, evict = 2762630 +[272985.954714] bdbm: llm_make_req: 3000000, 16 +[273004.635080] bdbm: nvm: total access = 3600000, total read = 340772, read hit = 110131, total_write = 3259227, write hit = 3259227, hit = 309004, evict = 2798210 +[273018.036020] bdbm: llm_make_req: 3050000, 1 +[273043.483912] bdbm: nvm: total access = 3700000, total read = 380271, read hit = 125362, total_write = 3319728, write hit = 3319728, hit = 348181, evict = 2834765 +[273050.016942] bdbm: llm_make_req: 3100000, 1 +[273081.630798] bdbm: llm_make_req: 3150000, 1 +[273082.685746] bdbm: nvm: total access = 3800000, total read = 420324, read hit = 140624, total_write = 3379675, write hit = 3379675, hit = 386222, evict = 2871933 +[273113.137908] bdbm: llm_make_req: 3200000, 1 +[273121.704972] bdbm: nvm: total access = 3900000, total read = 459555, read hit = 155461, total_write = 3440444, write hit = 3440444, hit = 423991, evict = 2909770 +[273144.486645] bdbm: llm_make_req: 3250000, 2 +[273160.583130] bdbm: nvm: total access = 4000000, total read = 499651, read hit = 171083, total_write = 3500348, write hit = 3500348, hit = 462379, evict = 2946908 +[273175.909219] bdbm: llm_make_req: 3300000, 16 +[273199.020067] bdbm: nvm: total access = 4100000, total read = 539953, read hit = 186617, total_write = 3560046, write hit = 3560046, hit = 501261, evict = 2983258 +[273207.660769] bdbm: llm_make_req: 3350000, 1 +[273237.037339] bdbm: nvm: total access = 4200000, total read = 580544, read hit = 202797, total_write = 3619455, write hit = 3619455, hit = 540979, evict = 3019129 +[273238.978511] bdbm: llm_make_req: 3400000, 2 +[273270.872348] bdbm: llm_make_req: 3450000, 1 +[273275.211986] bdbm: nvm: total access = 4300000, total read = 620702, read hit = 218963, total_write = 3679297, write hit = 3679297, hit = 580971, evict = 3055145 +[273302.559643] bdbm: llm_make_req: 3500000, 2 +[273313.274558] bdbm: nvm: total access = 4400000, total read = 661054, read hit = 235301, total_write = 3738945, write hit = 3738945, hit = 620998, evict = 3091104 +[273334.278686] bdbm: llm_make_req: 3550000, 8 +[273351.619946] bdbm: nvm: total access = 4500000, total read = 701149, read hit = 251185, total_write = 3798850, write hit = 3798850, hit = 660713, evict = 3127178 +[273365.983815] bdbm: llm_make_req: 3600000, 1 +[273389.845233] bdbm: nvm: total access = 4600000, total read = 741205, read hit = 266673, total_write = 3858794, write hit = 3858794, hit = 700044, evict = 3163279 +[273397.439054] bdbm: llm_make_req: 3650000, 2 +[273428.301068] bdbm: nvm: total access = 4700000, total read = 781838, read hit = 282364, total_write = 3918161, write hit = 3918161, hit = 739151, evict = 3199230 +[273429.181849] bdbm: llm_make_req: 3700000, 15 +[273460.563004] bdbm: llm_make_req: 3750000, 1 +[273466.669148] bdbm: nvm: total access = 4800000, total read = 822458, read hit = 298246, total_write = 3977541, write hit = 3977541, hit = 778153, evict = 3235490 +[273492.228891] bdbm: llm_make_req: 3800000, 1 +[273505.440744] bdbm: nvm: total access = 4900000, total read = 862272, read hit = 313735, total_write = 4037727, write hit = 4037727, hit = 817111, evict = 3272207 +[273523.651763] bdbm: llm_make_req: 3850000, 1 +[273543.446382] bdbm: nvm: total access = 5000000, total read = 902488, read hit = 329527, total_write = 4097511, write hit = 4097511, hit = 856348, evict = 3308546 +[273555.072117] bdbm: llm_make_req: 3900000, 1 +[273581.295235] bdbm: nvm: total access = 5100000, total read = 942518, read hit = 345492, total_write = 4157481, write hit = 4157481, hit = 896031, evict = 3344798 +[273586.401428] bdbm: llm_make_req: 3950000, 2 +[273618.152823] bdbm: llm_make_req: 4000000, 2 +[273619.732285] bdbm: nvm: total access = 5200000, total read = 983235, read hit = 361649, total_write = 4216764, write hit = 4216764, hit = 935416, evict = 3380853 +[273649.766809] bdbm: llm_make_req: 4050000, 1 +[273658.137342] bdbm: nvm: total access = 5300000, total read = 1023125, read hit = 377349, total_write = 4276874, write hit = 4276874, hit = 974830, evict = 3417249 +[273681.463544] bdbm: llm_make_req: 4100000, 16 +[273696.404003] bdbm: nvm: total access = 5400000, total read = 1063812, read hit = 393451, total_write = 4336187, write hit = 4336187, hit = 1014454, evict = 3453040 +[273713.275991] bdbm: llm_make_req: 4150000, 1 +[273734.879592] bdbm: nvm: total access = 5500000, total read = 1103607, read hit = 409194, total_write = 4396392, write hit = 4396392, hit = 1053667, evict = 3489775 +[273744.904280] bdbm: llm_make_req: 4200000, 2 +[273773.660821] bdbm: nvm: total access = 5600000, total read = 1143124, read hit = 424759, total_write = 4456875, write hit = 4456875, hit = 1092598, evict = 3526892 +[273776.783193] bdbm: llm_make_req: 4250000, 1 +[273808.394200] bdbm: llm_make_req: 4300000, 1 +[273812.222490] bdbm: nvm: total access = 5700000, total read = 1182573, read hit = 440145, total_write = 4517426, write hit = 4517426, hit = 1131633, evict = 3563794 +[273839.924321] bdbm: llm_make_req: 4350000, 2 +[273850.694244] bdbm: nvm: total access = 5800000, total read = 1223083, read hit = 456223, total_write = 4576916, write hit = 4576916, hit = 1170967, evict = 3600028 +[273871.644645] bdbm: llm_make_req: 4400000, 1 +[273889.159219] bdbm: nvm: total access = 5900000, total read = 1262755, read hit = 471539, total_write = 4637244, write hit = 4637244, hit = 1210015, evict = 3636624 +[273903.080922] bdbm: llm_make_req: 4450000, 38 +[273927.425540] bdbm: nvm: total access = 6000000, total read = 1302639, read hit = 487230, total_write = 4697360, write hit = 4697360, hit = 1249479, evict = 3672967 +[273934.784137] bdbm: llm_make_req: 4500000, 1 +[273965.473920] bdbm: nvm: total access = 6100000, total read = 1342752, read hit = 503151, total_write = 4757247, write hit = 4757247, hit = 1288894, evict = 3709360 +[273966.128287] bdbm: llm_make_req: 4550000, 1 +[273997.651138] bdbm: llm_make_req: 4600000, 7 +[274003.566714] bdbm: nvm: total access = 6200000, total read = 1382751, read hit = 518623, total_write = 4817248, write hit = 4817248, hit = 1328330, evict = 3745397 +[274029.095898] bdbm: llm_make_req: 4650000, 1 +[274041.944817] bdbm: nvm: total access = 6300000, total read = 1422954, read hit = 534464, total_write = 4877045, write hit = 4877045, hit = 1367690, evict = 3781675 +[274061.185860] bdbm: llm_make_req: 4700000, 2 +[274080.683427] bdbm: nvm: total access = 6400000, total read = 1463260, read hit = 550612, total_write = 4936739, write hit = 4936739, hit = 1407272, evict = 3817935 +[274093.117269] bdbm: llm_make_req: 4750000, 1 +[274119.294681] bdbm: nvm: total access = 6500000, total read = 1503603, read hit = 566478, total_write = 4996396, write hit = 4996396, hit = 1446587, evict = 3854143 +[274124.867809] bdbm: llm_make_req: 4800000, 25 +[274156.413392] bdbm: llm_make_req: 4850000, 4 +[274157.699260] bdbm: nvm: total access = 6600000, total read = 1543630, read hit = 582132, total_write = 5056369, write hit = 5056369, hit = 1485922, evict = 3890435 +[274188.356044] bdbm: llm_make_req: 4900000, 16 +[274196.074787] bdbm: nvm: total access = 6700000, total read = 1583935, read hit = 598111, total_write = 5116064, write hit = 5116064, hit = 1525563, evict = 3926468 +[274219.948167] bdbm: llm_make_req: 4950000, 1 +[274234.168962] bdbm: nvm: total access = 6800000, total read = 1624107, read hit = 613887, total_write = 5175892, write hit = 5175892, hit = 1565167, evict = 3962468 +[274251.227196] bdbm: llm_make_req: 5000000, 1 +[274272.206144] bdbm: nvm: total access = 6900000, total read = 1664425, read hit = 629886, total_write = 5235574, write hit = 5235574, hit = 1604395, evict = 3998921 +[274282.566979] bdbm: llm_make_req: 5050000, 13 +[274310.580934] bdbm: nvm: total access = 7000000, total read = 1704742, read hit = 645680, total_write = 5295257, write hit = 5295257, hit = 1643783, evict = 4035010 +[274314.385313] bdbm: llm_make_req: 5100000, 2 +[274341.040064] bdbm: llm_make_req: 5150000, 96 +[274351.681456] bdbm: nvm: total access = 7100000, total read = 1744644, read hit = 661106, total_write = 5355355, write hit = 5355355, hit = 1682546, evict = 4071771 +[274355.224769] bdbm: llm_make_req: 5200000, 15 +[274376.219221] bdbm: llm_make_req: 5250000, 4 +[274392.628603] bdbm: nvm: total access = 7200000, total read = 1784356, read hit = 676697, total_write = 5415643, write hit = 5415643, hit = 1722048, evict = 4108148 +[274398.127128] bdbm: llm_make_req: 5300000, 2 +[274422.825508] bdbm: llm_make_req: 5350000, 96 +[274433.385786] bdbm: nvm: total access = 7300000, total read = 1824498, read hit = 692514, total_write = 5475501, write hit = 5475501, hit = 1761418, evict = 4144453 +[274446.506396] bdbm: llm_make_req: 5400000, 11 +[274467.997652] bdbm: llm_make_req: 5450000, 1 +[274474.515837] bdbm: nvm: total access = 7400000, total read = 1864618, read hit = 708144, total_write = 5535381, write hit = 5535381, hit = 1800693, evict = 4180688 +[274489.412642] bdbm: llm_make_req: 5500000, 96 +[274514.248316] bdbm: llm_make_req: 5550000, 1 +[274516.638464] bdbm: nvm: total access = 7500000, total read = 1904068, read hit = 723843, total_write = 5595931, write hit = 5595931, hit = 1840225, evict = 4217405 +[274533.701373] bdbm: llm_make_req: 5600000, 1 +[274551.662455] bdbm: llm_make_req: 5650000, 1 +[274558.224509] bdbm: nvm: total access = 7600000, total read = 1943804, read hit = 739240, total_write = 5656195, write hit = 5656195, hit = 1878932, evict = 4254359 +[274574.857917] bdbm: llm_make_req: 5700000, 96 +[274593.309627] bdbm: llm_make_req: 5750000, 8 +[274600.689254] bdbm: nvm: total access = 7700000, total read = 1984079, read hit = 755086, total_write = 5715920, write hit = 5715920, hit = 1918299, evict = 4290563 +[274610.327612] bdbm: llm_make_req: 5800000, 96 +[274632.566089] bdbm: llm_make_req: 5850000, 96 +[274642.553216] bdbm: nvm: total access = 7800000, total read = 2024129, read hit = 770825, total_write = 5775870, write hit = 5775870, hit = 1957424, evict = 4327127 +[274651.881301] bdbm: llm_make_req: 5900000, 6 +[274668.582341] bdbm: llm_make_req: 5950000, 9 +[274685.556551] bdbm: nvm: total access = 7900000, total read = 2063686, read hit = 786335, total_write = 5836313, write hit = 5836313, hit = 1996423, evict = 4364081 +[274688.367517] bdbm: llm_make_req: 6000000, 96 +[274708.082946] bdbm: llm_make_req: 6050000, 1 +[274723.033378] bdbm: llm_make_req: 6100000, 9 +[274728.706395] bdbm: nvm: total access = 8000000, total read = 2103640, read hit = 802128, total_write = 5896359, write hit = 5896359, hit = 2035589, evict = 4400754 +[274741.947652] bdbm: llm_make_req: 6150000, 96 +[274760.425806] bdbm: llm_make_req: 6200000, 1 +[274771.748144] bdbm: nvm: total access = 8100000, total read = 2143483, read hit = 817911, total_write = 5956516, write hit = 5956516, hit = 2075092, evict = 4437191 +[274776.035882] bdbm: llm_make_req: 6250000, 14 +[274794.771389] bdbm: llm_make_req: 6300000, 96 +[274813.143231] bdbm: llm_make_req: 6350000, 7 +[274815.922101] bdbm: nvm: total access = 8200000, total read = 2183026, read hit = 833726, total_write = 6016973, write hit = 6016973, hit = 2114585, evict = 4473970 +[274826.969843] bdbm: llm_make_req: 6400000, 1 +[274844.001209] bdbm: llm_make_req: 6450000, 96 +[274859.030321] bdbm: nvm: total access = 8300000, total read = 2223135, read hit = 849837, total_write = 6076864, write hit = 6076864, hit = 2154188, evict = 4510369 +[274861.825835] bdbm: llm_make_req: 6500000, 1 +[274873.808080] bdbm: llm_make_req: 6550000, 1 +[274892.301189] bdbm: llm_make_req: 6600000, 96 +[274903.897234] bdbm: nvm: total access = 8400000, total read = 2263082, read hit = 865400, total_write = 6136917, write hit = 6136917, hit = 2193598, evict = 4546575 +[274907.995888] bdbm: llm_make_req: 6650000, 1 +[274919.751528] bdbm: llm_make_req: 6700000, 96 +[274938.451506] bdbm: llm_make_req: 6750000, 96 +[274948.631775] bdbm: nvm: total access = 8500000, total read = 2303336, read hit = 881341, total_write = 6196663, write hit = 6196663, hit = 2232779, evict = 4583081 +[274953.356077] bdbm: llm_make_req: 6800000, 6 +[274966.069754] bdbm: llm_make_req: 6850000, 96 +[274983.613865] bdbm: llm_make_req: 6900000, 96 +[274994.098087] bdbm: nvm: total access = 8600000, total read = 2343621, read hit = 897201, total_write = 6256378, write hit = 6256378, hit = 2271913, evict = 4619522 +[274995.289420] bdbm: llm_make_req: 6950000, 1 +[275009.269678] bdbm: llm_make_req: 7000000, 96 +[275025.216316] bdbm: llm_make_req: 7050000, 96 +[275035.970775] bdbm: llm_make_req: 7100000, 8 +[275039.374721] bdbm: nvm: total access = 8700000, total read = 2382891, read hit = 912672, total_write = 6317108, write hit = 6317108, hit = 2310953, evict = 4656683 +[275051.452078] bdbm: llm_make_req: 7150000, 96 +[275065.174389] bdbm: llm_make_req: 7200000, 2 +[275076.030104] bdbm: llm_make_req: 7250000, 96 +[275086.672296] bdbm: nvm: total access = 8800000, total read = 2422715, read hit = 928117, total_write = 6377284, write hit = 6377284, hit = 2350174, evict = 4693083 +[275091.301985] bdbm: llm_make_req: 7300000, 96 +[275101.748997] bdbm: llm_make_req: 7350000, 1 +[275115.170677] bdbm: llm_make_req: 7400000, 96 +[275128.318228] bdbm: llm_make_req: 7450000, 1 +[275133.764266] bdbm: nvm: total access = 8900000, total read = 2463048, read hit = 943805, total_write = 6436951, write hit = 6436951, hit = 2389172, evict = 4729440 +[275137.166909] bdbm: llm_make_req: 7500000, 96 +[275151.497673] bdbm: llm_make_req: 7550000, 96 +[275161.916220] bdbm: llm_make_req: 7600000, 1 +[275173.670860] bdbm: llm_make_req: 7650000, 96 +[275182.650693] bdbm: nvm: total access = 9000000, total read = 2503277, read hit = 959423, total_write = 6496722, write hit = 6496722, hit = 2428286, evict = 4765715 +[275187.360826] bdbm: llm_make_req: 7700000, 96 +[275195.486534] bdbm: llm_make_req: 7750000, 95 +[275208.938219] bdbm: llm_make_req: 7800000, 96 +[275219.589878] bdbm: llm_make_req: 7850000, 14 +[275230.612960] bdbm: llm_make_req: 7900000, 96 +[275231.800363] bdbm: nvm: total access = 9100000, total read = 2543321, read hit = 975330, total_write = 6556678, write hit = 6556678, hit = 2467491, evict = 4802373 +[275243.309487] bdbm: llm_make_req: 7950000, 96 +[275251.163505] bdbm: llm_make_req: 8000000, 96 +[275264.875624] bdbm: llm_make_req: 8050000, 96 +[275275.822256] bdbm: llm_make_req: 8100000, 1 +[275281.282956] bdbm: nvm: total access = 9200000, total read = 2582321, read hit = 990502, total_write = 6617678, write hit = 6617678, hit = 2506295, evict = 4839741 +[275285.906258] bdbm: llm_make_req: 8150000, 96 +[275298.966092] bdbm: llm_make_req: 8200000, 96 +[275306.920992] bdbm: llm_make_req: 8250000, 96 +[275320.665498] bdbm: llm_make_req: 8300000, 96 +[275330.388759] bdbm: nvm: total access = 9300000, total read = 2622162, read hit = 1006038, total_write = 6677837, write hit = 6677837, hit = 2545356, evict = 4876375 +[275332.304144] bdbm: llm_make_req: 8350000, 7 +[275341.766990] bdbm: llm_make_req: 8400000, 95 +[275354.995486] bdbm: llm_make_req: 8450000, 96 +[275363.451534] bdbm: llm_make_req: 8500000, 1 +[275376.739347] bdbm: llm_make_req: 8550000, 96 +[275379.778208] bdbm: nvm: total access = 9400000, total read = 2662485, read hit = 1021673, total_write = 6737514, write hit = 6737514, hit = 2584036, evict = 4913007 +[275388.743633] bdbm: llm_make_req: 8600000, 3 +[275397.920390] bdbm: llm_make_req: 8650000, 96 +[275411.213248] bdbm: llm_make_req: 8700000, 96 +[275420.327652] bdbm: llm_make_req: 8750000, 2 +[275429.047696] bdbm: nvm: total access = 9500000, total read = 2702172, read hit = 1037435, total_write = 6797827, write hit = 6797827, hit = 2623451, evict = 4949667 +[275432.990574] bdbm: llm_make_req: 8800000, 96 +[275445.683236] bdbm: llm_make_req: 8850000, 1 +[275454.419507] bdbm: llm_make_req: 8900000, 96 +[275467.998911] bdbm: llm_make_req: 8950000, 96 +[275477.776321] bdbm: llm_make_req: 9000000, 1 +[275478.582838] bdbm: nvm: total access = 9600000, total read = 2741811, read hit = 1052848, total_write = 6858188, write hit = 6858188, hit = 2662599, evict = 4986293 +[275489.515836] bdbm: llm_make_req: 9050000, 96 +[275502.685224] bdbm: llm_make_req: 9100000, 96 +[275511.169518] bdbm: llm_make_req: 9150000, 96 +[275525.342838] bdbm: llm_make_req: 9200000, 96 +[275527.669036] bdbm: nvm: total access = 9700000, total read = 2781298, read hit = 1068343, total_write = 6918701, write hit = 6918701, hit = 2702232, evict = 5022668 +[275536.012220] bdbm: llm_make_req: 9250000, 1 +[275547.075138] bdbm: llm_make_req: 9300000, 96 +[275560.337391] bdbm: llm_make_req: 9350000, 96 +[275568.510702] bdbm: llm_make_req: 9400000, 96 +[275577.125956] bdbm: nvm: total access = 9800000, total read = 2820474, read hit = 1083800, total_write = 6979525, write hit = 6979525, hit = 2741403, evict = 5059778 +[275581.774745] bdbm: llm_make_req: 9450000, 96 +[275593.874691] bdbm: llm_make_req: 9500000, 1 +[275603.543679] bdbm: llm_make_req: 9550000, 96 +[275617.094538] bdbm: llm_make_req: 9600000, 96 +[275626.222441] bdbm: llm_make_req: 9650000, 2 +[275626.336145] bdbm: nvm: total access = 9900000, total read = 2860121, read hit = 1099411, total_write = 7039878, write hit = 7039878, hit = 2780564, evict = 5096581 +[275639.392477] bdbm: llm_make_req: 9700000, 96 +[275652.331974] bdbm: llm_make_req: 9750000, 1 +[275660.850677] bdbm: llm_make_req: 9800000, 96 +[275674.586681] bdbm: llm_make_req: 9850000, 96 +[275675.654387] bdbm: nvm: total access = 10000000, total read = 2899894, read hit = 1115328, total_write = 7100105, write hit = 7100105, hit = 2819911, evict = 5133378 +[275684.752901] bdbm: llm_make_req: 9900000, 1 +[275697.047482] bdbm: llm_make_req: 9950000, 96 +[275710.653650] bdbm: llm_make_req: 10000000, 96 +[275719.852356] bdbm: llm_make_req: 10050000, 1 +[275723.327817] bdbm: nvm: total access = 10100000, total read = 2940213, read hit = 1131352, total_write = 7159786, write hit = 7159786, hit = 2859637, evict = 5169357 +[275736.892331] bdbm: llm_make_req: 10100000, 38 +[275755.294734] bdbm: llm_make_req: 10150000, 6 +[275766.245882] bdbm: nvm: total access = 10200000, total read = 2980717, read hit = 1146900, total_write = 7219282, write hit = 7219282, hit = 2898500, evict = 5205538 +[275773.413456] bdbm: llm_make_req: 10200000, 1 +[275795.126266] bdbm: llm_make_req: 10250000, 1 +[275807.305423] bdbm: nvm: total access = 10300000, total read = 3020902, read hit = 1162595, total_write = 7279097, write hit = 7279097, hit = 2937648, evict = 5241900 +[275821.063411] bdbm: llm_make_req: 10300000, 96 +[275845.566448] bdbm: llm_make_req: 10350000, 1 +[275847.862529] bdbm: nvm: total access = 10400000, total read = 3061027, read hit = 1178514, total_write = 7338972, write hit = 7338972, hit = 2976999, evict = 5278343 +[275869.436082] bdbm: llm_make_req: 10400000, 1 +[275888.426180] bdbm: nvm: total access = 10500000, total read = 3100702, read hit = 1194183, total_write = 7399297, write hit = 7399297, hit = 3016185, evict = 5315151 +[275893.201889] bdbm: llm_make_req: 10450000, 2 +[275919.518798] bdbm: llm_make_req: 10500000, 96 +[275928.888583] bdbm: nvm: total access = 10600000, total read = 3140871, read hit = 1210035, total_write = 7459128, write hit = 7459128, hit = 3055530, evict = 5351489 +[275944.035908] bdbm: llm_make_req: 10550000, 9 +[275966.645049] bdbm: llm_make_req: 10600000, 7 +[275969.698866] bdbm: nvm: total access = 10700000, total read = 3180613, read hit = 1225431, total_write = 7519386, write hit = 7519386, hit = 3094356, evict = 5388317 +[275988.714291] bdbm: llm_make_req: 10650000, 95 +[276010.376036] bdbm: nvm: total access = 10800000, total read = 3220604, read hit = 1240957, total_write = 7579395, write hit = 7579395, hit = 3133504, evict = 5424704 +[276015.735145] bdbm: llm_make_req: 10700000, 96 +[276038.616979] bdbm: llm_make_req: 10750000, 1 +[276050.896688] bdbm: nvm: total access = 10900000, total read = 3260531, read hit = 1256539, total_write = 7639468, write hit = 7639468, hit = 3172539, evict = 5461324 +[276061.060119] bdbm: llm_make_req: 10800000, 21 +[276084.670814] bdbm: llm_make_req: 10850000, 96 +[276091.193208] bdbm: nvm: total access = 11000000, total read = 3300435, read hit = 1272175, total_write = 7699564, write hit = 7699564, hit = 3211989, evict = 5497606 +[276111.496213] bdbm: llm_make_req: 10900000, 2 +[276131.660933] bdbm: nvm: total access = 11100000, total read = 3340839, read hit = 1287948, total_write = 7759160, write hit = 7759160, hit = 3251308, evict = 5533656 +[276134.793897] bdbm: llm_make_req: 10950000, 1 +[276157.953161] bdbm: llm_make_req: 11000000, 15 +[276172.462377] bdbm: nvm: total access = 11200000, total read = 3380397, read hit = 1303307, total_write = 7819602, write hit = 7819602, hit = 3290478, evict = 5570287 +[276182.420377] bdbm: llm_make_req: 11050000, 96 +[276208.664376] bdbm: llm_make_req: 11100000, 1 +[276212.964618] bdbm: nvm: total access = 11300000, total read = 3420341, read hit = 1319283, total_write = 7879658, write hit = 7879658, hit = 3329931, evict = 5606866 +[276231.460562] bdbm: llm_make_req: 11150000, 3 +[276253.588579] bdbm: nvm: total access = 11400000, total read = 3460482, read hit = 1334903, total_write = 7939517, write hit = 7939517, hit = 3369196, evict = 5643080 +[276254.401283] bdbm: llm_make_req: 11200000, 10 +[276279.343716] bdbm: llm_make_req: 11250000, 96 +[276294.329419] bdbm: nvm: total access = 11500000, total read = 3500403, read hit = 1350771, total_write = 7999596, write hit = 7999596, hit = 3408586, evict = 5679637 +[276304.767361] bdbm: llm_make_req: 11300000, 16 +[276327.514590] bdbm: llm_make_req: 11350000, 12 +[276333.902375] bdbm: nvm: total access = 11600000, total read = 3540961, read hit = 1366530, total_write = 8059038, write hit = 8059038, hit = 3447765, evict = 5715659 +[276350.307486] bdbm: llm_make_req: 11400000, 2 +[276374.387558] bdbm: nvm: total access = 11700000, total read = 3580775, read hit = 1382384, total_write = 8119224, write hit = 8119224, hit = 3487287, evict = 5752177 +[276376.037321] bdbm: llm_make_req: 11450000, 96 +[276400.581418] bdbm: llm_make_req: 11500000, 1 +[276415.418556] bdbm: nvm: total access = 11800000, total read = 3620779, read hit = 1398454, total_write = 8179220, write hit = 8179220, hit = 3526861, evict = 5788669 +[276424.100764] bdbm: llm_make_req: 11550000, 1 +[276447.208279] bdbm: llm_make_req: 11600000, 1 +[276456.446066] bdbm: nvm: total access = 11900000, total read = 3660648, read hit = 1414031, total_write = 8239351, write hit = 8239351, hit = 3565727, evict = 5825511 +[276473.041397] bdbm: llm_make_req: 11650000, 96 +[276497.064689] bdbm: nvm: total access = 12000000, total read = 3700410, read hit = 1429340, total_write = 8299589, write hit = 8299589, hit = 3604628, evict = 5862157 +[276497.126342] bdbm: llm_make_req: 11700000, 2 +[276520.036712] bdbm: llm_make_req: 11750000, 9 +[276537.710112] bdbm: nvm: total access = 12100000, total read = 3741093, read hit = 1445248, total_write = 8358906, write hit = 8358906, hit = 3643502, evict = 5898508 +[276542.501663] bdbm: llm_make_req: 11800000, 96 +[276569.978096] bdbm: llm_make_req: 11850000, 96 +[276578.557640] bdbm: nvm: total access = 12200000, total read = 3780712, read hit = 1460673, total_write = 8419287, write hit = 8419287, hit = 3682786, evict = 5935030 +[276593.398584] bdbm: llm_make_req: 11900000, 8 +[276616.734716] bdbm: llm_make_req: 11950000, 1 +[276619.262488] bdbm: nvm: total access = 12300000, total read = 3821226, read hit = 1476919, total_write = 8478773, write hit = 8478773, hit = 3722440, evict = 5971108 +[276639.848515] bdbm: llm_make_req: 12000000, 96 +[276660.342387] bdbm: nvm: total access = 12400000, total read = 3861030, read hit = 1492176, total_write = 8538969, write hit = 8538969, hit = 3760612, evict = 6008389 +[276666.165643] bdbm: llm_make_req: 12050000, 1 +[276689.058837] bdbm: llm_make_req: 12100000, 2 +[276701.149184] bdbm: nvm: total access = 12500000, total read = 3900325, read hit = 1507744, total_write = 8599674, write hit = 8599674, hit = 3800147, evict = 6045127 +[276711.746833] bdbm: llm_make_req: 12150000, 10 +[276735.514550] bdbm: llm_make_req: 12200000, 95 +[276741.951446] bdbm: nvm: total access = 12600000, total read = 3940069, read hit = 1523511, total_write = 8659930, write hit = 8659930, hit = 3839652, evict = 6081645 +[276762.219756] bdbm: llm_make_req: 12250000, 2 +[276782.681463] bdbm: nvm: total access = 12700000, total read = 3979990, read hit = 1539445, total_write = 8720009, write hit = 8720009, hit = 3879013, evict = 6118297 +[276785.260417] bdbm: llm_make_req: 12300000, 21 +[276807.723010] bdbm: llm_make_req: 12350000, 4 +[276823.194607] bdbm: nvm: total access = 12800000, total read = 4020065, read hit = 1555487, total_write = 8779934, write hit = 8779934, hit = 3918385, evict = 6154892 +[276831.849760] bdbm: llm_make_req: 12400000, 96 +[276857.869515] bdbm: llm_make_req: 12450000, 1 +[276863.972321] bdbm: nvm: total access = 12900000, total read = 4059881, read hit = 1571177, total_write = 8840118, write hit = 8840118, hit = 3958003, evict = 6191148 +[276880.722091] bdbm: llm_make_req: 12500000, 11 +[276901.563429] bdbm: llm_make_req: 12550000, 96 +[276905.436207] bdbm: nvm: total access = 13000000, total read = 4099832, read hit = 1586654, total_write = 8900167, write hit = 8900167, hit = 3997202, evict = 6227475 +[276919.860120] bdbm: llm_make_req: 12600000, 96 +[276936.495486] bdbm: llm_make_req: 12650000, 21 +[276948.376172] bdbm: nvm: total access = 13100000, total read = 4140232, read hit = 1602599, total_write = 8959767, write hit = 8959767, hit = 4036821, evict = 6263401 +[276954.248805] bdbm: llm_make_req: 12700000, 96 +[276976.514674] bdbm: llm_make_req: 12750000, 96 +[276991.107483] bdbm: nvm: total access = 13200000, total read = 4180147, read hit = 1618484, total_write = 9019852, write hit = 9019852, hit = 4076397, evict = 6299795 +[276995.073885] bdbm: llm_make_req: 12800000, 1 +[277013.275071] bdbm: llm_make_req: 12850000, 1 +[277032.823568] bdbm: nvm: total access = 13300000, total read = 4220378, read hit = 1634012, total_write = 9079621, write hit = 9079621, hit = 4115546, evict = 6335943 +[277035.417789] bdbm: llm_make_req: 12900000, 96 +[277055.007787] bdbm: llm_make_req: 12950000, 15 +[277071.967179] bdbm: llm_make_req: 13000000, 1 +[277075.900811] bdbm: nvm: total access = 13400000, total read = 4260601, read hit = 1649648, total_write = 9139398, write hit = 9139398, hit = 4154349, evict = 6372553 +[277093.010880] bdbm: llm_make_req: 13050000, 96 +[277112.723563] bdbm: llm_make_req: 13100000, 2 +[277118.812661] bdbm: nvm: total access = 13500000, total read = 4301004, read hit = 1665580, total_write = 9198995, write hit = 9198995, hit = 4193709, evict = 6408722 +[277128.604836] bdbm: llm_make_req: 13150000, 1 +[277148.653392] bdbm: llm_make_req: 13200000, 96 +[290103.230731] bdbm: ----------------------------------------------- +[290103.230733] bdbm: < PERFORMANCE SUMMARY > +[290103.230734] bdbm: [0] Execution Time (us): 18773.387587 +[290103.230734] bdbm: +[290103.230735] bdbm: [1] Total I/Os +[290103.230735] bdbm: # of page reads: 4696064 +[290103.230736] bdbm: # of page writes: 2043341 +[290103.230736] bdbm: # of block erase: 34560 +[290103.230737] bdbm: +[290103.230737] bdbm: [2] Normal I/Os +[290103.230738] bdbm: # of page reads: 2652993 +[290103.230738] bdbm: # of page writes: 0 +[290103.230739] bdbm: # of page rmw reads: 0 +[290103.230739] bdbm: # of page rmw writes: 0 +[290103.230740] bdbm: +[290103.230740] bdbm: [3] GC I/Os +[290103.230741] bdbm: # of GC invocation: 0 +[290103.230741] bdbm: # of page reads: 2043071 +[290103.230741] bdbm: # of page writes: 2043341 +[290103.230742] bdbm: # of block erase: 34560 +[290103.230742] bdbm: +[290103.230743] bdbm: [4] Meta I/Os +[290103.230743] bdbm: # of meta page reads: 0 +[290103.230744] bdbm: # of meta page writes: 0 +[290103.230744] bdbm: +[290103.230745] bdbm: [5] Elapsed Time +[290103.230745] bdbm: page read (us): 514 (S:403 + Q:9 + D:102) +[290103.230746] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[290103.230747] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[290103.230747] bdbm: +[290103.230747] bdbm: [6] Utilization (R) +[290103.230749] bdbm: 36398 36765 36787 36821 37019 36510 36532 36644 +[290103.230751] bdbm: 36549 36836 36498 36545 36963 36580 36719 36726 +[290103.230752] bdbm: 36448 36458 36815 36732 36700 36801 36614 36750 +[290103.230753] bdbm: 36624 36899 36940 36828 36734 36877 36639 36694 +[290103.230754] bdbm: 36713 36879 36506 36851 36575 36552 36702 36733 +[290103.230755] bdbm: 36843 36449 36758 36544 36482 36746 36779 37142 +[290103.230756] bdbm: 36801 36765 36658 36872 36856 36698 36673 36990 +[290103.230758] bdbm: 36692 36767 36679 37010 36682 36653 36806 36544 +[290103.230759] bdbm: 36622 36758 36603 36701 36805 36693 36837 36733 +[290103.230760] bdbm: 36616 36431 36186 36254 36883 36514 36693 36757 +[290103.230761] bdbm: 36835 36675 36398 36418 36874 36417 36652 36566 +[290103.230762] bdbm: 36430 36656 36827 37020 36646 36638 36851 36611 +[290103.230763] bdbm: 36807 36850 36638 36704 36828 36828 36811 36579 +[290103.230764] bdbm: 37035 36965 36527 36450 36429 36725 36528 36862 +[290103.230766] bdbm: 36641 36752 36449 36578 36557 36683 36571 36871 +[290103.230767] bdbm: 36366 36337 36682 36821 36746 36572 36732 36695 +[290103.230767] bdbm: +[290103.230768] bdbm: [7] Utilization (W) +[290103.230769] bdbm: 15976 16005 16028 16038 16051 16056 16058 16060 +[290103.230770] bdbm: 16066 16069 16073 16075 16074 16070 16072 16072 +[290103.230771] bdbm: 16072 16070 16068 16067 16067 16065 16061 16059 +[290103.230772] bdbm: 16057 16055 16052 16051 16050 16045 16042 16039 +[290103.230774] bdbm: 16038 16034 16031 16030 16027 16024 16021 16019 +[290103.230775] bdbm: 16017 16015 16012 16010 16007 16005 16004 16002 +[290103.230776] bdbm: 16001 15998 15993 15992 15989 15988 15986 15982 +[290103.230777] bdbm: 15981 15977 15975 15975 15974 15971 15967 15967 +[290103.230778] bdbm: 15966 15965 15963 15961 15956 15955 15953 15949 +[290103.230779] bdbm: 15948 15946 15945 15942 15941 15937 15936 15932 +[290103.230780] bdbm: 15930 15928 15922 15922 15920 15918 15916 15915 +[290103.230781] bdbm: 15915 15914 15914 15912 15908 15904 15901 15901 +[290103.230783] bdbm: 15899 15896 15893 15889 15886 15885 15884 15880 +[290103.230784] bdbm: 15878 15878 15877 15873 15870 15869 15868 15867 +[290103.230785] bdbm: 15865 15864 15862 15860 15858 15856 15853 15853 +[290103.230786] bdbm: 15852 15851 15850 15849 15846 15842 15840 15838 +[290103.230786] bdbm: [8] NVM I/Os +[290103.230787] bdbm: #_of_nvm_total_accesses: 13573664 +[290103.230788] bdbm: #_of_nvm_total_write_requests: 9243506 +[290103.230788] bdbm: #_of_nvm_total_read_requests: 4330158 +[290103.230788] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9243506 +[290103.230789] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1677137 +[290103.230789] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 4222872 +[290103.230790] bdbm: #_of_nvm_evict_from_nvm: 6435627 +[290103.230790] bdbm: #_of_nvm_write_amplification: 6435627 : 8478968 +[290103.230791] bdbm: +[290103.230791] bdbm: ----------------------------------------------- +[290103.230792] bdbm: ----------------------------------------------- +[290103.381174] bdbm: done +[290103.381177] bdbm: [dm_ramdrive_close] closed! +[290103.771617] bdbm: [bdbm_drv_main] bdbm_drv is closed +[290103.771620] bdbm: [bdbm_drv_main] bdbm_drv is removed +[290103.791281] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[290103.812192] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[290103.815925] bdbm: ===================================================================== +[290103.815927] bdbm: DEVICE PARAMETERS +[290103.815928] bdbm: ===================================================================== +[290103.815928] bdbm: # of channels = 8 +[290103.815929] bdbm: # of chips per channel = 16 +[290103.815929] bdbm: # of blocks per chip = 256 +[290103.815930] bdbm: # of pages per block = 128 +[290103.815930] bdbm: # of subpages per page = 1 +[290103.815931] bdbm: page main size = 4096 bytes +[290103.815932] bdbm: page oob size = 64 bytes +[290103.815932] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[290103.815933] bdbm: +[290103.815933] bdbm: ===================================================================== +[290103.815934] bdbm: RAM DISK INFO +[290103.815934] bdbm: ===================================================================== +[290103.815935] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[290105.366910] bdbm: ramssd addr = ffffc90050001000 +[290105.366912] bdbm: +[290105.366912] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[290106.929416] bdbm: *** building ptr_ramssd_data done +[290106.929607] bdbm: [dm_ramdrive_probe] probe done! +[290106.929622] bdbm: [dm_ramdrive_open] open done! +[290107.027927] bdbm: nvm cache addr = ffffc90870003000 +[290107.030285] bdbm: ========================================================== +[290107.030287] bdbm: NVM CONFIGURATION +[290107.030287] bdbm: ========================================================== +[290107.030288] bdbm: total size = 1073741824, nr_nvm_pages = 262144, nvm_page_size = 4096 +[290107.187150] bdbm: TRIM is disabled +[290107.187307] bdbm: ===================================================================== +[290107.187308] bdbm: DEVICE PARAMETERS +[290107.187309] bdbm: ===================================================================== +[290107.187309] bdbm: # of channels = 8 +[290107.187310] bdbm: # of chips per channel = 16 +[290107.187310] bdbm: # of blocks per chip = 256 +[290107.187311] bdbm: # of pages per block = 128 +[290107.187311] bdbm: # of subpages per page = 1 +[290107.187312] bdbm: page main size = 4096 bytes +[290107.187312] bdbm: page oob size = 64 bytes +[290107.187313] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[290107.187313] bdbm: +[290107.187314] bdbm: ===================================================================== +[290107.187315] bdbm: FTL CONFIGURATION +[290107.187315] bdbm: ===================================================================== +[290107.187316] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[290107.187316] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[290107.187317] bdbm: wl policy = 1 (1: none, 2: swap) +[290107.187317] bdbm: trim mode = 2 (1: enable, 2: disable) +[290107.187318] bdbm: kernel sector = 512 bytes +[290107.187318] bdbm: +[290107.187320] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[290107.205886] bdbm: llm_make_req: 0, 1 +[290123.204357] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[290123.204359] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[290286.286766] bdbm: nvm: total access = 100000, total read = 34, read hit = 6, total_write = 99965, write hit = 99965, hit = 33816, evict = 0 +[291672.304806] bdbm: ----------------------------------------------- +[291672.304808] bdbm: < PERFORMANCE SUMMARY > +[291672.304809] bdbm: [0] Execution Time (us): 1565.16005 +[291672.304809] bdbm: +[291672.304810] bdbm: [1] Total I/Os +[291672.304810] bdbm: # of page reads: 0 +[291672.304811] bdbm: # of page writes: 0 +[291672.304811] bdbm: # of block erase: 0 +[291672.304812] bdbm: +[291672.304812] bdbm: [2] Normal I/Os +[291672.304813] bdbm: # of page reads: 0 +[291672.304813] bdbm: # of page writes: 0 +[291672.304814] bdbm: # of page rmw reads: 0 +[291672.304814] bdbm: # of page rmw writes: 0 +[291672.304814] bdbm: +[291672.304815] bdbm: [3] GC I/Os +[291672.304815] bdbm: # of GC invocation: 0 +[291672.304816] bdbm: # of page reads: 0 +[291672.304816] bdbm: # of page writes: 0 +[291672.304817] bdbm: # of block erase: 0 +[291672.304817] bdbm: +[291672.304818] bdbm: [4] Meta I/Os +[291672.304818] bdbm: # of meta page reads: 0 +[291672.304819] bdbm: # of meta page writes: 0 +[291672.304819] bdbm: +[291672.304819] bdbm: [5] Elapsed Time +[291672.304820] bdbm: page read (us): 0 (S:0 + Q:0 + D:0) +[291672.304821] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[291672.304821] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[291672.304822] bdbm: +[291672.304822] bdbm: [6] Utilization (R) +[291672.304824] bdbm: 0 0 0 0 0 0 0 0 +[291672.304825] bdbm: 0 0 0 0 0 0 0 0 +[291672.304826] bdbm: 0 0 0 0 0 0 0 0 +[291672.304828] bdbm: 0 0 0 0 0 0 0 0 +[291672.304829] bdbm: 0 0 0 0 0 0 0 0 +[291672.304830] bdbm: 0 0 0 0 0 0 0 0 +[291672.304831] bdbm: 0 0 0 0 0 0 0 0 +[291672.304832] bdbm: 0 0 0 0 0 0 0 0 +[291672.304833] bdbm: 0 0 0 0 0 0 0 0 +[291672.304834] bdbm: 0 0 0 0 0 0 0 0 +[291672.304835] bdbm: 0 0 0 0 0 0 0 0 +[291672.304836] bdbm: 0 0 0 0 0 0 0 0 +[291672.304838] bdbm: 0 0 0 0 0 0 0 0 +[291672.304839] bdbm: 0 0 0 0 0 0 0 0 +[291672.304840] bdbm: 0 0 0 0 0 0 0 0 +[291672.304841] bdbm: 0 0 0 0 0 0 0 0 +[291672.304841] bdbm: +[291672.304842] bdbm: [7] Utilization (W) +[291672.304843] bdbm: 0 0 0 0 0 0 0 0 +[291672.304844] bdbm: 0 0 0 0 0 0 0 0 +[291672.304845] bdbm: 0 0 0 0 0 0 0 0 +[291672.304846] bdbm: 0 0 0 0 0 0 0 0 +[291672.304847] bdbm: 0 0 0 0 0 0 0 0 +[291672.304849] bdbm: 0 0 0 0 0 0 0 0 +[291672.304850] bdbm: 0 0 0 0 0 0 0 0 +[291672.304851] bdbm: 0 0 0 0 0 0 0 0 +[291672.304852] bdbm: 0 0 0 0 0 0 0 0 +[291672.304853] bdbm: 0 0 0 0 0 0 0 0 +[291672.304854] bdbm: 0 0 0 0 0 0 0 0 +[291672.304855] bdbm: 0 0 0 0 0 0 0 0 +[291672.304856] bdbm: 0 0 0 0 0 0 0 0 +[291672.304857] bdbm: 0 0 0 0 0 0 0 0 +[291672.304858] bdbm: 0 0 0 0 0 0 0 0 +[291672.304859] bdbm: 0 0 0 0 0 0 0 0 +[291672.304860] bdbm: [8] NVM I/Os +[291672.304860] bdbm: #_of_nvm_total_accesses: 126704 +[291672.304861] bdbm: #_of_nvm_total_write_requests: 126670 +[291672.304861] bdbm: #_of_nvm_total_read_requests: 34 +[291672.304862] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 126670 +[291672.304862] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 6 +[291672.304863] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 33880 +[291672.304863] bdbm: #_of_nvm_evict_from_nvm: 0 +[291672.304864] bdbm: #_of_nvm_write_amplification: 0 : 0 +[291672.304864] bdbm: +[291672.304865] bdbm: ----------------------------------------------- +[291672.304865] bdbm: ----------------------------------------------- +[291672.463479] bdbm: done +[291672.463481] bdbm: [dm_ramdrive_close] closed! +[291672.852313] bdbm: [bdbm_drv_main] bdbm_drv is closed +[291672.852316] bdbm: [bdbm_drv_main] bdbm_drv is removed +[291672.876555] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[291672.901973] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[291672.906313] bdbm: ===================================================================== +[291672.906315] bdbm: DEVICE PARAMETERS +[291672.906316] bdbm: ===================================================================== +[291672.906317] bdbm: # of channels = 8 +[291672.906317] bdbm: # of chips per channel = 16 +[291672.906318] bdbm: # of blocks per chip = 256 +[291672.906319] bdbm: # of pages per block = 128 +[291672.906320] bdbm: # of subpages per page = 1 +[291672.906320] bdbm: page main size = 4096 bytes +[291672.906321] bdbm: page oob size = 64 bytes +[291672.906322] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[291672.906322] bdbm: +[291672.906323] bdbm: ===================================================================== +[291672.906324] bdbm: RAM DISK INFO +[291672.906325] bdbm: ===================================================================== +[291672.906326] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[291674.437932] bdbm: ramssd addr = ffffc90050001000 +[291674.437934] bdbm: +[291674.437934] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[291675.963700] bdbm: *** building ptr_ramssd_data done +[291675.963942] bdbm: [dm_ramdrive_probe] probe done! +[291675.963944] bdbm: [dm_ramdrive_open] open done! +[291676.160825] bdbm: nvm cache addr = ffffc908d1385000 +[291676.166105] bdbm: ========================================================== +[291676.166107] bdbm: NVM CONFIGURATION +[291676.166108] bdbm: ========================================================== +[291676.166109] bdbm: total size = 2147483648, nr_nvm_pages = 524288, nvm_page_size = 4096 +[291676.323631] bdbm: TRIM is disabled +[291676.323725] bdbm: ===================================================================== +[291676.323726] bdbm: DEVICE PARAMETERS +[291676.323727] bdbm: ===================================================================== +[291676.323727] bdbm: # of channels = 8 +[291676.323728] bdbm: # of chips per channel = 16 +[291676.323728] bdbm: # of blocks per chip = 256 +[291676.323729] bdbm: # of pages per block = 128 +[291676.323729] bdbm: # of subpages per page = 1 +[291676.323730] bdbm: page main size = 4096 bytes +[291676.323730] bdbm: page oob size = 64 bytes +[291676.323731] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[291676.323731] bdbm: +[291676.323732] bdbm: ===================================================================== +[291676.323732] bdbm: FTL CONFIGURATION +[291676.323733] bdbm: ===================================================================== +[291676.323733] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[291676.323734] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[291676.323735] bdbm: wl policy = 1 (1: none, 2: swap) +[291676.323735] bdbm: trim mode = 2 (1: enable, 2: disable) +[291676.323736] bdbm: kernel sector = 512 bytes +[291676.323736] bdbm: +[291676.323737] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[291676.342041] bdbm: llm_make_req: 0, 1 +[291711.433374] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[291711.433376] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[291784.527540] bdbm: nvm: total access = 100000, total read = 42, read hit = 14, total_write = 99957, write hit = 99957, hit = 33893, evict = 0 +[291889.289365] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 33999, evict = 0 +[291995.019567] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 34110, evict = 0 +[292100.947879] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 34217, evict = 0 +[292206.350390] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 34325, evict = 0 +[292311.866643] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 34390, evict = 41293 +[292321.216058] bdbm: llm_make_req: 50000, 1 +[292372.961712] bdbm: llm_make_req: 100000, 1 +[292415.352814] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 34400, evict = 141283 +[292424.276562] bdbm: llm_make_req: 150000, 1 +[292478.365062] bdbm: llm_make_req: 200000, 1 +[292520.877214] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 34401, evict = 241282 +[292531.765757] bdbm: llm_make_req: 250000, 1 +[292585.426383] bdbm: llm_make_req: 300000, 1 +[292627.668822] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 34401, evict = 341282 +[292637.013094] bdbm: llm_make_req: 350000, 1 +[292688.661914] bdbm: llm_make_req: 400000, 1 +[292730.874362] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 34401, evict = 441282 +[292739.748248] bdbm: llm_make_req: 450000, 1 +[292790.906025] bdbm: llm_make_req: 500000, 1 +[292833.135729] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 34401, evict = 541282 +[292841.954881] bdbm: llm_make_req: 550000, 1 +[292896.508988] bdbm: llm_make_req: 600000, 1 +[292938.664229] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 34401, evict = 641282 +[292947.616154] bdbm: llm_make_req: 650000, 1 +[292998.882908] bdbm: llm_make_req: 700000, 1 +[293041.091121] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 34401, evict = 741282 +[293050.036846] bdbm: llm_make_req: 750000, 1 +[293101.260273] bdbm: llm_make_req: 800000, 1 +[293143.355164] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 34401, evict = 841282 +[293152.238041] bdbm: llm_make_req: 850000, 1 +[293203.105577] bdbm: llm_make_req: 900000, 1 +[293245.893394] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 34401, evict = 941282 +[293254.775640] bdbm: llm_make_req: 950000, 1 +[293305.709509] bdbm: llm_make_req: 1000000, 1 +[293348.067352] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 34401, evict = 1041282 +[293356.924184] bdbm: llm_make_req: 1050000, 1 +[293409.707666] bdbm: llm_make_req: 1100000, 1 +[293452.866159] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 34401, evict = 1141282 +[293461.961069] bdbm: llm_make_req: 1150000, 1 +[293514.793594] bdbm: llm_make_req: 1200000, 1 +[293557.555582] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 34401, evict = 1241282 +[293566.415944] bdbm: llm_make_req: 1250000, 1 +[293619.399804] bdbm: llm_make_req: 1300000, 1 +[293663.029302] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 34401, evict = 1341282 +[293672.151431] bdbm: llm_make_req: 1350000, 1 +[293725.388424] bdbm: llm_make_req: 1400000, 1 +[293769.317104] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 34401, evict = 1441282 +[293778.659010] bdbm: llm_make_req: 1450000, 1 +[293831.176719] bdbm: llm_make_req: 1500000, 1 +[293875.107997] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 34401, evict = 1541282 +[293883.964828] bdbm: llm_make_req: 1550000, 1 +[293938.057463] bdbm: llm_make_req: 1600000, 1 +[293982.497150] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 34401, evict = 1641282 +[293991.354749] bdbm: llm_make_req: 1650000, 1 +[294044.647803] bdbm: llm_make_req: 1700000, 1 +[294088.710155] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 34401, evict = 1741282 +[294097.628696] bdbm: llm_make_req: 1750000, 1 +[294150.985891] bdbm: llm_make_req: 1800000, 1 +[294195.154425] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 34401, evict = 1841282 +[294204.725472] bdbm: llm_make_req: 1850000, 1 +[294257.617672] bdbm: llm_make_req: 1900000, 1 +[294302.464410] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 34401, evict = 1941282 +[294311.380777] bdbm: llm_make_req: 1950000, 1 +[294365.851342] bdbm: llm_make_req: 2000000, 1 +[294409.975021] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 34401, evict = 2041282 +[294419.557168] bdbm: llm_make_req: 2050000, 1 +[294474.541618] bdbm: llm_make_req: 2100000, 1 +[294518.420908] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 34401, evict = 2141282 +[294527.282845] bdbm: llm_make_req: 2150000, 1 +[294580.738853] bdbm: llm_make_req: 2200000, 4 +[294621.437232] bdbm: nvm: total access = 2800000, total read = 19911, read hit = 1601, total_write = 2780088, write hit = 2780088, hit = 38487, evict = 2218914 +[294635.525484] bdbm: llm_make_req: 2250000, 1 +[294691.340555] bdbm: llm_make_req: 2300000, 1 +[294715.479330] bdbm: nvm: total access = 2900000, total read = 59696, read hit = 7946, total_write = 2840303, write hit = 2840303, hit = 54546, evict = 2269415 +[294748.787466] bdbm: llm_make_req: 2350000, 11 +[294803.718595] bdbm: nvm: total access = 3000000, total read = 100280, read hit = 18067, total_write = 2899719, write hit = 2899719, hit = 79263, evict = 2314235 +[294807.949341] bdbm: llm_make_req: 2400000, 1 +[294868.754432] bdbm: llm_make_req: 2450000, 1 +[294886.883565] bdbm: nvm: total access = 3100000, total read = 139834, read hit = 30810, total_write = 2960165, write hit = 2960165, hit = 111065, evict = 2355622 +[294931.732825] bdbm: llm_make_req: 2500000, 1 +[294966.340180] bdbm: nvm: total access = 3200000, total read = 179831, read hit = 46049, total_write = 3020168, write hit = 3020168, hit = 149236, evict = 2392693 +[294997.848139] bdbm: llm_make_req: 2550000, 12 +[295042.691447] bdbm: nvm: total access = 3300000, total read = 219631, read hit = 63347, total_write = 3080368, write hit = 3080368, hit = 192979, evict = 2426448 +[295067.063344] bdbm: llm_make_req: 2600000, 1 +[295117.750293] bdbm: nvm: total access = 3400000, total read = 258809, read hit = 82037, total_write = 3141190, write hit = 3141190, hit = 240612, evict = 2458327 +[295139.500809] bdbm: llm_make_req: 2650000, 2 +[295191.354103] bdbm: nvm: total access = 3500000, total read = 298703, read hit = 102298, total_write = 3201296, write hit = 3201296, hit = 291439, evict = 2487867 +[295215.601021] bdbm: llm_make_req: 2700000, 1 +[295263.977417] bdbm: nvm: total access = 3600000, total read = 338422, read hit = 123448, total_write = 3261577, write hit = 3261577, hit = 345070, evict = 2515667 +[295295.653182] bdbm: llm_make_req: 2750000, 1 +[295335.547102] bdbm: nvm: total access = 3700000, total read = 378575, read hit = 146278, total_write = 3321424, write hit = 3321424, hit = 401981, evict = 2541433 +[295380.196968] bdbm: llm_make_req: 2800000, 1 +[295407.346692] bdbm: nvm: total access = 3800000, total read = 418408, read hit = 169845, total_write = 3381591, write hit = 3381591, hit = 460262, evict = 2566886 +[295468.741215] bdbm: llm_make_req: 2850000, 1 +[295479.239322] bdbm: nvm: total access = 3900000, total read = 458062, read hit = 193630, total_write = 3441937, write hit = 3441937, hit = 520037, evict = 2591242 +[295550.653098] bdbm: nvm: total access = 4000000, total read = 497430, read hit = 217868, total_write = 3502569, write hit = 3502569, hit = 581736, evict = 2614413 +[295562.176573] bdbm: llm_make_req: 2900000, 1 +[295621.619719] bdbm: nvm: total access = 4100000, total read = 538034, read hit = 243596, total_write = 3561965, write hit = 3561965, hit = 644891, evict = 2636382 +[295659.125580] bdbm: llm_make_req: 2950000, 1 +[295691.519822] bdbm: nvm: total access = 4200000, total read = 577924, read hit = 269176, total_write = 3622075, write hit = 3622075, hit = 709299, evict = 2657664 +[295757.652580] bdbm: llm_make_req: 3000000, 10 +[295760.428481] bdbm: nvm: total access = 4300000, total read = 617702, read hit = 294928, total_write = 3682297, write hit = 3682297, hit = 774252, evict = 2678685 +[295828.109729] bdbm: nvm: total access = 4400000, total read = 657262, read hit = 321135, total_write = 3742737, write hit = 3742737, hit = 840959, evict = 2698625 +[295860.038274] bdbm: llm_make_req: 3050000, 3 +[295895.453177] bdbm: nvm: total access = 4500000, total read = 698111, read hit = 348573, total_write = 3801888, write hit = 3801888, hit = 908476, evict = 2717697 +[295960.291868] bdbm: llm_make_req: 3100000, 4 +[295964.227358] bdbm: nvm: total access = 4600000, total read = 737799, read hit = 374469, total_write = 3862200, write hit = 3862200, hit = 973656, evict = 2738725 +[296035.931000] bdbm: nvm: total access = 4700000, total read = 777749, read hit = 399298, total_write = 3922250, write hit = 3922250, hit = 1035991, evict = 2761269 +[296055.116985] bdbm: llm_make_req: 3150000, 1 +[296109.937311] bdbm: nvm: total access = 4800000, total read = 817436, read hit = 423122, total_write = 3982563, write hit = 3982563, hit = 1095504, evict = 2785893 +[296144.927721] bdbm: llm_make_req: 3200000, 1 +[296185.178794] bdbm: nvm: total access = 4900000, total read = 857284, read hit = 445998, total_write = 4042715, write hit = 4042715, hit = 1152843, evict = 2811582 +[296232.484407] bdbm: llm_make_req: 3250000, 6 +[296261.407884] bdbm: nvm: total access = 5000000, total read = 896908, read hit = 468149, total_write = 4103091, write hit = 4103091, hit = 1209071, evict = 2837881 +[296318.352473] bdbm: llm_make_req: 3300000, 4 +[296338.570180] bdbm: nvm: total access = 5100000, total read = 936413, read hit = 489609, total_write = 4163586, write hit = 4163586, hit = 1263511, evict = 2865396 +[296403.365124] bdbm: llm_make_req: 3350000, 5 +[296415.968359] bdbm: nvm: total access = 5200000, total read = 975757, read hit = 511109, total_write = 4224242, write hit = 4224242, hit = 1318256, evict = 2892807 +[296487.835994] bdbm: llm_make_req: 3400000, 1 +[296493.918079] bdbm: nvm: total access = 5300000, total read = 1015140, read hit = 532254, total_write = 4284859, write hit = 4284859, hit = 1372017, evict = 2920808 +[296571.647573] bdbm: nvm: total access = 5400000, total read = 1054719, read hit = 553456, total_write = 4345280, write hit = 4345280, hit = 1425943, evict = 2948505 +[296572.025975] bdbm: llm_make_req: 3450000, 3 +[296649.685156] bdbm: nvm: total access = 5500000, total read = 1094907, read hit = 575293, total_write = 4405092, write hit = 4405092, hit = 1480060, evict = 2976037 +[296656.774424] bdbm: llm_make_req: 3500000, 1 +[296726.903409] bdbm: nvm: total access = 5600000, total read = 1135020, read hit = 596936, total_write = 4464979, write hit = 4464979, hit = 1534409, evict = 3003218 +[296741.705172] bdbm: llm_make_req: 3550000, 4 +[296804.227484] bdbm: nvm: total access = 5700000, total read = 1175371, read hit = 618804, total_write = 4524628, write hit = 4524628, hit = 1588864, evict = 3030280 +[296827.483577] bdbm: llm_make_req: 3600000, 1 +[296881.638200] bdbm: nvm: total access = 5800000, total read = 1215888, read hit = 641457, total_write = 4584111, write hit = 4584111, hit = 1644658, evict = 3056622 +[296915.563813] bdbm: llm_make_req: 3650000, 1 +[296958.631730] bdbm: nvm: total access = 5900000, total read = 1256374, read hit = 664600, total_write = 4643625, write hit = 4643625, hit = 1701753, evict = 3082184 +[297005.437116] bdbm: llm_make_req: 3700000, 1 +[297035.545655] bdbm: nvm: total access = 6000000, total read = 1296567, read hit = 687584, total_write = 4703432, write hit = 4703432, hit = 1759110, evict = 3107618 +[297096.906103] bdbm: llm_make_req: 3750000, 1 +[297112.667646] bdbm: nvm: total access = 6100000, total read = 1336979, read hit = 710975, total_write = 4763020, write hit = 4763020, hit = 1817329, evict = 3132378 +[297189.673190] bdbm: nvm: total access = 6200000, total read = 1377130, read hit = 734340, total_write = 4822869, write hit = 4822869, hit = 1875998, evict = 3156923 +[297190.159505] bdbm: llm_make_req: 3800000, 4 +[297265.534817] bdbm: nvm: total access = 6300000, total read = 1418000, read hit = 759077, total_write = 4881999, write hit = 4881999, hit = 1936037, evict = 3180751 +[297285.209790] bdbm: llm_make_req: 3850000, 3 +[297340.510608] bdbm: nvm: total access = 6400000, total read = 1457853, read hit = 783384, total_write = 4942146, write hit = 4942146, hit = 1996745, evict = 3204497 +[297381.171218] bdbm: llm_make_req: 3900000, 13 +[297415.152722] bdbm: nvm: total access = 6500000, total read = 1497726, read hit = 807905, total_write = 5002273, write hit = 5002273, hit = 2058381, evict = 3227509 +[297478.588553] bdbm: llm_make_req: 3950000, 10 +[297489.532803] bdbm: nvm: total access = 6600000, total read = 1537215, read hit = 832308, total_write = 5062784, write hit = 5062784, hit = 2120022, evict = 3250782 +[297562.806289] bdbm: nvm: total access = 6700000, total read = 1577129, read hit = 857336, total_write = 5122870, write hit = 5122870, hit = 2182892, evict = 3273026 +[297576.659199] bdbm: llm_make_req: 4000000, 4 +[297636.559336] bdbm: nvm: total access = 6800000, total read = 1616976, read hit = 882248, total_write = 5183023, write hit = 5183023, hit = 2245178, evict = 3295805 +[297674.683100] bdbm: llm_make_req: 4050000, 1 +[297710.735052] bdbm: nvm: total access = 6900000, total read = 1657125, read hit = 907147, total_write = 5242874, write hit = 5242874, hit = 2306946, evict = 3318787 +[297770.494938] bdbm: llm_make_req: 4100000, 1 +[297785.391715] bdbm: nvm: total access = 7000000, total read = 1696958, read hit = 931476, total_write = 5303041, write hit = 5303041, hit = 2367834, evict = 3342395 +[297861.051489] bdbm: nvm: total access = 7100000, total read = 1736357, read hit = 954879, total_write = 5363642, write hit = 5363642, hit = 2427411, evict = 3366822 +[297864.049568] bdbm: llm_make_req: 4150000, 1 +[297937.752691] bdbm: nvm: total access = 7200000, total read = 1776162, read hit = 978289, total_write = 5423837, write hit = 5423837, hit = 2485992, evict = 3391846 +[297957.023280] bdbm: llm_make_req: 4200000, 1 +[298014.499060] bdbm: nvm: total access = 7300000, total read = 1815737, read hit = 1001268, total_write = 5484262, write hit = 5484262, hit = 2544057, evict = 3417185 +[298047.709515] bdbm: llm_make_req: 4250000, 2 +[298091.872371] bdbm: nvm: total access = 7400000, total read = 1856449, read hit = 1024497, total_write = 5543550, write hit = 5543550, hit = 2601126, evict = 3442633 +[298137.123086] bdbm: llm_make_req: 4300000, 1 +[298169.295076] bdbm: nvm: total access = 7500000, total read = 1896606, read hit = 1047237, total_write = 5603393, write hit = 5603393, hit = 2657480, evict = 3468862 +[298226.082506] bdbm: llm_make_req: 4350000, 10 +[298247.014148] bdbm: nvm: total access = 7600000, total read = 1936824, read hit = 1069897, total_write = 5663175, write hit = 5663175, hit = 2713940, evict = 3494844 +[298313.971757] bdbm: llm_make_req: 4400000, 12 +[298325.179163] bdbm: nvm: total access = 7700000, total read = 1977086, read hit = 1092151, total_write = 5722913, write hit = 5722913, hit = 2769214, evict = 3521562 +[298401.292148] bdbm: llm_make_req: 4450000, 5 +[298403.564116] bdbm: nvm: total access = 7800000, total read = 2017128, read hit = 1114189, total_write = 5782871, write hit = 5782871, hit = 2824390, evict = 3548382 +[298481.591388] bdbm: nvm: total access = 7900000, total read = 2057063, read hit = 1136544, total_write = 5842936, write hit = 5842936, hit = 2880002, evict = 3575190 +[298489.094632] bdbm: llm_make_req: 4500000, 1 +[298559.622293] bdbm: nvm: total access = 8000000, total read = 2096634, read hit = 1158356, total_write = 5903365, write hit = 5903365, hit = 2935278, evict = 3602155 +[298576.498782] bdbm: llm_make_req: 4550000, 1 +[298637.822501] bdbm: nvm: total access = 8100000, total read = 2136813, read hit = 1180683, total_write = 5963186, write hit = 5963186, hit = 2990651, evict = 3628930 +[298664.015488] bdbm: llm_make_req: 4600000, 9 +[298716.410468] bdbm: nvm: total access = 8200000, total read = 2176631, read hit = 1202600, total_write = 6023368, write hit = 6023368, hit = 3045848, evict = 3655832 +[298752.375186] bdbm: llm_make_req: 4650000, 5 +[298794.126907] bdbm: nvm: total access = 8300000, total read = 2216655, read hit = 1225252, total_write = 6083344, write hit = 6083344, hit = 3102585, evict = 3681723 +[298842.322550] bdbm: llm_make_req: 4700000, 1 +[298871.507924] bdbm: nvm: total access = 8400000, total read = 2256292, read hit = 1247688, total_write = 6143707, write hit = 6143707, hit = 3159273, evict = 3707834 +[298932.551687] bdbm: llm_make_req: 4750000, 1 +[298948.215390] bdbm: nvm: total access = 8500000, total read = 2296949, read hit = 1271399, total_write = 6203050, write hit = 6203050, hit = 3217015, evict = 3733146 +[299023.791097] bdbm: llm_make_req: 4800000, 1 +[299024.446513] bdbm: nvm: total access = 8600000, total read = 2336246, read hit = 1294489, total_write = 6263753, write hit = 6263753, hit = 3275346, evict = 3758608 +[299099.895634] bdbm: nvm: total access = 8700000, total read = 2376143, read hit = 1318093, total_write = 6323856, write hit = 6323856, hit = 3334625, evict = 3783036 +[299116.410606] bdbm: llm_make_req: 4850000, 1 +[299174.790021] bdbm: nvm: total access = 8800000, total read = 2416469, read hit = 1342210, total_write = 6383530, write hit = 6383530, hit = 3394635, evict = 3806817 +[299209.866422] bdbm: llm_make_req: 4900000, 2 +[299249.689568] bdbm: nvm: total access = 8900000, total read = 2456426, read hit = 1366102, total_write = 6443573, write hit = 6443573, hit = 3454479, evict = 3830908 +[299303.256965] bdbm: llm_make_req: 4950000, 1 +[299324.157222] bdbm: nvm: total access = 9000000, total read = 2496267, read hit = 1390106, total_write = 6503732, write hit = 6503732, hit = 3514707, evict = 3854843 +[299397.351656] bdbm: llm_make_req: 5000000, 1 +[299398.157758] bdbm: nvm: total access = 9100000, total read = 2536477, read hit = 1414559, total_write = 6563522, write hit = 6563522, hit = 3575301, evict = 3878492 +[299472.788729] bdbm: nvm: total access = 9200000, total read = 2576872, read hit = 1438870, total_write = 6623127, write hit = 6623127, hit = 3635720, evict = 3901989 +[299491.643075] bdbm: llm_make_req: 5050000, 15 +[299547.565131] bdbm: nvm: total access = 9300000, total read = 2616791, read hit = 1462834, total_write = 6683208, write hit = 6683208, hit = 3695709, evict = 3926045 +[299584.390536] bdbm: llm_make_req: 5100000, 1 +[299622.302114] bdbm: nvm: total access = 9400000, total read = 2657565, read hit = 1487135, total_write = 6742434, write hit = 6742434, hit = 3755485, evict = 3949796 +[299677.278396] bdbm: llm_make_req: 5150000, 1 +[299697.361018] bdbm: nvm: total access = 9500000, total read = 2697878, read hit = 1510977, total_write = 6802121, write hit = 6802121, hit = 3814731, evict = 3974079 +[299769.108260] bdbm: llm_make_req: 5200000, 1 +[299772.477310] bdbm: nvm: total access = 9600000, total read = 2737775, read hit = 1534745, total_write = 6862224, write hit = 6862224, hit = 3873854, evict = 3998827 +[299848.198562] bdbm: nvm: total access = 9700000, total read = 2777735, read hit = 1558189, total_write = 6922264, write hit = 6922264, hit = 3932051, evict = 4024114 +[299859.731066] bdbm: llm_make_req: 5250000, 12 +[299924.402608] bdbm: nvm: total access = 9800000, total read = 2818025, read hit = 1581390, total_write = 6981974, write hit = 6981974, hit = 3989822, evict = 4049254 +[299949.946065] bdbm: llm_make_req: 5300000, 2 +[299983.579562] bdbm: llm_make_req: 5350000, 1 +[300002.388060] bdbm: nvm: total access = 9900000, total read = 2857870, read hit = 1604380, total_write = 7042129, write hit = 7042129, hit = 4047299, evict = 4074922 +[300056.029318] bdbm: llm_make_req: 5400000, 96 +[300079.634533] bdbm: nvm: total access = 10000000, total read = 2898057, read hit = 1627527, total_write = 7101942, write hit = 7101942, hit = 4104688, evict = 4100493 +[300126.277882] bdbm: llm_make_req: 5450000, 1 +[300156.981349] bdbm: nvm: total access = 10100000, total read = 2937575, read hit = 1650101, total_write = 7162424, write hit = 7162424, hit = 4161653, evict = 4126584 +[300192.851903] bdbm: llm_make_req: 5500000, 2 +[300234.401642] bdbm: nvm: total access = 10200000, total read = 2977646, read hit = 1672378, total_write = 7222353, write hit = 7222353, hit = 4217442, evict = 4153001 +[300254.724571] bdbm: llm_make_req: 5550000, 1 +[300312.267391] bdbm: nvm: total access = 10300000, total read = 3017477, read hit = 1695015, total_write = 7282522, write hit = 7282522, hit = 4273693, evict = 4179556 +[300324.804221] bdbm: llm_make_req: 5600000, 96 +[300389.585569] bdbm: nvm: total access = 10400000, total read = 3057195, read hit = 1717431, total_write = 7342804, write hit = 7342804, hit = 4330209, evict = 4205738 +[300393.085264] bdbm: llm_make_req: 5650000, 1 +[300454.657026] bdbm: llm_make_req: 5700000, 12 +[300467.332877] bdbm: nvm: total access = 10500000, total read = 3097399, read hit = 1740099, total_write = 7402600, write hit = 7402600, hit = 4386502, evict = 4231909 +[300512.430166] bdbm: llm_make_req: 5750000, 1 +[300544.446331] bdbm: nvm: total access = 10600000, total read = 3137582, read hit = 1762914, total_write = 7462417, write hit = 7462417, hit = 4443574, evict = 4257469 +[300581.816876] bdbm: llm_make_req: 5800000, 96 +[300622.880321] bdbm: nvm: total access = 10700000, total read = 3177188, read hit = 1785490, total_write = 7522811, write hit = 7522811, hit = 4500717, evict = 4283296 +[300642.986939] bdbm: llm_make_req: 5850000, 9 +[300699.973752] bdbm: nvm: total access = 10800000, total read = 3217192, read hit = 1808126, total_write = 7582807, write hit = 7582807, hit = 4557714, evict = 4308931 +[300700.643990] bdbm: llm_make_req: 5900000, 12 +[300762.836002] bdbm: llm_make_req: 5950000, 95 +[300776.597861] bdbm: nvm: total access = 10900000, total read = 3257262, read hit = 1831232, total_write = 7642737, write hit = 7642737, hit = 4615260, evict = 4334421 +[300832.972181] bdbm: llm_make_req: 6000000, 6 +[300852.963169] bdbm: nvm: total access = 11000000, total read = 3297310, read hit = 1854473, total_write = 7702689, write hit = 7702689, hit = 4673385, evict = 4359489 +[300885.815630] bdbm: llm_make_req: 6050000, 1 +[300929.468444] bdbm: nvm: total access = 11100000, total read = 3337783, read hit = 1878048, total_write = 7762216, write hit = 7762216, hit = 4731408, evict = 4384568 +[300943.521621] bdbm: llm_make_req: 6100000, 1 +[301005.287319] bdbm: nvm: total access = 11200000, total read = 3377518, read hit = 1901700, total_write = 7822481, write hit = 7822481, hit = 4790078, evict = 4409815 +[301008.393706] bdbm: llm_make_req: 6150000, 96 +[301068.880993] bdbm: llm_make_req: 6200000, 3 +[301082.461083] bdbm: nvm: total access = 11300000, total read = 3417473, read hit = 1925085, total_write = 7882526, write hit = 7882526, hit = 4848434, evict = 4434889 +[301120.855673] bdbm: llm_make_req: 6250000, 1 +[301158.360981] bdbm: nvm: total access = 11400000, total read = 3458128, read hit = 1948885, total_write = 7941871, write hit = 7941871, hit = 4907634, evict = 4458834 +[301180.447963] bdbm: llm_make_req: 6300000, 95 +[301234.224286] bdbm: nvm: total access = 11500000, total read = 3498175, read hit = 1972677, total_write = 8001824, write hit = 8001824, hit = 4966854, evict = 4483359 +[301238.419392] bdbm: llm_make_req: 6350000, 4 +[301283.384261] bdbm: llm_make_req: 6400000, 1 +[301310.734296] bdbm: nvm: total access = 11600000, total read = 3537896, read hit = 1996284, total_write = 8062103, write hit = 8062103, hit = 5026370, evict = 4507729 +[301336.673518] bdbm: llm_make_req: 6450000, 96 +[301386.405081] bdbm: nvm: total access = 11700000, total read = 3578187, read hit = 2020315, total_write = 8121812, write hit = 8121812, hit = 5085889, evict = 4531950 +[301400.153271] bdbm: llm_make_req: 6500000, 96 +[301449.535671] bdbm: llm_make_req: 6550000, 16 +[301462.477194] bdbm: nvm: total access = 11800000, total read = 3618345, read hit = 2043967, total_write = 8181654, write hit = 8181654, hit = 5144994, evict = 4556339 +[301495.726374] bdbm: llm_make_req: 6600000, 95 +[301539.819223] bdbm: nvm: total access = 11900000, total read = 3658252, read hit = 2067342, total_write = 8241747, write hit = 8241747, hit = 5203329, evict = 4581472 +[301554.348494] bdbm: llm_make_req: 6650000, 96 +[301601.021168] bdbm: llm_make_req: 6700000, 1 +[301617.681239] bdbm: nvm: total access = 12000000, total read = 3698051, read hit = 2090680, total_write = 8301948, write hit = 8301948, hit = 5262105, evict = 4606235 +[301642.177769] bdbm: llm_make_req: 6750000, 95 +[301693.836410] bdbm: nvm: total access = 12100000, total read = 3738021, read hit = 2114086, total_write = 8361978, write hit = 8361978, hit = 5320796, evict = 4630980 +[301700.538269] bdbm: llm_make_req: 6800000, 96 +[301748.029398] bdbm: llm_make_req: 6850000, 1 +[301771.003417] bdbm: nvm: total access = 12200000, total read = 3777524, read hit = 2137066, total_write = 8422475, write hit = 8422475, hit = 5379190, evict = 4656063 +[301788.894502] bdbm: llm_make_req: 6900000, 1 +[301843.760012] bdbm: llm_make_req: 6950000, 96 +[301848.412027] bdbm: nvm: total access = 12300000, total read = 3817682, read hit = 2160407, total_write = 8482317, write hit = 8482317, hit = 5437208, evict = 4681228 +[301889.253574] bdbm: llm_make_req: 7000000, 3 +[301924.372026] bdbm: nvm: total access = 12400000, total read = 3858028, read hit = 2183709, total_write = 8541971, write hit = 8541971, hit = 5494898, evict = 4706494 +[301925.711713] bdbm: llm_make_req: 7050000, 96 +[301975.781108] bdbm: llm_make_req: 7100000, 96 +[302003.503602] bdbm: nvm: total access = 12500000, total read = 3898062, read hit = 2206922, total_write = 8601937, write hit = 8601937, hit = 5552465, evict = 4732106 +[302015.691229] bdbm: llm_make_req: 7150000, 1 +[302051.790067] bdbm: llm_make_req: 7200000, 96 +[302081.670656] bdbm: nvm: total access = 12600000, total read = 3937444, read hit = 2229661, total_write = 8662555, write hit = 8662555, hit = 5609864, evict = 4758064 +[302101.902228] bdbm: llm_make_req: 7250000, 96 +[302141.420492] bdbm: llm_make_req: 7300000, 1 +[302159.861413] bdbm: nvm: total access = 12700000, total read = 3977521, read hit = 2252559, total_write = 8722478, write hit = 8722478, hit = 5667104, evict = 4783645 +[302177.118648] bdbm: llm_make_req: 7350000, 96 +[302224.791866] bdbm: llm_make_req: 7400000, 96 +[302237.996817] bdbm: nvm: total access = 12800000, total read = 4017797, read hit = 2275305, total_write = 8782202, write hit = 8782202, hit = 5724093, evict = 4809126 +[302261.171318] bdbm: llm_make_req: 7450000, 1 +[302298.533917] bdbm: llm_make_req: 7500000, 96 +[302316.302208] bdbm: nvm: total access = 12900000, total read = 4057959, read hit = 2298382, total_write = 8842040, write hit = 8842040, hit = 5781029, evict = 4835105 +[302344.989099] bdbm: llm_make_req: 7550000, 96 +[302377.642381] bdbm: llm_make_req: 7600000, 1 +[302396.188928] bdbm: nvm: total access = 13000000, total read = 4098482, read hit = 2321372, total_write = 8901517, write hit = 8901517, hit = 5837929, evict = 4860672 +[302417.452110] bdbm: llm_make_req: 7650000, 96 +[302462.418319] bdbm: llm_make_req: 7700000, 96 +[302474.630530] bdbm: nvm: total access = 13100000, total read = 4138411, read hit = 2344190, total_write = 8961588, write hit = 8961588, hit = 5894928, evict = 4886562 +[302491.492886] bdbm: llm_make_req: 7750000, 1 +[302534.932151] bdbm: llm_make_req: 7800000, 96 +[302553.172889] bdbm: nvm: total access = 13200000, total read = 4179357, read hit = 2367784, total_write = 9020642, write hit = 9020642, hit = 5952436, evict = 4911702 +[302575.438107] bdbm: llm_make_req: 7850000, 1 +[302604.541418] bdbm: llm_make_req: 7900000, 96 +[302633.068481] bdbm: nvm: total access = 13300000, total read = 4219964, read hit = 2390984, total_write = 9080035, write hit = 9080035, hit = 6009599, evict = 4937132 +[302650.492819] bdbm: llm_make_req: 7950000, 96 +[302687.425677] bdbm: llm_make_req: 8000000, 1 +[302710.775568] bdbm: nvm: total access = 13400000, total read = 4260908, read hit = 2414606, total_write = 9139091, write hit = 9139091, hit = 6067571, evict = 4961838 +[302721.911118] bdbm: llm_make_req: 8050000, 96 +[302768.810204] bdbm: llm_make_req: 8100000, 96 +[302788.493864] bdbm: nvm: total access = 13500000, total read = 4299795, read hit = 2437329, total_write = 9200204, write hit = 9200204, hit = 6125930, evict = 4987315 +[302802.943422] bdbm: llm_make_req: 8150000, 1 +[302839.858465] bdbm: llm_make_req: 8200000, 95 +[319341.319778] bdbm: ----------------------------------------------- +[319341.319779] bdbm: < PERFORMANCE SUMMARY > +[319341.319780] bdbm: [0] Execution Time (us): 27663.314099 +[319341.319781] bdbm: +[319341.319782] bdbm: [1] Total I/Os +[319341.319782] bdbm: # of page reads: 2533087 +[319341.319783] bdbm: # of page writes: 657723 +[319341.319783] bdbm: # of block erase: 12544 +[319341.319783] bdbm: +[319341.319784] bdbm: [2] Normal I/Os +[319341.319784] bdbm: # of page reads: 1875462 +[319341.319785] bdbm: # of page writes: 0 +[319341.319785] bdbm: # of page rmw reads: 0 +[319341.319786] bdbm: # of page rmw writes: 0 +[319341.319786] bdbm: +[319341.319787] bdbm: [3] GC I/Os +[319341.319787] bdbm: # of GC invocation: 0 +[319341.319788] bdbm: # of page reads: 657625 +[319341.319788] bdbm: # of page writes: 657723 +[319341.319789] bdbm: # of block erase: 12544 +[319341.319789] bdbm: +[319341.319789] bdbm: [4] Meta I/Os +[319341.319790] bdbm: # of meta page reads: 0 +[319341.319790] bdbm: # of meta page writes: 0 +[319341.319791] bdbm: +[319341.319791] bdbm: [5] Elapsed Time +[319341.319792] bdbm: page read (us): 1072 (S:956 + Q:12 + D:104) +[319341.319793] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[319341.319793] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[319341.319794] bdbm: +[319341.319794] bdbm: [6] Utilization (R) +[319341.319796] bdbm: 19826 19692 19818 19761 19937 19733 19717 19474 +[319341.319797] bdbm: 19516 19552 19685 19531 19773 19934 19902 19815 +[319341.319798] bdbm: 19801 19593 19693 19698 19595 19838 19892 19816 +[319341.319799] bdbm: 19650 19816 20045 19940 19862 20019 19593 19993 +[319341.319801] bdbm: 20126 20114 19926 20099 19866 19717 19596 19822 +[319341.319802] bdbm: 19810 19724 19857 19978 19641 19938 19797 19846 +[319341.319803] bdbm: 19833 19748 19522 19831 19946 19534 19646 19530 +[319341.319804] bdbm: 19401 19496 19632 19896 19605 19766 19667 19732 +[319341.319805] bdbm: 19813 19821 19782 19545 20034 19725 19706 19787 +[319341.319806] bdbm: 19856 20038 19833 19750 19842 19814 19993 20059 +[319341.319807] bdbm: 19975 19816 20120 19906 19693 20094 20102 20042 +[319341.319809] bdbm: 20052 19781 19789 19489 19715 19758 19510 19655 +[319341.319810] bdbm: 19686 19960 19788 20031 19781 19904 19677 19653 +[319341.319811] bdbm: 19674 19755 19816 19516 19814 19825 19839 19848 +[319341.319812] bdbm: 19535 19724 20062 19821 19732 19799 20077 19786 +[319341.319813] bdbm: 19763 19642 19892 19953 19574 19569 19747 19797 +[319341.319814] bdbm: +[319341.319814] bdbm: [7] Utilization (W) +[319341.319816] bdbm: 5155 5161 5168 5171 5171 5173 5175 5174 +[319341.319817] bdbm: 5174 5176 5176 5178 5178 5178 5177 5176 +[319341.319818] bdbm: 5176 5176 5176 5175 5175 5174 5174 5172 +[319341.319819] bdbm: 5171 5169 5168 5167 5166 5166 5165 5165 +[319341.319820] bdbm: 5164 5164 5163 5163 5163 5162 5160 5157 +[319341.319821] bdbm: 5156 5156 5154 5154 5153 5153 5153 5152 +[319341.319822] bdbm: 5152 5149 5148 5148 5148 5148 5148 5148 +[319341.319824] bdbm: 5148 5146 5146 5145 5143 5142 5142 5142 +[319341.319825] bdbm: 5141 5141 5141 5141 5141 5138 5136 5135 +[319341.319826] bdbm: 5135 5133 5131 5131 5128 5128 5128 5127 +[319341.319827] bdbm: 5126 5125 5124 5123 5123 5123 5123 5122 +[319341.319828] bdbm: 5122 5121 5120 5119 5118 5118 5118 5117 +[319341.319829] bdbm: 5113 5113 5113 5112 5111 5110 5110 5110 +[319341.319830] bdbm: 5110 5110 5109 5107 5105 5104 5104 5104 +[319341.319831] bdbm: 5103 5103 5101 5098 5098 5098 5096 5095 +[319341.319833] bdbm: 5093 5093 5091 5090 5089 5089 5089 5089 +[319341.319833] bdbm: [8] NVM I/Os +[319341.319834] bdbm: #_of_nvm_total_accesses: 13578114 +[319341.319834] bdbm: #_of_nvm_total_write_requests: 9246908 +[319341.319835] bdbm: #_of_nvm_total_read_requests: 4331206 +[319341.319835] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9246908 +[319341.319836] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 2455716 +[319341.319836] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 6171506 +[319341.319837] bdbm: #_of_nvm_evict_from_nvm: 5006830 +[319341.319837] bdbm: #_of_nvm_write_amplification: 5006830 : 5664553 +[319341.319838] bdbm: +[319341.319838] bdbm: ----------------------------------------------- +[319341.319839] bdbm: ----------------------------------------------- +[319341.494464] bdbm: done +[319341.494467] bdbm: [dm_ramdrive_close] closed! +[319341.884245] bdbm: [bdbm_drv_main] bdbm_drv is closed +[319341.884247] bdbm: [bdbm_drv_main] bdbm_drv is removed +[319341.907157] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[319341.923041] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[319341.926710] bdbm: ===================================================================== +[319341.926712] bdbm: DEVICE PARAMETERS +[319341.926712] bdbm: ===================================================================== +[319341.926713] bdbm: # of channels = 8 +[319341.926713] bdbm: # of chips per channel = 16 +[319341.926714] bdbm: # of blocks per chip = 256 +[319341.926714] bdbm: # of pages per block = 128 +[319341.926715] bdbm: # of subpages per page = 1 +[319341.926715] bdbm: page main size = 4096 bytes +[319341.926716] bdbm: page oob size = 64 bytes +[319341.926717] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[319341.926717] bdbm: +[319341.926718] bdbm: ===================================================================== +[319341.926718] bdbm: RAM DISK INFO +[319341.926719] bdbm: ===================================================================== +[319341.926719] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[319343.480490] bdbm: ramssd addr = ffffc90050001000 +[319343.480492] bdbm: +[319343.480493] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[319345.009064] bdbm: *** building ptr_ramssd_data done +[319345.009301] bdbm: [dm_ramdrive_probe] probe done! +[319345.009303] bdbm: [dm_ramdrive_open] open done! +[319345.207098] bdbm: nvm cache addr = ffffc908d1385000 +[319345.214776] bdbm: ========================================================== +[319345.214779] bdbm: NVM CONFIGURATION +[319345.214780] bdbm: ========================================================== +[319345.214781] bdbm: total size = 2147483648, nr_nvm_pages = 524288, nvm_page_size = 4096 +[319345.374778] bdbm: TRIM is disabled +[319345.374873] bdbm: ===================================================================== +[319345.374874] bdbm: DEVICE PARAMETERS +[319345.374874] bdbm: ===================================================================== +[319345.374875] bdbm: # of channels = 8 +[319345.374875] bdbm: # of chips per channel = 16 +[319345.374876] bdbm: # of blocks per chip = 256 +[319345.374876] bdbm: # of pages per block = 128 +[319345.374877] bdbm: # of subpages per page = 1 +[319345.374877] bdbm: page main size = 4096 bytes +[319345.374878] bdbm: page oob size = 64 bytes +[319345.374879] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[319345.374879] bdbm: +[319345.374880] bdbm: ===================================================================== +[319345.374880] bdbm: FTL CONFIGURATION +[319345.374881] bdbm: ===================================================================== +[319345.374881] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[319345.374882] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[319345.374882] bdbm: wl policy = 1 (1: none, 2: swap) +[319345.374883] bdbm: trim mode = 2 (1: enable, 2: disable) +[319345.374883] bdbm: kernel sector = 512 bytes +[319345.374884] bdbm: +[319345.374885] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[319345.393003] bdbm: llm_make_req: 0, 1 +[319380.379442] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[319380.379444] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard diff --git a/result/fio.ton_n2g.rslt b/result/fio.ton_n2g.rslt new file mode 100644 index 0000000..8a9b706 --- /dev/null +++ b/result/fio.ton_n2g.rslt @@ -0,0 +1,44 @@ +JESD219: (g=0): rw=randrw, bs=512-64K/512-64K/512-64K, ioengine=libaio, iodepth=256 +... +fio-2.14-20-gd6192-dirty +Starting 4 processes +JESD219: Laying out IO file(s) (1 file(s) / 10240MB) + +JESD219: (groupid=0, jobs=4): err= 0: pid=10890: Thu Nov 3 06:32:16 2016 + read : io=16391MB, bw=2027.4KB/s, iops=265, runt=8280294msec + slat (usec): min=4, max=1846.6K, avg=6043.67, stdev=24140.25 + clat (msec): min=3, max=4537, avg=1534.09, stdev=405.50 + lat (msec): min=4, max=4541, avg=1540.14, stdev=406.35 + clat percentiles (msec): + | 1.00th=[ 799], 5.00th=[ 971], 10.00th=[ 1074], 20.00th=[ 1205], + | 30.00th=[ 1303], 40.00th=[ 1401], 50.00th=[ 1483], 60.00th=[ 1582], + | 70.00th=[ 1696], 80.00th=[ 1827], 90.00th=[ 2040], 95.00th=[ 2278], + | 99.00th=[ 2769], 99.50th=[ 2999], 99.90th=[ 3458], 99.95th=[ 3687], + | 99.99th=[ 4178] + write: io=24569MB, bw=3038.4KB/s, iops=398, runt=8280294msec + slat (usec): min=5, max=1961.5K, avg=5986.83, stdev=24040.28 + clat (usec): min=3, max=4535.7K, avg=1532632.92, stdev=404690.43 + lat (msec): min=3, max=4539, avg=1538.62, stdev=405.51 + clat percentiles (msec): + | 1.00th=[ 799], 5.00th=[ 979], 10.00th=[ 1074], 20.00th=[ 1205], + | 30.00th=[ 1303], 40.00th=[ 1401], 50.00th=[ 1483], 60.00th=[ 1582], + | 70.00th=[ 1696], 80.00th=[ 1827], 90.00th=[ 2040], 95.00th=[ 2245], + | 99.00th=[ 2769], 99.50th=[ 2966], 99.90th=[ 3458], 99.95th=[ 3654], + | 99.99th=[ 4178] + lat (usec) : 4=0.01%, 10=0.01% + lat (msec) : 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01%, 100=0.01% + lat (msec) : 250=0.01%, 500=0.14%, 750=0.45%, 1000=5.46%, 2000=82.34% + lat (msec) : >=2000=11.60% + cpu : usr=0.06%, sys=48.43%, ctx=5494616, majf=0, minf=40 + IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% + submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% + complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1% + issued : total=r=2200064/w=3297058/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 + latency : target=0, window=0, percentile=100.00%, depth=256 + +Run status group 0 (all jobs): + READ: io=16391MB, aggrb=2027KB/s, minb=2027KB/s, maxb=2027KB/s, mint=8280294msec, maxt=8280294msec + WRITE: io=24569MB, aggrb=3038KB/s, minb=3038KB/s, maxb=3038KB/s, mint=8280294msec, maxt=8280294msec + +Disk stats (read/write): + robusta: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00% diff --git a/result/fio.ton_n500m.dmesg b/result/fio.ton_n500m.dmesg new file mode 100644 index 0000000..b08f00f --- /dev/null +++ b/result/fio.ton_n500m.dmesg @@ -0,0 +1,137 @@ +[362487.596941] bdbm: ----------------------------------------------- +[362487.596943] bdbm: < PERFORMANCE SUMMARY > +[362487.596944] bdbm: [0] Execution Time (us): 4428.98472 +[362487.596944] bdbm: +[362487.596945] bdbm: [1] Total I/Os +[362487.596945] bdbm: # of page reads: 7054043 +[362487.596946] bdbm: # of page writes: 3736146 +[362487.596946] bdbm: # of block erase: 56576 +[362487.596947] bdbm: +[362487.596947] bdbm: [2] Normal I/Os +[362487.596947] bdbm: # of page reads: 3318335 +[362487.596948] bdbm: # of page writes: 0 +[362487.596948] bdbm: # of page rmw reads: 0 +[362487.596949] bdbm: # of page rmw writes: 0 +[362487.596949] bdbm: +[362487.596950] bdbm: [3] GC I/Os +[362487.596950] bdbm: # of GC invocation: 0 +[362487.596951] bdbm: # of page reads: 3735708 +[362487.596951] bdbm: # of page writes: 3736146 +[362487.596951] bdbm: # of block erase: 56576 +[362487.596952] bdbm: +[362487.596952] bdbm: [4] Meta I/Os +[362487.596953] bdbm: # of meta page reads: 0 +[362487.596953] bdbm: # of meta page writes: 0 +[362487.596954] bdbm: +[362487.596954] bdbm: [5] Elapsed Time +[362487.596955] bdbm: page read (us): 226 (S:122 + Q:7 + D:97) +[362487.596955] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[362487.596956] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[362487.596956] bdbm: +[362487.596957] bdbm: [6] Utilization (R) +[362487.596958] bdbm: 55153 55264 54926 55143 55061 55009 55213 55337 +[362487.596960] bdbm: 54965 55427 55126 54760 55011 54405 54582 54912 +[362487.596961] bdbm: 54918 55433 55102 55124 55132 55046 55173 54974 +[362487.596962] bdbm: 54838 54744 54976 54985 55008 55352 55130 54846 +[362487.596963] bdbm: 54854 54943 55012 55094 55158 55290 54917 54836 +[362487.596964] bdbm: 55317 55358 55203 55347 55369 55536 55056 55064 +[362487.596965] bdbm: 55100 55324 55211 54980 55057 55258 54628 55037 +[362487.596966] bdbm: 54934 55308 55322 54975 54957 54937 55030 54984 +[362487.596968] bdbm: 54557 54912 55145 55253 55228 55117 54391 54712 +[362487.596969] bdbm: 55174 55140 55115 55375 54662 55126 54825 54979 +[362487.596970] bdbm: 55084 55193 55449 54964 54957 55525 55310 55507 +[362487.596971] bdbm: 55410 55240 55365 55454 55002 55400 55226 54823 +[362487.596972] bdbm: 55207 55382 55242 54873 54942 55235 54600 54978 +[362487.596973] bdbm: 54775 54736 54831 55030 54975 54909 55132 55213 +[362487.596974] bdbm: 54812 55192 55285 55375 55406 55184 54849 55386 +[362487.596975] bdbm: 55231 55735 55277 55289 55815 55754 55781 55521 +[362487.596976] bdbm: +[362487.596976] bdbm: [7] Utilization (W) +[362487.596977] bdbm: 29194 29247 29271 29298 29307 29321 29330 29341 +[362487.596979] bdbm: 29343 29351 29361 29361 29362 29360 29359 29361 +[362487.596980] bdbm: 29357 29354 29350 29348 29347 29343 29343 29342 +[362487.596981] bdbm: 29337 29331 29330 29327 29323 29322 29320 29318 +[362487.596982] bdbm: 29312 29308 29301 29298 29293 29289 29288 29286 +[362487.596983] bdbm: 29283 29277 29271 29269 29263 29259 29257 29253 +[362487.596984] bdbm: 29250 29247 29240 29239 29238 29237 29233 29228 +[362487.596985] bdbm: 29224 29221 29216 29211 29209 29206 29206 29203 +[362487.596986] bdbm: 29197 29191 29186 29182 29182 29178 29174 29172 +[362487.596987] bdbm: 29164 29162 29159 29154 29150 29147 29145 29142 +[362487.596989] bdbm: 29138 29135 29132 29130 29123 29121 29120 29119 +[362487.596990] bdbm: 29115 29110 29107 29105 29102 29102 29096 29094 +[362487.596991] bdbm: 29090 29088 29082 29078 29070 29066 29063 29061 +[362487.596992] bdbm: 29058 29054 29053 29047 29041 29040 29037 29032 +[362487.596993] bdbm: 29027 29019 29017 29015 29012 29007 29002 29000 +[362487.596994] bdbm: 28997 28992 28991 28987 28981 28979 28977 28975 +[362487.596995] bdbm: [8] NVM I/Os +[362487.596995] bdbm: #_of_nvm_total_accesses: 13571874 +[362487.596996] bdbm: #_of_nvm_total_write_requests: 9245990 +[362487.596996] bdbm: #_of_nvm_total_read_requests: 4325884 +[362487.596996] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9245990 +[362487.596997] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1007521 +[362487.596997] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 2556142 +[362487.596998] bdbm: #_of_nvm_evict_from_nvm: 7566297 +[362487.596998] bdbm: #_of_nvm_write_amplification: 7566297 : 11302443 +[362487.596999] bdbm: +[362487.596999] bdbm: ----------------------------------------------- +[362487.597000] bdbm: ----------------------------------------------- +[362487.746692] bdbm: done +[362487.746712] bdbm: [dm_ramdrive_close] closed! +[362488.135547] bdbm: [bdbm_drv_main] bdbm_drv is closed +[362488.135551] bdbm: [bdbm_drv_main] bdbm_drv is removed +[362488.162558] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[362488.182858] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[362488.187973] bdbm: ===================================================================== +[362488.187974] bdbm: DEVICE PARAMETERS +[362488.187975] bdbm: ===================================================================== +[362488.187976] bdbm: # of channels = 8 +[362488.187977] bdbm: # of chips per channel = 16 +[362488.187977] bdbm: # of blocks per chip = 256 +[362488.187978] bdbm: # of pages per block = 128 +[362488.187979] bdbm: # of subpages per page = 1 +[362488.187979] bdbm: page main size = 4096 bytes +[362488.187980] bdbm: page oob size = 64 bytes +[362488.187981] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[362488.187981] bdbm: +[362488.187982] bdbm: ===================================================================== +[362488.187983] bdbm: RAM DISK INFO +[362488.187984] bdbm: ===================================================================== +[362488.187985] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[362489.727597] bdbm: ramssd addr = ffffc90050001000 +[362489.727599] bdbm: +[362489.727599] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[362491.275443] bdbm: *** building ptr_ramssd_data done +[362491.275634] bdbm: [dm_ramdrive_probe] probe done! +[362491.275649] bdbm: [dm_ramdrive_open] open done! +[362491.325114] bdbm: nvm cache addr = ffffc90870003000 +[362491.326106] bdbm: ========================================================== +[362491.326107] bdbm: NVM CONFIGURATION +[362491.326108] bdbm: ========================================================== +[362491.326109] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[362491.484191] bdbm: TRIM is disabled +[362491.484352] bdbm: ===================================================================== +[362491.484353] bdbm: DEVICE PARAMETERS +[362491.484354] bdbm: ===================================================================== +[362491.484354] bdbm: # of channels = 8 +[362491.484355] bdbm: # of chips per channel = 16 +[362491.484355] bdbm: # of blocks per chip = 256 +[362491.484356] bdbm: # of pages per block = 128 +[362491.484356] bdbm: # of subpages per page = 1 +[362491.484357] bdbm: page main size = 4096 bytes +[362491.484358] bdbm: page oob size = 64 bytes +[362491.484358] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[362491.484359] bdbm: +[362491.484359] bdbm: ===================================================================== +[362491.484360] bdbm: FTL CONFIGURATION +[362491.484360] bdbm: ===================================================================== +[362491.484361] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[362491.484361] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[362491.484362] bdbm: wl policy = 1 (1: none, 2: swap) +[362491.484362] bdbm: trim mode = 2 (1: enable, 2: disable) +[362491.484363] bdbm: kernel sector = 512 bytes +[362491.484363] bdbm: +[362491.484365] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[362491.502160] bdbm: llm_make_req: 0, 1 +[362497.960155] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[362497.960157] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[362558.669765] bdbm: nvm: total access = 100000, total read = 34, read hit = 6, total_write = 99965, write hit = 99965, hit = 33780, evict = 0 diff --git a/result/fio.ton_n500m.rslt b/result/fio.ton_n500m.rslt new file mode 100644 index 0000000..0ff81cd --- /dev/null +++ b/result/fio.ton_n500m.rslt @@ -0,0 +1,45 @@ +JESD219: (g=0): rw=randrw, bs=512-64K/512-64K/512-64K, ioengine=libaio, iodepth=256 +... +fio-2.14-20-gd6192-dirty +Starting 4 processes +JESD219: Laying out IO file(s) (1 file(s) / 10240MB) + +JESD219: (groupid=0, jobs=4): err= 0: pid=5340: Thu Nov 3 22:43:34 2016 + read : io=16373MB, bw=7125.1KB/s, iops=933, runt=2353049msec + slat (usec): min=3, max=1973.6K, avg=1610.89, stdev=22879.34 + clat (usec): min=110, max=3138.1K, avg=436408.78, stdev=422939.73 + lat (usec): min=451, max=3146.6K, avg=438020.28, stdev=423598.26 + clat percentiles (msec): + | 1.00th=[ 147], 5.00th=[ 159], 10.00th=[ 172], 20.00th=[ 190], + | 30.00th=[ 215], 40.00th=[ 247], 50.00th=[ 293], 60.00th=[ 347], + | 70.00th=[ 412], 80.00th=[ 519], 90.00th=[ 783], 95.00th=[ 1614], + | 99.00th=[ 2114], 99.50th=[ 2245], 99.90th=[ 2474], 99.95th=[ 2606], + | 99.99th=[ 2900] + write: io=24587MB, bw=10700KB/s, iops=1400, runt=2353049msec + slat (usec): min=4, max=1988.4K, avg=1771.54, stdev=27393.22 + clat (usec): min=3, max=3141.1K, avg=435886.35, stdev=422769.80 + lat (usec): min=528, max=3142.5K, avg=437658.51, stdev=423658.28 + clat percentiles (msec): + | 1.00th=[ 147], 5.00th=[ 159], 10.00th=[ 169], 20.00th=[ 190], + | 30.00th=[ 215], 40.00th=[ 247], 50.00th=[ 289], 60.00th=[ 347], + | 70.00th=[ 412], 80.00th=[ 519], 90.00th=[ 783], 95.00th=[ 1614], + | 99.00th=[ 2114], 99.50th=[ 2245], 99.90th=[ 2474], 99.95th=[ 2606], + | 99.99th=[ 2900] + lat (usec) : 4=0.01%, 10=0.01%, 250=0.01%, 500=0.01%, 750=0.01% + lat (usec) : 1000=0.01% + lat (msec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01% + lat (msec) : 100=0.07%, 250=40.83%, 500=37.88%, 750=10.65%, 1000=2.26% + lat (msec) : 2000=6.59%, >=2000=1.72% + cpu : usr=0.17%, sys=42.69%, ctx=4679478, majf=0, minf=41 + IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% + submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% + complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1% + issued : total=r=2195437/w=3296496/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 + latency : target=0, window=0, percentile=100.00%, depth=256 + +Run status group 0 (all jobs): + READ: io=16373MB, aggrb=7125KB/s, minb=7125KB/s, maxb=7125KB/s, mint=2353049msec, maxt=2353049msec + WRITE: io=24587MB, aggrb=10699KB/s, minb=10699KB/s, maxb=10699KB/s, mint=2353049msec, maxt=2353049msec + +Disk stats (read/write): + robusta: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00% diff --git a/result/fio_toff_o1_n1g.dmesg b/result/fio_toff_o1_n1g.dmesg new file mode 100644 index 0000000..d6ef3a2 --- /dev/null +++ b/result/fio_toff_o1_n1g.dmesg @@ -0,0 +1,540 @@ +[ 9614.997404] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 0, evict = 0 +[ 9615.177434] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 0, evict = 4063 +[ 9615.445004] bdbm: llm_make_req: 50000, 95 +[ 9615.734915] bdbm: llm_make_req: 100000, 57 +[ 9615.755812] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 0, evict = 104063 +[ 9616.023919] bdbm: llm_make_req: 150000, 89 +[ 9616.309738] bdbm: llm_make_req: 200000, 93 +[ 9616.330505] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 0, evict = 204063 +[ 9616.608325] bdbm: llm_make_req: 250000, 94 +[ 9616.890596] bdbm: llm_make_req: 300000, 90 +[ 9616.911245] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 0, evict = 304063 +[ 9617.175540] bdbm: llm_make_req: 350000, 93 +[ 9617.459075] bdbm: llm_make_req: 400000, 93 +[ 9617.479739] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 0, evict = 404063 +[ 9617.742013] bdbm: llm_make_req: 450000, 92 +[ 9618.026989] bdbm: llm_make_req: 500000, 95 +[ 9618.055353] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 0, evict = 504063 +[ 9618.311058] bdbm: llm_make_req: 550000, 94 +[ 9618.593060] bdbm: llm_make_req: 600000, 89 +[ 9618.620774] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 0, evict = 604063 +[ 9618.880849] bdbm: llm_make_req: 650000, 60 +[ 9619.163406] bdbm: llm_make_req: 700000, 92 +[ 9619.191582] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 0, evict = 704063 +[ 9619.456303] bdbm: llm_make_req: 750000, 93 +[ 9619.741049] bdbm: llm_make_req: 800000, 96 +[ 9619.761686] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 0, evict = 804063 +[ 9620.025739] bdbm: llm_make_req: 850000, 76 +[ 9620.308463] bdbm: llm_make_req: 900000, 93 +[ 9620.329149] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 0, evict = 904063 +[ 9620.590535] bdbm: llm_make_req: 950000, 94 +[ 9620.874347] bdbm: llm_make_req: 1000000, 94 +[ 9620.894996] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 0, evict = 1004063 +[ 9621.157296] bdbm: llm_make_req: 1050000, 88 +[ 9621.440743] bdbm: llm_make_req: 1100000, 91 +[ 9621.461384] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 0, evict = 1104063 +[ 9621.721965] bdbm: llm_make_req: 1150000, 94 +[ 9622.004405] bdbm: llm_make_req: 1200000, 94 +[ 9622.025078] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 0, evict = 1204063 +[ 9622.286271] bdbm: llm_make_req: 1250000, 94 +[ 9622.570590] bdbm: llm_make_req: 1300000, 94 +[ 9622.598551] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 0, evict = 1304063 +[ 9622.860112] bdbm: llm_make_req: 1350000, 88 +[ 9623.150025] bdbm: llm_make_req: 1400000, 94 +[ 9623.178929] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 0, evict = 1404063 +[ 9623.439936] bdbm: llm_make_req: 1450000, 95 +[ 9623.735028] bdbm: llm_make_req: 1500000, 53 +[ 9623.756276] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 0, evict = 1504063 +[ 9624.023434] bdbm: llm_make_req: 1550000, 94 +[ 9624.310782] bdbm: llm_make_req: 1600000, 96 +[ 9624.331982] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 0, evict = 1604063 +[ 9624.598830] bdbm: llm_make_req: 1650000, 72 +[ 9624.886338] bdbm: llm_make_req: 1700000, 87 +[ 9624.907604] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 0, evict = 1704063 +[ 9625.174986] bdbm: llm_make_req: 1750000, 91 +[ 9625.461882] bdbm: llm_make_req: 1800000, 95 +[ 9625.482393] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 0, evict = 1804063 +[ 9625.744049] bdbm: llm_make_req: 1850000, 95 +[ 9626.024833] bdbm: llm_make_req: 1900000, 95 +[ 9626.045413] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 0, evict = 1904063 +[ 9626.306032] bdbm: llm_make_req: 1950000, 95 +[ 9626.587191] bdbm: llm_make_req: 2000000, 94 +[ 9626.614961] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 0, evict = 2004063 +[ 9626.867847] bdbm: llm_make_req: 2050000, 96 +[ 9627.147970] bdbm: llm_make_req: 2100000, 95 +[ 9627.175831] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 0, evict = 2104063 +[ 9627.428662] bdbm: llm_make_req: 2150000, 95 +[ 9627.715828] bdbm: llm_make_req: 2200000, 95 +[ 9627.736381] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 0, evict = 2204063 +[ 9627.996412] bdbm: llm_make_req: 2250000, 96 +[ 9628.282845] bdbm: llm_make_req: 2300000, 88 +[ 9628.303901] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 0, evict = 2304063 +[ 9628.566126] bdbm: llm_make_req: 2350000, 93 +[ 9628.848463] bdbm: llm_make_req: 2400000, 94 +[ 9628.869696] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 0, evict = 2404063 +[ 9629.131324] bdbm: llm_make_req: 2450000, 68 +[ 9630.305628] bdbm: llm_make_req: 2500000, 76 +[ 9630.310736] bdbm: nvm: total access = 2800000, total read = 20499, read hit = 1186, total_write = 2779500, write hit = 2779500, hit = 0, evict = 2481920 +[ 9630.577344] bdbm: llm_make_req: 2550000, 69 +[ 9630.783231] bdbm: nvm: total access = 2900000, total read = 60205, read hit = 6665, total_write = 2839794, write hit = 2839794, hit = 0, evict = 2533809 +[ 9630.853322] bdbm: llm_make_req: 2600000, 85 +[ 9631.153914] bdbm: llm_make_req: 2650000, 76 +[ 9631.238202] bdbm: nvm: total access = 3000000, total read = 100081, read hit = 15648, total_write = 2899918, write hit = 2899918, hit = 0, evict = 2580164 +[ 9631.463236] bdbm: llm_make_req: 2700000, 96 +[ 9631.653841] bdbm: nvm: total access = 3100000, total read = 140737, read hit = 27970, total_write = 2959262, write hit = 2959262, hit = 0, evict = 2621779 +[ 9631.746515] bdbm: llm_make_req: 2750000, 60 +[ 9632.025035] bdbm: nvm: total access = 3200000, total read = 180600, read hit = 42509, total_write = 3019399, write hit = 3019399, hit = 0, evict = 2659975 +[ 9632.035622] bdbm: llm_make_req: 2800000, 64 +[ 9632.350481] bdbm: llm_make_req: 2850000, 70 +[ 9632.396050] bdbm: nvm: total access = 3300000, total read = 220486, read hit = 58777, total_write = 3079513, write hit = 3079513, hit = 0, evict = 2695538 +[ 9632.668827] bdbm: llm_make_req: 2900000, 55 +[ 9632.754845] bdbm: nvm: total access = 3400000, total read = 260149, read hit = 76409, total_write = 3139850, write hit = 3139850, hit = 0, evict = 2728849 +[ 9633.001179] bdbm: llm_make_req: 2950000, 64 +[ 9633.135475] bdbm: nvm: total access = 3500000, total read = 300477, read hit = 93626, total_write = 3199522, write hit = 3199522, hit = 0, evict = 2762984 +[ 9633.338623] bdbm: llm_make_req: 3000000, 68 +[ 9633.528939] bdbm: nvm: total access = 3600000, total read = 340781, read hit = 110112, total_write = 3259218, write hit = 3259218, hit = 0, evict = 2798157 +[ 9633.665700] bdbm: llm_make_req: 3050000, 75 +[ 9633.930969] bdbm: nvm: total access = 3700000, total read = 381245, read hit = 126085, total_write = 3318754, write hit = 3318754, hit = 0, evict = 2834504 +[ 9633.994847] bdbm: llm_make_req: 3100000, 84 +[ 9634.302855] bdbm: llm_make_req: 3150000, 96 +[ 9634.313310] bdbm: nvm: total access = 3800000, total read = 420691, read hit = 140934, total_write = 3379308, write hit = 3379308, hit = 0, evict = 2871869 +[ 9634.609731] bdbm: llm_make_req: 3200000, 62 +[ 9634.687927] bdbm: nvm: total access = 3900000, total read = 461050, read hit = 156283, total_write = 3438949, write hit = 3438949, hit = 0, evict = 2908914 +[ 9634.908670] bdbm: llm_make_req: 3250000, 61 +[ 9635.063022] bdbm: nvm: total access = 4000000, total read = 501226, read hit = 171898, total_write = 3498773, write hit = 3498773, hit = 0, evict = 2945744 +[ 9635.213618] bdbm: llm_make_req: 3300000, 64 +[ 9635.421598] bdbm: nvm: total access = 4100000, total read = 540994, read hit = 187548, total_write = 3559005, write hit = 3559005, hit = 0, evict = 2982256 +[ 9635.518390] bdbm: llm_make_req: 3350000, 75 +[ 9635.800156] bdbm: nvm: total access = 4200000, total read = 580981, read hit = 203162, total_write = 3619018, write hit = 3619018, hit = 0, evict = 3018078 +[ 9635.824513] bdbm: llm_make_req: 3400000, 45 +[ 9636.148301] bdbm: llm_make_req: 3450000, 51 +[ 9636.176654] bdbm: nvm: total access = 4300000, total read = 621162, read hit = 219341, total_write = 3678837, write hit = 3678837, hit = 0, evict = 3053802 +[ 9636.445563] bdbm: llm_make_req: 3500000, 47 +[ 9636.547376] bdbm: nvm: total access = 4400000, total read = 661189, read hit = 235446, total_write = 3738810, write hit = 3738810, hit = 0, evict = 3089552 +[ 9636.770581] bdbm: llm_make_req: 3550000, 72 +[ 9636.920983] bdbm: nvm: total access = 4500000, total read = 701312, read hit = 251442, total_write = 3798687, write hit = 3798687, hit = 0, evict = 3125405 +[ 9637.087054] bdbm: llm_make_req: 3600000, 66 +[ 9637.337674] bdbm: nvm: total access = 4600000, total read = 741148, read hit = 267559, total_write = 3858851, write hit = 3858851, hit = 0, evict = 3161874 +[ 9637.428900] bdbm: llm_make_req: 3650000, 95 +[ 9637.717556] bdbm: nvm: total access = 4700000, total read = 781584, read hit = 283547, total_write = 3918415, write hit = 3918415, hit = 0, evict = 3198368 +[ 9637.737367] bdbm: llm_make_req: 3700000, 94 +[ 9638.074739] bdbm: llm_make_req: 3750000, 69 +[ 9638.119178] bdbm: nvm: total access = 4800000, total read = 820672, read hit = 299168, total_write = 3979327, write hit = 3979327, hit = 0, evict = 3234775 +[ 9638.399938] bdbm: llm_make_req: 3800000, 70 +[ 9638.514097] bdbm: nvm: total access = 4900000, total read = 860785, read hit = 314712, total_write = 4039214, write hit = 4039214, hit = 0, evict = 3271257 +[ 9638.706318] bdbm: llm_make_req: 3850000, 75 +[ 9638.899642] bdbm: nvm: total access = 5000000, total read = 901636, read hit = 330767, total_write = 4098363, write hit = 4098363, hit = 0, evict = 3307019 +[ 9639.035915] bdbm: llm_make_req: 3900000, 67 +[ 9639.283149] bdbm: nvm: total access = 5100000, total read = 941797, read hit = 346166, total_write = 4158202, write hit = 4158202, hit = 0, evict = 3343518 +[ 9639.341916] bdbm: llm_make_req: 3950000, 78 +[ 9639.654194] bdbm: llm_make_req: 4000000, 86 +[ 9639.655312] bdbm: nvm: total access = 5200000, total read = 981544, read hit = 361668, total_write = 4218455, write hit = 4218455, hit = 0, evict = 3380380 +[ 9639.954635] bdbm: llm_make_req: 4050000, 54 +[ 9640.029134] bdbm: nvm: total access = 5300000, total read = 1021570, read hit = 377451, total_write = 4278429, write hit = 4278429, hit = 0, evict = 3416584 +[ 9640.256403] bdbm: llm_make_req: 4100000, 53 +[ 9640.390755] bdbm: nvm: total access = 5400000, total read = 1061418, read hit = 393126, total_write = 4338581, write hit = 4338581, hit = 0, evict = 3452963 +[ 9640.579652] bdbm: llm_make_req: 4150000, 80 +[ 9640.787613] bdbm: nvm: total access = 5500000, total read = 1101269, read hit = 409056, total_write = 4398730, write hit = 4398730, hit = 0, evict = 3489652 +[ 9640.893842] bdbm: llm_make_req: 4200000, 66 +[ 9641.144982] bdbm: nvm: total access = 5600000, total read = 1141265, read hit = 424608, total_write = 4458734, write hit = 4458734, hit = 0, evict = 3526475 +[ 9641.196302] bdbm: llm_make_req: 4250000, 67 +[ 9641.499570] bdbm: llm_make_req: 4300000, 74 +[ 9641.527238] bdbm: nvm: total access = 5700000, total read = 1180874, read hit = 440352, total_write = 4519125, write hit = 4519125, hit = 0, evict = 3563170 +[ 9641.821281] bdbm: llm_make_req: 4350000, 62 +[ 9641.929557] bdbm: nvm: total access = 5800000, total read = 1220855, read hit = 456077, total_write = 4579144, write hit = 4579144, hit = 0, evict = 3599768 +[ 9642.140573] bdbm: llm_make_req: 4400000, 55 +[ 9642.295034] bdbm: nvm: total access = 5900000, total read = 1260302, read hit = 471932, total_write = 4639697, write hit = 4639697, hit = 0, evict = 3637041 +[ 9642.466963] bdbm: llm_make_req: 4450000, 81 +[ 9642.682707] bdbm: nvm: total access = 6000000, total read = 1300392, read hit = 487778, total_write = 4699607, write hit = 4699607, hit = 0, evict = 3673598 +[ 9642.763258] bdbm: llm_make_req: 4500000, 84 +[ 9643.061399] bdbm: nvm: total access = 6100000, total read = 1340455, read hit = 503702, total_write = 4759544, write hit = 4759544, hit = 0, evict = 3710038 +[ 9643.085870] bdbm: llm_make_req: 4550000, 90 +[ 9643.390913] bdbm: llm_make_req: 4600000, 62 +[ 9643.437363] bdbm: nvm: total access = 6200000, total read = 1380654, read hit = 519181, total_write = 4819345, write hit = 4819345, hit = 0, evict = 3746767 +[ 9643.705282] bdbm: llm_make_req: 4650000, 74 +[ 9643.829719] bdbm: nvm: total access = 6300000, total read = 1420532, read hit = 534563, total_write = 4879467, write hit = 4879467, hit = 0, evict = 3783433 +[ 9644.021472] bdbm: llm_make_req: 4700000, 58 +[ 9644.211955] bdbm: nvm: total access = 6400000, total read = 1460008, read hit = 550251, total_write = 4939991, write hit = 4939991, hit = 0, evict = 3820161 +[ 9644.342581] bdbm: llm_make_req: 4750000, 67 +[ 9644.598403] bdbm: nvm: total access = 6500000, total read = 1499963, read hit = 565927, total_write = 5000036, write hit = 5000036, hit = 0, evict = 3856567 +[ 9644.672169] bdbm: llm_make_req: 4800000, 62 +[ 9644.993504] bdbm: llm_make_req: 4850000, 68 +[ 9645.002451] bdbm: nvm: total access = 6600000, total read = 1539982, read hit = 581636, total_write = 5060017, write hit = 5060017, hit = 0, evict = 3893305 +[ 9645.310605] bdbm: llm_make_req: 4900000, 65 +[ 9645.375477] bdbm: nvm: total access = 6700000, total read = 1580113, read hit = 597410, total_write = 5119886, write hit = 5119886, hit = 0, evict = 3929512 +[ 9645.603905] bdbm: llm_make_req: 4950000, 53 +[ 9645.740079] bdbm: nvm: total access = 6800000, total read = 1619729, read hit = 613214, total_write = 5180270, write hit = 5180270, hit = 0, evict = 3966050 +[ 9645.921128] bdbm: llm_make_req: 5000000, 67 +[ 9646.123011] bdbm: nvm: total access = 6900000, total read = 1660371, read hit = 629279, total_write = 5239628, write hit = 5239628, hit = 0, evict = 4002129 +[ 9646.217016] bdbm: llm_make_req: 5050000, 65 +[ 9646.509700] bdbm: nvm: total access = 7000000, total read = 1700305, read hit = 645022, total_write = 5299694, write hit = 5299694, hit = 0, evict = 4038606 +[ 9646.543391] bdbm: llm_make_req: 5100000, 77 +[ 9647.220624] bdbm: llm_make_req: 5150000, 59 +[ 9647.247591] bdbm: nvm: total access = 7100000, total read = 1740073, read hit = 660297, total_write = 5359926, write hit = 5359926, hit = 0, evict = 4075046 +[ 9648.269475] bdbm: llm_make_req: 5200000, 64 +[ 9648.368908] bdbm: nvm: total access = 7200000, total read = 1780334, read hit = 675983, total_write = 5419665, write hit = 5419665, hit = 0, evict = 4111420 +[ 9649.295427] bdbm: llm_make_req: 5250000, 52 +[ 9649.822119] bdbm: nvm: total access = 7300000, total read = 1821038, read hit = 692246, total_write = 5478961, write hit = 5478961, hit = 0, evict = 4147215 +[ 9649.962409] bdbm: llm_make_req: 5300000, 65 +[ 9652.016081] bdbm: llm_make_req: 5350000, 96 +[ 9653.481688] bdbm: nvm: total access = 7400000, total read = 1861378, read hit = 708343, total_write = 5538621, write hit = 5538621, hit = 0, evict = 4183300 +[ 9654.256240] bdbm: llm_make_req: 5400000, 95 +[ 9655.998479] bdbm: llm_make_req: 5450000, 96 +[ 9657.015809] bdbm: nvm: total access = 7500000, total read = 1901317, read hit = 724152, total_write = 5598682, write hit = 5598682, hit = 0, evict = 4219635 +[ 9658.067202] bdbm: llm_make_req: 5500000, 67 +[ 9660.199751] bdbm: llm_make_req: 5550000, 76 +[ 9661.385002] bdbm: nvm: total access = 7600000, total read = 1941153, read hit = 739745, total_write = 5658846, write hit = 5658846, hit = 0, evict = 4256444 +[ 9661.885473] bdbm: llm_make_req: 5600000, 96 +[ 9663.759980] bdbm: llm_make_req: 5650000, 71 +[ 9666.067087] bdbm: llm_make_req: 5700000, 55 +[ 9666.075576] bdbm: nvm: total access = 7700000, total read = 1980993, read hit = 755674, total_write = 5719006, write hit = 5719006, hit = 0, evict = 4292891 +[ 9667.954624] bdbm: llm_make_req: 5750000, 96 +[ 9669.829184] bdbm: llm_make_req: 5800000, 73 +[ 9671.029522] bdbm: nvm: total access = 7800000, total read = 2021418, read hit = 771707, total_write = 5778581, write hit = 5778581, hit = 0, evict = 4328740 +[ 9672.161541] bdbm: llm_make_req: 5850000, 66 +[ 9674.179045] bdbm: llm_make_req: 5900000, 96 +[ 9674.666451] bdbm: nvm: total access = 7900000, total read = 2061123, read hit = 787352, total_write = 5838876, write hit = 5838876, hit = 0, evict = 4365548 +[ 9675.841188] bdbm: llm_make_req: 5950000, 69 +[ 9678.287739] bdbm: llm_make_req: 6000000, 89 +[ 9680.453333] bdbm: llm_make_req: 6050000, 95 +[ 9680.837729] bdbm: nvm: total access = 8000000, total read = 2100659, read hit = 802775, total_write = 5899340, write hit = 5899340, hit = 0, evict = 4402210 +[ 9682.269045] bdbm: llm_make_req: 6100000, 57 +[ 9684.875289] bdbm: llm_make_req: 6150000, 66 +[ 9686.329424] bdbm: nvm: total access = 8100000, total read = 2140303, read hit = 818282, total_write = 5959696, write hit = 5959696, hit = 0, evict = 4438767 +[ 9687.105046] bdbm: llm_make_req: 6200000, 96 +[ 9689.003426] bdbm: llm_make_req: 6250000, 77 +[ 9691.292617] bdbm: llm_make_req: 6300000, 96 +[ 9693.053631] bdbm: nvm: total access = 8200000, total read = 2180675, read hit = 833827, total_write = 6019324, write hit = 6019324, hit = 0, evict = 4475000 +[ 9693.658524] bdbm: llm_make_req: 6350000, 96 +[ 9695.912445] bdbm: llm_make_req: 6400000, 78 +[ 9698.381731] bdbm: llm_make_req: 6450000, 96 +[ 9700.168906] bdbm: nvm: total access = 8300000, total read = 2220477, read hit = 849100, total_write = 6079522, write hit = 6079522, hit = 0, evict = 4511366 +[ 9700.493140] bdbm: llm_make_req: 6500000, 96 +[ 9702.898219] bdbm: llm_make_req: 6550000, 67 +[ 9705.280488] bdbm: llm_make_req: 6600000, 95 +[ 9705.721313] bdbm: nvm: total access = 8400000, total read = 2260215, read hit = 864518, total_write = 6139784, write hit = 6139784, hit = 0, evict = 4547862 +[ 9707.258635] bdbm: llm_make_req: 6650000, 96 +[ 9709.828268] bdbm: llm_make_req: 6700000, 96 +[ 9712.611009] bdbm: llm_make_req: 6750000, 96 +[ 9714.707730] bdbm: nvm: total access = 8500000, total read = 2300048, read hit = 880159, total_write = 6199951, write hit = 6199951, hit = 0, evict = 4584449 +[ 9714.717605] bdbm: llm_make_req: 6800000, 75 +[ 9717.417780] bdbm: llm_make_req: 6850000, 96 +[ 9719.748798] bdbm: llm_make_req: 6900000, 96 +[ 9722.332078] bdbm: llm_make_req: 6950000, 63 +[ 9723.918349] bdbm: nvm: total access = 8600000, total read = 2340759, read hit = 896163, total_write = 6259240, write hit = 6259240, hit = 0, evict = 4620559 +[ 9725.049102] bdbm: llm_make_req: 7000000, 96 +[ 9727.092333] bdbm: llm_make_req: 7050000, 50 +[ 9729.771941] bdbm: llm_make_req: 7100000, 96 +[ 9732.427671] bdbm: llm_make_req: 7150000, 96 +[ 9733.368290] bdbm: nvm: total access = 8700000, total read = 2380784, read hit = 911769, total_write = 6319215, write hit = 6319215, hit = 0, evict = 4656870 +[ 9734.971077] bdbm: llm_make_req: 7200000, 83 +[ 9737.805885] bdbm: llm_make_req: 7250000, 95 +[ 9739.958244] bdbm: llm_make_req: 7300000, 96 +[ 9742.663827] bdbm: llm_make_req: 7350000, 96 +[ 9744.775752] bdbm: nvm: total access = 8800000, total read = 2421016, read hit = 927607, total_write = 6378983, write hit = 6378983, hit = 0, evict = 4693190 +[ 9745.565391] bdbm: llm_make_req: 7400000, 96 +[ 9747.998277] bdbm: llm_make_req: 7450000, 61 +[ 9750.815549] bdbm: llm_make_req: 7500000, 96 +[ 9753.057177] bdbm: llm_make_req: 7550000, 96 +[ 9755.850172] bdbm: llm_make_req: 7600000, 96 +[ 9756.238059] bdbm: nvm: total access = 8900000, total read = 2461088, read hit = 943593, total_write = 6438911, write hit = 6438911, hit = 0, evict = 4729211 +[ 9758.675962] bdbm: llm_make_req: 7650000, 96 +[ 9761.164575] bdbm: llm_make_req: 7700000, 67 +[ 9764.105645] bdbm: llm_make_req: 7750000, 96 +[ 9766.384892] bdbm: llm_make_req: 7800000, 96 +[ 9769.145841] bdbm: llm_make_req: 7850000, 96 +[ 9769.523237] bdbm: nvm: total access = 9000000, total read = 2500653, read hit = 959317, total_write = 6499346, write hit = 6499346, hit = 0, evict = 4765745 +[ 9771.971146] bdbm: llm_make_req: 7900000, 96 +[ 9774.530035] bdbm: llm_make_req: 7950000, 70 +[ 9777.494115] bdbm: llm_make_req: 8000000, 96 +[ 9779.656556] bdbm: llm_make_req: 8050000, 96 +[ 9782.511348] bdbm: llm_make_req: 8100000, 96 +[ 9782.879026] bdbm: nvm: total access = 9100000, total read = 2540795, read hit = 975460, total_write = 6559204, write hit = 6559204, hit = 0, evict = 4801994 +[ 9785.235002] bdbm: llm_make_req: 8150000, 96 +[ 9787.893199] bdbm: llm_make_req: 8200000, 62 +[ 9790.830493] bdbm: llm_make_req: 8250000, 96 +[ 9792.982688] bdbm: llm_make_req: 8300000, 57 +[ 9794.642252] bdbm: nvm: total access = 9200000, total read = 2580814, read hit = 991340, total_write = 6619185, write hit = 6619185, hit = 0, evict = 4838181 +[ 9795.892187] bdbm: llm_make_req: 8350000, 96 +[ 9798.570514] bdbm: llm_make_req: 8400000, 96 +[ 9801.233131] bdbm: llm_make_req: 8450000, 68 +[ 9804.200505] bdbm: llm_make_req: 8500000, 96 +[ 9806.286671] bdbm: llm_make_req: 8550000, 72 +[ 9807.974602] bdbm: nvm: total access = 9300000, total read = 2620538, read hit = 1007017, total_write = 6679461, write hit = 6679461, hit = 0, evict = 4874447 +[ 9809.243095] bdbm: llm_make_req: 8600000, 96 +[ 9811.886082] bdbm: llm_make_req: 8650000, 96 +[ 9814.611426] bdbm: llm_make_req: 8700000, 69 +[ 9817.528587] bdbm: llm_make_req: 8750000, 96 +[ 9819.643079] bdbm: llm_make_req: 8800000, 72 +[ 9821.324613] bdbm: nvm: total access = 9400000, total read = 2660269, read hit = 1022665, total_write = 6739730, write hit = 6739730, hit = 0, evict = 4911048 +[ 9822.635963] bdbm: llm_make_req: 8850000, 96 +[ 9825.255512] bdbm: llm_make_req: 8900000, 96 +[ 9827.956874] bdbm: llm_make_req: 8950000, 47 +[ 9830.907411] bdbm: llm_make_req: 9000000, 96 +[ 9833.133019] bdbm: llm_make_req: 9050000, 91 +[ 9834.762848] bdbm: nvm: total access = 9500000, total read = 2700115, read hit = 1038119, total_write = 6799884, write hit = 6799884, hit = 0, evict = 4947444 +[ 9836.006977] bdbm: llm_make_req: 9100000, 96 +[ 9838.588805] bdbm: llm_make_req: 9150000, 96 +[ 9841.075687] bdbm: llm_make_req: 9200000, 96 +[ 9844.208504] bdbm: llm_make_req: 9250000, 96 +[ 9846.446950] bdbm: llm_make_req: 9300000, 87 +[ 9848.097661] bdbm: nvm: total access = 9600000, total read = 2740052, read hit = 1053832, total_write = 6859947, write hit = 6859947, hit = 0, evict = 4984494 +[ 9849.379030] bdbm: llm_make_req: 9350000, 95 +[ 9851.826697] bdbm: llm_make_req: 9400000, 96 +[ 9854.355367] bdbm: llm_make_req: 9450000, 96 +[ 9857.385018] bdbm: llm_make_req: 9500000, 96 +[ 9859.712193] bdbm: llm_make_req: 9550000, 60 +[ 9859.714119] bdbm: nvm: total access = 9700000, total read = 2780659, read hit = 1069745, total_write = 6919340, write hit = 6919340, hit = 0, evict = 5020573 +[ 9862.610879] bdbm: llm_make_req: 9600000, 96 +[ 9865.000093] bdbm: llm_make_req: 9650000, 96 +[ 9867.588317] bdbm: llm_make_req: 9700000, 96 +[ 9870.615242] bdbm: llm_make_req: 9750000, 96 +[ 9872.962832] bdbm: nvm: total access = 9800000, total read = 2820993, read hit = 1085435, total_write = 6979006, write hit = 6979006, hit = 0, evict = 5056870 +[ 9872.971864] bdbm: llm_make_req: 9800000, 63 +[ 9875.845338] bdbm: llm_make_req: 9850000, 96 +[ 9878.166044] bdbm: llm_make_req: 9900000, 96 +[ 9880.785259] bdbm: llm_make_req: 9950000, 96 +[ 9883.592576] bdbm: llm_make_req: 10000000, 96 +[ 9884.070663] bdbm: nvm: total access = 9900000, total read = 2861237, read hit = 1101238, total_write = 7038762, write hit = 7038762, hit = 0, evict = 5092694 +[ 9885.403110] bdbm: llm_make_req: 10050000, 66 +[ 9887.740023] bdbm: llm_make_req: 10100000, 65 +[ 9888.814611] bdbm: nvm: total access = 10000000, total read = 2901586, read hit = 1117308, total_write = 7098413, write hit = 7098413, hit = 0, evict = 5128577 +[ 9889.507051] bdbm: llm_make_req: 10150000, 96 +[ 9891.188182] bdbm: llm_make_req: 10200000, 96 +[ 9891.904078] bdbm: nvm: total access = 10100000, total read = 2940827, read hit = 1132740, total_write = 7159172, write hit = 7159172, hit = 0, evict = 5165716 +[ 9892.834571] bdbm: llm_make_req: 10250000, 62 +[ 9894.615054] bdbm: llm_make_req: 10300000, 86 +[ 9894.627375] bdbm: nvm: total access = 10200000, total read = 2980575, read hit = 1148413, total_write = 7219424, write hit = 7219424, hit = 0, evict = 5202372 +[ 9896.376166] bdbm: llm_make_req: 10350000, 73 +[ 9897.364164] bdbm: nvm: total access = 10300000, total read = 3020031, read hit = 1163873, total_write = 7279968, write hit = 7279968, hit = 0, evict = 5239113 +[ 9897.532002] bdbm: llm_make_req: 10400000, 96 +[ 9899.245471] bdbm: llm_make_req: 10450000, 64 +[ 9900.196682] bdbm: nvm: total access = 10400000, total read = 3060371, read hit = 1179702, total_write = 7339628, write hit = 7339628, hit = 0, evict = 5275153 +[ 9901.179247] bdbm: llm_make_req: 10500000, 64 +[ 9902.759285] bdbm: llm_make_req: 10550000, 96 +[ 9903.183484] bdbm: nvm: total access = 10500000, total read = 3100199, read hit = 1195386, total_write = 7399800, write hit = 7399800, hit = 0, evict = 5311209 +[ 9904.200433] bdbm: llm_make_req: 10600000, 65 +[ 9906.082526] bdbm: llm_make_req: 10650000, 54 +[ 9906.084283] bdbm: nvm: total access = 10600000, total read = 3140070, read hit = 1211327, total_write = 7459929, write hit = 7459929, hit = 0, evict = 5347936 +[ 9907.936772] bdbm: llm_make_req: 10700000, 67 +[ 9908.935207] bdbm: nvm: total access = 10700000, total read = 3180013, read hit = 1226897, total_write = 7519986, write hit = 7519986, hit = 0, evict = 5384323 +[ 9909.356686] bdbm: llm_make_req: 10750000, 96 +[ 9910.814191] bdbm: llm_make_req: 10800000, 68 +[ 9911.720046] bdbm: nvm: total access = 10800000, total read = 3219890, read hit = 1242312, total_write = 7580109, write hit = 7580109, hit = 0, evict = 5421211 +[ 9912.611877] bdbm: llm_make_req: 10850000, 65 +[ 9914.416072] bdbm: llm_make_req: 10900000, 60 +[ 9914.489780] bdbm: nvm: total access = 10900000, total read = 3259496, read hit = 1257659, total_write = 7640503, write hit = 7640503, hit = 0, evict = 5457972 +[ 9915.754980] bdbm: llm_make_req: 10950000, 96 +[ 9917.300531] bdbm: nvm: total access = 11000000, total read = 3299191, read hit = 1273580, total_write = 7700808, write hit = 7700808, hit = 0, evict = 5494675 +[ 9917.315344] bdbm: llm_make_req: 11000000, 85 +[ 9919.118071] bdbm: llm_make_req: 11050000, 86 +[ 9920.112395] bdbm: nvm: total access = 11100000, total read = 3339358, read hit = 1289218, total_write = 7760641, write hit = 7760641, hit = 0, evict = 5530908 +[ 9920.969401] bdbm: llm_make_req: 11100000, 7 +[ 9922.056424] bdbm: llm_make_req: 11150000, 52 +[ 9922.957431] bdbm: nvm: total access = 11200000, total read = 3379797, read hit = 1305035, total_write = 7820202, write hit = 7820202, hit = 0, evict = 5566854 +[ 9923.923352] bdbm: llm_make_req: 11200000, 72 +[ 9925.756952] bdbm: llm_make_req: 11250000, 74 +[ 9925.804365] bdbm: nvm: total access = 11300000, total read = 3419256, read hit = 1320524, total_write = 7880743, write hit = 7880743, hit = 0, evict = 5603566 +[ 9927.278323] bdbm: llm_make_req: 11300000, 96 +[ 9928.676270] bdbm: nvm: total access = 11400000, total read = 3458927, read hit = 1335991, total_write = 7941072, write hit = 7941072, hit = 0, evict = 5639910 +[ 9928.716856] bdbm: llm_make_req: 11350000, 67 +[ 9930.576161] bdbm: llm_make_req: 11400000, 61 +[ 9931.548673] bdbm: nvm: total access = 11500000, total read = 3499076, read hit = 1352098, total_write = 8000923, write hit = 8000923, hit = 0, evict = 5676337 +[ 9932.403746] bdbm: llm_make_req: 11450000, 70 +[ 9933.897233] bdbm: llm_make_req: 11500000, 96 +[ 9934.374257] bdbm: nvm: total access = 11600000, total read = 3538722, read hit = 1367870, total_write = 8061277, write hit = 8061277, hit = 0, evict = 5712822 +[ 9935.334404] bdbm: llm_make_req: 11550000, 66 +[ 9937.194722] bdbm: llm_make_req: 11600000, 78 +[ 9937.224684] bdbm: nvm: total access = 11700000, total read = 3579028, read hit = 1383622, total_write = 8120971, write hit = 8120971, hit = 0, evict = 5748860 +[ 9939.057803] bdbm: llm_make_req: 11650000, 75 +[ 9940.115734] bdbm: nvm: total access = 11800000, total read = 3619557, read hit = 1399525, total_write = 8180442, write hit = 8180442, hit = 0, evict = 5784938 +[ 9940.279725] bdbm: llm_make_req: 11700000, 96 +[ 9942.040337] bdbm: llm_make_req: 11750000, 74 +[ 9943.020066] bdbm: nvm: total access = 11900000, total read = 3659346, read hit = 1415083, total_write = 8240653, write hit = 8240653, hit = 0, evict = 5821376 +[ 9943.920370] bdbm: llm_make_req: 11800000, 67 +[ 9945.463089] bdbm: llm_make_req: 11850000, 96 +[ 9945.921919] bdbm: nvm: total access = 12000000, total read = 3699466, read hit = 1431142, total_write = 8300533, write hit = 8300533, hit = 0, evict = 5857833 +[ 9946.900361] bdbm: llm_make_req: 11900000, 59 +[ 9948.788781] bdbm: llm_make_req: 11950000, 76 +[ 9949.651308] bdbm: nvm: total access = 12100000, total read = 3738440, read hit = 1446447, total_write = 8361559, write hit = 8361559, hit = 0, evict = 5895029 +[ 9950.617871] bdbm: llm_make_req: 12000000, 69 +[ 9952.195949] bdbm: llm_make_req: 12050000, 96 +[ 9952.593474] bdbm: nvm: total access = 12200000, total read = 3777912, read hit = 1461796, total_write = 8422087, write hit = 8422087, hit = 0, evict = 5932067 +[ 9953.687748] bdbm: llm_make_req: 12100000, 64 +[ 9955.589008] bdbm: nvm: total access = 12300000, total read = 3818014, read hit = 1477598, total_write = 8481985, write hit = 8481985, hit = 0, evict = 5968307 +[ 9955.614542] bdbm: llm_make_req: 12150000, 76 +[ 9957.508436] bdbm: llm_make_req: 12200000, 52 +[ 9958.596705] bdbm: nvm: total access = 12400000, total read = 3858725, read hit = 1493723, total_write = 8541274, write hit = 8541274, hit = 0, evict = 6004072 +[ 9958.860202] bdbm: llm_make_req: 12250000, 96 +[ 9960.836521] bdbm: llm_make_req: 12300000, 90 +[ 9962.000344] bdbm: nvm: total access = 12500000, total read = 3898471, read hit = 1509271, total_write = 8601528, write hit = 8601528, hit = 0, evict = 6040574 +[ 9963.030742] bdbm: llm_make_req: 12350000, 67 +[ 9964.714691] bdbm: llm_make_req: 12400000, 96 +[ 9966.318500] bdbm: nvm: total access = 12600000, total read = 3938103, read hit = 1524673, total_write = 8661896, write hit = 8661896, hit = 0, evict = 6077022 +[ 9966.372073] bdbm: llm_make_req: 12450000, 83 +[ 9968.567314] bdbm: llm_make_req: 12500000, 84 +[ 9969.755011] bdbm: nvm: total access = 12700000, total read = 3977825, read hit = 1540539, total_write = 8722174, write hit = 8722174, hit = 0, evict = 6113637 +[ 9970.376593] bdbm: llm_make_req: 12550000, 96 +[ 9971.981273] bdbm: llm_make_req: 12600000, 80 +[ 9974.061890] bdbm: nvm: total access = 12800000, total read = 4018126, read hit = 1556543, total_write = 8781873, write hit = 8781873, hit = 0, evict = 6149655 +[ 9974.082668] bdbm: llm_make_req: 12650000, 81 +[ 9975.936885] bdbm: llm_make_req: 12700000, 96 +[ 9977.486135] bdbm: nvm: total access = 12900000, total read = 4058028, read hit = 1572407, total_write = 8841971, write hit = 8841971, hit = 0, evict = 6186220 +[ 9977.781422] bdbm: llm_make_req: 12750000, 96 +[ 9979.724199] bdbm: llm_make_req: 12800000, 57 +[ 9981.893130] bdbm: llm_make_req: 12850000, 78 +[ 9981.918757] bdbm: nvm: total access = 13000000, total read = 4097587, read hit = 1588163, total_write = 8902412, write hit = 8902412, hit = 0, evict = 6223046 +[ 9983.722211] bdbm: llm_make_req: 12900000, 95 +[ 9985.380147] bdbm: llm_make_req: 12950000, 76 +[ 9985.385957] bdbm: nvm: total access = 13100000, total read = 4137882, read hit = 1604050, total_write = 8962117, write hit = 8962117, hit = 0, evict = 6259869 +[ 9987.591445] bdbm: llm_make_req: 13000000, 80 +[ 9989.421751] bdbm: llm_make_req: 13050000, 96 +[ 9989.833932] bdbm: nvm: total access = 13200000, total read = 4177584, read hit = 1619672, total_write = 9022415, write hit = 9022415, hit = 0, evict = 6296038 +[ 9991.031357] bdbm: llm_make_req: 13100000, 67 +[ 9993.241914] bdbm: llm_make_req: 13150000, 77 +[ 9994.351002] bdbm: nvm: total access = 13300000, total read = 4218271, read hit = 1635252, total_write = 9081728, write hit = 9081728, hit = 0, evict = 6332064 +[ 9995.125962] bdbm: llm_make_req: 13200000, 96 +[ 9996.796075] bdbm: llm_make_req: 13250000, 77 +[ 9997.922186] bdbm: nvm: total access = 13400000, total read = 4259160, read hit = 1651289, total_write = 9140839, write hit = 9140839, hit = 0, evict = 6367900 +[ 9999.051085] bdbm: llm_make_req: 13300000, 58 +[10001.081228] bdbm: llm_make_req: 13350000, 96 +[10002.759004] bdbm: nvm: total access = 13500000, total read = 4299099, read hit = 1666955, total_write = 9200900, write hit = 9200900, hit = 0, evict = 6404386 +[10002.904710] bdbm: llm_make_req: 13400000, 96 +[10005.333185] bdbm: llm_make_req: 13450000, 81 +[10052.925002] bdbm: ----------------------------------------------- +[10052.925003] bdbm: < PERFORMANCE SUMMARY > +[10052.925004] bdbm: [0] Execution Time (us): 465.69745 +[10052.925005] bdbm: +[10052.925005] bdbm: [1] Total I/Os +[10052.925006] bdbm: # of page reads: 4833498 +[10052.925006] bdbm: # of page writes: 2184673 +[10052.925007] bdbm: # of block erase: 35584 +[10052.925007] bdbm: +[10052.925008] bdbm: [2] Normal I/Os +[10052.925008] bdbm: # of page reads: 2649098 +[10052.925009] bdbm: # of page writes: 0 +[10052.925009] bdbm: # of page rmw reads: 0 +[10052.925010] bdbm: # of page rmw writes: 0 +[10052.925010] bdbm: +[10052.925010] bdbm: [3] GC I/Os +[10052.925011] bdbm: # of GC invocation: 0 +[10052.925011] bdbm: # of page reads: 2184400 +[10052.925012] bdbm: # of page writes: 2184673 +[10052.925012] bdbm: # of block erase: 35584 +[10052.925013] bdbm: +[10052.925013] bdbm: [4] Meta I/Os +[10052.925014] bdbm: # of meta page reads: 0 +[10052.925014] bdbm: # of meta page writes: 0 +[10052.925015] bdbm: +[10052.925015] bdbm: [5] Elapsed Time +[10052.925016] bdbm: page read (us): 93 (S:0 + Q:0 + D:93) +[10052.925016] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[10052.925017] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[10052.925017] bdbm: +[10052.925018] bdbm: [6] Utilization (R) +[10052.925019] bdbm: 37847 37645 37905 37564 37770 37677 37680 37545 +[10052.925021] bdbm: 37539 37972 37726 37666 37719 37412 37500 37634 +[10052.925022] bdbm: 37531 37743 38048 37659 37813 37671 38080 37453 +[10052.925023] bdbm: 37756 37624 37867 37668 37836 37764 37816 37836 +[10052.925024] bdbm: 37770 37999 37846 38054 37787 37692 37833 37712 +[10052.925025] bdbm: 37768 37747 37805 37773 37842 38120 37653 37696 +[10052.925026] bdbm: 37463 37403 37936 37315 37406 37486 37719 37569 +[10052.925028] bdbm: 37448 37854 37705 37679 37768 37983 38224 37846 +[10052.925029] bdbm: 37893 37796 37870 37736 37970 37709 37578 37702 +[10052.925030] bdbm: 37917 37583 37740 37706 37804 37900 37852 37857 +[10052.925031] bdbm: 37852 38000 37792 38180 37988 37404 37766 37362 +[10052.925032] bdbm: 38060 38017 37676 37926 37541 38162 38280 38102 +[10052.925033] bdbm: 37948 37496 37738 37752 37583 37703 37658 37762 +[10052.925034] bdbm: 37641 37808 37645 37650 37507 37632 37830 37495 +[10052.925036] bdbm: 37872 37744 37925 38010 37576 38138 37703 37854 +[10052.925037] bdbm: 37824 37575 37664 38077 37712 37681 37893 37814 +[10052.925037] bdbm: +[10052.925038] bdbm: [7] Utilization (W) +[10052.925039] bdbm: 17079 17117 17130 17150 17159 17168 17171 17173 +[10052.925040] bdbm: 17172 17172 17175 17175 17177 17173 17177 17177 +[10052.925041] bdbm: 17173 17169 17169 17166 17166 17162 17160 17154 +[10052.925042] bdbm: 17151 17148 17147 17144 17143 17142 17141 17141 +[10052.925043] bdbm: 17141 17139 17135 17131 17129 17125 17121 17120 +[10052.925045] bdbm: 17120 17116 17113 17110 17106 17104 17104 17100 +[10052.925046] bdbm: 17098 17097 17096 17096 17095 17093 17091 17090 +[10052.925047] bdbm: 17088 17083 17079 17075 17074 17073 17071 17069 +[10052.925048] bdbm: 17069 17067 17066 17062 17060 17057 17055 17053 +[10052.925049] bdbm: 17050 17049 17045 17045 17042 17042 17040 17038 +[10052.925050] bdbm: 17038 17036 17033 17032 17029 17029 17025 17022 +[10052.925051] bdbm: 17021 17017 17015 17014 17009 17008 17005 17005 +[10052.925053] bdbm: 17005 17002 17000 16997 16994 16992 16990 16988 +[10052.925054] bdbm: 16987 16985 16983 16980 16980 16978 16977 16975 +[10052.925055] bdbm: 16973 16973 16970 16969 16969 16968 16967 16965 +[10052.925056] bdbm: 16964 16960 16958 16955 16950 16947 16946 16945 +[10052.925056] bdbm: [8] NVM I/Os +[10052.925057] bdbm: #_of_nvm_total_accesses: 13570331 +[10052.925058] bdbm: #_of_nvm_total_write_requests: 9243224 +[10052.925058] bdbm: #_of_nvm_total_read_requests: 4327107 +[10052.925058] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9243224 +[10052.925059] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1677981 +[10052.925059] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[10052.925060] bdbm: #_of_nvm_evict_from_nvm: 6430252 +[10052.925061] bdbm: #_of_nvm_write_amplification: 6430252 : 8614925 +[10052.925061] bdbm: +[10052.925061] bdbm: ----------------------------------------------- +[10052.925062] bdbm: ----------------------------------------------- +[10053.074978] bdbm: done +[10053.074980] bdbm: [dm_ramdrive_close] closed! +[10053.463327] bdbm: [bdbm_drv_main] bdbm_drv is closed +[10053.463329] bdbm: [bdbm_drv_main] bdbm_drv is removed +[10053.497038] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[10053.517914] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[10053.523433] bdbm: ===================================================================== +[10053.523435] bdbm: DEVICE PARAMETERS +[10053.523435] bdbm: ===================================================================== +[10053.523436] bdbm: # of channels = 8 +[10053.523437] bdbm: # of chips per channel = 16 +[10053.523438] bdbm: # of blocks per chip = 256 +[10053.523438] bdbm: # of pages per block = 128 +[10053.523439] bdbm: # of subpages per page = 1 +[10053.523440] bdbm: page main size = 4096 bytes +[10053.523441] bdbm: page oob size = 64 bytes +[10053.523441] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[10053.523442] bdbm: +[10053.523443] bdbm: ===================================================================== +[10053.523444] bdbm: RAM DISK INFO +[10053.523444] bdbm: ===================================================================== +[10053.523445] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[10055.050127] bdbm: ramssd addr = ffffc90050001000 +[10055.050129] bdbm: +[10055.050130] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[10056.571944] bdbm: *** building ptr_ramssd_data done +[10056.572177] bdbm: [dm_ramdrive_probe] probe done! +[10056.572179] bdbm: [dm_ramdrive_open] open done! +[10056.621837] bdbm: nvm cache addr = ffffc90870003000 +[10056.627529] bdbm: ========================================================== +[10056.627530] bdbm: NVM CONFIGURATION +[10056.627531] bdbm: ========================================================== +[10056.627532] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[10056.821116] bdbm: TRIM is disabled +[10056.821276] bdbm: ===================================================================== +[10056.821279] bdbm: DEVICE PARAMETERS +[10056.821280] bdbm: ===================================================================== +[10056.821280] bdbm: # of channels = 8 +[10056.821281] bdbm: # of chips per channel = 16 +[10056.821281] bdbm: # of blocks per chip = 256 +[10056.821282] bdbm: # of pages per block = 128 +[10056.821282] bdbm: # of subpages per page = 1 +[10056.821283] bdbm: page main size = 4096 bytes +[10056.821283] bdbm: page oob size = 64 bytes +[10056.821285] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[10056.821285] bdbm: +[10056.821286] bdbm: ===================================================================== +[10056.821286] bdbm: FTL CONFIGURATION +[10056.821287] bdbm: ===================================================================== +[10056.821288] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[10056.821288] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[10056.821289] bdbm: wl policy = 1 (1: none, 2: swap) +[10056.821289] bdbm: trim mode = 2 (1: enable, 2: disable) +[10056.821291] bdbm: kernel sector = 512 bytes +[10056.821291] bdbm: +[10056.821292] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[10056.841049] bdbm: llm_make_req: 0, 1 +[10056.968725] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[10056.968727] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[10058.633558] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 diff --git a/result/fio_toff_o1_n1g.rslt b/result/fio_toff_o1_n1g.rslt new file mode 100644 index 0000000..d612a5b --- /dev/null +++ b/result/fio_toff_o1_n1g.rslt @@ -0,0 +1,44 @@ +JESD219: (g=0): rw=randrw, bs=512-64K/512-64K/512-64K, ioengine=libaio, iodepth=256 +... +fio-2.14-20-gd6192-dirty +Starting 4 processes +JESD219: Laying out IO file(s) (1 file(s) / 10240MB) + +JESD219: (groupid=0, jobs=4): err= 0: pid=22535: Mon Nov 7 17:35:33 2016 + read : io=16379MB, bw=44505KB/s, iops=5825, runt=376862msec + slat (usec): min=1, max=1782.4K, avg=202.96, stdev=15187.15 + clat (usec): min=255, max=3335.5K, avg=71028.71, stdev=282965.62 + lat (usec): min=272, max=3335.5K, avg=71231.74, stdev=283349.05 + clat percentiles (usec): + | 1.00th=[ 1512], 5.00th=[ 1688], 10.00th=[ 1880], 20.00th=[ 2672], + | 30.00th=[ 3088], 40.00th=[ 3280], 50.00th=[ 3504], 60.00th=[ 4576], + | 70.00th=[10048], 80.00th=[15296], 90.00th=[24704], 95.00th=[798720], + | 99.00th=[1613824], 99.50th=[1646592], 99.90th=[1679360], 99.95th=[1695744], + | 99.99th=[3293184] + write: io=24581MB, bw=66791KB/s, iops=8740, runt=376862msec + slat (usec): min=2, max=1780.6K, avg=313.16, stdev=19249.12 + clat (usec): min=205, max=3334.1K, avg=67489.67, stdev=275944.16 + lat (usec): min=215, max=3335.6K, avg=67802.93, stdev=276565.10 + clat percentiles (usec): + | 1.00th=[ 1448], 5.00th=[ 1592], 10.00th=[ 1720], 20.00th=[ 2480], + | 30.00th=[ 2928], 40.00th=[ 3152], 50.00th=[ 3312], 60.00th=[ 3696], + | 70.00th=[ 9024], 80.00th=[14784], 90.00th=[23424], 95.00th=[59136], + | 99.00th=[1613824], 99.50th=[1646592], 99.90th=[1679360], 99.95th=[1695744], + | 99.99th=[1777664] + lat (usec) : 250=0.01%, 500=0.01%, 750=0.01%, 1000=0.01% + lat (msec) : 2=14.22%, 4=45.91%, 10=10.68%, 20=16.24%, 50=7.74% + lat (msec) : 100=0.14%, 250=0.01%, 500=0.11%, 750=0.02%, 1000=1.54% + lat (msec) : 2000=3.39%, >=2000=0.01% + cpu : usr=0.29%, sys=22.56%, ctx=116734, majf=0, minf=40 + IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% + submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% + complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1% + issued : total=r=2195332/w=3294058/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 + latency : target=0, window=0, percentile=100.00%, depth=256 + +Run status group 0 (all jobs): + READ: io=16379MB, aggrb=44504KB/s, minb=44504KB/s, maxb=44504KB/s, mint=376862msec, maxt=376862msec + WRITE: io=24581MB, aggrb=66791KB/s, minb=66791KB/s, maxb=66791KB/s, mint=376862msec, maxt=376862msec + +Disk stats (read/write): + robusta: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00% diff --git a/result/fio_toff_o1_n2g.dmesg b/result/fio_toff_o1_n2g.dmesg new file mode 100644 index 0000000..c3c783b --- /dev/null +++ b/result/fio_toff_o1_n2g.dmesg @@ -0,0 +1,622 @@ +[ 8830.131011] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 +[ 8843.370917] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 0, evict = 0 +[ 8843.550466] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 0, evict = 4063 +[ 8843.818379] bdbm: llm_make_req: 50000, 93 +[ 8844.108029] bdbm: llm_make_req: 100000, 57 +[ 8844.128904] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 0, evict = 104063 +[ 8844.397448] bdbm: llm_make_req: 150000, 95 +[ 8844.683416] bdbm: llm_make_req: 200000, 94 +[ 8844.704127] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 0, evict = 204063 +[ 8844.969826] bdbm: llm_make_req: 250000, 95 +[ 8845.253261] bdbm: llm_make_req: 300000, 96 +[ 8845.273820] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 0, evict = 304063 +[ 8845.545998] bdbm: llm_make_req: 350000, 94 +[ 8845.838979] bdbm: llm_make_req: 400000, 95 +[ 8845.860775] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 0, evict = 404063 +[ 8846.131540] bdbm: llm_make_req: 450000, 58 +[ 8846.422682] bdbm: llm_make_req: 500000, 94 +[ 8846.451269] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 0, evict = 504063 +[ 8846.714987] bdbm: llm_make_req: 550000, 95 +[ 8847.009012] bdbm: llm_make_req: 600000, 85 +[ 8847.037552] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 0, evict = 604063 +[ 8847.309263] bdbm: llm_make_req: 650000, 83 +[ 8847.598997] bdbm: llm_make_req: 700000, 94 +[ 8847.628977] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 0, evict = 704063 +[ 8847.896093] bdbm: llm_make_req: 750000, 96 +[ 8848.177460] bdbm: llm_make_req: 800000, 81 +[ 8848.198735] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 0, evict = 804063 +[ 8848.459702] bdbm: llm_make_req: 850000, 96 +[ 8848.743256] bdbm: llm_make_req: 900000, 95 +[ 8848.763807] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 0, evict = 904063 +[ 8849.023385] bdbm: llm_make_req: 950000, 92 +[ 8849.304259] bdbm: llm_make_req: 1000000, 94 +[ 8849.324727] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 0, evict = 1004063 +[ 8849.584272] bdbm: llm_make_req: 1050000, 93 +[ 8849.865377] bdbm: llm_make_req: 1100000, 94 +[ 8849.885878] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 0, evict = 1104063 +[ 8850.145605] bdbm: llm_make_req: 1150000, 95 +[ 8850.425714] bdbm: llm_make_req: 1200000, 94 +[ 8850.446276] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 0, evict = 1204063 +[ 8850.706625] bdbm: llm_make_req: 1250000, 95 +[ 8850.987982] bdbm: llm_make_req: 1300000, 93 +[ 8851.015706] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 0, evict = 1304063 +[ 8851.271545] bdbm: llm_make_req: 1350000, 93 +[ 8889.984765] bdbm: ----------------------------------------------- +[ 8889.984767] bdbm: < PERFORMANCE SUMMARY > +[ 8889.984768] bdbm: [0] Execution Time (us): 64.353969 +[ 8889.984768] bdbm: +[ 8889.984769] bdbm: [1] Total I/Os +[ 8889.984769] bdbm: # of page reads: 3 +[ 8889.984770] bdbm: # of page writes: 0 +[ 8889.984770] bdbm: # of block erase: 0 +[ 8889.984771] bdbm: +[ 8889.984771] bdbm: [2] Normal I/Os +[ 8889.984772] bdbm: # of page reads: 3 +[ 8889.984772] bdbm: # of page writes: 0 +[ 8889.984773] bdbm: # of page rmw reads: 0 +[ 8889.984773] bdbm: # of page rmw writes: 0 +[ 8889.984773] bdbm: +[ 8889.984774] bdbm: [3] GC I/Os +[ 8889.984774] bdbm: # of GC invocation: 0 +[ 8889.984775] bdbm: # of page reads: 0 +[ 8889.984775] bdbm: # of page writes: 0 +[ 8889.984776] bdbm: # of block erase: 0 +[ 8889.984776] bdbm: +[ 8889.984777] bdbm: [4] Meta I/Os +[ 8889.984777] bdbm: # of meta page reads: 0 +[ 8889.984777] bdbm: # of meta page writes: 0 +[ 8889.984778] bdbm: +[ 8889.984778] bdbm: [5] Elapsed Time +[ 8889.984779] bdbm: page read (us): 112 (S:0 + Q:15 + D:97) +[ 8889.984780] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[ 8889.984780] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 8889.984781] bdbm: +[ 8889.984781] bdbm: [6] Utilization (R) +[ 8889.984783] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984784] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984785] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984786] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984787] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984789] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984790] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984791] bdbm: 0 0 0 0 0 1 1 1 +[ 8889.984792] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984793] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984794] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984795] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984796] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984797] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984799] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984800] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984800] bdbm: +[ 8889.984800] bdbm: [7] Utilization (W) +[ 8889.984802] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984803] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984804] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984806] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984807] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984808] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984809] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984810] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984811] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984812] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984813] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984814] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984815] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984817] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984818] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984819] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984819] bdbm: [8] NVM I/Os +[ 8889.984820] bdbm: #_of_nvm_total_accesses: 1659366 +[ 8889.984820] bdbm: #_of_nvm_total_write_requests: 1659321 +[ 8889.984821] bdbm: #_of_nvm_total_read_requests: 45 +[ 8889.984821] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 1659321 +[ 8889.984822] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 14 +[ 8889.984822] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[ 8889.984823] bdbm: #_of_nvm_evict_from_nvm: 1363423 +[ 8889.984823] bdbm: #_of_nvm_write_amplification: 1363423 : 1363423 +[ 8889.984824] bdbm: +[ 8889.984824] bdbm: ----------------------------------------------- +[ 8889.984825] bdbm: ----------------------------------------------- +[ 8890.139162] bdbm: done +[ 8890.139165] bdbm: [dm_ramdrive_close] closed! +[ 8890.527187] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 8890.527189] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 8890.540994] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 8890.569353] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 8890.572893] bdbm: ===================================================================== +[ 8890.572894] bdbm: DEVICE PARAMETERS +[ 8890.572895] bdbm: ===================================================================== +[ 8890.572896] bdbm: # of channels = 8 +[ 8890.572896] bdbm: # of chips per channel = 16 +[ 8890.572897] bdbm: # of blocks per chip = 256 +[ 8890.572897] bdbm: # of pages per block = 128 +[ 8890.572898] bdbm: # of subpages per page = 1 +[ 8890.572898] bdbm: page main size = 4096 bytes +[ 8890.572899] bdbm: page oob size = 64 bytes +[ 8890.572899] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 8890.572900] bdbm: +[ 8890.572901] bdbm: ===================================================================== +[ 8890.572901] bdbm: RAM DISK INFO +[ 8890.572902] bdbm: ===================================================================== +[ 8890.572902] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[ 8892.105899] bdbm: ramssd addr = ffffc90050001000 +[ 8892.105901] bdbm: +[ 8892.105902] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 8893.655907] bdbm: *** building ptr_ramssd_data done +[ 8893.656160] bdbm: [dm_ramdrive_probe] probe done! +[ 8893.656162] bdbm: [dm_ramdrive_open] open done! +[ 8893.853435] bdbm: nvm cache addr = ffffc908ee51c000 +[ 8893.863269] bdbm: ========================================================== +[ 8893.863270] bdbm: NVM CONFIGURATION +[ 8893.863271] bdbm: ========================================================== +[ 8893.863272] bdbm: total size = 2147483648, nr_nvm_pages = 524288, nvm_page_size = 4096 +[ 8894.018924] bdbm: TRIM is disabled +[ 8894.019527] bdbm: ===================================================================== +[ 8894.019529] bdbm: DEVICE PARAMETERS +[ 8894.019530] bdbm: ===================================================================== +[ 8894.019530] bdbm: # of channels = 8 +[ 8894.019531] bdbm: # of chips per channel = 16 +[ 8894.019531] bdbm: # of blocks per chip = 256 +[ 8894.019532] bdbm: # of pages per block = 128 +[ 8894.019532] bdbm: # of subpages per page = 1 +[ 8894.019533] bdbm: page main size = 4096 bytes +[ 8894.019533] bdbm: page oob size = 64 bytes +[ 8894.019534] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 8894.019535] bdbm: +[ 8894.019536] bdbm: ===================================================================== +[ 8894.019536] bdbm: FTL CONFIGURATION +[ 8894.019536] bdbm: ===================================================================== +[ 8894.019537] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 8894.019538] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 8894.019538] bdbm: wl policy = 1 (1: none, 2: swap) +[ 8894.019559] bdbm: trim mode = 2 (1: enable, 2: disable) +[ 8894.019560] bdbm: kernel sector = 512 bytes +[ 8894.019560] bdbm: +[ 8894.019561] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 8894.039249] bdbm: llm_make_req: 0, 1 +[ 8894.167178] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[ 8894.167181] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 8895.613721] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 +[ 8908.847117] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 0, evict = 0 +[ 8909.015301] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 0, evict = 0 +[ 8909.139666] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 0, evict = 0 +[ 8909.237481] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 0, evict = 0 +[ 8909.536235] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 0, evict = 41919 +[ 8909.585960] bdbm: llm_make_req: 50000, 90 +[ 8909.877292] bdbm: llm_make_req: 100000, 73 +[ 8910.116623] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 0, evict = 141919 +[ 8910.168328] bdbm: llm_make_req: 150000, 89 +[ 8910.454799] bdbm: llm_make_req: 200000, 95 +[ 8910.691462] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 0, evict = 241919 +[ 8910.741681] bdbm: llm_make_req: 250000, 95 +[ 8911.025329] bdbm: llm_make_req: 300000, 95 +[ 8911.261226] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 0, evict = 341919 +[ 8911.312898] bdbm: llm_make_req: 350000, 95 +[ 8911.597752] bdbm: llm_make_req: 400000, 96 +[ 8911.833987] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 0, evict = 441919 +[ 8911.882145] bdbm: llm_make_req: 450000, 94 +[ 8912.167657] bdbm: llm_make_req: 500000, 92 +[ 8912.413212] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 0, evict = 541919 +[ 8912.453842] bdbm: llm_make_req: 550000, 95 +[ 8912.738692] bdbm: llm_make_req: 600000, 96 +[ 8912.984872] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 0, evict = 641919 +[ 8913.025602] bdbm: llm_make_req: 650000, 64 +[ 8913.310380] bdbm: llm_make_req: 700000, 88 +[ 8913.555664] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 0, evict = 741919 +[ 8913.604266] bdbm: llm_make_req: 750000, 96 +[ 8913.889523] bdbm: llm_make_req: 800000, 95 +[ 8914.132738] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 0, evict = 841919 +[ 8914.180630] bdbm: llm_make_req: 850000, 75 +[ 8914.462172] bdbm: llm_make_req: 900000, 92 +[ 8914.695461] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 0, evict = 941919 +[ 8914.743112] bdbm: llm_make_req: 950000, 93 +[ 8915.023839] bdbm: llm_make_req: 1000000, 95 +[ 8915.257602] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 0, evict = 1041919 +[ 8915.305379] bdbm: llm_make_req: 1050000, 93 +[ 8915.596478] bdbm: llm_make_req: 1100000, 93 +[ 8915.831798] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 0, evict = 1141919 +[ 8915.879954] bdbm: llm_make_req: 1150000, 95 +[ 8916.171043] bdbm: llm_make_req: 1200000, 87 +[ 8916.422763] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 0, evict = 1241919 +[ 8916.465536] bdbm: llm_make_req: 1250000, 95 +[ 8916.759500] bdbm: llm_make_req: 1300000, 95 +[ 8917.010038] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 0, evict = 1341919 +[ 8917.053147] bdbm: llm_make_req: 1350000, 87 +[ 8917.344929] bdbm: llm_make_req: 1400000, 94 +[ 8917.593602] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 0, evict = 1441919 +[ 8917.635156] bdbm: llm_make_req: 1450000, 95 +[ 8917.933665] bdbm: llm_make_req: 1500000, 31 +[ 8918.183715] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 0, evict = 1541919 +[ 8918.235465] bdbm: llm_make_req: 1550000, 26 +[ 8918.531712] bdbm: llm_make_req: 1600000, 94 +[ 8918.773923] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 0, evict = 1641919 +[ 8918.823329] bdbm: llm_make_req: 1650000, 63 +[ 8919.123879] bdbm: llm_make_req: 1700000, 87 +[ 8919.373996] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 0, evict = 1741919 +[ 8919.425572] bdbm: llm_make_req: 1750000, 87 +[ 8919.725679] bdbm: llm_make_req: 1800000, 93 +[ 8919.974062] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 0, evict = 1841919 +[ 8920.025007] bdbm: llm_make_req: 1850000, 71 +[ 8920.324744] bdbm: llm_make_req: 1900000, 93 +[ 8920.580184] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 0, evict = 1941919 +[ 8920.623611] bdbm: llm_make_req: 1950000, 96 +[ 8920.923972] bdbm: llm_make_req: 2000000, 74 +[ 8921.184907] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 0, evict = 2041919 +[ 8921.229059] bdbm: llm_make_req: 2050000, 94 +[ 8921.529464] bdbm: llm_make_req: 2100000, 95 +[ 8921.786584] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 0, evict = 2141919 +[ 8921.829745] bdbm: llm_make_req: 2150000, 71 +[ 8923.030408] bdbm: llm_make_req: 2200000, 82 +[ 8923.210888] bdbm: nvm: total access = 2800000, total read = 20465, read hit = 1763, total_write = 2779534, write hit = 2779534, hit = 0, evict = 2219090 +[ 8923.272347] bdbm: llm_make_req: 2250000, 78 +[ 8923.512087] bdbm: llm_make_req: 2300000, 81 +[ 8923.621014] bdbm: nvm: total access = 2900000, total read = 60295, read hit = 8010, total_write = 2839704, write hit = 2839704, hit = 0, evict = 2269733 +[ 8923.766647] bdbm: llm_make_req: 2350000, 86 +[ 8924.006103] bdbm: nvm: total access = 3000000, total read = 100250, read hit = 18200, total_write = 2899749, write hit = 2899749, hit = 0, evict = 2315021 +[ 8924.020469] bdbm: llm_make_req: 2400000, 67 +[ 8924.286584] bdbm: llm_make_req: 2450000, 47 +[ 8924.365536] bdbm: nvm: total access = 3100000, total read = 140260, read hit = 31312, total_write = 2959739, write hit = 2959739, hit = 0, evict = 2354996 +[ 8924.564399] bdbm: llm_make_req: 2500000, 78 +[ 8924.705322] bdbm: nvm: total access = 3200000, total read = 180506, read hit = 47064, total_write = 3019493, write hit = 3019493, hit = 0, evict = 2391657 +[ 8924.850314] bdbm: llm_make_req: 2550000, 57 +[ 8925.041971] bdbm: nvm: total access = 3300000, total read = 220924, read hit = 64824, total_write = 3079075, write hit = 3079075, hit = 0, evict = 2425197 +[ 8925.158204] bdbm: llm_make_req: 2600000, 48 +[ 8925.361273] bdbm: nvm: total access = 3400000, total read = 261263, read hit = 84161, total_write = 3138736, write hit = 3138736, hit = 0, evict = 2456088 +[ 8925.469115] bdbm: llm_make_req: 2650000, 57 +[ 8925.677091] bdbm: nvm: total access = 3500000, total read = 301914, read hit = 104786, total_write = 3198085, write hit = 3198085, hit = 0, evict = 2484767 +[ 8925.797946] bdbm: llm_make_req: 2700000, 67 +[ 8925.982823] bdbm: nvm: total access = 3600000, total read = 342801, read hit = 127008, total_write = 3257198, write hit = 3257198, hit = 0, evict = 2512078 +[ 8926.134004] bdbm: llm_make_req: 2750000, 48 +[ 8926.285018] bdbm: nvm: total access = 3700000, total read = 382841, read hit = 149510, total_write = 3317158, write hit = 3317158, hit = 0, evict = 2538300 +[ 8926.482140] bdbm: llm_make_req: 2800000, 38 +[ 8926.580766] bdbm: nvm: total access = 3800000, total read = 422423, read hit = 172556, total_write = 3377576, write hit = 3377576, hit = 0, evict = 2563511 +[ 8926.851926] bdbm: llm_make_req: 2850000, 54 +[ 8926.874466] bdbm: nvm: total access = 3900000, total read = 462866, read hit = 196991, total_write = 3437133, write hit = 3437133, hit = 0, evict = 2587225 +[ 8927.161921] bdbm: nvm: total access = 4000000, total read = 503002, read hit = 221543, total_write = 3496997, write hit = 3496997, hit = 0, evict = 2610115 +[ 8927.222032] bdbm: llm_make_req: 2900000, 60 +[ 8927.449587] bdbm: nvm: total access = 4100000, total read = 542809, read hit = 246683, total_write = 3557190, write hit = 3557190, hit = 0, evict = 2632909 +[ 8927.612614] bdbm: llm_make_req: 2950000, 48 +[ 8927.726868] bdbm: nvm: total access = 4200000, total read = 583076, read hit = 272634, total_write = 3616923, write hit = 3616923, hit = 0, evict = 2654294 +[ 8928.006837] bdbm: llm_make_req: 3000000, 42 +[ 8928.006992] bdbm: nvm: total access = 4300000, total read = 623766, read hit = 298782, total_write = 3676233, write hit = 3676233, hit = 0, evict = 2675035 +[ 8928.282920] bdbm: nvm: total access = 4400000, total read = 663641, read hit = 325481, total_write = 3736358, write hit = 3736358, hit = 0, evict = 2695134 +[ 8928.420138] bdbm: llm_make_req: 3050000, 48 +[ 8928.553056] bdbm: nvm: total access = 4500000, total read = 703692, read hit = 351982, total_write = 3796307, write hit = 3796307, hit = 0, evict = 2714762 +[ 8928.829215] bdbm: llm_make_req: 3100000, 30 +[ 8928.836636] bdbm: nvm: total access = 4600000, total read = 743759, read hit = 377899, total_write = 3856240, write hit = 3856240, hit = 0, evict = 2735122 +[ 8929.125383] bdbm: nvm: total access = 4700000, total read = 783979, read hit = 403104, total_write = 3916020, write hit = 3916020, hit = 0, evict = 2756879 +[ 8929.212089] bdbm: llm_make_req: 3150000, 45 +[ 8929.421477] bdbm: nvm: total access = 4800000, total read = 823993, read hit = 427054, total_write = 3976006, write hit = 3976006, hit = 0, evict = 2781057 +[ 8929.577876] bdbm: llm_make_req: 3200000, 51 +[ 8929.720321] bdbm: nvm: total access = 4900000, total read = 865711, read hit = 451105, total_write = 4034288, write hit = 4034288, hit = 0, evict = 2805493 +[ 8929.928965] bdbm: llm_make_req: 3250000, 61 +[ 8930.026475] bdbm: nvm: total access = 5000000, total read = 905623, read hit = 473605, total_write = 4094376, write hit = 4094376, hit = 0, evict = 2831582 +[ 8930.282549] bdbm: llm_make_req: 3300000, 46 +[ 8930.338543] bdbm: nvm: total access = 5100000, total read = 945949, read hit = 495866, total_write = 4154050, write hit = 4154050, hit = 0, evict = 2858484 +[ 8930.623577] bdbm: llm_make_req: 3350000, 54 +[ 8930.648507] bdbm: nvm: total access = 5200000, total read = 986512, read hit = 518226, total_write = 4213487, write hit = 4213487, hit = 0, evict = 2885505 +[ 8930.968358] bdbm: llm_make_req: 3400000, 45 +[ 8930.970685] bdbm: nvm: total access = 5300000, total read = 1026662, read hit = 539785, total_write = 4273337, write hit = 4273337, hit = 0, evict = 2913496 +[ 8931.285464] bdbm: nvm: total access = 5400000, total read = 1066383, read hit = 560996, total_write = 4333616, write hit = 4333616, hit = 0, evict = 2941464 +[ 8931.306629] bdbm: llm_make_req: 3450000, 58 +[ 8931.597665] bdbm: nvm: total access = 5500000, total read = 1107329, read hit = 582985, total_write = 4392670, write hit = 4392670, hit = 0, evict = 2968653 +[ 8931.636929] bdbm: llm_make_req: 3500000, 53 +[ 8931.893049] bdbm: nvm: total access = 5600000, total read = 1146706, read hit = 604292, total_write = 4453293, write hit = 4453293, hit = 0, evict = 2996416 +[ 8931.974111] bdbm: llm_make_req: 3550000, 50 +[ 8932.239936] bdbm: nvm: total access = 5700000, total read = 1186001, read hit = 625797, total_write = 4513998, write hit = 4513998, hit = 0, evict = 3023940 +[ 8932.350115] bdbm: llm_make_req: 3600000, 61 +[ 8932.555214] bdbm: nvm: total access = 5800000, total read = 1225488, read hit = 647270, total_write = 4574511, write hit = 4574511, hit = 0, evict = 3051123 +[ 8932.708427] bdbm: llm_make_req: 3650000, 62 +[ 8932.875347] bdbm: nvm: total access = 5900000, total read = 1266011, read hit = 669911, total_write = 4633988, write hit = 4633988, hit = 0, evict = 3077367 +[ 8933.074431] bdbm: llm_make_req: 3700000, 50 +[ 8933.184906] bdbm: nvm: total access = 6000000, total read = 1306231, read hit = 692959, total_write = 4693768, write hit = 4693768, hit = 0, evict = 3102903 +[ 8933.420680] bdbm: llm_make_req: 3750000, 64 +[ 8933.474439] bdbm: nvm: total access = 6100000, total read = 1346399, read hit = 716086, total_write = 4753600, write hit = 4753600, hit = 0, evict = 3128170 +[ 8933.767550] bdbm: nvm: total access = 6200000, total read = 1386993, read hit = 739973, total_write = 4813006, write hit = 4813006, hit = 0, evict = 3152492 +[ 8933.770598] bdbm: llm_make_req: 3800000, 58 +[ 8934.061988] bdbm: nvm: total access = 6300000, total read = 1427101, read hit = 764012, total_write = 4872898, write hit = 4872898, hit = 0, evict = 3176502 +[ 8934.140444] bdbm: llm_make_req: 3850000, 56 +[ 8934.361091] bdbm: nvm: total access = 6400000, total read = 1467096, read hit = 788189, total_write = 4932903, write hit = 4932903, hit = 0, evict = 3199826 +[ 8934.514082] bdbm: llm_make_req: 3900000, 65 +[ 8934.681490] bdbm: nvm: total access = 6500000, total read = 1507105, read hit = 812435, total_write = 4992894, write hit = 4992894, hit = 0, evict = 3222749 +[ 8934.934562] bdbm: llm_make_req: 3950000, 52 +[ 8934.986038] bdbm: nvm: total access = 6600000, total read = 1547551, read hit = 837168, total_write = 5052448, write hit = 5052448, hit = 0, evict = 3245413 +[ 8935.278005] bdbm: nvm: total access = 6700000, total read = 1587368, read hit = 861853, total_write = 5112631, write hit = 5112631, hit = 0, evict = 3268148 +[ 8935.335229] bdbm: llm_make_req: 4000000, 39 +[ 8935.580008] bdbm: nvm: total access = 6800000, total read = 1627422, read hit = 886797, total_write = 5172577, write hit = 5172577, hit = 0, evict = 3290637 +[ 8935.744304] bdbm: llm_make_req: 4050000, 44 +[ 8935.897431] bdbm: nvm: total access = 6900000, total read = 1667094, read hit = 911120, total_write = 5232905, write hit = 5232905, hit = 0, evict = 3313546 +[ 8936.135918] bdbm: llm_make_req: 4100000, 56 +[ 8936.203518] bdbm: nvm: total access = 7000000, total read = 1707249, read hit = 935387, total_write = 5292750, write hit = 5292750, hit = 0, evict = 3337402 +[ 8936.496721] bdbm: nvm: total access = 7100000, total read = 1746824, read hit = 958900, total_write = 5353175, write hit = 5353175, hit = 0, evict = 3362010 +[ 8936.497301] bdbm: llm_make_req: 4150000, 38 +[ 8936.821970] bdbm: nvm: total access = 7200000, total read = 1786639, read hit = 982272, total_write = 5413360, write hit = 5413360, hit = 0, evict = 3386953 +[ 8936.888571] bdbm: llm_make_req: 4200000, 70 +[ 8937.117530] bdbm: nvm: total access = 7300000, total read = 1827027, read hit = 1005632, total_write = 5472972, write hit = 5472972, hit = 0, evict = 3411668 +[ 8937.237137] bdbm: llm_make_req: 4250000, 55 +[ 8937.431821] bdbm: nvm: total access = 7400000, total read = 1866859, read hit = 1028487, total_write = 5533140, write hit = 5533140, hit = 0, evict = 3437584 +[ 8937.597487] bdbm: llm_make_req: 4300000, 56 +[ 8937.736597] bdbm: nvm: total access = 7500000, total read = 1906563, read hit = 1051106, total_write = 5593436, write hit = 5593436, hit = 0, evict = 3463560 +[ 8937.961978] bdbm: llm_make_req: 4350000, 56 +[ 8938.050031] bdbm: nvm: total access = 7600000, total read = 1946431, read hit = 1073708, total_write = 5653568, write hit = 5653568, hit = 0, evict = 3490645 +[ 8938.299148] bdbm: llm_make_req: 4400000, 47 +[ 8938.358991] bdbm: nvm: total access = 7700000, total read = 1986308, read hit = 1095875, total_write = 5713691, write hit = 5713691, hit = 0, evict = 3517627 +[ 8938.662358] bdbm: llm_make_req: 4450000, 51 +[ 8938.682363] bdbm: nvm: total access = 7800000, total read = 2026234, read hit = 1118174, total_write = 5773765, write hit = 5773765, hit = 0, evict = 3544671 +[ 8938.991775] bdbm: nvm: total access = 7900000, total read = 2065921, read hit = 1140168, total_write = 5834078, write hit = 5834078, hit = 0, evict = 3571814 +[ 8939.007495] bdbm: llm_make_req: 4500000, 36 +[ 8939.319111] bdbm: nvm: total access = 8000000, total read = 2106548, read hit = 1162270, total_write = 5893451, write hit = 5893451, hit = 0, evict = 3598704 +[ 8939.380678] bdbm: llm_make_req: 4550000, 70 +[ 8939.633370] bdbm: nvm: total access = 8100000, total read = 2146666, read hit = 1184775, total_write = 5953333, write hit = 5953333, hit = 0, evict = 3625583 +[ 8939.719822] bdbm: llm_make_req: 4600000, 52 +[ 8939.973472] bdbm: nvm: total access = 8200000, total read = 2186848, read hit = 1207346, total_write = 6013151, write hit = 6013151, hit = 0, evict = 3651874 +[ 8940.103090] bdbm: llm_make_req: 4650000, 54 +[ 8940.299259] bdbm: nvm: total access = 8300000, total read = 2227457, read hit = 1230184, total_write = 6072542, write hit = 6072542, hit = 0, evict = 3677527 +[ 8940.473605] bdbm: llm_make_req: 4700000, 39 +[ 8940.612379] bdbm: nvm: total access = 8400000, total read = 2267140, read hit = 1252792, total_write = 6132859, write hit = 6132859, hit = 0, evict = 3703462 +[ 8940.867341] bdbm: llm_make_req: 4750000, 70 +[ 8940.947224] bdbm: nvm: total access = 8500000, total read = 2306958, read hit = 1275729, total_write = 6193041, write hit = 6193041, hit = 0, evict = 3728931 +[ 8941.227297] bdbm: llm_make_req: 4800000, 52 +[ 8941.240630] bdbm: nvm: total access = 8600000, total read = 2347249, read hit = 1299485, total_write = 6252750, write hit = 6252750, hit = 0, evict = 3753866 +[ 8941.539009] bdbm: nvm: total access = 8700000, total read = 2387641, read hit = 1323065, total_write = 6312358, write hit = 6312358, hit = 0, evict = 3778494 +[ 8941.595183] bdbm: llm_make_req: 4850000, 35 +[ 8941.848685] bdbm: nvm: total access = 8800000, total read = 2427724, read hit = 1347173, total_write = 6372275, write hit = 6372275, hit = 0, evict = 3802572 +[ 8941.992918] bdbm: llm_make_req: 4900000, 61 +[ 8942.155038] bdbm: nvm: total access = 8900000, total read = 2467615, read hit = 1371261, total_write = 6432384, write hit = 6432384, hit = 0, evict = 3826670 +[ 8942.353897] bdbm: llm_make_req: 4950000, 60 +[ 8942.455257] bdbm: nvm: total access = 9000000, total read = 2507343, read hit = 1395366, total_write = 6492656, write hit = 6492656, hit = 0, evict = 3850499 +[ 8942.743803] bdbm: llm_make_req: 5000000, 45 +[ 8942.758167] bdbm: nvm: total access = 9100000, total read = 2547416, read hit = 1419567, total_write = 6552583, write hit = 6552583, hit = 0, evict = 3874194 +[ 8943.070973] bdbm: nvm: total access = 9200000, total read = 2587817, read hit = 1444010, total_write = 6612182, write hit = 6612182, hit = 0, evict = 3897916 +[ 8943.129246] bdbm: llm_make_req: 5050000, 45 +[ 8943.390340] bdbm: nvm: total access = 9300000, total read = 2627520, read hit = 1467771, total_write = 6672479, write hit = 6672479, hit = 0, evict = 3922159 +[ 8943.526327] bdbm: llm_make_req: 5100000, 42 +[ 8943.692967] bdbm: nvm: total access = 9400000, total read = 2667680, read hit = 1492024, total_write = 6732319, write hit = 6732319, hit = 0, evict = 3946177 +[ 8943.901169] bdbm: llm_make_req: 5150000, 56 +[ 8943.997870] bdbm: nvm: total access = 9500000, total read = 2707473, read hit = 1515393, total_write = 6792526, write hit = 6792526, hit = 0, evict = 3970958 +[ 8944.247720] bdbm: llm_make_req: 5200000, 57 +[ 8944.283139] bdbm: nvm: total access = 9600000, total read = 2747221, read hit = 1538473, total_write = 6852778, write hit = 6852778, hit = 0, evict = 3995980 +[ 8944.601474] bdbm: nvm: total access = 9700000, total read = 2786769, read hit = 1561493, total_write = 6913230, write hit = 6913230, hit = 0, evict = 4021181 +[ 8944.633379] bdbm: llm_make_req: 5250000, 60 +[ 8944.914745] bdbm: nvm: total access = 9800000, total read = 2826124, read hit = 1584200, total_write = 6973875, write hit = 6973875, hit = 0, evict = 4046786 +[ 8944.991440] bdbm: llm_make_req: 5300000, 57 +[ 8945.609039] bdbm: nvm: total access = 9900000, total read = 2866408, read hit = 1607262, total_write = 7033591, write hit = 7033591, hit = 0, evict = 4071934 +[ 8946.105675] bdbm: llm_make_req: 5350000, 48 +[ 8946.628730] bdbm: nvm: total access = 10000000, total read = 2906622, read hit = 1630282, total_write = 7093377, write hit = 7093377, hit = 0, evict = 4097978 +[ 8947.133830] bdbm: llm_make_req: 5400000, 55 +[ 8947.252692] bdbm: nvm: total access = 10100000, total read = 2947445, read hit = 1653629, total_write = 7152554, write hit = 7152554, hit = 0, evict = 4123266 +[ 8947.863958] bdbm: llm_make_req: 5450000, 20 +[ 8948.286308] bdbm: nvm: total access = 10200000, total read = 2987236, read hit = 1676392, total_write = 7212763, write hit = 7212763, hit = 0, evict = 4149126 +[ 8948.939711] bdbm: llm_make_req: 5500000, 57 +[ 8948.967930] bdbm: nvm: total access = 10300000, total read = 3027556, read hit = 1699262, total_write = 7272443, write hit = 7272443, hit = 0, evict = 4174750 +[ 8951.506670] bdbm: llm_make_req: 5550000, 58 +[ 8952.525875] bdbm: nvm: total access = 10400000, total read = 3066556, read hit = 1721341, total_write = 7333443, write hit = 7333443, hit = 0, evict = 4201009 +[ 8952.809625] bdbm: llm_make_req: 5600000, 96 +[ 8954.459437] bdbm: nvm: total access = 10500000, total read = 3107160, read hit = 1744437, total_write = 7392839, write hit = 7392839, hit = 0, evict = 4226906 +[ 8954.460711] bdbm: llm_make_req: 5650000, 74 +[ 8956.442032] bdbm: llm_make_req: 5700000, 42 +[ 8956.540814] bdbm: nvm: total access = 10600000, total read = 3147611, read hit = 1767457, total_write = 7452388, write hit = 7452388, hit = 0, evict = 4252350 +[ 8958.034041] bdbm: llm_make_req: 5750000, 96 +[ 8959.499159] bdbm: nvm: total access = 10700000, total read = 3187367, read hit = 1790425, total_write = 7512632, write hit = 7512632, hit = 0, evict = 4278294 +[ 8959.603108] bdbm: llm_make_req: 5800000, 47 +[ 8961.721181] bdbm: nvm: total access = 10800000, total read = 3228374, read hit = 1813949, total_write = 7571625, write hit = 7571625, hit = 0, evict = 4303401 +[ 8961.721717] bdbm: llm_make_req: 5850000, 51 +[ 8963.564276] bdbm: llm_make_req: 5900000, 96 +[ 8964.017091] bdbm: nvm: total access = 10900000, total read = 3267991, read hit = 1836365, total_write = 7632008, write hit = 7632008, hit = 0, evict = 4328811 +[ 8965.272280] bdbm: llm_make_req: 5950000, 96 +[ 8967.053537] bdbm: nvm: total access = 11000000, total read = 3307059, read hit = 1859182, total_write = 7692940, write hit = 7692940, hit = 0, evict = 4354602 +[ 8967.142943] bdbm: llm_make_req: 6000000, 50 +[ 8969.283616] bdbm: llm_make_req: 6050000, 52 +[ 8969.295893] bdbm: nvm: total access = 11100000, total read = 3346728, read hit = 1882446, total_write = 7753271, write hit = 7753271, hit = 0, evict = 4379478 +[ 8971.119179] bdbm: llm_make_req: 6100000, 96 +[ 8971.615761] bdbm: nvm: total access = 11200000, total read = 3386971, read hit = 1906193, total_write = 7813028, write hit = 7813028, hit = 0, evict = 4404087 +[ 8972.752230] bdbm: llm_make_req: 6150000, 57 +[ 8974.842373] bdbm: nvm: total access = 11300000, total read = 3427392, read hit = 1930380, total_write = 7872607, write hit = 7872607, hit = 0, evict = 4428460 +[ 8974.880346] bdbm: llm_make_req: 6200000, 53 +[ 8976.855218] bdbm: llm_make_req: 6250000, 96 +[ 8977.276065] bdbm: nvm: total access = 11400000, total read = 3467055, read hit = 1954184, total_write = 7932944, write hit = 7932944, hit = 0, evict = 4452718 +[ 8978.626470] bdbm: llm_make_req: 6300000, 96 +[ 8979.800654] bdbm: nvm: total access = 11500000, total read = 3507168, read hit = 1978083, total_write = 7992831, write hit = 7992831, hit = 0, evict = 4477561 +[ 8980.936561] bdbm: llm_make_req: 6350000, 78 +[ 8982.899243] bdbm: llm_make_req: 6400000, 96 +[ 8983.318906] bdbm: nvm: total access = 11600000, total read = 3547377, read hit = 2001983, total_write = 8052622, write hit = 8052622, hit = 0, evict = 4501898 +[ 8984.771286] bdbm: llm_make_req: 6450000, 96 +[ 8985.741103] bdbm: nvm: total access = 11700000, total read = 3587178, read hit = 2025915, total_write = 8112821, write hit = 8112821, hit = 0, evict = 4526064 +[ 8986.961634] bdbm: llm_make_req: 6500000, 58 +[ 8988.939261] bdbm: llm_make_req: 6550000, 96 +[ 8989.376542] bdbm: nvm: total access = 11800000, total read = 3627177, read hit = 2049816, total_write = 8172822, write hit = 8172822, hit = 0, evict = 4550764 +[ 8991.091415] bdbm: llm_make_req: 6600000, 96 +[ 8993.265437] bdbm: nvm: total access = 11900000, total read = 3667191, read hit = 2073090, total_write = 8232808, write hit = 8232808, hit = 0, evict = 4575259 +[ 8993.283064] bdbm: llm_make_req: 6650000, 41 +[ 8995.388456] bdbm: llm_make_req: 6700000, 96 +[ 8997.031346] bdbm: nvm: total access = 12000000, total read = 3706912, read hit = 2096472, total_write = 8293087, write hit = 8293087, hit = 0, evict = 4599496 +[ 8997.483021] bdbm: llm_make_req: 6750000, 96 +[ 8999.727290] bdbm: llm_make_req: 6800000, 54 +[ 9001.158671] bdbm: nvm: total access = 12100000, total read = 3747045, read hit = 2119819, total_write = 8352954, write hit = 8352954, hit = 0, evict = 4624254 +[ 9002.155136] bdbm: llm_make_req: 6850000, 96 +[ 9004.268598] bdbm: llm_make_req: 6900000, 96 +[ 9005.309351] bdbm: nvm: total access = 12200000, total read = 3786606, read hit = 2142831, total_write = 8413393, write hit = 8413393, hit = 0, evict = 4649423 +[ 9006.729410] bdbm: llm_make_req: 6950000, 54 +[ 9009.175622] bdbm: llm_make_req: 7000000, 96 +[ 9009.608724] bdbm: nvm: total access = 12300000, total read = 3826845, read hit = 2166194, total_write = 8473154, write hit = 8473154, hit = 0, evict = 4674826 +[ 9011.179963] bdbm: llm_make_req: 7050000, 96 +[ 9013.909754] bdbm: llm_make_req: 7100000, 63 +[ 9015.372592] bdbm: nvm: total access = 12400000, total read = 3866338, read hit = 2189127, total_write = 8533661, write hit = 8533661, hit = 0, evict = 4700452 +[ 9016.461477] bdbm: llm_make_req: 7150000, 96 +[ 9018.446680] bdbm: llm_make_req: 7200000, 50 +[ 9020.005795] bdbm: nvm: total access = 12500000, total read = 3906856, read hit = 2212487, total_write = 8593143, write hit = 8593143, hit = 0, evict = 4725947 +[ 9021.075857] bdbm: llm_make_req: 7250000, 96 +[ 9023.612404] bdbm: llm_make_req: 7300000, 96 +[ 9025.941957] bdbm: llm_make_req: 7350000, 50 +[ 9025.959920] bdbm: nvm: total access = 12600000, total read = 3946847, read hit = 2235661, total_write = 8653152, write hit = 8653152, hit = 0, evict = 4751584 +[ 9028.557662] bdbm: llm_make_req: 7400000, 96 +[ 9030.798488] bdbm: llm_make_req: 7450000, 96 +[ 9032.020791] bdbm: nvm: total access = 12700000, total read = 3986521, read hit = 2258414, total_write = 8713478, write hit = 8713478, hit = 0, evict = 4777495 +[ 9033.501485] bdbm: llm_make_req: 7500000, 66 +[ 9036.088136] bdbm: llm_make_req: 7550000, 96 +[ 9038.063412] bdbm: nvm: total access = 12800000, total read = 4026506, read hit = 2281043, total_write = 8773493, write hit = 8773493, hit = 0, evict = 4803410 +[ 9038.068012] bdbm: llm_make_req: 7600000, 83 +[ 9040.749659] bdbm: llm_make_req: 7650000, 96 +[ 9043.418529] bdbm: llm_make_req: 7700000, 96 +[ 9044.270092] bdbm: nvm: total access = 12900000, total read = 4066660, read hit = 2304395, total_write = 8833339, write hit = 8833339, hit = 0, evict = 4828631 +[ 9045.761531] bdbm: llm_make_req: 7750000, 47 +[ 9048.421866] bdbm: llm_make_req: 7800000, 96 +[ 9050.702525] bdbm: llm_make_req: 7850000, 96 +[ 9051.874246] bdbm: nvm: total access = 13000000, total read = 4106626, read hit = 2327490, total_write = 8893373, write hit = 8893373, hit = 0, evict = 4854276 +[ 9053.389846] bdbm: llm_make_req: 7900000, 67 +[ 9055.959381] bdbm: llm_make_req: 7950000, 96 +[ 9057.929286] bdbm: nvm: total access = 13100000, total read = 4146696, read hit = 2350394, total_write = 8953303, write hit = 8953303, hit = 0, evict = 4879761 +[ 9057.976666] bdbm: llm_make_req: 8000000, 65 +[ 9060.577154] bdbm: llm_make_req: 8050000, 95 +[ 9063.186410] bdbm: llm_make_req: 8100000, 96 +[ 9064.038429] bdbm: nvm: total access = 13200000, total read = 4186388, read hit = 2373295, total_write = 9013611, write hit = 9013611, hit = 0, evict = 4905530 +[ 9065.614898] bdbm: llm_make_req: 8150000, 88 +[ 9068.265672] bdbm: llm_make_req: 8200000, 95 +[ 9070.202953] bdbm: nvm: total access = 13300000, total read = 4225707, read hit = 2395984, total_write = 9074292, write hit = 9074292, hit = 0, evict = 4931484 +[ 9070.522650] bdbm: llm_make_req: 8250000, 96 +[ 9073.267709] bdbm: llm_make_req: 8300000, 48 +[ 9075.926034] bdbm: llm_make_req: 8350000, 96 +[ 9076.356937] bdbm: nvm: total access = 13400000, total read = 4265720, read hit = 2419066, total_write = 9134279, write hit = 9134279, hit = 0, evict = 4956776 +[ 9077.906550] bdbm: llm_make_req: 8400000, 61 +[ 9080.468664] bdbm: llm_make_req: 8450000, 96 +[ 9082.391498] bdbm: nvm: total access = 13500000, total read = 4306530, read hit = 2442475, total_write = 9193469, write hit = 9193469, hit = 0, evict = 4981488 +[ 9082.990263] bdbm: llm_make_req: 8500000, 96 +[ 9085.429817] bdbm: llm_make_req: 8550000, 30 +[ 9133.351119] bdbm: ----------------------------------------------- +[ 9133.351121] bdbm: < PERFORMANCE SUMMARY > +[ 9133.351122] bdbm: [0] Execution Time (us): 239.321613 +[ 9133.351122] bdbm: +[ 9133.351123] bdbm: [1] Total I/Os +[ 9133.351123] bdbm: # of page reads: 2720045 +[ 9133.351124] bdbm: # of page writes: 844318 +[ 9133.351124] bdbm: # of block erase: 13952 +[ 9133.351125] bdbm: +[ 9133.351125] bdbm: [2] Normal I/Os +[ 9133.351126] bdbm: # of page reads: 1875830 +[ 9133.351126] bdbm: # of page writes: 0 +[ 9133.351127] bdbm: # of page rmw reads: 0 +[ 9133.351127] bdbm: # of page rmw writes: 0 +[ 9133.351128] bdbm: +[ 9133.351128] bdbm: [3] GC I/Os +[ 9133.351129] bdbm: # of GC invocation: 0 +[ 9133.351129] bdbm: # of page reads: 844215 +[ 9133.351130] bdbm: # of page writes: 844318 +[ 9133.351130] bdbm: # of block erase: 13952 +[ 9133.351130] bdbm: +[ 9133.351131] bdbm: [4] Meta I/Os +[ 9133.351131] bdbm: # of meta page reads: 0 +[ 9133.351132] bdbm: # of meta page writes: 0 +[ 9133.351132] bdbm: +[ 9133.351133] bdbm: [5] Elapsed Time +[ 9133.351133] bdbm: page read (us): 93 (S:0 + Q:0 + D:93) +[ 9133.351134] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[ 9133.351135] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 9133.351135] bdbm: +[ 9133.351135] bdbm: [6] Utilization (R) +[ 9133.351137] bdbm: 21298 21314 21159 20996 21181 21210 21398 21396 +[ 9133.351138] bdbm: 20921 21294 21102 21016 21247 21197 21409 21259 +[ 9133.351140] bdbm: 21267 21475 21249 21338 21395 21546 21465 21358 +[ 9133.351141] bdbm: 21214 21284 21301 21483 21178 21276 21055 21464 +[ 9133.351142] bdbm: 21295 21389 21300 21397 21086 21303 21130 20914 +[ 9133.351143] bdbm: 20950 21132 21114 21282 21141 21226 21332 21224 +[ 9133.351144] bdbm: 21451 21535 21450 21408 21481 21279 21458 21444 +[ 9133.351145] bdbm: 21396 21572 21376 21313 21238 21096 21183 21090 +[ 9133.351146] bdbm: 21074 20955 21255 21235 21118 21455 21192 21160 +[ 9133.351148] bdbm: 21175 21034 21099 21293 21092 21186 21220 21250 +[ 9133.351149] bdbm: 21202 21073 21199 21074 21239 21169 21155 21266 +[ 9133.351150] bdbm: 21086 20957 21120 21325 21459 21357 21363 21211 +[ 9133.351151] bdbm: 21223 21207 21068 21260 21066 21292 21043 21208 +[ 9133.351152] bdbm: 21243 21444 21114 21190 21291 21273 20979 21081 +[ 9133.351153] bdbm: 21195 21306 21224 21385 21016 21283 21285 21196 +[ 9133.351154] bdbm: 21545 21308 21093 21226 21566 21387 21495 21775 +[ 9133.351155] bdbm: +[ 9133.351155] bdbm: [7] Utilization (W) +[ 9133.351157] bdbm: 6598 6612 6623 6625 6626 6631 6631 6636 +[ 9133.351158] bdbm: 6636 6637 6638 6639 6637 6635 6634 6635 +[ 9133.351159] bdbm: 6635 6634 6634 6634 6634 6632 6631 6631 +[ 9133.351160] bdbm: 6628 6628 6627 6627 6627 6626 6626 6625 +[ 9133.351161] bdbm: 6625 6623 6623 6623 6621 6620 6619 6618 +[ 9133.351162] bdbm: 6618 6617 6616 6616 6615 6614 6614 6613 +[ 9133.351164] bdbm: 6611 6611 6607 6607 6606 6604 6604 6603 +[ 9133.351165] bdbm: 6602 6602 6602 6600 6599 6599 6599 6599 +[ 9133.351166] bdbm: 6597 6596 6595 6595 6595 6594 6593 6592 +[ 9133.351167] bdbm: 6592 6591 6590 6590 6589 6588 6588 6587 +[ 9133.351168] bdbm: 6587 6586 6584 6583 6582 6579 6579 6577 +[ 9133.351169] bdbm: 6577 6577 6577 6574 6574 6572 6571 6571 +[ 9133.351170] bdbm: 6569 6569 6568 6568 6568 6568 6568 6567 +[ 9133.351172] bdbm: 6566 6566 6565 6563 6563 6562 6561 6561 +[ 9133.351173] bdbm: 6560 6560 6560 6560 6556 6554 6553 6552 +[ 9133.351174] bdbm: 6551 6550 6550 6549 6548 6547 6546 6546 +[ 9133.351174] bdbm: [8] NVM I/Os +[ 9133.351175] bdbm: #_of_nvm_total_accesses: 13570606 +[ 9133.351175] bdbm: #_of_nvm_total_write_requests: 9236219 +[ 9133.351176] bdbm: #_of_nvm_total_read_requests: 4334387 +[ 9133.351176] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9236219 +[ 9133.351177] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 2458529 +[ 9133.351177] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[ 9133.351178] bdbm: #_of_nvm_evict_from_nvm: 4999484 +[ 9133.351178] bdbm: #_of_nvm_write_amplification: 4999484 : 5843802 +[ 9133.351179] bdbm: +[ 9133.351179] bdbm: ----------------------------------------------- +[ 9133.351180] bdbm: ----------------------------------------------- +[ 9133.535646] bdbm: done +[ 9133.535648] bdbm: [dm_ramdrive_close] closed! +[ 9133.923059] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 9133.923061] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 9133.939351] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 9133.955538] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 9133.959151] bdbm: ===================================================================== +[ 9133.959153] bdbm: DEVICE PARAMETERS +[ 9133.959153] bdbm: ===================================================================== +[ 9133.959154] bdbm: # of channels = 8 +[ 9133.959154] bdbm: # of chips per channel = 16 +[ 9133.959155] bdbm: # of blocks per chip = 256 +[ 9133.959155] bdbm: # of pages per block = 128 +[ 9133.959156] bdbm: # of subpages per page = 1 +[ 9133.959156] bdbm: page main size = 4096 bytes +[ 9133.959157] bdbm: page oob size = 64 bytes +[ 9133.959157] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 9133.959158] bdbm: +[ 9133.959159] bdbm: ===================================================================== +[ 9133.959159] bdbm: RAM DISK INFO +[ 9133.959159] bdbm: ===================================================================== +[ 9133.959160] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[ 9135.498225] bdbm: ramssd addr = ffffc90050001000 +[ 9135.498226] bdbm: +[ 9135.498227] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 9137.022616] bdbm: *** building ptr_ramssd_data done +[ 9137.022787] bdbm: [dm_ramdrive_probe] probe done! +[ 9137.022789] bdbm: [dm_ramdrive_open] open done! +[ 9137.146981] bdbm: nvm cache addr = ffffc90870003000 +[ 9137.155835] bdbm: ========================================================== +[ 9137.155836] bdbm: NVM CONFIGURATION +[ 9137.155837] bdbm: ========================================================== +[ 9137.155838] bdbm: total size = 1073741824, nr_nvm_pages = 262144, nvm_page_size = 4096 +[ 9137.342312] bdbm: TRIM is disabled +[ 9137.342474] bdbm: ===================================================================== +[ 9137.342475] bdbm: DEVICE PARAMETERS +[ 9137.342476] bdbm: ===================================================================== +[ 9137.342476] bdbm: # of channels = 8 +[ 9137.342477] bdbm: # of chips per channel = 16 +[ 9137.342478] bdbm: # of blocks per chip = 256 +[ 9137.342479] bdbm: # of pages per block = 128 +[ 9137.342479] bdbm: # of subpages per page = 1 +[ 9137.342480] bdbm: page main size = 4096 bytes +[ 9137.342480] bdbm: page oob size = 64 bytes +[ 9137.342481] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 9137.342481] bdbm: +[ 9137.342482] bdbm: ===================================================================== +[ 9137.342482] bdbm: FTL CONFIGURATION +[ 9137.342483] bdbm: ===================================================================== +[ 9137.342485] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 9137.342485] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 9137.342486] bdbm: wl policy = 1 (1: none, 2: swap) +[ 9137.342486] bdbm: trim mode = 2 (1: enable, 2: disable) +[ 9137.342487] bdbm: kernel sector = 512 bytes +[ 9137.342487] bdbm: +[ 9137.342488] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 9137.362154] bdbm: llm_make_req: 0, 1 +[ 9137.519391] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[ 9137.519393] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 9140.000073] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 diff --git a/result/fio_toff_o1_n2g.rslt b/result/fio_toff_o1_n2g.rslt new file mode 100644 index 0000000..252dc8f --- /dev/null +++ b/result/fio_toff_o1_n2g.rslt @@ -0,0 +1,44 @@ +JESD219: (g=0): rw=randrw, bs=512-64K/512-64K/512-64K, ioengine=libaio, iodepth=256 +... +fio-2.14-20-gd6192-dirty +Starting 4 processes +JESD219: Laying out IO file(s) (1 file(s) / 10240MB) + +JESD219: (groupid=0, jobs=4): err= 0: pid=19225: Mon Nov 7 17:20:14 2016 + read : io=16405MB, bw=102445KB/s, iops=13417, runt=163977msec + slat (usec): min=1, max=1765.9K, avg=58.96, stdev=7769.25 + clat (usec): min=77, max=1773.4K, avg=22074.79, stdev=151235.08 + lat (usec): min=80, max=1773.4K, avg=22133.81, stdev=151432.14 + clat percentiles (usec): + | 1.00th=[ 1224], 5.00th=[ 1320], 10.00th=[ 1416], 20.00th=[ 1576], + | 30.00th=[ 1896], 40.00th=[ 2416], 50.00th=[ 2576], 60.00th=[ 2736], + | 70.00th=[ 2896], 80.00th=[ 3184], 90.00th=[10688], 95.00th=[15936], + | 99.00th=[1105920], 99.50th=[1433600], 99.90th=[1482752], 99.95th=[1499136], + | 99.99th=[1777664] + write: io=24555MB, bw=153341KB/s, iops=20107, runt=163977msec + slat (usec): min=1, max=1767.1K, avg=98.96, stdev=10245.56 + clat (usec): min=74, max=1773.2K, avg=20955.78, stdev=147309.54 + lat (usec): min=77, max=1773.2K, avg=21054.82, stdev=147660.57 + clat percentiles (usec): + | 1.00th=[ 1192], 5.00th=[ 1288], 10.00th=[ 1352], 20.00th=[ 1480], + | 30.00th=[ 1720], 40.00th=[ 2352], 50.00th=[ 2512], 60.00th=[ 2640], + | 70.00th=[ 2800], 80.00th=[ 2992], 90.00th=[10432], 95.00th=[15040], + | 99.00th=[1073152], 99.50th=[1417216], 99.90th=[1482752], 99.95th=[1499136], + | 99.99th=[1777664] + lat (usec) : 100=0.01%, 250=0.01%, 500=0.01%, 750=0.01%, 1000=0.01% + lat (msec) : 2=32.93%, 4=50.53%, 10=5.37%, 20=8.00%, 50=1.67% + lat (msec) : 100=0.01%, 250=0.01%, 500=0.10%, 750=0.01%, 1000=0.24% + lat (msec) : 2000=1.12% + cpu : usr=0.82%, sys=31.80%, ctx=45575, majf=0, minf=41 + IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% + submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% + complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1% + issued : total=r=2200121/w=3297158/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 + latency : target=0, window=0, percentile=100.00%, depth=256 + +Run status group 0 (all jobs): + READ: io=16405MB, aggrb=102445KB/s, minb=102445KB/s, maxb=102445KB/s, mint=163977msec, maxt=163977msec + WRITE: io=24555MB, aggrb=153341KB/s, minb=153341KB/s, maxb=153341KB/s, mint=163977msec, maxt=163977msec + +Disk stats (read/write): + robusta: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00% diff --git a/result/fio_toff_o1_n500m.dmesg b/result/fio_toff_o1_n500m.dmesg new file mode 100644 index 0000000..45cc854 --- /dev/null +++ b/result/fio_toff_o1_n500m.dmesg @@ -0,0 +1,1185 @@ +[ 9614.997404] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 0, evict = 0 +[ 9615.177434] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 0, evict = 4063 +[ 9615.445004] bdbm: llm_make_req: 50000, 95 +[ 9615.734915] bdbm: llm_make_req: 100000, 57 +[ 9615.755812] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 0, evict = 104063 +[ 9616.023919] bdbm: llm_make_req: 150000, 89 +[ 9616.309738] bdbm: llm_make_req: 200000, 93 +[ 9616.330505] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 0, evict = 204063 +[ 9616.608325] bdbm: llm_make_req: 250000, 94 +[ 9616.890596] bdbm: llm_make_req: 300000, 90 +[ 9616.911245] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 0, evict = 304063 +[ 9617.175540] bdbm: llm_make_req: 350000, 93 +[ 9617.459075] bdbm: llm_make_req: 400000, 93 +[ 9617.479739] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 0, evict = 404063 +[ 9617.742013] bdbm: llm_make_req: 450000, 92 +[ 9618.026989] bdbm: llm_make_req: 500000, 95 +[ 9618.055353] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 0, evict = 504063 +[ 9618.311058] bdbm: llm_make_req: 550000, 94 +[ 9618.593060] bdbm: llm_make_req: 600000, 89 +[ 9618.620774] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 0, evict = 604063 +[ 9618.880849] bdbm: llm_make_req: 650000, 60 +[ 9619.163406] bdbm: llm_make_req: 700000, 92 +[ 9619.191582] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 0, evict = 704063 +[ 9619.456303] bdbm: llm_make_req: 750000, 93 +[ 9619.741049] bdbm: llm_make_req: 800000, 96 +[ 9619.761686] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 0, evict = 804063 +[ 9620.025739] bdbm: llm_make_req: 850000, 76 +[ 9620.308463] bdbm: llm_make_req: 900000, 93 +[ 9620.329149] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 0, evict = 904063 +[ 9620.590535] bdbm: llm_make_req: 950000, 94 +[ 9620.874347] bdbm: llm_make_req: 1000000, 94 +[ 9620.894996] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 0, evict = 1004063 +[ 9621.157296] bdbm: llm_make_req: 1050000, 88 +[ 9621.440743] bdbm: llm_make_req: 1100000, 91 +[ 9621.461384] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 0, evict = 1104063 +[ 9621.721965] bdbm: llm_make_req: 1150000, 94 +[ 9622.004405] bdbm: llm_make_req: 1200000, 94 +[ 9622.025078] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 0, evict = 1204063 +[ 9622.286271] bdbm: llm_make_req: 1250000, 94 +[ 9622.570590] bdbm: llm_make_req: 1300000, 94 +[ 9622.598551] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 0, evict = 1304063 +[ 9622.860112] bdbm: llm_make_req: 1350000, 88 +[ 9623.150025] bdbm: llm_make_req: 1400000, 94 +[ 9623.178929] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 0, evict = 1404063 +[ 9623.439936] bdbm: llm_make_req: 1450000, 95 +[ 9623.735028] bdbm: llm_make_req: 1500000, 53 +[ 9623.756276] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 0, evict = 1504063 +[ 9624.023434] bdbm: llm_make_req: 1550000, 94 +[ 9624.310782] bdbm: llm_make_req: 1600000, 96 +[ 9624.331982] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 0, evict = 1604063 +[ 9624.598830] bdbm: llm_make_req: 1650000, 72 +[ 9624.886338] bdbm: llm_make_req: 1700000, 87 +[ 9624.907604] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 0, evict = 1704063 +[ 9625.174986] bdbm: llm_make_req: 1750000, 91 +[ 9625.461882] bdbm: llm_make_req: 1800000, 95 +[ 9625.482393] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 0, evict = 1804063 +[ 9625.744049] bdbm: llm_make_req: 1850000, 95 +[ 9626.024833] bdbm: llm_make_req: 1900000, 95 +[ 9626.045413] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 0, evict = 1904063 +[ 9626.306032] bdbm: llm_make_req: 1950000, 95 +[ 9626.587191] bdbm: llm_make_req: 2000000, 94 +[ 9626.614961] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 0, evict = 2004063 +[ 9626.867847] bdbm: llm_make_req: 2050000, 96 +[ 9627.147970] bdbm: llm_make_req: 2100000, 95 +[ 9627.175831] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 0, evict = 2104063 +[ 9627.428662] bdbm: llm_make_req: 2150000, 95 +[ 9627.715828] bdbm: llm_make_req: 2200000, 95 +[ 9627.736381] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 0, evict = 2204063 +[ 9627.996412] bdbm: llm_make_req: 2250000, 96 +[ 9628.282845] bdbm: llm_make_req: 2300000, 88 +[ 9628.303901] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 0, evict = 2304063 +[ 9628.566126] bdbm: llm_make_req: 2350000, 93 +[ 9628.848463] bdbm: llm_make_req: 2400000, 94 +[ 9628.869696] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 0, evict = 2404063 +[ 9629.131324] bdbm: llm_make_req: 2450000, 68 +[ 9630.305628] bdbm: llm_make_req: 2500000, 76 +[ 9630.310736] bdbm: nvm: total access = 2800000, total read = 20499, read hit = 1186, total_write = 2779500, write hit = 2779500, hit = 0, evict = 2481920 +[ 9630.577344] bdbm: llm_make_req: 2550000, 69 +[ 9630.783231] bdbm: nvm: total access = 2900000, total read = 60205, read hit = 6665, total_write = 2839794, write hit = 2839794, hit = 0, evict = 2533809 +[ 9630.853322] bdbm: llm_make_req: 2600000, 85 +[ 9631.153914] bdbm: llm_make_req: 2650000, 76 +[ 9631.238202] bdbm: nvm: total access = 3000000, total read = 100081, read hit = 15648, total_write = 2899918, write hit = 2899918, hit = 0, evict = 2580164 +[ 9631.463236] bdbm: llm_make_req: 2700000, 96 +[ 9631.653841] bdbm: nvm: total access = 3100000, total read = 140737, read hit = 27970, total_write = 2959262, write hit = 2959262, hit = 0, evict = 2621779 +[ 9631.746515] bdbm: llm_make_req: 2750000, 60 +[ 9632.025035] bdbm: nvm: total access = 3200000, total read = 180600, read hit = 42509, total_write = 3019399, write hit = 3019399, hit = 0, evict = 2659975 +[ 9632.035622] bdbm: llm_make_req: 2800000, 64 +[ 9632.350481] bdbm: llm_make_req: 2850000, 70 +[ 9632.396050] bdbm: nvm: total access = 3300000, total read = 220486, read hit = 58777, total_write = 3079513, write hit = 3079513, hit = 0, evict = 2695538 +[ 9632.668827] bdbm: llm_make_req: 2900000, 55 +[ 9632.754845] bdbm: nvm: total access = 3400000, total read = 260149, read hit = 76409, total_write = 3139850, write hit = 3139850, hit = 0, evict = 2728849 +[ 9633.001179] bdbm: llm_make_req: 2950000, 64 +[ 9633.135475] bdbm: nvm: total access = 3500000, total read = 300477, read hit = 93626, total_write = 3199522, write hit = 3199522, hit = 0, evict = 2762984 +[ 9633.338623] bdbm: llm_make_req: 3000000, 68 +[ 9633.528939] bdbm: nvm: total access = 3600000, total read = 340781, read hit = 110112, total_write = 3259218, write hit = 3259218, hit = 0, evict = 2798157 +[ 9633.665700] bdbm: llm_make_req: 3050000, 75 +[ 9633.930969] bdbm: nvm: total access = 3700000, total read = 381245, read hit = 126085, total_write = 3318754, write hit = 3318754, hit = 0, evict = 2834504 +[ 9633.994847] bdbm: llm_make_req: 3100000, 84 +[ 9634.302855] bdbm: llm_make_req: 3150000, 96 +[ 9634.313310] bdbm: nvm: total access = 3800000, total read = 420691, read hit = 140934, total_write = 3379308, write hit = 3379308, hit = 0, evict = 2871869 +[ 9634.609731] bdbm: llm_make_req: 3200000, 62 +[ 9634.687927] bdbm: nvm: total access = 3900000, total read = 461050, read hit = 156283, total_write = 3438949, write hit = 3438949, hit = 0, evict = 2908914 +[ 9634.908670] bdbm: llm_make_req: 3250000, 61 +[ 9635.063022] bdbm: nvm: total access = 4000000, total read = 501226, read hit = 171898, total_write = 3498773, write hit = 3498773, hit = 0, evict = 2945744 +[ 9635.213618] bdbm: llm_make_req: 3300000, 64 +[ 9635.421598] bdbm: nvm: total access = 4100000, total read = 540994, read hit = 187548, total_write = 3559005, write hit = 3559005, hit = 0, evict = 2982256 +[ 9635.518390] bdbm: llm_make_req: 3350000, 75 +[ 9635.800156] bdbm: nvm: total access = 4200000, total read = 580981, read hit = 203162, total_write = 3619018, write hit = 3619018, hit = 0, evict = 3018078 +[ 9635.824513] bdbm: llm_make_req: 3400000, 45 +[ 9636.148301] bdbm: llm_make_req: 3450000, 51 +[ 9636.176654] bdbm: nvm: total access = 4300000, total read = 621162, read hit = 219341, total_write = 3678837, write hit = 3678837, hit = 0, evict = 3053802 +[ 9636.445563] bdbm: llm_make_req: 3500000, 47 +[ 9636.547376] bdbm: nvm: total access = 4400000, total read = 661189, read hit = 235446, total_write = 3738810, write hit = 3738810, hit = 0, evict = 3089552 +[ 9636.770581] bdbm: llm_make_req: 3550000, 72 +[ 9636.920983] bdbm: nvm: total access = 4500000, total read = 701312, read hit = 251442, total_write = 3798687, write hit = 3798687, hit = 0, evict = 3125405 +[ 9637.087054] bdbm: llm_make_req: 3600000, 66 +[ 9637.337674] bdbm: nvm: total access = 4600000, total read = 741148, read hit = 267559, total_write = 3858851, write hit = 3858851, hit = 0, evict = 3161874 +[ 9637.428900] bdbm: llm_make_req: 3650000, 95 +[ 9637.717556] bdbm: nvm: total access = 4700000, total read = 781584, read hit = 283547, total_write = 3918415, write hit = 3918415, hit = 0, evict = 3198368 +[ 9637.737367] bdbm: llm_make_req: 3700000, 94 +[ 9638.074739] bdbm: llm_make_req: 3750000, 69 +[ 9638.119178] bdbm: nvm: total access = 4800000, total read = 820672, read hit = 299168, total_write = 3979327, write hit = 3979327, hit = 0, evict = 3234775 +[ 9638.399938] bdbm: llm_make_req: 3800000, 70 +[ 9638.514097] bdbm: nvm: total access = 4900000, total read = 860785, read hit = 314712, total_write = 4039214, write hit = 4039214, hit = 0, evict = 3271257 +[ 9638.706318] bdbm: llm_make_req: 3850000, 75 +[ 9638.899642] bdbm: nvm: total access = 5000000, total read = 901636, read hit = 330767, total_write = 4098363, write hit = 4098363, hit = 0, evict = 3307019 +[ 9639.035915] bdbm: llm_make_req: 3900000, 67 +[ 9639.283149] bdbm: nvm: total access = 5100000, total read = 941797, read hit = 346166, total_write = 4158202, write hit = 4158202, hit = 0, evict = 3343518 +[ 9639.341916] bdbm: llm_make_req: 3950000, 78 +[ 9639.654194] bdbm: llm_make_req: 4000000, 86 +[ 9639.655312] bdbm: nvm: total access = 5200000, total read = 981544, read hit = 361668, total_write = 4218455, write hit = 4218455, hit = 0, evict = 3380380 +[ 9639.954635] bdbm: llm_make_req: 4050000, 54 +[ 9640.029134] bdbm: nvm: total access = 5300000, total read = 1021570, read hit = 377451, total_write = 4278429, write hit = 4278429, hit = 0, evict = 3416584 +[ 9640.256403] bdbm: llm_make_req: 4100000, 53 +[ 9640.390755] bdbm: nvm: total access = 5400000, total read = 1061418, read hit = 393126, total_write = 4338581, write hit = 4338581, hit = 0, evict = 3452963 +[ 9640.579652] bdbm: llm_make_req: 4150000, 80 +[ 9640.787613] bdbm: nvm: total access = 5500000, total read = 1101269, read hit = 409056, total_write = 4398730, write hit = 4398730, hit = 0, evict = 3489652 +[ 9640.893842] bdbm: llm_make_req: 4200000, 66 +[ 9641.144982] bdbm: nvm: total access = 5600000, total read = 1141265, read hit = 424608, total_write = 4458734, write hit = 4458734, hit = 0, evict = 3526475 +[ 9641.196302] bdbm: llm_make_req: 4250000, 67 +[ 9641.499570] bdbm: llm_make_req: 4300000, 74 +[ 9641.527238] bdbm: nvm: total access = 5700000, total read = 1180874, read hit = 440352, total_write = 4519125, write hit = 4519125, hit = 0, evict = 3563170 +[ 9641.821281] bdbm: llm_make_req: 4350000, 62 +[ 9641.929557] bdbm: nvm: total access = 5800000, total read = 1220855, read hit = 456077, total_write = 4579144, write hit = 4579144, hit = 0, evict = 3599768 +[ 9642.140573] bdbm: llm_make_req: 4400000, 55 +[ 9642.295034] bdbm: nvm: total access = 5900000, total read = 1260302, read hit = 471932, total_write = 4639697, write hit = 4639697, hit = 0, evict = 3637041 +[ 9642.466963] bdbm: llm_make_req: 4450000, 81 +[ 9642.682707] bdbm: nvm: total access = 6000000, total read = 1300392, read hit = 487778, total_write = 4699607, write hit = 4699607, hit = 0, evict = 3673598 +[ 9642.763258] bdbm: llm_make_req: 4500000, 84 +[ 9643.061399] bdbm: nvm: total access = 6100000, total read = 1340455, read hit = 503702, total_write = 4759544, write hit = 4759544, hit = 0, evict = 3710038 +[ 9643.085870] bdbm: llm_make_req: 4550000, 90 +[ 9643.390913] bdbm: llm_make_req: 4600000, 62 +[ 9643.437363] bdbm: nvm: total access = 6200000, total read = 1380654, read hit = 519181, total_write = 4819345, write hit = 4819345, hit = 0, evict = 3746767 +[ 9643.705282] bdbm: llm_make_req: 4650000, 74 +[ 9643.829719] bdbm: nvm: total access = 6300000, total read = 1420532, read hit = 534563, total_write = 4879467, write hit = 4879467, hit = 0, evict = 3783433 +[ 9644.021472] bdbm: llm_make_req: 4700000, 58 +[ 9644.211955] bdbm: nvm: total access = 6400000, total read = 1460008, read hit = 550251, total_write = 4939991, write hit = 4939991, hit = 0, evict = 3820161 +[ 9644.342581] bdbm: llm_make_req: 4750000, 67 +[ 9644.598403] bdbm: nvm: total access = 6500000, total read = 1499963, read hit = 565927, total_write = 5000036, write hit = 5000036, hit = 0, evict = 3856567 +[ 9644.672169] bdbm: llm_make_req: 4800000, 62 +[ 9644.993504] bdbm: llm_make_req: 4850000, 68 +[ 9645.002451] bdbm: nvm: total access = 6600000, total read = 1539982, read hit = 581636, total_write = 5060017, write hit = 5060017, hit = 0, evict = 3893305 +[ 9645.310605] bdbm: llm_make_req: 4900000, 65 +[ 9645.375477] bdbm: nvm: total access = 6700000, total read = 1580113, read hit = 597410, total_write = 5119886, write hit = 5119886, hit = 0, evict = 3929512 +[ 9645.603905] bdbm: llm_make_req: 4950000, 53 +[ 9645.740079] bdbm: nvm: total access = 6800000, total read = 1619729, read hit = 613214, total_write = 5180270, write hit = 5180270, hit = 0, evict = 3966050 +[ 9645.921128] bdbm: llm_make_req: 5000000, 67 +[ 9646.123011] bdbm: nvm: total access = 6900000, total read = 1660371, read hit = 629279, total_write = 5239628, write hit = 5239628, hit = 0, evict = 4002129 +[ 9646.217016] bdbm: llm_make_req: 5050000, 65 +[ 9646.509700] bdbm: nvm: total access = 7000000, total read = 1700305, read hit = 645022, total_write = 5299694, write hit = 5299694, hit = 0, evict = 4038606 +[ 9646.543391] bdbm: llm_make_req: 5100000, 77 +[ 9647.220624] bdbm: llm_make_req: 5150000, 59 +[ 9647.247591] bdbm: nvm: total access = 7100000, total read = 1740073, read hit = 660297, total_write = 5359926, write hit = 5359926, hit = 0, evict = 4075046 +[ 9648.269475] bdbm: llm_make_req: 5200000, 64 +[ 9648.368908] bdbm: nvm: total access = 7200000, total read = 1780334, read hit = 675983, total_write = 5419665, write hit = 5419665, hit = 0, evict = 4111420 +[ 9649.295427] bdbm: llm_make_req: 5250000, 52 +[ 9649.822119] bdbm: nvm: total access = 7300000, total read = 1821038, read hit = 692246, total_write = 5478961, write hit = 5478961, hit = 0, evict = 4147215 +[ 9649.962409] bdbm: llm_make_req: 5300000, 65 +[ 9652.016081] bdbm: llm_make_req: 5350000, 96 +[ 9653.481688] bdbm: nvm: total access = 7400000, total read = 1861378, read hit = 708343, total_write = 5538621, write hit = 5538621, hit = 0, evict = 4183300 +[ 9654.256240] bdbm: llm_make_req: 5400000, 95 +[ 9655.998479] bdbm: llm_make_req: 5450000, 96 +[ 9657.015809] bdbm: nvm: total access = 7500000, total read = 1901317, read hit = 724152, total_write = 5598682, write hit = 5598682, hit = 0, evict = 4219635 +[ 9658.067202] bdbm: llm_make_req: 5500000, 67 +[ 9660.199751] bdbm: llm_make_req: 5550000, 76 +[ 9661.385002] bdbm: nvm: total access = 7600000, total read = 1941153, read hit = 739745, total_write = 5658846, write hit = 5658846, hit = 0, evict = 4256444 +[ 9661.885473] bdbm: llm_make_req: 5600000, 96 +[ 9663.759980] bdbm: llm_make_req: 5650000, 71 +[ 9666.067087] bdbm: llm_make_req: 5700000, 55 +[ 9666.075576] bdbm: nvm: total access = 7700000, total read = 1980993, read hit = 755674, total_write = 5719006, write hit = 5719006, hit = 0, evict = 4292891 +[ 9667.954624] bdbm: llm_make_req: 5750000, 96 +[ 9669.829184] bdbm: llm_make_req: 5800000, 73 +[ 9671.029522] bdbm: nvm: total access = 7800000, total read = 2021418, read hit = 771707, total_write = 5778581, write hit = 5778581, hit = 0, evict = 4328740 +[ 9672.161541] bdbm: llm_make_req: 5850000, 66 +[ 9674.179045] bdbm: llm_make_req: 5900000, 96 +[ 9674.666451] bdbm: nvm: total access = 7900000, total read = 2061123, read hit = 787352, total_write = 5838876, write hit = 5838876, hit = 0, evict = 4365548 +[ 9675.841188] bdbm: llm_make_req: 5950000, 69 +[ 9678.287739] bdbm: llm_make_req: 6000000, 89 +[ 9680.453333] bdbm: llm_make_req: 6050000, 95 +[ 9680.837729] bdbm: nvm: total access = 8000000, total read = 2100659, read hit = 802775, total_write = 5899340, write hit = 5899340, hit = 0, evict = 4402210 +[ 9682.269045] bdbm: llm_make_req: 6100000, 57 +[ 9684.875289] bdbm: llm_make_req: 6150000, 66 +[ 9686.329424] bdbm: nvm: total access = 8100000, total read = 2140303, read hit = 818282, total_write = 5959696, write hit = 5959696, hit = 0, evict = 4438767 +[ 9687.105046] bdbm: llm_make_req: 6200000, 96 +[ 9689.003426] bdbm: llm_make_req: 6250000, 77 +[ 9691.292617] bdbm: llm_make_req: 6300000, 96 +[ 9693.053631] bdbm: nvm: total access = 8200000, total read = 2180675, read hit = 833827, total_write = 6019324, write hit = 6019324, hit = 0, evict = 4475000 +[ 9693.658524] bdbm: llm_make_req: 6350000, 96 +[ 9695.912445] bdbm: llm_make_req: 6400000, 78 +[ 9698.381731] bdbm: llm_make_req: 6450000, 96 +[ 9700.168906] bdbm: nvm: total access = 8300000, total read = 2220477, read hit = 849100, total_write = 6079522, write hit = 6079522, hit = 0, evict = 4511366 +[ 9700.493140] bdbm: llm_make_req: 6500000, 96 +[ 9702.898219] bdbm: llm_make_req: 6550000, 67 +[ 9705.280488] bdbm: llm_make_req: 6600000, 95 +[ 9705.721313] bdbm: nvm: total access = 8400000, total read = 2260215, read hit = 864518, total_write = 6139784, write hit = 6139784, hit = 0, evict = 4547862 +[ 9707.258635] bdbm: llm_make_req: 6650000, 96 +[ 9709.828268] bdbm: llm_make_req: 6700000, 96 +[ 9712.611009] bdbm: llm_make_req: 6750000, 96 +[ 9714.707730] bdbm: nvm: total access = 8500000, total read = 2300048, read hit = 880159, total_write = 6199951, write hit = 6199951, hit = 0, evict = 4584449 +[ 9714.717605] bdbm: llm_make_req: 6800000, 75 +[ 9717.417780] bdbm: llm_make_req: 6850000, 96 +[ 9719.748798] bdbm: llm_make_req: 6900000, 96 +[ 9722.332078] bdbm: llm_make_req: 6950000, 63 +[ 9723.918349] bdbm: nvm: total access = 8600000, total read = 2340759, read hit = 896163, total_write = 6259240, write hit = 6259240, hit = 0, evict = 4620559 +[ 9725.049102] bdbm: llm_make_req: 7000000, 96 +[ 9727.092333] bdbm: llm_make_req: 7050000, 50 +[ 9729.771941] bdbm: llm_make_req: 7100000, 96 +[ 9732.427671] bdbm: llm_make_req: 7150000, 96 +[ 9733.368290] bdbm: nvm: total access = 8700000, total read = 2380784, read hit = 911769, total_write = 6319215, write hit = 6319215, hit = 0, evict = 4656870 +[ 9734.971077] bdbm: llm_make_req: 7200000, 83 +[ 9737.805885] bdbm: llm_make_req: 7250000, 95 +[ 9739.958244] bdbm: llm_make_req: 7300000, 96 +[ 9742.663827] bdbm: llm_make_req: 7350000, 96 +[ 9744.775752] bdbm: nvm: total access = 8800000, total read = 2421016, read hit = 927607, total_write = 6378983, write hit = 6378983, hit = 0, evict = 4693190 +[ 9745.565391] bdbm: llm_make_req: 7400000, 96 +[ 9747.998277] bdbm: llm_make_req: 7450000, 61 +[ 9750.815549] bdbm: llm_make_req: 7500000, 96 +[ 9753.057177] bdbm: llm_make_req: 7550000, 96 +[ 9755.850172] bdbm: llm_make_req: 7600000, 96 +[ 9756.238059] bdbm: nvm: total access = 8900000, total read = 2461088, read hit = 943593, total_write = 6438911, write hit = 6438911, hit = 0, evict = 4729211 +[ 9758.675962] bdbm: llm_make_req: 7650000, 96 +[ 9761.164575] bdbm: llm_make_req: 7700000, 67 +[ 9764.105645] bdbm: llm_make_req: 7750000, 96 +[ 9766.384892] bdbm: llm_make_req: 7800000, 96 +[ 9769.145841] bdbm: llm_make_req: 7850000, 96 +[ 9769.523237] bdbm: nvm: total access = 9000000, total read = 2500653, read hit = 959317, total_write = 6499346, write hit = 6499346, hit = 0, evict = 4765745 +[ 9771.971146] bdbm: llm_make_req: 7900000, 96 +[ 9774.530035] bdbm: llm_make_req: 7950000, 70 +[ 9777.494115] bdbm: llm_make_req: 8000000, 96 +[ 9779.656556] bdbm: llm_make_req: 8050000, 96 +[ 9782.511348] bdbm: llm_make_req: 8100000, 96 +[ 9782.879026] bdbm: nvm: total access = 9100000, total read = 2540795, read hit = 975460, total_write = 6559204, write hit = 6559204, hit = 0, evict = 4801994 +[ 9785.235002] bdbm: llm_make_req: 8150000, 96 +[ 9787.893199] bdbm: llm_make_req: 8200000, 62 +[ 9790.830493] bdbm: llm_make_req: 8250000, 96 +[ 9792.982688] bdbm: llm_make_req: 8300000, 57 +[ 9794.642252] bdbm: nvm: total access = 9200000, total read = 2580814, read hit = 991340, total_write = 6619185, write hit = 6619185, hit = 0, evict = 4838181 +[ 9795.892187] bdbm: llm_make_req: 8350000, 96 +[ 9798.570514] bdbm: llm_make_req: 8400000, 96 +[ 9801.233131] bdbm: llm_make_req: 8450000, 68 +[ 9804.200505] bdbm: llm_make_req: 8500000, 96 +[ 9806.286671] bdbm: llm_make_req: 8550000, 72 +[ 9807.974602] bdbm: nvm: total access = 9300000, total read = 2620538, read hit = 1007017, total_write = 6679461, write hit = 6679461, hit = 0, evict = 4874447 +[ 9809.243095] bdbm: llm_make_req: 8600000, 96 +[ 9811.886082] bdbm: llm_make_req: 8650000, 96 +[ 9814.611426] bdbm: llm_make_req: 8700000, 69 +[ 9817.528587] bdbm: llm_make_req: 8750000, 96 +[ 9819.643079] bdbm: llm_make_req: 8800000, 72 +[ 9821.324613] bdbm: nvm: total access = 9400000, total read = 2660269, read hit = 1022665, total_write = 6739730, write hit = 6739730, hit = 0, evict = 4911048 +[ 9822.635963] bdbm: llm_make_req: 8850000, 96 +[ 9825.255512] bdbm: llm_make_req: 8900000, 96 +[ 9827.956874] bdbm: llm_make_req: 8950000, 47 +[ 9830.907411] bdbm: llm_make_req: 9000000, 96 +[ 9833.133019] bdbm: llm_make_req: 9050000, 91 +[ 9834.762848] bdbm: nvm: total access = 9500000, total read = 2700115, read hit = 1038119, total_write = 6799884, write hit = 6799884, hit = 0, evict = 4947444 +[ 9836.006977] bdbm: llm_make_req: 9100000, 96 +[ 9838.588805] bdbm: llm_make_req: 9150000, 96 +[ 9841.075687] bdbm: llm_make_req: 9200000, 96 +[ 9844.208504] bdbm: llm_make_req: 9250000, 96 +[ 9846.446950] bdbm: llm_make_req: 9300000, 87 +[ 9848.097661] bdbm: nvm: total access = 9600000, total read = 2740052, read hit = 1053832, total_write = 6859947, write hit = 6859947, hit = 0, evict = 4984494 +[ 9849.379030] bdbm: llm_make_req: 9350000, 95 +[ 9851.826697] bdbm: llm_make_req: 9400000, 96 +[ 9854.355367] bdbm: llm_make_req: 9450000, 96 +[ 9857.385018] bdbm: llm_make_req: 9500000, 96 +[ 9859.712193] bdbm: llm_make_req: 9550000, 60 +[ 9859.714119] bdbm: nvm: total access = 9700000, total read = 2780659, read hit = 1069745, total_write = 6919340, write hit = 6919340, hit = 0, evict = 5020573 +[ 9862.610879] bdbm: llm_make_req: 9600000, 96 +[ 9865.000093] bdbm: llm_make_req: 9650000, 96 +[ 9867.588317] bdbm: llm_make_req: 9700000, 96 +[ 9870.615242] bdbm: llm_make_req: 9750000, 96 +[ 9872.962832] bdbm: nvm: total access = 9800000, total read = 2820993, read hit = 1085435, total_write = 6979006, write hit = 6979006, hit = 0, evict = 5056870 +[ 9872.971864] bdbm: llm_make_req: 9800000, 63 +[ 9875.845338] bdbm: llm_make_req: 9850000, 96 +[ 9878.166044] bdbm: llm_make_req: 9900000, 96 +[ 9880.785259] bdbm: llm_make_req: 9950000, 96 +[ 9883.592576] bdbm: llm_make_req: 10000000, 96 +[ 9884.070663] bdbm: nvm: total access = 9900000, total read = 2861237, read hit = 1101238, total_write = 7038762, write hit = 7038762, hit = 0, evict = 5092694 +[ 9885.403110] bdbm: llm_make_req: 10050000, 66 +[ 9887.740023] bdbm: llm_make_req: 10100000, 65 +[ 9888.814611] bdbm: nvm: total access = 10000000, total read = 2901586, read hit = 1117308, total_write = 7098413, write hit = 7098413, hit = 0, evict = 5128577 +[ 9889.507051] bdbm: llm_make_req: 10150000, 96 +[ 9891.188182] bdbm: llm_make_req: 10200000, 96 +[ 9891.904078] bdbm: nvm: total access = 10100000, total read = 2940827, read hit = 1132740, total_write = 7159172, write hit = 7159172, hit = 0, evict = 5165716 +[ 9892.834571] bdbm: llm_make_req: 10250000, 62 +[ 9894.615054] bdbm: llm_make_req: 10300000, 86 +[ 9894.627375] bdbm: nvm: total access = 10200000, total read = 2980575, read hit = 1148413, total_write = 7219424, write hit = 7219424, hit = 0, evict = 5202372 +[ 9896.376166] bdbm: llm_make_req: 10350000, 73 +[ 9897.364164] bdbm: nvm: total access = 10300000, total read = 3020031, read hit = 1163873, total_write = 7279968, write hit = 7279968, hit = 0, evict = 5239113 +[ 9897.532002] bdbm: llm_make_req: 10400000, 96 +[ 9899.245471] bdbm: llm_make_req: 10450000, 64 +[ 9900.196682] bdbm: nvm: total access = 10400000, total read = 3060371, read hit = 1179702, total_write = 7339628, write hit = 7339628, hit = 0, evict = 5275153 +[ 9901.179247] bdbm: llm_make_req: 10500000, 64 +[ 9902.759285] bdbm: llm_make_req: 10550000, 96 +[ 9903.183484] bdbm: nvm: total access = 10500000, total read = 3100199, read hit = 1195386, total_write = 7399800, write hit = 7399800, hit = 0, evict = 5311209 +[ 9904.200433] bdbm: llm_make_req: 10600000, 65 +[ 9906.082526] bdbm: llm_make_req: 10650000, 54 +[ 9906.084283] bdbm: nvm: total access = 10600000, total read = 3140070, read hit = 1211327, total_write = 7459929, write hit = 7459929, hit = 0, evict = 5347936 +[ 9907.936772] bdbm: llm_make_req: 10700000, 67 +[ 9908.935207] bdbm: nvm: total access = 10700000, total read = 3180013, read hit = 1226897, total_write = 7519986, write hit = 7519986, hit = 0, evict = 5384323 +[ 9909.356686] bdbm: llm_make_req: 10750000, 96 +[ 9910.814191] bdbm: llm_make_req: 10800000, 68 +[ 9911.720046] bdbm: nvm: total access = 10800000, total read = 3219890, read hit = 1242312, total_write = 7580109, write hit = 7580109, hit = 0, evict = 5421211 +[ 9912.611877] bdbm: llm_make_req: 10850000, 65 +[ 9914.416072] bdbm: llm_make_req: 10900000, 60 +[ 9914.489780] bdbm: nvm: total access = 10900000, total read = 3259496, read hit = 1257659, total_write = 7640503, write hit = 7640503, hit = 0, evict = 5457972 +[ 9915.754980] bdbm: llm_make_req: 10950000, 96 +[ 9917.300531] bdbm: nvm: total access = 11000000, total read = 3299191, read hit = 1273580, total_write = 7700808, write hit = 7700808, hit = 0, evict = 5494675 +[ 9917.315344] bdbm: llm_make_req: 11000000, 85 +[ 9919.118071] bdbm: llm_make_req: 11050000, 86 +[ 9920.112395] bdbm: nvm: total access = 11100000, total read = 3339358, read hit = 1289218, total_write = 7760641, write hit = 7760641, hit = 0, evict = 5530908 +[ 9920.969401] bdbm: llm_make_req: 11100000, 7 +[ 9922.056424] bdbm: llm_make_req: 11150000, 52 +[ 9922.957431] bdbm: nvm: total access = 11200000, total read = 3379797, read hit = 1305035, total_write = 7820202, write hit = 7820202, hit = 0, evict = 5566854 +[ 9923.923352] bdbm: llm_make_req: 11200000, 72 +[ 9925.756952] bdbm: llm_make_req: 11250000, 74 +[ 9925.804365] bdbm: nvm: total access = 11300000, total read = 3419256, read hit = 1320524, total_write = 7880743, write hit = 7880743, hit = 0, evict = 5603566 +[ 9927.278323] bdbm: llm_make_req: 11300000, 96 +[ 9928.676270] bdbm: nvm: total access = 11400000, total read = 3458927, read hit = 1335991, total_write = 7941072, write hit = 7941072, hit = 0, evict = 5639910 +[ 9928.716856] bdbm: llm_make_req: 11350000, 67 +[ 9930.576161] bdbm: llm_make_req: 11400000, 61 +[ 9931.548673] bdbm: nvm: total access = 11500000, total read = 3499076, read hit = 1352098, total_write = 8000923, write hit = 8000923, hit = 0, evict = 5676337 +[ 9932.403746] bdbm: llm_make_req: 11450000, 70 +[ 9933.897233] bdbm: llm_make_req: 11500000, 96 +[ 9934.374257] bdbm: nvm: total access = 11600000, total read = 3538722, read hit = 1367870, total_write = 8061277, write hit = 8061277, hit = 0, evict = 5712822 +[ 9935.334404] bdbm: llm_make_req: 11550000, 66 +[ 9937.194722] bdbm: llm_make_req: 11600000, 78 +[ 9937.224684] bdbm: nvm: total access = 11700000, total read = 3579028, read hit = 1383622, total_write = 8120971, write hit = 8120971, hit = 0, evict = 5748860 +[ 9939.057803] bdbm: llm_make_req: 11650000, 75 +[ 9940.115734] bdbm: nvm: total access = 11800000, total read = 3619557, read hit = 1399525, total_write = 8180442, write hit = 8180442, hit = 0, evict = 5784938 +[ 9940.279725] bdbm: llm_make_req: 11700000, 96 +[ 9942.040337] bdbm: llm_make_req: 11750000, 74 +[ 9943.020066] bdbm: nvm: total access = 11900000, total read = 3659346, read hit = 1415083, total_write = 8240653, write hit = 8240653, hit = 0, evict = 5821376 +[ 9943.920370] bdbm: llm_make_req: 11800000, 67 +[ 9945.463089] bdbm: llm_make_req: 11850000, 96 +[ 9945.921919] bdbm: nvm: total access = 12000000, total read = 3699466, read hit = 1431142, total_write = 8300533, write hit = 8300533, hit = 0, evict = 5857833 +[ 9946.900361] bdbm: llm_make_req: 11900000, 59 +[ 9948.788781] bdbm: llm_make_req: 11950000, 76 +[ 9949.651308] bdbm: nvm: total access = 12100000, total read = 3738440, read hit = 1446447, total_write = 8361559, write hit = 8361559, hit = 0, evict = 5895029 +[ 9950.617871] bdbm: llm_make_req: 12000000, 69 +[ 9952.195949] bdbm: llm_make_req: 12050000, 96 +[ 9952.593474] bdbm: nvm: total access = 12200000, total read = 3777912, read hit = 1461796, total_write = 8422087, write hit = 8422087, hit = 0, evict = 5932067 +[ 9953.687748] bdbm: llm_make_req: 12100000, 64 +[ 9955.589008] bdbm: nvm: total access = 12300000, total read = 3818014, read hit = 1477598, total_write = 8481985, write hit = 8481985, hit = 0, evict = 5968307 +[ 9955.614542] bdbm: llm_make_req: 12150000, 76 +[ 9957.508436] bdbm: llm_make_req: 12200000, 52 +[ 9958.596705] bdbm: nvm: total access = 12400000, total read = 3858725, read hit = 1493723, total_write = 8541274, write hit = 8541274, hit = 0, evict = 6004072 +[ 9958.860202] bdbm: llm_make_req: 12250000, 96 +[ 9960.836521] bdbm: llm_make_req: 12300000, 90 +[ 9962.000344] bdbm: nvm: total access = 12500000, total read = 3898471, read hit = 1509271, total_write = 8601528, write hit = 8601528, hit = 0, evict = 6040574 +[ 9963.030742] bdbm: llm_make_req: 12350000, 67 +[ 9964.714691] bdbm: llm_make_req: 12400000, 96 +[ 9966.318500] bdbm: nvm: total access = 12600000, total read = 3938103, read hit = 1524673, total_write = 8661896, write hit = 8661896, hit = 0, evict = 6077022 +[ 9966.372073] bdbm: llm_make_req: 12450000, 83 +[ 9968.567314] bdbm: llm_make_req: 12500000, 84 +[ 9969.755011] bdbm: nvm: total access = 12700000, total read = 3977825, read hit = 1540539, total_write = 8722174, write hit = 8722174, hit = 0, evict = 6113637 +[ 9970.376593] bdbm: llm_make_req: 12550000, 96 +[ 9971.981273] bdbm: llm_make_req: 12600000, 80 +[ 9974.061890] bdbm: nvm: total access = 12800000, total read = 4018126, read hit = 1556543, total_write = 8781873, write hit = 8781873, hit = 0, evict = 6149655 +[ 9974.082668] bdbm: llm_make_req: 12650000, 81 +[ 9975.936885] bdbm: llm_make_req: 12700000, 96 +[ 9977.486135] bdbm: nvm: total access = 12900000, total read = 4058028, read hit = 1572407, total_write = 8841971, write hit = 8841971, hit = 0, evict = 6186220 +[ 9977.781422] bdbm: llm_make_req: 12750000, 96 +[ 9979.724199] bdbm: llm_make_req: 12800000, 57 +[ 9981.893130] bdbm: llm_make_req: 12850000, 78 +[ 9981.918757] bdbm: nvm: total access = 13000000, total read = 4097587, read hit = 1588163, total_write = 8902412, write hit = 8902412, hit = 0, evict = 6223046 +[ 9983.722211] bdbm: llm_make_req: 12900000, 95 +[ 9985.380147] bdbm: llm_make_req: 12950000, 76 +[ 9985.385957] bdbm: nvm: total access = 13100000, total read = 4137882, read hit = 1604050, total_write = 8962117, write hit = 8962117, hit = 0, evict = 6259869 +[ 9987.591445] bdbm: llm_make_req: 13000000, 80 +[ 9989.421751] bdbm: llm_make_req: 13050000, 96 +[ 9989.833932] bdbm: nvm: total access = 13200000, total read = 4177584, read hit = 1619672, total_write = 9022415, write hit = 9022415, hit = 0, evict = 6296038 +[ 9991.031357] bdbm: llm_make_req: 13100000, 67 +[ 9993.241914] bdbm: llm_make_req: 13150000, 77 +[ 9994.351002] bdbm: nvm: total access = 13300000, total read = 4218271, read hit = 1635252, total_write = 9081728, write hit = 9081728, hit = 0, evict = 6332064 +[ 9995.125962] bdbm: llm_make_req: 13200000, 96 +[ 9996.796075] bdbm: llm_make_req: 13250000, 77 +[ 9997.922186] bdbm: nvm: total access = 13400000, total read = 4259160, read hit = 1651289, total_write = 9140839, write hit = 9140839, hit = 0, evict = 6367900 +[ 9999.051085] bdbm: llm_make_req: 13300000, 58 +[10001.081228] bdbm: llm_make_req: 13350000, 96 +[10002.759004] bdbm: nvm: total access = 13500000, total read = 4299099, read hit = 1666955, total_write = 9200900, write hit = 9200900, hit = 0, evict = 6404386 +[10002.904710] bdbm: llm_make_req: 13400000, 96 +[10005.333185] bdbm: llm_make_req: 13450000, 81 +[10052.925002] bdbm: ----------------------------------------------- +[10052.925003] bdbm: < PERFORMANCE SUMMARY > +[10052.925004] bdbm: [0] Execution Time (us): 465.69745 +[10052.925005] bdbm: +[10052.925005] bdbm: [1] Total I/Os +[10052.925006] bdbm: # of page reads: 4833498 +[10052.925006] bdbm: # of page writes: 2184673 +[10052.925007] bdbm: # of block erase: 35584 +[10052.925007] bdbm: +[10052.925008] bdbm: [2] Normal I/Os +[10052.925008] bdbm: # of page reads: 2649098 +[10052.925009] bdbm: # of page writes: 0 +[10052.925009] bdbm: # of page rmw reads: 0 +[10052.925010] bdbm: # of page rmw writes: 0 +[10052.925010] bdbm: +[10052.925010] bdbm: [3] GC I/Os +[10052.925011] bdbm: # of GC invocation: 0 +[10052.925011] bdbm: # of page reads: 2184400 +[10052.925012] bdbm: # of page writes: 2184673 +[10052.925012] bdbm: # of block erase: 35584 +[10052.925013] bdbm: +[10052.925013] bdbm: [4] Meta I/Os +[10052.925014] bdbm: # of meta page reads: 0 +[10052.925014] bdbm: # of meta page writes: 0 +[10052.925015] bdbm: +[10052.925015] bdbm: [5] Elapsed Time +[10052.925016] bdbm: page read (us): 93 (S:0 + Q:0 + D:93) +[10052.925016] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[10052.925017] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[10052.925017] bdbm: +[10052.925018] bdbm: [6] Utilization (R) +[10052.925019] bdbm: 37847 37645 37905 37564 37770 37677 37680 37545 +[10052.925021] bdbm: 37539 37972 37726 37666 37719 37412 37500 37634 +[10052.925022] bdbm: 37531 37743 38048 37659 37813 37671 38080 37453 +[10052.925023] bdbm: 37756 37624 37867 37668 37836 37764 37816 37836 +[10052.925024] bdbm: 37770 37999 37846 38054 37787 37692 37833 37712 +[10052.925025] bdbm: 37768 37747 37805 37773 37842 38120 37653 37696 +[10052.925026] bdbm: 37463 37403 37936 37315 37406 37486 37719 37569 +[10052.925028] bdbm: 37448 37854 37705 37679 37768 37983 38224 37846 +[10052.925029] bdbm: 37893 37796 37870 37736 37970 37709 37578 37702 +[10052.925030] bdbm: 37917 37583 37740 37706 37804 37900 37852 37857 +[10052.925031] bdbm: 37852 38000 37792 38180 37988 37404 37766 37362 +[10052.925032] bdbm: 38060 38017 37676 37926 37541 38162 38280 38102 +[10052.925033] bdbm: 37948 37496 37738 37752 37583 37703 37658 37762 +[10052.925034] bdbm: 37641 37808 37645 37650 37507 37632 37830 37495 +[10052.925036] bdbm: 37872 37744 37925 38010 37576 38138 37703 37854 +[10052.925037] bdbm: 37824 37575 37664 38077 37712 37681 37893 37814 +[10052.925037] bdbm: +[10052.925038] bdbm: [7] Utilization (W) +[10052.925039] bdbm: 17079 17117 17130 17150 17159 17168 17171 17173 +[10052.925040] bdbm: 17172 17172 17175 17175 17177 17173 17177 17177 +[10052.925041] bdbm: 17173 17169 17169 17166 17166 17162 17160 17154 +[10052.925042] bdbm: 17151 17148 17147 17144 17143 17142 17141 17141 +[10052.925043] bdbm: 17141 17139 17135 17131 17129 17125 17121 17120 +[10052.925045] bdbm: 17120 17116 17113 17110 17106 17104 17104 17100 +[10052.925046] bdbm: 17098 17097 17096 17096 17095 17093 17091 17090 +[10052.925047] bdbm: 17088 17083 17079 17075 17074 17073 17071 17069 +[10052.925048] bdbm: 17069 17067 17066 17062 17060 17057 17055 17053 +[10052.925049] bdbm: 17050 17049 17045 17045 17042 17042 17040 17038 +[10052.925050] bdbm: 17038 17036 17033 17032 17029 17029 17025 17022 +[10052.925051] bdbm: 17021 17017 17015 17014 17009 17008 17005 17005 +[10052.925053] bdbm: 17005 17002 17000 16997 16994 16992 16990 16988 +[10052.925054] bdbm: 16987 16985 16983 16980 16980 16978 16977 16975 +[10052.925055] bdbm: 16973 16973 16970 16969 16969 16968 16967 16965 +[10052.925056] bdbm: 16964 16960 16958 16955 16950 16947 16946 16945 +[10052.925056] bdbm: [8] NVM I/Os +[10052.925057] bdbm: #_of_nvm_total_accesses: 13570331 +[10052.925058] bdbm: #_of_nvm_total_write_requests: 9243224 +[10052.925058] bdbm: #_of_nvm_total_read_requests: 4327107 +[10052.925058] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9243224 +[10052.925059] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1677981 +[10052.925059] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[10052.925060] bdbm: #_of_nvm_evict_from_nvm: 6430252 +[10052.925061] bdbm: #_of_nvm_write_amplification: 6430252 : 8614925 +[10052.925061] bdbm: +[10052.925061] bdbm: ----------------------------------------------- +[10052.925062] bdbm: ----------------------------------------------- +[10053.074978] bdbm: done +[10053.074980] bdbm: [dm_ramdrive_close] closed! +[10053.463327] bdbm: [bdbm_drv_main] bdbm_drv is closed +[10053.463329] bdbm: [bdbm_drv_main] bdbm_drv is removed +[10053.497038] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[10053.517914] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[10053.523433] bdbm: ===================================================================== +[10053.523435] bdbm: DEVICE PARAMETERS +[10053.523435] bdbm: ===================================================================== +[10053.523436] bdbm: # of channels = 8 +[10053.523437] bdbm: # of chips per channel = 16 +[10053.523438] bdbm: # of blocks per chip = 256 +[10053.523438] bdbm: # of pages per block = 128 +[10053.523439] bdbm: # of subpages per page = 1 +[10053.523440] bdbm: page main size = 4096 bytes +[10053.523441] bdbm: page oob size = 64 bytes +[10053.523441] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[10053.523442] bdbm: +[10053.523443] bdbm: ===================================================================== +[10053.523444] bdbm: RAM DISK INFO +[10053.523444] bdbm: ===================================================================== +[10053.523445] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[10055.050127] bdbm: ramssd addr = ffffc90050001000 +[10055.050129] bdbm: +[10055.050130] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[10056.571944] bdbm: *** building ptr_ramssd_data done +[10056.572177] bdbm: [dm_ramdrive_probe] probe done! +[10056.572179] bdbm: [dm_ramdrive_open] open done! +[10056.621837] bdbm: nvm cache addr = ffffc90870003000 +[10056.627529] bdbm: ========================================================== +[10056.627530] bdbm: NVM CONFIGURATION +[10056.627531] bdbm: ========================================================== +[10056.627532] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[10056.821116] bdbm: TRIM is disabled +[10056.821276] bdbm: ===================================================================== +[10056.821279] bdbm: DEVICE PARAMETERS +[10056.821280] bdbm: ===================================================================== +[10056.821280] bdbm: # of channels = 8 +[10056.821281] bdbm: # of chips per channel = 16 +[10056.821281] bdbm: # of blocks per chip = 256 +[10056.821282] bdbm: # of pages per block = 128 +[10056.821282] bdbm: # of subpages per page = 1 +[10056.821283] bdbm: page main size = 4096 bytes +[10056.821283] bdbm: page oob size = 64 bytes +[10056.821285] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[10056.821285] bdbm: +[10056.821286] bdbm: ===================================================================== +[10056.821286] bdbm: FTL CONFIGURATION +[10056.821287] bdbm: ===================================================================== +[10056.821288] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[10056.821288] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[10056.821289] bdbm: wl policy = 1 (1: none, 2: swap) +[10056.821289] bdbm: trim mode = 2 (1: enable, 2: disable) +[10056.821291] bdbm: kernel sector = 512 bytes +[10056.821291] bdbm: +[10056.821292] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[10056.841049] bdbm: llm_make_req: 0, 1 +[10056.968725] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[10056.968727] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[10058.633558] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 +[10097.742278] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 0, evict = 35134 +[10097.839738] bdbm: llm_make_req: 50000, 93 +[10098.149346] bdbm: llm_make_req: 100000, 64 +[10098.360660] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 0, evict = 135134 +[10098.458897] bdbm: llm_make_req: 150000, 89 +[10098.763950] bdbm: llm_make_req: 200000, 93 +[10098.985134] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 0, evict = 235134 +[10099.074726] bdbm: llm_make_req: 250000, 95 +[10099.386019] bdbm: llm_make_req: 300000, 74 +[10099.607662] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 0, evict = 335134 +[10099.697370] bdbm: llm_make_req: 350000, 92 +[10100.003466] bdbm: llm_make_req: 400000, 94 +[10100.218171] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 0, evict = 435134 +[10100.306267] bdbm: llm_make_req: 450000, 64 +[10100.613911] bdbm: llm_make_req: 500000, 94 +[10100.826853] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 0, evict = 535134 +[10100.920671] bdbm: llm_make_req: 550000, 79 +[10101.230510] bdbm: llm_make_req: 600000, 69 +[10101.459088] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 0, evict = 635134 +[10101.554530] bdbm: llm_make_req: 650000, 42 +[10101.858252] bdbm: llm_make_req: 700000, 94 +[10102.071835] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 0, evict = 735134 +[10102.169846] bdbm: llm_make_req: 750000, 95 +[10102.470681] bdbm: llm_make_req: 800000, 93 +[10102.677410] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 0, evict = 835134 +[10102.772868] bdbm: llm_make_req: 850000, 64 +[10103.075820] bdbm: llm_make_req: 900000, 91 +[10103.295126] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 0, evict = 935134 +[10103.388093] bdbm: llm_make_req: 950000, 95 +[10103.693004] bdbm: llm_make_req: 1000000, 94 +[10103.907798] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 0, evict = 1035134 +[10103.995410] bdbm: llm_make_req: 1050000, 75 +[10104.302821] bdbm: llm_make_req: 1100000, 92 +[10104.526966] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 0, evict = 1135134 +[10104.621551] bdbm: llm_make_req: 1150000, 94 +[10104.941252] bdbm: llm_make_req: 1200000, 64 +[10105.154985] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 0, evict = 1235134 +[10105.242696] bdbm: llm_make_req: 1250000, 95 +[10105.550748] bdbm: llm_make_req: 1300000, 96 +[10105.762884] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 0, evict = 1335134 +[10105.857028] bdbm: llm_make_req: 1350000, 72 +[10106.157508] bdbm: llm_make_req: 1400000, 94 +[10106.370799] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 0, evict = 1435134 +[10106.461634] bdbm: llm_make_req: 1450000, 96 +[10106.775520] bdbm: llm_make_req: 1500000, 40 +[10106.982267] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 0, evict = 1535134 +[10107.074925] bdbm: llm_make_req: 1550000, 94 +[10107.369788] bdbm: llm_make_req: 1600000, 92 +[10107.580825] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 0, evict = 1635134 +[10107.667268] bdbm: llm_make_req: 1650000, 72 +[10107.961064] bdbm: llm_make_req: 1700000, 87 +[10108.166734] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 0, evict = 1735134 +[10108.252964] bdbm: llm_make_req: 1750000, 92 +[10108.546254] bdbm: llm_make_req: 1800000, 95 +[10108.753283] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 0, evict = 1835134 +[10108.837616] bdbm: llm_make_req: 1850000, 82 +[10109.131029] bdbm: llm_make_req: 1900000, 94 +[10109.344901] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 0, evict = 1935134 +[10109.433277] bdbm: llm_make_req: 1950000, 95 +[10109.724690] bdbm: llm_make_req: 2000000, 91 +[10109.925538] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 0, evict = 2035134 +[10110.008767] bdbm: llm_make_req: 2050000, 92 +[10110.290370] bdbm: llm_make_req: 2100000, 94 +[10110.490047] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 0, evict = 2135134 +[10110.572512] bdbm: llm_make_req: 2150000, 92 +[10110.860858] bdbm: llm_make_req: 2200000, 93 +[10111.052327] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 0, evict = 2235134 +[10111.141620] bdbm: llm_make_req: 2250000, 96 +[10111.423681] bdbm: llm_make_req: 2300000, 83 +[10111.622604] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 0, evict = 2335134 +[10111.704564] bdbm: llm_make_req: 2350000, 94 +[10111.986641] bdbm: llm_make_req: 2400000, 93 +[10112.195368] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 0, evict = 2435134 +[10112.278185] bdbm: llm_make_req: 2450000, 68 +[10112.560644] bdbm: llm_make_req: 2500000, 93 +[10112.761860] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 0, evict = 2535134 +[10112.844274] bdbm: llm_make_req: 2550000, 96 +[10113.882247] bdbm: llm_make_req: 2600000, 93 +[10114.033512] bdbm: nvm: total access = 2800000, total read = 20852, read hit = 980, total_write = 2779147, write hit = 2779147, hit = 0, evict = 2612976 +[10114.116708] bdbm: llm_make_req: 2650000, 64 +[10114.354165] bdbm: llm_make_req: 2700000, 80 +[10114.453164] bdbm: nvm: total access = 2900000, total read = 61084, read hit = 6097, total_write = 2838915, write hit = 2838915, hit = 0, evict = 2665197 +[10114.605039] bdbm: llm_make_req: 2750000, 93 +[10114.847970] bdbm: nvm: total access = 3000000, total read = 101360, read hit = 14642, total_write = 2898639, write hit = 2898639, hit = 0, evict = 2711856 +[10114.854757] bdbm: llm_make_req: 2800000, 90 +[10115.121404] bdbm: llm_make_req: 2850000, 78 +[10115.246142] bdbm: nvm: total access = 3100000, total read = 141632, read hit = 24643, total_write = 2958367, write hit = 2958367, hit = 0, evict = 2756762 +[10115.381947] bdbm: llm_make_req: 2900000, 66 +[10115.648962] bdbm: nvm: total access = 3200000, total read = 181722, read hit = 34307, total_write = 3018277, write hit = 3018277, hit = 0, evict = 2802301 +[10115.650532] bdbm: llm_make_req: 2950000, 71 +[10115.910825] bdbm: llm_make_req: 3000000, 73 +[10116.050156] bdbm: nvm: total access = 3300000, total read = 221852, read hit = 43714, total_write = 3078147, write hit = 3078147, hit = 0, evict = 2848564 +[10116.173671] bdbm: llm_make_req: 3050000, 75 +[10116.444459] bdbm: llm_make_req: 3100000, 75 +[10116.459410] bdbm: nvm: total access = 3400000, total read = 261875, read hit = 52968, total_write = 3138124, write hit = 3138124, hit = 0, evict = 2894264 +[10116.701307] bdbm: llm_make_req: 3150000, 77 +[10116.864466] bdbm: nvm: total access = 3500000, total read = 301523, read hit = 62410, total_write = 3198476, write hit = 3198476, hit = 0, evict = 2940547 +[10116.974345] bdbm: llm_make_req: 3200000, 85 +[10117.233355] bdbm: llm_make_req: 3250000, 71 +[10117.261501] bdbm: nvm: total access = 3600000, total read = 342017, read hit = 72057, total_write = 3257982, write hit = 3257982, hit = 0, evict = 2985825 +[10117.500395] bdbm: llm_make_req: 3300000, 72 +[10117.668701] bdbm: nvm: total access = 3700000, total read = 381969, read hit = 81459, total_write = 3318030, write hit = 3318030, hit = 0, evict = 3031747 +[10117.765067] bdbm: llm_make_req: 3350000, 79 +[10118.035347] bdbm: llm_make_req: 3400000, 58 +[10118.077040] bdbm: nvm: total access = 3800000, total read = 422308, read hit = 91062, total_write = 3377691, write hit = 3377691, hit = 0, evict = 3077379 +[10118.293076] bdbm: llm_make_req: 3450000, 71 +[10118.481818] bdbm: nvm: total access = 3900000, total read = 461832, read hit = 100355, total_write = 3438167, write hit = 3438167, hit = 0, evict = 3123705 +[10118.555401] bdbm: llm_make_req: 3500000, 79 +[10118.820901] bdbm: llm_make_req: 3550000, 88 +[10118.879089] bdbm: nvm: total access = 4000000, total read = 501816, read hit = 109732, total_write = 3498183, write hit = 3498183, hit = 0, evict = 3169800 +[10119.081803] bdbm: llm_make_req: 3600000, 92 +[10119.286756] bdbm: nvm: total access = 4100000, total read = 541160, read hit = 119019, total_write = 3558839, write hit = 3558839, hit = 0, evict = 3216053 +[10119.353261] bdbm: llm_make_req: 3650000, 65 +[10119.614230] bdbm: llm_make_req: 3700000, 75 +[10119.692613] bdbm: nvm: total access = 4200000, total read = 580843, read hit = 128345, total_write = 3619156, write hit = 3619156, hit = 0, evict = 3262174 +[10119.880268] bdbm: llm_make_req: 3750000, 67 +[10120.097396] bdbm: nvm: total access = 4300000, total read = 620897, read hit = 137854, total_write = 3679102, write hit = 3679102, hit = 0, evict = 3307701 +[10120.143181] bdbm: llm_make_req: 3800000, 96 +[10120.404013] bdbm: llm_make_req: 3850000, 89 +[10120.493558] bdbm: nvm: total access = 4400000, total read = 661781, read hit = 147485, total_write = 3738218, write hit = 3738218, hit = 0, evict = 3352809 +[10120.670011] bdbm: llm_make_req: 3900000, 84 +[10120.900177] bdbm: nvm: total access = 4500000, total read = 701797, read hit = 156967, total_write = 3798202, write hit = 3798202, hit = 0, evict = 3398734 +[10120.932234] bdbm: llm_make_req: 3950000, 81 +[10121.196301] bdbm: llm_make_req: 4000000, 85 +[10121.300309] bdbm: nvm: total access = 4600000, total read = 741960, read hit = 166224, total_write = 3858039, write hit = 3858039, hit = 0, evict = 3444246 +[10121.454054] bdbm: llm_make_req: 4050000, 90 +[10121.707306] bdbm: nvm: total access = 4700000, total read = 781432, read hit = 175479, total_write = 3918567, write hit = 3918567, hit = 0, evict = 3490484 +[10121.724603] bdbm: llm_make_req: 4100000, 79 +[10121.984056] bdbm: llm_make_req: 4150000, 62 +[10122.104574] bdbm: nvm: total access = 4800000, total read = 821740, read hit = 184860, total_write = 3978259, write hit = 3978259, hit = 0, evict = 3536082 +[10122.252707] bdbm: llm_make_req: 4200000, 69 +[10122.511957] bdbm: nvm: total access = 4900000, total read = 861583, read hit = 194316, total_write = 4038416, write hit = 4038416, hit = 0, evict = 3582022 +[10122.515691] bdbm: llm_make_req: 4250000, 66 +[10122.773511] bdbm: llm_make_req: 4300000, 65 +[10122.916144] bdbm: nvm: total access = 5000000, total read = 901673, read hit = 203784, total_write = 4098326, write hit = 4098326, hit = 0, evict = 3627924 +[10123.042747] bdbm: llm_make_req: 4350000, 83 +[10123.305845] bdbm: llm_make_req: 4400000, 83 +[10123.316875] bdbm: nvm: total access = 5100000, total read = 941633, read hit = 213302, total_write = 4158366, write hit = 4158366, hit = 0, evict = 3673890 +[10123.574739] bdbm: llm_make_req: 4450000, 64 +[10123.725698] bdbm: nvm: total access = 5200000, total read = 981544, read hit = 222724, total_write = 4218455, write hit = 4218455, hit = 0, evict = 3720070 +[10123.838215] bdbm: llm_make_req: 4500000, 72 +[10124.107465] bdbm: llm_make_req: 4550000, 74 +[10124.132107] bdbm: nvm: total access = 5300000, total read = 1021662, read hit = 232136, total_write = 4278337, write hit = 4278337, hit = 0, evict = 3765460 +[10124.368634] bdbm: llm_make_req: 4600000, 71 +[10124.537274] bdbm: nvm: total access = 5400000, total read = 1062168, read hit = 241822, total_write = 4337831, write hit = 4337831, hit = 0, evict = 3810885 +[10124.637420] bdbm: llm_make_req: 4650000, 47 +[10124.897389] bdbm: llm_make_req: 4700000, 78 +[10124.936491] bdbm: nvm: total access = 5500000, total read = 1102116, read hit = 251098, total_write = 4397883, write hit = 4397883, hit = 0, evict = 3856566 +[10125.164114] bdbm: llm_make_req: 4750000, 74 +[10125.345011] bdbm: nvm: total access = 5600000, total read = 1142285, read hit = 260659, total_write = 4457714, write hit = 4457714, hit = 0, evict = 3902228 +[10125.443070] bdbm: llm_make_req: 4800000, 59 +[10125.704261] bdbm: llm_make_req: 4850000, 87 +[10125.768866] bdbm: nvm: total access = 5700000, total read = 1182479, read hit = 270241, total_write = 4517520, write hit = 4517520, hit = 0, evict = 3948237 +[10125.993477] bdbm: llm_make_req: 4900000, 71 +[10126.195308] bdbm: nvm: total access = 5800000, total read = 1222195, read hit = 279724, total_write = 4577804, write hit = 4577804, hit = 0, evict = 3994339 +[10126.268085] bdbm: llm_make_req: 4950000, 89 +[10126.547769] bdbm: llm_make_req: 5000000, 69 +[10126.618768] bdbm: nvm: total access = 5900000, total read = 1262070, read hit = 289143, total_write = 4637929, write hit = 4637929, hit = 0, evict = 4040029 +[10126.844694] bdbm: llm_make_req: 5050000, 92 +[10127.776225] bdbm: nvm: total access = 6000000, total read = 1302300, read hit = 298664, total_write = 4697699, write hit = 4697699, hit = 0, evict = 4085428 +[10127.829907] bdbm: llm_make_req: 5100000, 91 +[10128.816753] bdbm: llm_make_req: 5150000, 77 +[10129.315399] bdbm: nvm: total access = 6100000, total read = 1342303, read hit = 308170, total_write = 4757696, write hit = 4757696, hit = 0, evict = 4131247 +[10130.036891] bdbm: llm_make_req: 5200000, 75 +[10131.415093] bdbm: llm_make_req: 5250000, 96 +[10133.858197] bdbm: nvm: total access = 6200000, total read = 1382372, read hit = 317459, total_write = 4817627, write hit = 4817627, hit = 0, evict = 4176717 +[10133.890876] bdbm: llm_make_req: 5300000, 83 +[10135.989752] bdbm: llm_make_req: 5350000, 96 +[10137.837796] bdbm: llm_make_req: 5400000, 96 +[10139.919701] bdbm: nvm: total access = 6300000, total read = 1422455, read hit = 326725, total_write = 4877544, write hit = 4877544, hit = 0, evict = 4222544 +[10139.952873] bdbm: llm_make_req: 5450000, 70 +[10141.973677] bdbm: llm_make_req: 5500000, 96 +[10143.907210] bdbm: llm_make_req: 5550000, 96 +[10144.840093] bdbm: nvm: total access = 6400000, total read = 1463214, read hit = 336064, total_write = 4936785, write hit = 4936785, hit = 0, evict = 4267763 +[10146.017627] bdbm: llm_make_req: 5600000, 93 +[10148.250434] bdbm: llm_make_req: 5650000, 96 +[10150.323360] bdbm: llm_make_req: 5700000, 96 +[10152.672962] bdbm: nvm: total access = 6500000, total read = 1503142, read hit = 345474, total_write = 4996857, write hit = 4996857, hit = 0, evict = 4313554 +[10152.685627] bdbm: llm_make_req: 5750000, 56 +[10154.863131] bdbm: llm_make_req: 5800000, 96 +[10156.749660] bdbm: llm_make_req: 5850000, 96 +[10159.202716] bdbm: llm_make_req: 5900000, 72 +[10159.238235] bdbm: nvm: total access = 6600000, total read = 1543262, read hit = 354823, total_write = 5056737, write hit = 5056737, hit = 0, evict = 4359584 +[10161.404734] bdbm: llm_make_req: 5950000, 96 +[10163.184920] bdbm: llm_make_req: 6000000, 96 +[10165.528943] bdbm: llm_make_req: 6050000, 66 +[10166.837141] bdbm: nvm: total access = 6700000, total read = 1583196, read hit = 364170, total_write = 5116803, write hit = 5116803, hit = 0, evict = 4405723 +[10167.895511] bdbm: llm_make_req: 6100000, 96 +[10169.795555] bdbm: llm_make_req: 6150000, 96 +[10172.465271] bdbm: llm_make_req: 6200000, 64 +[10175.031326] bdbm: llm_make_req: 6250000, 85 +[10175.491571] bdbm: nvm: total access = 6800000, total read = 1622624, read hit = 373523, total_write = 5177375, write hit = 5177375, hit = 0, evict = 4452446 +[10176.955388] bdbm: llm_make_req: 6300000, 43 +[10179.350065] bdbm: llm_make_req: 6350000, 96 +[10181.917839] bdbm: llm_make_req: 6400000, 96 +[10184.174771] bdbm: llm_make_req: 6450000, 96 +[10185.743435] bdbm: nvm: total access = 6900000, total read = 1662463, read hit = 382862, total_write = 5237536, write hit = 5237536, hit = 0, evict = 4498563 +[10186.937625] bdbm: llm_make_req: 6500000, 96 +[10189.192334] bdbm: llm_make_req: 6550000, 96 +[10191.836825] bdbm: llm_make_req: 6600000, 82 +[10194.456598] bdbm: llm_make_req: 6650000, 96 +[10196.457475] bdbm: llm_make_req: 6700000, 73 +[10196.464384] bdbm: nvm: total access = 7000000, total read = 1702802, read hit = 392418, total_write = 5297197, write hit = 5297197, hit = 0, evict = 4543998 +[10199.251237] bdbm: llm_make_req: 6750000, 96 +[10201.758105] bdbm: llm_make_req: 6800000, 96 +[10204.494238] bdbm: llm_make_req: 6850000, 71 +[10207.349640] bdbm: llm_make_req: 6900000, 96 +[10209.590017] bdbm: llm_make_req: 6950000, 75 +[10211.253605] bdbm: nvm: total access = 7100000, total read = 1742798, read hit = 401930, total_write = 5357201, write hit = 5357201, hit = 0, evict = 4589880 +[10212.468382] bdbm: llm_make_req: 7000000, 96 +[10215.034297] bdbm: llm_make_req: 7050000, 96 +[10217.717628] bdbm: llm_make_req: 7100000, 78 +[10220.625212] bdbm: llm_make_req: 7150000, 96 +[10222.855369] bdbm: llm_make_req: 7200000, 67 +[10225.953834] bdbm: llm_make_req: 7250000, 96 +[10228.117070] bdbm: nvm: total access = 7200000, total read = 1782653, read hit = 411483, total_write = 5417346, write hit = 5417346, hit = 0, evict = 4635860 +[10228.555400] bdbm: llm_make_req: 7300000, 96 +[10231.109072] bdbm: llm_make_req: 7350000, 96 +[10234.247332] bdbm: llm_make_req: 7400000, 96 +[10236.558064] bdbm: llm_make_req: 7450000, 90 +[10239.601014] bdbm: llm_make_req: 7500000, 96 +[10242.019378] bdbm: llm_make_req: 7550000, 96 +[10244.877752] bdbm: llm_make_req: 7600000, 96 +[10247.807648] bdbm: llm_make_req: 7650000, 96 +[10248.724787] bdbm: nvm: total access = 7300000, total read = 1822298, read hit = 420826, total_write = 5477701, write hit = 5477701, hit = 0, evict = 4682356 +[10250.465752] bdbm: llm_make_req: 7700000, 67 +[10253.575386] bdbm: llm_make_req: 7750000, 96 +[10255.769546] bdbm: llm_make_req: 7800000, 60 +[10258.829583] bdbm: llm_make_req: 7850000, 96 +[10261.503669] bdbm: llm_make_req: 7900000, 96 +[10264.128894] bdbm: llm_make_req: 7950000, 96 +[10267.283118] bdbm: llm_make_req: 8000000, 96 +[10269.807681] bdbm: llm_make_req: 8050000, 71 +[10269.815868] bdbm: nvm: total access = 7400000, total read = 1862172, read hit = 430148, total_write = 5537827, write hit = 5537827, hit = 0, evict = 4728109 +[10272.907737] bdbm: llm_make_req: 8100000, 95 +[10275.245733] bdbm: llm_make_req: 8150000, 96 +[10278.198946] bdbm: llm_make_req: 8200000, 96 +[10281.013497] bdbm: llm_make_req: 8250000, 96 +[10283.501295] bdbm: llm_make_req: 8300000, 96 +[10286.832822] bdbm: llm_make_req: 8350000, 96 +[10289.245727] bdbm: llm_make_req: 8400000, 85 +[10291.047811] bdbm: nvm: total access = 7500000, total read = 1902445, read hit = 439667, total_write = 5597554, write hit = 5597554, hit = 0, evict = 4773706 +[10292.353185] bdbm: llm_make_req: 8450000, 96 +[10294.795061] bdbm: llm_make_req: 8500000, 96 +[10297.697433] bdbm: llm_make_req: 8550000, 96 +[10300.729671] bdbm: llm_make_req: 8600000, 96 +[10303.415158] bdbm: llm_make_req: 8650000, 74 +[10306.467071] bdbm: llm_make_req: 8700000, 96 +[10308.645660] bdbm: llm_make_req: 8750000, 47 +[10311.717344] bdbm: llm_make_req: 8800000, 95 +[10313.897350] bdbm: nvm: total access = 7600000, total read = 1942378, read hit = 449255, total_write = 5657621, write hit = 5657621, hit = 0, evict = 4819532 +[10314.402714] bdbm: llm_make_req: 8850000, 96 +[10317.046148] bdbm: llm_make_req: 8900000, 96 +[10320.222331] bdbm: llm_make_req: 8950000, 96 +[10322.788854] bdbm: llm_make_req: 9000000, 57 +[10325.867988] bdbm: llm_make_req: 9050000, 96 +[10328.180090] bdbm: llm_make_req: 9100000, 96 +[10331.152324] bdbm: llm_make_req: 9150000, 96 +[10333.956546] bdbm: llm_make_req: 9200000, 96 +[10335.030936] bdbm: nvm: total access = 7700000, total read = 1982635, read hit = 458697, total_write = 5717364, write hit = 5717364, hit = 0, evict = 4864974 +[10336.459894] bdbm: llm_make_req: 9250000, 95 +[10339.813515] bdbm: llm_make_req: 9300000, 96 +[10342.052332] bdbm: llm_make_req: 9350000, 82 +[10344.970559] bdbm: llm_make_req: 9400000, 96 +[10347.505304] bdbm: llm_make_req: 9450000, 96 +[10350.386810] bdbm: llm_make_req: 9500000, 63 +[10352.025164] bdbm: nvm: total access = 7800000, total read = 2023314, read hit = 468469, total_write = 5776685, write hit = 5776685, hit = 0, evict = 4910265 +[10353.140284] bdbm: llm_make_req: 9550000, 96 +[10355.158039] bdbm: llm_make_req: 9600000, 73 +[10357.903465] bdbm: llm_make_req: 9650000, 96 +[10360.526180] bdbm: llm_make_req: 9700000, 96 +[10362.952784] bdbm: llm_make_req: 9750000, 77 +[10364.544699] bdbm: nvm: total access = 7900000, total read = 2063359, read hit = 477864, total_write = 5836640, write hit = 5836640, hit = 0, evict = 4956327 +[10365.714433] bdbm: llm_make_req: 9800000, 96 +[10367.743473] bdbm: llm_make_req: 9850000, 96 +[10370.564627] bdbm: llm_make_req: 9900000, 86 +[10373.012980] bdbm: llm_make_req: 9950000, 96 +[10374.947688] bdbm: nvm: total access = 8000000, total read = 2103219, read hit = 487204, total_write = 5896780, write hit = 5896780, hit = 0, evict = 5002552 +[10374.971457] bdbm: llm_make_req: 10000000, 78 +[10377.669068] bdbm: llm_make_req: 10050000, 24 +[10379.832319] bdbm: llm_make_req: 10100000, 96 +[10381.728398] bdbm: llm_make_req: 10150000, 73 +[10383.048991] bdbm: nvm: total access = 8100000, total read = 2143281, read hit = 496830, total_write = 5956718, write hit = 5956718, hit = 0, evict = 5048623 +[10384.219746] bdbm: llm_make_req: 10200000, 64 +[10386.197334] bdbm: llm_make_req: 10250000, 95 +[10387.802454] bdbm: llm_make_req: 10300000, 82 +[10388.851009] bdbm: nvm: total access = 8200000, total read = 2182934, read hit = 505861, total_write = 6017065, write hit = 6017065, hit = 0, evict = 5094867 +[10389.952876] bdbm: llm_make_req: 10350000, 75 +[10391.684538] bdbm: llm_make_req: 10400000, 95 +[10393.150721] bdbm: nvm: total access = 8300000, total read = 2222359, read hit = 515158, total_write = 6077640, write hit = 6077640, hit = 0, evict = 5141353 +[10393.350617] bdbm: llm_make_req: 10450000, 96 +[10395.048013] bdbm: llm_make_req: 10500000, 83 +[10396.918690] bdbm: llm_make_req: 10550000, 82 +[10396.970765] bdbm: nvm: total access = 8400000, total read = 2262359, read hit = 524479, total_write = 6137640, write hit = 6137640, hit = 0, evict = 5187557 +[10398.410642] bdbm: llm_make_req: 10600000, 96 +[10399.794147] bdbm: llm_make_req: 10650000, 81 +[10400.639570] bdbm: nvm: total access = 8500000, total read = 2302432, read hit = 533896, total_write = 6197567, write hit = 6197567, hit = 0, evict = 5233525 +[10401.539611] bdbm: llm_make_req: 10700000, 75 +[10403.284658] bdbm: llm_make_req: 10750000, 82 +[10404.195377] bdbm: nvm: total access = 8600000, total read = 2341814, read hit = 543254, total_write = 6258185, write hit = 6258185, hit = 0, evict = 5279947 +[10404.712764] bdbm: llm_make_req: 10800000, 95 +[10406.102959] bdbm: llm_make_req: 10850000, 84 +[10407.823785] bdbm: nvm: total access = 8700000, total read = 2381725, read hit = 552829, total_write = 6318274, write hit = 6318274, hit = 0, evict = 5326037 +[10407.881677] bdbm: llm_make_req: 10900000, 76 +[10409.637048] bdbm: llm_make_req: 10950000, 76 +[10410.605354] bdbm: nvm: total access = 8800000, total read = 2422266, read hit = 562330, total_write = 6377733, write hit = 6377733, hit = 0, evict = 5371349 +[10411.088245] bdbm: llm_make_req: 11000000, 96 +[10412.481831] bdbm: llm_make_req: 11050000, 58 +[10414.216007] bdbm: llm_make_req: 11100000, 71 +[10414.218831] bdbm: nvm: total access = 8900000, total read = 2462721, read hit = 571703, total_write = 6437278, write hit = 6437278, hit = 0, evict = 5416925 +[10415.975360] bdbm: llm_make_req: 11150000, 94 +[10417.263488] bdbm: llm_make_req: 11200000, 96 +[10417.822478] bdbm: nvm: total access = 9000000, total read = 2502426, read hit = 581260, total_write = 6497573, write hit = 6497573, hit = 0, evict = 5462955 +[10418.802049] bdbm: llm_make_req: 11250000, 80 +[10420.550882] bdbm: llm_make_req: 11300000, 94 +[10420.622072] bdbm: nvm: total access = 9100000, total read = 2542173, read hit = 590759, total_write = 6557826, write hit = 6557826, hit = 0, evict = 5509177 +[10422.318471] bdbm: llm_make_req: 11350000, 79 +[10423.520971] bdbm: llm_make_req: 11400000, 96 +[10424.244799] bdbm: nvm: total access = 9200000, total read = 2582517, read hit = 600356, total_write = 6617482, write hit = 6617482, hit = 0, evict = 5554324 +[10425.143395] bdbm: llm_make_req: 11450000, 79 +[10426.934572] bdbm: llm_make_req: 11500000, 82 +[10427.843541] bdbm: nvm: total access = 9300000, total read = 2623730, read hit = 610073, total_write = 6676269, write hit = 6676269, hit = 0, evict = 5599358 +[10428.364400] bdbm: llm_make_req: 11550000, 95 +[10429.753798] bdbm: llm_make_req: 11600000, 74 +[10431.523644] bdbm: nvm: total access = 9400000, total read = 2663827, read hit = 619348, total_write = 6736172, write hit = 6736172, hit = 0, evict = 5645067 +[10431.559449] bdbm: llm_make_req: 11650000, 88 +[10433.352809] bdbm: llm_make_req: 11700000, 78 +[10434.355361] bdbm: nvm: total access = 9500000, total read = 2704280, read hit = 629044, total_write = 6795719, write hit = 6795719, hit = 0, evict = 5690438 +[10434.646658] bdbm: llm_make_req: 11750000, 96 +[10436.189224] bdbm: llm_make_req: 11800000, 78 +[10437.982704] bdbm: llm_make_req: 11850000, 94 +[10438.005447] bdbm: nvm: total access = 9600000, total read = 2743627, read hit = 638347, total_write = 6856372, write hit = 6856372, hit = 0, evict = 5736564 +[10439.789773] bdbm: llm_make_req: 11900000, 73 +[10441.013110] bdbm: llm_make_req: 11950000, 96 +[10441.670041] bdbm: nvm: total access = 9700000, total read = 2783354, read hit = 648039, total_write = 6916645, write hit = 6916645, hit = 0, evict = 5782668 +[10442.627788] bdbm: llm_make_req: 12000000, 84 +[10444.404311] bdbm: llm_make_req: 12050000, 87 +[10445.315187] bdbm: nvm: total access = 9800000, total read = 2823402, read hit = 657504, total_write = 6976597, write hit = 6976597, hit = 0, evict = 5828590 +[10445.870587] bdbm: llm_make_req: 12100000, 96 +[10447.278209] bdbm: llm_make_req: 12150000, 96 +[10448.201534] bdbm: nvm: total access = 9900000, total read = 2863513, read hit = 666959, total_write = 7036486, write hit = 7036486, hit = 0, evict = 5874590 +[10449.090667] bdbm: llm_make_req: 12200000, 78 +[10450.890224] bdbm: llm_make_req: 12250000, 77 +[10451.905058] bdbm: nvm: total access = 10000000, total read = 2903284, read hit = 676451, total_write = 7096715, write hit = 7096715, hit = 0, evict = 5920951 +[10452.376187] bdbm: llm_make_req: 12300000, 96 +[10453.792722] bdbm: llm_make_req: 12350000, 72 +[10455.684467] bdbm: llm_make_req: 12400000, 86 +[10455.704947] bdbm: nvm: total access = 10100000, total read = 2943356, read hit = 685839, total_write = 7156643, write hit = 7156643, hit = 0, evict = 5966775 +[10457.441915] bdbm: llm_make_req: 12450000, 96 +[10459.165515] bdbm: llm_make_req: 12500000, 96 +[10461.112296] bdbm: nvm: total access = 10200000, total read = 2984026, read hit = 695500, total_write = 7215973, write hit = 7215973, hit = 0, evict = 6012117 +[10461.177142] bdbm: llm_make_req: 12550000, 73 +[10463.356717] bdbm: llm_make_req: 12600000, 66 +[10465.017074] bdbm: llm_make_req: 12650000, 96 +[10465.636564] bdbm: nvm: total access = 10300000, total read = 3024122, read hit = 705186, total_write = 7275877, write hit = 7275877, hit = 0, evict = 6057947 +[10466.763821] bdbm: llm_make_req: 12700000, 61 +[10468.911383] bdbm: llm_make_req: 12750000, 64 +[10470.109261] bdbm: nvm: total access = 10400000, total read = 3063668, read hit = 714447, total_write = 7336331, write hit = 7336331, hit = 0, evict = 6104349 +[10470.785733] bdbm: llm_make_req: 12800000, 96 +[10472.405893] bdbm: llm_make_req: 12850000, 67 +[10474.772987] bdbm: llm_make_req: 12900000, 78 +[10476.076570] bdbm: nvm: total access = 10500000, total read = 3103826, read hit = 724054, total_write = 7396173, write hit = 7396173, hit = 0, evict = 6150254 +[10476.881649] bdbm: llm_make_req: 12950000, 96 +[10478.601053] bdbm: llm_make_req: 13000000, 78 +[10481.004952] bdbm: llm_make_req: 13050000, 71 +[10482.292122] bdbm: nvm: total access = 10600000, total read = 3143753, read hit = 733457, total_write = 7456246, write hit = 7456246, hit = 0, evict = 6196415 +[10483.103013] bdbm: llm_make_req: 13100000, 95 +[10484.822218] bdbm: llm_make_req: 13150000, 72 +[10487.251544] bdbm: llm_make_req: 13200000, 86 +[10488.558003] bdbm: nvm: total access = 10700000, total read = 3184160, read hit = 742847, total_write = 7515839, write hit = 7515839, hit = 0, evict = 6241811 +[10489.386544] bdbm: llm_make_req: 13250000, 96 +[10491.111023] bdbm: llm_make_req: 13300000, 77 +[10493.612487] bdbm: llm_make_req: 13350000, 74 +[10495.821406] bdbm: llm_make_req: 13400000, 96 +[10496.219742] bdbm: nvm: total access = 10800000, total read = 3224227, read hit = 752307, total_write = 7575772, write hit = 7575772, hit = 0, evict = 6287827 +[10497.593846] bdbm: llm_make_req: 13450000, 73 +[10500.141502] bdbm: llm_make_req: 13500000, 85 +[10502.460098] bdbm: llm_make_req: 13550000, 96 +[10502.960521] bdbm: nvm: total access = 10900000, total read = 3264454, read hit = 761615, total_write = 7635545, write hit = 7635545, hit = 0, evict = 6333474 +[10504.323216] bdbm: llm_make_req: 13600000, 70 +[10506.787418] bdbm: llm_make_req: 13650000, 71 +[10509.123498] bdbm: llm_make_req: 13700000, 96 +[10511.153057] bdbm: llm_make_req: 13750000, 84 +[10511.175779] bdbm: nvm: total access = 11000000, total read = 3304821, read hit = 771018, total_write = 7695178, write hit = 7695178, hit = 0, evict = 6378987 +[10513.503859] bdbm: llm_make_req: 13800000, 96 +[10515.716817] bdbm: llm_make_req: 13850000, 96 +[10518.148853] bdbm: llm_make_req: 13900000, 84 +[10519.617431] bdbm: nvm: total access = 11100000, total read = 3345759, read hit = 780636, total_write = 7754240, write hit = 7754240, hit = 0, evict = 6424380 +[10520.606111] bdbm: llm_make_req: 13950000, 95 +[10522.553397] bdbm: llm_make_req: 14000000, 96 +[10525.343046] bdbm: llm_make_req: 14050000, 53 +[10527.722307] bdbm: llm_make_req: 14100000, 96 +[10529.730104] bdbm: nvm: total access = 11200000, total read = 3386033, read hit = 790134, total_write = 7813966, write hit = 7813966, hit = 0, evict = 6469932 +[10529.735314] bdbm: llm_make_req: 14150000, 68 +[10532.243496] bdbm: llm_make_req: 14200000, 96 +[10534.677514] bdbm: llm_make_req: 14250000, 96 +[10537.145011] bdbm: llm_make_req: 14300000, 72 +[10539.761416] bdbm: llm_make_req: 14350000, 96 +[10540.201120] bdbm: nvm: total access = 11300000, total read = 3426319, read hit = 799533, total_write = 7873680, write hit = 7873680, hit = 0, evict = 6515589 +[10541.789627] bdbm: llm_make_req: 14400000, 96 +[10544.305559] bdbm: llm_make_req: 14450000, 96 +[10547.160622] bdbm: llm_make_req: 14500000, 96 +[10549.242932] bdbm: llm_make_req: 14550000, 93 +[10551.868796] bdbm: llm_make_req: 14600000, 96 +[10552.247190] bdbm: nvm: total access = 11400000, total read = 3465398, read hit = 808733, total_write = 7934601, write hit = 7934601, hit = 0, evict = 6562044 +[10554.309180] bdbm: llm_make_req: 14650000, 96 +[10556.907658] bdbm: llm_make_req: 14700000, 87 +[10559.587228] bdbm: llm_make_req: 14750000, 96 +[10561.750991] bdbm: llm_make_req: 14800000, 96 +[10564.329006] bdbm: llm_make_req: 14850000, 96 +[10564.689240] bdbm: nvm: total access = 11500000, total read = 3504824, read hit = 818159, total_write = 7995175, write hit = 7995175, hit = 0, evict = 6608399 +[10567.130454] bdbm: llm_make_req: 14900000, 96 +[10569.379090] bdbm: llm_make_req: 14950000, 49 +[10572.120170] bdbm: llm_make_req: 15000000, 96 +[10574.460948] bdbm: llm_make_req: 15050000, 96 +[10577.247238] bdbm: llm_make_req: 15100000, 72 +[10577.255397] bdbm: nvm: total access = 11600000, total read = 3544998, read hit = 827661, total_write = 8055001, write hit = 8055001, hit = 0, evict = 6654311 +[10579.867415] bdbm: llm_make_req: 15150000, 96 +[10581.974584] bdbm: llm_make_req: 15200000, 85 +[10584.674991] bdbm: llm_make_req: 15250000, 95 +[10587.138016] bdbm: llm_make_req: 15300000, 96 +[10589.831636] bdbm: llm_make_req: 15350000, 71 +[10589.839180] bdbm: nvm: total access = 11700000, total read = 3585505, read hit = 837060, total_write = 8114494, write hit = 8114494, hit = 0, evict = 6700110 +[10592.560321] bdbm: llm_make_req: 15400000, 94 +[10594.595344] bdbm: llm_make_req: 15450000, 77 +[10597.334459] bdbm: llm_make_req: 15500000, 96 +[10599.962331] bdbm: llm_make_req: 15550000, 96 +[10602.460889] bdbm: llm_make_req: 15600000, 77 +[10602.470625] bdbm: nvm: total access = 11800000, total read = 3625645, read hit = 846475, total_write = 8174354, write hit = 8174354, hit = 0, evict = 6746021 +[10605.156260] bdbm: llm_make_req: 15650000, 96 +[10607.231978] bdbm: llm_make_req: 15700000, 96 +[10609.904315] bdbm: llm_make_req: 15750000, 95 +[10612.656027] bdbm: llm_make_req: 15800000, 96 +[10614.989379] bdbm: llm_make_req: 15850000, 75 +[10614.996592] bdbm: nvm: total access = 11900000, total read = 3665069, read hit = 855906, total_write = 8234930, write hit = 8234930, hit = 0, evict = 6792069 +[10617.736929] bdbm: llm_make_req: 15900000, 95 +[10620.100247] bdbm: llm_make_req: 15950000, 96 +[10622.865741] bdbm: llm_make_req: 16000000, 75 +[10625.516261] bdbm: llm_make_req: 16050000, 96 +[10627.590646] bdbm: llm_make_req: 16100000, 88 +[10627.595320] bdbm: nvm: total access = 12000000, total read = 3705133, read hit = 865402, total_write = 8294866, write hit = 8294866, hit = 0, evict = 6837773 +[10630.297790] bdbm: llm_make_req: 16150000, 96 +[10632.806392] bdbm: llm_make_req: 16200000, 96 +[10635.381659] bdbm: llm_make_req: 16250000, 81 +[10638.149636] bdbm: llm_make_req: 16300000, 96 +[10640.112784] bdbm: nvm: total access = 12100000, total read = 3744843, read hit = 874618, total_write = 8355156, write hit = 8355156, hit = 0, evict = 6883859 +[10640.148551] bdbm: llm_make_req: 16350000, 96 +[10642.789171] bdbm: llm_make_req: 16400000, 96 +[10645.585604] bdbm: llm_make_req: 16450000, 96 +[10647.860862] bdbm: llm_make_req: 16500000, 78 +[10650.504902] bdbm: llm_make_req: 16550000, 96 +[10652.433050] bdbm: nvm: total access = 12200000, total read = 3784564, read hit = 884082, total_write = 8415435, write hit = 8415435, hit = 0, evict = 6929870 +[10652.818778] bdbm: llm_make_req: 16600000, 96 +[10655.494991] bdbm: llm_make_req: 16650000, 67 +[10658.144216] bdbm: llm_make_req: 16700000, 96 +[10660.121479] bdbm: llm_make_req: 16750000, 80 +[10662.786631] bdbm: llm_make_req: 16800000, 96 +[10664.663548] bdbm: nvm: total access = 12300000, total read = 3824898, read hit = 893542, total_write = 8475101, write hit = 8475101, hit = 0, evict = 6975450 +[10665.422136] bdbm: llm_make_req: 16850000, 96 +[10667.734857] bdbm: llm_make_req: 16900000, 81 +[10670.287057] bdbm: llm_make_req: 16950000, 96 +[10672.477574] bdbm: llm_make_req: 17000000, 96 +[10675.006007] bdbm: nvm: total access = 12400000, total read = 3864814, read hit = 902743, total_write = 8535185, write hit = 8535185, hit = 0, evict = 7021337 +[10675.014187] bdbm: llm_make_req: 17050000, 74 +[10677.508196] bdbm: llm_make_req: 17100000, 96 +[10679.405898] bdbm: llm_make_req: 17150000, 72 +[10682.204866] bdbm: llm_make_req: 17200000, 75 +[10683.653857] bdbm: nvm: total access = 12500000, total read = 3905121, read hit = 912398, total_write = 8594878, write hit = 8594878, hit = 0, evict = 7066832 +[10684.520696] bdbm: llm_make_req: 17250000, 96 +[10686.463855] bdbm: llm_make_req: 17300000, 71 +[10688.779575] bdbm: llm_make_req: 17350000, 96 +[10691.174019] bdbm: llm_make_req: 17400000, 96 +[10691.812979] bdbm: nvm: total access = 12600000, total read = 3945277, read hit = 921899, total_write = 8654722, write hit = 8654722, hit = 0, evict = 7112767 +[10693.153985] bdbm: llm_make_req: 17450000, 86 +[10695.334818] bdbm: llm_make_req: 17500000, 96 +[10697.553674] bdbm: llm_make_req: 17550000, 96 +[10698.321497] bdbm: nvm: total access = 12700000, total read = 3986038, read hit = 931488, total_write = 8713961, write hit = 8713961, hit = 0, evict = 7158265 +[10699.555406] bdbm: llm_make_req: 17600000, 82 +[10701.988858] bdbm: llm_make_req: 17650000, 96 +[10703.876744] bdbm: llm_make_req: 17700000, 96 +[10704.464994] bdbm: nvm: total access = 12800000, total read = 4025556, read hit = 940697, total_write = 8774443, write hit = 8774443, hit = 0, evict = 7204641 +[10705.630850] bdbm: llm_make_req: 17750000, 79 +[10707.910863] bdbm: llm_make_req: 17800000, 81 +[10709.789653] bdbm: llm_make_req: 17850000, 95 +[10710.231578] bdbm: nvm: total access = 12900000, total read = 4065034, read hit = 949970, total_write = 8834965, write hit = 8834965, hit = 0, evict = 7250920 +[10711.369779] bdbm: llm_make_req: 17900000, 78 +[10713.526492] bdbm: llm_make_req: 17950000, 76 +[10715.332455] bdbm: llm_make_req: 18000000, 94 +[10715.695530] bdbm: nvm: total access = 13000000, total read = 4105343, read hit = 959518, total_write = 8894656, write hit = 8894656, hit = 0, evict = 7296705 +[10717.031232] bdbm: llm_make_req: 18050000, 96 +[10718.998372] bdbm: llm_make_req: 18100000, 68 +[10720.063399] bdbm: nvm: total access = 13100000, total read = 4144983, read hit = 968567, total_write = 8955016, write hit = 8955016, hit = 0, evict = 7342699 +[10721.117258] bdbm: llm_make_req: 18150000, 95 +[10722.793457] bdbm: llm_make_req: 18200000, 96 +[10724.470816] bdbm: llm_make_req: 18250000, 65 +[10724.474467] bdbm: nvm: total access = 13200000, total read = 4185389, read hit = 977961, total_write = 9014610, write hit = 9014610, hit = 0, evict = 7388228 +[10726.545702] bdbm: llm_make_req: 18300000, 81 +[10728.280079] bdbm: llm_make_req: 18350000, 95 +[10729.774664] bdbm: nvm: total access = 13300000, total read = 4225320, read hit = 987391, total_write = 9074679, write hit = 9074679, hit = 0, evict = 7434204 +[10729.862736] bdbm: llm_make_req: 18400000, 70 +[10731.942894] bdbm: llm_make_req: 18450000, 81 +[10733.748351] bdbm: llm_make_req: 18500000, 96 +[10734.140529] bdbm: nvm: total access = 13400000, total read = 4265351, read hit = 997072, total_write = 9134648, write hit = 9134648, hit = 0, evict = 7480197 +[10735.577395] bdbm: llm_make_req: 18550000, 96 +[10737.451985] bdbm: llm_make_req: 18600000, 90 +[10738.569869] bdbm: nvm: total access = 13500000, total read = 4305276, read hit = 1006420, total_write = 9194723, write hit = 9194723, hit = 0, evict = 7525870 +[10739.600724] bdbm: llm_make_req: 18650000, 85 +[10741.381202] bdbm: llm_make_req: 18700000, 96 +[11767.280294] bdbm: ----------------------------------------------- +[11767.280296] bdbm: < PERFORMANCE SUMMARY > +[11767.280298] bdbm: [0] Execution Time (us): 1710.384665 +[11767.280298] bdbm: +[11767.280299] bdbm: [1] Total I/Os +[11767.280299] bdbm: # of page reads: 7212736 +[11767.280300] bdbm: # of page writes: 3892833 +[11767.280300] bdbm: # of block erase: 57728 +[11767.280301] bdbm: +[11767.280301] bdbm: [2] Normal I/Os +[11767.280301] bdbm: # of page reads: 3320350 +[11767.280303] bdbm: # of page writes: 0 +[11767.280303] bdbm: # of page rmw reads: 0 +[11767.280304] bdbm: # of page rmw writes: 0 +[11767.280304] bdbm: +[11767.280305] bdbm: [3] GC I/Os +[11767.280305] bdbm: # of GC invocation: 0 +[11767.280306] bdbm: # of page reads: 3892386 +[11767.280306] bdbm: # of page writes: 3892833 +[11767.280307] bdbm: # of block erase: 57728 +[11767.280307] bdbm: +[11767.280307] bdbm: [4] Meta I/Os +[11767.280309] bdbm: # of meta page reads: 0 +[11767.280309] bdbm: # of meta page writes: 0 +[11767.280310] bdbm: +[11767.280310] bdbm: [5] Elapsed Time +[11767.280311] bdbm: page read (us): 93 (S:0 + Q:0 + D:93) +[11767.280311] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[11767.280312] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[11767.280312] bdbm: +[11767.280313] bdbm: [6] Utilization (R) +[11767.280315] bdbm: 56453 56133 56239 56222 55878 56488 56316 56351 +[11767.280317] bdbm: 56381 56308 55870 56565 56482 56801 56512 56887 +[11767.280318] bdbm: 56526 56302 56384 56525 56675 56334 56635 56331 +[11767.280319] bdbm: 56591 56223 56511 56282 56361 56450 56544 56540 +[11767.280321] bdbm: 56308 56547 56969 56447 56219 56191 56080 56359 +[11767.280322] bdbm: 56200 56305 56510 56353 55908 56241 55997 56363 +[11767.280323] bdbm: 56157 56002 56324 56681 56537 56130 56210 56885 +[11767.280324] bdbm: 56762 56420 56298 56262 56399 56379 56409 56452 +[11767.280327] bdbm: 56130 56287 56203 56550 56200 56405 56393 56551 +[11767.280328] bdbm: 56006 56068 56403 56139 56038 56409 56157 56031 +[11767.280329] bdbm: 56151 56474 56127 56384 56147 56329 56285 56515 +[11767.280330] bdbm: 56800 56651 56296 56466 56389 56291 56559 56503 +[11767.280332] bdbm: 56176 56213 56341 56316 56606 56585 56320 56115 +[11767.280333] bdbm: 56441 56557 56334 56230 55821 56137 56454 56256 +[11767.280335] bdbm: 55877 56133 56499 56204 56267 56336 56305 55966 +[11767.280336] bdbm: 56363 56373 56328 56520 56579 56428 56668 56247 +[11767.280336] bdbm: +[11767.280337] bdbm: [7] Utilization (W) +[11767.280339] bdbm: 30438 30490 30524 30549 30564 30570 30572 30579 +[11767.280340] bdbm: 30581 30582 30584 30587 30590 30590 30590 30584 +[11767.280341] bdbm: 30582 30580 30573 30569 30566 30561 30559 30556 +[11767.280342] bdbm: 30551 30547 30544 30542 30536 30533 30528 30518 +[11767.280344] bdbm: 30515 30512 30510 30506 30503 30501 30500 30496 +[11767.280345] bdbm: 30492 30488 30488 30484 30480 30474 30471 30469 +[11767.280347] bdbm: 30467 30465 30463 30458 30457 30455 30452 30445 +[11767.280348] bdbm: 30441 30439 30434 30431 30429 30427 30423 30416 +[11767.280350] bdbm: 30414 30412 30412 30408 30405 30404 30399 30397 +[11767.280351] bdbm: 30394 30391 30389 30387 30383 30383 30378 30376 +[11767.280352] bdbm: 30369 30368 30367 30363 30362 30357 30356 30353 +[11767.280353] bdbm: 30347 30342 30339 30335 30331 30327 30323 30321 +[11767.280356] bdbm: 30316 30309 30306 30302 30298 30296 30294 30293 +[11767.280357] bdbm: 30287 30284 30278 30274 30268 30263 30262 30256 +[11767.280358] bdbm: 30251 30247 30243 30242 30238 30233 30231 30227 +[11767.280359] bdbm: 30220 30214 30210 30205 30201 30199 30195 30189 +[11767.280359] bdbm: [8] NVM I/Os +[11767.280360] bdbm: #_of_nvm_total_accesses: 13570935 +[11767.280361] bdbm: #_of_nvm_total_write_requests: 9237523 +[11767.280362] bdbm: #_of_nvm_total_read_requests: 4333412 +[11767.280362] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9237523 +[11767.280363] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1013034 +[11767.280363] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[11767.280364] bdbm: #_of_nvm_evict_from_nvm: 7558881 +[11767.280364] bdbm: #_of_nvm_write_amplification: 7558881 : 11451714 +[11767.280365] bdbm: +[11767.280365] bdbm: ----------------------------------------------- +[11767.280366] bdbm: ----------------------------------------------- +[11767.431023] bdbm: done +[11767.431026] bdbm: [dm_ramdrive_close] closed! +[11767.818667] bdbm: [bdbm_drv_main] bdbm_drv is closed +[11767.818670] bdbm: [bdbm_drv_main] bdbm_drv is removed +[11767.839659] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[11767.851527] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[11767.854826] bdbm: ===================================================================== +[11767.854827] bdbm: DEVICE PARAMETERS +[11767.854828] bdbm: ===================================================================== +[11767.854828] bdbm: # of channels = 8 +[11767.854829] bdbm: # of chips per channel = 16 +[11767.854829] bdbm: # of blocks per chip = 256 +[11767.854830] bdbm: # of pages per block = 128 +[11767.854830] bdbm: # of subpages per page = 1 +[11767.854831] bdbm: page main size = 4096 bytes +[11767.854831] bdbm: page oob size = 64 bytes +[11767.854832] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[11767.854832] bdbm: +[11767.854833] bdbm: ===================================================================== +[11767.854834] bdbm: RAM DISK INFO +[11767.854834] bdbm: ===================================================================== +[11767.854835] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[11769.418097] bdbm: ramssd addr = ffffc90050001000 +[11769.418098] bdbm: +[11769.418099] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[11770.980450] bdbm: *** building ptr_ramssd_data done +[11770.980573] bdbm: [dm_ramdrive_probe] probe done! +[11770.980575] bdbm: [dm_ramdrive_open] open done! +[11771.031495] bdbm: nvm cache addr = ffffc90870003000 +[11771.037280] bdbm: ========================================================== +[11771.037282] bdbm: NVM CONFIGURATION +[11771.037282] bdbm: ========================================================== +[11771.037283] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[11771.196178] bdbm: TRIM is disabled +[11771.196318] bdbm: ===================================================================== +[11771.196320] bdbm: DEVICE PARAMETERS +[11771.196320] bdbm: ===================================================================== +[11771.196321] bdbm: # of channels = 8 +[11771.196321] bdbm: # of chips per channel = 16 +[11771.196322] bdbm: # of blocks per chip = 256 +[11771.196322] bdbm: # of pages per block = 128 +[11771.196323] bdbm: # of subpages per page = 1 +[11771.196323] bdbm: page main size = 4096 bytes +[11771.196324] bdbm: page oob size = 64 bytes +[11771.196325] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[11771.196325] bdbm: +[11771.196326] bdbm: ===================================================================== +[11771.196326] bdbm: FTL CONFIGURATION +[11771.196327] bdbm: ===================================================================== +[11771.196327] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[11771.196328] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[11771.196330] bdbm: wl policy = 1 (1: none, 2: swap) +[11771.196331] bdbm: trim mode = 2 (1: enable, 2: disable) +[11771.196331] bdbm: kernel sector = 512 bytes +[11771.196332] bdbm: +[11771.196333] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[11771.216556] bdbm: llm_make_req: 0, 1 +[11771.356304] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[11771.356306] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[11775.012316] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 diff --git a/result/fio_toff_o1_n500m.rslt b/result/fio_toff_o1_n500m.rslt new file mode 100644 index 0000000..16b4166 --- /dev/null +++ b/result/fio_toff_o1_n500m.rslt @@ -0,0 +1,43 @@ +JESD219: (g=0): rw=randrw, bs=512-64K/512-64K/512-64K, ioengine=libaio, iodepth=256 +... +fio-2.14-20-gd6192-dirty +Starting 4 processes +JESD219: Laying out IO file(s) (1 file(s) / 10240MB) + +JESD219: (groupid=0, jobs=4): err= 0: pid=24178: Mon Nov 7 17:47:48 2016 + read : io=16401MB, bw=26735KB/s, iops=3502, runt=628205msec + slat (usec): min=1, max=1793.3K, avg=230.28, stdev=17151.29 + clat (usec): min=427, max=1802.6K, avg=89518.45, stdev=329429.26 + lat (usec): min=448, max=1802.6K, avg=89748.79, stdev=329826.01 + clat percentiles (usec): + | 1.00th=[ 1624], 5.00th=[ 1768], 10.00th=[ 1864], 20.00th=[ 2024], + | 30.00th=[ 2256], 40.00th=[ 2768], 50.00th=[ 3600], 60.00th=[ 4016], + | 70.00th=[ 6368], 80.00th=[10432], 90.00th=[18560], 95.00th=[1011712], + | 99.00th=[1662976], 99.50th=[1728512], 99.90th=[1761280], 99.95th=[1777664], + | 99.99th=[1794048] + write: io=24559MB, bw=40032KB/s, iops=5246, runt=628205msec + slat (usec): min=2, max=1792.9K, avg=409.22, stdev=22949.61 + clat (usec): min=384, max=1800.2K, avg=84185.33, stdev=320037.13 + lat (usec): min=427, max=1800.2K, avg=84594.62, stdev=320772.08 + clat percentiles (usec): + | 1.00th=[ 1544], 5.00th=[ 1656], 10.00th=[ 1720], 20.00th=[ 1832], + | 30.00th=[ 1992], 40.00th=[ 2512], 50.00th=[ 3408], 60.00th=[ 3728], + | 70.00th=[ 5600], 80.00th=[ 9664], 90.00th=[17024], 95.00th=[978944], + | 99.00th=[1630208], 99.50th=[1728512], 99.90th=[1761280], 99.95th=[1777664], + | 99.99th=[1794048] + lat (usec) : 500=0.01%, 750=0.01%, 1000=0.01% + lat (msec) : 2=25.77%, 4=36.87%, 10=17.30%, 20=11.48%, 50=2.30% + lat (msec) : 100=0.01%, 500=0.07%, 750=0.01%, 1000=1.20%, 2000=4.98% + cpu : usr=0.23%, sys=28.17%, ctx=127352, majf=0, minf=42 + IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% + submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% + complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1% + issued : total=r=2200210/w=3295670/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 + latency : target=0, window=0, percentile=100.00%, depth=256 + +Run status group 0 (all jobs): + READ: io=16401MB, aggrb=26734KB/s, minb=26734KB/s, maxb=26734KB/s, mint=628205msec, maxt=628205msec + WRITE: io=24559MB, aggrb=40031KB/s, minb=40031KB/s, maxb=40031KB/s, mint=628205msec, maxt=628205msec + +Disk stats (read/write): + robusta: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00% diff --git a/result/fio_ton_o1_n1g.dmesg b/result/fio_ton_o1_n1g.dmesg new file mode 100644 index 0000000..3cf22bb --- /dev/null +++ b/result/fio_ton_o1_n1g.dmesg @@ -0,0 +1,1153 @@ +[ 8830.131011] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 +[ 8843.370917] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 0, evict = 0 +[ 8843.550466] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 0, evict = 4063 +[ 8843.818379] bdbm: llm_make_req: 50000, 93 +[ 8844.108029] bdbm: llm_make_req: 100000, 57 +[ 8844.128904] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 0, evict = 104063 +[ 8844.397448] bdbm: llm_make_req: 150000, 95 +[ 8844.683416] bdbm: llm_make_req: 200000, 94 +[ 8844.704127] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 0, evict = 204063 +[ 8844.969826] bdbm: llm_make_req: 250000, 95 +[ 8845.253261] bdbm: llm_make_req: 300000, 96 +[ 8845.273820] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 0, evict = 304063 +[ 8845.545998] bdbm: llm_make_req: 350000, 94 +[ 8845.838979] bdbm: llm_make_req: 400000, 95 +[ 8845.860775] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 0, evict = 404063 +[ 8846.131540] bdbm: llm_make_req: 450000, 58 +[ 8846.422682] bdbm: llm_make_req: 500000, 94 +[ 8846.451269] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 0, evict = 504063 +[ 8846.714987] bdbm: llm_make_req: 550000, 95 +[ 8847.009012] bdbm: llm_make_req: 600000, 85 +[ 8847.037552] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 0, evict = 604063 +[ 8847.309263] bdbm: llm_make_req: 650000, 83 +[ 8847.598997] bdbm: llm_make_req: 700000, 94 +[ 8847.628977] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 0, evict = 704063 +[ 8847.896093] bdbm: llm_make_req: 750000, 96 +[ 8848.177460] bdbm: llm_make_req: 800000, 81 +[ 8848.198735] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 0, evict = 804063 +[ 8848.459702] bdbm: llm_make_req: 850000, 96 +[ 8848.743256] bdbm: llm_make_req: 900000, 95 +[ 8848.763807] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 0, evict = 904063 +[ 8849.023385] bdbm: llm_make_req: 950000, 92 +[ 8849.304259] bdbm: llm_make_req: 1000000, 94 +[ 8849.324727] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 0, evict = 1004063 +[ 8849.584272] bdbm: llm_make_req: 1050000, 93 +[ 8849.865377] bdbm: llm_make_req: 1100000, 94 +[ 8849.885878] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 0, evict = 1104063 +[ 8850.145605] bdbm: llm_make_req: 1150000, 95 +[ 8850.425714] bdbm: llm_make_req: 1200000, 94 +[ 8850.446276] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 0, evict = 1204063 +[ 8850.706625] bdbm: llm_make_req: 1250000, 95 +[ 8850.987982] bdbm: llm_make_req: 1300000, 93 +[ 8851.015706] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 0, evict = 1304063 +[ 8851.271545] bdbm: llm_make_req: 1350000, 93 +[ 8889.984765] bdbm: ----------------------------------------------- +[ 8889.984767] bdbm: < PERFORMANCE SUMMARY > +[ 8889.984768] bdbm: [0] Execution Time (us): 64.353969 +[ 8889.984768] bdbm: +[ 8889.984769] bdbm: [1] Total I/Os +[ 8889.984769] bdbm: # of page reads: 3 +[ 8889.984770] bdbm: # of page writes: 0 +[ 8889.984770] bdbm: # of block erase: 0 +[ 8889.984771] bdbm: +[ 8889.984771] bdbm: [2] Normal I/Os +[ 8889.984772] bdbm: # of page reads: 3 +[ 8889.984772] bdbm: # of page writes: 0 +[ 8889.984773] bdbm: # of page rmw reads: 0 +[ 8889.984773] bdbm: # of page rmw writes: 0 +[ 8889.984773] bdbm: +[ 8889.984774] bdbm: [3] GC I/Os +[ 8889.984774] bdbm: # of GC invocation: 0 +[ 8889.984775] bdbm: # of page reads: 0 +[ 8889.984775] bdbm: # of page writes: 0 +[ 8889.984776] bdbm: # of block erase: 0 +[ 8889.984776] bdbm: +[ 8889.984777] bdbm: [4] Meta I/Os +[ 8889.984777] bdbm: # of meta page reads: 0 +[ 8889.984777] bdbm: # of meta page writes: 0 +[ 8889.984778] bdbm: +[ 8889.984778] bdbm: [5] Elapsed Time +[ 8889.984779] bdbm: page read (us): 112 (S:0 + Q:15 + D:97) +[ 8889.984780] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[ 8889.984780] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 8889.984781] bdbm: +[ 8889.984781] bdbm: [6] Utilization (R) +[ 8889.984783] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984784] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984785] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984786] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984787] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984789] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984790] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984791] bdbm: 0 0 0 0 0 1 1 1 +[ 8889.984792] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984793] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984794] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984795] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984796] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984797] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984799] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984800] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984800] bdbm: +[ 8889.984800] bdbm: [7] Utilization (W) +[ 8889.984802] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984803] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984804] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984806] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984807] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984808] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984809] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984810] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984811] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984812] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984813] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984814] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984815] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984817] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984818] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984819] bdbm: 0 0 0 0 0 0 0 0 +[ 8889.984819] bdbm: [8] NVM I/Os +[ 8889.984820] bdbm: #_of_nvm_total_accesses: 1659366 +[ 8889.984820] bdbm: #_of_nvm_total_write_requests: 1659321 +[ 8889.984821] bdbm: #_of_nvm_total_read_requests: 45 +[ 8889.984821] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 1659321 +[ 8889.984822] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 14 +[ 8889.984822] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[ 8889.984823] bdbm: #_of_nvm_evict_from_nvm: 1363423 +[ 8889.984823] bdbm: #_of_nvm_write_amplification: 1363423 : 1363423 +[ 8889.984824] bdbm: +[ 8889.984824] bdbm: ----------------------------------------------- +[ 8889.984825] bdbm: ----------------------------------------------- +[ 8890.139162] bdbm: done +[ 8890.139165] bdbm: [dm_ramdrive_close] closed! +[ 8890.527187] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 8890.527189] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 8890.540994] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 8890.569353] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 8890.572893] bdbm: ===================================================================== +[ 8890.572894] bdbm: DEVICE PARAMETERS +[ 8890.572895] bdbm: ===================================================================== +[ 8890.572896] bdbm: # of channels = 8 +[ 8890.572896] bdbm: # of chips per channel = 16 +[ 8890.572897] bdbm: # of blocks per chip = 256 +[ 8890.572897] bdbm: # of pages per block = 128 +[ 8890.572898] bdbm: # of subpages per page = 1 +[ 8890.572898] bdbm: page main size = 4096 bytes +[ 8890.572899] bdbm: page oob size = 64 bytes +[ 8890.572899] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 8890.572900] bdbm: +[ 8890.572901] bdbm: ===================================================================== +[ 8890.572901] bdbm: RAM DISK INFO +[ 8890.572902] bdbm: ===================================================================== +[ 8890.572902] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[ 8892.105899] bdbm: ramssd addr = ffffc90050001000 +[ 8892.105901] bdbm: +[ 8892.105902] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 8893.655907] bdbm: *** building ptr_ramssd_data done +[ 8893.656160] bdbm: [dm_ramdrive_probe] probe done! +[ 8893.656162] bdbm: [dm_ramdrive_open] open done! +[ 8893.853435] bdbm: nvm cache addr = ffffc908ee51c000 +[ 8893.863269] bdbm: ========================================================== +[ 8893.863270] bdbm: NVM CONFIGURATION +[ 8893.863271] bdbm: ========================================================== +[ 8893.863272] bdbm: total size = 2147483648, nr_nvm_pages = 524288, nvm_page_size = 4096 +[ 8894.018924] bdbm: TRIM is disabled +[ 8894.019527] bdbm: ===================================================================== +[ 8894.019529] bdbm: DEVICE PARAMETERS +[ 8894.019530] bdbm: ===================================================================== +[ 8894.019530] bdbm: # of channels = 8 +[ 8894.019531] bdbm: # of chips per channel = 16 +[ 8894.019531] bdbm: # of blocks per chip = 256 +[ 8894.019532] bdbm: # of pages per block = 128 +[ 8894.019532] bdbm: # of subpages per page = 1 +[ 8894.019533] bdbm: page main size = 4096 bytes +[ 8894.019533] bdbm: page oob size = 64 bytes +[ 8894.019534] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 8894.019535] bdbm: +[ 8894.019536] bdbm: ===================================================================== +[ 8894.019536] bdbm: FTL CONFIGURATION +[ 8894.019536] bdbm: ===================================================================== +[ 8894.019537] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 8894.019538] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 8894.019538] bdbm: wl policy = 1 (1: none, 2: swap) +[ 8894.019559] bdbm: trim mode = 2 (1: enable, 2: disable) +[ 8894.019560] bdbm: kernel sector = 512 bytes +[ 8894.019560] bdbm: +[ 8894.019561] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 8894.039249] bdbm: llm_make_req: 0, 1 +[ 8894.167178] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[ 8894.167181] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 8895.613721] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 +[ 8908.847117] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 0, evict = 0 +[ 8909.015301] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 0, evict = 0 +[ 8909.139666] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 0, evict = 0 +[ 8909.237481] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 0, evict = 0 +[ 8909.536235] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 0, evict = 41919 +[ 8909.585960] bdbm: llm_make_req: 50000, 90 +[ 8909.877292] bdbm: llm_make_req: 100000, 73 +[ 8910.116623] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 0, evict = 141919 +[ 8910.168328] bdbm: llm_make_req: 150000, 89 +[ 8910.454799] bdbm: llm_make_req: 200000, 95 +[ 8910.691462] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 0, evict = 241919 +[ 8910.741681] bdbm: llm_make_req: 250000, 95 +[ 8911.025329] bdbm: llm_make_req: 300000, 95 +[ 8911.261226] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 0, evict = 341919 +[ 8911.312898] bdbm: llm_make_req: 350000, 95 +[ 8911.597752] bdbm: llm_make_req: 400000, 96 +[ 8911.833987] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 0, evict = 441919 +[ 8911.882145] bdbm: llm_make_req: 450000, 94 +[ 8912.167657] bdbm: llm_make_req: 500000, 92 +[ 8912.413212] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 0, evict = 541919 +[ 8912.453842] bdbm: llm_make_req: 550000, 95 +[ 8912.738692] bdbm: llm_make_req: 600000, 96 +[ 8912.984872] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 0, evict = 641919 +[ 8913.025602] bdbm: llm_make_req: 650000, 64 +[ 8913.310380] bdbm: llm_make_req: 700000, 88 +[ 8913.555664] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 0, evict = 741919 +[ 8913.604266] bdbm: llm_make_req: 750000, 96 +[ 8913.889523] bdbm: llm_make_req: 800000, 95 +[ 8914.132738] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 0, evict = 841919 +[ 8914.180630] bdbm: llm_make_req: 850000, 75 +[ 8914.462172] bdbm: llm_make_req: 900000, 92 +[ 8914.695461] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 0, evict = 941919 +[ 8914.743112] bdbm: llm_make_req: 950000, 93 +[ 8915.023839] bdbm: llm_make_req: 1000000, 95 +[ 8915.257602] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 0, evict = 1041919 +[ 8915.305379] bdbm: llm_make_req: 1050000, 93 +[ 8915.596478] bdbm: llm_make_req: 1100000, 93 +[ 8915.831798] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 0, evict = 1141919 +[ 8915.879954] bdbm: llm_make_req: 1150000, 95 +[ 8916.171043] bdbm: llm_make_req: 1200000, 87 +[ 8916.422763] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 0, evict = 1241919 +[ 8916.465536] bdbm: llm_make_req: 1250000, 95 +[ 8916.759500] bdbm: llm_make_req: 1300000, 95 +[ 8917.010038] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 0, evict = 1341919 +[ 8917.053147] bdbm: llm_make_req: 1350000, 87 +[ 8917.344929] bdbm: llm_make_req: 1400000, 94 +[ 8917.593602] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 0, evict = 1441919 +[ 8917.635156] bdbm: llm_make_req: 1450000, 95 +[ 8917.933665] bdbm: llm_make_req: 1500000, 31 +[ 8918.183715] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 0, evict = 1541919 +[ 8918.235465] bdbm: llm_make_req: 1550000, 26 +[ 8918.531712] bdbm: llm_make_req: 1600000, 94 +[ 8918.773923] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 0, evict = 1641919 +[ 8918.823329] bdbm: llm_make_req: 1650000, 63 +[ 8919.123879] bdbm: llm_make_req: 1700000, 87 +[ 8919.373996] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 0, evict = 1741919 +[ 8919.425572] bdbm: llm_make_req: 1750000, 87 +[ 8919.725679] bdbm: llm_make_req: 1800000, 93 +[ 8919.974062] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 0, evict = 1841919 +[ 8920.025007] bdbm: llm_make_req: 1850000, 71 +[ 8920.324744] bdbm: llm_make_req: 1900000, 93 +[ 8920.580184] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 0, evict = 1941919 +[ 8920.623611] bdbm: llm_make_req: 1950000, 96 +[ 8920.923972] bdbm: llm_make_req: 2000000, 74 +[ 8921.184907] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 0, evict = 2041919 +[ 8921.229059] bdbm: llm_make_req: 2050000, 94 +[ 8921.529464] bdbm: llm_make_req: 2100000, 95 +[ 8921.786584] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 0, evict = 2141919 +[ 8921.829745] bdbm: llm_make_req: 2150000, 71 +[ 8923.030408] bdbm: llm_make_req: 2200000, 82 +[ 8923.210888] bdbm: nvm: total access = 2800000, total read = 20465, read hit = 1763, total_write = 2779534, write hit = 2779534, hit = 0, evict = 2219090 +[ 8923.272347] bdbm: llm_make_req: 2250000, 78 +[ 8923.512087] bdbm: llm_make_req: 2300000, 81 +[ 8923.621014] bdbm: nvm: total access = 2900000, total read = 60295, read hit = 8010, total_write = 2839704, write hit = 2839704, hit = 0, evict = 2269733 +[ 8923.766647] bdbm: llm_make_req: 2350000, 86 +[ 8924.006103] bdbm: nvm: total access = 3000000, total read = 100250, read hit = 18200, total_write = 2899749, write hit = 2899749, hit = 0, evict = 2315021 +[ 8924.020469] bdbm: llm_make_req: 2400000, 67 +[ 8924.286584] bdbm: llm_make_req: 2450000, 47 +[ 8924.365536] bdbm: nvm: total access = 3100000, total read = 140260, read hit = 31312, total_write = 2959739, write hit = 2959739, hit = 0, evict = 2354996 +[ 8924.564399] bdbm: llm_make_req: 2500000, 78 +[ 8924.705322] bdbm: nvm: total access = 3200000, total read = 180506, read hit = 47064, total_write = 3019493, write hit = 3019493, hit = 0, evict = 2391657 +[ 8924.850314] bdbm: llm_make_req: 2550000, 57 +[ 8925.041971] bdbm: nvm: total access = 3300000, total read = 220924, read hit = 64824, total_write = 3079075, write hit = 3079075, hit = 0, evict = 2425197 +[ 8925.158204] bdbm: llm_make_req: 2600000, 48 +[ 8925.361273] bdbm: nvm: total access = 3400000, total read = 261263, read hit = 84161, total_write = 3138736, write hit = 3138736, hit = 0, evict = 2456088 +[ 8925.469115] bdbm: llm_make_req: 2650000, 57 +[ 8925.677091] bdbm: nvm: total access = 3500000, total read = 301914, read hit = 104786, total_write = 3198085, write hit = 3198085, hit = 0, evict = 2484767 +[ 8925.797946] bdbm: llm_make_req: 2700000, 67 +[ 8925.982823] bdbm: nvm: total access = 3600000, total read = 342801, read hit = 127008, total_write = 3257198, write hit = 3257198, hit = 0, evict = 2512078 +[ 8926.134004] bdbm: llm_make_req: 2750000, 48 +[ 8926.285018] bdbm: nvm: total access = 3700000, total read = 382841, read hit = 149510, total_write = 3317158, write hit = 3317158, hit = 0, evict = 2538300 +[ 8926.482140] bdbm: llm_make_req: 2800000, 38 +[ 8926.580766] bdbm: nvm: total access = 3800000, total read = 422423, read hit = 172556, total_write = 3377576, write hit = 3377576, hit = 0, evict = 2563511 +[ 8926.851926] bdbm: llm_make_req: 2850000, 54 +[ 8926.874466] bdbm: nvm: total access = 3900000, total read = 462866, read hit = 196991, total_write = 3437133, write hit = 3437133, hit = 0, evict = 2587225 +[ 8927.161921] bdbm: nvm: total access = 4000000, total read = 503002, read hit = 221543, total_write = 3496997, write hit = 3496997, hit = 0, evict = 2610115 +[ 8927.222032] bdbm: llm_make_req: 2900000, 60 +[ 8927.449587] bdbm: nvm: total access = 4100000, total read = 542809, read hit = 246683, total_write = 3557190, write hit = 3557190, hit = 0, evict = 2632909 +[ 8927.612614] bdbm: llm_make_req: 2950000, 48 +[ 8927.726868] bdbm: nvm: total access = 4200000, total read = 583076, read hit = 272634, total_write = 3616923, write hit = 3616923, hit = 0, evict = 2654294 +[ 8928.006837] bdbm: llm_make_req: 3000000, 42 +[ 8928.006992] bdbm: nvm: total access = 4300000, total read = 623766, read hit = 298782, total_write = 3676233, write hit = 3676233, hit = 0, evict = 2675035 +[ 8928.282920] bdbm: nvm: total access = 4400000, total read = 663641, read hit = 325481, total_write = 3736358, write hit = 3736358, hit = 0, evict = 2695134 +[ 8928.420138] bdbm: llm_make_req: 3050000, 48 +[ 8928.553056] bdbm: nvm: total access = 4500000, total read = 703692, read hit = 351982, total_write = 3796307, write hit = 3796307, hit = 0, evict = 2714762 +[ 8928.829215] bdbm: llm_make_req: 3100000, 30 +[ 8928.836636] bdbm: nvm: total access = 4600000, total read = 743759, read hit = 377899, total_write = 3856240, write hit = 3856240, hit = 0, evict = 2735122 +[ 8929.125383] bdbm: nvm: total access = 4700000, total read = 783979, read hit = 403104, total_write = 3916020, write hit = 3916020, hit = 0, evict = 2756879 +[ 8929.212089] bdbm: llm_make_req: 3150000, 45 +[ 8929.421477] bdbm: nvm: total access = 4800000, total read = 823993, read hit = 427054, total_write = 3976006, write hit = 3976006, hit = 0, evict = 2781057 +[ 8929.577876] bdbm: llm_make_req: 3200000, 51 +[ 8929.720321] bdbm: nvm: total access = 4900000, total read = 865711, read hit = 451105, total_write = 4034288, write hit = 4034288, hit = 0, evict = 2805493 +[ 8929.928965] bdbm: llm_make_req: 3250000, 61 +[ 8930.026475] bdbm: nvm: total access = 5000000, total read = 905623, read hit = 473605, total_write = 4094376, write hit = 4094376, hit = 0, evict = 2831582 +[ 8930.282549] bdbm: llm_make_req: 3300000, 46 +[ 8930.338543] bdbm: nvm: total access = 5100000, total read = 945949, read hit = 495866, total_write = 4154050, write hit = 4154050, hit = 0, evict = 2858484 +[ 8930.623577] bdbm: llm_make_req: 3350000, 54 +[ 8930.648507] bdbm: nvm: total access = 5200000, total read = 986512, read hit = 518226, total_write = 4213487, write hit = 4213487, hit = 0, evict = 2885505 +[ 8930.968358] bdbm: llm_make_req: 3400000, 45 +[ 8930.970685] bdbm: nvm: total access = 5300000, total read = 1026662, read hit = 539785, total_write = 4273337, write hit = 4273337, hit = 0, evict = 2913496 +[ 8931.285464] bdbm: nvm: total access = 5400000, total read = 1066383, read hit = 560996, total_write = 4333616, write hit = 4333616, hit = 0, evict = 2941464 +[ 8931.306629] bdbm: llm_make_req: 3450000, 58 +[ 8931.597665] bdbm: nvm: total access = 5500000, total read = 1107329, read hit = 582985, total_write = 4392670, write hit = 4392670, hit = 0, evict = 2968653 +[ 8931.636929] bdbm: llm_make_req: 3500000, 53 +[ 8931.893049] bdbm: nvm: total access = 5600000, total read = 1146706, read hit = 604292, total_write = 4453293, write hit = 4453293, hit = 0, evict = 2996416 +[ 8931.974111] bdbm: llm_make_req: 3550000, 50 +[ 8932.239936] bdbm: nvm: total access = 5700000, total read = 1186001, read hit = 625797, total_write = 4513998, write hit = 4513998, hit = 0, evict = 3023940 +[ 8932.350115] bdbm: llm_make_req: 3600000, 61 +[ 8932.555214] bdbm: nvm: total access = 5800000, total read = 1225488, read hit = 647270, total_write = 4574511, write hit = 4574511, hit = 0, evict = 3051123 +[ 8932.708427] bdbm: llm_make_req: 3650000, 62 +[ 8932.875347] bdbm: nvm: total access = 5900000, total read = 1266011, read hit = 669911, total_write = 4633988, write hit = 4633988, hit = 0, evict = 3077367 +[ 8933.074431] bdbm: llm_make_req: 3700000, 50 +[ 8933.184906] bdbm: nvm: total access = 6000000, total read = 1306231, read hit = 692959, total_write = 4693768, write hit = 4693768, hit = 0, evict = 3102903 +[ 8933.420680] bdbm: llm_make_req: 3750000, 64 +[ 8933.474439] bdbm: nvm: total access = 6100000, total read = 1346399, read hit = 716086, total_write = 4753600, write hit = 4753600, hit = 0, evict = 3128170 +[ 8933.767550] bdbm: nvm: total access = 6200000, total read = 1386993, read hit = 739973, total_write = 4813006, write hit = 4813006, hit = 0, evict = 3152492 +[ 8933.770598] bdbm: llm_make_req: 3800000, 58 +[ 8934.061988] bdbm: nvm: total access = 6300000, total read = 1427101, read hit = 764012, total_write = 4872898, write hit = 4872898, hit = 0, evict = 3176502 +[ 8934.140444] bdbm: llm_make_req: 3850000, 56 +[ 8934.361091] bdbm: nvm: total access = 6400000, total read = 1467096, read hit = 788189, total_write = 4932903, write hit = 4932903, hit = 0, evict = 3199826 +[ 8934.514082] bdbm: llm_make_req: 3900000, 65 +[ 8934.681490] bdbm: nvm: total access = 6500000, total read = 1507105, read hit = 812435, total_write = 4992894, write hit = 4992894, hit = 0, evict = 3222749 +[ 8934.934562] bdbm: llm_make_req: 3950000, 52 +[ 8934.986038] bdbm: nvm: total access = 6600000, total read = 1547551, read hit = 837168, total_write = 5052448, write hit = 5052448, hit = 0, evict = 3245413 +[ 8935.278005] bdbm: nvm: total access = 6700000, total read = 1587368, read hit = 861853, total_write = 5112631, write hit = 5112631, hit = 0, evict = 3268148 +[ 8935.335229] bdbm: llm_make_req: 4000000, 39 +[ 8935.580008] bdbm: nvm: total access = 6800000, total read = 1627422, read hit = 886797, total_write = 5172577, write hit = 5172577, hit = 0, evict = 3290637 +[ 8935.744304] bdbm: llm_make_req: 4050000, 44 +[ 8935.897431] bdbm: nvm: total access = 6900000, total read = 1667094, read hit = 911120, total_write = 5232905, write hit = 5232905, hit = 0, evict = 3313546 +[ 8936.135918] bdbm: llm_make_req: 4100000, 56 +[ 8936.203518] bdbm: nvm: total access = 7000000, total read = 1707249, read hit = 935387, total_write = 5292750, write hit = 5292750, hit = 0, evict = 3337402 +[ 8936.496721] bdbm: nvm: total access = 7100000, total read = 1746824, read hit = 958900, total_write = 5353175, write hit = 5353175, hit = 0, evict = 3362010 +[ 8936.497301] bdbm: llm_make_req: 4150000, 38 +[ 8936.821970] bdbm: nvm: total access = 7200000, total read = 1786639, read hit = 982272, total_write = 5413360, write hit = 5413360, hit = 0, evict = 3386953 +[ 8936.888571] bdbm: llm_make_req: 4200000, 70 +[ 8937.117530] bdbm: nvm: total access = 7300000, total read = 1827027, read hit = 1005632, total_write = 5472972, write hit = 5472972, hit = 0, evict = 3411668 +[ 8937.237137] bdbm: llm_make_req: 4250000, 55 +[ 8937.431821] bdbm: nvm: total access = 7400000, total read = 1866859, read hit = 1028487, total_write = 5533140, write hit = 5533140, hit = 0, evict = 3437584 +[ 8937.597487] bdbm: llm_make_req: 4300000, 56 +[ 8937.736597] bdbm: nvm: total access = 7500000, total read = 1906563, read hit = 1051106, total_write = 5593436, write hit = 5593436, hit = 0, evict = 3463560 +[ 8937.961978] bdbm: llm_make_req: 4350000, 56 +[ 8938.050031] bdbm: nvm: total access = 7600000, total read = 1946431, read hit = 1073708, total_write = 5653568, write hit = 5653568, hit = 0, evict = 3490645 +[ 8938.299148] bdbm: llm_make_req: 4400000, 47 +[ 8938.358991] bdbm: nvm: total access = 7700000, total read = 1986308, read hit = 1095875, total_write = 5713691, write hit = 5713691, hit = 0, evict = 3517627 +[ 8938.662358] bdbm: llm_make_req: 4450000, 51 +[ 8938.682363] bdbm: nvm: total access = 7800000, total read = 2026234, read hit = 1118174, total_write = 5773765, write hit = 5773765, hit = 0, evict = 3544671 +[ 8938.991775] bdbm: nvm: total access = 7900000, total read = 2065921, read hit = 1140168, total_write = 5834078, write hit = 5834078, hit = 0, evict = 3571814 +[ 8939.007495] bdbm: llm_make_req: 4500000, 36 +[ 8939.319111] bdbm: nvm: total access = 8000000, total read = 2106548, read hit = 1162270, total_write = 5893451, write hit = 5893451, hit = 0, evict = 3598704 +[ 8939.380678] bdbm: llm_make_req: 4550000, 70 +[ 8939.633370] bdbm: nvm: total access = 8100000, total read = 2146666, read hit = 1184775, total_write = 5953333, write hit = 5953333, hit = 0, evict = 3625583 +[ 8939.719822] bdbm: llm_make_req: 4600000, 52 +[ 8939.973472] bdbm: nvm: total access = 8200000, total read = 2186848, read hit = 1207346, total_write = 6013151, write hit = 6013151, hit = 0, evict = 3651874 +[ 8940.103090] bdbm: llm_make_req: 4650000, 54 +[ 8940.299259] bdbm: nvm: total access = 8300000, total read = 2227457, read hit = 1230184, total_write = 6072542, write hit = 6072542, hit = 0, evict = 3677527 +[ 8940.473605] bdbm: llm_make_req: 4700000, 39 +[ 8940.612379] bdbm: nvm: total access = 8400000, total read = 2267140, read hit = 1252792, total_write = 6132859, write hit = 6132859, hit = 0, evict = 3703462 +[ 8940.867341] bdbm: llm_make_req: 4750000, 70 +[ 8940.947224] bdbm: nvm: total access = 8500000, total read = 2306958, read hit = 1275729, total_write = 6193041, write hit = 6193041, hit = 0, evict = 3728931 +[ 8941.227297] bdbm: llm_make_req: 4800000, 52 +[ 8941.240630] bdbm: nvm: total access = 8600000, total read = 2347249, read hit = 1299485, total_write = 6252750, write hit = 6252750, hit = 0, evict = 3753866 +[ 8941.539009] bdbm: nvm: total access = 8700000, total read = 2387641, read hit = 1323065, total_write = 6312358, write hit = 6312358, hit = 0, evict = 3778494 +[ 8941.595183] bdbm: llm_make_req: 4850000, 35 +[ 8941.848685] bdbm: nvm: total access = 8800000, total read = 2427724, read hit = 1347173, total_write = 6372275, write hit = 6372275, hit = 0, evict = 3802572 +[ 8941.992918] bdbm: llm_make_req: 4900000, 61 +[ 8942.155038] bdbm: nvm: total access = 8900000, total read = 2467615, read hit = 1371261, total_write = 6432384, write hit = 6432384, hit = 0, evict = 3826670 +[ 8942.353897] bdbm: llm_make_req: 4950000, 60 +[ 8942.455257] bdbm: nvm: total access = 9000000, total read = 2507343, read hit = 1395366, total_write = 6492656, write hit = 6492656, hit = 0, evict = 3850499 +[ 8942.743803] bdbm: llm_make_req: 5000000, 45 +[ 8942.758167] bdbm: nvm: total access = 9100000, total read = 2547416, read hit = 1419567, total_write = 6552583, write hit = 6552583, hit = 0, evict = 3874194 +[ 8943.070973] bdbm: nvm: total access = 9200000, total read = 2587817, read hit = 1444010, total_write = 6612182, write hit = 6612182, hit = 0, evict = 3897916 +[ 8943.129246] bdbm: llm_make_req: 5050000, 45 +[ 8943.390340] bdbm: nvm: total access = 9300000, total read = 2627520, read hit = 1467771, total_write = 6672479, write hit = 6672479, hit = 0, evict = 3922159 +[ 8943.526327] bdbm: llm_make_req: 5100000, 42 +[ 8943.692967] bdbm: nvm: total access = 9400000, total read = 2667680, read hit = 1492024, total_write = 6732319, write hit = 6732319, hit = 0, evict = 3946177 +[ 8943.901169] bdbm: llm_make_req: 5150000, 56 +[ 8943.997870] bdbm: nvm: total access = 9500000, total read = 2707473, read hit = 1515393, total_write = 6792526, write hit = 6792526, hit = 0, evict = 3970958 +[ 8944.247720] bdbm: llm_make_req: 5200000, 57 +[ 8944.283139] bdbm: nvm: total access = 9600000, total read = 2747221, read hit = 1538473, total_write = 6852778, write hit = 6852778, hit = 0, evict = 3995980 +[ 8944.601474] bdbm: nvm: total access = 9700000, total read = 2786769, read hit = 1561493, total_write = 6913230, write hit = 6913230, hit = 0, evict = 4021181 +[ 8944.633379] bdbm: llm_make_req: 5250000, 60 +[ 8944.914745] bdbm: nvm: total access = 9800000, total read = 2826124, read hit = 1584200, total_write = 6973875, write hit = 6973875, hit = 0, evict = 4046786 +[ 8944.991440] bdbm: llm_make_req: 5300000, 57 +[ 8945.609039] bdbm: nvm: total access = 9900000, total read = 2866408, read hit = 1607262, total_write = 7033591, write hit = 7033591, hit = 0, evict = 4071934 +[ 8946.105675] bdbm: llm_make_req: 5350000, 48 +[ 8946.628730] bdbm: nvm: total access = 10000000, total read = 2906622, read hit = 1630282, total_write = 7093377, write hit = 7093377, hit = 0, evict = 4097978 +[ 8947.133830] bdbm: llm_make_req: 5400000, 55 +[ 8947.252692] bdbm: nvm: total access = 10100000, total read = 2947445, read hit = 1653629, total_write = 7152554, write hit = 7152554, hit = 0, evict = 4123266 +[ 8947.863958] bdbm: llm_make_req: 5450000, 20 +[ 8948.286308] bdbm: nvm: total access = 10200000, total read = 2987236, read hit = 1676392, total_write = 7212763, write hit = 7212763, hit = 0, evict = 4149126 +[ 8948.939711] bdbm: llm_make_req: 5500000, 57 +[ 8948.967930] bdbm: nvm: total access = 10300000, total read = 3027556, read hit = 1699262, total_write = 7272443, write hit = 7272443, hit = 0, evict = 4174750 +[ 8951.506670] bdbm: llm_make_req: 5550000, 58 +[ 8952.525875] bdbm: nvm: total access = 10400000, total read = 3066556, read hit = 1721341, total_write = 7333443, write hit = 7333443, hit = 0, evict = 4201009 +[ 8952.809625] bdbm: llm_make_req: 5600000, 96 +[ 8954.459437] bdbm: nvm: total access = 10500000, total read = 3107160, read hit = 1744437, total_write = 7392839, write hit = 7392839, hit = 0, evict = 4226906 +[ 8954.460711] bdbm: llm_make_req: 5650000, 74 +[ 8956.442032] bdbm: llm_make_req: 5700000, 42 +[ 8956.540814] bdbm: nvm: total access = 10600000, total read = 3147611, read hit = 1767457, total_write = 7452388, write hit = 7452388, hit = 0, evict = 4252350 +[ 8958.034041] bdbm: llm_make_req: 5750000, 96 +[ 8959.499159] bdbm: nvm: total access = 10700000, total read = 3187367, read hit = 1790425, total_write = 7512632, write hit = 7512632, hit = 0, evict = 4278294 +[ 8959.603108] bdbm: llm_make_req: 5800000, 47 +[ 8961.721181] bdbm: nvm: total access = 10800000, total read = 3228374, read hit = 1813949, total_write = 7571625, write hit = 7571625, hit = 0, evict = 4303401 +[ 8961.721717] bdbm: llm_make_req: 5850000, 51 +[ 8963.564276] bdbm: llm_make_req: 5900000, 96 +[ 8964.017091] bdbm: nvm: total access = 10900000, total read = 3267991, read hit = 1836365, total_write = 7632008, write hit = 7632008, hit = 0, evict = 4328811 +[ 8965.272280] bdbm: llm_make_req: 5950000, 96 +[ 8967.053537] bdbm: nvm: total access = 11000000, total read = 3307059, read hit = 1859182, total_write = 7692940, write hit = 7692940, hit = 0, evict = 4354602 +[ 8967.142943] bdbm: llm_make_req: 6000000, 50 +[ 8969.283616] bdbm: llm_make_req: 6050000, 52 +[ 8969.295893] bdbm: nvm: total access = 11100000, total read = 3346728, read hit = 1882446, total_write = 7753271, write hit = 7753271, hit = 0, evict = 4379478 +[ 8971.119179] bdbm: llm_make_req: 6100000, 96 +[ 8971.615761] bdbm: nvm: total access = 11200000, total read = 3386971, read hit = 1906193, total_write = 7813028, write hit = 7813028, hit = 0, evict = 4404087 +[ 8972.752230] bdbm: llm_make_req: 6150000, 57 +[ 8974.842373] bdbm: nvm: total access = 11300000, total read = 3427392, read hit = 1930380, total_write = 7872607, write hit = 7872607, hit = 0, evict = 4428460 +[ 8974.880346] bdbm: llm_make_req: 6200000, 53 +[ 8976.855218] bdbm: llm_make_req: 6250000, 96 +[ 8977.276065] bdbm: nvm: total access = 11400000, total read = 3467055, read hit = 1954184, total_write = 7932944, write hit = 7932944, hit = 0, evict = 4452718 +[ 8978.626470] bdbm: llm_make_req: 6300000, 96 +[ 8979.800654] bdbm: nvm: total access = 11500000, total read = 3507168, read hit = 1978083, total_write = 7992831, write hit = 7992831, hit = 0, evict = 4477561 +[ 8980.936561] bdbm: llm_make_req: 6350000, 78 +[ 8982.899243] bdbm: llm_make_req: 6400000, 96 +[ 8983.318906] bdbm: nvm: total access = 11600000, total read = 3547377, read hit = 2001983, total_write = 8052622, write hit = 8052622, hit = 0, evict = 4501898 +[ 8984.771286] bdbm: llm_make_req: 6450000, 96 +[ 8985.741103] bdbm: nvm: total access = 11700000, total read = 3587178, read hit = 2025915, total_write = 8112821, write hit = 8112821, hit = 0, evict = 4526064 +[ 8986.961634] bdbm: llm_make_req: 6500000, 58 +[ 8988.939261] bdbm: llm_make_req: 6550000, 96 +[ 8989.376542] bdbm: nvm: total access = 11800000, total read = 3627177, read hit = 2049816, total_write = 8172822, write hit = 8172822, hit = 0, evict = 4550764 +[ 8991.091415] bdbm: llm_make_req: 6600000, 96 +[ 8993.265437] bdbm: nvm: total access = 11900000, total read = 3667191, read hit = 2073090, total_write = 8232808, write hit = 8232808, hit = 0, evict = 4575259 +[ 8993.283064] bdbm: llm_make_req: 6650000, 41 +[ 8995.388456] bdbm: llm_make_req: 6700000, 96 +[ 8997.031346] bdbm: nvm: total access = 12000000, total read = 3706912, read hit = 2096472, total_write = 8293087, write hit = 8293087, hit = 0, evict = 4599496 +[ 8997.483021] bdbm: llm_make_req: 6750000, 96 +[ 8999.727290] bdbm: llm_make_req: 6800000, 54 +[ 9001.158671] bdbm: nvm: total access = 12100000, total read = 3747045, read hit = 2119819, total_write = 8352954, write hit = 8352954, hit = 0, evict = 4624254 +[ 9002.155136] bdbm: llm_make_req: 6850000, 96 +[ 9004.268598] bdbm: llm_make_req: 6900000, 96 +[ 9005.309351] bdbm: nvm: total access = 12200000, total read = 3786606, read hit = 2142831, total_write = 8413393, write hit = 8413393, hit = 0, evict = 4649423 +[ 9006.729410] bdbm: llm_make_req: 6950000, 54 +[ 9009.175622] bdbm: llm_make_req: 7000000, 96 +[ 9009.608724] bdbm: nvm: total access = 12300000, total read = 3826845, read hit = 2166194, total_write = 8473154, write hit = 8473154, hit = 0, evict = 4674826 +[ 9011.179963] bdbm: llm_make_req: 7050000, 96 +[ 9013.909754] bdbm: llm_make_req: 7100000, 63 +[ 9015.372592] bdbm: nvm: total access = 12400000, total read = 3866338, read hit = 2189127, total_write = 8533661, write hit = 8533661, hit = 0, evict = 4700452 +[ 9016.461477] bdbm: llm_make_req: 7150000, 96 +[ 9018.446680] bdbm: llm_make_req: 7200000, 50 +[ 9020.005795] bdbm: nvm: total access = 12500000, total read = 3906856, read hit = 2212487, total_write = 8593143, write hit = 8593143, hit = 0, evict = 4725947 +[ 9021.075857] bdbm: llm_make_req: 7250000, 96 +[ 9023.612404] bdbm: llm_make_req: 7300000, 96 +[ 9025.941957] bdbm: llm_make_req: 7350000, 50 +[ 9025.959920] bdbm: nvm: total access = 12600000, total read = 3946847, read hit = 2235661, total_write = 8653152, write hit = 8653152, hit = 0, evict = 4751584 +[ 9028.557662] bdbm: llm_make_req: 7400000, 96 +[ 9030.798488] bdbm: llm_make_req: 7450000, 96 +[ 9032.020791] bdbm: nvm: total access = 12700000, total read = 3986521, read hit = 2258414, total_write = 8713478, write hit = 8713478, hit = 0, evict = 4777495 +[ 9033.501485] bdbm: llm_make_req: 7500000, 66 +[ 9036.088136] bdbm: llm_make_req: 7550000, 96 +[ 9038.063412] bdbm: nvm: total access = 12800000, total read = 4026506, read hit = 2281043, total_write = 8773493, write hit = 8773493, hit = 0, evict = 4803410 +[ 9038.068012] bdbm: llm_make_req: 7600000, 83 +[ 9040.749659] bdbm: llm_make_req: 7650000, 96 +[ 9043.418529] bdbm: llm_make_req: 7700000, 96 +[ 9044.270092] bdbm: nvm: total access = 12900000, total read = 4066660, read hit = 2304395, total_write = 8833339, write hit = 8833339, hit = 0, evict = 4828631 +[ 9045.761531] bdbm: llm_make_req: 7750000, 47 +[ 9048.421866] bdbm: llm_make_req: 7800000, 96 +[ 9050.702525] bdbm: llm_make_req: 7850000, 96 +[ 9051.874246] bdbm: nvm: total access = 13000000, total read = 4106626, read hit = 2327490, total_write = 8893373, write hit = 8893373, hit = 0, evict = 4854276 +[ 9053.389846] bdbm: llm_make_req: 7900000, 67 +[ 9055.959381] bdbm: llm_make_req: 7950000, 96 +[ 9057.929286] bdbm: nvm: total access = 13100000, total read = 4146696, read hit = 2350394, total_write = 8953303, write hit = 8953303, hit = 0, evict = 4879761 +[ 9057.976666] bdbm: llm_make_req: 8000000, 65 +[ 9060.577154] bdbm: llm_make_req: 8050000, 95 +[ 9063.186410] bdbm: llm_make_req: 8100000, 96 +[ 9064.038429] bdbm: nvm: total access = 13200000, total read = 4186388, read hit = 2373295, total_write = 9013611, write hit = 9013611, hit = 0, evict = 4905530 +[ 9065.614898] bdbm: llm_make_req: 8150000, 88 +[ 9068.265672] bdbm: llm_make_req: 8200000, 95 +[ 9070.202953] bdbm: nvm: total access = 13300000, total read = 4225707, read hit = 2395984, total_write = 9074292, write hit = 9074292, hit = 0, evict = 4931484 +[ 9070.522650] bdbm: llm_make_req: 8250000, 96 +[ 9073.267709] bdbm: llm_make_req: 8300000, 48 +[ 9075.926034] bdbm: llm_make_req: 8350000, 96 +[ 9076.356937] bdbm: nvm: total access = 13400000, total read = 4265720, read hit = 2419066, total_write = 9134279, write hit = 9134279, hit = 0, evict = 4956776 +[ 9077.906550] bdbm: llm_make_req: 8400000, 61 +[ 9080.468664] bdbm: llm_make_req: 8450000, 96 +[ 9082.391498] bdbm: nvm: total access = 13500000, total read = 4306530, read hit = 2442475, total_write = 9193469, write hit = 9193469, hit = 0, evict = 4981488 +[ 9082.990263] bdbm: llm_make_req: 8500000, 96 +[ 9085.429817] bdbm: llm_make_req: 8550000, 30 +[ 9133.351119] bdbm: ----------------------------------------------- +[ 9133.351121] bdbm: < PERFORMANCE SUMMARY > +[ 9133.351122] bdbm: [0] Execution Time (us): 239.321613 +[ 9133.351122] bdbm: +[ 9133.351123] bdbm: [1] Total I/Os +[ 9133.351123] bdbm: # of page reads: 2720045 +[ 9133.351124] bdbm: # of page writes: 844318 +[ 9133.351124] bdbm: # of block erase: 13952 +[ 9133.351125] bdbm: +[ 9133.351125] bdbm: [2] Normal I/Os +[ 9133.351126] bdbm: # of page reads: 1875830 +[ 9133.351126] bdbm: # of page writes: 0 +[ 9133.351127] bdbm: # of page rmw reads: 0 +[ 9133.351127] bdbm: # of page rmw writes: 0 +[ 9133.351128] bdbm: +[ 9133.351128] bdbm: [3] GC I/Os +[ 9133.351129] bdbm: # of GC invocation: 0 +[ 9133.351129] bdbm: # of page reads: 844215 +[ 9133.351130] bdbm: # of page writes: 844318 +[ 9133.351130] bdbm: # of block erase: 13952 +[ 9133.351130] bdbm: +[ 9133.351131] bdbm: [4] Meta I/Os +[ 9133.351131] bdbm: # of meta page reads: 0 +[ 9133.351132] bdbm: # of meta page writes: 0 +[ 9133.351132] bdbm: +[ 9133.351133] bdbm: [5] Elapsed Time +[ 9133.351133] bdbm: page read (us): 93 (S:0 + Q:0 + D:93) +[ 9133.351134] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[ 9133.351135] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 9133.351135] bdbm: +[ 9133.351135] bdbm: [6] Utilization (R) +[ 9133.351137] bdbm: 21298 21314 21159 20996 21181 21210 21398 21396 +[ 9133.351138] bdbm: 20921 21294 21102 21016 21247 21197 21409 21259 +[ 9133.351140] bdbm: 21267 21475 21249 21338 21395 21546 21465 21358 +[ 9133.351141] bdbm: 21214 21284 21301 21483 21178 21276 21055 21464 +[ 9133.351142] bdbm: 21295 21389 21300 21397 21086 21303 21130 20914 +[ 9133.351143] bdbm: 20950 21132 21114 21282 21141 21226 21332 21224 +[ 9133.351144] bdbm: 21451 21535 21450 21408 21481 21279 21458 21444 +[ 9133.351145] bdbm: 21396 21572 21376 21313 21238 21096 21183 21090 +[ 9133.351146] bdbm: 21074 20955 21255 21235 21118 21455 21192 21160 +[ 9133.351148] bdbm: 21175 21034 21099 21293 21092 21186 21220 21250 +[ 9133.351149] bdbm: 21202 21073 21199 21074 21239 21169 21155 21266 +[ 9133.351150] bdbm: 21086 20957 21120 21325 21459 21357 21363 21211 +[ 9133.351151] bdbm: 21223 21207 21068 21260 21066 21292 21043 21208 +[ 9133.351152] bdbm: 21243 21444 21114 21190 21291 21273 20979 21081 +[ 9133.351153] bdbm: 21195 21306 21224 21385 21016 21283 21285 21196 +[ 9133.351154] bdbm: 21545 21308 21093 21226 21566 21387 21495 21775 +[ 9133.351155] bdbm: +[ 9133.351155] bdbm: [7] Utilization (W) +[ 9133.351157] bdbm: 6598 6612 6623 6625 6626 6631 6631 6636 +[ 9133.351158] bdbm: 6636 6637 6638 6639 6637 6635 6634 6635 +[ 9133.351159] bdbm: 6635 6634 6634 6634 6634 6632 6631 6631 +[ 9133.351160] bdbm: 6628 6628 6627 6627 6627 6626 6626 6625 +[ 9133.351161] bdbm: 6625 6623 6623 6623 6621 6620 6619 6618 +[ 9133.351162] bdbm: 6618 6617 6616 6616 6615 6614 6614 6613 +[ 9133.351164] bdbm: 6611 6611 6607 6607 6606 6604 6604 6603 +[ 9133.351165] bdbm: 6602 6602 6602 6600 6599 6599 6599 6599 +[ 9133.351166] bdbm: 6597 6596 6595 6595 6595 6594 6593 6592 +[ 9133.351167] bdbm: 6592 6591 6590 6590 6589 6588 6588 6587 +[ 9133.351168] bdbm: 6587 6586 6584 6583 6582 6579 6579 6577 +[ 9133.351169] bdbm: 6577 6577 6577 6574 6574 6572 6571 6571 +[ 9133.351170] bdbm: 6569 6569 6568 6568 6568 6568 6568 6567 +[ 9133.351172] bdbm: 6566 6566 6565 6563 6563 6562 6561 6561 +[ 9133.351173] bdbm: 6560 6560 6560 6560 6556 6554 6553 6552 +[ 9133.351174] bdbm: 6551 6550 6550 6549 6548 6547 6546 6546 +[ 9133.351174] bdbm: [8] NVM I/Os +[ 9133.351175] bdbm: #_of_nvm_total_accesses: 13570606 +[ 9133.351175] bdbm: #_of_nvm_total_write_requests: 9236219 +[ 9133.351176] bdbm: #_of_nvm_total_read_requests: 4334387 +[ 9133.351176] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9236219 +[ 9133.351177] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 2458529 +[ 9133.351177] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[ 9133.351178] bdbm: #_of_nvm_evict_from_nvm: 4999484 +[ 9133.351178] bdbm: #_of_nvm_write_amplification: 4999484 : 5843802 +[ 9133.351179] bdbm: +[ 9133.351179] bdbm: ----------------------------------------------- +[ 9133.351180] bdbm: ----------------------------------------------- +[ 9133.535646] bdbm: done +[ 9133.535648] bdbm: [dm_ramdrive_close] closed! +[ 9133.923059] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 9133.923061] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 9133.939351] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 9133.955538] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 9133.959151] bdbm: ===================================================================== +[ 9133.959153] bdbm: DEVICE PARAMETERS +[ 9133.959153] bdbm: ===================================================================== +[ 9133.959154] bdbm: # of channels = 8 +[ 9133.959154] bdbm: # of chips per channel = 16 +[ 9133.959155] bdbm: # of blocks per chip = 256 +[ 9133.959155] bdbm: # of pages per block = 128 +[ 9133.959156] bdbm: # of subpages per page = 1 +[ 9133.959156] bdbm: page main size = 4096 bytes +[ 9133.959157] bdbm: page oob size = 64 bytes +[ 9133.959157] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 9133.959158] bdbm: +[ 9133.959159] bdbm: ===================================================================== +[ 9133.959159] bdbm: RAM DISK INFO +[ 9133.959159] bdbm: ===================================================================== +[ 9133.959160] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[ 9135.498225] bdbm: ramssd addr = ffffc90050001000 +[ 9135.498226] bdbm: +[ 9135.498227] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 9137.022616] bdbm: *** building ptr_ramssd_data done +[ 9137.022787] bdbm: [dm_ramdrive_probe] probe done! +[ 9137.022789] bdbm: [dm_ramdrive_open] open done! +[ 9137.146981] bdbm: nvm cache addr = ffffc90870003000 +[ 9137.155835] bdbm: ========================================================== +[ 9137.155836] bdbm: NVM CONFIGURATION +[ 9137.155837] bdbm: ========================================================== +[ 9137.155838] bdbm: total size = 1073741824, nr_nvm_pages = 262144, nvm_page_size = 4096 +[ 9137.342312] bdbm: TRIM is disabled +[ 9137.342474] bdbm: ===================================================================== +[ 9137.342475] bdbm: DEVICE PARAMETERS +[ 9137.342476] bdbm: ===================================================================== +[ 9137.342476] bdbm: # of channels = 8 +[ 9137.342477] bdbm: # of chips per channel = 16 +[ 9137.342478] bdbm: # of blocks per chip = 256 +[ 9137.342479] bdbm: # of pages per block = 128 +[ 9137.342479] bdbm: # of subpages per page = 1 +[ 9137.342480] bdbm: page main size = 4096 bytes +[ 9137.342480] bdbm: page oob size = 64 bytes +[ 9137.342481] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 9137.342481] bdbm: +[ 9137.342482] bdbm: ===================================================================== +[ 9137.342482] bdbm: FTL CONFIGURATION +[ 9137.342483] bdbm: ===================================================================== +[ 9137.342485] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 9137.342485] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 9137.342486] bdbm: wl policy = 1 (1: none, 2: swap) +[ 9137.342486] bdbm: trim mode = 2 (1: enable, 2: disable) +[ 9137.342487] bdbm: kernel sector = 512 bytes +[ 9137.342487] bdbm: +[ 9137.342488] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 9137.362154] bdbm: llm_make_req: 0, 1 +[ 9137.519391] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[ 9137.519393] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 9140.000073] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 +[ 9168.214278] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 0, evict = 0 +[ 9168.394365] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 0, evict = 4063 +[ 9168.664978] bdbm: llm_make_req: 50000, 94 +[ 9168.958243] bdbm: llm_make_req: 100000, 55 +[ 9168.979275] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 0, evict = 104063 +[ 9169.249304] bdbm: llm_make_req: 150000, 91 +[ 9169.537050] bdbm: llm_make_req: 200000, 93 +[ 9169.557986] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 0, evict = 204063 +[ 9169.822587] bdbm: llm_make_req: 250000, 93 +[ 9170.110161] bdbm: llm_make_req: 300000, 88 +[ 9170.130983] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 0, evict = 304063 +[ 9170.399146] bdbm: llm_make_req: 350000, 95 +[ 9170.698631] bdbm: llm_make_req: 400000, 94 +[ 9170.719520] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 0, evict = 404063 +[ 9170.989153] bdbm: llm_make_req: 450000, 91 +[ 9171.290617] bdbm: llm_make_req: 500000, 94 +[ 9171.318576] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 0, evict = 504063 +[ 9171.588482] bdbm: llm_make_req: 550000, 94 +[ 9171.878703] bdbm: llm_make_req: 600000, 94 +[ 9171.906781] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 0, evict = 604063 +[ 9172.172714] bdbm: llm_make_req: 650000, 54 +[ 9172.459176] bdbm: llm_make_req: 700000, 94 +[ 9172.489408] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 0, evict = 704063 +[ 9172.756353] bdbm: llm_make_req: 750000, 96 +[ 9173.044228] bdbm: llm_make_req: 800000, 92 +[ 9173.066395] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 0, evict = 804063 +[ 9173.333677] bdbm: llm_make_req: 850000, 76 +[ 9173.623083] bdbm: llm_make_req: 900000, 92 +[ 9173.643976] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 0, evict = 904063 +[ 9173.911182] bdbm: llm_make_req: 950000, 95 +[ 9174.198454] bdbm: llm_make_req: 1000000, 94 +[ 9174.219296] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 0, evict = 1004063 +[ 9174.484660] bdbm: llm_make_req: 1050000, 89 +[ 9174.775160] bdbm: llm_make_req: 1100000, 92 +[ 9174.796007] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 0, evict = 1104063 +[ 9175.059068] bdbm: llm_make_req: 1150000, 94 +[ 9175.362677] bdbm: llm_make_req: 1200000, 91 +[ 9175.383594] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 0, evict = 1204063 +[ 9175.647105] bdbm: llm_make_req: 1250000, 93 +[ 9175.933221] bdbm: llm_make_req: 1300000, 93 +[ 9175.961327] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 0, evict = 1304063 +[ 9176.226821] bdbm: llm_make_req: 1350000, 90 +[ 9176.524070] bdbm: llm_make_req: 1400000, 93 +[ 9176.552479] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 0, evict = 1404063 +[ 9176.813674] bdbm: llm_make_req: 1450000, 94 +[ 9177.110541] bdbm: llm_make_req: 1500000, 80 +[ 9177.131959] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 0, evict = 1504063 +[ 9177.401480] bdbm: llm_make_req: 1550000, 94 +[ 9177.690980] bdbm: llm_make_req: 1600000, 95 +[ 9177.712281] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 0, evict = 1604063 +[ 9177.980730] bdbm: llm_make_req: 1650000, 71 +[ 9178.268965] bdbm: llm_make_req: 1700000, 87 +[ 9178.290389] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 0, evict = 1704063 +[ 9178.559389] bdbm: llm_make_req: 1750000, 93 +[ 9178.848958] bdbm: llm_make_req: 1800000, 95 +[ 9178.869672] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 0, evict = 1804063 +[ 9179.137354] bdbm: llm_make_req: 1850000, 92 +[ 9179.420083] bdbm: llm_make_req: 1900000, 91 +[ 9179.440719] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 0, evict = 1904063 +[ 9179.703305] bdbm: llm_make_req: 1950000, 94 +[ 9179.985615] bdbm: llm_make_req: 2000000, 86 +[ 9180.013452] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 0, evict = 2004063 +[ 9180.267324] bdbm: llm_make_req: 2050000, 93 +[ 9180.549037] bdbm: llm_make_req: 2100000, 94 +[ 9180.577013] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 0, evict = 2104063 +[ 9180.831335] bdbm: llm_make_req: 2150000, 93 +[ 9181.119957] bdbm: llm_make_req: 2200000, 64 +[ 9181.140677] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 0, evict = 2204063 +[ 9181.401862] bdbm: llm_make_req: 2250000, 94 +[ 9181.690263] bdbm: llm_make_req: 2300000, 87 +[ 9181.711353] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 0, evict = 2304063 +[ 9181.974896] bdbm: llm_make_req: 2350000, 94 +[ 9182.258115] bdbm: llm_make_req: 2400000, 92 +[ 9182.279347] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 0, evict = 2404063 +[ 9182.541233] bdbm: llm_make_req: 2450000, 69 +[ 9183.603422] bdbm: llm_make_req: 2500000, 88 +[ 9183.608571] bdbm: nvm: total access = 2800000, total read = 20952, read hit = 1118, total_write = 2779047, write hit = 2779047, hit = 0, evict = 2481356 +[ 9183.876516] bdbm: llm_make_req: 2550000, 69 +[ 9184.074411] bdbm: nvm: total access = 2900000, total read = 61092, read hit = 6680, total_write = 2838907, write hit = 2838907, hit = 0, evict = 2532649 +[ 9184.136831] bdbm: llm_make_req: 2600000, 95 +[ 9184.447999] bdbm: llm_make_req: 2650000, 83 +[ 9184.528260] bdbm: nvm: total access = 3000000, total read = 100764, read hit = 15726, total_write = 2899235, write hit = 2899235, hit = 0, evict = 2579262 +[ 9184.746747] bdbm: llm_make_req: 2700000, 60 +[ 9184.955535] bdbm: nvm: total access = 3100000, total read = 140623, read hit = 27699, total_write = 2959376, write hit = 2959376, hit = 0, evict = 2620889 +[ 9185.059952] bdbm: llm_make_req: 2750000, 56 +[ 9185.330409] bdbm: nvm: total access = 3200000, total read = 180533, read hit = 42230, total_write = 3019466, write hit = 3019466, hit = 0, evict = 2659338 +[ 9185.342171] bdbm: llm_make_req: 2800000, 62 +[ 9185.666423] bdbm: llm_make_req: 2850000, 76 +[ 9185.713254] bdbm: nvm: total access = 3300000, total read = 220274, read hit = 58342, total_write = 3079725, write hit = 3079725, hit = 0, evict = 2694976 +[ 9186.012551] bdbm: llm_make_req: 2900000, 66 +[ 9186.079815] bdbm: nvm: total access = 3400000, total read = 260894, read hit = 76701, total_write = 3139105, write hit = 3139105, hit = 0, evict = 2727982 +[ 9186.299633] bdbm: llm_make_req: 2950000, 67 +[ 9186.409999] bdbm: nvm: total access = 3500000, total read = 301199, read hit = 93827, total_write = 3198800, write hit = 3198800, hit = 0, evict = 2762207 +[ 9186.606478] bdbm: llm_make_req: 3000000, 81 +[ 9186.769776] bdbm: nvm: total access = 3600000, total read = 340583, read hit = 109819, total_write = 3259416, write hit = 3259416, hit = 0, evict = 2798305 +[ 9186.905251] bdbm: llm_make_req: 3050000, 48 +[ 9187.142483] bdbm: nvm: total access = 3700000, total read = 380772, read hit = 125649, total_write = 3319227, write hit = 3319227, hit = 0, evict = 2834661 +[ 9187.202875] bdbm: llm_make_req: 3100000, 66 +[ 9187.504842] bdbm: llm_make_req: 3150000, 91 +[ 9187.513998] bdbm: nvm: total access = 3800000, total read = 420413, read hit = 140630, total_write = 3379586, write hit = 3379586, hit = 0, evict = 2872041 +[ 9187.792233] bdbm: llm_make_req: 3200000, 61 +[ 9187.870242] bdbm: nvm: total access = 3900000, total read = 460185, read hit = 155837, total_write = 3439814, write hit = 3439814, hit = 0, evict = 2909217 +[ 9188.100833] bdbm: llm_make_req: 3250000, 86 +[ 9188.253209] bdbm: nvm: total access = 4000000, total read = 500124, read hit = 171187, total_write = 3499875, write hit = 3499875, hit = 0, evict = 2946480 +[ 9188.393982] bdbm: llm_make_req: 3300000, 59 +[ 9188.601478] bdbm: nvm: total access = 4100000, total read = 539771, read hit = 186676, total_write = 3560228, write hit = 3560228, hit = 0, evict = 2983543 +[ 9188.680979] bdbm: llm_make_req: 3350000, 66 +[ 9188.999869] bdbm: nvm: total access = 4200000, total read = 579363, read hit = 202424, total_write = 3620636, write hit = 3620636, hit = 0, evict = 3020223 +[ 9189.021186] bdbm: llm_make_req: 3400000, 68 +[ 9189.328214] bdbm: llm_make_req: 3450000, 63 +[ 9189.375517] bdbm: nvm: total access = 4300000, total read = 619164, read hit = 218351, total_write = 3680835, write hit = 3680835, hit = 0, evict = 3056526 +[ 9189.635009] bdbm: llm_make_req: 3500000, 67 +[ 9189.740753] bdbm: nvm: total access = 4400000, total read = 659360, read hit = 234473, total_write = 3740639, write hit = 3740639, hit = 0, evict = 3092580 +[ 9189.932257] bdbm: llm_make_req: 3550000, 84 +[ 9190.089808] bdbm: nvm: total access = 4500000, total read = 700407, read hit = 250747, total_write = 3799592, write hit = 3799592, hit = 0, evict = 3128288 +[ 9190.220327] bdbm: llm_make_req: 3600000, 70 +[ 9190.458762] bdbm: nvm: total access = 4600000, total read = 741078, read hit = 267024, total_write = 3858921, write hit = 3858921, hit = 0, evict = 3163831 +[ 9190.539567] bdbm: llm_make_req: 3650000, 72 +[ 9190.831697] bdbm: nvm: total access = 4700000, total read = 780905, read hit = 282640, total_write = 3919094, write hit = 3919094, hit = 0, evict = 3200290 +[ 9190.841830] bdbm: llm_make_req: 3700000, 57 +[ 9191.140642] bdbm: llm_make_req: 3750000, 84 +[ 9191.207917] bdbm: nvm: total access = 4800000, total read = 820324, read hit = 298117, total_write = 3979675, write hit = 3979675, hit = 0, evict = 3237168 +[ 9191.444482] bdbm: llm_make_req: 3800000, 74 +[ 9191.557119] bdbm: nvm: total access = 4900000, total read = 860838, read hit = 313790, total_write = 4039161, write hit = 4039161, hit = 0, evict = 3273668 +[ 9191.722593] bdbm: llm_make_req: 3850000, 78 +[ 9191.931514] bdbm: nvm: total access = 5000000, total read = 901005, read hit = 329604, total_write = 4098994, write hit = 4098994, hit = 0, evict = 3310114 +[ 9192.056227] bdbm: llm_make_req: 3900000, 65 +[ 9192.318150] bdbm: nvm: total access = 5100000, total read = 941671, read hit = 346073, total_write = 4158328, write hit = 4158328, hit = 0, evict = 3346150 +[ 9192.377085] bdbm: llm_make_req: 3950000, 75 +[ 9192.682489] bdbm: llm_make_req: 4000000, 70 +[ 9192.693925] bdbm: nvm: total access = 5200000, total read = 981635, read hit = 362118, total_write = 4218364, write hit = 4218364, hit = 0, evict = 3382470 +[ 9193.002986] bdbm: llm_make_req: 4050000, 77 +[ 9193.071310] bdbm: nvm: total access = 5300000, total read = 1021453, read hit = 378129, total_write = 4278546, write hit = 4278546, hit = 0, evict = 3418656 +[ 9193.303090] bdbm: llm_make_req: 4100000, 45 +[ 9193.436986] bdbm: nvm: total access = 5400000, total read = 1061607, read hit = 394544, total_write = 4338392, write hit = 4338392, hit = 0, evict = 3454676 +[ 9193.607808] bdbm: llm_make_req: 4150000, 63 +[ 9193.809215] bdbm: nvm: total access = 5500000, total read = 1101798, read hit = 410409, total_write = 4398201, write hit = 4398201, hit = 0, evict = 3490835 +[ 9193.903669] bdbm: llm_make_req: 4200000, 79 +[ 9194.162226] bdbm: nvm: total access = 5600000, total read = 1141583, read hit = 426060, total_write = 4458416, write hit = 4458416, hit = 0, evict = 3527119 +[ 9194.202159] bdbm: llm_make_req: 4250000, 48 +[ 9194.519421] bdbm: llm_make_req: 4300000, 63 +[ 9194.539411] bdbm: nvm: total access = 5700000, total read = 1181781, read hit = 441686, total_write = 4518218, write hit = 4518218, hit = 0, evict = 3563319 +[ 9194.827026] bdbm: llm_make_req: 4350000, 79 +[ 9194.920616] bdbm: nvm: total access = 5800000, total read = 1221563, read hit = 457550, total_write = 4578436, write hit = 4578436, hit = 0, evict = 3599748 +[ 9195.139406] bdbm: llm_make_req: 4400000, 51 +[ 9195.276487] bdbm: nvm: total access = 5900000, total read = 1262306, read hit = 473807, total_write = 4637693, write hit = 4637693, hit = 0, evict = 3635547 +[ 9195.431468] bdbm: llm_make_req: 4450000, 62 +[ 9195.663560] bdbm: nvm: total access = 6000000, total read = 1301835, read hit = 489434, total_write = 4698164, write hit = 4698164, hit = 0, evict = 3672260 +[ 9195.761274] bdbm: llm_make_req: 4500000, 69 +[ 9196.031093] bdbm: nvm: total access = 6100000, total read = 1342157, read hit = 505385, total_write = 4757842, write hit = 4757842, hit = 0, evict = 3708443 +[ 9196.055448] bdbm: llm_make_req: 4550000, 73 +[ 9196.359581] bdbm: llm_make_req: 4600000, 68 +[ 9196.390530] bdbm: nvm: total access = 6200000, total read = 1382505, read hit = 521474, total_write = 4817494, write hit = 4817494, hit = 0, evict = 3744614 +[ 9196.650863] bdbm: llm_make_req: 4650000, 75 +[ 9196.752566] bdbm: nvm: total access = 6300000, total read = 1422569, read hit = 537233, total_write = 4877430, write hit = 4877430, hit = 0, evict = 3781242 +[ 9196.963396] bdbm: llm_make_req: 4700000, 46 +[ 9197.136926] bdbm: nvm: total access = 6400000, total read = 1462635, read hit = 552837, total_write = 4937364, write hit = 4937364, hit = 0, evict = 3817794 +[ 9197.265800] bdbm: llm_make_req: 4750000, 85 +[ 9197.494412] bdbm: nvm: total access = 6500000, total read = 1502812, read hit = 568696, total_write = 4997187, write hit = 4997187, hit = 0, evict = 3854268 +[ 9197.567307] bdbm: llm_make_req: 4800000, 67 +[ 9197.847980] bdbm: nvm: total access = 6600000, total read = 1543394, read hit = 584615, total_write = 5056605, write hit = 5056605, hit = 0, evict = 3890410 +[ 9197.854148] bdbm: llm_make_req: 4850000, 92 +[ 9198.158949] bdbm: llm_make_req: 4900000, 78 +[ 9198.218779] bdbm: nvm: total access = 6700000, total read = 1583215, read hit = 600259, total_write = 5116784, write hit = 5116784, hit = 0, evict = 3927258 +[ 9198.477821] bdbm: llm_make_req: 4950000, 67 +[ 9198.609095] bdbm: nvm: total access = 6800000, total read = 1622899, read hit = 615672, total_write = 5177100, write hit = 5177100, hit = 0, evict = 3963555 +[ 9198.785791] bdbm: llm_make_req: 5000000, 45 +[ 9198.972231] bdbm: nvm: total access = 6900000, total read = 1663312, read hit = 631427, total_write = 5236687, write hit = 5236687, hit = 0, evict = 3999574 +[ 9199.085660] bdbm: llm_make_req: 5050000, 64 +[ 9199.340985] bdbm: nvm: total access = 7000000, total read = 1703077, read hit = 646853, total_write = 5296922, write hit = 5296922, hit = 0, evict = 4035834 +[ 9199.386671] bdbm: llm_make_req: 5100000, 79 +[ 9200.090953] bdbm: llm_make_req: 5150000, 58 +[ 9200.108783] bdbm: nvm: total access = 7100000, total read = 1742597, read hit = 662181, total_write = 5357402, write hit = 5357402, hit = 0, evict = 4072616 +[ 9201.163237] bdbm: llm_make_req: 5200000, 67 +[ 9201.259019] bdbm: nvm: total access = 7200000, total read = 1782703, read hit = 678068, total_write = 5417296, write hit = 5417296, hit = 0, evict = 4108872 +[ 9202.189458] bdbm: llm_make_req: 5250000, 61 +[ 9202.359541] bdbm: nvm: total access = 7300000, total read = 1822819, read hit = 694060, total_write = 5477180, write hit = 5477180, hit = 0, evict = 4144538 +[ 9202.871063] bdbm: llm_make_req: 5300000, 77 +[ 9204.863773] bdbm: llm_make_req: 5350000, 96 +[ 9206.125012] bdbm: nvm: total access = 7400000, total read = 1862562, read hit = 709769, total_write = 5537437, write hit = 5537437, hit = 0, evict = 4181065 +[ 9207.002283] bdbm: llm_make_req: 5400000, 96 +[ 9208.701017] bdbm: llm_make_req: 5450000, 52 +[ 9209.866233] bdbm: nvm: total access = 7500000, total read = 1902472, read hit = 725185, total_write = 5597527, write hit = 5597527, hit = 0, evict = 4217786 +[ 9210.992234] bdbm: llm_make_req: 5500000, 64 +[ 9212.909419] bdbm: llm_make_req: 5550000, 96 +[ 9214.475300] bdbm: nvm: total access = 7600000, total read = 1942998, read hit = 741053, total_write = 5657001, write hit = 5657001, hit = 0, evict = 4253890 +[ 9214.681453] bdbm: llm_make_req: 5600000, 96 +[ 9216.723837] bdbm: llm_make_req: 5650000, 63 +[ 9217.959953] bdbm: nvm: total access = 7700000, total read = 1982863, read hit = 756785, total_write = 5717136, write hit = 5717136, hit = 0, evict = 4290428 +[ 9219.004993] bdbm: llm_make_req: 5700000, 61 +[ 9220.669930] bdbm: llm_make_req: 5750000, 96 +[ 9222.558367] bdbm: nvm: total access = 7800000, total read = 2022589, read hit = 772545, total_write = 5777410, write hit = 5777410, hit = 0, evict = 4326589 +[ 9222.566996] bdbm: llm_make_req: 5800000, 59 +[ 9224.844634] bdbm: llm_make_req: 5850000, 75 +[ 9226.800697] bdbm: llm_make_req: 5900000, 96 +[ 9227.364851] bdbm: nvm: total access = 7900000, total read = 2062718, read hit = 788671, total_write = 5837281, write hit = 5837281, hit = 0, evict = 4362649 +[ 9228.678065] bdbm: llm_make_req: 5950000, 59 +[ 9231.063698] bdbm: llm_make_req: 6000000, 58 +[ 9232.374522] bdbm: nvm: total access = 8000000, total read = 2102725, read hit = 804513, total_write = 5897274, write hit = 5897274, hit = 0, evict = 4398935 +[ 9233.066990] bdbm: llm_make_req: 6050000, 96 +[ 9234.913566] bdbm: llm_make_req: 6100000, 51 +[ 9237.401262] bdbm: llm_make_req: 6150000, 60 +[ 9237.420625] bdbm: nvm: total access = 8100000, total read = 2142809, read hit = 820263, total_write = 5957190, write hit = 5957190, hit = 0, evict = 4434646 +[ 9239.436983] bdbm: llm_make_req: 6200000, 96 +[ 9241.219103] bdbm: llm_make_req: 6250000, 70 +[ 9242.477500] bdbm: nvm: total access = 8200000, total read = 2182228, read hit = 835981, total_write = 6017771, write hit = 6017771, hit = 0, evict = 4471472 +[ 9243.735177] bdbm: llm_make_req: 6300000, 63 +[ 9245.879163] bdbm: llm_make_req: 6350000, 96 +[ 9247.851988] bdbm: llm_make_req: 6400000, 70 +[ 9247.859943] bdbm: nvm: total access = 8300000, total read = 2222759, read hit = 851712, total_write = 6077240, write hit = 6077240, hit = 0, evict = 4507315 +[ 9250.088187] bdbm: llm_make_req: 6450000, 96 +[ 9252.376434] bdbm: llm_make_req: 6500000, 96 +[ 9254.439576] bdbm: nvm: total access = 8400000, total read = 2262663, read hit = 867475, total_write = 6137336, write hit = 6137336, hit = 0, evict = 4543338 +[ 9254.481661] bdbm: llm_make_req: 6550000, 83 +[ 9256.605006] bdbm: llm_make_req: 6600000, 96 +[ 9258.936157] bdbm: llm_make_req: 6650000, 96 +[ 9259.789478] bdbm: nvm: total access = 8500000, total read = 2302277, read hit = 883217, total_write = 6197722, write hit = 6197722, hit = 0, evict = 4579680 +[ 9261.188588] bdbm: llm_make_req: 6700000, 55 +[ 9263.657817] bdbm: llm_make_req: 6750000, 96 +[ 9265.790150] bdbm: llm_make_req: 6800000, 96 +[ 9266.851022] bdbm: nvm: total access = 8600000, total read = 2342486, read hit = 899211, total_write = 6257513, write hit = 6257513, hit = 0, evict = 4616051 +[ 9268.314813] bdbm: llm_make_req: 6850000, 42 +[ 9270.815184] bdbm: llm_make_req: 6900000, 96 +[ 9272.826029] bdbm: llm_make_req: 6950000, 96 +[ 9274.226888] bdbm: nvm: total access = 8700000, total read = 2382178, read hit = 915012, total_write = 6317821, write hit = 6317821, hit = 0, evict = 4652548 +[ 9275.693825] bdbm: llm_make_req: 7000000, 65 +[ 9278.196775] bdbm: llm_make_req: 7050000, 96 +[ 9280.331382] bdbm: llm_make_req: 7100000, 75 +[ 9282.979919] bdbm: llm_make_req: 7150000, 96 +[ 9283.387291] bdbm: nvm: total access = 8800000, total read = 2422266, read hit = 931084, total_write = 6377733, write hit = 6377733, hit = 0, evict = 4688652 +[ 9285.378687] bdbm: llm_make_req: 7200000, 96 +[ 9288.019361] bdbm: llm_make_req: 7250000, 79 +[ 9290.641595] bdbm: llm_make_req: 7300000, 96 +[ 9292.536790] bdbm: nvm: total access = 8900000, total read = 2462906, read hit = 947005, total_write = 6437093, write hit = 6437093, hit = 0, evict = 4724796 +[ 9292.578245] bdbm: llm_make_req: 7350000, 41 +[ 9295.344896] bdbm: llm_make_req: 7400000, 96 +[ 9297.999691] bdbm: llm_make_req: 7450000, 96 +[ 9300.447602] bdbm: llm_make_req: 7500000, 65 +[ 9302.069532] bdbm: nvm: total access = 9000000, total read = 2502986, read hit = 962970, total_write = 6497013, write hit = 6497013, hit = 0, evict = 4761154 +[ 9303.208370] bdbm: llm_make_req: 7550000, 96 +[ 9305.416675] bdbm: llm_make_req: 7600000, 96 +[ 9308.055245] bdbm: llm_make_req: 7650000, 96 +[ 9311.000334] bdbm: llm_make_req: 7700000, 96 +[ 9313.436471] bdbm: llm_make_req: 7750000, 65 +[ 9313.447198] bdbm: nvm: total access = 9100000, total read = 2542634, read hit = 978631, total_write = 6557365, write hit = 6557365, hit = 0, evict = 4797858 +[ 9316.251319] bdbm: llm_make_req: 7800000, 96 +[ 9318.571214] bdbm: llm_make_req: 7850000, 96 +[ 9321.206396] bdbm: llm_make_req: 7900000, 96 +[ 9324.232800] bdbm: llm_make_req: 7950000, 96 +[ 9324.859912] bdbm: nvm: total access = 9200000, total read = 2582055, read hit = 994274, total_write = 6617944, write hit = 6617944, hit = 0, evict = 4834390 +[ 9326.481114] bdbm: llm_make_req: 8000000, 59 +[ 9329.369967] bdbm: llm_make_req: 8050000, 96 +[ 9331.814743] bdbm: llm_make_req: 8100000, 96 +[ 9334.297984] bdbm: llm_make_req: 8150000, 96 +[ 9336.329088] bdbm: nvm: total access = 9300000, total read = 2622725, read hit = 1010264, total_write = 6677274, write hit = 6677274, hit = 0, evict = 4870481 +[ 9337.347030] bdbm: llm_make_req: 8200000, 96 +[ 9339.653123] bdbm: llm_make_req: 8250000, 65 +[ 9342.585016] bdbm: llm_make_req: 8300000, 96 +[ 9345.098124] bdbm: llm_make_req: 8350000, 96 +[ 9347.872297] bdbm: llm_make_req: 8400000, 76 +[ 9347.925336] bdbm: nvm: total access = 9400000, total read = 2662587, read hit = 1025946, total_write = 6737412, write hit = 6737412, hit = 0, evict = 4907193 +[ 9350.617995] bdbm: llm_make_req: 8450000, 96 +[ 9352.775347] bdbm: llm_make_req: 8500000, 67 +[ 9355.639592] bdbm: llm_make_req: 8550000, 96 +[ 9358.215989] bdbm: llm_make_req: 8600000, 96 +[ 9359.335278] bdbm: nvm: total access = 9500000, total read = 2702353, read hit = 1041838, total_write = 6797646, write hit = 6797646, hit = 0, evict = 4943586 +[ 9360.923972] bdbm: llm_make_req: 8650000, 66 +[ 9363.812942] bdbm: llm_make_req: 8700000, 96 +[ 9365.866656] bdbm: llm_make_req: 8750000, 56 +[ 9368.739475] bdbm: llm_make_req: 8800000, 96 +[ 9370.787567] bdbm: nvm: total access = 9600000, total read = 2742792, read hit = 1057655, total_write = 6857207, write hit = 6857207, hit = 0, evict = 4979283 +[ 9371.332114] bdbm: llm_make_req: 8850000, 96 +[ 9373.970030] bdbm: llm_make_req: 8900000, 54 +[ 9376.794117] bdbm: llm_make_req: 8950000, 96 +[ 9378.888619] bdbm: llm_make_req: 9000000, 64 +[ 9381.676941] bdbm: llm_make_req: 9050000, 96 +[ 9382.083497] bdbm: nvm: total access = 9700000, total read = 2782642, read hit = 1073316, total_write = 6917357, write hit = 6917357, hit = 0, evict = 5015400 +[ 9384.294613] bdbm: llm_make_req: 9100000, 96 +[ 9386.933059] bdbm: llm_make_req: 9150000, 92 +[ 9389.781829] bdbm: llm_make_req: 9200000, 95 +[ 9391.835415] bdbm: llm_make_req: 9250000, 73 +[ 9393.427929] bdbm: nvm: total access = 9800000, total read = 2823158, read hit = 1089122, total_write = 6976841, write hit = 6976841, hit = 0, evict = 5051375 +[ 9394.628425] bdbm: llm_make_req: 9300000, 96 +[ 9397.266362] bdbm: llm_make_req: 9350000, 96 +[ 9399.812733] bdbm: llm_make_req: 9400000, 75 +[ 9402.591151] bdbm: llm_make_req: 9450000, 96 +[ 9404.579527] bdbm: nvm: total access = 9900000, total read = 2863500, read hit = 1105045, total_write = 7036499, write hit = 7036499, hit = 0, evict = 5087329 +[ 9404.661072] bdbm: llm_make_req: 9500000, 96 +[ 9407.478940] bdbm: llm_make_req: 9550000, 96 +[ 9410.264527] bdbm: llm_make_req: 9600000, 96 +[ 9412.712004] bdbm: llm_make_req: 9650000, 64 +[ 9414.311300] bdbm: nvm: total access = 10000000, total read = 2903329, read hit = 1120795, total_write = 7096670, write hit = 7096670, hit = 0, evict = 5123757 +[ 9415.481964] bdbm: llm_make_req: 9700000, 96 +[ 9417.683572] bdbm: llm_make_req: 9750000, 96 +[ 9420.388404] bdbm: llm_make_req: 9800000, 96 +[ 9423.197404] bdbm: llm_make_req: 9850000, 96 +[ 9425.548117] bdbm: nvm: total access = 10100000, total read = 2944247, read hit = 1136788, total_write = 7155752, write hit = 7155752, hit = 0, evict = 5159741 +[ 9425.548850] bdbm: llm_make_req: 9900000, 62 +[ 9428.064230] bdbm: llm_make_req: 9950000, 96 +[ 9430.280897] bdbm: llm_make_req: 10000000, 96 +[ 9432.017601] bdbm: nvm: total access = 10200000, total read = 2983716, read hit = 1152124, total_write = 7216283, write hit = 7216283, hit = 0, evict = 5196521 +[ 9432.086966] bdbm: llm_make_req: 10050000, 52 +[ 9434.242657] bdbm: llm_make_req: 10100000, 52 +[ 9435.263714] bdbm: nvm: total access = 10300000, total read = 3023407, read hit = 1167956, total_write = 7276592, write hit = 7276592, hit = 0, evict = 5232921 +[ 9435.885330] bdbm: llm_make_req: 10150000, 96 +[ 9437.421184] bdbm: llm_make_req: 10200000, 60 +[ 9438.384868] bdbm: nvm: total access = 10400000, total read = 3063254, read hit = 1183389, total_write = 7336745, write hit = 7336745, hit = 0, evict = 5269211 +[ 9439.284032] bdbm: llm_make_req: 10250000, 57 +[ 9441.015312] bdbm: llm_make_req: 10300000, 72 +[ 9441.060699] bdbm: nvm: total access = 10500000, total read = 3103368, read hit = 1199074, total_write = 7396631, write hit = 7396631, hit = 0, evict = 5305530 +[ 9442.392974] bdbm: llm_make_req: 10350000, 96 +[ 9443.712010] bdbm: nvm: total access = 10600000, total read = 3143824, read hit = 1215023, total_write = 7456175, write hit = 7456175, hit = 0, evict = 5341397 +[ 9443.774572] bdbm: llm_make_req: 10400000, 69 +[ 9445.537080] bdbm: llm_make_req: 10450000, 69 +[ 9446.483607] bdbm: nvm: total access = 10700000, total read = 3183700, read hit = 1230879, total_write = 7516299, write hit = 7516299, hit = 0, evict = 5378005 +[ 9447.408169] bdbm: llm_make_req: 10500000, 78 +[ 9448.880492] bdbm: llm_make_req: 10550000, 96 +[ 9449.360337] bdbm: nvm: total access = 10800000, total read = 3223584, read hit = 1246471, total_write = 7576415, write hit = 7576415, hit = 0, evict = 5414791 +[ 9450.341540] bdbm: llm_make_req: 10600000, 64 +[ 9452.211018] bdbm: nvm: total access = 10900000, total read = 3263673, read hit = 1262453, total_write = 7636326, write hit = 7636326, hit = 0, evict = 5451187 +[ 9452.218835] bdbm: llm_make_req: 10650000, 65 +[ 9453.990062] bdbm: llm_make_req: 10700000, 63 +[ 9454.901764] bdbm: nvm: total access = 11000000, total read = 3303296, read hit = 1278126, total_write = 7696703, write hit = 7696703, hit = 0, evict = 5487973 +[ 9455.382821] bdbm: llm_make_req: 10750000, 94 +[ 9456.819455] bdbm: llm_make_req: 10800000, 69 +[ 9457.616757] bdbm: nvm: total access = 11100000, total read = 3343307, read hit = 1293786, total_write = 7756692, write hit = 7756692, hit = 0, evict = 5524305 +[ 9458.542735] bdbm: llm_make_req: 10850000, 68 +[ 9460.305702] bdbm: llm_make_req: 10900000, 78 +[ 9460.310655] bdbm: nvm: total access = 11200000, total read = 3382986, read hit = 1309248, total_write = 7817013, write hit = 7817013, hit = 0, evict = 5560561 +[ 9461.602245] bdbm: llm_make_req: 10950000, 96 +[ 9463.081474] bdbm: nvm: total access = 11300000, total read = 3423008, read hit = 1325081, total_write = 7876991, write hit = 7876991, hit = 0, evict = 5597103 +[ 9463.180137] bdbm: llm_make_req: 11000000, 62 +[ 9464.951260] bdbm: llm_make_req: 11050000, 70 +[ 9465.028914] bdbm: nvm: total access = 11400000, total read = 3462837, read hit = 1340884, total_write = 7937162, write hit = 7937162, hit = 0, evict = 5633552 +[ 9466.723078] bdbm: llm_make_req: 11100000, 74 +[ 9467.748673] bdbm: nvm: total access = 11500000, total read = 3502925, read hit = 1356776, total_write = 7997074, write hit = 7997074, hit = 0, evict = 5669804 +[ 9467.916079] bdbm: llm_make_req: 11150000, 96 +[ 9469.563251] bdbm: llm_make_req: 11200000, 89 +[ 9470.475748] bdbm: nvm: total access = 11600000, total read = 3542996, read hit = 1372298, total_write = 8057003, write hit = 8057003, hit = 0, evict = 5706191 +[ 9471.337846] bdbm: llm_make_req: 11250000, 79 +[ 9472.777349] bdbm: llm_make_req: 11300000, 96 +[ 9473.224750] bdbm: nvm: total access = 11700000, total read = 3583426, read hit = 1388167, total_write = 8116573, write hit = 8116573, hit = 0, evict = 5742355 +[ 9474.159378] bdbm: llm_make_req: 11350000, 61 +[ 9475.937646] bdbm: llm_make_req: 11400000, 48 +[ 9475.946887] bdbm: nvm: total access = 11800000, total read = 3623848, read hit = 1403929, total_write = 8176151, write hit = 8176151, hit = 0, evict = 5778504 +[ 9477.736571] bdbm: llm_make_req: 11450000, 73 +[ 9478.690162] bdbm: nvm: total access = 11900000, total read = 3664077, read hit = 1419919, total_write = 8235922, write hit = 8235922, hit = 0, evict = 5814920 +[ 9479.135813] bdbm: llm_make_req: 11500000, 96 +[ 9480.539632] bdbm: llm_make_req: 11550000, 94 +[ 9481.434964] bdbm: nvm: total access = 12000000, total read = 3703351, read hit = 1435173, total_write = 8296648, write hit = 8296648, hit = 0, evict = 5851816 +[ 9482.351955] bdbm: llm_make_req: 11600000, 51 +[ 9484.146764] bdbm: llm_make_req: 11650000, 52 +[ 9484.192043] bdbm: nvm: total access = 12100000, total read = 3743918, read hit = 1451331, total_write = 8356081, write hit = 8356081, hit = 0, evict = 5888227 +[ 9485.568258] bdbm: llm_make_req: 11700000, 96 +[ 9486.910881] bdbm: nvm: total access = 12200000, total read = 3783527, read hit = 1466609, total_write = 8416472, write hit = 8416472, hit = 0, evict = 5924937 +[ 9486.961919] bdbm: llm_make_req: 11750000, 48 +[ 9488.751578] bdbm: llm_make_req: 11800000, 58 +[ 9489.660321] bdbm: nvm: total access = 12300000, total read = 3823229, read hit = 1482438, total_write = 8476770, write hit = 8476770, hit = 0, evict = 5961595 +[ 9490.557605] bdbm: llm_make_req: 11850000, 42 +[ 9491.905551] bdbm: llm_make_req: 11900000, 96 +[ 9492.395585] bdbm: nvm: total access = 12400000, total read = 3863444, read hit = 1498126, total_write = 8536555, write hit = 8536555, hit = 0, evict = 5997918 +[ 9493.381679] bdbm: llm_make_req: 11950000, 66 +[ 9495.139824] bdbm: nvm: total access = 12500000, total read = 3903306, read hit = 1513767, total_write = 8596693, write hit = 8596693, hit = 0, evict = 6034278 +[ 9495.159900] bdbm: llm_make_req: 12000000, 62 +[ 9496.944001] bdbm: llm_make_req: 12050000, 58 +[ 9497.904950] bdbm: nvm: total access = 12600000, total read = 3942911, read hit = 1529306, total_write = 8657088, write hit = 8657088, hit = 0, evict = 6071084 +[ 9498.239677] bdbm: llm_make_req: 12100000, 96 +[ 9499.806787] bdbm: llm_make_req: 12150000, 58 +[ 9500.655846] bdbm: nvm: total access = 12700000, total read = 3982293, read hit = 1544883, total_write = 8717706, write hit = 8717706, hit = 0, evict = 6107952 +[ 9501.653495] bdbm: llm_make_req: 12200000, 67 +[ 9503.437121] bdbm: llm_make_req: 12250000, 66 +[ 9503.465932] bdbm: nvm: total access = 12800000, total read = 4022439, read hit = 1560655, total_write = 8777560, write hit = 8777560, hit = 0, evict = 6144430 +[ 9504.623446] bdbm: llm_make_req: 12300000, 96 +[ 9506.253648] bdbm: nvm: total access = 12900000, total read = 4062743, read hit = 1576205, total_write = 8837256, write hit = 8837256, hit = 0, evict = 6180746 +[ 9506.319000] bdbm: llm_make_req: 12350000, 63 +[ 9508.137865] bdbm: llm_make_req: 12400000, 76 +[ 9509.031116] bdbm: nvm: total access = 13000000, total read = 4102704, read hit = 1591714, total_write = 8897295, write hit = 8897295, hit = 0, evict = 6217254 +[ 9509.594918] bdbm: llm_make_req: 12450000, 96 +[ 9510.988355] bdbm: llm_make_req: 12500000, 53 +[ 9511.818890] bdbm: nvm: total access = 13100000, total read = 4142573, read hit = 1607444, total_write = 8957426, write hit = 8957426, hit = 0, evict = 6253713 +[ 9512.794159] bdbm: llm_make_req: 12550000, 68 +[ 9514.631904] bdbm: nvm: total access = 13200000, total read = 4183344, read hit = 1623618, total_write = 9016655, write hit = 9016655, hit = 0, evict = 6289519 +[ 9514.644618] bdbm: llm_make_req: 12600000, 67 +[ 9516.290335] bdbm: llm_make_req: 12650000, 96 +[ 9518.524520] bdbm: llm_make_req: 12700000, 60 +[ 9518.542881] bdbm: nvm: total access = 13300000, total read = 4222560, read hit = 1639232, total_write = 9077439, write hit = 9077439, hit = 0, evict = 6326494 +[ 9520.729649] bdbm: llm_make_req: 12750000, 96 +[ 9522.944331] bdbm: llm_make_req: 12800000, 96 +[ 9523.591516] bdbm: nvm: total access = 13400000, total read = 4261890, read hit = 1654603, total_write = 9138109, write hit = 9138109, hit = 0, evict = 6363348 +[ 9524.761992] bdbm: llm_make_req: 12850000, 65 +[ 9527.043778] bdbm: llm_make_req: 12900000, 57 +[ 9528.229838] bdbm: nvm: total access = 13500000, total read = 4302669, read hit = 1670998, total_write = 9197330, write hit = 9197330, hit = 0, evict = 6399028 +[ 9528.948211] bdbm: llm_make_req: 12950000, 96 +[ 9530.580900] bdbm: llm_make_req: 13000000, 68 +[ 9583.897886] bdbm: ----------------------------------------------- +[ 9583.897889] bdbm: < PERFORMANCE SUMMARY > +[ 9583.897890] bdbm: [0] Execution Time (us): 446.537024 +[ 9583.897890] bdbm: +[ 9583.897891] bdbm: [1] Total I/Os +[ 9583.897891] bdbm: # of page reads: 4605306 +[ 9583.897892] bdbm: # of page writes: 1956199 +[ 9583.897892] bdbm: # of block erase: 33792 +[ 9583.897893] bdbm: +[ 9583.897894] bdbm: [2] Normal I/Os +[ 9583.897895] bdbm: # of page reads: 2649366 +[ 9583.897895] bdbm: # of page writes: 0 +[ 9583.897896] bdbm: # of page rmw reads: 0 +[ 9583.897896] bdbm: # of page rmw writes: 0 +[ 9583.897897] bdbm: +[ 9583.897897] bdbm: [3] GC I/Os +[ 9583.897898] bdbm: # of GC invocation: 0 +[ 9583.897898] bdbm: # of page reads: 1955940 +[ 9583.897899] bdbm: # of page writes: 1956199 +[ 9583.897899] bdbm: # of block erase: 33792 +[ 9583.897901] bdbm: +[ 9583.897901] bdbm: [4] Meta I/Os +[ 9583.897901] bdbm: # of meta page reads: 0 +[ 9583.897902] bdbm: # of meta page writes: 0 +[ 9583.897902] bdbm: +[ 9583.897903] bdbm: [5] Elapsed Time +[ 9583.897903] bdbm: page read (us): 93 (S:0 + Q:0 + D:93) +[ 9583.897904] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[ 9583.897905] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 9583.897906] bdbm: +[ 9583.897907] bdbm: [6] Utilization (R) +[ 9583.897908] bdbm: 35644 35814 36230 36154 35983 36040 36098 36117 +[ 9583.897909] bdbm: 35703 36312 36268 36094 36203 35722 35832 36014 +[ 9583.897911] bdbm: 35989 36075 36114 35980 35963 35914 35991 35869 +[ 9583.897913] bdbm: 36030 35832 35716 35863 35542 35733 35865 35638 +[ 9583.897914] bdbm: 35966 35927 35859 36156 36161 35956 35868 35800 +[ 9583.897915] bdbm: 36139 35704 35363 35842 35817 35864 35837 36234 +[ 9583.897916] bdbm: 36012 35929 36308 35860 36156 36153 35968 36380 +[ 9583.897919] bdbm: 35925 36276 36215 36036 36013 36191 35760 35681 +[ 9583.897920] bdbm: 35554 36028 36117 35971 35915 35990 36034 36018 +[ 9583.897921] bdbm: 35971 36053 36033 35691 36131 36215 35945 36160 +[ 9583.897922] bdbm: 36212 36628 36242 35896 35935 36163 35727 36078 +[ 9583.897924] bdbm: 36117 35922 35805 36028 36013 36337 35867 35847 +[ 9583.897925] bdbm: 35646 35922 35851 36208 36031 35921 35825 36037 +[ 9583.897926] bdbm: 36135 36137 35831 35989 35843 36263 35985 36079 +[ 9583.897928] bdbm: 35683 35966 36013 35890 36088 36558 35674 35852 +[ 9583.897930] bdbm: 35986 36009 36141 35611 36037 36067 35979 35708 +[ 9583.897930] bdbm: +[ 9583.897931] bdbm: [7] Utilization (W) +[ 9583.897932] bdbm: 15304 15333 15348 15358 15357 15363 15375 15379 +[ 9583.897933] bdbm: 15382 15384 15388 15387 15388 15390 15393 15394 +[ 9583.897935] bdbm: 15392 15388 15384 15379 15379 15378 15373 15371 +[ 9583.897937] bdbm: 15369 15368 15368 15364 15362 15359 15356 15355 +[ 9583.897938] bdbm: 15352 15352 15350 15347 15342 15339 15338 15336 +[ 9583.897939] bdbm: 15334 15334 15330 15327 15324 15321 15318 15318 +[ 9583.897940] bdbm: 15313 15313 15313 15310 15305 15305 15303 15301 +[ 9583.897942] bdbm: 15299 15297 15293 15289 15287 15285 15284 15281 +[ 9583.897943] bdbm: 15279 15274 15273 15271 15270 15268 15268 15266 +[ 9583.897945] bdbm: 15264 15263 15260 15255 15253 15253 15252 15251 +[ 9583.897946] bdbm: 15249 15247 15245 15242 15241 15240 15240 15239 +[ 9583.897948] bdbm: 15237 15237 15234 15232 15231 15230 15227 15224 +[ 9583.897949] bdbm: 15223 15223 15221 15218 15216 15215 15214 15212 +[ 9583.897950] bdbm: 15211 15209 15208 15206 15201 15199 15197 15191 +[ 9583.897951] bdbm: 15190 15188 15187 15186 15183 15181 15179 15178 +[ 9583.897954] bdbm: 15176 15172 15172 15170 15166 15163 15161 15160 +[ 9583.897954] bdbm: [8] NVM I/Os +[ 9583.897955] bdbm: #_of_nvm_total_accesses: 13570119 +[ 9583.897955] bdbm: #_of_nvm_total_write_requests: 9238495 +[ 9583.897956] bdbm: #_of_nvm_total_read_requests: 4331624 +[ 9583.897956] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9238495 +[ 9583.897957] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1682230 +[ 9583.897957] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[ 9583.897958] bdbm: #_of_nvm_evict_from_nvm: 6423878 +[ 9583.897959] bdbm: #_of_nvm_write_amplification: 6423878 : 8380077 +[ 9583.897960] bdbm: +[ 9583.897960] bdbm: ----------------------------------------------- +[ 9583.897961] bdbm: ----------------------------------------------- +[ 9584.069438] bdbm: done +[ 9584.069442] bdbm: [dm_ramdrive_close] closed! +[ 9584.457997] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 9584.457999] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 9584.482022] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 9584.511059] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 9584.515607] bdbm: ===================================================================== +[ 9584.515609] bdbm: DEVICE PARAMETERS +[ 9584.515610] bdbm: ===================================================================== +[ 9584.515611] bdbm: # of channels = 8 +[ 9584.515612] bdbm: # of chips per channel = 16 +[ 9584.515612] bdbm: # of blocks per chip = 256 +[ 9584.515613] bdbm: # of pages per block = 128 +[ 9584.515614] bdbm: # of subpages per page = 1 +[ 9584.515614] bdbm: page main size = 4096 bytes +[ 9584.515615] bdbm: page oob size = 64 bytes +[ 9584.515616] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 9584.515616] bdbm: +[ 9584.515617] bdbm: ===================================================================== +[ 9584.515618] bdbm: RAM DISK INFO +[ 9584.515619] bdbm: ===================================================================== +[ 9584.515620] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[ 9586.049452] bdbm: ramssd addr = ffffc90050001000 +[ 9586.049454] bdbm: +[ 9586.049455] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 9587.573617] bdbm: *** building ptr_ramssd_data done +[ 9587.573775] bdbm: [dm_ramdrive_probe] probe done! +[ 9587.573776] bdbm: [dm_ramdrive_open] open done! +[ 9587.672200] bdbm: nvm cache addr = ffffc90870003000 +[ 9587.679406] bdbm: ========================================================== +[ 9587.679408] bdbm: NVM CONFIGURATION +[ 9587.679408] bdbm: ========================================================== +[ 9587.679409] bdbm: total size = 1073741824, nr_nvm_pages = 262144, nvm_page_size = 4096 +[ 9587.836121] bdbm: TRIM is disabled +[ 9587.836227] bdbm: ===================================================================== +[ 9587.836228] bdbm: DEVICE PARAMETERS +[ 9587.836229] bdbm: ===================================================================== +[ 9587.836229] bdbm: # of channels = 8 +[ 9587.836230] bdbm: # of chips per channel = 16 +[ 9587.836230] bdbm: # of blocks per chip = 256 +[ 9587.836231] bdbm: # of pages per block = 128 +[ 9587.836231] bdbm: # of subpages per page = 1 +[ 9587.836232] bdbm: page main size = 4096 bytes +[ 9587.836232] bdbm: page oob size = 64 bytes +[ 9587.836233] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 9587.836233] bdbm: +[ 9587.836234] bdbm: ===================================================================== +[ 9587.836234] bdbm: FTL CONFIGURATION +[ 9587.836235] bdbm: ===================================================================== +[ 9587.836235] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 9587.836236] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 9587.836236] bdbm: wl policy = 1 (1: none, 2: swap) +[ 9587.836237] bdbm: trim mode = 2 (1: enable, 2: disable) +[ 9587.836237] bdbm: kernel sector = 512 bytes +[ 9587.836238] bdbm: +[ 9587.836239] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 9587.853186] bdbm: llm_make_req: 0, 1 +[ 9587.980617] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[ 9587.980619] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 9592.242488] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 diff --git a/result/fio_ton_o1_n1g.rslt b/result/fio_ton_o1_n1g.rslt new file mode 100644 index 0000000..bd57a9e --- /dev/null +++ b/result/fio_ton_o1_n1g.rslt @@ -0,0 +1,44 @@ +JESD219: (g=0): rw=randrw, bs=512-64K/512-64K/512-64K, ioengine=libaio, iodepth=256 +... +fio-2.14-20-gd6192-dirty +Starting 4 processes +JESD219: Laying out IO file(s) (1 file(s) / 10240MB) + +JESD219: (groupid=0, jobs=4): err= 0: pid=20898: Mon Nov 7 17:27:38 2016 + read : io=16393MB, bw=48172KB/s, iops=6302, runt=348469msec + slat (usec): min=1, max=1800.6K, avg=188.75, stdev=14349.61 + clat (usec): min=392, max=3241.4K, avg=66217.96, stdev=267362.33 + lat (usec): min=410, max=3241.4K, avg=66406.78, stdev=267715.01 + clat percentiles (usec): + | 1.00th=[ 1592], 5.00th=[ 1768], 10.00th=[ 1944], 20.00th=[ 2736], + | 30.00th=[ 3056], 40.00th=[ 3280], 50.00th=[ 3536], 60.00th=[ 5280], + | 70.00th=[10304], 80.00th=[15296], 90.00th=[23936], 95.00th=[350208], + | 99.00th=[1564672], 99.50th=[1597440], 99.90th=[1630208], 99.95th=[1646592], + | 99.99th=[1810432] + write: io=24567MB, bw=72191KB/s, iops=9447, runt=348469msec + slat (usec): min=2, max=1789.8K, avg=292.06, stdev=18211.78 + clat (usec): min=411, max=3232.9K, avg=62895.23, stdev=260777.93 + lat (usec): min=419, max=3241.9K, avg=63187.40, stdev=261367.63 + clat percentiles (usec): + | 1.00th=[ 1528], 5.00th=[ 1672], 10.00th=[ 1800], 20.00th=[ 2608], + | 30.00th=[ 2928], 40.00th=[ 3120], 50.00th=[ 3344], 60.00th=[ 4016], + | 70.00th=[ 9408], 80.00th=[14912], 90.00th=[23168], 95.00th=[45824], + | 99.00th=[1564672], 99.50th=[1597440], 99.90th=[1630208], 99.95th=[1646592], + | 99.99th=[1810432] + lat (usec) : 500=0.01%, 750=0.01%, 1000=0.01% + lat (msec) : 2=13.80%, 4=45.13%, 10=11.41%, 20=16.75%, 50=7.93% + lat (msec) : 100=0.13%, 500=0.13%, 750=0.05%, 1000=1.64%, 2000=3.03% + lat (msec) : >=2000=0.01% + cpu : usr=0.30%, sys=22.40%, ctx=139060, majf=0, minf=44 + IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% + submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% + complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1% + issued : total=r=2196367/w=3292088/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 + latency : target=0, window=0, percentile=100.00%, depth=256 + +Run status group 0 (all jobs): + READ: io=16393MB, aggrb=48172KB/s, minb=48172KB/s, maxb=48172KB/s, mint=348469msec, maxt=348469msec + WRITE: io=24567MB, aggrb=72191KB/s, minb=72191KB/s, maxb=72191KB/s, mint=348469msec, maxt=348469msec + +Disk stats (read/write): + robusta: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00% diff --git a/result/fio_ton_o1_n2g.dmesg b/result/fio_ton_o1_n2g.dmesg new file mode 100644 index 0000000..bbf9b6e --- /dev/null +++ b/result/fio_ton_o1_n2g.dmesg @@ -0,0 +1,3355 @@ +[ 0.000000] pcpu-alloc: s98008 r8192 d28968 u524288 alloc=1*2097152 +[ 0.000000] pcpu-alloc: [0] 0 1 2 3 +[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 16485716 +[ 0.000000] Policy zone: Normal +[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-42-generic.efi.signed root=UUID=f5bf218f-1f62-4a63-bcfe-1bdb8e06f01c ro quiet splash vt.handoff=7 +[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) +[ 0.000000] Calgary: detecting Calgary via BIOS EBDA area +[ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! +[ 0.000000] Memory: 65700716K/66989692K available (8409K kernel code, 1283K rwdata, 3944K rodata, 1480K init, 1292K bss, 1288976K reserved, 0K cma-reserved) +[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 +[ 0.000000] Hierarchical RCU implementation. +[ 0.000000] Build-time adjustment of leaf fanout to 64. +[ 0.000000] RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4. +[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=4 +[ 0.000000] NR_IRQS:16640 nr_irqs:1024 16 +[ 0.000000] spurious 8259A interrupt: IRQ7. +[ 0.000000] vt handoff: transparent VT on vt#7 +[ 0.000000] Console: colour dummy device 80x25 +[ 0.000000] console [tty0] enabled +[ 0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635855245 ns +[ 0.000000] hpet clockevent registered +[ 0.000000] tsc: PIT calibration matches HPET. 1 loops +[ 0.000000] tsc: Detected 3311.928 MHz processor +[ 0.000021] Calibrating delay loop (skipped), value calculated using timer frequency.. 6623.85 BogoMIPS (lpj=13247712) +[ 0.000023] pid_max: default: 32768 minimum: 301 +[ 0.000026] ACPI: Core revision 20150930 +[ 0.018771] ACPI Error: [\_SB_.PCI0.XHC_.RHUB.HS11] Namespace lookup failure, AE_NOT_FOUND (20150930/dswload-210) +[ 0.018775] ACPI Exception: AE_NOT_FOUND, During name lookup/catalog (20150930/psobject-227) +[ 0.018803] ACPI Exception: AE_NOT_FOUND, (SSDT:xh_rvp08) while loading table (20150930/tbxfload-193) +[ 0.025000] ACPI Error: 1 table load failures, 7 successful (20150930/tbxfload-214) +[ 0.026907] Security Framework initialized +[ 0.026908] Yama: becoming mindful. +[ 0.026917] AppArmor: AppArmor initialized +[ 0.029486] Dentry cache hash table entries: 8388608 (order: 14, 67108864 bytes) +[ 0.037878] Inode-cache hash table entries: 4194304 (order: 13, 33554432 bytes) +[ 0.041498] Mount-cache hash table entries: 131072 (order: 8, 1048576 bytes) +[ 0.041538] Mountpoint-cache hash table entries: 131072 (order: 8, 1048576 bytes) +[ 0.041793] Initializing cgroup subsys io +[ 0.041795] Initializing cgroup subsys memory +[ 0.041798] Initializing cgroup subsys devices +[ 0.041800] Initializing cgroup subsys freezer +[ 0.041802] Initializing cgroup subsys net_cls +[ 0.041803] Initializing cgroup subsys perf_event +[ 0.041804] Initializing cgroup subsys net_prio +[ 0.041806] Initializing cgroup subsys hugetlb +[ 0.041807] Initializing cgroup subsys pids +[ 0.041824] CPU: Physical Processor ID: 0 +[ 0.041824] CPU: Processor Core ID: 0 +[ 0.042730] mce: CPU supports 10 MCE banks +[ 0.042744] CPU0: Thermal monitoring enabled (TM1) +[ 0.042751] process: using mwait in idle threads +[ 0.042753] Last level iTLB entries: 4KB 128, 2MB 8, 4MB 8 +[ 0.042754] Last level dTLB entries: 4KB 64, 2MB 0, 4MB 0, 1GB 4 +[ 0.043007] Freeing SMP alternatives memory: 32K (ffffffff820b4000 - ffffffff820bc000) +[ 0.047205] ftrace: allocating 32007 entries in 126 pages +[ 0.056734] smpboot: Max logical packages: 1 +[ 0.056736] smpboot: APIC(0) Converting physical 0 to logical package 0 +[ 0.057995] x2apic: IRQ remapping doesn't support X2APIC mode +[ 0.061069] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0 +[ 0.100756] TSC deadline timer enabled +[ 0.100761] smpboot: CPU0: Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz (family: 0x6, model: 0x5e, stepping: 0x3) +[ 0.100773] Performance Events: PEBS fmt3+, 32-deep LBR, Skylake events, full-width counters, Intel PMU driver. +[ 0.100793] ... version: 4 +[ 0.100794] ... bit width: 48 +[ 0.100795] ... generic registers: 8 +[ 0.100795] ... value mask: 0000ffffffffffff +[ 0.100796] ... max period: 0000ffffffffffff +[ 0.100796] ... fixed-purpose events: 3 +[ 0.100797] ... event mask: 00000007000000ff +[ 0.101340] x86: Booting SMP configuration: +[ 0.101341] .... node #0, CPUs: #1 +[ 0.104601] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter. +[ 0.104644] #2 #3 +[ 0.111166] x86: Booted up 1 node, 4 CPUs +[ 0.111169] smpboot: Total of 4 processors activated (26495.42 BogoMIPS) +[ 0.113698] devtmpfs: initialized +[ 0.113737] memory block size : 128MB +[ 0.118598] evm: security.selinux +[ 0.118599] evm: security.SMACK64 +[ 0.118600] evm: security.SMACK64EXEC +[ 0.118600] evm: security.SMACK64TRANSMUTE +[ 0.118601] evm: security.SMACK64MMAP +[ 0.118601] evm: security.ima +[ 0.118602] evm: security.capability +[ 0.118638] PM: Registering ACPI NVS region [mem 0x8277d000-0x8277dfff] (4096 bytes) +[ 0.118639] PM: Registering ACPI NVS region [mem 0x8a74a000-0x8ada0fff] (6647808 bytes) +[ 0.118732] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.118787] pinctrl core: initialized pinctrl subsystem +[ 0.118932] RTC time: 5:48:47, date: 11/07/16 +[ 0.119726] NET: Registered protocol family 16 +[ 0.133557] cpuidle: using governor ladder +[ 0.145558] cpuidle: using governor menu +[ 0.145561] PCCT header not found. +[ 0.145606] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it +[ 0.145607] ACPI: bus type PCI registered +[ 0.145608] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 +[ 0.145655] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) +[ 0.145657] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 +[ 0.145666] PCI: Using configuration type 1 for base access +[ 0.157754] ACPI: Added _OSI(Module Device) +[ 0.157755] ACPI: Added _OSI(Processor Device) +[ 0.157756] ACPI: Added _OSI(3.0 _SCP Extensions) +[ 0.157757] ACPI: Added _OSI(Processor Aggregator Device) +[ 0.162933] ACPI: Executed 21 blocks of module-level executable AML code +[ 0.167125] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored +[ 0.169373] ACPI: Dynamic OEM Table Load: +[ 0.169380] ACPI: SSDT 0xFFFF8810270E3000 0006C3 (v02 PmRef Cpu0Ist 00003000 INTL 20120913) +[ 0.170002] ACPI: \_PR_.CPU0: _OSC native thermal LVT Acked +[ 0.171082] ACPI: Dynamic OEM Table Load: +[ 0.171085] ACPI: SSDT 0xFFFF88102712D800 00037F (v02 PmRef Cpu0Cst 00003001 INTL 20120913) +[ 0.172179] ACPI: Dynamic OEM Table Load: +[ 0.172183] ACPI: SSDT 0xFFFF8810270E3800 0005AA (v02 PmRef ApIst 00003000 INTL 20120913) +[ 0.172929] ACPI: Dynamic OEM Table Load: +[ 0.172931] ACPI: SSDT 0xFFFF881027159600 000119 (v02 PmRef ApCst 00003000 INTL 20120913) +[ 0.174998] ACPI: Interpreter enabled +[ 0.175005] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20150930/hwxface-580) +[ 0.175011] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20150930/hwxface-580) +[ 0.175026] ACPI: (supports S0 S3 S4 S5) +[ 0.175027] ACPI: Using IOAPIC for interrupt routing +[ 0.175050] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug +[ 0.176455] ACPI: Power Resource [PG00] (on) +[ 0.176728] ACPI: Power Resource [PG01] (on) +[ 0.176971] ACPI: Power Resource [PG02] (on) +[ 0.178034] ACPI: Power Resource [WRST] (off) +[ 0.178247] ACPI: Power Resource [WRST] (off) +[ 0.178467] ACPI: Power Resource [WRST] (off) +[ 0.178678] ACPI: Power Resource [WRST] (off) +[ 0.178890] ACPI: Power Resource [WRST] (off) +[ 0.179104] ACPI: Power Resource [WRST] (off) +[ 0.179320] ACPI: Power Resource [WRST] (off) +[ 0.179533] ACPI: Power Resource [WRST] (off) +[ 0.179746] ACPI: Power Resource [WRST] (off) +[ 0.179957] ACPI: Power Resource [WRST] (off) +[ 0.180170] ACPI: Power Resource [WRST] (off) +[ 0.180381] ACPI: Power Resource [WRST] (off) +[ 0.180594] ACPI: Power Resource [WRST] (off) +[ 0.180867] ACPI: Power Resource [WRST] (off) +[ 0.181081] ACPI: Power Resource [WRST] (off) +[ 0.181294] ACPI: Power Resource [WRST] (off) +[ 0.181508] ACPI: Power Resource [WRST] (off) +[ 0.181727] ACPI: Power Resource [WRST] (off) +[ 0.181947] ACPI: Power Resource [WRST] (off) +[ 0.182158] ACPI: Power Resource [WRST] (off) +[ 0.186915] ACPI: Power Resource [FN00] (off) +[ 0.186963] ACPI: Power Resource [FN01] (off) +[ 0.187009] ACPI: Power Resource [FN02] (off) +[ 0.187054] ACPI: Power Resource [FN03] (off) +[ 0.187098] ACPI: Power Resource [FN04] (off) +[ 0.187877] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe]) +[ 0.187882] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] +[ 0.187902] \_SB_.PCI0:_OSC invalid UUID +[ 0.187903] _OSC request data:1 1f 0 +[ 0.187905] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM +[ 0.188386] PCI host bridge to bus 0000:00 +[ 0.188388] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window] +[ 0.188389] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window] +[ 0.188390] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window] +[ 0.188391] pci_bus 0000:00: root bus resource [mem 0x91000000-0xdfffffff window] +[ 0.188392] pci_bus 0000:00: root bus resource [mem 0xfd000000-0xfe7fffff window] +[ 0.188393] pci_bus 0000:00: root bus resource [bus 00-fe] +[ 0.188398] pci 0000:00:00.0: [8086:191f] type 00 class 0x060000 +[ 0.188611] pci 0000:00:02.0: [8086:1912] type 00 class 0x030000 +[ 0.188621] pci 0000:00:02.0: reg 0x10: [mem 0xde000000-0xdeffffff 64bit] +[ 0.188626] pci 0000:00:02.0: reg 0x18: [mem 0xc0000000-0xcfffffff 64bit pref] +[ 0.188629] pci 0000:00:02.0: reg 0x20: [io 0xf000-0xf03f] +[ 0.188728] pci 0000:00:08.0: [8086:1911] type 00 class 0x088000 +[ 0.188738] pci 0000:00:08.0: reg 0x10: [mem 0xdf152000-0xdf152fff 64bit] +[ 0.188848] pci 0000:00:14.0: [8086:a12f] type 00 class 0x0c0330 +[ 0.188871] pci 0000:00:14.0: reg 0x10: [mem 0xdf130000-0xdf13ffff 64bit] +[ 0.188917] pci 0000:00:14.0: PME# supported from D3hot D3cold +[ 0.188990] pci 0000:00:14.0: System wakeup disabled by ACPI +[ 0.189017] pci 0000:00:14.2: [8086:a131] type 00 class 0x118000 +[ 0.189039] pci 0000:00:14.2: reg 0x10: [mem 0xdf151000-0xdf151fff 64bit] +[ 0.189193] pci 0000:00:15.0: [8086:a160] type 00 class 0x118000 +[ 0.189248] pci 0000:00:15.0: reg 0x10: [mem 0xdf150000-0xdf150fff 64bit] +[ 0.189458] pci 0000:00:15.1: [8086:a161] type 00 class 0x118000 +[ 0.189513] pci 0000:00:15.1: reg 0x10: [mem 0xdf14f000-0xdf14ffff 64bit] +[ 0.189713] pci 0000:00:16.0: [8086:a13a] type 00 class 0x078000 +[ 0.189762] pci 0000:00:16.0: reg 0x10: [mem 0xdf14e000-0xdf14efff 64bit] +[ 0.189849] pci 0000:00:16.0: PME# supported from D3hot +[ 0.189961] pci 0000:00:17.0: [8086:a102] type 00 class 0x010601 +[ 0.189980] pci 0000:00:17.0: reg 0x10: [mem 0xdf148000-0xdf149fff] +[ 0.189986] pci 0000:00:17.0: reg 0x14: [mem 0xdf14d000-0xdf14d0ff] +[ 0.189992] pci 0000:00:17.0: reg 0x18: [io 0xf090-0xf097] +[ 0.189998] pci 0000:00:17.0: reg 0x1c: [io 0xf080-0xf083] +[ 0.190003] pci 0000:00:17.0: reg 0x20: [io 0xf060-0xf07f] +[ 0.190009] pci 0000:00:17.0: reg 0x24: [mem 0xdf14c000-0xdf14c7ff] +[ 0.190034] pci 0000:00:17.0: PME# supported from D3hot +[ 0.190129] pci 0000:00:1b.0: [8086:a167] type 01 class 0x060400 +[ 0.190177] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold +[ 0.190258] pci 0000:00:1b.0: System wakeup disabled by ACPI +[ 0.190307] pci 0000:00:1d.0: [8086:a118] type 01 class 0x060400 +[ 0.190351] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold +[ 0.190426] pci 0000:00:1d.0: System wakeup disabled by ACPI +[ 0.190452] pci 0000:00:1d.2: [8086:a11a] type 01 class 0x060400 +[ 0.190498] pci 0000:00:1d.2: PME# supported from D0 D3hot D3cold +[ 0.190576] pci 0000:00:1d.2: System wakeup disabled by ACPI +[ 0.190654] pci 0000:00:1e.0: [8086:a127] type 00 class 0x118000 +[ 0.190708] pci 0000:00:1e.0: reg 0x10: [mem 0xdf14b000-0xdf14bfff 64bit] +[ 0.190931] pci 0000:00:1f.0: [8086:a145] type 00 class 0x060100 +[ 0.191103] pci 0000:00:1f.2: [8086:a121] type 00 class 0x058000 +[ 0.191113] pci 0000:00:1f.2: reg 0x10: [mem 0xdf144000-0xdf147fff] +[ 0.191228] pci 0000:00:1f.3: [8086:a170] type 00 class 0x040300 +[ 0.191256] pci 0000:00:1f.3: reg 0x10: [mem 0xdf140000-0xdf143fff 64bit] +[ 0.191278] pci 0000:00:1f.3: reg 0x20: [mem 0xdf120000-0xdf12ffff 64bit] +[ 0.191307] pci 0000:00:1f.3: PME# supported from D3hot D3cold +[ 0.191411] pci 0000:00:1f.3: System wakeup disabled by ACPI +[ 0.191441] pci 0000:00:1f.4: [8086:a123] type 00 class 0x0c0500 +[ 0.191494] pci 0000:00:1f.4: reg 0x10: [mem 0xdf14a000-0xdf14a0ff 64bit] +[ 0.191563] pci 0000:00:1f.4: reg 0x20: [io 0xf040-0xf05f] +[ 0.191714] pci 0000:00:1f.6: [8086:15b8] type 00 class 0x020000 +[ 0.191748] pci 0000:00:1f.6: reg 0x10: [mem 0xdf100000-0xdf11ffff] +[ 0.191835] pci 0000:00:1f.6: PME# supported from D0 D3hot D3cold +[ 0.191906] pci 0000:00:1f.6: System wakeup disabled by ACPI +[ 0.191995] pci 0000:01:00.0: [144d:a802] type 00 class 0x010802 +[ 0.192021] pci 0000:01:00.0: reg 0x10: [mem 0xdf010000-0xdf013fff 64bit] +[ 0.192026] pci 0000:01:00.0: reg 0x18: [io 0xe000-0xe0ff] +[ 0.192045] pci 0000:01:00.0: reg 0x30: [mem 0xdf000000-0xdf00ffff pref] +[ 0.192137] pci 0000:01:00.0: System wakeup disabled by ACPI +[ 0.197890] pci 0000:00:1b.0: PCI bridge to [bus 01] +[ 0.197892] pci 0000:00:1b.0: bridge window [io 0xe000-0xefff] +[ 0.197894] pci 0000:00:1b.0: bridge window [mem 0xdf000000-0xdf0fffff] +[ 0.197960] acpiphp: Slot [1] registered +[ 0.197963] pci 0000:00:1d.0: PCI bridge to [bus 02] +[ 0.198040] pci 0000:03:00.0: [1b21:1080] type 01 class 0x060400 +[ 0.198151] pci 0000:03:00.0: supports D1 D2 +[ 0.198152] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold +[ 0.198200] pci 0000:03:00.0: System wakeup disabled by ACPI +[ 0.205891] pci 0000:00:1d.2: PCI bridge to [bus 03-04] +[ 0.205995] pci 0000:03:00.0: PCI bridge to [bus 04] +[ 0.207321] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207357] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 *10 11 12 14 15) +[ 0.207392] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207425] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207459] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207492] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207526] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207559] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 *11 12 14 15) +[ 0.207836] ACPI: Enabled 5 GPEs in block 00 to 7F +[ 0.207905] vgaarb: setting as boot device: PCI:0000:00:02.0 +[ 0.207907] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none +[ 0.207909] vgaarb: loaded +[ 0.207909] vgaarb: bridge control possible 0000:00:02.0 +[ 0.208041] SCSI subsystem initialized +[ 0.208058] libata version 3.00 loaded. +[ 0.208070] ACPI: bus type USB registered +[ 0.208082] usbcore: registered new interface driver usbfs +[ 0.208086] usbcore: registered new interface driver hub +[ 0.208094] usbcore: registered new device driver usb +[ 0.208202] PCI: Using ACPI for IRQ routing +[ 0.236060] PCI: pci_cache_line_size set to 64 bytes +[ 0.236162] e820: reserve RAM buffer [mem 0x00058000-0x0005ffff] +[ 0.236163] e820: reserve RAM buffer [mem 0x0009f000-0x0009ffff] +[ 0.236164] e820: reserve RAM buffer [mem 0x8277d000-0x83ffffff] +[ 0.236165] e820: reserve RAM buffer [mem 0x827fa000-0x83ffffff] +[ 0.236166] e820: reserve RAM buffer [mem 0x8a2a6000-0x8bffffff] +[ 0.236167] e820: reserve RAM buffer [mem 0x8a74a000-0x8bffffff] +[ 0.236168] e820: reserve RAM buffer [mem 0x8b400000-0x8bffffff] +[ 0.236168] e820: reserve RAM buffer [mem 0x106f000000-0x106fffffff] +[ 0.236236] NetLabel: Initializing +[ 0.236237] NetLabel: domain hash size = 128 +[ 0.236237] NetLabel: protocols = UNLABELED CIPSOv4 +[ 0.236244] NetLabel: unlabeled traffic allowed by default +[ 0.236318] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0 +[ 0.236321] hpet0: 8 comparators, 64-bit 24.000000 MHz counter +[ 0.238354] amd_nb: Cannot enumerate AMD northbridges +[ 0.238365] clocksource: Switched to clocksource hpet +[ 0.242118] AppArmor: AppArmor Filesystem Enabled +[ 0.242148] pnp: PnP ACPI init +[ 0.242329] system 00:00: [io 0x0a00-0x0a0f] has been reserved +[ 0.242330] system 00:00: [io 0x0a10-0x0a1f] has been reserved +[ 0.242332] system 00:00: [io 0x0a20-0x0a2f] has been reserved +[ 0.242333] system 00:00: [io 0x0a30-0x0a3f] has been reserved +[ 0.242335] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242482] system 00:01: [io 0x0680-0x069f] has been reserved +[ 0.242484] system 00:01: [io 0xffff] has been reserved +[ 0.242484] system 00:01: [io 0xffff] has been reserved +[ 0.242485] system 00:01: [io 0xffff] has been reserved +[ 0.242487] system 00:01: [io 0x1800-0x18fe] could not be reserved +[ 0.242487] system 00:01: [io 0x164e-0x164f] has been reserved +[ 0.242489] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242545] system 00:02: [io 0x0800-0x087f] has been reserved +[ 0.242546] system 00:02: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242560] pnp 00:03: Plug and Play ACPI device, IDs PNP0b00 (active) +[ 0.242584] system 00:04: [io 0x1854-0x1857] has been reserved +[ 0.242585] system 00:04: Plug and Play ACPI device, IDs INT3f0d PNP0c02 (active) +[ 0.242721] system 00:05: [mem 0xfed10000-0xfed17fff] has been reserved +[ 0.242722] system 00:05: [mem 0xfed18000-0xfed18fff] has been reserved +[ 0.242723] system 00:05: [mem 0xfed19000-0xfed19fff] has been reserved +[ 0.242724] system 00:05: [mem 0xe0000000-0xefffffff] has been reserved +[ 0.242725] system 00:05: [mem 0xfed20000-0xfed3ffff] has been reserved +[ 0.242727] system 00:05: [mem 0xfed90000-0xfed93fff] has been reserved +[ 0.242728] system 00:05: [mem 0xfed45000-0xfed8ffff] has been reserved +[ 0.242729] system 00:05: [mem 0xff000000-0xffffffff] has been reserved +[ 0.242730] system 00:05: [mem 0xfee00000-0xfeefffff] could not be reserved +[ 0.242731] system 00:05: [mem 0xdffc0000-0xdffdffff] has been reserved +[ 0.242732] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242757] system 00:06: [mem 0xfd000000-0xfdabffff] has been reserved +[ 0.242759] system 00:06: [mem 0xfdad0000-0xfdadffff] has been reserved +[ 0.242760] system 00:06: [mem 0xfdb00000-0xfdffffff] has been reserved +[ 0.242761] system 00:06: [mem 0xfe000000-0xfe01ffff] could not be reserved +[ 0.242762] system 00:06: [mem 0xfe036000-0xfe03bfff] has been reserved +[ 0.242763] system 00:06: [mem 0xfe03d000-0xfe3fffff] has been reserved +[ 0.242764] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.242943] system 00:07: [io 0xff00-0xfffe] has been reserved +[ 0.242944] system 00:07: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.243555] system 00:08: Plug and Play ACPI device, IDs PNP0c02 (active) +[ 0.244099] pnp: PnP ACPI: found 9 devices +[ 0.252045] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns +[ 0.252073] pci 0000:00:1b.0: PCI bridge to [bus 01] +[ 0.252075] pci 0000:00:1b.0: bridge window [io 0xe000-0xefff] +[ 0.252078] pci 0000:00:1b.0: bridge window [mem 0xdf000000-0xdf0fffff] +[ 0.252082] pci 0000:00:1d.0: PCI bridge to [bus 02] +[ 0.252089] pci 0000:03:00.0: PCI bridge to [bus 04] +[ 0.252102] pci 0000:00:1d.2: PCI bridge to [bus 03-04] +[ 0.252109] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window] +[ 0.252110] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window] +[ 0.252111] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window] +[ 0.252112] pci_bus 0000:00: resource 7 [mem 0x91000000-0xdfffffff window] +[ 0.252113] pci_bus 0000:00: resource 8 [mem 0xfd000000-0xfe7fffff window] +[ 0.252114] pci_bus 0000:01: resource 0 [io 0xe000-0xefff] +[ 0.252115] pci_bus 0000:01: resource 1 [mem 0xdf000000-0xdf0fffff] +[ 0.252133] NET: Registered protocol family 2 +[ 0.252300] TCP established hash table entries: 524288 (order: 10, 4194304 bytes) +[ 0.252716] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) +[ 0.252799] TCP: Hash tables configured (established 524288 bind 65536) +[ 0.252833] UDP hash table entries: 32768 (order: 8, 1048576 bytes) +[ 0.252945] UDP-Lite hash table entries: 32768 (order: 8, 1048576 bytes) +[ 0.253054] NET: Registered protocol family 1 +[ 0.253064] pci 0000:00:02.0: Video device with shadowed ROM +[ 0.253266] PCI: CLS 0 bytes, default 64 +[ 0.253295] Trying to unpack rootfs image as initramfs... +[ 0.631688] Freeing initrd memory: 35468K (ffff880033aaa000 - ffff880035d4d000) +[ 0.631711] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) +[ 0.631712] software IO TLB [mem 0x7e3ab000-0x823ab000] (64MB) mapped at [ffff88007e3ab000-ffff8800823aafff] +[ 0.631836] Scanning for low memory corruption every 60 seconds +[ 0.632102] futex hash table entries: 1024 (order: 4, 65536 bytes) +[ 0.632122] audit: initializing netlink subsys (disabled) +[ 0.632133] audit: type=2000 audit(1478497727.636:1): initialized +[ 0.632389] Initialise system trusted keyring +[ 0.632526] HugeTLB registered 1 GB page size, pre-allocated 0 pages +[ 0.632527] HugeTLB registered 2 MB page size, pre-allocated 0 pages +[ 0.633449] zbud: loaded +[ 0.633620] VFS: Disk quotas dquot_6.6.0 +[ 0.633642] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) +[ 0.633803] squashfs: version 4.0 (2009/01/31) Phillip Lougher +[ 0.634003] fuse init (API version 7.23) +[ 0.634104] Key type big_key registered +[ 0.634125] Allocating IMA MOK and blacklist keyrings. +[ 0.635054] Key type asymmetric registered +[ 0.635056] Asymmetric key parser 'x509' registered +[ 0.635077] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249) +[ 0.635137] io scheduler noop registered +[ 0.635138] io scheduler deadline registered (default) +[ 0.635156] io scheduler cfq registered +[ 0.635488] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 +[ 0.635493] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 +[ 0.635515] efifb: probing for efifb +[ 0.635524] efifb: framebuffer at 0xc0000000, mapped to 0xffffc90006c00000, using 3072k, total 3072k +[ 0.635525] efifb: mode is 1024x768x32, linelength=4096, pages=1 +[ 0.635525] efifb: scrolling: redraw +[ 0.635526] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0 +[ 0.635586] Console: switching to colour frame buffer device 128x48 +[ 0.635594] fb0: EFI VGA frame buffer device +[ 0.635600] intel_idle: MWAIT substates: 0x142120 +[ 0.635601] intel_idle: v0.4.1 model 0x5E +[ 0.635601] intel_idle: lapic_timer_reliable_states 0xffffffff +[ 0.635786] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input0 +[ 0.635789] ACPI: Sleep Button [SLPB] +[ 0.635810] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1 +[ 0.635811] ACPI: Power Button [PWRB] +[ 0.635832] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 +[ 0.635833] ACPI: Power Button [PWRF] +[ 0.636355] thermal LNXTHERM:00: registered as thermal_zone0 +[ 0.636356] ACPI: Thermal Zone [TZ00] (28 C) +[ 0.636436] thermal LNXTHERM:01: registered as thermal_zone1 +[ 0.636437] ACPI: Thermal Zone [TZ01] (30 C) +[ 0.636466] GHES: HEST is not enabled! +[ 0.636550] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled +[ 0.657104] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A +[ 0.677695] serial8250: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A +[ 0.679815] Linux agpgart interface v0.103 +[ 0.683415] brd: module loaded +[ 0.685084] loop: module loaded +[ 0.685197] libphy: Fixed MDIO Bus: probed +[ 0.685198] tun: Universal TUN/TAP device driver, 1.6 +[ 0.685199] tun: (C) 1999-2004 Max Krasnyansky +[ 0.685248] PPP generic driver version 2.4.2 +[ 0.685312] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver +[ 0.685315] ehci-pci: EHCI PCI platform driver +[ 0.685321] ehci-platform: EHCI generic platform driver +[ 0.685327] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver +[ 0.685329] ohci-pci: OHCI PCI platform driver +[ 0.685335] ohci-platform: OHCI generic platform driver +[ 0.685340] uhci_hcd: USB Universal Host Controller Interface driver +[ 0.685435] xhci_hcd 0000:00:14.0: xHCI Host Controller +[ 0.685438] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1 +[ 0.686513] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x00109810 +[ 0.686517] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported +[ 0.686573] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 +[ 0.686574] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 +[ 0.686575] usb usb1: Product: xHCI Host Controller +[ 0.686576] usb usb1: Manufacturer: Linux 4.4.0-42-generic xhci-hcd +[ 0.686577] usb usb1: SerialNumber: 0000:00:14.0 +[ 0.686664] hub 1-0:1.0: USB hub found +[ 0.686678] hub 1-0:1.0: 16 ports detected +[ 0.694059] xhci_hcd 0000:00:14.0: xHCI Host Controller +[ 0.694061] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2 +[ 0.694079] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003 +[ 0.694080] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 +[ 0.694080] usb usb2: Product: xHCI Host Controller +[ 0.694081] usb usb2: Manufacturer: Linux 4.4.0-42-generic xhci-hcd +[ 0.694082] usb usb2: SerialNumber: 0000:00:14.0 +[ 0.694184] hub 2-0:1.0: USB hub found +[ 0.694194] hub 2-0:1.0: 10 ports detected +[ 0.698905] i8042: PNP: No PS/2 controller found. Probing ports directly. +[ 0.702032] serio: i8042 KBD port at 0x60,0x64 irq 1 +[ 0.702034] serio: i8042 AUX port at 0x60,0x64 irq 12 +[ 0.702201] mousedev: PS/2 mouse device common for all mice +[ 0.702506] rtc_cmos 00:03: RTC can wake from S4 +[ 0.702921] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 +[ 0.703001] rtc_cmos 00:03: alarms up to one month, y3k, 242 bytes nvram, hpet irqs +[ 0.703006] i2c /dev entries driver +[ 0.703035] device-mapper: uevent: version 1.0.3 +[ 0.703151] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@redhat.com +[ 0.703164] Intel P-state driver initializing. +[ 0.703165] intel_pstate: HWP enabled +[ 0.704049] ledtrig-cpu: registered to indicate activity on CPUs +[ 0.704052] EFI Variables Facility v0.08 2004-May-17 +[ 0.709771] NET: Registered protocol family 10 +[ 0.710110] NET: Registered protocol family 17 +[ 0.710119] Key type dns_resolver registered +[ 0.710373] microcode: CPU0 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.710470] microcode: CPU1 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.710484] microcode: CPU2 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.710487] microcode: CPU3 sig=0x506e3, pf=0x2, revision=0x33 +[ 0.710525] microcode: Microcode Update Driver: v2.01 , Peter Oruba +[ 0.711039] registered taskstats version 1 +[ 0.711049] Loading compiled-in X.509 certificates +[ 0.711477] Loaded X.509 cert 'Build time autogenerated kernel key: e837129128998c98ce5a834cc756a195b6db2f40' +[ 0.711489] zswap: loaded using pool lzo/zbud +[ 0.713315] Key type trusted registered +[ 0.716985] Key type encrypted registered +[ 0.716989] AppArmor: AppArmor sha1 policy hashing enabled +[ 0.716991] ima: No TPM chip found, activating TPM-bypass! +[ 0.717002] evm: HMAC attrs: 0x1 +[ 0.717855] Magic number: 8:870:819 +[ 0.718189] rtc_cmos 00:03: setting system clock to 2016-11-07 05:48:48 UTC (1478497728) +[ 0.718335] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found +[ 0.718336] EDD information not available. +[ 0.718424] PM: Hibernation image not present or could not be loaded. +[ 0.719312] Freeing unused kernel memory: 1480K (ffffffff81f42000 - ffffffff820b4000) +[ 0.719313] Write protecting the kernel read-only data: 14336k +[ 0.719935] Freeing unused kernel memory: 1820K (ffff880002839000 - ffff880002a00000) +[ 0.720263] Freeing unused kernel memory: 152K (ffff880002dda000 - ffff880002e00000) +[ 0.727499] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.727541] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.727548] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.727810] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.727836] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.727971] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.727998] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.728023] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.728045] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.728072] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available) +[ 0.750592] FUJITSU Extended Socket Network Device Driver - version 1.0 - Copyright (c) 2015 FUJITSU LIMITED +[ 0.757920] wmi: Mapper loaded +[ 0.771240] hidraw: raw HID events driver (C) Jiri Kosina +[ 0.776605] ahci 0000:00:17.0: version 3.0 +[ 0.777407] [drm] Initialized drm 1.1.0 20060810 +[ 0.777514] pps_core: LinuxPPS API ver. 1 registered +[ 0.777515] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti +[ 0.778224] PTP clock support registered +[ 0.780511] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k +[ 0.780512] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. +[ 0.780577] nvme 0000:01:00.0: enabling device (0000 -> 0002) +[ 0.790616] ahci 0000:00:17.0: AHCI 0001.0301 32 slots 4 ports 6 Gbps 0xf impl SATA mode +[ 0.790618] ahci 0000:00:17.0: flags: 64bit ncq sntf led clo only pio slum part ems deso sadm sds apst +[ 0.819332] scsi host0: ahci +[ 0.819596] scsi host1: ahci +[ 0.819831] scsi host2: ahci +[ 0.820096] scsi host3: ahci +[ 0.820131] ata1: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c100 irq 313 +[ 0.820135] ata2: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c180 irq 313 +[ 0.820140] ata3: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c200 irq 313 +[ 0.820144] ata4: SATA max UDMA/133 abar m2048@0xdf14c000 port 0xdf14c280 irq 313 +[ 0.820412] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode +[ 1.002519] usb 1-1: new low-speed USB device number 2 using xhci_hcd +[ 1.138661] ata4: SATA link down (SStatus 4 SControl 300) +[ 1.138691] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300) +[ 1.138718] ata3: SATA link down (SStatus 4 SControl 300) +[ 1.138769] ata1: SATA link down (SStatus 4 SControl 300) +[ 1.139439] ata2.00: ATA-9: WDC WD10EZEX-00BN5A0, 01.01A01, max UDMA/133 +[ 1.139441] ata2.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA +[ 1.140352] ata2.00: configured for UDMA/133 +[ 1.140848] scsi 1:0:0:0: Direct-Access ATA WDC WD10EZEX-00B 1A01 PQ: 0 ANSI: 5 +[ 1.141354] sd 1:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB) +[ 1.141355] sd 1:0:0:0: [sda] 4096-byte physical blocks +[ 1.141376] sd 1:0:0:0: Attached scsi generic sg0 type 0 +[ 1.141916] sd 1:0:0:0: [sda] Write Protect is off +[ 1.141918] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00 +[ 1.142111] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA +[ 1.192566] usb 1-1: New USB device found, idVendor=046d, idProduct=c31c +[ 1.192567] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 +[ 1.192568] usb 1-1: Product: USB Keyboard +[ 1.192569] usb 1-1: Manufacturer: Logitech +[ 1.192743] usb 1-1: ep 0x81 - rounding interval to 64 microframes, ep desc says 80 microframes +[ 1.192745] usb 1-1: ep 0x82 - rounding interval to 1024 microframes, ep desc says 2040 microframes +[ 1.203996] sda: sda1 sda2 sda3 +[ 1.204715] sd 1:0:0:0: [sda] Attached SCSI disk +[ 1.204820] usbcore: registered new interface driver usbhid +[ 1.204821] usbhid: USB HID core driver +[ 1.206298] input: Logitech USB Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:046D:C31C.0001/input/input6 +[ 1.258885] hid-generic 0003:046D:C31C.0001: input,hidraw0: USB HID v1.10 Keyboard [Logitech USB Keyboard] on usb-0000:00:14.0-1/input0 +[ 1.260276] input: Logitech USB Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.1/0003:046D:C31C.0002/input/input7 +[ 1.314820] hid-generic 0003:046D:C31C.0002: input,hidraw1: USB HID v1.10 Device [Logitech USB Keyboard] on usb-0000:00:14.0-1/input1 +[ 1.315043] e1000e 0000:00:1f.6 eth0: registered PHC clock +[ 1.315044] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) d8:cb:8a:c4:3a:78 +[ 1.315045] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection +[ 1.315119] e1000e 0000:00:1f.6 eth0: MAC: 12, PHY: 12, PBA No: FFFFFF-0FF +[ 1.315824] e1000e 0000:00:1f.6 enp0s31f6: renamed from eth0 +[ 1.316014] [drm] Memory usable by graphics device = 4096M +[ 1.316016] checking generic (c0000000 300000) vs hw (c0000000 10000000) +[ 1.316017] fb: switching to inteldrmfb from EFI VGA +[ 1.316031] Console: switching to colour dummy device 80x25 +[ 1.316162] [drm] Replacing VGA console driver +[ 1.322347] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). +[ 1.322348] [drm] Driver supports precise vblank timestamp query. +[ 1.329078] [drm] Finished loading i915/skl_dmc_ver1.bin (v1.26) +[ 1.331645] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem +[ 1.340844] [drm] failed to retrieve link info, disabling eDP +[ 1.345582] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) +[ 1.345910] acpi device:0f: registered as cooling_device9 +[ 1.345958] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input8 +[ 1.346150] [drm] Initialized i915_bpo 1.6.0 20160425 for 0000:00:02.0 on minor 0 +[ 1.366557] usb 1-2: new full-speed USB device number 3 using xhci_hcd +[ 1.484566] fbcon: inteldrmfb (fb0) is primary device +[ 1.484612] Console: switching to colour frame buffer device 160x64 +[ 1.484635] i915_bpo 0000:00:02.0: fb0: inteldrmfb frame buffer device +[ 1.496879] usb 1-2: New USB device found, idVendor=046d, idProduct=c247 +[ 1.496880] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 +[ 1.496881] usb 1-2: Product: G100s Optical Gaming Mouse +[ 1.496882] usb 1-2: Manufacturer: Logitech +[ 1.498669] input: Logitech G100s Optical Gaming Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:046D:C247.0003/input/input9 +[ 1.499035] hid-generic 0003:046D:C247.0003: input,hidraw2: USB HID v1.10 Mouse [Logitech G100s Optical Gaming Mouse] on usb-0000:00:14.0-2/input0 +[ 1.630599] tsc: Refined TSC clocksource calibration: 3311.992 MHz +[ 1.630601] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x2fbd8cbe157, max_idle_ns: 440795320157 ns +[ 2.029158] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) +[ 2.630952] clocksource: Switched to clocksource tsc +[ 2.662430] random: nonblocking pool is initialized +[ 2.790854] [drm] RC6 on +[ 2.913361] systemd[1]: systemd 229 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN) +[ 2.913436] systemd[1]: Detected architecture x86-64. +[ 2.921671] systemd[1]: Set hostname to . +[ 4.413881] systemd[1]: Listening on fsck to fsckd communication Socket. +[ 4.413922] systemd[1]: Listening on Journal Socket. +[ 4.413938] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe. +[ 4.413983] systemd[1]: Created slice System Slice. +[ 4.426596] systemd[1]: Mounting Huge Pages File System... +[ 4.428097] systemd[1]: Starting Load Kernel Modules... +[ 4.428154] systemd[1]: Created slice system-systemd\x2dfsck.slice. +[ 4.428173] systemd[1]: Reached target Encrypted Volumes. +[ 4.428195] systemd[1]: Listening on Journal Socket (/dev/log). +[ 4.428413] systemd[1]: Started Read required files in advance. +[ 4.428559] systemd[1]: Listening on udev Kernel Socket. +[ 4.428852] systemd[1]: Starting Uncomplicated firewall... +[ 4.428883] systemd[1]: Started Forward Password Requests to Wall Directory Watch. +[ 4.429108] systemd[1]: Mounting POSIX Message Queue File System... +[ 4.429177] systemd[1]: Created slice system-getty.slice. +[ 4.429218] systemd[1]: Created slice User and Session Slice. +[ 4.429228] systemd[1]: Reached target User and Group Name Lookups. +[ 4.429239] systemd[1]: Reached target Slices. +[ 4.429257] systemd[1]: Listening on Syslog Socket. +[ 4.429262] systemd[1]: Reached target Remote File Systems (Pre). +[ 4.429531] systemd[1]: Starting Create list of required static device nodes for the current kernel... +[ 4.429642] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point. +[ 4.641503] systemd[1]: Reached target Remote File Systems. +[ 4.641562] systemd[1]: Listening on Journal Audit Socket. +[ 4.650721] systemd[1]: Starting Journal Service... +[ 4.650756] systemd[1]: Listening on udev Control Socket. +[ 4.651027] systemd[1]: Mounting Debug File System... +[ 4.651240] systemd[1]: Starting Braille Device Support... +[ 4.652109] systemd[1]: Started Uncomplicated firewall. +[ 4.652259] systemd[1]: Started Create list of required static device nodes for the current kernel. +[ 4.661956] systemd[1]: Starting Create Static Device Nodes in /dev... +[ 5.002917] lp: driver loaded but no devices found +[ 5.034274] ppdev: user-space parallel port driver +[ 5.072695] systemd[1]: Started Journal Service. +[ 5.076269] parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE,EPP] +[ 5.076901] parport0: irq 7 detected +[ 5.170810] lp0: using parport0 (polling). +[ 9.264316] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro +[ 9.419063] systemd-journald[235]: Received request to flush runtime journal from PID 1 +[ 9.758450] mei_me 0000:00:16.0: enabling device (0000 -> 0002) +[ 9.785562] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 +[ 9.802626] intel-lpss 0000:00:15.0: enabling device (0000 -> 0002) +[ 9.870894] idma64 idma64.0: Found Intel integrated DMA 64-bit +[ 9.902566] intel-lpss 0000:00:15.1: enabling device (0000 -> 0002) +[ 9.902763] idma64 idma64.1: Found Intel integrated DMA 64-bit +[ 9.934567] intel-lpss 0000:00:1e.0: enabling device (0000 -> 0002) +[ 9.934762] idma64 idma64.2: Found Intel integrated DMA 64-bit +[ 9.971878] Bluetooth: Core ver 2.21 +[ 9.971886] NET: Registered protocol family 31 +[ 9.971887] Bluetooth: HCI device and connection manager initialized +[ 9.971889] Bluetooth: HCI socket layer initialized +[ 9.971891] Bluetooth: L2CAP socket layer initialized +[ 9.971893] Bluetooth: SCO socket layer initialized +[ 10.190441] Bluetooth: HCI UART driver ver 2.3 +[ 10.190443] Bluetooth: HCI UART protocol H4 registered +[ 10.190443] Bluetooth: HCI UART protocol BCSP registered +[ 10.190444] Bluetooth: HCI UART protocol LL registered +[ 10.190444] Bluetooth: HCI UART protocol ATH3K registered +[ 10.190445] Bluetooth: HCI UART protocol Three-wire (H5) registered +[ 10.190463] Bluetooth: HCI UART protocol Intel registered +[ 10.190469] Bluetooth: HCI UART protocol BCM registered +[ 10.190470] Bluetooth: HCI UART protocol QCA registered +[ 10.253741] AVX2 version of gcm_enc/dec engaged. +[ 10.253742] AES CTR mode by8 optimization enabled +[ 10.502714] dw-apb-uart.2: ttyS4 at MMIO 0xdf14b000 (irq = 20, base_baud = 115200) is a 16550A +[ 10.620393] snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002) +[ 10.620497] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915_bpo]) +[ 10.716741] snd_hda_codec_realtek hdaudioC0D0: ALC1150: SKU not ready 0x00000000 +[ 10.717223] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC1150: line_outs=3 (0x14/0x15/0x16/0x0/0x0) type:line +[ 10.717224] snd_hda_codec_realtek hdaudioC0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) +[ 10.717225] snd_hda_codec_realtek hdaudioC0D0: hp_outs=1 (0x1b/0x0/0x0/0x0/0x0) +[ 10.717226] snd_hda_codec_realtek hdaudioC0D0: mono: mono_out=0x0 +[ 10.717227] snd_hda_codec_realtek hdaudioC0D0: dig-out=0x1e/0x0 +[ 10.717228] snd_hda_codec_realtek hdaudioC0D0: inputs: +[ 10.717229] snd_hda_codec_realtek hdaudioC0D0: Front Mic=0x19 +[ 10.717230] snd_hda_codec_realtek hdaudioC0D0: Rear Mic=0x18 +[ 10.717230] snd_hda_codec_realtek hdaudioC0D0: Line=0x1a +[ 10.755617] input: HDA Intel PCH Front Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input10 +[ 10.755651] input: HDA Intel PCH Rear Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input11 +[ 10.755678] input: HDA Intel PCH Line as /devices/pci0000:00/0000:00:1f.3/sound/card0/input12 +[ 10.755705] input: HDA Intel PCH Line Out Front as /devices/pci0000:00/0000:00:1f.3/sound/card0/input13 +[ 10.755732] input: HDA Intel PCH Line Out Surround as /devices/pci0000:00/0000:00:1f.3/sound/card0/input14 +[ 10.755759] input: HDA Intel PCH Line Out CLFE as /devices/pci0000:00/0000:00:1f.3/sound/card0/input15 +[ 10.755785] input: HDA Intel PCH Front Headphone as /devices/pci0000:00/0000:00:1f.3/sound/card0/input16 +[ 10.755812] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input17 +[ 10.755839] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input18 +[ 10.755868] input: HDA Intel PCH HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input19 +[ 10.898309] intel_rapl: Found RAPL domain package +[ 10.898310] intel_rapl: Found RAPL domain core +[ 10.898311] intel_rapl: Found RAPL domain uncore +[ 10.898312] intel_rapl: Found RAPL domain dram +[ 11.595395] Adding 8268796k swap on /dev/sda3. Priority:-1 extents:1 across:8268796k FS +[ 18.860473] audit: type=1400 audit(1478497746.636:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/ubuntu-core-launcher" pid=581 comm="apparmor_parser" +[ 18.861195] audit: type=1400 audit(1478497746.636:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/sbin/dhclient" pid=578 comm="apparmor_parser" +[ 18.861199] audit: type=1400 audit(1478497746.636:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=578 comm="apparmor_parser" +[ 18.861201] audit: type=1400 audit(1478497746.636:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-helper" pid=578 comm="apparmor_parser" +[ 18.861218] audit: type=1400 audit(1478497746.636:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=578 comm="apparmor_parser" +[ 18.861444] audit: type=1400 audit(1478497746.636:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/lightdm/lightdm-guest-session" pid=577 comm="apparmor_parser" +[ 18.861448] audit: type=1400 audit(1478497746.636:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/lightdm/lightdm-guest-session//chromium" pid=577 comm="apparmor_parser" +[ 18.862049] audit: type=1400 audit(1478497746.636:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/cups-browsed" pid=583 comm="apparmor_parser" +[ 18.862532] audit: type=1400 audit(1478497746.636:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/ippusbxd" pid=585 comm="apparmor_parser" +[ 18.862920] audit: type=1400 audit(1478497746.640:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/cups/backend/cups-pdf" pid=584 comm="apparmor_parser" +[ 21.632541] IPv6: ADDRCONF(NETDEV_UP): enp0s31f6: link is not ready +[ 21.839070] IPv6: ADDRCONF(NETDEV_UP): enp0s31f6: link is not ready +[ 24.388841] e1000e: enp0s31f6 NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx/Tx +[ 24.388848] e1000e 0000:00:1f.6 enp0s31f6: 10/100 speed: disabling TSO +[ 24.388896] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s31f6: link becomes ready +[ 31.331711] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 +[ 31.331712] Bluetooth: BNEP filters: protocol multicast +[ 31.331715] Bluetooth: BNEP socket layer initialized +[ 201.164830] risa_dev_ramdrive_timing: module verification failed: signature and/or required key missing - tainting kernel +[ 201.166005] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 201.179129] bdbm: ===================================================================== +[ 201.179134] bdbm: DEVICE PARAMETERS +[ 201.179137] bdbm: ===================================================================== +[ 201.179139] bdbm: # of channels = 8 +[ 201.179142] bdbm: # of chips per channel = 16 +[ 201.179144] bdbm: # of blocks per chip = 256 +[ 201.179146] bdbm: # of pages per block = 128 +[ 201.179148] bdbm: # of subpages per page = 1 +[ 201.179150] bdbm: page main size = 4096 bytes +[ 201.179153] bdbm: page oob size = 64 bytes +[ 201.179156] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 201.179158] bdbm: +[ 201.179161] bdbm: ===================================================================== +[ 201.179163] bdbm: RAM DISK INFO +[ 201.179165] bdbm: ===================================================================== +[ 201.179168] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[ 202.774307] bdbm: ramssd addr = ffffc90050001000 +[ 202.774310] bdbm: +[ 202.774310] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 204.335386] bdbm: *** building ptr_ramssd_data done +[ 204.335622] bdbm: [dm_ramdrive_probe] probe done! +[ 204.335624] bdbm: [dm_ramdrive_open] open done! +[ 204.385624] bdbm: nvm cache addr = ffffc90870003000 +[ 204.386642] bdbm: ========================================================== +[ 204.386643] bdbm: NVM CONFIGURATION +[ 204.386644] bdbm: ========================================================== +[ 204.386645] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[ 204.544637] bdbm: TRIM is disabled +[ 204.544769] bdbm: ===================================================================== +[ 204.544770] bdbm: DEVICE PARAMETERS +[ 204.544770] bdbm: ===================================================================== +[ 204.544771] bdbm: # of channels = 8 +[ 204.544771] bdbm: # of chips per channel = 16 +[ 204.544772] bdbm: # of blocks per chip = 256 +[ 204.544772] bdbm: # of pages per block = 128 +[ 204.544772] bdbm: # of subpages per page = 1 +[ 204.544774] bdbm: page main size = 4096 bytes +[ 204.544775] bdbm: page oob size = 64 bytes +[ 204.544775] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 204.544776] bdbm: +[ 204.544776] bdbm: ===================================================================== +[ 204.544777] bdbm: FTL CONFIGURATION +[ 204.544777] bdbm: ===================================================================== +[ 204.544778] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 204.544778] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 204.544780] bdbm: wl policy = 1 (1: none, 2: swap) +[ 204.544780] bdbm: trim mode = 2 (1: enable, 2: disable) +[ 204.544781] bdbm: kernel sector = 512 bytes +[ 204.544781] bdbm: +[ 204.544783] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 204.614242] bdbm: llm_make_req: 0, 1 +[ 205.039138] bdbm: llm_make_req: 50000, 96 +[ 205.186154] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[ 205.186157] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 210.266040] bdbm: llm_make_req: 100000, 95 +[ 221.656156] bdbm: llm_make_req: 150000, 96 +[ 221.901463] bdbm: llm_make_req: 200000, 96 +[ 222.146440] bdbm: llm_make_req: 250000, 96 +[ 222.392132] bdbm: llm_make_req: 300000, 96 +[ 222.637308] bdbm: llm_make_req: 350000, 96 +[ 222.881605] bdbm: llm_make_req: 400000, 96 +[ 223.129922] bdbm: llm_make_req: 450000, 96 +[ 223.374084] bdbm: llm_make_req: 500000, 96 +[ 223.618766] bdbm: llm_make_req: 550000, 96 +[ 223.862906] bdbm: llm_make_req: 600000, 96 +[ 224.111674] bdbm: llm_make_req: 650000, 96 +[ 224.355987] bdbm: llm_make_req: 700000, 96 +[ 224.599779] bdbm: llm_make_req: 750000, 94 +[ 224.842620] bdbm: llm_make_req: 800000, 96 +[ 225.085519] bdbm: llm_make_req: 850000, 96 +[ 225.328288] bdbm: llm_make_req: 900000, 96 +[ 225.571774] bdbm: llm_make_req: 950000, 96 +[ 225.815612] bdbm: llm_make_req: 1000000, 96 +[ 226.058492] bdbm: llm_make_req: 1050000, 96 +[ 226.301717] bdbm: llm_make_req: 1100000, 96 +[ 226.554982] bdbm: llm_make_req: 1150000, 96 +[ 226.798877] bdbm: llm_make_req: 1200000, 96 +[ 227.041770] bdbm: llm_make_req: 1250000, 96 +[ 227.285225] bdbm: llm_make_req: 1300000, 96 +[ 227.527897] bdbm: llm_make_req: 1350000, 96 +[ 227.770621] bdbm: llm_make_req: 1400000, 96 +[ 228.013155] bdbm: llm_make_req: 1450000, 96 +[ 228.255755] bdbm: llm_make_req: 1500000, 96 +[ 228.504349] bdbm: llm_make_req: 1550000, 96 +[ 228.749987] bdbm: llm_make_req: 1600000, 96 +[ 228.996107] bdbm: llm_make_req: 1650000, 96 +[ 229.243641] bdbm: llm_make_req: 1700000, 96 +[ 229.490537] bdbm: llm_make_req: 1750000, 96 +[ 229.737032] bdbm: llm_make_req: 1800000, 96 +[ 229.983577] bdbm: llm_make_req: 1850000, 95 +[ 230.229291] bdbm: llm_make_req: 1900000, 96 +[ 230.475663] bdbm: llm_make_req: 1950000, 78 +[ 230.721034] bdbm: llm_make_req: 2000000, 96 +[ 230.967432] bdbm: llm_make_req: 2050000, 96 +[ 231.214258] bdbm: llm_make_req: 2100000, 96 +[ 231.458001] bdbm: llm_make_req: 2150000, 96 +[ 231.700608] bdbm: llm_make_req: 2200000, 96 +[ 231.943900] bdbm: llm_make_req: 2250000, 96 +[ 232.186359] bdbm: llm_make_req: 2300000, 96 +[ 232.429009] bdbm: llm_make_req: 2350000, 96 +[ 232.671224] bdbm: llm_make_req: 2400000, 96 +[ 232.913611] bdbm: llm_make_req: 2450000, 96 +[ 233.155616] bdbm: llm_make_req: 2500000, 96 +[ 233.398179] bdbm: llm_make_req: 2550000, 95 +[ 233.641571] bdbm: llm_make_req: 2600000, 96 +[ 233.884897] bdbm: llm_make_req: 2650000, 96 +[ 234.128019] bdbm: llm_make_req: 2700000, 95 +[ 235.140299] bdbm: llm_make_req: 2750000, 94 +[ 235.338086] bdbm: llm_make_req: 2800000, 89 +[ 235.537758] bdbm: llm_make_req: 2850000, 95 +[ 235.738426] bdbm: llm_make_req: 2900000, 96 +[ 235.938552] bdbm: llm_make_req: 2950000, 91 +[ 236.138003] bdbm: llm_make_req: 3000000, 95 +[ 236.336530] bdbm: llm_make_req: 3050000, 92 +[ 236.534261] bdbm: llm_make_req: 3100000, 94 +[ 236.734500] bdbm: llm_make_req: 3150000, 95 +[ 236.932780] bdbm: llm_make_req: 3200000, 96 +[ 237.132222] bdbm: llm_make_req: 3250000, 95 +[ 237.331569] bdbm: llm_make_req: 3300000, 83 +[ 237.530720] bdbm: llm_make_req: 3350000, 96 +[ 237.731338] bdbm: llm_make_req: 3400000, 96 +[ 237.929979] bdbm: llm_make_req: 3450000, 96 +[ 238.128180] bdbm: llm_make_req: 3500000, 96 +[ 238.327188] bdbm: llm_make_req: 3550000, 96 +[ 238.526338] bdbm: llm_make_req: 3600000, 96 +[ 238.724756] bdbm: llm_make_req: 3650000, 95 +[ 238.923889] bdbm: llm_make_req: 3700000, 96 +[ 239.123168] bdbm: llm_make_req: 3750000, 85 +[ 239.323025] bdbm: llm_make_req: 3800000, 93 +[ 239.522488] bdbm: llm_make_req: 3850000, 96 +[ 239.720887] bdbm: llm_make_req: 3900000, 95 +[ 239.920058] bdbm: llm_make_req: 3950000, 96 +[ 240.120300] bdbm: llm_make_req: 4000000, 96 +[ 240.319086] bdbm: llm_make_req: 4050000, 95 +[ 240.517112] bdbm: llm_make_req: 4100000, 95 +[ 240.714603] bdbm: llm_make_req: 4150000, 95 +[ 240.914436] bdbm: llm_make_req: 4200000, 96 +[ 241.113846] bdbm: llm_make_req: 4250000, 96 +[ 241.313106] bdbm: llm_make_req: 4300000, 92 +[ 241.512986] bdbm: llm_make_req: 4350000, 91 +[ 241.711582] bdbm: llm_make_req: 4400000, 96 +[ 241.909202] bdbm: llm_make_req: 4450000, 96 +[ 242.108501] bdbm: llm_make_req: 4500000, 96 +[ 242.306706] bdbm: llm_make_req: 4550000, 96 +[ 242.505194] bdbm: llm_make_req: 4600000, 95 +[ 242.703368] bdbm: llm_make_req: 4650000, 96 +[ 242.901631] bdbm: llm_make_req: 4700000, 96 +[ 243.100489] bdbm: llm_make_req: 4750000, 95 +[ 243.299840] bdbm: llm_make_req: 4800000, 96 +[ 243.498800] bdbm: llm_make_req: 4850000, 96 +[ 243.697887] bdbm: llm_make_req: 4900000, 94 +[ 244.262378] bdbm: llm_make_req: 4950000, 96 +[ 245.203313] bdbm: llm_make_req: 5000000, 96 +[ 246.361698] bdbm: llm_make_req: 5050000, 96 +[ 248.227744] bdbm: llm_make_req: 5100000, 92 +[ 249.827652] bdbm: llm_make_req: 5150000, 96 +[ 251.541004] bdbm: llm_make_req: 5200000, 96 +[ 253.597251] bdbm: llm_make_req: 5250000, 96 +[ 255.781240] bdbm: llm_make_req: 5300000, 96 +[ 257.618401] bdbm: llm_make_req: 5350000, 96 +[ 259.858078] bdbm: llm_make_req: 5400000, 93 +[ 262.006318] bdbm: llm_make_req: 5450000, 96 +[ 263.866201] bdbm: llm_make_req: 5500000, 96 +[ 266.282530] bdbm: llm_make_req: 5550000, 96 +[ 268.619633] bdbm: llm_make_req: 5600000, 96 +[ 270.468954] bdbm: llm_make_req: 5650000, 96 +[ 273.175339] bdbm: llm_make_req: 5700000, 96 +[ 275.532183] bdbm: llm_make_req: 5750000, 96 +[ 277.329108] bdbm: llm_make_req: 5800000, 95 +[ 279.807165] bdbm: llm_make_req: 5850000, 96 +[ 282.330197] bdbm: llm_make_req: 5900000, 96 +[ 284.593995] bdbm: llm_make_req: 5950000, 96 +[ 287.177560] bdbm: llm_make_req: 6000000, 96 +[ 289.355869] bdbm: llm_make_req: 6050000, 96 +[ 291.985928] bdbm: llm_make_req: 6100000, 96 +[ 294.560538] bdbm: llm_make_req: 6150000, 96 +[ 296.509470] bdbm: llm_make_req: 6200000, 96 +[ 299.171818] bdbm: llm_make_req: 6250000, 96 +[ 301.798241] bdbm: llm_make_req: 6300000, 96 +[ 304.096547] bdbm: llm_make_req: 6350000, 93 +[ 306.702625] bdbm: llm_make_req: 6400000, 96 +[ 308.908055] bdbm: llm_make_req: 6450000, 96 +[ 311.727119] bdbm: llm_make_req: 6500000, 32 +[ 314.293999] bdbm: llm_make_req: 6550000, 96 +[ 316.331564] bdbm: llm_make_req: 6600000, 96 +[ 319.043634] bdbm: llm_make_req: 6650000, 96 +[ 321.502084] bdbm: llm_make_req: 6700000, 96 +[ 324.258749] bdbm: llm_make_req: 6750000, 95 +[ 327.025064] bdbm: llm_make_req: 6800000, 96 +[ 329.120779] bdbm: llm_make_req: 6850000, 96 +[ 332.014897] bdbm: llm_make_req: 6900000, 96 +[ 334.549682] bdbm: llm_make_req: 6950000, 96 +[ 337.143361] bdbm: llm_make_req: 7000000, 96 +[ 340.296449] bdbm: llm_make_req: 7050000, 96 +[ 342.600292] bdbm: llm_make_req: 7100000, 95 +[ 345.535470] bdbm: llm_make_req: 7150000, 96 +[ 348.044884] bdbm: llm_make_req: 7200000, 96 +[ 350.618577] bdbm: llm_make_req: 7250000, 96 +[ 353.757609] bdbm: llm_make_req: 7300000, 96 +[ 356.148928] bdbm: llm_make_req: 7350000, 96 +[ 359.216706] bdbm: llm_make_req: 7400000, 96 +[ 361.626726] bdbm: llm_make_req: 7450000, 96 +[ 364.501103] bdbm: llm_make_req: 7500000, 95 +[ 367.500019] bdbm: llm_make_req: 7550000, 96 +[ 370.274734] bdbm: llm_make_req: 7600000, 96 +[ 373.361624] bdbm: llm_make_req: 7650000, 96 +[ 375.633550] bdbm: llm_make_req: 7700000, 88 +[ 378.705761] bdbm: llm_make_req: 7750000, 95 +[ 381.325732] bdbm: llm_make_req: 7800000, 96 +[ 384.002692] bdbm: llm_make_req: 7850000, 96 +[ 387.103504] bdbm: llm_make_req: 7900000, 96 +[ 389.598918] bdbm: llm_make_req: 7950000, 79 +[ 392.648276] bdbm: llm_make_req: 8000000, 95 +[ 394.972355] bdbm: llm_make_req: 8050000, 96 +[ 397.896511] bdbm: llm_make_req: 8100000, 96 +[ 400.738839] bdbm: llm_make_req: 8150000, 96 +[ 403.237549] bdbm: llm_make_req: 8200000, 96 +[ 406.510201] bdbm: llm_make_req: 8250000, 96 +[ 408.967336] bdbm: llm_make_req: 8300000, 96 +[ 412.044499] bdbm: llm_make_req: 8350000, 96 +[ 414.443778] bdbm: llm_make_req: 8400000, 96 +[ 417.362853] bdbm: llm_make_req: 8450000, 96 +[ 420.305143] bdbm: llm_make_req: 8500000, 96 +[ 422.749583] bdbm: llm_make_req: 8550000, 95 +[ 426.055212] bdbm: llm_make_req: 8600000, 96 +[ 428.415057] bdbm: llm_make_req: 8650000, 96 +[ 431.586515] bdbm: llm_make_req: 8700000, 96 +[ 434.092372] bdbm: llm_make_req: 8750000, 96 +[ 436.951925] bdbm: llm_make_req: 8800000, 96 +[ 439.963240] bdbm: llm_make_req: 8850000, 96 +[ 442.613082] bdbm: llm_make_req: 8900000, 94 +[ 445.624892] bdbm: llm_make_req: 8950000, 96 +[ 447.814728] bdbm: llm_make_req: 9000000, 96 +[ 450.768162] bdbm: llm_make_req: 9050000, 96 +[ 453.427122] bdbm: llm_make_req: 9100000, 96 +[ 456.203081] bdbm: llm_make_req: 9150000, 96 +[ 459.095193] bdbm: llm_make_req: 9200000, 96 +[ 461.352915] bdbm: llm_make_req: 9250000, 92 +[ 464.347346] bdbm: llm_make_req: 9300000, 96 +[ 466.881884] bdbm: llm_make_req: 9350000, 96 +[ 469.432553] bdbm: llm_make_req: 9400000, 96 +[ 472.471076] bdbm: llm_make_req: 9450000, 96 +[ 474.770441] bdbm: llm_make_req: 9500000, 96 +[ 477.660217] bdbm: llm_make_req: 9550000, 96 +[ 480.058891] bdbm: llm_make_req: 9600000, 96 +[ 482.719745] bdbm: llm_make_req: 9650000, 96 +[ 485.687242] bdbm: llm_make_req: 9700000, 96 +[ 488.003533] bdbm: llm_make_req: 9750000, 96 +[ 490.764676] bdbm: llm_make_req: 9800000, 96 +[ 493.101724] bdbm: llm_make_req: 9850000, 96 +[ 495.624300] bdbm: llm_make_req: 9900000, 96 +[ 498.571196] bdbm: llm_make_req: 9950000, 96 +[ 500.723782] bdbm: llm_make_req: 10000000, 96 +[ 503.362873] bdbm: llm_make_req: 10050000, 96 +[ 505.891213] bdbm: llm_make_req: 10100000, 96 +[ 508.367461] bdbm: llm_make_req: 10150000, 96 +[ 510.859033] bdbm: llm_make_req: 10200000, 96 +[ 512.875896] bdbm: llm_make_req: 10250000, 96 +[ 515.528765] bdbm: llm_make_req: 10300000, 96 +[ 517.796255] bdbm: llm_make_req: 10350000, 96 +[ 519.583320] bdbm: llm_make_req: 10400000, 94 +[ 522.112638] bdbm: llm_make_req: 10450000, 94 +[ 524.176712] bdbm: llm_make_req: 10500000, 96 +[ 525.869177] bdbm: llm_make_req: 10550000, 96 +[ 528.054248] bdbm: llm_make_req: 10600000, 94 +[ 529.819268] bdbm: llm_make_req: 10650000, 96 +[ 531.474200] bdbm: llm_make_req: 10700000, 96 +[ 533.395905] bdbm: llm_make_req: 10750000, 95 +[ 535.344286] bdbm: llm_make_req: 10800000, 96 +[ 536.913559] bdbm: llm_make_req: 10850000, 96 +[ 538.308890] bdbm: llm_make_req: 10900000, 93 +[ 540.060481] bdbm: llm_make_req: 10950000, 95 +[ 541.805470] bdbm: llm_make_req: 11000000, 95 +[ 543.069033] bdbm: llm_make_req: 11050000, 96 +[ 544.469768] bdbm: llm_make_req: 11100000, 96 +[ 546.148145] bdbm: llm_make_req: 11150000, 96 +[ 547.847593] bdbm: llm_make_req: 11200000, 93 +[ 548.973972] bdbm: llm_make_req: 11250000, 96 +[ 550.504478] bdbm: llm_make_req: 11300000, 96 +[ 552.226897] bdbm: llm_make_req: 11350000, 96 +[ 553.562940] bdbm: llm_make_req: 11400000, 96 +[ 554.887879] bdbm: llm_make_req: 11450000, 96 +[ 556.595483] bdbm: llm_make_req: 11500000, 96 +[ 558.322996] bdbm: llm_make_req: 11550000, 95 +[ 559.652525] bdbm: llm_make_req: 11600000, 96 +[ 560.967344] bdbm: llm_make_req: 11650000, 96 +[ 562.669621] bdbm: llm_make_req: 11700000, 96 +[ 564.351260] bdbm: llm_make_req: 11750000, 92 +[ 565.692940] bdbm: llm_make_req: 11800000, 95 +[ 566.980850] bdbm: llm_make_req: 11850000, 96 +[ 568.668540] bdbm: llm_make_req: 11900000, 96 +[ 570.365368] bdbm: llm_make_req: 11950000, 96 +[ 571.733207] bdbm: llm_make_req: 12000000, 94 +[ 573.058497] bdbm: llm_make_req: 12050000, 88 +[ 574.782891] bdbm: llm_make_req: 12100000, 96 +[ 576.500224] bdbm: llm_make_req: 12150000, 96 +[ 577.721657] bdbm: llm_make_req: 12200000, 96 +[ 579.150671] bdbm: llm_make_req: 12250000, 96 +[ 580.926699] bdbm: llm_make_req: 12300000, 96 +[ 582.699336] bdbm: llm_make_req: 12350000, 96 +[ 583.818186] bdbm: llm_make_req: 12400000, 96 +[ 585.683170] bdbm: llm_make_req: 12450000, 90 +[ 587.795552] bdbm: llm_make_req: 12500000, 96 +[ 589.381448] bdbm: llm_make_req: 12550000, 96 +[ 591.259697] bdbm: llm_make_req: 12600000, 93 +[ 593.534836] bdbm: llm_make_req: 12650000, 96 +[ 595.307871] bdbm: llm_make_req: 12700000, 96 +[ 597.203129] bdbm: llm_make_req: 12750000, 96 +[ 599.226624] bdbm: llm_make_req: 12800000, 96 +[ 601.292379] bdbm: llm_make_req: 12850000, 96 +[ 603.260673] bdbm: llm_make_req: 12900000, 96 +[ 605.308290] bdbm: llm_make_req: 12950000, 96 +[ 607.441487] bdbm: llm_make_req: 13000000, 96 +[ 609.416070] bdbm: llm_make_req: 13050000, 96 +[ 611.537479] bdbm: llm_make_req: 13100000, 96 +[ 613.675423] bdbm: llm_make_req: 13150000, 96 +[ 615.769390] bdbm: llm_make_req: 13200000, 90 +[ 617.958838] bdbm: llm_make_req: 13250000, 95 +[ 620.050179] bdbm: llm_make_req: 13300000, 96 +[ 622.372563] bdbm: llm_make_req: 13350000, 96 +[ 624.686290] bdbm: llm_make_req: 13400000, 96 +[ 626.569784] bdbm: llm_make_req: 13450000, 96 +[ 629.156648] bdbm: llm_make_req: 13500000, 95 +[ 631.498905] bdbm: llm_make_req: 13550000, 96 +[ 633.298713] bdbm: llm_make_req: 13600000, 94 +[ 635.651791] bdbm: llm_make_req: 13650000, 96 +[ 638.153701] bdbm: llm_make_req: 13700000, 96 +[ 640.221419] bdbm: llm_make_req: 13750000, 94 +[ 642.632220] bdbm: llm_make_req: 13800000, 96 +[ 644.886739] bdbm: llm_make_req: 13850000, 96 +[ 647.234697] bdbm: llm_make_req: 13900000, 95 +[ 649.675524] bdbm: llm_make_req: 13950000, 96 +[ 651.691675] bdbm: llm_make_req: 14000000, 96 +[ 654.345878] bdbm: llm_make_req: 14050000, 95 +[ 656.911662] bdbm: llm_make_req: 14100000, 96 +[ 658.841216] bdbm: llm_make_req: 14150000, 92 +[ 661.483398] bdbm: llm_make_req: 14200000, 96 +[ 664.087358] bdbm: llm_make_req: 14250000, 96 +[ 666.427651] bdbm: llm_make_req: 14300000, 96 +[ 669.133103] bdbm: llm_make_req: 14350000, 96 +[ 671.303958] bdbm: llm_make_req: 14400000, 96 +[ 673.855542] bdbm: llm_make_req: 14450000, 96 +[ 676.776821] bdbm: llm_make_req: 14500000, 96 +[ 678.988975] bdbm: llm_make_req: 14550000, 96 +[ 681.712767] bdbm: llm_make_req: 14600000, 96 +[ 684.087130] bdbm: llm_make_req: 14650000, 96 +[ 686.776235] bdbm: llm_make_req: 14700000, 95 +[ 689.417925] bdbm: llm_make_req: 14750000, 96 +[ 691.532511] bdbm: llm_make_req: 14800000, 95 +[ 694.296593] bdbm: llm_make_req: 14850000, 96 +[ 696.793824] bdbm: llm_make_req: 14900000, 96 +[ 699.564918] bdbm: llm_make_req: 14950000, 90 +[ 702.386407] bdbm: llm_make_req: 15000000, 96 +[ 704.505684] bdbm: llm_make_req: 15050000, 96 +[ 707.382962] bdbm: llm_make_req: 15100000, 96 +[ 709.914429] bdbm: llm_make_req: 15150000, 96 +[ 712.679289] bdbm: llm_make_req: 15200000, 95 +[ 715.506695] bdbm: llm_make_req: 15250000, 96 +[ 717.613619] bdbm: llm_make_req: 15300000, 96 +[ 720.437621] bdbm: llm_make_req: 15350000, 96 +[ 723.046525] bdbm: llm_make_req: 15400000, 96 +[ 725.757361] bdbm: llm_make_req: 15450000, 96 +[ 728.601973] bdbm: llm_make_req: 15500000, 96 +[ 730.739266] bdbm: llm_make_req: 15550000, 96 +[ 733.586833] bdbm: llm_make_req: 15600000, 96 +[ 736.075221] bdbm: llm_make_req: 15650000, 96 +[ 738.853875] bdbm: llm_make_req: 15700000, 96 +[ 741.726354] bdbm: llm_make_req: 15750000, 96 +[ 743.770837] bdbm: llm_make_req: 15800000, 96 +[ 746.597093] bdbm: llm_make_req: 15850000, 96 +[ 749.167747] bdbm: llm_make_req: 15900000, 96 +[ 751.831554] bdbm: llm_make_req: 15950000, 96 +[ 754.680467] bdbm: llm_make_req: 16000000, 96 +[ 756.775950] bdbm: llm_make_req: 16050000, 96 +[ 759.650773] bdbm: llm_make_req: 16100000, 95 +[ 762.241261] bdbm: llm_make_req: 16150000, 96 +[ 764.954648] bdbm: llm_make_req: 16200000, 96 +[ 767.764600] bdbm: llm_make_req: 16250000, 78 +[ 769.850016] bdbm: llm_make_req: 16300000, 92 +[ 772.710733] bdbm: llm_make_req: 16350000, 96 +[ 775.339036] bdbm: llm_make_req: 16400000, 96 +[ 777.927050] bdbm: llm_make_req: 16450000, 96 +[ 780.700524] bdbm: llm_make_req: 16500000, 96 +[ 782.777149] bdbm: llm_make_req: 16550000, 96 +[ 785.468723] bdbm: llm_make_req: 16600000, 96 +[ 788.165198] bdbm: llm_make_req: 16650000, 96 +[ 790.578227] bdbm: llm_make_req: 16700000, 96 +[ 793.318965] bdbm: llm_make_req: 16750000, 96 +[ 795.455501] bdbm: llm_make_req: 16800000, 96 +[ 798.097038] bdbm: llm_make_req: 16850000, 96 +[ 800.994822] bdbm: llm_make_req: 16900000, 96 +[ 803.262234] bdbm: llm_make_req: 16950000, 96 +[ 805.984086] bdbm: llm_make_req: 17000000, 95 +[ 808.333939] bdbm: llm_make_req: 17050000, 96 +[ 811.016979] bdbm: llm_make_req: 17100000, 95 +[ 813.658153] bdbm: llm_make_req: 17150000, 96 +[ 815.662260] bdbm: llm_make_req: 17200000, 92 +[ 818.298221] bdbm: llm_make_req: 17250000, 96 +[ 820.928330] bdbm: llm_make_req: 17300000, 96 +[ 823.200946] bdbm: llm_make_req: 17350000, 93 +[ 825.766215] bdbm: llm_make_req: 17400000, 96 +[ 827.961875] bdbm: llm_make_req: 17450000, 96 +[ 830.568125] bdbm: llm_make_req: 17500000, 96 +[ 833.124537] bdbm: llm_make_req: 17550000, 96 +[ 835.057069] bdbm: llm_make_req: 17600000, 96 +[ 837.739938] bdbm: llm_make_req: 17650000, 96 +[ 840.063749] bdbm: llm_make_req: 17700000, 96 +[ 841.875868] bdbm: llm_make_req: 17750000, 96 +[ 844.499381] bdbm: llm_make_req: 17800000, 24 +[ 846.671470] bdbm: llm_make_req: 17850000, 94 +[ 848.404506] bdbm: llm_make_req: 17900000, 95 +[ 850.843021] bdbm: llm_make_req: 17950000, 96 +[ 852.865212] bdbm: llm_make_req: 18000000, 96 +[ 854.464659] bdbm: llm_make_req: 18050000, 96 +[ 856.799006] bdbm: llm_make_req: 18100000, 96 +[ 858.674418] bdbm: llm_make_req: 18150000, 96 +[ 860.311504] bdbm: llm_make_req: 18200000, 96 +[ 862.414257] bdbm: llm_make_req: 18250000, 96 +[ 864.528815] bdbm: llm_make_req: 18300000, 93 +[ 866.113422] bdbm: llm_make_req: 18350000, 96 +[ 867.756478] bdbm: llm_make_req: 18400000, 86 +[ 869.802358] bdbm: llm_make_req: 18450000, 96 +[ 871.488698] bdbm: llm_make_req: 18500000, 96 +[ 872.975192] bdbm: llm_make_req: 18550000, 87 +[ 874.972364] bdbm: llm_make_req: 18600000, 96 +[ 876.679027] bdbm: llm_make_req: 18650000, 96 +[ 878.364709] bdbm: llm_make_req: 18700000, 96 +[ 880.218703] bdbm: llm_make_req: 18750000, 96 +[ 882.264468] bdbm: llm_make_req: 18800000, 95 +[ 883.924440] bdbm: llm_make_req: 18850000, 96 +[ 885.459701] bdbm: llm_make_req: 18900000, 93 +[ 887.517535] bdbm: llm_make_req: 18950000, 96 +[ 889.250898] bdbm: llm_make_req: 19000000, 96 +[ 890.874357] bdbm: llm_make_req: 19050000, 96 +[ 892.769542] bdbm: llm_make_req: 19100000, 94 +[ 894.792923] bdbm: llm_make_req: 19150000, 96 +[ 896.432877] bdbm: llm_make_req: 19200000, 96 +[ 897.939600] bdbm: llm_make_req: 19250000, 96 +[ 899.954273] bdbm: llm_make_req: 19300000, 96 +[ 901.634361] bdbm: llm_make_req: 19350000, 96 +[ 903.307181] bdbm: llm_make_req: 19400000, 96 +[ 905.147896] bdbm: llm_make_req: 19450000, 96 +[ 907.180658] bdbm: llm_make_req: 19500000, 96 +[ 908.857362] bdbm: llm_make_req: 19550000, 96 +[ 910.361492] bdbm: llm_make_req: 19600000, 92 +[ 912.367679] bdbm: llm_make_req: 19650000, 96 +[ 914.052745] bdbm: llm_make_req: 19700000, 95 +[ 915.569218] bdbm: llm_make_req: 19750000, 96 +[ 917.694603] bdbm: llm_make_req: 19800000, 96 +[ 919.560649] bdbm: llm_make_req: 19850000, 96 +[ 921.364986] bdbm: llm_make_req: 19900000, 96 +[ 923.536612] bdbm: llm_make_req: 19950000, 96 +[ 925.626838] bdbm: llm_make_req: 20000000, 96 +[ 927.535716] bdbm: llm_make_req: 20050000, 96 +[ 929.820923] bdbm: llm_make_req: 20100000, 96 +[ 931.912598] bdbm: llm_make_req: 20150000, 96 +[ 933.730627] bdbm: llm_make_req: 20200000, 96 +[ 935.981809] bdbm: llm_make_req: 20250000, 96 +[ 938.063434] bdbm: llm_make_req: 20300000, 96 +[ 939.964391] bdbm: llm_make_req: 20350000, 96 +[ 942.188190] bdbm: llm_make_req: 20400000, 94 +[ 944.340132] bdbm: llm_make_req: 20450000, 96 +[ 946.225362] bdbm: llm_make_req: 20500000, 96 +[ 948.534124] bdbm: llm_make_req: 20550000, 35 +[ 950.728902] bdbm: llm_make_req: 20600000, 96 +[ 952.581970] bdbm: llm_make_req: 20650000, 96 +[ 955.052930] bdbm: llm_make_req: 20700000, 96 +[ 957.291202] bdbm: llm_make_req: 20750000, 96 +[ 959.052652] bdbm: llm_make_req: 20800000, 96 +[ 961.678031] bdbm: llm_make_req: 20850000, 96 +[ 963.939429] bdbm: llm_make_req: 20900000, 96 +[ 965.751944] bdbm: llm_make_req: 20950000, 96 +[ 968.044500] bdbm: llm_make_req: 21000000, 96 +[ 970.511669] bdbm: llm_make_req: 21050000, 96 +[ 972.633966] bdbm: llm_make_req: 21100000, 96 +[ 975.018109] bdbm: llm_make_req: 21150000, 96 +[ 977.266454] bdbm: llm_make_req: 21200000, 96 +[ 979.581088] bdbm: llm_make_req: 21250000, 96 +[ 981.963867] bdbm: llm_make_req: 21300000, 96 +[ 984.004174] bdbm: llm_make_req: 21350000, 96 +[ 986.530572] bdbm: llm_make_req: 21400000, 96 +[ 988.908490] bdbm: llm_make_req: 21450000, 96 +[ 990.777452] bdbm: llm_make_req: 21500000, 96 +[ 993.186457] bdbm: llm_make_req: 21550000, 96 +[ 995.852629] bdbm: llm_make_req: 21600000, 96 +[ 997.979062] bdbm: llm_make_req: 21650000, 94 +[ 1000.531001] bdbm: llm_make_req: 21700000, 96 +[ 1002.825582] bdbm: llm_make_req: 21750000, 96 +[ 1005.363225] bdbm: llm_make_req: 21800000, 48 +[ 1007.934134] bdbm: llm_make_req: 21850000, 96 +[ 1009.874032] bdbm: llm_make_req: 21900000, 96 +[ 1012.440622] bdbm: llm_make_req: 21950000, 96 +[ 1015.108627] bdbm: llm_make_req: 22000000, 96 +[ 1017.349052] bdbm: llm_make_req: 22050000, 95 +[ 1019.948243] bdbm: llm_make_req: 22100000, 96 +[ 1022.250064] bdbm: llm_make_req: 22150000, 96 +[ 1024.882620] bdbm: llm_make_req: 22200000, 94 +[ 1027.462212] bdbm: llm_make_req: 22250000, 94 +[ 1029.421569] bdbm: llm_make_req: 22300000, 95 +[ 1032.036924] bdbm: llm_make_req: 22350000, 96 +[ 1034.527576] bdbm: llm_make_req: 22400000, 96 +[ 1037.032505] bdbm: llm_make_req: 22450000, 95 +[ 1039.717767] bdbm: llm_make_req: 22500000, 96 +[ 1041.764288] bdbm: llm_make_req: 22550000, 96 +[ 1044.428194] bdbm: llm_make_req: 22600000, 95 +[ 1047.253781] bdbm: llm_make_req: 22650000, 96 +[ 1049.440927] bdbm: llm_make_req: 22700000, 96 +[ 1052.108954] bdbm: llm_make_req: 22750000, 96 +[ 1054.517900] bdbm: llm_make_req: 22800000, 96 +[ 1057.207401] bdbm: llm_make_req: 22850000, 96 +[ 1059.920103] bdbm: llm_make_req: 22900000, 96 +[ 1061.913899] bdbm: llm_make_req: 22950000, 95 +[ 1064.617592] bdbm: llm_make_req: 23000000, 96 +[ 1067.297377] bdbm: llm_make_req: 23050000, 96 +[ 1069.641900] bdbm: llm_make_req: 23100000, 93 +[ 1072.287878] bdbm: llm_make_req: 23150000, 96 +[ 1074.479317] bdbm: llm_make_req: 23200000, 96 +[ 1077.030799] bdbm: llm_make_req: 23250000, 96 +[ 1079.899466] bdbm: llm_make_req: 23300000, 96 +[ 1082.007026] bdbm: llm_make_req: 23350000, 93 +[ 1084.693103] bdbm: llm_make_req: 23400000, 95 +[ 1087.127281] bdbm: llm_make_req: 23450000, 96 +[ 1089.609595] bdbm: llm_make_req: 23500000, 96 +[ 1092.263352] bdbm: llm_make_req: 23550000, 96 +[ 1094.267879] bdbm: llm_make_req: 23600000, 96 +[ 1096.895139] bdbm: llm_make_req: 23650000, 96 +[ 1099.638237] bdbm: llm_make_req: 23700000, 96 +[ 1101.893132] bdbm: llm_make_req: 23750000, 92 +[ 1104.480325] bdbm: llm_make_req: 23800000, 96 +[ 1106.633248] bdbm: llm_make_req: 23850000, 96 +[ 1109.383580] bdbm: llm_make_req: 23900000, 84 +[ 1111.953416] bdbm: llm_make_req: 23950000, 96 +[ 1113.975691] bdbm: llm_make_req: 24000000, 95 +[ 1116.561842] bdbm: llm_make_req: 24050000, 96 +[ 1119.043919] bdbm: llm_make_req: 24100000, 96 +[ 1121.463187] bdbm: llm_make_req: 24150000, 96 +[ 1124.019250] bdbm: llm_make_req: 24200000, 96 +[ 1126.164204] bdbm: llm_make_req: 24250000, 96 +[ 1128.909700] bdbm: llm_make_req: 24300000, 96 +[ 1131.390590] bdbm: llm_make_req: 24350000, 96 +[ 1133.416554] bdbm: llm_make_req: 24400000, 96 +[ 1136.019775] bdbm: llm_make_req: 24450000, 96 +[ 1138.487052] bdbm: llm_make_req: 24500000, 96 +[ 1140.905735] bdbm: llm_make_req: 24550000, 96 +[ 1143.490370] bdbm: llm_make_req: 24600000, 96 +[ 1145.515730] bdbm: llm_make_req: 24650000, 96 +[ 1148.330722] bdbm: llm_make_req: 24700000, 96 +[ 1150.746030] bdbm: llm_make_req: 24750000, 96 +[ 1152.692383] bdbm: llm_make_req: 24800000, 90 +[ 1155.170325] bdbm: llm_make_req: 24850000, 96 +[ 1157.649534] bdbm: llm_make_req: 24900000, 96 +[ 1159.896568] bdbm: llm_make_req: 24950000, 94 +[ 1162.321110] bdbm: llm_make_req: 25000000, 96 +[ 1164.603986] bdbm: llm_make_req: 25050000, 96 +[ 1166.907378] bdbm: llm_make_req: 25100000, 96 +[ 1169.217464] bdbm: llm_make_req: 25150000, 96 +[ 1171.235460] bdbm: llm_make_req: 25200000, 96 +[ 1173.555108] bdbm: llm_make_req: 25250000, 92 +[ 1175.752545] bdbm: llm_make_req: 25300000, 96 +[ 1177.584922] bdbm: llm_make_req: 25350000, 96 +[ 1179.936214] bdbm: llm_make_req: 25400000, 92 +[ 1181.986248] bdbm: llm_make_req: 25450000, 96 +[ 1183.832613] bdbm: llm_make_req: 25500000, 96 +[ 1185.928516] bdbm: llm_make_req: 25550000, 93 +[ 1187.874957] bdbm: llm_make_req: 25600000, 96 +[ 1189.725385] bdbm: llm_make_req: 25650000, 96 +[ 1191.754060] bdbm: llm_make_req: 25700000, 96 +[ 1193.651505] bdbm: llm_make_req: 25750000, 96 +[ 1195.535726] bdbm: llm_make_req: 25800000, 96 +[ 1197.467036] bdbm: llm_make_req: 25850000, 96 +[ 1199.672395] bdbm: llm_make_req: 25900000, 89 +[ 1201.309931] bdbm: llm_make_req: 25950000, 96 +[ 1203.104748] bdbm: llm_make_req: 26000000, 96 +[ 1205.300452] bdbm: llm_make_req: 26050000, 96 +[ 1207.034694] bdbm: llm_make_req: 26100000, 96 +[ 1208.731167] bdbm: llm_make_req: 26150000, 88 +[ 1755.127772] bdbm: ----------------------------------------------- +[ 1755.127773] bdbm: < PERFORMANCE SUMMARY > +[ 1755.127774] bdbm: [0] Execution Time (us): 1550.520673 +[ 1755.127775] bdbm: +[ 1755.127775] bdbm: [1] Total I/Os +[ 1755.127776] bdbm: # of page reads: 10602848 +[ 1755.127776] bdbm: # of page writes: 15507069 +[ 1755.127777] bdbm: # of block erase: 89472 +[ 1755.127777] bdbm: +[ 1755.127777] bdbm: [2] Normal I/Os +[ 1755.127778] bdbm: # of page reads: 4333928 +[ 1755.127778] bdbm: # of page writes: 9237450 +[ 1755.127779] bdbm: # of page rmw reads: 0 +[ 1755.127779] bdbm: # of page rmw writes: 0 +[ 1755.127780] bdbm: +[ 1755.127780] bdbm: [3] GC I/Os +[ 1755.127781] bdbm: # of GC invocation: 0 +[ 1755.127781] bdbm: # of page reads: 6268920 +[ 1755.127782] bdbm: # of page writes: 6269619 +[ 1755.127782] bdbm: # of block erase: 89472 +[ 1755.127782] bdbm: +[ 1755.127783] bdbm: [4] Meta I/Os +[ 1755.127783] bdbm: # of meta page reads: 0 +[ 1755.127784] bdbm: # of meta page writes: 0 +[ 1755.127784] bdbm: +[ 1755.127785] bdbm: [5] Elapsed Time +[ 1755.127785] bdbm: page read (us): 93 (S:0 + Q:0 + D:93) +[ 1755.127786] bdbm: page write (us): 451 (S:0 + Q:0 + D:451) +[ 1755.127787] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 1755.127787] bdbm: +[ 1755.127787] bdbm: [6] Utilization (R) +[ 1755.127789] bdbm: 82755 83065 82600 83275 82616 83080 83082 83271 +[ 1755.127791] bdbm: 82607 83204 82658 82459 82904 82583 82401 83025 +[ 1755.127792] bdbm: 82581 82650 82635 83204 82736 83036 82784 83123 +[ 1755.127793] bdbm: 82676 82734 82869 83277 82510 83065 82935 82969 +[ 1755.127794] bdbm: 82342 82621 82638 83453 82778 83135 82671 82484 +[ 1755.127795] bdbm: 82153 82638 82891 83307 82377 82945 82665 83044 +[ 1755.127796] bdbm: 82874 82660 82661 82859 82781 82730 82498 82510 +[ 1755.127797] bdbm: 82985 82912 82199 83004 82778 82989 82784 83021 +[ 1755.127799] bdbm: 83000 82771 82889 83154 83060 83006 83076 82932 +[ 1755.127800] bdbm: 82570 82858 82624 82960 82793 82908 82784 83074 +[ 1755.127801] bdbm: 82228 83070 82827 82743 82321 83286 82955 82971 +[ 1755.127802] bdbm: 82575 82891 82534 82743 82903 83010 82771 82879 +[ 1755.127803] bdbm: 82693 83007 83075 83093 83009 82776 82330 82918 +[ 1755.127804] bdbm: 82846 83089 82922 83491 82904 82851 82675 83209 +[ 1755.127805] bdbm: 82724 83144 83161 83317 83091 82570 82003 82827 +[ 1755.127807] bdbm: 82695 82931 82283 82504 82775 83008 83054 82951 +[ 1755.127807] bdbm: +[ 1755.127807] bdbm: [7] Utilization (W) +[ 1755.127809] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127810] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127811] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127812] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127813] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127815] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127816] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127817] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127818] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127819] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127820] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127821] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127822] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127824] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127825] bdbm: 121149 121149 121149 121149 121149 121149 121149 121149 +[ 1755.127826] bdbm: 121149 121149 121149 121149 121149 121148 121148 121148 +[ 1755.127826] bdbm: [8] NVM I/Os +[ 1755.127827] bdbm: #_of_nvm_total_accesses: 0 +[ 1755.127827] bdbm: #_of_nvm_total_write_requests: 0 +[ 1755.127828] bdbm: #_of_nvm_total_read_requests: 0 +[ 1755.127828] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 0 +[ 1755.127829] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 0 +[ 1755.127829] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[ 1755.127830] bdbm: #_of_nvm_evict_from_nvm: 0 +[ 1755.127830] bdbm: #_of_nvm_write_amplification: 0 : 6269619 +[ 1755.127831] bdbm: +[ 1755.127831] bdbm: ----------------------------------------------- +[ 1755.127831] bdbm: ----------------------------------------------- +[ 1755.261820] bdbm: done +[ 1755.261838] bdbm: [dm_ramdrive_close] closed! +[ 1755.649620] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 1755.649622] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 1755.666008] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 1755.683293] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 1755.687242] bdbm: ===================================================================== +[ 1755.687258] bdbm: DEVICE PARAMETERS +[ 1755.687258] bdbm: ===================================================================== +[ 1755.687259] bdbm: # of channels = 8 +[ 1755.687259] bdbm: # of chips per channel = 16 +[ 1755.687260] bdbm: # of blocks per chip = 256 +[ 1755.687260] bdbm: # of pages per block = 128 +[ 1755.687261] bdbm: # of subpages per page = 1 +[ 1755.687261] bdbm: page main size = 4096 bytes +[ 1755.687262] bdbm: page oob size = 64 bytes +[ 1755.687262] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 1755.687263] bdbm: +[ 1755.687264] bdbm: ===================================================================== +[ 1755.687264] bdbm: RAM DISK INFO +[ 1755.687264] bdbm: ===================================================================== +[ 1755.687265] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[ 1757.226946] bdbm: ramssd addr = ffffc90050001000 +[ 1757.226948] bdbm: +[ 1757.226949] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 1758.752756] bdbm: *** building ptr_ramssd_data done +[ 1758.752941] bdbm: [dm_ramdrive_probe] probe done! +[ 1758.752943] bdbm: [dm_ramdrive_open] open done! +[ 1758.815285] bdbm: nvm cache addr = ffffc90870003000 +[ 1758.816513] bdbm: ========================================================== +[ 1758.816516] bdbm: NVM CONFIGURATION +[ 1758.816517] bdbm: ========================================================== +[ 1758.816518] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[ 1758.971348] bdbm: TRIM is disabled +[ 1758.971509] bdbm: ===================================================================== +[ 1758.971510] bdbm: DEVICE PARAMETERS +[ 1758.971510] bdbm: ===================================================================== +[ 1758.971511] bdbm: # of channels = 8 +[ 1758.971511] bdbm: # of chips per channel = 16 +[ 1758.971512] bdbm: # of blocks per chip = 256 +[ 1758.971512] bdbm: # of pages per block = 128 +[ 1758.971513] bdbm: # of subpages per page = 1 +[ 1758.971513] bdbm: page main size = 4096 bytes +[ 1758.971514] bdbm: page oob size = 64 bytes +[ 1758.971514] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 1758.971515] bdbm: +[ 1758.971515] bdbm: ===================================================================== +[ 1758.971516] bdbm: FTL CONFIGURATION +[ 1758.971516] bdbm: ===================================================================== +[ 1758.971517] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 1758.971517] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 1758.971518] bdbm: wl policy = 1 (1: none, 2: swap) +[ 1758.971518] bdbm: trim mode = 2 (1: enable, 2: disable) +[ 1758.971519] bdbm: kernel sector = 512 bytes +[ 1758.971519] bdbm: +[ 1758.971521] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 1758.988443] bdbm: llm_make_req: 0, 1 +[ 1759.393744] bdbm: llm_make_req: 50000, 96 +[ 1759.538277] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[ 1759.538278] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 1764.688546] bdbm: llm_make_req: 100000, 96 +[ 2798.797484] bdbm: ----------------------------------------------- +[ 2798.797485] bdbm: < PERFORMANCE SUMMARY > +[ 2798.797486] bdbm: [0] Execution Time (us): 1039.779347 +[ 2798.797487] bdbm: +[ 2798.797487] bdbm: [1] Total I/Os +[ 2798.797488] bdbm: # of page reads: 5 +[ 2798.797488] bdbm: # of page writes: 126550 +[ 2798.797489] bdbm: # of block erase: 0 +[ 2798.797489] bdbm: +[ 2798.797489] bdbm: [2] Normal I/Os +[ 2798.797490] bdbm: # of page reads: 5 +[ 2798.797490] bdbm: # of page writes: 126550 +[ 2798.797491] bdbm: # of page rmw reads: 0 +[ 2798.797491] bdbm: # of page rmw writes: 0 +[ 2798.797492] bdbm: +[ 2798.797492] bdbm: [3] GC I/Os +[ 2798.797493] bdbm: # of GC invocation: 0 +[ 2798.797493] bdbm: # of page reads: 0 +[ 2798.797493] bdbm: # of page writes: 0 +[ 2798.797494] bdbm: # of block erase: 0 +[ 2798.797494] bdbm: +[ 2798.797495] bdbm: [4] Meta I/Os +[ 2798.797495] bdbm: # of meta page reads: 0 +[ 2798.797496] bdbm: # of meta page writes: 0 +[ 2798.797496] bdbm: +[ 2798.797497] bdbm: [5] Elapsed Time +[ 2798.797497] bdbm: page read (us): 104 (S:0 + Q:9 + D:95) +[ 2798.797498] bdbm: page write (us): 451 (S:0 + Q:0 + D:451) +[ 2798.797498] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 2798.797499] bdbm: +[ 2798.797499] bdbm: [6] Utilization (R) +[ 2798.797501] bdbm: 0 0 0 1 0 0 0 0 +[ 2798.797502] bdbm: 0 0 0 0 0 0 0 0 +[ 2798.797503] bdbm: 0 0 0 0 0 0 0 0 +[ 2798.797504] bdbm: 0 0 0 0 0 0 0 0 +[ 2798.797505] bdbm: 0 0 0 0 0 0 0 0 +[ 2798.797506] bdbm: 0 2 0 0 0 0 0 0 +[ 2798.797508] bdbm: 0 0 0 0 0 0 0 0 +[ 2798.797509] bdbm: 0 0 0 1 0 0 0 0 +[ 2798.797510] bdbm: 0 0 0 0 0 0 0 0 +[ 2798.797511] bdbm: 0 0 0 0 0 0 0 0 +[ 2798.797512] bdbm: 0 0 0 0 0 0 0 0 +[ 2798.797513] bdbm: 0 0 0 0 0 0 0 0 +[ 2798.797514] bdbm: 0 0 0 0 0 0 0 0 +[ 2798.797515] bdbm: 0 0 0 1 0 0 0 0 +[ 2798.797516] bdbm: 0 0 0 0 0 0 0 0 +[ 2798.797517] bdbm: 0 0 0 0 0 0 0 0 +[ 2798.797518] bdbm: +[ 2798.797518] bdbm: [7] Utilization (W) +[ 2798.797520] bdbm: 989 989 989 989 989 989 989 989 +[ 2798.797521] bdbm: 989 989 989 989 989 989 989 989 +[ 2798.797522] bdbm: 989 989 989 989 989 989 989 989 +[ 2798.797523] bdbm: 989 989 989 989 989 989 989 989 +[ 2798.797524] bdbm: 989 989 989 989 989 989 989 989 +[ 2798.797525] bdbm: 989 989 989 989 989 989 989 989 +[ 2798.797526] bdbm: 989 989 989 989 989 989 989 989 +[ 2798.797528] bdbm: 989 989 989 989 989 989 989 989 +[ 2798.797529] bdbm: 989 989 989 989 989 989 989 989 +[ 2798.797530] bdbm: 989 989 989 989 989 989 989 989 +[ 2798.797531] bdbm: 989 989 989 989 989 989 988 988 +[ 2798.797532] bdbm: 988 988 988 988 988 988 988 988 +[ 2798.797533] bdbm: 988 988 988 988 988 988 988 988 +[ 2798.797534] bdbm: 988 988 988 988 988 988 988 988 +[ 2798.797535] bdbm: 988 988 988 988 988 988 988 988 +[ 2798.797536] bdbm: 988 988 988 988 988 988 988 988 +[ 2798.797537] bdbm: [8] NVM I/Os +[ 2798.797537] bdbm: #_of_nvm_total_accesses: 0 +[ 2798.797538] bdbm: #_of_nvm_total_write_requests: 0 +[ 2798.797538] bdbm: #_of_nvm_total_read_requests: 0 +[ 2798.797539] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 0 +[ 2798.797539] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 0 +[ 2798.797540] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[ 2798.797540] bdbm: #_of_nvm_evict_from_nvm: 0 +[ 2798.797541] bdbm: #_of_nvm_write_amplification: 0 : 0 +[ 2798.797541] bdbm: +[ 2798.797542] bdbm: ----------------------------------------------- +[ 2798.797542] bdbm: ----------------------------------------------- +[ 2798.936101] bdbm: done +[ 2798.936104] bdbm: [dm_ramdrive_close] closed! +[ 2799.323137] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 2799.323140] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 2799.344589] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 2799.358380] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 2799.361783] bdbm: ===================================================================== +[ 2799.361785] bdbm: DEVICE PARAMETERS +[ 2799.361785] bdbm: ===================================================================== +[ 2799.361786] bdbm: # of channels = 8 +[ 2799.361786] bdbm: # of chips per channel = 16 +[ 2799.361787] bdbm: # of blocks per chip = 256 +[ 2799.361787] bdbm: # of pages per block = 128 +[ 2799.361788] bdbm: # of subpages per page = 1 +[ 2799.361788] bdbm: page main size = 4096 bytes +[ 2799.361789] bdbm: page oob size = 64 bytes +[ 2799.361789] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 2799.361790] bdbm: +[ 2799.361791] bdbm: ===================================================================== +[ 2799.361791] bdbm: RAM DISK INFO +[ 2799.361792] bdbm: ===================================================================== +[ 2799.361792] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[ 2800.927687] bdbm: ramssd addr = ffffc90050001000 +[ 2800.927689] bdbm: +[ 2800.927690] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 2802.475168] bdbm: *** building ptr_ramssd_data done +[ 2802.475327] bdbm: [dm_ramdrive_probe] probe done! +[ 2802.475328] bdbm: [dm_ramdrive_open] open done! +[ 2802.538583] bdbm: nvm cache addr = ffffc90870003000 +[ 2802.540219] bdbm: ========================================================== +[ 2802.540221] bdbm: NVM CONFIGURATION +[ 2802.540222] bdbm: ========================================================== +[ 2802.540223] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[ 2802.731635] bdbm: TRIM is disabled +[ 2802.731766] bdbm: ===================================================================== +[ 2802.731768] bdbm: DEVICE PARAMETERS +[ 2802.731769] bdbm: ===================================================================== +[ 2802.731769] bdbm: # of channels = 8 +[ 2802.731770] bdbm: # of chips per channel = 16 +[ 2802.731770] bdbm: # of blocks per chip = 256 +[ 2802.731771] bdbm: # of pages per block = 128 +[ 2802.731771] bdbm: # of subpages per page = 1 +[ 2802.731772] bdbm: page main size = 4096 bytes +[ 2802.731772] bdbm: page oob size = 64 bytes +[ 2802.731773] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 2802.731774] bdbm: +[ 2802.731774] bdbm: ===================================================================== +[ 2802.731775] bdbm: FTL CONFIGURATION +[ 2802.731775] bdbm: ===================================================================== +[ 2802.731776] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 2802.731776] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 2802.731777] bdbm: wl policy = 1 (1: none, 2: swap) +[ 2802.731777] bdbm: trim mode = 2 (1: enable, 2: disable) +[ 2802.731778] bdbm: kernel sector = 512 bytes +[ 2802.731779] bdbm: +[ 2802.731780] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 2802.752211] bdbm: llm_make_req: 0, 1 +[ 2809.384258] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[ 2809.384260] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 2864.983160] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 33779, evict = 0 +[ 2885.309205] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 33887, evict = 35012 +[ 2887.942545] bdbm: llm_make_req: 50000, 14 +[ 2896.707990] bdbm: llm_make_req: 100000, 15 +[ 2902.841039] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 33887, evict = 135012 +[ 2904.461429] NMI watchdog: BUG: soft lockup - CPU#2 stuck for 22s! [__llm_mq_thread:6483] +[ 2904.461432] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 2904.461457] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 2904.461467] CPU: 2 PID: 6483 Comm: __llm_mq_thread Tainted: G OE 4.4.0-42-generic #62-Ubuntu +[ 2904.461468] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 2904.461469] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 2904.461470] RIP: 0010:[] [] bdbm_prior_queue_dequeue+0xd/0x210 [robusta_drv] +[ 2904.461476] RSP: 0018:ffff880fc34c7e18 EFLAGS: 00000246 +[ 2904.461476] RAX: 0000000000000000 RBX: 0000000000000048 RCX: 0000000000000001 +[ 2904.461477] RDX: ffff880fc34c7e40 RSI: 0000000000000048 RDI: ffff88101f828580 +[ 2904.461478] RBP: ffff880fc34c7e28 R08: 0000000000000101 R09: 0000000000000246 +[ 2904.461478] R10: 0000000000082000 R11: 000000000000069e R12: 00000000000006c0 +[ 2904.461479] R13: ffff881025b2c140 R14: 0000000000000000 R15: ffffc90006bb9000 +[ 2904.461480] FS: 0000000000000000(0000) GS:ffff88106ed00000(0000) knlGS:0000000000000000 +[ 2904.461481] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 2904.461481] CR2: 00007f40b67ac004 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 2904.461482] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 2904.461483] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 2904.461483] Stack: +[ 2904.461484] 0000000000000000 ffffc90006bb9000 ffff880fc34c7e78 ffffffffc06794ca +[ 2904.461486] 000000000002338f 0000000000000000 00000000e572e2e4 ffff88081ec61c00 +[ 2904.461487] ffff88081ec61c00 ffffffffc0682b00 0000000000000000 0000000000000000 +[ 2904.461488] Call Trace: +[ 2904.461491] [] __llm_mq_thread+0xca/0x210 [robusta_drv] +[ 2904.461494] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 2904.461496] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 2904.461499] [] ? wake_up_q+0x70/0x70 +[ 2904.461501] [] kthread+0xd8/0xf0 +[ 2904.461514] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 2904.461517] [] ret_from_fork+0x3f/0x70 +[ 2904.461518] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 2904.461519] Code: c1 89 d8 5b 41 5c 41 5d 5d c3 bb 01 00 00 00 eb e8 0f 1f 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 55 48 89 e5 41 57 41 56 <41> 55 41 54 4c 8d 67 18 53 49 89 ff 48 89 f3 4c 89 e7 49 89 d5 +[ 2905.463914] bdbm: llm_make_req: 150000, 16 +[ 2914.220895] bdbm: llm_make_req: 200000, 16 +[ 2920.271806] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 33887, evict = 235012 +[ 2922.851401] bdbm: llm_make_req: 250000, 16 +[ 2931.507156] bdbm: llm_make_req: 300000, 16 +[ 2932.462604] NMI watchdog: BUG: soft lockup - CPU#2 stuck for 23s! [__llm_mq_thread:6483] +[ 2932.462606] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 2932.462630] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 2932.462652] CPU: 2 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 2932.462652] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 2932.462653] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 2932.462654] RIP: 0010:[] [] _raw_spin_unlock_irqrestore+0x1b/0x20 +[ 2932.462658] RSP: 0018:ffff880fc34c7dd8 EFLAGS: 00000246 +[ 2932.462659] RAX: 0000000000000246 RBX: 0000000000000000 RCX: 0000000000000001 +[ 2932.462659] RDX: 0000000000000001 RSI: 0000000000000246 RDI: 0000000000000246 +[ 2932.462660] RBP: ffff880fc34c7e28 R08: 0000000000000101 R09: 0000000000000246 +[ 2932.462661] R10: 0000000000082000 R11: 00000000000006c4 R12: ffff88101f828598 +[ 2932.462661] R13: ffff880fc34c7e40 R14: ffff88007dce9620 R15: ffff88101f828580 +[ 2932.462662] FS: 0000000000000000(0000) GS:ffff88106ed00000(0000) knlGS:0000000000000000 +[ 2932.462663] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 2932.462663] CR2: 00007f40b67ac004 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 2932.462664] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 2932.462665] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 2932.462666] Stack: +[ 2932.462666] ffffffffc067f9d0 0000000000000001 ffff8807af8d5bf0 0000000000000296 +[ 2932.462667] 00000000e572e2e4 0000000000000062 0000000000000930 ffff881025b2c140 +[ 2932.462669] 0000000000000000 ffffc90006bb9000 ffff880fc34c7e78 ffffffffc06794ca +[ 2932.462670] Call Trace: +[ 2932.462675] [] ? bdbm_prior_queue_dequeue+0x70/0x210 [robusta_drv] +[ 2932.462678] [] __llm_mq_thread+0xca/0x210 [robusta_drv] +[ 2932.462680] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 2932.462682] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 2932.462684] [] ? wake_up_q+0x70/0x70 +[ 2932.462685] [] kthread+0xd8/0xf0 +[ 2932.462687] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 2932.462688] [] ret_from_fork+0x3f/0x70 +[ 2932.462689] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 2932.462690] Code: 31 c0 eb ca e8 07 fd 84 ff 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 c6 07 00 0f 1f 40 00 48 89 f7 57 9d 0f 1f 44 00 00 5d 0f 1f 40 00 0f 1f 44 00 00 55 48 89 e5 c6 07 00 48 89 f7 57 +[ 2937.665746] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 33887, evict = 335012 +[ 2939.110881] INFO: rcu_sched self-detected stall on CPU +[ 2939.110886] 2-...: (14999 ticks this GP) idle=831/140000000000001/0 softirq=97458/97458 fqs=14989 +[ 2939.110887] (t=15000 jiffies g=36448 c=36447 q=332447) +[ 2939.110888] Task dump for CPU 2: +[ 2939.110889] __llm_mq_thread R running task 0 6483 2 0x00000008 +[ 2939.110891] ffff88007dee0000 00000000e572e2e4 ffff88106ed03da8 ffffffff810ae8d9 +[ 2939.110893] 0000000000000002 ffffffff81e52600 ffff88106ed03dc0 ffffffff810b1107 +[ 2939.110908] 0000000000000003 ffff88106ed03df0 ffffffff810e49be ffff88106ed17a80 +[ 2939.110909] Call Trace: +[ 2939.110910] [] sched_show_task+0xa9/0x110 +[ 2939.110916] [] dump_cpu_task+0x37/0x40 +[ 2939.110930] [] rcu_dump_cpu_stacks+0x8e/0xe0 +[ 2939.110932] [] rcu_check_callbacks+0x4fa/0x7f0 +[ 2939.110934] [] ? acct_account_cputime+0x1c/0x20 +[ 2939.110936] [] ? account_system_time+0x7f/0x110 +[ 2939.110938] [] ? tick_sched_handle.isra.14+0x60/0x60 +[ 2939.110939] [] update_process_times+0x39/0x60 +[ 2939.110940] [] tick_sched_handle.isra.14+0x25/0x60 +[ 2939.110942] [] tick_sched_timer+0x3d/0x70 +[ 2939.110943] [] __hrtimer_run_queues+0x102/0x290 +[ 2939.110944] [] hrtimer_interrupt+0xa8/0x1a0 +[ 2939.110946] [] local_apic_timer_interrupt+0x38/0x60 +[ 2939.110949] [] smp_apic_timer_interrupt+0x3d/0x50 +[ 2939.110950] [] apic_timer_interrupt+0x82/0x90 +[ 2939.110950] [] ? _raw_spin_unlock_irqrestore+0x15/0x20 +[ 2939.110956] [] bdbm_prior_queue_dequeue+0x70/0x210 [robusta_drv] +[ 2939.110959] [] __llm_mq_thread+0xca/0x210 [robusta_drv] +[ 2939.110961] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 2939.110963] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 2939.110964] [] ? wake_up_q+0x70/0x70 +[ 2939.110966] [] kthread+0xd8/0xf0 +[ 2939.110967] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 2939.110968] [] ret_from_fork+0x3f/0x70 +[ 2939.110969] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 2940.327484] bdbm: llm_make_req: 350000, 16 +[ 2949.914836] bdbm: llm_make_req: 400000, 13 +[ 2957.391265] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 33887, evict = 435012 +[ 2960.585469] bdbm: llm_make_req: 450000, 13 +[ 2969.675270] bdbm: llm_make_req: 500000, 16 +[ 2972.460276] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 23s! [__llm_mq_thread:6483] +[ 2972.460279] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 2972.460305] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 2972.460313] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 2972.460314] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 2972.460315] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 2972.460316] RIP: 0010:[] [] _raw_spin_unlock_irqrestore+0x15/0x20 +[ 2972.460320] RSP: 0018:ffff880fc34c7e08 EFLAGS: 00000282 +[ 2972.460321] RAX: 0000000000000282 RBX: 0000000000000000 RCX: 0000000000000001 +[ 2972.460321] RDX: 0000000000000001 RSI: 0000000000000282 RDI: 0000000000000282 +[ 2972.460322] RBP: ffff880fc34c7e08 R08: 0000000000000101 R09: 0000000000000246 +[ 2972.460323] R10: 0000000000082000 R11: 000000000000070d R12: ffff8807af8d58d0 +[ 2972.460323] R13: ffff881025b2c140 R14: 0000000000000000 R15: ffffc90006bb9000 +[ 2972.460324] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 2972.460325] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 2972.460326] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 2972.460327] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 2972.460327] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 2972.460328] Stack: +[ 2972.460329] ffff880fc34c7e28 ffffffff810ca0de 000000000000005e 00000000000008d0 +[ 2972.460330] ffff880fc34c7e78 ffffffffc06794b6 000000000007de38 0000000000000000 +[ 2972.460331] 00000000e572e2e4 ffff88081ec61c00 ffff88081ec61c00 ffffffffc0682b00 +[ 2972.460333] Call Trace: +[ 2972.460335] [] down_trylock+0x2e/0x40 +[ 2972.460340] [] __llm_mq_thread+0xb6/0x210 [robusta_drv] +[ 2972.460342] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 2972.460345] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 2972.460346] [] ? wake_up_q+0x70/0x70 +[ 2972.460348] [] kthread+0xd8/0xf0 +[ 2972.460349] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 2972.460351] [] ret_from_fork+0x3f/0x70 +[ 2972.460352] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 2972.460352] Code: 1f 44 00 00 eb c6 31 c0 eb ca e8 07 fd 84 ff 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 c6 07 00 0f 1f 40 00 48 89 f7 57 9d <0f> 1f 44 00 00 5d c3 0f 1f 40 00 0f 1f 44 00 00 55 48 89 e5 c6 +[ 2975.880064] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 33887, evict = 535012 +[ 2978.530189] bdbm: llm_make_req: 550000, 15 +[ 2987.421260] bdbm: llm_make_req: 600000, 16 +[ 2993.709283] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 33887, evict = 635012 +[ 2996.387740] bdbm: llm_make_req: 650000, 16 +[ 3000.461441] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [__llm_mq_thread:6483] +[ 3000.461443] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 3000.461469] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 3000.461478] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 3000.461479] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 3000.461480] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 3000.461481] RIP: 0010:[] [] _raw_spin_unlock_irqrestore+0x15/0x20 +[ 3000.461486] RSP: 0018:ffff880fc34c7dd0 EFLAGS: 00000246 +[ 3000.461486] RAX: 0000000000000246 RBX: 0000000000000000 RCX: 0000000000000001 +[ 3000.461487] RDX: 0000000000000001 RSI: 0000000000000246 RDI: 0000000000000246 +[ 3000.461488] RBP: ffff880fc34c7dd0 R08: 0000000000000101 R09: 0000000000000246 +[ 3000.461488] R10: 0000000000082000 R11: 0000000000000733 R12: ffff88101f828598 +[ 3000.461489] R13: ffff880fc34c7e40 R14: ffff88007dce9720 R15: ffff88101f828580 +[ 3000.461490] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 3000.461490] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 3000.461491] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 3000.461492] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 3000.461493] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 3000.461493] Stack: +[ 3000.461494] ffff880fc34c7e28 ffffffffc067f9d0 000000000000003d 000000000000003d +[ 3000.461495] 00000000000005b8 00000000e572e2e4 0000000000000072 0000000000000ab0 +[ 3000.461496] ffff881025b2c140 0000000000000000 ffffc90006bb9000 ffff880fc34c7e78 +[ 3000.461498] Call Trace: +[ 3000.461503] [] bdbm_prior_queue_dequeue+0x70/0x210 [robusta_drv] +[ 3000.461505] [] __llm_mq_thread+0xca/0x210 [robusta_drv] +[ 3000.461508] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3000.461510] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3000.461512] [] ? wake_up_q+0x70/0x70 +[ 3000.461514] [] kthread+0xd8/0xf0 +[ 3000.461515] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3000.461516] [] ret_from_fork+0x3f/0x70 +[ 3000.461517] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3000.461518] Code: 1f 44 00 00 eb c6 31 c0 eb ca e8 07 fd 84 ff 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 c6 07 00 0f 1f 40 00 48 89 f7 57 9d <0f> 1f 44 00 00 5d c3 0f 1f 40 00 0f 1f 44 00 00 55 48 89 e5 c6 +[ 3005.281534] bdbm: llm_make_req: 700000, 15 +[ 3005.853663] INFO: rcu_sched self-detected stall on CPU +[ 3005.853667] 1-...: (14999 ticks this GP) idle=165/140000000000001/0 softirq=53351/53351 fqs=14992 +[ 3005.853668] (t=15000 jiffies g=36450 c=36449 q=627626) +[ 3005.853670] Task dump for CPU 1: +[ 3005.853671] __llm_mq_thread R running task 0 6483 2 0x00000008 +[ 3005.853673] ffff88007dee0000 00000000e572e2e4 ffff88106ec83da8 ffffffff810ae8d9 +[ 3005.853674] 0000000000000001 ffffffff81e52600 ffff88106ec83dc0 ffffffff810b1107 +[ 3005.853675] 0000000000000002 ffff88106ec83df0 ffffffff810e49be ffff88106ec97a80 +[ 3005.853676] Call Trace: +[ 3005.853678] [] sched_show_task+0xa9/0x110 +[ 3005.853683] [] dump_cpu_task+0x37/0x40 +[ 3005.853685] [] rcu_dump_cpu_stacks+0x8e/0xe0 +[ 3005.853687] [] rcu_check_callbacks+0x4fa/0x7f0 +[ 3005.853689] [] ? acct_account_cputime+0x1c/0x20 +[ 3005.853691] [] ? account_system_time+0x7f/0x110 +[ 3005.853692] [] ? tick_sched_handle.isra.14+0x60/0x60 +[ 3005.853694] [] update_process_times+0x39/0x60 +[ 3005.853695] [] tick_sched_handle.isra.14+0x25/0x60 +[ 3005.853696] [] tick_sched_timer+0x3d/0x70 +[ 3005.853697] [] __hrtimer_run_queues+0x102/0x290 +[ 3005.853698] [] hrtimer_interrupt+0xa8/0x1a0 +[ 3005.853701] [] local_apic_timer_interrupt+0x38/0x60 +[ 3005.853703] [] smp_apic_timer_interrupt+0x3d/0x50 +[ 3005.853705] [] apic_timer_interrupt+0x82/0x90 +[ 3005.853705] [] ? _raw_spin_unlock_irqrestore+0x15/0x20 +[ 3005.853707] [] down_trylock+0x2e/0x40 +[ 3005.853712] [] __llm_mq_thread+0xb6/0x210 [robusta_drv] +[ 3005.853715] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3005.853717] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3005.853718] [] ? wake_up_q+0x70/0x70 +[ 3005.853719] [] kthread+0xd8/0xf0 +[ 3005.853721] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3005.853722] [] ret_from_fork+0x3f/0x70 +[ 3005.853723] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3011.466459] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 33887, evict = 735012 +[ 3014.123185] bdbm: llm_make_req: 750000, 16 +[ 3023.059812] bdbm: llm_make_req: 800000, 16 +[ 3029.245531] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 33887, evict = 835012 +[ 3031.880080] bdbm: llm_make_req: 850000, 16 +[ 3032.462768] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 23s! [__llm_mq_thread:6483] +[ 3032.462771] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 3032.462798] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 3032.462807] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 3032.462808] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 3032.462809] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 3032.462810] RIP: 0010:[] [] _raw_spin_unlock_irqrestore+0x15/0x20 +[ 3032.462814] RSP: 0018:ffff880fc34c7dd0 EFLAGS: 00000246 +[ 3032.462814] RAX: 0000000000000246 RBX: 0000000000000000 RCX: 0000000000000000 +[ 3032.462815] RDX: 0000000000000001 RSI: 0000000000000246 RDI: 0000000000000246 +[ 3032.462816] RBP: ffff880fc34c7dd0 R08: ffffc908d58200e0 R09: 0000000000000246 +[ 3032.462816] R10: 0000000000082000 R11: 000000000000077c R12: ffff88101f828598 +[ 3032.462817] R13: ffff880fc34c7e40 R14: ffff88007dce9420 R15: ffff88101f828580 +[ 3032.462818] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 3032.462819] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 3032.462819] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 3032.462820] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 3032.462821] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 3032.462821] Stack: +[ 3032.462822] ffff880fc34c7e28 ffffffffc067f9d0 0000000000000045 0000000000000045 +[ 3032.462823] 0000000000000678 00000000e572e2e4 0000000000000042 0000000000000630 +[ 3032.462825] ffff881025b2c140 0000000000000000 ffffc90006bb9000 ffff880fc34c7e78 +[ 3032.462826] Call Trace: +[ 3032.462831] [] bdbm_prior_queue_dequeue+0x70/0x210 [robusta_drv] +[ 3032.462833] [] __llm_mq_thread+0xca/0x210 [robusta_drv] +[ 3032.462836] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3032.462838] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3032.462841] [] ? wake_up_q+0x70/0x70 +[ 3032.462842] [] kthread+0xd8/0xf0 +[ 3032.462844] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3032.462845] [] ret_from_fork+0x3f/0x70 +[ 3032.462846] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3032.462847] Code: 1f 44 00 00 eb c6 31 c0 eb ca e8 07 fd 84 ff 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 c6 07 00 0f 1f 40 00 48 89 f7 57 9d <0f> 1f 44 00 00 5d c3 0f 1f 40 00 0f 1f 44 00 00 55 48 89 e5 c6 +[ 3040.687659] bdbm: llm_make_req: 900000, 16 +[ 3046.861477] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 33887, evict = 935012 +[ 3049.491259] bdbm: llm_make_req: 950000, 16 +[ 3058.289130] bdbm: llm_make_req: 1000000, 16 +[ 3060.463926] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 23s! [__llm_mq_thread:6483] +[ 3060.463928] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 3060.463953] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 3060.463962] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 3060.463963] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 3060.463964] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 3060.463965] RIP: 0010:[] [] _raw_spin_unlock_irqrestore+0x1b/0x20 +[ 3060.463968] RSP: 0018:ffff880fc34c7e10 EFLAGS: 00000286 +[ 3060.463969] RAX: 0000000000000286 RBX: 0000000000000000 RCX: 0000000000000000 +[ 3060.463970] RDX: 0000000000000001 RSI: 0000000000000286 RDI: 0000000000000286 +[ 3060.463970] RBP: ffff880fc34c7e28 R08: ffffc908b89e40e0 R09: 0000000000000246 +[ 3060.463971] R10: 0000000000082000 R11: 00000000000007a1 R12: ffff8807af8d5948 +[ 3060.463972] R13: ffff881025b2c140 R14: 0000000000000000 R15: ffffc90006bb9000 +[ 3060.463972] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 3060.463973] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 3060.463974] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 3060.463975] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 3060.463975] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 3060.463976] Stack: +[ 3060.463977] ffffffff810ca0de 0000000000000063 0000000000000948 ffff880fc34c7e78 +[ 3060.463978] ffffffffc06794b6 00000000000f72aa 0000000000000000 00000000e572e2e4 +[ 3060.463979] ffff88081ec61c00 ffff88081ec61c00 ffffffffc0682b00 0000000000000000 +[ 3060.463981] Call Trace: +[ 3060.463983] [] ? down_trylock+0x2e/0x40 +[ 3060.463987] [] __llm_mq_thread+0xb6/0x210 [robusta_drv] +[ 3060.463990] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3060.463992] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3060.463993] [] ? wake_up_q+0x70/0x70 +[ 3060.463995] [] kthread+0xd8/0xf0 +[ 3060.463996] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3060.463998] [] ret_from_fork+0x3f/0x70 +[ 3060.463999] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3060.463999] Code: 31 c0 eb ca e8 07 fd 84 ff 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 c6 07 00 0f 1f 40 00 48 89 f7 57 9d 0f 1f 44 00 00 5d 0f 1f 40 00 0f 1f 44 00 00 55 48 89 e5 c6 07 00 48 89 f7 57 +[ 3064.447239] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 33887, evict = 1035012 +[ 3067.082648] bdbm: llm_make_req: 1050000, 14 +[ 3075.891039] bdbm: llm_make_req: 1100000, 16 +[ 3082.063624] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 33887, evict = 1135012 +[ 3084.694656] bdbm: llm_make_req: 1150000, 16 +[ 3088.465080] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [__llm_mq_thread:6483] +[ 3088.465082] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 3088.465107] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 3088.465115] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 3088.465116] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 3088.465116] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 3088.465117] RIP: 0010:[] [] __llm_mq_thread+0xca/0x210 [robusta_drv] +[ 3088.465122] RSP: 0018:ffff880fc34c7e38 EFLAGS: 00000286 +[ 3088.465123] RAX: 0000000000000000 RBX: 0000000000000053 RCX: 0000000000000001 +[ 3088.465124] RDX: 0000000000000001 RSI: 0000000000000246 RDI: 0000000000000000 +[ 3088.465124] RBP: ffff880fc34c7e78 R08: 0000000000000101 R09: 0000000000000246 +[ 3088.465125] R10: 0000000000082000 R11: 00000000000007c7 R12: 00000000000007c8 +[ 3088.465126] R13: ffff881025b2c140 R14: 0000000000000000 R15: ffffc90006bb9000 +[ 3088.465126] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 3088.465127] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 3088.465128] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 3088.465129] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 3088.465130] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 3088.465130] Stack: +[ 3088.465131] 000000000011dead 0000000000000000 00000000e572e2e4 ffff88081ec61c00 +[ 3088.465132] ffff88081ec61c00 ffffffffc0682b00 0000000000000000 0000000000000000 +[ 3088.465133] ffff880fc34c7ec0 ffffffffc0682b73 0000000000000000 ffff88007dee0000 +[ 3088.465135] Call Trace: +[ 3088.465138] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3088.465140] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3088.465143] [] ? wake_up_q+0x70/0x70 +[ 3088.465144] [] kthread+0xd8/0xf0 +[ 3088.465146] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3088.465148] [] ret_from_fork+0x3f/0x70 +[ 3088.465149] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3088.465149] Code: e4 31 db 4c 89 e7 49 03 7d 08 48 c7 45 c8 00 00 00 00 e8 fa 0b a5 c0 85 c0 75 74 49 8b 7d 10 48 8d 55 c8 48 89 de e8 96 64 00 00 <48> 85 c0 49 89 c6 74 77 48 8b 45 c8 4c 89 f6 4c 89 ff 49 89 46 +[ 3093.632568] bdbm: llm_make_req: 1200000, 16 +[ 3099.908596] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 33887, evict = 1235012 +[ 3102.592141] bdbm: llm_make_req: 1250000, 15 +[ 3111.556098] bdbm: llm_make_req: 1300000, 16 +[ 3116.466230] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [__llm_mq_thread:6483] +[ 3116.466233] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 3116.466259] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 3116.466268] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 3116.466269] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 3116.466270] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 3116.466270] RIP: 0010:[] [] _raw_spin_unlock_irqrestore+0x1b/0x20 +[ 3116.466275] RSP: 0018:ffff880fc34c7dd8 EFLAGS: 00000246 +[ 3116.466275] RAX: 0000000000000246 RBX: 0000000000000000 RCX: 0000000000000000 +[ 3116.466276] RDX: 0000000000000001 RSI: 0000000000000246 RDI: 0000000000000246 +[ 3116.466277] RBP: ffff880fc34c7e28 R08: 0000000000000101 R09: 0000000000000246 +[ 3116.466277] R10: 0000000000082000 R11: 00000000000007ea R12: ffff88101f828598 +[ 3116.466278] R13: ffff880fc34c7e40 R14: ffff88007dce9750 R15: ffff88101f828580 +[ 3116.466279] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 3116.466280] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 3116.466280] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 3116.466281] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 3116.466282] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 3116.466283] Stack: +[ 3116.466283] ffffffffc067f9d0 000000000000003c 000000000000003c 00000000000005a0 +[ 3116.466284] 00000000e572e2e4 0000000000000075 0000000000000af8 ffff881025b2c140 +[ 3116.466286] 0000000000000000 ffffc90006bb9000 ffff880fc34c7e78 ffffffffc06794ca +[ 3116.466287] Call Trace: +[ 3116.466292] [] ? bdbm_prior_queue_dequeue+0x70/0x210 [robusta_drv] +[ 3116.466294] [] __llm_mq_thread+0xca/0x210 [robusta_drv] +[ 3116.466297] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3116.466299] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3116.466301] [] ? wake_up_q+0x70/0x70 +[ 3116.466302] [] kthread+0xd8/0xf0 +[ 3116.466303] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3116.466305] [] ret_from_fork+0x3f/0x70 +[ 3116.466306] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3116.466306] Code: 31 c0 eb ca e8 07 fd 84 ff 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 c6 07 00 0f 1f 40 00 48 89 f7 57 9d 0f 1f 44 00 00 5d 0f 1f 40 00 0f 1f 44 00 00 55 48 89 e5 c6 07 00 48 89 f7 57 +[ 3117.835624] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 33887, evict = 1335012 +[ 3120.612467] bdbm: llm_make_req: 1350000, 13 +[ 3130.196180] bdbm: llm_make_req: 1400000, 13 +[ 3136.764137] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 33887, evict = 1435012 +[ 3139.577674] bdbm: llm_make_req: 1450000, 15 +[ 3144.467378] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [__llm_mq_thread:6483] +[ 3144.467381] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 3144.467407] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 3144.467417] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 3144.467417] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 3144.467418] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 3144.467419] RIP: 0010:[] [] _raw_spin_unlock_irqrestore+0x15/0x20 +[ 3144.467424] RSP: 0018:ffff880fc34c7dd0 EFLAGS: 00000246 +[ 3144.467425] RAX: 0000000000000246 RBX: 0000000000000000 RCX: 0000000000000000 +[ 3144.467425] RDX: 0000000000000001 RSI: 0000000000000246 RDI: 0000000000000246 +[ 3144.467426] RBP: ffff880fc34c7dd0 R08: ffffc908ce6980e0 R09: 0000000000000246 +[ 3144.467427] R10: 0000000000082000 R11: 0000000000000810 R12: ffff88101f828598 +[ 3144.467428] R13: ffff880fc34c7e40 R14: ffff88007dce96d0 R15: ffff88101f828580 +[ 3144.467429] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 3144.467429] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 3144.467430] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 3144.467431] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 3144.467432] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 3144.467432] Stack: +[ 3144.467433] ffff880fc34c7e28 ffffffffc067f9d0 0000000000000009 0000000000000009 +[ 3144.467434] 00000000000000d8 00000000e572e2e4 000000000000006d 0000000000000a38 +[ 3144.467436] ffff881025b2c140 0000000000000000 ffffc90006bb9000 ffff880fc34c7e78 +[ 3144.467437] Call Trace: +[ 3144.467442] [] bdbm_prior_queue_dequeue+0x70/0x210 [robusta_drv] +[ 3144.467445] [] __llm_mq_thread+0xca/0x210 [robusta_drv] +[ 3144.467448] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3144.467451] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3144.467453] [] ? wake_up_q+0x70/0x70 +[ 3144.467455] [] kthread+0xd8/0xf0 +[ 3144.467456] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3144.467458] [] ret_from_fork+0x3f/0x70 +[ 3144.467459] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3144.467460] Code: 1f 44 00 00 eb c6 31 c0 eb ca e8 07 fd 84 ff 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 c6 07 00 0f 1f 40 00 48 89 f7 57 9d <0f> 1f 44 00 00 5d c3 0f 1f 40 00 0f 1f 44 00 00 55 48 89 e5 c6 +[ 3149.178374] bdbm: llm_make_req: 1500000, 14 +[ 3155.775206] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 33887, evict = 1535012 +[ 3158.543220] bdbm: llm_make_req: 1550000, 16 +[ 3168.367546] bdbm: llm_make_req: 1600000, 16 +[ 3172.468523] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [__llm_mq_thread:6483] +[ 3172.468525] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 3172.468551] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 3172.468559] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 3172.468560] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 3172.468561] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 3172.468562] RIP: 0010:[] [] _raw_spin_unlock_irqrestore+0x1b/0x20 +[ 3172.468566] RSP: 0018:ffff880fc34c7e10 EFLAGS: 00000296 +[ 3172.468567] RAX: 0000000000000296 RBX: ffff8807af8d5420 RCX: 0000000000000000 +[ 3172.468568] RDX: ffff8807af8d5428 RSI: 0000000000000296 RDI: 0000000000000296 +[ 3172.468568] RBP: ffff880fc34c7e28 R08: ffffc908e842c0e0 R09: 0000000000000246 +[ 3172.468569] R10: 0000000000082000 R11: 0000000000000835 R12: 0000000000000420 +[ 3172.468569] R13: ffff881025b2c140 R14: 0000000000000000 R15: ffffc90006bb9000 +[ 3172.468570] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 3172.468571] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 3172.468572] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 3172.468573] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 3172.468573] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 3172.468574] Stack: +[ 3172.468575] ffffffff810ca172 0000000000000000 000000000000002c ffff880fc34c7e78 +[ 3172.468576] ffffffffc0679555 000000000018bfbe 0000000000000000 00000000e572e2e4 +[ 3172.468577] ffff88081ec61c00 ffff88081ec61c00 ffffffffc0682b00 0000000000000000 +[ 3172.468578] Call Trace: +[ 3172.468581] [] ? up+0x32/0x50 +[ 3172.468585] [] __llm_mq_thread+0x155/0x210 [robusta_drv] +[ 3172.468588] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3172.468590] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3172.468591] [] ? wake_up_q+0x70/0x70 +[ 3172.468593] [] kthread+0xd8/0xf0 +[ 3172.468594] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3172.468595] [] ret_from_fork+0x3f/0x70 +[ 3172.468596] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3172.468597] Code: 31 c0 eb ca e8 07 fd 84 ff 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 c6 07 00 0f 1f 40 00 48 89 f7 57 9d 0f 1f 44 00 00 5d 0f 1f 40 00 0f 1f 44 00 00 55 48 89 e5 c6 07 00 48 89 f7 57 +[ 3174.923144] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 33887, evict = 1635012 +[ 3177.587804] bdbm: llm_make_req: 1650000, 16 +[ 3179.080791] INFO: rcu_sched self-detected stall on CPU +[ 3179.080796] 1-...: (14999 ticks this GP) idle=1ad/140000000000001/0 softirq=53354/53354 fqs=14989 +[ 3179.080796] (t=15000 jiffies g=36452 c=36451 q=1010221) +[ 3179.080798] Task dump for CPU 1: +[ 3179.080799] __llm_mq_thread R running task 0 6483 2 0x00000008 +[ 3179.080801] ffff88007dee0000 00000000e572e2e4 ffff88106ec83da8 ffffffff810ae8d9 +[ 3179.080802] 0000000000000001 ffffffff81e52600 ffff88106ec83dc0 ffffffff810b1107 +[ 3179.080803] 0000000000000002 ffff88106ec83df0 ffffffff810e49be ffff88106ec97a80 +[ 3179.080805] Call Trace: +[ 3179.080806] [] sched_show_task+0xa9/0x110 +[ 3179.080810] [] dump_cpu_task+0x37/0x40 +[ 3179.080812] [] rcu_dump_cpu_stacks+0x8e/0xe0 +[ 3179.080813] [] rcu_check_callbacks+0x4fa/0x7f0 +[ 3179.080816] [] ? acct_account_cputime+0x1c/0x20 +[ 3179.080818] [] ? account_system_time+0x7f/0x110 +[ 3179.080820] [] ? tick_sched_handle.isra.14+0x60/0x60 +[ 3179.080821] [] update_process_times+0x39/0x60 +[ 3179.080822] [] tick_sched_handle.isra.14+0x25/0x60 +[ 3179.080824] [] tick_sched_timer+0x3d/0x70 +[ 3179.080825] [] __hrtimer_run_queues+0x102/0x290 +[ 3179.080826] [] hrtimer_interrupt+0xa8/0x1a0 +[ 3179.080828] [] local_apic_timer_interrupt+0x38/0x60 +[ 3179.080831] [] smp_apic_timer_interrupt+0x3d/0x50 +[ 3179.080832] [] apic_timer_interrupt+0x82/0x90 +[ 3179.080833] [] ? _raw_spin_unlock_irqrestore+0x15/0x20 +[ 3179.080835] [] up+0x32/0x50 +[ 3179.080840] [] __llm_mq_thread+0x155/0x210 [robusta_drv] +[ 3179.080842] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3179.080844] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3179.080845] [] ? wake_up_q+0x70/0x70 +[ 3179.080846] [] kthread+0xd8/0xf0 +[ 3179.080848] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3179.080849] [] ret_from_fork+0x3f/0x70 +[ 3179.080850] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3187.088584] bdbm: llm_make_req: 1700000, 13 +[ 3193.815162] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 33887, evict = 1735012 +[ 3196.685683] bdbm: llm_make_req: 1750000, 16 +[ 3204.469827] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [__llm_mq_thread:6483] +[ 3204.469830] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 3204.469855] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 3204.469863] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 3204.469864] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 3204.469865] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 3204.469866] RIP: 0010:[] [] __llm_mq_thread+0x12e/0x210 [robusta_drv] +[ 3204.469883] RSP: 0018:ffff880fc34c7e38 EFLAGS: 00000292 +[ 3204.469883] RAX: 0000000000000296 RBX: 0000000000000077 RCX: 0000000000000000 +[ 3204.469884] RDX: ffff8807af8d5b30 RSI: 0000000000000296 RDI: 0000000000000296 +[ 3204.469885] RBP: ffff880fc34c7e78 R08: ffffc908de1fc0e0 R09: 0000000000000246 +[ 3204.469885] R10: 0000000000082000 R11: 000000000000087d R12: 0000000000000b28 +[ 3204.469886] R13: ffff881025b2c140 R14: 0000000000000000 R15: ffffc90006bb9000 +[ 3204.469887] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 3204.469888] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 3204.469888] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 3204.469889] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 3204.469890] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 3204.469890] Stack: +[ 3204.469891] 00000000001b5001 0000000000000000 00000000e572e2e4 ffff88081ec61c00 +[ 3204.469892] ffff88081ec61c00 ffffffffc0682b00 0000000000000000 0000000000000000 +[ 3204.469894] ffff880fc34c7ec0 ffffffffc0682b73 0000000000000000 ffff88007dee0000 +[ 3204.469895] Call Trace: +[ 3204.469898] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3204.469900] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3204.469903] [] ? wake_up_q+0x70/0x70 +[ 3204.469904] [] kthread+0xd8/0xf0 +[ 3204.469906] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3204.469908] [] ret_from_fork+0x3f/0x70 +[ 3204.469909] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3204.469910] Code: d2 50 c3 00 00 48 39 d1 0f 84 92 00 00 00 49 8b 87 d8 00 00 00 4c 89 f6 4c 89 ff ff 50 20 85 c0 0f 85 9b 00 00 00 48 83 45 c0 01 <48> 83 c3 01 49 83 c4 18 49 39 5d 00 0f 87 62 ff ff ff 49 8b 7d +[ 3206.395818] bdbm: llm_make_req: 1800000, 13 +[ 3213.039748] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 33887, evict = 1835012 +[ 3215.768141] bdbm: llm_make_req: 1850000, 16 +[ 3224.957316] bdbm: llm_make_req: 1900000, 16 +[ 3231.307646] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 33887, evict = 1935012 +[ 3232.470966] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [__llm_mq_thread:6483] +[ 3232.470969] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 3232.470994] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 3232.471003] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 3232.471004] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 3232.471005] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 3232.471005] RIP: 0010:[] [] bdbm_prior_queue_dequeue+0x74/0x210 [robusta_drv] +[ 3232.471010] RSP: 0018:ffff880fc34c7de0 EFLAGS: 00000246 +[ 3232.471011] RAX: 0000000000000246 RBX: 0000000000000000 RCX: 0000000000000000 +[ 3232.471011] RDX: 0000000000000001 RSI: 0000000000000246 RDI: 00000000e572e2e4 +[ 3232.471012] RBP: ffff880fc34c7e28 R08: ffffc908cd6600e0 R09: 0000000000000246 +[ 3232.471013] R10: 0000000000082000 R11: 00000000000008a0 R12: ffff88101f828598 +[ 3232.471013] R13: ffff880fc34c7e40 R14: ffff88007dce92d0 R15: ffff88101f828580 +[ 3232.471014] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 3232.471015] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 3232.471016] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 3232.471017] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 3232.471017] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 3232.471018] Stack: +[ 3232.471019] 000000000000006b 000000000000006b 0000000000000a08 00000000e572e2e4 +[ 3232.471020] 000000000000002d 0000000000000438 ffff881025b2c140 0000000000000000 +[ 3232.471021] ffffc90006bb9000 ffff880fc34c7e78 ffffffffc06794ca 00000000001d9dfb +[ 3232.471035] Call Trace: +[ 3232.471038] [] __llm_mq_thread+0xca/0x210 [robusta_drv] +[ 3232.471040] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3232.471042] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3232.471045] [] ? wake_up_q+0x70/0x70 +[ 3232.471047] [] kthread+0xd8/0xf0 +[ 3232.471048] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3232.471050] [] ret_from_fork+0x3f/0x70 +[ 3232.471051] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3232.471052] Code: 89 de 49 03 77 20 4c 8b 36 4d 85 f6 74 0c 4c 39 f6 74 07 41 80 7e 28 00 74 32 31 db 4c 89 e7 4c 89 ce e8 20 19 1b c1 48 8b 7d d0 <65> 48 33 3c 25 28 00 00 00 48 89 d8 0f 85 79 01 00 00 48 83 c4 +[ 3234.213899] bdbm: llm_make_req: 1950000, 17 +[ 3243.523952] bdbm: llm_make_req: 2000000, 17 +[ 3249.935882] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 33887, evict = 2035012 +[ 3252.867695] bdbm: llm_make_req: 2050000, 13 +[ 3260.472103] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [__llm_mq_thread:6483] +[ 3260.472106] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 3260.472131] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 3260.472140] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 3260.472141] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 3260.472141] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 3260.472142] RIP: 0010:[] [] _raw_spin_unlock_irqrestore+0x15/0x20 +[ 3260.472146] RSP: 0018:ffff880fc34c7dd0 EFLAGS: 00000246 +[ 3260.472147] RAX: 0000000000000246 RBX: 0000000000000000 RCX: 0000000000000001 +[ 3260.472148] RDX: 0000000000000001 RSI: 0000000000000246 RDI: 0000000000000246 +[ 3260.472148] RBP: ffff880fc34c7dd0 R08: 0000000000000101 R09: 0000000000000246 +[ 3260.472149] R10: 0000000000082000 R11: 00000000000008c5 R12: ffff88101f828598 +[ 3260.472150] R13: ffff880fc34c7e40 R14: ffff88007dce93c0 R15: ffff88101f828580 +[ 3260.472150] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 3260.472151] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 3260.472152] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 3260.472153] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 3260.472153] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 3260.472154] Stack: +[ 3260.472155] ffff880fc34c7e28 ffffffffc067f9d0 0000000000000005 0000000000000005 +[ 3260.472156] 0000000000000078 00000000e572e2e4 000000000000003c 00000000000005a0 +[ 3260.472157] ffff881025b2c140 0000000000000000 ffffc90006bb9000 ffff880fc34c7e78 +[ 3260.472158] Call Trace: +[ 3260.472163] [] bdbm_prior_queue_dequeue+0x70/0x210 [robusta_drv] +[ 3260.472165] [] __llm_mq_thread+0xca/0x210 [robusta_drv] +[ 3260.472167] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3260.472169] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3260.472171] [] ? wake_up_q+0x70/0x70 +[ 3260.472173] [] kthread+0xd8/0xf0 +[ 3260.472174] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3260.472175] [] ret_from_fork+0x3f/0x70 +[ 3260.472176] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3260.472177] Code: 1f 44 00 00 eb c6 31 c0 eb ca e8 07 fd 84 ff 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 c6 07 00 0f 1f 40 00 48 89 f7 57 9d <0f> 1f 44 00 00 5d c3 0f 1f 40 00 0f 1f 44 00 00 55 48 89 e5 c6 +[ 3262.401559] bdbm: llm_make_req: 2100000, 16 +[ 3268.841128] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 33887, evict = 2135012 +[ 3271.610589] bdbm: llm_make_req: 2150000, 15 +[ 3280.976040] bdbm: llm_make_req: 2200000, 16 +[ 3287.897699] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 33887, evict = 2235012 +[ 3288.473237] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [__llm_mq_thread:6483] +[ 3288.473240] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 3288.473266] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 3288.473276] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 3288.473277] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 3288.473278] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 3288.473279] RIP: 0010:[] [] _raw_spin_lock_irqsave+0x6/0x40 +[ 3288.473284] RSP: 0018:ffff880fc34c7dd0 EFLAGS: 00000246 +[ 3288.473284] RAX: 0000000000000000 RBX: 0000000000000017 RCX: 0000000000000001 +[ 3288.473285] RDX: ffff880fc34c7e40 RSI: 0000000000000017 RDI: ffff88101f828598 +[ 3288.473286] RBP: ffff880fc34c7e28 R08: 0000000000000101 R09: 0000000000000246 +[ 3288.473286] R10: 0000000000082000 R11: 00000000000008ea R12: ffff88101f828598 +[ 3288.473287] R13: ffff880fc34c7e40 R14: 0000000000000000 R15: ffff88101f828580 +[ 3288.473288] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 3288.473289] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 3288.473289] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 3288.473290] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 3288.473291] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 3288.473291] Stack: +[ 3288.473292] ffff880fc34c7e28 ffffffffc067f99a 000000000000006c 000000000000006c +[ 3288.473293] 0000000000000a20 00000000e572e2e4 0000000000000017 0000000000000228 +[ 3288.473294] ffff881025b2c140 0000000000000000 ffffc90006bb9000 ffff880fc34c7e78 +[ 3288.473296] Call Trace: +[ 3288.473301] [] ? bdbm_prior_queue_dequeue+0x3a/0x210 [robusta_drv] +[ 3288.473303] [] __llm_mq_thread+0xca/0x210 [robusta_drv] +[ 3288.473306] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3288.473308] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3288.473310] [] ? wake_up_q+0x70/0x70 +[ 3288.473312] [] kthread+0xd8/0xf0 +[ 3288.473313] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3288.473314] [] ret_from_fork+0x3f/0x70 +[ 3288.473315] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3288.473316] Code: be 00 01 00 00 f0 0f c1 37 81 c6 00 01 00 00 40 84 f6 75 06 48 89 d8 5b 5d c3 e8 06 ab 89 ff 48 89 d8 5b 5d c3 0f 1f 44 00 00 55 <48> 89 e5 53 9c 58 0f 1f 44 00 00 48 89 c3 fa 66 0f 1f 44 00 00 +[ 3290.832379] bdbm: llm_make_req: 2250000, 14 +[ 3300.231522] bdbm: llm_make_req: 2300000, 13 +[ 3307.174246] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 33887, evict = 2335012 +[ 3309.997528] bdbm: llm_make_req: 2350000, 14 +[ 3316.474370] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [__llm_mq_thread:6483] +[ 3316.474373] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 3316.474397] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 3316.474406] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 3316.474406] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 3316.474407] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 3316.474408] RIP: 0010:[] [] _raw_spin_unlock_irqrestore+0x15/0x20 +[ 3316.474412] RSP: 0018:ffff880fc34c7dd0 EFLAGS: 00000246 +[ 3316.474412] RAX: 0000000000000246 RBX: 0000000000000000 RCX: 0000000000000001 +[ 3316.474413] RDX: 0000000000000001 RSI: 0000000000000246 RDI: 0000000000000246 +[ 3316.474414] RBP: ffff880fc34c7dd0 R08: 0000000000000101 R09: 0000000000000246 +[ 3316.474414] R10: 0000000000082000 R11: 0000000000000910 R12: ffff88101f828598 +[ 3316.474415] R13: ffff880fc34c7e40 R14: ffff88007dce9560 R15: ffff88101f828580 +[ 3316.474416] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 3316.474416] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 3316.474417] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 3316.474418] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 3316.474419] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 3316.474419] Stack: +[ 3316.474420] ffff880fc34c7e28 ffffffffc067f9d0 000000000000001e 000000000000001e +[ 3316.474421] 00000000000002d0 00000000e572e2e4 0000000000000056 0000000000000810 +[ 3316.474423] ffff881025b2c140 0000000000000000 ffffc90006bb9000 ffff880fc34c7e78 +[ 3316.474424] Call Trace: +[ 3316.474428] [] bdbm_prior_queue_dequeue+0x70/0x210 [robusta_drv] +[ 3316.474430] [] __llm_mq_thread+0xca/0x210 [robusta_drv] +[ 3316.474432] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3316.474434] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3316.474437] [] ? wake_up_q+0x70/0x70 +[ 3316.474438] [] kthread+0xd8/0xf0 +[ 3316.474439] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3316.474441] [] ret_from_fork+0x3f/0x70 +[ 3316.474442] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3316.474442] Code: 1f 44 00 00 eb c6 31 c0 eb ca e8 07 fd 84 ff 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 c6 07 00 0f 1f 40 00 48 89 f7 57 9d <0f> 1f 44 00 00 5d c3 0f 1f 40 00 0f 1f 44 00 00 55 48 89 e5 c6 +[ 3319.492275] bdbm: llm_make_req: 2400000, 16 +[ 3326.204199] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 33887, evict = 2435012 +[ 3329.074727] bdbm: llm_make_req: 2450000, 16 +[ 3338.789162] bdbm: llm_make_req: 2500000, 13 +[ 3344.475500] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [__llm_mq_thread:6483] +[ 3344.475503] Modules linked in: robusta_drv(OE) risa_dev_ramdrive_timing(OE) bnep nls_iso8859_1 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_hdmi input_leds joydev kvm snd_hda_codec_realtek snd_hda_codec_generic irqbypass snd_hda_intel crct10dif_pclmul snd_hda_codec crc32_pclmul snd_hda_core 8250_dw snd_hwdep snd_pcm snd_seq_midi i2c_designware_platform snd_seq_midi_event i2c_designware_core snd_rawmidi aesni_intel snd_seq aes_x86_64 hci_uart snd_seq_device btbcm snd_timer snd lrw btqca soundcore gf128mul btintel glue_helper bluetooth ablk_helper cryptd serio_raw idma64 virt_dma intel_lpss_pci intel_lpss_acpi mac_hid shpchp intel_lpss acpi_als kfifo_buf mei_me mei industrialio acpi_pad parport_pc ppdev lp parport autofs4 hid_generic usbhid mxm_wmi i915_bpo intel_ips +[ 3344.475528] i2c_algo_bit drm_kms_helper e1000e psmouse syscopyarea sysfillrect sysimgblt ptp fb_sys_fops pps_core ahci drm nvme libahci i2c_hid hid wmi video pinctrl_sunrisepoint pinctrl_intel fjes [last unloaded: risa_dev_ramdrive_timing] +[ 3344.475536] CPU: 1 PID: 6483 Comm: __llm_mq_thread Tainted: G OEL 4.4.0-42-generic #62-Ubuntu +[ 3344.475536] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.30 09/06/2015 +[ 3344.475538] task: ffff88007dee0000 ti: ffff880fc34c4000 task.ti: ffff880fc34c4000 +[ 3344.475538] RIP: 0010:[] [] _raw_spin_unlock_irqrestore+0x15/0x20 +[ 3344.475542] RSP: 0018:ffff880fc34c7e08 EFLAGS: 00000286 +[ 3344.475543] RAX: 0000000000000286 RBX: 0000000000000000 RCX: 0000000000000000 +[ 3344.475543] RDX: 0000000000000001 RSI: 0000000000000286 RDI: 0000000000000286 +[ 3344.475544] RBP: ffff880fc34c7e08 R08: ffffc908b61580e0 R09: 0000000000000246 +[ 3344.475544] R10: 0000000000082000 R11: 0000000000000935 R12: ffff8807af8d59f0 +[ 3344.475545] R13: ffff881025b2c140 R14: 0000000000000000 R15: ffffc90006bb9000 +[ 3344.475546] FS: 0000000000000000(0000) GS:ffff88106ec80000(0000) knlGS:0000000000000000 +[ 3344.475547] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 3344.475547] CR2: 00007fb48ad5a000 CR3: 0000000002e0a000 CR4: 00000000003406e0 +[ 3344.475548] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 3344.475549] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 3344.475549] Stack: +[ 3344.475550] ffff880fc34c7e28 ffffffff810ca0de 000000000000006a 00000000000009f0 +[ 3344.475552] ffff880fc34c7e78 ffffffffc06794b6 0000000000269be7 0000000000000000 +[ 3344.475553] 00000000e572e2e4 ffff88081ec61c00 ffff88081ec61c00 ffffffffc0682b00 +[ 3344.475554] Call Trace: +[ 3344.475557] [] down_trylock+0x2e/0x40 +[ 3344.475560] [] __llm_mq_thread+0xb6/0x210 [robusta_drv] +[ 3344.475563] [] ? bdbm_flog+0x70/0x70 [robusta_drv] +[ 3344.475565] [] bdbm_thread_fn+0x73/0xa0 [robusta_drv] +[ 3344.475567] [] ? wake_up_q+0x70/0x70 +[ 3344.475568] [] kthread+0xd8/0xf0 +[ 3344.475569] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3344.475571] [] ret_from_fork+0x3f/0x70 +[ 3344.475572] [] ? kthread_create_on_node+0x1e0/0x1e0 +[ 3344.475572] Code: 1f 44 00 00 eb c6 31 c0 eb ca e8 07 fd 84 ff 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 c6 07 00 0f 1f 40 00 48 89 f7 57 9d <0f> 1f 44 00 00 5d c3 0f 1f 40 00 0f 1f 44 00 00 55 48 89 e5 c6 +[ 3345.379912] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 33887, evict = 2535012 +[ 3348.275236] bdbm: llm_make_req: 2550000, 16 +[ 3358.269291] bdbm: llm_make_req: 2600000, 13 +[ 3364.299193] bdbm: nvm: total access = 2800000, total read = 20583, read hit = 797, total_write = 2779416, write hit = 2779416, hit = 35982, evict = 2613159 +[ 3367.494488] bdbm: llm_make_req: 2650000, 13 +[ 3377.040529] bdbm: llm_make_req: 2700000, 15 +[ 3381.052399] bdbm: nvm: total access = 2900000, total read = 60598, read hit = 5795, total_write = 2839401, write hit = 2839401, hit = 48331, evict = 2665793 +[ 3386.762940] bdbm: llm_make_req: 2750000, 11 +[ 3396.591567] bdbm: nvm: total access = 3000000, total read = 100552, read hit = 14531, total_write = 2899447, write hit = 2899447, hit = 69970, evict = 2712936 +[ 3396.800829] bdbm: llm_make_req: 2800000, 13 +[ 3406.933145] bdbm: llm_make_req: 2850000, 14 +[ 3411.805453] bdbm: nvm: total access = 3100000, total read = 140864, read hit = 24623, total_write = 2959135, write hit = 2959135, hit = 95045, evict = 2757641 +[ 3417.080876] bdbm: llm_make_req: 2900000, 15 +[ 3427.235841] bdbm: llm_make_req: 2950000, 7 +[ 3427.285232] bdbm: nvm: total access = 3200000, total read = 180751, read hit = 34063, total_write = 3019248, write hit = 3019248, hit = 118687, evict = 2803552 +[ 3437.350113] bdbm: llm_make_req: 3000000, 15 +[ 3442.923153] bdbm: nvm: total access = 3300000, total read = 220098, read hit = 43017, total_write = 3079901, write hit = 3079901, hit = 141547, evict = 2850299 +[ 3447.536286] bdbm: llm_make_req: 3050000, 1 +[ 3457.573082] bdbm: llm_make_req: 3100000, 4 +[ 3458.374479] bdbm: nvm: total access = 3400000, total read = 259733, read hit = 52315, total_write = 3140266, write hit = 3140266, hit = 165031, evict = 2896478 +[ 3467.748017] bdbm: llm_make_req: 3150000, 12 +[ 3473.901400] bdbm: nvm: total access = 3500000, total read = 299468, read hit = 61522, total_write = 3200531, write hit = 3200531, hit = 188517, evict = 2942464 +[ 3477.813403] bdbm: llm_make_req: 3200000, 8 +[ 3487.921537] bdbm: llm_make_req: 3250000, 10 +[ 3489.255481] bdbm: nvm: total access = 3600000, total read = 339350, read hit = 70779, total_write = 3260649, write hit = 3260649, hit = 212163, evict = 2988193 +[ 3498.122314] bdbm: llm_make_req: 3300000, 10 +[ 3504.838512] bdbm: nvm: total access = 3700000, total read = 379103, read hit = 80155, total_write = 3320896, write hit = 3320896, hit = 235416, evict = 3034563 +[ 3508.152757] bdbm: llm_make_req: 3350000, 9 +[ 3518.234246] bdbm: llm_make_req: 3400000, 7 +[ 3520.196696] bdbm: nvm: total access = 3800000, total read = 419385, read hit = 89605, total_write = 3380614, write hit = 3380614, hit = 258994, evict = 3080153 +[ 3528.361250] bdbm: llm_make_req: 3450000, 4 +[ 3535.842327] bdbm: nvm: total access = 3900000, total read = 459186, read hit = 99043, total_write = 3440813, write hit = 3440813, hit = 282514, evict = 3126270 +[ 3538.622276] bdbm: llm_make_req: 3500000, 7 +[ 3548.632691] bdbm: llm_make_req: 3550000, 11 +[ 3551.268488] bdbm: nvm: total access = 4000000, total read = 499334, read hit = 108394, total_write = 3500665, write hit = 3500665, hit = 305786, evict = 3172201 +[ 3558.832238] bdbm: llm_make_req: 3600000, 11 +[ 3566.906649] bdbm: nvm: total access = 4100000, total read = 539550, read hit = 117844, total_write = 3560449, write hit = 3560449, hit = 329274, evict = 3217947 +[ 3569.035152] bdbm: llm_make_req: 3650000, 12 +[ 3579.212528] bdbm: llm_make_req: 3700000, 11 +[ 3582.492445] bdbm: nvm: total access = 4200000, total read = 579298, read hit = 127175, total_write = 3620701, write hit = 3620701, hit = 352886, evict = 3263918 +[ 3589.412066] bdbm: llm_make_req: 3750000, 7 +[ 3598.171092] bdbm: nvm: total access = 4300000, total read = 620058, read hit = 136852, total_write = 3679941, write hit = 3679941, hit = 376300, evict = 3309421 +[ 3599.639356] bdbm: llm_make_req: 3800000, 13 +[ 3609.720083] bdbm: llm_make_req: 3850000, 9 +[ 3613.665741] bdbm: nvm: total access = 4400000, total read = 660063, read hit = 146155, total_write = 3739936, write hit = 3739936, hit = 399595, evict = 3355424 +[ 3619.845416] bdbm: llm_make_req: 3900000, 13 +[ 3629.048380] bdbm: nvm: total access = 4500000, total read = 700082, read hit = 155454, total_write = 3799917, write hit = 3799917, hit = 422934, evict = 3401365 +[ 3629.891238] bdbm: llm_make_req: 3950000, 12 +[ 3639.997769] bdbm: llm_make_req: 4000000, 6 +[ 3644.546847] bdbm: nvm: total access = 4600000, total read = 740348, read hit = 165101, total_write = 3859651, write hit = 3859651, hit = 446430, evict = 3447250 +[ 3650.164434] bdbm: llm_make_req: 4050000, 16 +[ 3660.054935] bdbm: nvm: total access = 4700000, total read = 780586, read hit = 174340, total_write = 3919413, write hit = 3919413, hit = 470050, evict = 3492631 +[ 3660.292981] bdbm: llm_make_req: 4100000, 12 +[ 3670.484714] bdbm: llm_make_req: 4150000, 10 +[ 3675.708594] bdbm: nvm: total access = 4800000, total read = 819773, read hit = 183626, total_write = 3980226, write hit = 3980226, hit = 494054, evict = 3538726 +[ 3680.838211] bdbm: llm_make_req: 4200000, 8 +[ 3690.945720] bdbm: llm_make_req: 4250000, 11 +[ 3691.168365] bdbm: nvm: total access = 4900000, total read = 859464, read hit = 193026, total_write = 4040535, write hit = 4040535, hit = 517883, evict = 3584606 +[ 3701.059543] bdbm: llm_make_req: 4300000, 6 +[ 3706.611024] bdbm: nvm: total access = 5000000, total read = 899037, read hit = 202262, total_write = 4100962, write hit = 4100962, hit = 541514, evict = 3630638 +[ 3711.178532] bdbm: llm_make_req: 4350000, 8 +[ 3721.321845] bdbm: llm_make_req: 4400000, 12 +[ 3722.059593] bdbm: nvm: total access = 5100000, total read = 939168, read hit = 211834, total_write = 4160831, write hit = 4160831, hit = 565312, evict = 3676281 +[ 3731.493897] bdbm: llm_make_req: 4450000, 9 +[ 3737.572117] bdbm: nvm: total access = 5200000, total read = 979399, read hit = 221361, total_write = 4220600, write hit = 4220600, hit = 588940, evict = 3721949 +[ 3741.637457] bdbm: llm_make_req: 4500000, 14 +[ 3751.651622] bdbm: llm_make_req: 4550000, 10 +[ 3752.907989] bdbm: nvm: total access = 5300000, total read = 1018802, read hit = 230692, total_write = 4281197, write hit = 4281197, hit = 612591, evict = 3768226 +[ 3761.779285] bdbm: llm_make_req: 4600000, 13 +[ 3768.447809] bdbm: nvm: total access = 5400000, total read = 1058485, read hit = 240249, total_write = 4341514, write hit = 4341514, hit = 636117, evict = 3814574 +[ 3771.958538] bdbm: llm_make_req: 4650000, 13 +[ 3782.001434] bdbm: llm_make_req: 4700000, 16 +[ 3783.924118] bdbm: nvm: total access = 5500000, total read = 1098091, read hit = 249613, total_write = 4401908, write hit = 4401908, hit = 659445, evict = 3861004 +[ 3792.208499] bdbm: llm_make_req: 4750000, 12 +[ 3799.514445] bdbm: nvm: total access = 5600000, total read = 1137505, read hit = 258758, total_write = 4462494, write hit = 4462494, hit = 683222, evict = 3906958 +[ 3802.462891] bdbm: llm_make_req: 4800000, 9 +[ 3812.506428] bdbm: llm_make_req: 4850000, 15 +[ 3814.932777] bdbm: nvm: total access = 5700000, total read = 1176809, read hit = 267965, total_write = 4523190, write hit = 4523190, hit = 706721, evict = 3953362 +[ 3822.726997] bdbm: llm_make_req: 4900000, 17 +[ 3830.498991] bdbm: nvm: total access = 5800000, total read = 1216448, read hit = 277229, total_write = 4583551, write hit = 4583551, hit = 730272, evict = 3999436 +[ 3832.817498] bdbm: llm_make_req: 4950000, 8 +[ 3842.834321] bdbm: llm_make_req: 5000000, 14 +[ 3845.861524] bdbm: nvm: total access = 5900000, total read = 1256150, read hit = 286642, total_write = 4643849, write hit = 4643849, hit = 753852, evict = 4045567 +[ 3854.257798] bdbm: llm_make_req: 5050000, 96 +[ 3865.239360] bdbm: llm_make_req: 5100000, 15 +[ 3876.844340] bdbm: llm_make_req: 5150000, 17 +[ 3877.187815] bdbm: nvm: total access = 6000000, total read = 1296345, read hit = 295862, total_write = 4703654, write hit = 4703654, hit = 776969, evict = 4091475 +[ 3889.294033] bdbm: llm_make_req: 5200000, 96 +[ 3899.451617] bdbm: llm_make_req: 5250000, 14 +[ 3905.181290] bdbm: nvm: total access = 6100000, total read = 1336818, read hit = 305379, total_write = 4763181, write hit = 4763181, hit = 800756, evict = 4136732 +[ 3911.215847] bdbm: llm_make_req: 5300000, 16 +[ 3922.648341] bdbm: llm_make_req: 5350000, 96 +[ 3931.604644] bdbm: nvm: total access = 6200000, total read = 1376792, read hit = 314822, total_write = 4823207, write hit = 4823207, hit = 824359, evict = 4182598 +[ 3934.157602] bdbm: llm_make_req: 5400000, 96 +[ 3945.423671] bdbm: llm_make_req: 5450000, 14 +[ 3957.275275] bdbm: llm_make_req: 5500000, 12 +[ 3959.781685] bdbm: nvm: total access = 6300000, total read = 1416549, read hit = 324449, total_write = 4883450, write hit = 4883450, hit = 848252, evict = 4228575 +[ 3969.594660] bdbm: llm_make_req: 5550000, 96 +[ 3980.164218] bdbm: llm_make_req: 5600000, 13 +[ 3992.043433] bdbm: llm_make_req: 5650000, 10 +[ 3992.343942] bdbm: nvm: total access = 6400000, total read = 1456252, read hit = 333762, total_write = 4943747, write hit = 4943747, hit = 871745, evict = 4274692 +[ 4004.823360] bdbm: llm_make_req: 5700000, 96 +[ 4015.036289] bdbm: llm_make_req: 5750000, 14 +[ 4027.248219] bdbm: llm_make_req: 5800000, 7 +[ 4027.622880] bdbm: nvm: total access = 6500000, total read = 1495815, read hit = 343109, total_write = 5004184, write hit = 5004184, hit = 895389, evict = 4320832 +[ 4040.429933] bdbm: llm_make_req: 5850000, 96 +[ 4050.703551] bdbm: llm_make_req: 5900000, 4 +[ 4062.794816] bdbm: llm_make_req: 5950000, 18 +[ 4064.158532] bdbm: nvm: total access = 6600000, total read = 1536089, read hit = 352490, total_write = 5063910, write hit = 5063910, hit = 919226, evict = 4366102 +[ 4075.887108] bdbm: llm_make_req: 6000000, 96 +[ 4086.140829] bdbm: llm_make_req: 6050000, 12 +[ 4098.378059] bdbm: llm_make_req: 6100000, 96 +[ 4106.263104] bdbm: nvm: total access = 6700000, total read = 1576540, read hit = 362133, total_write = 5123459, write hit = 5123459, hit = 943146, evict = 4411374 +[ 4111.139031] bdbm: llm_make_req: 6150000, 96 +[ 4121.814991] bdbm: llm_make_req: 6200000, 11 +[ 4134.005675] bdbm: llm_make_req: 6250000, 96 +[ 4146.348227] bdbm: llm_make_req: 6300000, 96 +[ 4148.943356] bdbm: nvm: total access = 6800000, total read = 1616404, read hit = 371249, total_write = 5183595, write hit = 5183595, hit = 966287, evict = 4457485 +[ 4157.626376] bdbm: llm_make_req: 6350000, 13 +[ 4170.611502] bdbm: llm_make_req: 6400000, 96 +[ 4181.814813] bdbm: llm_make_req: 6450000, 96 +[ 4193.762745] bdbm: llm_make_req: 6500000, 13 +[ 4194.211765] bdbm: nvm: total access = 6900000, total read = 1656514, read hit = 380870, total_write = 5243485, write hit = 5243485, hit = 990102, evict = 4503181 +[ 4207.283233] bdbm: llm_make_req: 6550000, 96 +[ 4217.429124] bdbm: llm_make_req: 6600000, 11 +[ 4229.548902] bdbm: llm_make_req: 6650000, 96 +[ 4239.726330] bdbm: nvm: total access = 7000000, total read = 1696693, read hit = 390242, total_write = 5303306, write hit = 5303306, hit = 1013563, evict = 4548913 +[ 4242.889383] bdbm: llm_make_req: 6700000, 96 +[ 4253.625755] bdbm: llm_make_req: 6750000, 11 +[ 4266.870647] bdbm: llm_make_req: 6800000, 96 +[ 4278.166513] bdbm: llm_make_req: 6850000, 96 +[ 4290.012342] bdbm: llm_make_req: 6900000, 96 +[ 4303.913254] bdbm: llm_make_req: 6950000, 96 +[ 4305.885569] bdbm: nvm: total access = 7100000, total read = 1736608, read hit = 399571, total_write = 5363391, write hit = 5363391, hit = 1036751, evict = 4595139 +[ 4314.394844] bdbm: llm_make_req: 7000000, 11 +[ 4327.941316] bdbm: llm_make_req: 7050000, 96 +[ 4339.427387] bdbm: llm_make_req: 7100000, 96 +[ 4351.265674] bdbm: llm_make_req: 7150000, 96 +[ 4365.246354] bdbm: llm_make_req: 7200000, 96 +[ 4375.468871] bdbm: nvm: total access = 7200000, total read = 1776325, read hit = 409148, total_write = 5423674, write hit = 5423674, hit = 1060505, evict = 4641245 +[ 4375.595146] bdbm: llm_make_req: 7250000, 10 +[ 4389.463671] bdbm: llm_make_req: 7300000, 96 +[ 4400.794741] bdbm: llm_make_req: 7350000, 96 +[ 4413.023931] bdbm: llm_make_req: 7400000, 96 +[ 4426.675867] bdbm: llm_make_req: 7450000, 96 +[ 4437.328178] bdbm: llm_make_req: 7500000, 7 +[ 4451.764868] bdbm: llm_make_req: 7550000, 95 +[ 4460.501935] bdbm: nvm: total access = 7300000, total read = 1816180, read hit = 418512, total_write = 5483819, write hit = 5483819, hit = 1084034, evict = 4687225 +[ 4462.077862] bdbm: llm_make_req: 7600000, 96 +[ 4475.227872] bdbm: llm_make_req: 7650000, 96 +[ 4487.877299] bdbm: llm_make_req: 7700000, 96 +[ 4498.896283] bdbm: llm_make_req: 7750000, 96 +[ 4513.576446] bdbm: llm_make_req: 7800000, 96 +[ 4523.539249] bdbm: llm_make_req: 7850000, 13 +[ 4537.608959] bdbm: llm_make_req: 7900000, 96 +[ 4546.674937] bdbm: nvm: total access = 7400000, total read = 1856940, read hit = 428221, total_write = 5543059, write hit = 5543059, hit = 1107644, evict = 4732564 +[ 4548.863390] bdbm: llm_make_req: 7950000, 96 +[ 4561.282871] bdbm: llm_make_req: 8000000, 96 +[ 4574.509667] bdbm: llm_make_req: 8050000, 96 +[ 4585.363037] bdbm: llm_make_req: 8100000, 18 +[ 4599.910718] bdbm: llm_make_req: 8150000, 96 +[ 4609.833705] bdbm: llm_make_req: 8200000, 96 +[ 4623.263868] bdbm: llm_make_req: 8250000, 96 +[ 4632.589111] bdbm: nvm: total access = 7500000, total read = 1897061, read hit = 437679, total_write = 5602938, write hit = 5602938, hit = 1131167, evict = 4778378 +[ 4635.786809] bdbm: llm_make_req: 8300000, 96 +[ 4646.832435] bdbm: llm_make_req: 8350000, 96 +[ 4661.527784] bdbm: llm_make_req: 8400000, 96 +[ 4671.510401] bdbm: llm_make_req: 8450000, 11 +[ 4685.543019] bdbm: llm_make_req: 8500000, 96 +[ 4696.975560] bdbm: llm_make_req: 8550000, 96 +[ 4708.961152] bdbm: llm_make_req: 8600000, 95 +[ 4722.900336] bdbm: llm_make_req: 8650000, 96 +[ 4725.517390] bdbm: nvm: total access = 7600000, total read = 1936502, read hit = 447218, total_write = 5663497, write hit = 5663497, hit = 1155198, evict = 4824445 +[ 4733.368377] bdbm: llm_make_req: 8700000, 13 +[ 4747.653597] bdbm: llm_make_req: 8750000, 96 +[ 4758.116021] bdbm: llm_make_req: 8800000, 96 +[ 4771.298049] bdbm: llm_make_req: 8850000, 96 +[ 4783.897945] bdbm: llm_make_req: 8900000, 96 +[ 4794.923997] bdbm: llm_make_req: 8950000, 96 +[ 4809.917363] bdbm: llm_make_req: 9000000, 96 +[ 4812.115328] bdbm: nvm: total access = 7700000, total read = 1976490, read hit = 456307, total_write = 5723509, write hit = 5723509, hit = 1178232, evict = 4870512 +[ 4819.791459] bdbm: llm_make_req: 9050000, 14 +[ 4833.668662] bdbm: llm_make_req: 9100000, 96 +[ 4845.560001] bdbm: llm_make_req: 9150000, 96 +[ 4857.225499] bdbm: llm_make_req: 9200000, 96 +[ 4871.362062] bdbm: llm_make_req: 9250000, 96 +[ 4881.604814] bdbm: llm_make_req: 9300000, 8 +[ 4895.682647] bdbm: llm_make_req: 9350000, 96 +[ 4904.155939] bdbm: nvm: total access = 7800000, total read = 2016097, read hit = 465737, total_write = 5783902, write hit = 5783902, hit = 1202137, evict = 4916430 +[ 4906.690473] bdbm: llm_make_req: 9400000, 96 +[ 4918.901221] bdbm: llm_make_req: 9450000, 96 +[ 4932.645026] bdbm: llm_make_req: 9500000, 96 +[ 4943.121766] bdbm: llm_make_req: 9550000, 17 +[ 4956.305012] bdbm: llm_make_req: 9600000, 96 +[ 4966.226710] bdbm: nvm: total access = 7900000, total read = 2056024, read hit = 475260, total_write = 5843975, write hit = 5843975, hit = 1225940, evict = 4962223 +[ 4968.095703] bdbm: llm_make_req: 9650000, 96 +[ 4979.641324] bdbm: llm_make_req: 9700000, 9 +[ 4993.539546] bdbm: llm_make_req: 9750000, 96 +[ 5003.539071] bdbm: llm_make_req: 9800000, 4 +[ 5015.999289] bdbm: llm_make_req: 9850000, 13 +[ 5024.391047] bdbm: nvm: total access = 8000000, total read = 2095795, read hit = 484699, total_write = 5904204, write hit = 5904204, hit = 1249433, evict = 5008398 +[ 5029.507551] bdbm: llm_make_req: 9900000, 96 +[ 5039.865500] bdbm: llm_make_req: 9950000, 11 +[ 5051.940804] bdbm: llm_make_req: 10000000, 96 +[ 5065.060034] bdbm: llm_make_req: 10050000, 96 +[ 5068.885384] bdbm: nvm: total access = 8100000, total read = 2135294, read hit = 494030, total_write = 5964705, write hit = 5964705, hit = 1272754, evict = 5054909 +[ 5075.749926] bdbm: llm_make_req: 10100000, 15 +[ 5087.681173] bdbm: llm_make_req: 10150000, 96 +[ 5100.328281] bdbm: llm_make_req: 10200000, 96 +[ 5109.626758] bdbm: nvm: total access = 8200000, total read = 2175769, read hit = 503679, total_write = 6024230, write hit = 6024230, hit = 1296350, evict = 5100487 +[ 5111.213415] bdbm: llm_make_req: 10250000, 12 +[ 5123.194041] bdbm: llm_make_req: 10300000, 11 +[ 5135.507293] bdbm: llm_make_req: 10350000, 96 +[ 5138.989652] bdbm: nvm: total access = 8300000, total read = 2216256, read hit = 513354, total_write = 6083743, write hit = 6083743, hit = 1320078, evict = 5145947 +[ 5145.942341] bdbm: llm_make_req: 10400000, 14 +[ 5157.517079] bdbm: llm_make_req: 10450000, 13 +[ 5166.197378] bdbm: nvm: total access = 8400000, total read = 2256304, read hit = 522617, total_write = 6143695, write hit = 6143695, hit = 1343682, evict = 5191558 +[ 5169.190504] bdbm: llm_make_req: 10500000, 10 +[ 5180.580848] bdbm: llm_make_req: 10550000, 96 +[ 5191.615896] bdbm: llm_make_req: 10600000, 6 +[ 5191.944727] bdbm: nvm: total access = 8500000, total read = 2296196, read hit = 531818, total_write = 6203803, write hit = 6203803, hit = 1367091, evict = 5237458 +[ 5203.044947] bdbm: llm_make_req: 10650000, 13 +[ 5214.290604] bdbm: llm_make_req: 10700000, 95 +[ 5216.575038] bdbm: nvm: total access = 8600000, total read = 2336357, read hit = 541468, total_write = 6263642, write hit = 6263642, hit = 1390911, evict = 5283127 +[ 5225.212882] bdbm: llm_make_req: 10750000, 14 +[ 5236.679667] bdbm: llm_make_req: 10800000, 15 +[ 5241.082184] bdbm: nvm: total access = 8700000, total read = 2376512, read hit = 550807, total_write = 6323487, write hit = 6323487, hit = 1414737, evict = 5328485 +[ 5247.992697] bdbm: llm_make_req: 10850000, 11 +[ 5259.525733] bdbm: llm_make_req: 10900000, 96 +[ 5263.073554] bdbm: nvm: total access = 8800000, total read = 2417137, read hit = 560459, total_write = 6382862, write hit = 6382862, hit = 1438328, evict = 5373921 +[ 5270.087247] bdbm: llm_make_req: 10950000, 10 +[ 5281.549657] bdbm: llm_make_req: 11000000, 10 +[ 5287.435909] bdbm: nvm: total access = 8900000, total read = 2457618, read hit = 569903, total_write = 6442381, write hit = 6442381, hit = 1461886, evict = 5419326 +[ 5292.951360] bdbm: llm_make_req: 11050000, 18 +[ 5304.624628] bdbm: llm_make_req: 11100000, 96 +[ 5312.029399] bdbm: nvm: total access = 9000000, total read = 2497432, read hit = 579448, total_write = 6502567, write hit = 6502567, hit = 1485421, evict = 5465522 +[ 5315.197401] bdbm: llm_make_req: 11150000, 12 +[ 5326.620862] bdbm: llm_make_req: 11200000, 14 +[ 5334.340107] bdbm: nvm: total access = 9100000, total read = 2536881, read hit = 588652, total_write = 6563118, write hit = 6563118, hit = 1508865, evict = 5511833 +[ 5338.213529] bdbm: llm_make_req: 11250000, 10 +[ 5349.742372] bdbm: llm_make_req: 11300000, 96 +[ 5359.014463] bdbm: nvm: total access = 9200000, total read = 2577011, read hit = 598169, total_write = 6622988, write hit = 6622988, hit = 1532667, evict = 5557418 +[ 5360.639643] bdbm: llm_make_req: 11350000, 8 +[ 5371.975071] bdbm: llm_make_req: 11400000, 13 +[ 5383.558085] bdbm: llm_make_req: 11450000, 11 +[ 5383.865301] bdbm: nvm: total access = 9300000, total read = 2616892, read hit = 607389, total_write = 6683107, write hit = 6683107, hit = 1556091, evict = 5603333 +[ 5394.910061] bdbm: llm_make_req: 11500000, 96 +[ 5405.966077] bdbm: llm_make_req: 11550000, 14 +[ 5406.198649] bdbm: nvm: total access = 9400000, total read = 2656662, read hit = 616706, total_write = 6743337, write hit = 6743337, hit = 1579770, evict = 5649201 +[ 5417.497218] bdbm: llm_make_req: 11600000, 6 +[ 5428.844693] bdbm: llm_make_req: 11650000, 12 +[ 5430.775329] bdbm: nvm: total access = 9500000, total read = 2696836, read hit = 626338, total_write = 6803163, write hit = 6803163, hit = 1603791, evict = 5694638 +[ 5439.624858] bdbm: llm_make_req: 11700000, 13 +[ 5451.126297] bdbm: llm_make_req: 11750000, 4 +[ 5455.389614] bdbm: nvm: total access = 9600000, total read = 2737442, read hit = 635880, total_write = 6862557, write hit = 6862557, hit = 1627456, evict = 5739909 +[ 5462.624059] bdbm: llm_make_req: 11800000, 11 +[ 5474.116337] bdbm: llm_make_req: 11850000, 96 +[ 5477.891491] bdbm: nvm: total access = 9700000, total read = 2776955, read hit = 645096, total_write = 6923044, write hit = 6923044, hit = 1651007, evict = 5786061 +[ 5484.923891] bdbm: llm_make_req: 11900000, 6 +[ 5496.327531] bdbm: llm_make_req: 11950000, 11 +[ 5502.529871] bdbm: nvm: total access = 9800000, total read = 2817223, read hit = 654673, total_write = 6982776, write hit = 6982776, hit = 1674815, evict = 5831562 +[ 5507.845922] bdbm: llm_make_req: 12000000, 10 +[ 5519.651210] bdbm: llm_make_req: 12050000, 96 +[ 5527.344490] bdbm: nvm: total access = 9900000, total read = 2856912, read hit = 664093, total_write = 7043087, write hit = 7043087, hit = 1698251, evict = 5877857 +[ 5530.194604] bdbm: llm_make_req: 12100000, 17 +[ 5541.629006] bdbm: llm_make_req: 12150000, 13 +[ 5549.774026] bdbm: nvm: total access = 10000000, total read = 2897302, read hit = 673666, total_write = 7102697, write hit = 7102697, hit = 1721993, evict = 5923298 +[ 5553.107749] bdbm: llm_make_req: 12200000, 4 +[ 5564.719766] bdbm: llm_make_req: 12250000, 96 +[ 5574.614499] bdbm: nvm: total access = 10100000, total read = 2937231, read hit = 683147, total_write = 7162768, write hit = 7162768, hit = 1745822, evict = 5969021 +[ 5575.352677] bdbm: llm_make_req: 12300000, 9 +[ 5586.885516] bdbm: llm_make_req: 12350000, 13 +[ 5598.459172] bdbm: llm_make_req: 12400000, 25 +[ 5599.498912] bdbm: nvm: total access = 10200000, total read = 2977318, read hit = 692521, total_write = 7222681, write hit = 7222681, hit = 1769422, evict = 6014708 +[ 5609.572818] bdbm: llm_make_req: 12450000, 96 +[ 5621.216308] bdbm: llm_make_req: 12500000, 9 +[ 5628.633576] bdbm: nvm: total access = 10300000, total read = 3017536, read hit = 702174, total_write = 7282463, write hit = 7282463, hit = 1793494, evict = 6060071 +[ 5633.217367] bdbm: llm_make_req: 12550000, 96 +[ 5644.741404] bdbm: llm_make_req: 12600000, 96 +[ 5656.372312] bdbm: llm_make_req: 12650000, 9 +[ 5662.884349] bdbm: nvm: total access = 10400000, total read = 3057624, read hit = 711532, total_write = 7342375, write hit = 7342375, hit = 1816877, evict = 6105958 +[ 5668.077978] bdbm: llm_make_req: 12700000, 77 +[ 5680.138783] bdbm: llm_make_req: 12750000, 96 +[ 5691.095895] bdbm: llm_make_req: 12800000, 14 +[ 5696.020226] bdbm: nvm: total access = 10500000, total read = 3097683, read hit = 720933, total_write = 7402316, write hit = 7402316, hit = 1840245, evict = 6151932 +[ 5702.943383] bdbm: llm_make_req: 12850000, 11 +[ 5715.359797] bdbm: llm_make_req: 12900000, 96 +[ 5726.004582] bdbm: llm_make_req: 12950000, 11 +[ 5726.194213] bdbm: nvm: total access = 10600000, total read = 3137873, read hit = 730562, total_write = 7462126, write hit = 7462126, hit = 1864064, evict = 6197552 +[ 5737.949510] bdbm: llm_make_req: 13000000, 10 +[ 5750.716643] bdbm: llm_make_req: 13050000, 96 +[ 5760.378411] bdbm: nvm: total access = 10700000, total read = 3177797, read hit = 739923, total_write = 7522202, write hit = 7522202, hit = 1887815, evict = 6243238 +[ 5760.851526] bdbm: llm_make_req: 13100000, 10 +[ 5772.869805] bdbm: llm_make_req: 13150000, 13 +[ 5785.779472] bdbm: llm_make_req: 13200000, 94 +[ 5795.644859] bdbm: nvm: total access = 10800000, total read = 3217760, read hit = 749434, total_write = 7582239, write hit = 7582239, hit = 1911425, evict = 6289176 +[ 5795.871606] bdbm: llm_make_req: 13250000, 16 +[ 5807.974341] bdbm: llm_make_req: 13300000, 7 +[ 5821.061612] bdbm: llm_make_req: 13350000, 14 +[ 5831.247638] bdbm: llm_make_req: 13400000, 11 +[ 5831.747271] bdbm: nvm: total access = 10900000, total read = 3257947, read hit = 758839, total_write = 7642052, write hit = 7642052, hit = 1935070, evict = 6334749 +[ 5843.296559] bdbm: llm_make_req: 13450000, 14 +[ 5856.211874] bdbm: llm_make_req: 13500000, 96 +[ 5866.562033] bdbm: llm_make_req: 13550000, 13 +[ 5872.690230] bdbm: nvm: total access = 11000000, total read = 3297663, read hit = 768010, total_write = 7702336, write hit = 7702336, hit = 1958285, evict = 6380989 +[ 5878.642427] bdbm: llm_make_req: 13600000, 5 +[ 5891.689668] bdbm: llm_make_req: 13650000, 96 +[ 5902.201013] bdbm: llm_make_req: 13700000, 10 +[ 5914.222634] bdbm: llm_make_req: 13750000, 96 +[ 5914.645058] bdbm: nvm: total access = 11100000, total read = 3337463, read hit = 777293, total_write = 7762536, write hit = 7762536, hit = 1981566, evict = 6427191 +[ 5927.205690] bdbm: llm_make_req: 13800000, 96 +[ 5937.783000] bdbm: llm_make_req: 13850000, 11 +[ 5950.241565] bdbm: llm_make_req: 13900000, 96 +[ 5952.925066] bdbm: nvm: total access = 11200000, total read = 3377632, read hit = 786564, total_write = 7822367, write hit = 7822367, hit = 2004684, evict = 6473175 +[ 5962.585509] bdbm: llm_make_req: 13950000, 96 +[ 5973.604560] bdbm: llm_make_req: 14000000, 14 +[ 5986.330169] bdbm: llm_make_req: 14050000, 96 +[ 5996.160347] bdbm: nvm: total access = 11300000, total read = 3418476, read hit = 795995, total_write = 7881523, write hit = 7881523, hit = 2027814, evict = 6518632 +[ 5997.434418] bdbm: llm_make_req: 14100000, 96 +[ 6009.369168] bdbm: llm_make_req: 14150000, 9 +[ 6022.911173] bdbm: llm_make_req: 14200000, 95 +[ 6032.990708] bdbm: llm_make_req: 14250000, 10 +[ 6045.380886] bdbm: llm_make_req: 14300000, 96 +[ 6046.756182] bdbm: nvm: total access = 11400000, total read = 3458364, read hit = 805160, total_write = 7941635, write hit = 7941635, hit = 2050712, evict = 6565011 +[ 6058.471897] bdbm: llm_make_req: 14350000, 96 +[ 6069.199642] bdbm: llm_make_req: 14400000, 4 +[ 6082.308328] bdbm: llm_make_req: 14450000, 95 +[ 6093.680310] bdbm: llm_make_req: 14500000, 96 +[ 6099.465368] bdbm: nvm: total access = 11500000, total read = 3498828, read hit = 814586, total_write = 8001171, write hit = 8001171, hit = 2073922, evict = 6610763 +[ 6106.121201] bdbm: llm_make_req: 14550000, 12 +[ 6120.064958] bdbm: llm_make_req: 14600000, 96 +[ 6130.013733] bdbm: llm_make_req: 14650000, 6 +[ 6142.706339] bdbm: llm_make_req: 14700000, 96 +[ 6155.487229] bdbm: llm_make_req: 14750000, 96 +[ 6158.258296] bdbm: nvm: total access = 11600000, total read = 3538860, read hit = 824109, total_write = 8061139, write hit = 8061139, hit = 2097558, evict = 6656618 +[ 6166.528160] bdbm: llm_make_req: 14800000, 13 +[ 6180.175483] bdbm: llm_make_req: 14850000, 96 +[ 6190.777430] bdbm: llm_make_req: 14900000, 96 +[ 6202.760433] bdbm: llm_make_req: 14950000, 96 +[ 6212.251824] bdbm: nvm: total access = 11700000, total read = 3578631, read hit = 833485, total_write = 8121368, write hit = 8121368, hit = 2121129, evict = 6702652 +[ 6216.700008] bdbm: llm_make_req: 15000000, 96 +[ 6226.915351] bdbm: llm_make_req: 15050000, 11 +[ 6240.124295] bdbm: llm_make_req: 15100000, 96 +[ 6251.849997] bdbm: llm_make_req: 15150000, 96 +[ 6263.443045] bdbm: llm_make_req: 15200000, 12 +[ 6271.835095] bdbm: nvm: total access = 11800000, total read = 3618907, read hit = 843253, total_write = 8181092, write hit = 8181092, hit = 2144845, evict = 6748428 +[ 6277.357895] bdbm: llm_make_req: 15250000, 96 +[ 6287.390447] bdbm: llm_make_req: 15300000, 16 +[ 6300.089151] bdbm: llm_make_req: 15350000, 96 +[ 6313.401708] bdbm: llm_make_req: 15400000, 96 +[ 6324.069143] bdbm: llm_make_req: 15450000, 12 +[ 6331.793882] bdbm: nvm: total access = 11900000, total read = 3658277, read hit = 852494, total_write = 8241722, write hit = 8241722, hit = 2168157, evict = 6794987 +[ 6337.503382] bdbm: llm_make_req: 15500000, 96 +[ 6348.622310] bdbm: llm_make_req: 15550000, 96 +[ 6360.576008] bdbm: llm_make_req: 15600000, 11 +[ 6374.371600] bdbm: llm_make_req: 15650000, 96 +[ 6384.551128] bdbm: llm_make_req: 15700000, 7 +[ 6391.606213] bdbm: nvm: total access = 12000000, total read = 3698483, read hit = 861768, total_write = 8301516, write hit = 8301516, hit = 2191530, evict = 6840682 +[ 6397.612111] bdbm: llm_make_req: 15750000, 96 +[ 6409.596687] bdbm: llm_make_req: 15800000, 96 +[ 6421.106596] bdbm: llm_make_req: 15850000, 3 +[ 6435.101131] bdbm: llm_make_req: 15900000, 96 +[ 6445.207189] bdbm: llm_make_req: 15950000, 96 +[ 6451.538997] bdbm: nvm: total access = 12100000, total read = 3738317, read hit = 870902, total_write = 8361682, write hit = 8361682, hit = 2214618, evict = 6886894 +[ 6457.835620] bdbm: llm_make_req: 16000000, 96 +[ 6471.081244] bdbm: llm_make_req: 16050000, 96 +[ 6481.774514] bdbm: llm_make_req: 16100000, 9 +[ 6495.098704] bdbm: llm_make_req: 16150000, 96 +[ 6506.397018] bdbm: llm_make_req: 16200000, 96 +[ 6511.328658] bdbm: nvm: total access = 12200000, total read = 3777952, read hit = 880049, total_write = 8422047, write hit = 8422047, hit = 2238013, evict = 6933011 +[ 6518.221320] bdbm: llm_make_req: 16250000, 15 +[ 6532.044566] bdbm: llm_make_req: 16300000, 96 +[ 6542.197165] bdbm: llm_make_req: 16350000, 14 +[ 6555.182184] bdbm: llm_make_req: 16400000, 96 +[ 6567.327694] bdbm: llm_make_req: 16450000, 96 +[ 6570.818188] bdbm: nvm: total access = 12300000, total read = 3818229, read hit = 889537, total_write = 8481770, write hit = 8481770, hit = 2261449, evict = 6978786 +[ 6578.683095] bdbm: llm_make_req: 16500000, 10 +[ 6592.534675] bdbm: llm_make_req: 16550000, 96 +[ 6602.646451] bdbm: llm_make_req: 16600000, 96 +[ 6615.220815] bdbm: llm_make_req: 16650000, 96 +[ 6624.593750] bdbm: nvm: total access = 12400000, total read = 3858431, read hit = 899102, total_write = 8541568, write hit = 8541568, hit = 2285263, evict = 7024335 +[ 6628.492499] bdbm: llm_make_req: 16700000, 96 +[ 6639.163208] bdbm: llm_make_req: 16750000, 16 +[ 6652.133276] bdbm: llm_make_req: 16800000, 95 +[ 6664.000699] bdbm: llm_make_req: 16850000, 96 +[ 6675.359434] bdbm: llm_make_req: 16900000, 12 +[ 6676.849119] bdbm: nvm: total access = 12500000, total read = 3898040, read hit = 908252, total_write = 8601959, write hit = 8601959, hit = 2308636, evict = 7070503 +[ 6688.641975] bdbm: llm_make_req: 16950000, 96 +[ 6699.206542] bdbm: llm_make_req: 17000000, 96 +[ 6711.345789] bdbm: llm_make_req: 17050000, 13 +[ 6724.935752] bdbm: llm_make_req: 17100000, 96 +[ 6727.149868] bdbm: nvm: total access = 12600000, total read = 3937436, read hit = 917607, total_write = 8662563, write hit = 8662563, hit = 2332070, evict = 7117028 +[ 6734.965704] bdbm: llm_make_req: 17150000, 11 +[ 6747.246196] bdbm: llm_make_req: 17200000, 16 +[ 6760.521072] bdbm: llm_make_req: 17250000, 96 +[ 6770.848904] bdbm: llm_make_req: 17300000, 9 +[ 6771.123669] bdbm: nvm: total access = 12700000, total read = 3977663, read hit = 926939, total_write = 8722336, write hit = 8722336, hit = 2355580, evict = 7162623 +[ 6782.960333] bdbm: llm_make_req: 17350000, 96 +[ 6795.679599] bdbm: llm_make_req: 17400000, 96 +[ 6806.542795] bdbm: llm_make_req: 17450000, 15 +[ 6813.149324] bdbm: nvm: total access = 12800000, total read = 4017630, read hit = 936259, total_write = 8782369, write hit = 8782369, hit = 2379415, evict = 7208141 +[ 6818.529330] bdbm: llm_make_req: 17500000, 96 +[ 6831.013522] bdbm: llm_make_req: 17550000, 96 +[ 6842.025404] bdbm: llm_make_req: 17600000, 8 +[ 6849.341046] bdbm: nvm: total access = 12900000, total read = 4057575, read hit = 945831, total_write = 8842424, write hit = 8842424, hit = 2403467, evict = 7253716 +[ 6854.071859] bdbm: llm_make_req: 17650000, 11 +[ 6866.548308] bdbm: llm_make_req: 17700000, 96 +[ 6877.182849] bdbm: llm_make_req: 17750000, 8 +[ 6883.301373] bdbm: nvm: total access = 13000000, total read = 4097106, read hit = 955271, total_write = 8902893, write hit = 8902893, hit = 2427663, evict = 7299429 +[ 6889.163588] bdbm: llm_make_req: 17800000, 15 +[ 6901.467785] bdbm: llm_make_req: 17850000, 96 +[ 6912.068652] bdbm: nvm: total access = 13100000, total read = 4137424, read hit = 964990, total_write = 8962575, write hit = 8962575, hit = 2451619, evict = 7344874 +[ 6912.081948] bdbm: llm_make_req: 17900000, 59 +[ 6923.920620] bdbm: llm_make_req: 17950000, 4 +[ 6935.614551] bdbm: llm_make_req: 18000000, 96 +[ 6943.631871] bdbm: nvm: total access = 13200000, total read = 4177839, read hit = 974629, total_write = 9022160, write hit = 9022160, hit = 2475315, evict = 7390402 +[ 6947.081742] bdbm: llm_make_req: 18050000, 96 +[ 6958.420020] bdbm: llm_make_req: 18100000, 8 +[ 6970.110792] bdbm: llm_make_req: 18150000, 10 +[ 6971.543660] bdbm: nvm: total access = 13300000, total read = 4217239, read hit = 983933, total_write = 9082760, write hit = 9082760, hit = 2498981, evict = 7436640 +[ 6982.503111] bdbm: llm_make_req: 18200000, 93 +[ 6992.871392] bdbm: llm_make_req: 18250000, 22 +[ 6999.359246] bdbm: nvm: total access = 13400000, total read = 4257152, read hit = 993318, total_write = 9142847, write hit = 9142847, hit = 2522530, evict = 7482563 +[ 7004.620324] bdbm: llm_make_req: 18300000, 8 +[ 7016.521897] bdbm: llm_make_req: 18350000, 96 +[ 7027.246420] bdbm: nvm: total access = 13500000, total read = 4297311, read hit = 1002609, total_write = 9202688, write hit = 9202688, hit = 2546013, evict = 7528212 +[ 7027.494317] bdbm: llm_make_req: 18400000, 96 +[ 7039.082252] bdbm: llm_make_req: 18450000, 7 +[ 7050.696948] bdbm: llm_make_req: 18500000, 11 +[ 8052.329733] bdbm: ----------------------------------------------- +[ 8052.329735] bdbm: < PERFORMANCE SUMMARY > +[ 8052.329736] bdbm: [0] Execution Time (us): 5249.385198 +[ 8052.329737] bdbm: +[ 8052.329737] bdbm: [1] Total I/Os +[ 8052.329738] bdbm: # of page reads: 7099690 +[ 8052.329738] bdbm: # of page writes: 3782846 +[ 8052.329739] bdbm: # of block erase: 56960 +[ 8052.329739] bdbm: +[ 8052.329740] bdbm: [2] Normal I/Os +[ 8052.329740] bdbm: # of page reads: 3317289 +[ 8052.329741] bdbm: # of page writes: 0 +[ 8052.329741] bdbm: # of page rmw reads: 0 +[ 8052.329741] bdbm: # of page rmw writes: 0 +[ 8052.329742] bdbm: +[ 8052.329742] bdbm: [3] GC I/Os +[ 8052.329743] bdbm: # of GC invocation: 0 +[ 8052.329743] bdbm: # of page reads: 3782401 +[ 8052.329744] bdbm: # of page writes: 3782846 +[ 8052.329744] bdbm: # of block erase: 56960 +[ 8052.329745] bdbm: +[ 8052.329745] bdbm: [4] Meta I/Os +[ 8052.329746] bdbm: # of meta page reads: 0 +[ 8052.329746] bdbm: # of meta page writes: 0 +[ 8052.329746] bdbm: +[ 8052.329747] bdbm: [5] Elapsed Time +[ 8052.329748] bdbm: page read (us): 586 (S:127 + Q:4 + D:455) +[ 8052.329748] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[ 8052.329749] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 8052.329749] bdbm: +[ 8052.329750] bdbm: [6] Utilization (R) +[ 8052.329751] bdbm: 54968 55451 55377 55501 55326 55579 55484 55300 +[ 8052.329752] bdbm: 55300 55699 55794 55303 55464 55483 55503 55526 +[ 8052.329753] bdbm: 55639 55394 55608 55249 55676 55289 55529 55639 +[ 8052.329755] bdbm: 55423 55561 55098 55920 55476 55637 55491 55144 +[ 8052.329756] bdbm: 55537 55285 55733 55650 55341 55651 55536 55453 +[ 8052.329757] bdbm: 55605 55648 55496 55075 55850 55354 55317 55778 +[ 8052.329758] bdbm: 55816 55826 55618 55518 55259 55040 55103 55124 +[ 8052.329759] bdbm: 55709 55809 55608 55656 55594 55723 55462 55337 +[ 8052.329760] bdbm: 55284 55392 55616 55179 54942 55428 55467 55536 +[ 8052.329761] bdbm: 55622 55341 55398 55414 55290 55523 55268 55566 +[ 8052.329763] bdbm: 55407 55334 55430 55424 55623 55813 55712 55678 +[ 8052.329764] bdbm: 55857 55218 55265 55324 55413 55638 55440 55517 +[ 8052.329765] bdbm: 55345 55322 55186 55693 55755 55601 55075 55418 +[ 8052.329766] bdbm: 55033 55205 55445 55055 55348 55650 55494 55189 +[ 8052.329767] bdbm: 55586 55734 55394 55634 55754 55501 55441 55740 +[ 8052.329768] bdbm: 55540 55639 55776 55279 55185 55763 55122 55087 +[ 8052.329769] bdbm: +[ 8052.329769] bdbm: [7] Utilization (W) +[ 8052.329770] bdbm: 29584 29632 29658 29677 29686 29698 29711 29719 +[ 8052.329772] bdbm: 29727 29727 29727 29725 29722 29721 29719 29717 +[ 8052.329773] bdbm: 29714 29709 29702 29700 29697 29694 29692 29689 +[ 8052.329774] bdbm: 29688 29684 29681 29676 29671 29668 29668 29665 +[ 8052.329775] bdbm: 29660 29657 29654 29649 29644 29644 29640 29639 +[ 8052.329776] bdbm: 29638 29635 29632 29629 29622 29620 29618 29614 +[ 8052.329777] bdbm: 29611 29609 29603 29600 29596 29592 29588 29586 +[ 8052.329778] bdbm: 29583 29582 29578 29574 29568 29565 29565 29561 +[ 8052.329780] bdbm: 29558 29554 29550 29549 29547 29542 29539 29536 +[ 8052.329781] bdbm: 29533 29529 29527 29524 29520 29518 29514 29511 +[ 8052.329782] bdbm: 29507 29504 29504 29501 29501 29500 29494 29490 +[ 8052.329783] bdbm: 29487 29483 29479 29472 29467 29461 29458 29454 +[ 8052.329784] bdbm: 29453 29450 29445 29443 29441 29435 29430 29430 +[ 8052.329785] bdbm: 29425 29424 29420 29414 29411 29407 29404 29401 +[ 8052.329786] bdbm: 29399 29396 29394 29392 29389 29385 29380 29377 +[ 8052.329787] bdbm: 29374 29370 29366 29361 29359 29357 29351 29346 +[ 8052.329788] bdbm: [8] NVM I/Os +[ 8052.329788] bdbm: #_of_nvm_total_accesses: 13572843 +[ 8052.329789] bdbm: #_of_nvm_total_write_requests: 9245983 +[ 8052.329789] bdbm: #_of_nvm_total_read_requests: 4326860 +[ 8052.329790] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9245983 +[ 8052.329790] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1009543 +[ 8052.329791] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 2563008 +[ 8052.329791] bdbm: #_of_nvm_evict_from_nvm: 7561446 +[ 8052.329792] bdbm: #_of_nvm_write_amplification: 7561446 : 11344292 +[ 8052.329792] bdbm: +[ 8052.329793] bdbm: ----------------------------------------------- +[ 8052.329793] bdbm: ----------------------------------------------- +[ 8052.480664] bdbm: done +[ 8052.480668] bdbm: [dm_ramdrive_close] closed! +[ 8052.868313] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 8052.868315] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 8052.889655] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 8052.905834] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 8155.343065] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 8155.368256] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 8179.848817] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 8179.871510] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 8179.880343] bdbm: ===================================================================== +[ 8179.880344] bdbm: DEVICE PARAMETERS +[ 8179.880345] bdbm: ===================================================================== +[ 8179.880346] bdbm: # of channels = 8 +[ 8179.880346] bdbm: # of chips per channel = 16 +[ 8179.880347] bdbm: # of blocks per chip = 256 +[ 8179.880348] bdbm: # of pages per block = 128 +[ 8179.880348] bdbm: # of subpages per page = 1 +[ 8179.880349] bdbm: page main size = 4096 bytes +[ 8179.880349] bdbm: page oob size = 64 bytes +[ 8179.880350] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 8179.880351] bdbm: +[ 8179.880352] bdbm: ===================================================================== +[ 8179.880352] bdbm: RAM DISK INFO +[ 8179.880353] bdbm: ===================================================================== +[ 8179.880354] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[ 8181.412818] bdbm: ramssd addr = ffffc90050001000 +[ 8181.412820] bdbm: +[ 8181.412821] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 8182.930373] bdbm: *** building ptr_ramssd_data done +[ 8182.930594] bdbm: [dm_ramdrive_probe] probe done! +[ 8182.930596] bdbm: [dm_ramdrive_open] open done! +[ 8182.979519] bdbm: nvm cache addr = ffffc90870003000 +[ 8182.985191] bdbm: ========================================================== +[ 8182.985192] bdbm: NVM CONFIGURATION +[ 8182.985193] bdbm: ========================================================== +[ 8182.985194] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[ 8183.142142] bdbm: TRIM is disabled +[ 8183.142249] bdbm: ===================================================================== +[ 8183.142250] bdbm: DEVICE PARAMETERS +[ 8183.142251] bdbm: ===================================================================== +[ 8183.142251] bdbm: # of channels = 8 +[ 8183.142252] bdbm: # of chips per channel = 16 +[ 8183.142252] bdbm: # of blocks per chip = 256 +[ 8183.142253] bdbm: # of pages per block = 128 +[ 8183.142253] bdbm: # of subpages per page = 1 +[ 8183.142254] bdbm: page main size = 4096 bytes +[ 8183.142254] bdbm: page oob size = 64 bytes +[ 8183.142255] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 8183.142255] bdbm: +[ 8183.142256] bdbm: ===================================================================== +[ 8183.142256] bdbm: FTL CONFIGURATION +[ 8183.142257] bdbm: ===================================================================== +[ 8183.142257] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 8183.142258] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 8183.142259] bdbm: wl policy = 1 (1: none, 2: swap) +[ 8183.142259] bdbm: trim mode = 2 (1: enable, 2: disable) +[ 8183.142260] bdbm: kernel sector = 512 bytes +[ 8183.142260] bdbm: +[ 8183.142261] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 8183.159109] bdbm: llm_make_req: 0, 1 +[ 8183.306737] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[ 8183.306739] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 8189.191557] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 +[ 8246.557388] bdbm: ----------------------------------------------- +[ 8246.557389] bdbm: < PERFORMANCE SUMMARY > +[ 8246.557390] bdbm: [0] Execution Time (us): 63.412424 +[ 8246.557391] bdbm: +[ 8246.557391] bdbm: [1] Total I/Os +[ 8246.557392] bdbm: # of page reads: 0 +[ 8246.557393] bdbm: # of page writes: 0 +[ 8246.557394] bdbm: # of block erase: 0 +[ 8246.557394] bdbm: +[ 8246.557395] bdbm: [2] Normal I/Os +[ 8246.557395] bdbm: # of page reads: 0 +[ 8246.557395] bdbm: # of page writes: 0 +[ 8246.557396] bdbm: # of page rmw reads: 0 +[ 8246.557396] bdbm: # of page rmw writes: 0 +[ 8246.557397] bdbm: +[ 8246.557397] bdbm: [3] GC I/Os +[ 8246.557399] bdbm: # of GC invocation: 0 +[ 8246.557399] bdbm: # of page reads: 0 +[ 8246.557400] bdbm: # of page writes: 0 +[ 8246.557400] bdbm: # of block erase: 0 +[ 8246.557401] bdbm: +[ 8246.557401] bdbm: [4] Meta I/Os +[ 8246.557401] bdbm: # of meta page reads: 0 +[ 8246.557402] bdbm: # of meta page writes: 0 +[ 8246.557402] bdbm: +[ 8246.557403] bdbm: [5] Elapsed Time +[ 8246.557403] bdbm: page read (us): 0 (S:0 + Q:0 + D:0) +[ 8246.557405] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[ 8246.557406] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 8246.557406] bdbm: +[ 8246.557406] bdbm: [6] Utilization (R) +[ 8246.557408] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557409] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557411] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557413] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557414] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557415] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557417] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557418] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557419] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557420] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557422] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557424] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557425] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557426] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557427] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557429] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557429] bdbm: +[ 8246.557430] bdbm: [7] Utilization (W) +[ 8246.557431] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557432] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557434] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557436] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557437] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557438] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557440] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557441] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557442] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557443] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557444] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557446] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557448] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557449] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557450] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557452] bdbm: 0 0 0 0 0 0 0 0 +[ 8246.557452] bdbm: [8] NVM I/Os +[ 8246.557453] bdbm: #_of_nvm_total_accesses: 126583 +[ 8246.557453] bdbm: #_of_nvm_total_write_requests: 126550 +[ 8246.557454] bdbm: #_of_nvm_total_read_requests: 33 +[ 8246.557454] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 126550 +[ 8246.557455] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 5 +[ 8246.557455] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[ 8246.557456] bdbm: #_of_nvm_evict_from_nvm: 0 +[ 8246.557457] bdbm: #_of_nvm_write_amplification: 0 : 0 +[ 8246.557458] bdbm: +[ 8246.557458] bdbm: ----------------------------------------------- +[ 8246.557459] bdbm: ----------------------------------------------- +[ 8246.725958] bdbm: done +[ 8246.725962] bdbm: [dm_ramdrive_close] closed! +[ 8247.115376] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 8247.115378] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 8247.137535] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 8247.170331] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 8247.174919] bdbm: ===================================================================== +[ 8247.174921] bdbm: DEVICE PARAMETERS +[ 8247.174921] bdbm: ===================================================================== +[ 8247.174922] bdbm: # of channels = 8 +[ 8247.174923] bdbm: # of chips per channel = 16 +[ 8247.174924] bdbm: # of blocks per chip = 256 +[ 8247.174924] bdbm: # of pages per block = 128 +[ 8247.174925] bdbm: # of subpages per page = 1 +[ 8247.174926] bdbm: page main size = 4096 bytes +[ 8247.174926] bdbm: page oob size = 64 bytes +[ 8247.174927] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 8247.174928] bdbm: +[ 8247.174929] bdbm: ===================================================================== +[ 8247.174930] bdbm: RAM DISK INFO +[ 8247.174930] bdbm: ===================================================================== +[ 8247.174931] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[ 8248.734527] bdbm: ramssd addr = ffffc90050001000 +[ 8248.734529] bdbm: +[ 8248.734530] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 8250.256723] bdbm: *** building ptr_ramssd_data done +[ 8250.256909] bdbm: [dm_ramdrive_probe] probe done! +[ 8250.256911] bdbm: [dm_ramdrive_open] open done! +[ 8250.508876] bdbm: nvm cache addr = ffffc908ee51c000 +[ 8250.521072] bdbm: ========================================================== +[ 8250.521074] bdbm: NVM CONFIGURATION +[ 8250.521074] bdbm: ========================================================== +[ 8250.521075] bdbm: total size = 2147483648, nr_nvm_pages = 524288, nvm_page_size = 4096 +[ 8250.713261] bdbm: TRIM is disabled +[ 8250.713415] bdbm: ===================================================================== +[ 8250.713416] bdbm: DEVICE PARAMETERS +[ 8250.713417] bdbm: ===================================================================== +[ 8250.713417] bdbm: # of channels = 8 +[ 8250.713418] bdbm: # of chips per channel = 16 +[ 8250.713418] bdbm: # of blocks per chip = 256 +[ 8250.713419] bdbm: # of pages per block = 128 +[ 8250.713419] bdbm: # of subpages per page = 1 +[ 8250.713420] bdbm: page main size = 4096 bytes +[ 8250.713420] bdbm: page oob size = 64 bytes +[ 8250.713421] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 8250.713421] bdbm: +[ 8250.713422] bdbm: ===================================================================== +[ 8250.713422] bdbm: FTL CONFIGURATION +[ 8250.713423] bdbm: ===================================================================== +[ 8250.713423] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 8250.713424] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 8250.713424] bdbm: wl policy = 1 (1: none, 2: swap) +[ 8250.713425] bdbm: trim mode = 2 (1: enable, 2: disable) +[ 8250.713425] bdbm: kernel sector = 512 bytes +[ 8250.713426] bdbm: +[ 8250.713427] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 8250.730831] bdbm: llm_make_req: 0, 1 +[ 8250.867941] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[ 8250.867944] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 8255.914435] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 +[ 8296.271766] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 0, evict = 0 +[ 8296.438229] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 0, evict = 0 +[ 8296.598573] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 0, evict = 0 +[ 8296.761151] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 0, evict = 0 +[ 8297.101287] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 0, evict = 41918 +[ 8297.151210] bdbm: llm_make_req: 50000, 93 +[ 8297.442969] bdbm: llm_make_req: 100000, 73 +[ 8297.683211] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 0, evict = 141918 +[ 8297.733341] bdbm: llm_make_req: 150000, 92 +[ 8298.019060] bdbm: llm_make_req: 200000, 93 +[ 8298.256021] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 0, evict = 241918 +[ 8298.306398] bdbm: llm_make_req: 250000, 94 +[ 8298.591784] bdbm: llm_make_req: 300000, 93 +[ 8298.830142] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 0, evict = 341918 +[ 8298.879239] bdbm: llm_make_req: 350000, 93 +[ 8299.164056] bdbm: llm_make_req: 400000, 95 +[ 8299.403446] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 0, evict = 441918 +[ 8299.451892] bdbm: llm_make_req: 450000, 80 +[ 8299.737339] bdbm: llm_make_req: 500000, 94 +[ 8299.982433] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 0, evict = 541918 +[ 8300.023608] bdbm: llm_make_req: 550000, 95 +[ 8300.307942] bdbm: llm_make_req: 600000, 95 +[ 8300.555258] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 0, evict = 641918 +[ 8300.596404] bdbm: llm_make_req: 650000, 59 +[ 8300.883189] bdbm: llm_make_req: 700000, 85 +[ 8301.128321] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 0, evict = 741918 +[ 8301.176939] bdbm: llm_make_req: 750000, 95 +[ 8301.462725] bdbm: llm_make_req: 800000, 95 +[ 8301.699182] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 0, evict = 841918 +[ 8301.747525] bdbm: llm_make_req: 850000, 75 +[ 8302.031238] bdbm: llm_make_req: 900000, 92 +[ 8302.268702] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 0, evict = 941918 +[ 8302.317430] bdbm: llm_make_req: 950000, 93 +[ 8302.603348] bdbm: llm_make_req: 1000000, 94 +[ 8302.840294] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 0, evict = 1041918 +[ 8302.888925] bdbm: llm_make_req: 1050000, 89 +[ 8303.181910] bdbm: llm_make_req: 1100000, 96 +[ 8303.419908] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 0, evict = 1141918 +[ 8303.468841] bdbm: llm_make_req: 1150000, 94 +[ 8303.769053] bdbm: llm_make_req: 1200000, 78 +[ 8304.020630] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 0, evict = 1241918 +[ 8304.064240] bdbm: llm_make_req: 1250000, 95 +[ 8304.360969] bdbm: llm_make_req: 1300000, 94 +[ 8304.612548] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 0, evict = 1341918 +[ 8304.655373] bdbm: llm_make_req: 1350000, 81 +[ 8304.945965] bdbm: llm_make_req: 1400000, 95 +[ 8305.196147] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 0, evict = 1441918 +[ 8305.239041] bdbm: llm_make_req: 1450000, 95 +[ 8305.539071] bdbm: llm_make_req: 1500000, 51 +[ 8305.791028] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 0, evict = 1541918 +[ 8305.843473] bdbm: llm_make_req: 1550000, 95 +[ 8306.151420] bdbm: llm_make_req: 1600000, 93 +[ 8306.407646] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 0, evict = 1641918 +[ 8306.461199] bdbm: llm_make_req: 1650000, 65 +[ 8306.769043] bdbm: llm_make_req: 1700000, 88 +[ 8307.024744] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 0, evict = 1741918 +[ 8307.077778] bdbm: llm_make_req: 1750000, 93 +[ 8307.384320] bdbm: llm_make_req: 1800000, 95 +[ 8307.638727] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 0, evict = 1841918 +[ 8307.691034] bdbm: llm_make_req: 1850000, 71 +[ 8307.997713] bdbm: llm_make_req: 1900000, 96 +[ 8308.259303] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 0, evict = 1941918 +[ 8308.303866] bdbm: llm_make_req: 1950000, 94 +[ 8308.610341] bdbm: llm_make_req: 2000000, 66 +[ 8308.879957] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 0, evict = 2041918 +[ 8308.925215] bdbm: llm_make_req: 2050000, 91 +[ 8309.231621] bdbm: llm_make_req: 2100000, 93 +[ 8309.495558] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 0, evict = 2141918 +[ 8309.539963] bdbm: llm_make_req: 2150000, 60 +[ 8310.749692] bdbm: llm_make_req: 2200000, 91 +[ 8310.948067] bdbm: nvm: total access = 2800000, total read = 20447, read hit = 1569, total_write = 2779552, write hit = 2779552, hit = 0, evict = 2219108 +[ 8311.022210] bdbm: llm_make_req: 2250000, 47 +[ 8311.294115] bdbm: llm_make_req: 2300000, 64 +[ 8311.416270] bdbm: nvm: total access = 2900000, total read = 60892, read hit = 8466, total_write = 2839107, write hit = 2839107, hit = 0, evict = 2269202 +[ 8311.579084] bdbm: llm_make_req: 2350000, 60 +[ 8311.851081] bdbm: nvm: total access = 3000000, total read = 100831, read hit = 18705, total_write = 2899168, write hit = 2899168, hit = 0, evict = 2313882 +[ 8311.874636] bdbm: llm_make_req: 2400000, 65 +[ 8312.175650] bdbm: llm_make_req: 2450000, 64 +[ 8312.262051] bdbm: nvm: total access = 3100000, total read = 141209, read hit = 31700, total_write = 2958790, write hit = 2958790, hit = 0, evict = 2353907 +[ 8312.508557] bdbm: llm_make_req: 2500000, 54 +[ 8312.674627] bdbm: nvm: total access = 3200000, total read = 181349, read hit = 47312, total_write = 3018650, write hit = 3018650, hit = 0, evict = 2390452 +[ 8312.866172] bdbm: llm_make_req: 2550000, 68 +[ 8313.082051] bdbm: nvm: total access = 3300000, total read = 221518, read hit = 65006, total_write = 3078481, write hit = 3078481, hit = 0, evict = 2423995 +[ 8313.222354] bdbm: llm_make_req: 2600000, 75 +[ 8313.459756] bdbm: nvm: total access = 3400000, total read = 262205, read hit = 84401, total_write = 3137794, write hit = 3137794, hit = 0, evict = 2455534 +[ 8313.579406] bdbm: llm_make_req: 2650000, 56 +[ 8313.826799] bdbm: nvm: total access = 3500000, total read = 302316, read hit = 104809, total_write = 3197683, write hit = 3197683, hit = 0, evict = 2485209 +[ 8313.961261] bdbm: llm_make_req: 2700000, 51 +[ 8314.158332] bdbm: nvm: total access = 3600000, total read = 342331, read hit = 126470, total_write = 3257668, write hit = 3257668, hit = 0, evict = 2512769 +[ 8314.344716] bdbm: llm_make_req: 2750000, 56 +[ 8314.505907] bdbm: nvm: total access = 3700000, total read = 381899, read hit = 149144, total_write = 3318100, write hit = 3318100, hit = 0, evict = 2539536 +[ 8314.724555] bdbm: llm_make_req: 2800000, 54 +[ 8314.836271] bdbm: nvm: total access = 3800000, total read = 422008, read hit = 172525, total_write = 3377991, write hit = 3377991, hit = 0, evict = 2564498 +[ 8315.127608] bdbm: llm_make_req: 2850000, 40 +[ 8315.158829] bdbm: nvm: total access = 3900000, total read = 462096, read hit = 196546, total_write = 3437903, write hit = 3437903, hit = 0, evict = 2588233 +[ 8315.505210] bdbm: nvm: total access = 4000000, total read = 501879, read hit = 221066, total_write = 3498120, write hit = 3498120, hit = 0, evict = 2611405 +[ 8315.569759] bdbm: llm_make_req: 2900000, 65 +[ 8315.821578] bdbm: nvm: total access = 4100000, total read = 541804, read hit = 246013, total_write = 3558195, write hit = 3558195, hit = 0, evict = 2633633 +[ 8315.993780] bdbm: llm_make_req: 2950000, 49 +[ 8316.148671] bdbm: nvm: total access = 4200000, total read = 582206, read hit = 271952, total_write = 3617793, write hit = 3617793, hit = 0, evict = 2654898 +[ 8316.450576] bdbm: nvm: total access = 4300000, total read = 622348, read hit = 298151, total_write = 3677651, write hit = 3677651, hit = 0, evict = 2675711 +[ 8316.451248] bdbm: llm_make_req: 3000000, 43 +[ 8316.742693] bdbm: nvm: total access = 4400000, total read = 662886, read hit = 324781, total_write = 3737113, write hit = 3737113, hit = 0, evict = 2696402 +[ 8316.878151] bdbm: llm_make_req: 3050000, 49 +[ 8317.054669] bdbm: nvm: total access = 4500000, total read = 703531, read hit = 351949, total_write = 3796468, write hit = 3796468, hit = 0, evict = 2716307 +[ 8317.330831] bdbm: llm_make_req: 3100000, 61 +[ 8317.349470] bdbm: nvm: total access = 4600000, total read = 743833, read hit = 378389, total_write = 3856166, write hit = 3856166, hit = 0, evict = 2737175 +[ 8317.667340] bdbm: nvm: total access = 4700000, total read = 783447, read hit = 403245, total_write = 3916552, write hit = 3916552, hit = 0, evict = 2760078 +[ 8317.750611] bdbm: llm_make_req: 3150000, 58 +[ 8318.008196] bdbm: nvm: total access = 4800000, total read = 823557, read hit = 427043, total_write = 3976442, write hit = 3976442, hit = 0, evict = 2783937 +[ 8318.169386] bdbm: llm_make_req: 3200000, 50 +[ 8318.364405] bdbm: nvm: total access = 4900000, total read = 863585, read hit = 449944, total_write = 4036414, write hit = 4036414, hit = 0, evict = 2809237 +[ 8318.549556] bdbm: llm_make_req: 3250000, 64 +[ 8318.669384] bdbm: nvm: total access = 5000000, total read = 903977, read hit = 472064, total_write = 4096022, write hit = 4096022, hit = 0, evict = 2835740 +[ 8318.915141] bdbm: llm_make_req: 3300000, 28 +[ 8319.005501] bdbm: nvm: total access = 5100000, total read = 944543, read hit = 494384, total_write = 4155456, write hit = 4155456, hit = 0, evict = 2862883 +[ 8319.278909] bdbm: llm_make_req: 3350000, 58 +[ 8319.355270] bdbm: nvm: total access = 5200000, total read = 984410, read hit = 515846, total_write = 4215589, write hit = 4215589, hit = 0, evict = 2891028 +[ 8319.653795] bdbm: llm_make_req: 3400000, 58 +[ 8319.696468] bdbm: nvm: total access = 5300000, total read = 1023932, read hit = 536705, total_write = 4276067, write hit = 4276067, hit = 0, evict = 2919316 +[ 8320.015329] bdbm: llm_make_req: 3450000, 51 +[ 8320.033276] bdbm: nvm: total access = 5400000, total read = 1064334, read hit = 558600, total_write = 4335665, write hit = 4335665, hit = 0, evict = 2947052 +[ 8320.382746] bdbm: nvm: total access = 5500000, total read = 1104244, read hit = 579803, total_write = 4395755, write hit = 4395755, hit = 0, evict = 2974742 +[ 8320.388551] bdbm: llm_make_req: 3500000, 50 +[ 8320.749729] bdbm: nvm: total access = 5600000, total read = 1144284, read hit = 601436, total_write = 4455715, write hit = 4455715, hit = 0, evict = 3002501 +[ 8320.784663] bdbm: llm_make_req: 3550000, 57 +[ 8321.090517] bdbm: nvm: total access = 5700000, total read = 1184095, read hit = 623146, total_write = 4515904, write hit = 4515904, hit = 0, evict = 3029772 +[ 8321.175118] bdbm: llm_make_req: 3600000, 60 +[ 8321.442454] bdbm: nvm: total access = 5800000, total read = 1223819, read hit = 645195, total_write = 4576180, write hit = 4576180, hit = 0, evict = 3056870 +[ 8321.583831] bdbm: llm_make_req: 3650000, 61 +[ 8321.791171] bdbm: nvm: total access = 5900000, total read = 1263413, read hit = 667708, total_write = 4636586, write hit = 4636586, hit = 0, evict = 3083242 +[ 8321.959946] bdbm: llm_make_req: 3700000, 47 +[ 8322.117034] bdbm: nvm: total access = 6000000, total read = 1303770, read hit = 690674, total_write = 4696229, write hit = 4696229, hit = 0, evict = 3108626 +[ 8322.329887] bdbm: llm_make_req: 3750000, 58 +[ 8322.428024] bdbm: nvm: total access = 6100000, total read = 1343293, read hit = 713551, total_write = 4756706, write hit = 4756706, hit = 0, evict = 3133709 +[ 8322.736062] bdbm: llm_make_req: 3800000, 59 +[ 8322.761382] bdbm: nvm: total access = 6200000, total read = 1383850, read hit = 737842, total_write = 4816149, write hit = 4816149, hit = 0, evict = 3157952 +[ 8323.077828] bdbm: nvm: total access = 6300000, total read = 1424314, read hit = 762216, total_write = 4875685, write hit = 4875685, hit = 0, evict = 3181820 +[ 8323.141428] bdbm: llm_make_req: 3850000, 47 +[ 8323.392135] bdbm: nvm: total access = 6400000, total read = 1464573, read hit = 786819, total_write = 4935426, write hit = 4935426, hit = 0, evict = 3205411 +[ 8323.532869] bdbm: llm_make_req: 3900000, 28 +[ 8323.718169] bdbm: nvm: total access = 6500000, total read = 1504502, read hit = 811664, total_write = 4995497, write hit = 4995497, hit = 0, evict = 3228517 +[ 8323.977301] bdbm: llm_make_req: 3950000, 63 +[ 8324.049868] bdbm: nvm: total access = 6600000, total read = 1545200, read hit = 836835, total_write = 5054799, write hit = 5054799, hit = 0, evict = 3251181 +[ 8324.346869] bdbm: nvm: total access = 6700000, total read = 1584785, read hit = 861347, total_write = 5115214, write hit = 5115214, hit = 0, evict = 3273434 +[ 8324.371845] bdbm: llm_make_req: 4000000, 37 +[ 8324.697434] bdbm: nvm: total access = 6800000, total read = 1624655, read hit = 886149, total_write = 5175344, write hit = 5175344, hit = 0, evict = 3296324 +[ 8324.834544] bdbm: llm_make_req: 4050000, 65 +[ 8325.047959] bdbm: nvm: total access = 6900000, total read = 1665006, read hit = 910888, total_write = 5234993, write hit = 5234993, hit = 0, evict = 3319368 +[ 8325.270188] bdbm: llm_make_req: 4100000, 55 +[ 8325.377359] bdbm: nvm: total access = 7000000, total read = 1704815, read hit = 934518, total_write = 5295184, write hit = 5295184, hit = 0, evict = 3342973 +[ 8325.662933] bdbm: llm_make_req: 4150000, 54 +[ 8325.690967] bdbm: nvm: total access = 7100000, total read = 1745157, read hit = 958373, total_write = 5354842, write hit = 5354842, hit = 0, evict = 3366838 +[ 8326.045415] bdbm: nvm: total access = 7200000, total read = 1784980, read hit = 981838, total_write = 5415019, write hit = 5415019, hit = 0, evict = 3391502 +[ 8326.091605] bdbm: llm_make_req: 4200000, 43 +[ 8326.378300] bdbm: nvm: total access = 7300000, total read = 1825265, read hit = 1005235, total_write = 5474734, write hit = 5474734, hit = 0, evict = 3416810 +[ 8326.478204] bdbm: llm_make_req: 4250000, 53 +[ 8326.694991] bdbm: nvm: total access = 7400000, total read = 1865414, read hit = 1028131, total_write = 5534585, write hit = 5534585, hit = 0, evict = 3442314 +[ 8326.852322] bdbm: llm_make_req: 4300000, 43 +[ 8327.041707] bdbm: nvm: total access = 7500000, total read = 1905639, read hit = 1051335, total_write = 5594360, write hit = 5594360, hit = 0, evict = 3468417 +[ 8327.240428] bdbm: llm_make_req: 4350000, 51 +[ 8327.372451] bdbm: nvm: total access = 7600000, total read = 1945941, read hit = 1073947, total_write = 5654058, write hit = 5654058, hit = 0, evict = 3494968 +[ 8327.585091] bdbm: llm_make_req: 4400000, 55 +[ 8327.673126] bdbm: nvm: total access = 7700000, total read = 1986001, read hit = 1096046, total_write = 5713998, write hit = 5713998, hit = 0, evict = 3521287 +[ 8327.956045] bdbm: llm_make_req: 4450000, 48 +[ 8327.994344] bdbm: nvm: total access = 7800000, total read = 2025256, read hit = 1117871, total_write = 5774743, write hit = 5774743, hit = 0, evict = 3548318 +[ 8328.305502] bdbm: llm_make_req: 4500000, 55 +[ 8328.307787] bdbm: nvm: total access = 7900000, total read = 2065169, read hit = 1139986, total_write = 5834830, write hit = 5834830, hit = 0, evict = 3575216 +[ 8328.670150] bdbm: nvm: total access = 8000000, total read = 2105535, read hit = 1162570, total_write = 5894464, write hit = 5894464, hit = 0, evict = 3601634 +[ 8328.704573] bdbm: llm_make_req: 4550000, 44 +[ 8328.990291] bdbm: nvm: total access = 8100000, total read = 2145533, read hit = 1184915, total_write = 5954466, write hit = 5954466, hit = 0, evict = 3628010 +[ 8329.065085] bdbm: llm_make_req: 4600000, 57 +[ 8329.284185] bdbm: nvm: total access = 8200000, total read = 2184990, read hit = 1207412, total_write = 6015009, write hit = 6015009, hit = 0, evict = 3654288 +[ 8329.427627] bdbm: llm_make_req: 4650000, 39 +[ 8329.627161] bdbm: nvm: total access = 8300000, total read = 2225038, read hit = 1229976, total_write = 6074961, write hit = 6074961, hit = 0, evict = 3680387 +[ 8329.824441] bdbm: llm_make_req: 4700000, 51 +[ 8329.973902] bdbm: nvm: total access = 8400000, total read = 2265139, read hit = 1252886, total_write = 6134860, write hit = 6134860, hit = 0, evict = 3706246 +[ 8330.230099] bdbm: llm_make_req: 4750000, 38 +[ 8330.314549] bdbm: nvm: total access = 8500000, total read = 2304516, read hit = 1275650, total_write = 6195483, write hit = 6195483, hit = 0, evict = 3731731 +[ 8330.643149] bdbm: llm_make_req: 4800000, 52 +[ 8330.658968] bdbm: nvm: total access = 8600000, total read = 2344433, read hit = 1299206, total_write = 6255566, write hit = 6255566, hit = 0, evict = 3756893 +[ 8330.985189] bdbm: nvm: total access = 8700000, total read = 2384152, read hit = 1322667, total_write = 6315847, write hit = 6315847, hit = 0, evict = 3781485 +[ 8331.044367] bdbm: llm_make_req: 4850000, 37 +[ 8331.290593] bdbm: nvm: total access = 8800000, total read = 2424041, read hit = 1346391, total_write = 6375958, write hit = 6375958, hit = 0, evict = 3805435 +[ 8331.429404] bdbm: llm_make_req: 4900000, 34 +[ 8331.614449] bdbm: nvm: total access = 8900000, total read = 2464308, read hit = 1370516, total_write = 6435691, write hit = 6435691, hit = 0, evict = 3829002 +[ 8331.835297] bdbm: llm_make_req: 4950000, 43 +[ 8331.935851] bdbm: nvm: total access = 9000000, total read = 2503972, read hit = 1394574, total_write = 6496027, write hit = 6496027, hit = 0, evict = 3852840 +[ 8332.245948] bdbm: llm_make_req: 5000000, 40 +[ 8332.253518] bdbm: nvm: total access = 9100000, total read = 2544029, read hit = 1419078, total_write = 6555970, write hit = 6555970, hit = 0, evict = 3876107 +[ 8332.590162] bdbm: nvm: total access = 9200000, total read = 2583985, read hit = 1443347, total_write = 6616014, write hit = 6616014, hit = 0, evict = 3900356 +[ 8332.648581] bdbm: llm_make_req: 5050000, 61 +[ 8332.903504] bdbm: nvm: total access = 9300000, total read = 2623960, read hit = 1467394, total_write = 6676039, write hit = 6676039, hit = 0, evict = 3924608 +[ 8333.056644] bdbm: llm_make_req: 5100000, 42 +[ 8333.227700] bdbm: nvm: total access = 9400000, total read = 2663337, read hit = 1490681, total_write = 6736662, write hit = 6736662, hit = 0, evict = 3948877 +[ 8333.467824] bdbm: llm_make_req: 5150000, 75 +[ 8333.565811] bdbm: nvm: total access = 9500000, total read = 2703552, read hit = 1514625, total_write = 6796447, write hit = 6796447, hit = 0, evict = 3973314 +[ 8333.843375] bdbm: llm_make_req: 5200000, 41 +[ 8333.871995] bdbm: nvm: total access = 9600000, total read = 2743980, read hit = 1538128, total_write = 6856019, write hit = 6856019, hit = 0, evict = 3998108 +[ 8334.216443] bdbm: nvm: total access = 9700000, total read = 2784472, read hit = 1561557, total_write = 6915527, write hit = 6915527, hit = 0, evict = 4022900 +[ 8334.246402] bdbm: llm_make_req: 5250000, 31 +[ 8334.557706] bdbm: nvm: total access = 9800000, total read = 2824071, read hit = 1584669, total_write = 6975928, write hit = 6975928, hit = 0, evict = 4048252 +[ 8334.657531] bdbm: llm_make_req: 5300000, 50 +[ 8335.286149] bdbm: nvm: total access = 9900000, total read = 2864332, read hit = 1608106, total_write = 7035667, write hit = 7035667, hit = 0, evict = 4073975 +[ 8335.808256] bdbm: llm_make_req: 5350000, 22 +[ 8336.385124] bdbm: nvm: total access = 10000000, total read = 2904440, read hit = 1631021, total_write = 7095559, write hit = 7095559, hit = 0, evict = 4099674 +[ 8336.938726] bdbm: llm_make_req: 5400000, 54 +[ 8337.061435] bdbm: nvm: total access = 10100000, total read = 2944523, read hit = 1653493, total_write = 7155476, write hit = 7155476, hit = 0, evict = 4125438 +[ 8338.016495] bdbm: llm_make_req: 5450000, 63 +[ 8338.091848] bdbm: nvm: total access = 10200000, total read = 2983970, read hit = 1675823, total_write = 7216029, write hit = 7216029, hit = 0, evict = 4152175 +[ 8338.751747] bdbm: llm_make_req: 5500000, 61 +[ 8340.019177] bdbm: nvm: total access = 10300000, total read = 3023794, read hit = 1698246, total_write = 7276205, write hit = 7276205, hit = 0, evict = 4178577 +[ 8341.187429] bdbm: llm_make_req: 5550000, 58 +[ 8342.165792] bdbm: nvm: total access = 10400000, total read = 3063856, read hit = 1720383, total_write = 7336143, write hit = 7336143, hit = 0, evict = 4205120 +[ 8342.883875] bdbm: llm_make_req: 5600000, 55 +[ 8343.833048] bdbm: nvm: total access = 10500000, total read = 3103556, read hit = 1742807, total_write = 7396443, write hit = 7396443, hit = 0, evict = 4231536 +[ 8343.959566] bdbm: llm_make_req: 5650000, 96 +[ 8345.570496] bdbm: nvm: total access = 10600000, total read = 3142808, read hit = 1764886, total_write = 7457191, write hit = 7457191, hit = 0, evict = 4257568 +[ 8345.577084] bdbm: llm_make_req: 5700000, 50 +[ 8347.276326] bdbm: llm_make_req: 5750000, 76 +[ 8347.322566] bdbm: nvm: total access = 10700000, total read = 3183321, read hit = 1788235, total_write = 7516678, write hit = 7516678, hit = 0, evict = 4282973 +[ 8349.073685] bdbm: llm_make_req: 5800000, 51 +[ 8349.207803] bdbm: nvm: total access = 10800000, total read = 3223002, read hit = 1811052, total_write = 7576997, write hit = 7576997, hit = 0, evict = 4308712 +[ 8350.348141] bdbm: llm_make_req: 5850000, 96 +[ 8351.196495] bdbm: nvm: total access = 10900000, total read = 3262736, read hit = 1833961, total_write = 7637263, write hit = 7637263, hit = 0, evict = 4334208 +[ 8352.063414] bdbm: llm_make_req: 5900000, 51 +[ 8353.135467] bdbm: nvm: total access = 11000000, total read = 3302671, read hit = 1857162, total_write = 7697328, write hit = 7697328, hit = 0, evict = 4359305 +[ 8354.074649] bdbm: llm_make_req: 5950000, 42 +[ 8355.230878] bdbm: nvm: total access = 11100000, total read = 3342398, read hit = 1880466, total_write = 7757601, write hit = 7757601, hit = 0, evict = 4384480 +[ 8355.714273] bdbm: llm_make_req: 6000000, 95 +[ 8357.229817] bdbm: llm_make_req: 6050000, 42 +[ 8358.077632] bdbm: nvm: total access = 11200000, total read = 3382169, read hit = 1904167, total_write = 7817830, write hit = 7817830, hit = 0, evict = 4409529 +[ 8359.170987] bdbm: llm_make_req: 6100000, 45 +[ 8360.087866] bdbm: nvm: total access = 11300000, total read = 3421463, read hit = 1927384, total_write = 7878536, write hit = 7878536, hit = 0, evict = 4434271 +[ 8361.086496] bdbm: llm_make_req: 6150000, 53 +[ 8362.084669] bdbm: nvm: total access = 11400000, total read = 3461672, read hit = 1951318, total_write = 7938327, write hit = 7938327, hit = 0, evict = 4458449 +[ 8362.714106] bdbm: llm_make_req: 6200000, 96 +[ 8364.100126] bdbm: nvm: total access = 11500000, total read = 3501126, read hit = 1974368, total_write = 7998873, write hit = 7998873, hit = 0, evict = 4483043 +[ 8364.200469] bdbm: llm_make_req: 6250000, 44 +[ 8366.308996] bdbm: llm_make_req: 6300000, 51 +[ 8366.324659] bdbm: nvm: total access = 11600000, total read = 3541781, read hit = 1998681, total_write = 8058218, write hit = 8058218, hit = 0, evict = 4507063 +[ 8368.048627] bdbm: llm_make_req: 6350000, 96 +[ 8368.502139] bdbm: nvm: total access = 11700000, total read = 3582183, read hit = 2022794, total_write = 8117816, write hit = 8117816, hit = 0, evict = 4531405 +[ 8369.721808] bdbm: llm_make_req: 6400000, 96 +[ 8370.807049] bdbm: nvm: total access = 11800000, total read = 3622603, read hit = 2046558, total_write = 8177396, write hit = 8177396, hit = 0, evict = 4555563 +[ 8371.897008] bdbm: llm_make_req: 6450000, 46 +[ 8373.838312] bdbm: llm_make_req: 6500000, 96 +[ 8374.226174] bdbm: nvm: total access = 11900000, total read = 3663011, read hit = 2070318, total_write = 8236988, write hit = 8236988, hit = 0, evict = 4579836 +[ 8375.750814] bdbm: llm_make_req: 6550000, 96 +[ 8376.782257] bdbm: nvm: total access = 12000000, total read = 3703194, read hit = 2094083, total_write = 8296805, write hit = 8296805, hit = 0, evict = 4604189 +[ 8378.019559] bdbm: llm_make_req: 6600000, 57 +[ 8380.094309] bdbm: llm_make_req: 6650000, 96 +[ 8380.518671] bdbm: nvm: total access = 12100000, total read = 3742638, read hit = 2117255, total_write = 8357361, write hit = 8357361, hit = 0, evict = 4629037 +[ 8382.110632] bdbm: llm_make_req: 6700000, 96 +[ 8384.291489] bdbm: nvm: total access = 12200000, total read = 3782735, read hit = 2140912, total_write = 8417264, write hit = 8417264, hit = 0, evict = 4654357 +[ 8384.330984] bdbm: llm_make_req: 6750000, 46 +[ 8386.558683] bdbm: llm_make_req: 6800000, 96 +[ 8388.229446] bdbm: nvm: total access = 12300000, total read = 3822442, read hit = 2164084, total_write = 8477557, write hit = 8477557, hit = 0, evict = 4679751 +[ 8388.669381] bdbm: llm_make_req: 6850000, 96 +[ 8390.958367] bdbm: llm_make_req: 6900000, 43 +[ 8392.214003] bdbm: nvm: total access = 12400000, total read = 3862387, read hit = 2186954, total_write = 8537612, write hit = 8537612, hit = 0, evict = 4704776 +[ 8393.212306] bdbm: llm_make_req: 6950000, 96 +[ 8395.353813] bdbm: llm_make_req: 7000000, 96 +[ 8396.269672] bdbm: nvm: total access = 12500000, total read = 3901830, read hit = 2209349, total_write = 8598169, write hit = 8598169, hit = 0, evict = 4730789 +[ 8397.563416] bdbm: llm_make_req: 7050000, 69 +[ 8399.817178] bdbm: llm_make_req: 7100000, 96 +[ 8400.229046] bdbm: nvm: total access = 12600000, total read = 3941953, read hit = 2232189, total_write = 8658046, write hit = 8658046, hit = 0, evict = 4756739 +[ 8401.921274] bdbm: llm_make_req: 7150000, 96 +[ 8404.308062] bdbm: llm_make_req: 7200000, 50 +[ 8404.339560] bdbm: nvm: total access = 12700000, total read = 3981737, read hit = 2254667, total_write = 8718262, write hit = 8718262, hit = 0, evict = 4782708 +[ 8406.670790] bdbm: llm_make_req: 7250000, 96 +[ 8408.514931] bdbm: nvm: total access = 12800000, total read = 4022141, read hit = 2277457, total_write = 8777858, write hit = 8777858, hit = 0, evict = 4808422 +[ 8408.630271] bdbm: llm_make_req: 7300000, 96 +[ 8411.224348] bdbm: llm_make_req: 7350000, 52 +[ 8413.580275] bdbm: llm_make_req: 7400000, 96 +[ 8413.979759] bdbm: nvm: total access = 12900000, total read = 4061391, read hit = 2300265, total_write = 8838608, write hit = 8838608, hit = 0, evict = 4834766 +[ 8415.533653] bdbm: llm_make_req: 7450000, 96 +[ 8418.181267] bdbm: llm_make_req: 7500000, 42 +[ 8418.221196] bdbm: nvm: total access = 13000000, total read = 4100520, read hit = 2322654, total_write = 8899479, write hit = 8899479, hit = 0, evict = 4861023 +[ 8420.573652] bdbm: llm_make_req: 7550000, 96 +[ 8422.458827] bdbm: llm_make_req: 7600000, 43 +[ 8423.782840] bdbm: nvm: total access = 13100000, total read = 4141265, read hit = 2346124, total_write = 8958734, write hit = 8958734, hit = 0, evict = 4886362 +[ 8425.224187] bdbm: llm_make_req: 7650000, 65 +[ 8427.508616] bdbm: llm_make_req: 7700000, 96 +[ 8428.113958] bdbm: nvm: total access = 13200000, total read = 4181673, read hit = 2369355, total_write = 9018326, write hit = 9018326, hit = 0, evict = 4911482 +[ 8429.586873] bdbm: llm_make_req: 7750000, 59 +[ 8432.050539] bdbm: llm_make_req: 7800000, 96 +[ 8432.486590] bdbm: nvm: total access = 13300000, total read = 4221362, read hit = 2392036, total_write = 9078637, write hit = 9078637, hit = 0, evict = 4937011 +[ 8434.441447] bdbm: llm_make_req: 7850000, 96 +[ 8436.699923] bdbm: llm_make_req: 7900000, 58 +[ 8438.069120] bdbm: nvm: total access = 13400000, total read = 4261333, read hit = 2415429, total_write = 9138666, write hit = 9138666, hit = 0, evict = 4962273 +[ 8439.081837] bdbm: llm_make_req: 7950000, 96 +[ 8441.291171] bdbm: llm_make_req: 8000000, 96 +[ 8442.310863] bdbm: nvm: total access = 13500000, total read = 4301627, read hit = 2438808, total_write = 9198372, write hit = 9198372, hit = 0, evict = 4987544 +[ 8443.701774] bdbm: llm_make_req: 8050000, 54 +[ 8777.685380] bdbm: ----------------------------------------------- +[ 8777.685383] bdbm: < PERFORMANCE SUMMARY > +[ 8777.685384] bdbm: [0] Execution Time (us): 526.949275 +[ 8777.685385] bdbm: +[ 8777.685385] bdbm: [1] Total I/Os +[ 8777.685386] bdbm: # of page reads: 2471448 +[ 8777.685386] bdbm: # of page writes: 597240 +[ 8777.685387] bdbm: # of block erase: 12032 +[ 8777.685387] bdbm: +[ 8777.685388] bdbm: [2] Normal I/Os +[ 8777.685389] bdbm: # of page reads: 1874295 +[ 8777.685389] bdbm: # of page writes: 0 +[ 8777.685390] bdbm: # of page rmw reads: 0 +[ 8777.685390] bdbm: # of page rmw writes: 0 +[ 8777.685391] bdbm: +[ 8777.685391] bdbm: [3] GC I/Os +[ 8777.685391] bdbm: # of GC invocation: 0 +[ 8777.685392] bdbm: # of page reads: 597153 +[ 8777.685392] bdbm: # of page writes: 597240 +[ 8777.685393] bdbm: # of block erase: 12032 +[ 8777.685394] bdbm: +[ 8777.685395] bdbm: [4] Meta I/Os +[ 8777.685395] bdbm: # of meta page reads: 0 +[ 8777.685395] bdbm: # of meta page writes: 0 +[ 8777.685396] bdbm: +[ 8777.685396] bdbm: [5] Elapsed Time +[ 8777.685397] bdbm: page read (us): 93 (S:0 + Q:0 + D:93) +[ 8777.685397] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[ 8777.685398] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[ 8777.685398] bdbm: +[ 8777.685399] bdbm: [6] Utilization (R) +[ 8777.685402] bdbm: 19300 19328 19174 19315 19223 19237 19320 19418 +[ 8777.685403] bdbm: 19131 19232 19118 19279 19422 19160 19299 19107 +[ 8777.685404] bdbm: 19268 19145 19394 19111 19409 19224 19486 19259 +[ 8777.685406] bdbm: 19526 19315 19487 19489 19260 19354 19307 19419 +[ 8777.685407] bdbm: 19440 19086 19214 19278 19104 18840 19246 19217 +[ 8777.685408] bdbm: 19224 19428 19137 19358 19398 19230 19257 19197 +[ 8777.685409] bdbm: 19350 19296 19093 19271 19499 19328 19187 19511 +[ 8777.685410] bdbm: 19299 19282 19401 19510 19349 19486 19226 19194 +[ 8777.685412] bdbm: 19189 19396 19469 19313 19307 19180 19267 19309 +[ 8777.685414] bdbm: 19575 19549 19294 19390 19498 19520 19328 19247 +[ 8777.685415] bdbm: 19392 19261 19260 19287 19210 19626 19557 19515 +[ 8777.685416] bdbm: 19413 19352 19425 19424 19119 19107 19409 19285 +[ 8777.685418] bdbm: 19444 19113 19117 19231 19141 19397 19256 19415 +[ 8777.685419] bdbm: 19544 19538 19356 19603 19273 19122 19101 19479 +[ 8777.685420] bdbm: 19295 19345 19052 19108 19109 19029 19182 19169 +[ 8777.685421] bdbm: 19197 19127 19306 19551 19708 19283 19518 19414 +[ 8777.685422] bdbm: +[ 8777.685422] bdbm: [7] Utilization (W) +[ 8777.685424] bdbm: 4664 4684 4689 4692 4695 4696 4698 4700 +[ 8777.685425] bdbm: 4703 4705 4702 4701 4701 4700 4699 4699 +[ 8777.685427] bdbm: 4697 4697 4696 4693 4693 4693 4692 4691 +[ 8777.685428] bdbm: 4691 4690 4688 4687 4685 4685 4685 4683 +[ 8777.685430] bdbm: 4683 4683 4683 4683 4681 4680 4680 4680 +[ 8777.685431] bdbm: 4680 4680 4680 4680 4678 4678 4676 4675 +[ 8777.685432] bdbm: 4675 4675 4674 4674 4674 4674 4674 4674 +[ 8777.685433] bdbm: 4674 4674 4674 4674 4674 4674 4672 4671 +[ 8777.685435] bdbm: 4670 4670 4668 4666 4665 4665 4664 4664 +[ 8777.685436] bdbm: 4661 4661 4661 4660 4660 4659 4658 4658 +[ 8777.685437] bdbm: 4657 4657 4657 4657 4655 4654 4654 4654 +[ 8777.685438] bdbm: 4653 4653 4652 4652 4650 4649 4648 4647 +[ 8777.685439] bdbm: 4647 4647 4644 4644 4644 4643 4643 4643 +[ 8777.685441] bdbm: 4643 4642 4640 4640 4639 4638 4637 4637 +[ 8777.685442] bdbm: 4636 4636 4636 4635 4634 4633 4632 4630 +[ 8777.685444] bdbm: 4628 4628 4625 4625 4625 4624 4624 4624 +[ 8777.685444] bdbm: [8] NVM I/Os +[ 8777.685444] bdbm: #_of_nvm_total_accesses: 13570598 +[ 8777.685445] bdbm: #_of_nvm_total_write_requests: 9240788 +[ 8777.685446] bdbm: #_of_nvm_total_read_requests: 4329810 +[ 8777.685447] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9240788 +[ 8777.685447] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 2455487 +[ 8777.685448] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[ 8777.685448] bdbm: #_of_nvm_evict_from_nvm: 5005191 +[ 8777.685449] bdbm: #_of_nvm_write_amplification: 5005191 : 5602431 +[ 8777.685449] bdbm: +[ 8777.685450] bdbm: ----------------------------------------------- +[ 8777.685450] bdbm: ----------------------------------------------- +[ 8777.890602] bdbm: done +[ 8777.890604] bdbm: [dm_ramdrive_close] closed! +[ 8778.277833] bdbm: [bdbm_drv_main] bdbm_drv is closed +[ 8778.277835] bdbm: [bdbm_drv_main] bdbm_drv is removed +[ 8778.313711] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[ 8778.341429] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[ 8778.346865] bdbm: ===================================================================== +[ 8778.346867] bdbm: DEVICE PARAMETERS +[ 8778.346868] bdbm: ===================================================================== +[ 8778.346869] bdbm: # of channels = 8 +[ 8778.346869] bdbm: # of chips per channel = 16 +[ 8778.346870] bdbm: # of blocks per chip = 256 +[ 8778.346871] bdbm: # of pages per block = 128 +[ 8778.346872] bdbm: # of subpages per page = 1 +[ 8778.346872] bdbm: page main size = 4096 bytes +[ 8778.346873] bdbm: page oob size = 64 bytes +[ 8778.346874] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 8778.346875] bdbm: +[ 8778.346876] bdbm: ===================================================================== +[ 8778.346876] bdbm: RAM DISK INFO +[ 8778.346877] bdbm: ===================================================================== +[ 8778.346878] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[ 8779.908757] bdbm: ramssd addr = ffffc90050001000 +[ 8779.908759] bdbm: +[ 8779.908759] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[ 8781.433801] bdbm: *** building ptr_ramssd_data done +[ 8781.434055] bdbm: [dm_ramdrive_probe] probe done! +[ 8781.434057] bdbm: [dm_ramdrive_open] open done! +[ 8781.633079] bdbm: nvm cache addr = ffffc908ee51c000 +[ 8781.643010] bdbm: ========================================================== +[ 8781.643012] bdbm: NVM CONFIGURATION +[ 8781.643013] bdbm: ========================================================== +[ 8781.643014] bdbm: total size = 2147483648, nr_nvm_pages = 524288, nvm_page_size = 4096 +[ 8781.801728] bdbm: TRIM is disabled +[ 8781.801885] bdbm: ===================================================================== +[ 8781.801886] bdbm: DEVICE PARAMETERS +[ 8781.801887] bdbm: ===================================================================== +[ 8781.801887] bdbm: # of channels = 8 +[ 8781.801888] bdbm: # of chips per channel = 16 +[ 8781.801888] bdbm: # of blocks per chip = 256 +[ 8781.801889] bdbm: # of pages per block = 128 +[ 8781.801889] bdbm: # of subpages per page = 1 +[ 8781.801890] bdbm: page main size = 4096 bytes +[ 8781.801890] bdbm: page oob size = 64 bytes +[ 8781.801891] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[ 8781.801891] bdbm: +[ 8781.801892] bdbm: ===================================================================== +[ 8781.801892] bdbm: FTL CONFIGURATION +[ 8781.801893] bdbm: ===================================================================== +[ 8781.801893] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[ 8781.801896] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[ 8781.801897] bdbm: wl policy = 1 (1: none, 2: swap) +[ 8781.801897] bdbm: trim mode = 2 (1: enable, 2: disable) +[ 8781.801898] bdbm: kernel sector = 512 bytes +[ 8781.801898] bdbm: +[ 8781.801900] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[ 8781.819706] bdbm: llm_make_req: 0, 1 +[ 8781.947726] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[ 8781.947729] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[ 8784.357087] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 diff --git a/result/fio_ton_o1_n2g.rslt b/result/fio_ton_o1_n2g.rslt new file mode 100644 index 0000000..0e96dab --- /dev/null +++ b/result/fio_ton_o1_n2g.rslt @@ -0,0 +1,43 @@ +JESD219: (g=0): rw=randrw, bs=512-64K/512-64K/512-64K, ioengine=libaio, iodepth=256 +... +fio-2.14-20-gd6192-dirty +Starting 4 processes +JESD219: Laying out IO file(s) (1 file(s) / 10240MB) + +JESD219: (groupid=0, jobs=4): err= 0: pid=14325: Mon Nov 7 17:09:32 2016 + read : io=16389MB, bw=124812KB/s, iops=16349, runt=134463msec + slat (usec): min=1, max=1365.9K, avg=64.59, stdev=6817.67 + clat (usec): min=212, max=1417.7K, avg=24622.00, stdev=140373.68 + lat (usec): min=214, max=1417.7K, avg=24686.69, stdev=140535.98 + clat percentiles (usec): + | 1.00th=[ 1384], 5.00th=[ 1576], 10.00th=[ 1880], 20.00th=[ 2512], + | 30.00th=[ 2704], 40.00th=[ 2864], 50.00th=[ 3024], 60.00th=[ 3248], + | 70.00th=[ 6432], 80.00th=[11456], 90.00th=[19072], 95.00th=[26752], + | 99.00th=[1036288], 99.50th=[1269760], 99.90th=[1335296], 99.95th=[1351680], + | 99.99th=[1384448] + write: io=24571MB, bw=187118KB/s, iops=24529, runt=134463msec + slat (usec): min=2, max=1372.5K, avg=112.86, stdev=9801.14 + clat (usec): min=189, max=1417.2K, avg=23872.77, stdev=138291.81 + lat (usec): min=203, max=1417.3K, avg=23985.74, stdev=138630.93 + clat percentiles (usec): + | 1.00th=[ 1352], 5.00th=[ 1496], 10.00th=[ 1736], 20.00th=[ 2480], + | 30.00th=[ 2640], 40.00th=[ 2768], 50.00th=[ 2928], 60.00th=[ 3120], + | 70.00th=[ 5664], 80.00th=[11072], 90.00th=[18816], 95.00th=[26496], + | 99.00th=[987136], 99.50th=[1269760], 99.90th=[1335296], 99.95th=[1351680], + | 99.99th=[1384448] + lat (usec) : 250=0.01%, 500=0.01%, 750=0.01%, 1000=0.01% + lat (msec) : 2=11.93%, 4=55.85%, 10=8.29%, 20=15.09%, 50=6.99% + lat (msec) : 100=0.16%, 500=0.13%, 750=0.12%, 1000=0.44%, 2000=1.00% + cpu : usr=0.86%, sys=26.49%, ctx=91886, majf=0, minf=45 + IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% + submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% + complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1% + issued : total=r=2198362/w=3298308/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 + latency : target=0, window=0, percentile=100.00%, depth=256 + +Run status group 0 (all jobs): + READ: io=16389MB, aggrb=124811KB/s, minb=124811KB/s, maxb=124811KB/s, mint=134463msec, maxt=134463msec + WRITE: io=24571MB, aggrb=187118KB/s, minb=187118KB/s, maxb=187118KB/s, mint=134463msec, maxt=134463msec + +Disk stats (read/write): + robusta: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00% diff --git a/result/fio_ton_o1_n500m.dmesg b/result/fio_ton_o1_n500m.dmesg new file mode 100644 index 0000000..ea4b887 --- /dev/null +++ b/result/fio_ton_o1_n500m.dmesg @@ -0,0 +1,1823 @@ +[ 9614.997404] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 0, evict = 0 +[ 9615.177434] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 0, evict = 4063 +[ 9615.445004] bdbm: llm_make_req: 50000, 95 +[ 9615.734915] bdbm: llm_make_req: 100000, 57 +[ 9615.755812] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 0, evict = 104063 +[ 9616.023919] bdbm: llm_make_req: 150000, 89 +[ 9616.309738] bdbm: llm_make_req: 200000, 93 +[ 9616.330505] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 0, evict = 204063 +[ 9616.608325] bdbm: llm_make_req: 250000, 94 +[ 9616.890596] bdbm: llm_make_req: 300000, 90 +[ 9616.911245] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 0, evict = 304063 +[ 9617.175540] bdbm: llm_make_req: 350000, 93 +[ 9617.459075] bdbm: llm_make_req: 400000, 93 +[ 9617.479739] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 0, evict = 404063 +[ 9617.742013] bdbm: llm_make_req: 450000, 92 +[ 9618.026989] bdbm: llm_make_req: 500000, 95 +[ 9618.055353] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 0, evict = 504063 +[ 9618.311058] bdbm: llm_make_req: 550000, 94 +[ 9618.593060] bdbm: llm_make_req: 600000, 89 +[ 9618.620774] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 0, evict = 604063 +[ 9618.880849] bdbm: llm_make_req: 650000, 60 +[ 9619.163406] bdbm: llm_make_req: 700000, 92 +[ 9619.191582] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 0, evict = 704063 +[ 9619.456303] bdbm: llm_make_req: 750000, 93 +[ 9619.741049] bdbm: llm_make_req: 800000, 96 +[ 9619.761686] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 0, evict = 804063 +[ 9620.025739] bdbm: llm_make_req: 850000, 76 +[ 9620.308463] bdbm: llm_make_req: 900000, 93 +[ 9620.329149] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 0, evict = 904063 +[ 9620.590535] bdbm: llm_make_req: 950000, 94 +[ 9620.874347] bdbm: llm_make_req: 1000000, 94 +[ 9620.894996] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 0, evict = 1004063 +[ 9621.157296] bdbm: llm_make_req: 1050000, 88 +[ 9621.440743] bdbm: llm_make_req: 1100000, 91 +[ 9621.461384] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 0, evict = 1104063 +[ 9621.721965] bdbm: llm_make_req: 1150000, 94 +[ 9622.004405] bdbm: llm_make_req: 1200000, 94 +[ 9622.025078] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 0, evict = 1204063 +[ 9622.286271] bdbm: llm_make_req: 1250000, 94 +[ 9622.570590] bdbm: llm_make_req: 1300000, 94 +[ 9622.598551] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 0, evict = 1304063 +[ 9622.860112] bdbm: llm_make_req: 1350000, 88 +[ 9623.150025] bdbm: llm_make_req: 1400000, 94 +[ 9623.178929] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 0, evict = 1404063 +[ 9623.439936] bdbm: llm_make_req: 1450000, 95 +[ 9623.735028] bdbm: llm_make_req: 1500000, 53 +[ 9623.756276] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 0, evict = 1504063 +[ 9624.023434] bdbm: llm_make_req: 1550000, 94 +[ 9624.310782] bdbm: llm_make_req: 1600000, 96 +[ 9624.331982] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 0, evict = 1604063 +[ 9624.598830] bdbm: llm_make_req: 1650000, 72 +[ 9624.886338] bdbm: llm_make_req: 1700000, 87 +[ 9624.907604] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 0, evict = 1704063 +[ 9625.174986] bdbm: llm_make_req: 1750000, 91 +[ 9625.461882] bdbm: llm_make_req: 1800000, 95 +[ 9625.482393] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 0, evict = 1804063 +[ 9625.744049] bdbm: llm_make_req: 1850000, 95 +[ 9626.024833] bdbm: llm_make_req: 1900000, 95 +[ 9626.045413] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 0, evict = 1904063 +[ 9626.306032] bdbm: llm_make_req: 1950000, 95 +[ 9626.587191] bdbm: llm_make_req: 2000000, 94 +[ 9626.614961] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 0, evict = 2004063 +[ 9626.867847] bdbm: llm_make_req: 2050000, 96 +[ 9627.147970] bdbm: llm_make_req: 2100000, 95 +[ 9627.175831] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 0, evict = 2104063 +[ 9627.428662] bdbm: llm_make_req: 2150000, 95 +[ 9627.715828] bdbm: llm_make_req: 2200000, 95 +[ 9627.736381] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 0, evict = 2204063 +[ 9627.996412] bdbm: llm_make_req: 2250000, 96 +[ 9628.282845] bdbm: llm_make_req: 2300000, 88 +[ 9628.303901] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 0, evict = 2304063 +[ 9628.566126] bdbm: llm_make_req: 2350000, 93 +[ 9628.848463] bdbm: llm_make_req: 2400000, 94 +[ 9628.869696] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 0, evict = 2404063 +[ 9629.131324] bdbm: llm_make_req: 2450000, 68 +[ 9630.305628] bdbm: llm_make_req: 2500000, 76 +[ 9630.310736] bdbm: nvm: total access = 2800000, total read = 20499, read hit = 1186, total_write = 2779500, write hit = 2779500, hit = 0, evict = 2481920 +[ 9630.577344] bdbm: llm_make_req: 2550000, 69 +[ 9630.783231] bdbm: nvm: total access = 2900000, total read = 60205, read hit = 6665, total_write = 2839794, write hit = 2839794, hit = 0, evict = 2533809 +[ 9630.853322] bdbm: llm_make_req: 2600000, 85 +[ 9631.153914] bdbm: llm_make_req: 2650000, 76 +[ 9631.238202] bdbm: nvm: total access = 3000000, total read = 100081, read hit = 15648, total_write = 2899918, write hit = 2899918, hit = 0, evict = 2580164 +[ 9631.463236] bdbm: llm_make_req: 2700000, 96 +[ 9631.653841] bdbm: nvm: total access = 3100000, total read = 140737, read hit = 27970, total_write = 2959262, write hit = 2959262, hit = 0, evict = 2621779 +[ 9631.746515] bdbm: llm_make_req: 2750000, 60 +[ 9632.025035] bdbm: nvm: total access = 3200000, total read = 180600, read hit = 42509, total_write = 3019399, write hit = 3019399, hit = 0, evict = 2659975 +[ 9632.035622] bdbm: llm_make_req: 2800000, 64 +[ 9632.350481] bdbm: llm_make_req: 2850000, 70 +[ 9632.396050] bdbm: nvm: total access = 3300000, total read = 220486, read hit = 58777, total_write = 3079513, write hit = 3079513, hit = 0, evict = 2695538 +[ 9632.668827] bdbm: llm_make_req: 2900000, 55 +[ 9632.754845] bdbm: nvm: total access = 3400000, total read = 260149, read hit = 76409, total_write = 3139850, write hit = 3139850, hit = 0, evict = 2728849 +[ 9633.001179] bdbm: llm_make_req: 2950000, 64 +[ 9633.135475] bdbm: nvm: total access = 3500000, total read = 300477, read hit = 93626, total_write = 3199522, write hit = 3199522, hit = 0, evict = 2762984 +[ 9633.338623] bdbm: llm_make_req: 3000000, 68 +[ 9633.528939] bdbm: nvm: total access = 3600000, total read = 340781, read hit = 110112, total_write = 3259218, write hit = 3259218, hit = 0, evict = 2798157 +[ 9633.665700] bdbm: llm_make_req: 3050000, 75 +[ 9633.930969] bdbm: nvm: total access = 3700000, total read = 381245, read hit = 126085, total_write = 3318754, write hit = 3318754, hit = 0, evict = 2834504 +[ 9633.994847] bdbm: llm_make_req: 3100000, 84 +[ 9634.302855] bdbm: llm_make_req: 3150000, 96 +[ 9634.313310] bdbm: nvm: total access = 3800000, total read = 420691, read hit = 140934, total_write = 3379308, write hit = 3379308, hit = 0, evict = 2871869 +[ 9634.609731] bdbm: llm_make_req: 3200000, 62 +[ 9634.687927] bdbm: nvm: total access = 3900000, total read = 461050, read hit = 156283, total_write = 3438949, write hit = 3438949, hit = 0, evict = 2908914 +[ 9634.908670] bdbm: llm_make_req: 3250000, 61 +[ 9635.063022] bdbm: nvm: total access = 4000000, total read = 501226, read hit = 171898, total_write = 3498773, write hit = 3498773, hit = 0, evict = 2945744 +[ 9635.213618] bdbm: llm_make_req: 3300000, 64 +[ 9635.421598] bdbm: nvm: total access = 4100000, total read = 540994, read hit = 187548, total_write = 3559005, write hit = 3559005, hit = 0, evict = 2982256 +[ 9635.518390] bdbm: llm_make_req: 3350000, 75 +[ 9635.800156] bdbm: nvm: total access = 4200000, total read = 580981, read hit = 203162, total_write = 3619018, write hit = 3619018, hit = 0, evict = 3018078 +[ 9635.824513] bdbm: llm_make_req: 3400000, 45 +[ 9636.148301] bdbm: llm_make_req: 3450000, 51 +[ 9636.176654] bdbm: nvm: total access = 4300000, total read = 621162, read hit = 219341, total_write = 3678837, write hit = 3678837, hit = 0, evict = 3053802 +[ 9636.445563] bdbm: llm_make_req: 3500000, 47 +[ 9636.547376] bdbm: nvm: total access = 4400000, total read = 661189, read hit = 235446, total_write = 3738810, write hit = 3738810, hit = 0, evict = 3089552 +[ 9636.770581] bdbm: llm_make_req: 3550000, 72 +[ 9636.920983] bdbm: nvm: total access = 4500000, total read = 701312, read hit = 251442, total_write = 3798687, write hit = 3798687, hit = 0, evict = 3125405 +[ 9637.087054] bdbm: llm_make_req: 3600000, 66 +[ 9637.337674] bdbm: nvm: total access = 4600000, total read = 741148, read hit = 267559, total_write = 3858851, write hit = 3858851, hit = 0, evict = 3161874 +[ 9637.428900] bdbm: llm_make_req: 3650000, 95 +[ 9637.717556] bdbm: nvm: total access = 4700000, total read = 781584, read hit = 283547, total_write = 3918415, write hit = 3918415, hit = 0, evict = 3198368 +[ 9637.737367] bdbm: llm_make_req: 3700000, 94 +[ 9638.074739] bdbm: llm_make_req: 3750000, 69 +[ 9638.119178] bdbm: nvm: total access = 4800000, total read = 820672, read hit = 299168, total_write = 3979327, write hit = 3979327, hit = 0, evict = 3234775 +[ 9638.399938] bdbm: llm_make_req: 3800000, 70 +[ 9638.514097] bdbm: nvm: total access = 4900000, total read = 860785, read hit = 314712, total_write = 4039214, write hit = 4039214, hit = 0, evict = 3271257 +[ 9638.706318] bdbm: llm_make_req: 3850000, 75 +[ 9638.899642] bdbm: nvm: total access = 5000000, total read = 901636, read hit = 330767, total_write = 4098363, write hit = 4098363, hit = 0, evict = 3307019 +[ 9639.035915] bdbm: llm_make_req: 3900000, 67 +[ 9639.283149] bdbm: nvm: total access = 5100000, total read = 941797, read hit = 346166, total_write = 4158202, write hit = 4158202, hit = 0, evict = 3343518 +[ 9639.341916] bdbm: llm_make_req: 3950000, 78 +[ 9639.654194] bdbm: llm_make_req: 4000000, 86 +[ 9639.655312] bdbm: nvm: total access = 5200000, total read = 981544, read hit = 361668, total_write = 4218455, write hit = 4218455, hit = 0, evict = 3380380 +[ 9639.954635] bdbm: llm_make_req: 4050000, 54 +[ 9640.029134] bdbm: nvm: total access = 5300000, total read = 1021570, read hit = 377451, total_write = 4278429, write hit = 4278429, hit = 0, evict = 3416584 +[ 9640.256403] bdbm: llm_make_req: 4100000, 53 +[ 9640.390755] bdbm: nvm: total access = 5400000, total read = 1061418, read hit = 393126, total_write = 4338581, write hit = 4338581, hit = 0, evict = 3452963 +[ 9640.579652] bdbm: llm_make_req: 4150000, 80 +[ 9640.787613] bdbm: nvm: total access = 5500000, total read = 1101269, read hit = 409056, total_write = 4398730, write hit = 4398730, hit = 0, evict = 3489652 +[ 9640.893842] bdbm: llm_make_req: 4200000, 66 +[ 9641.144982] bdbm: nvm: total access = 5600000, total read = 1141265, read hit = 424608, total_write = 4458734, write hit = 4458734, hit = 0, evict = 3526475 +[ 9641.196302] bdbm: llm_make_req: 4250000, 67 +[ 9641.499570] bdbm: llm_make_req: 4300000, 74 +[ 9641.527238] bdbm: nvm: total access = 5700000, total read = 1180874, read hit = 440352, total_write = 4519125, write hit = 4519125, hit = 0, evict = 3563170 +[ 9641.821281] bdbm: llm_make_req: 4350000, 62 +[ 9641.929557] bdbm: nvm: total access = 5800000, total read = 1220855, read hit = 456077, total_write = 4579144, write hit = 4579144, hit = 0, evict = 3599768 +[ 9642.140573] bdbm: llm_make_req: 4400000, 55 +[ 9642.295034] bdbm: nvm: total access = 5900000, total read = 1260302, read hit = 471932, total_write = 4639697, write hit = 4639697, hit = 0, evict = 3637041 +[ 9642.466963] bdbm: llm_make_req: 4450000, 81 +[ 9642.682707] bdbm: nvm: total access = 6000000, total read = 1300392, read hit = 487778, total_write = 4699607, write hit = 4699607, hit = 0, evict = 3673598 +[ 9642.763258] bdbm: llm_make_req: 4500000, 84 +[ 9643.061399] bdbm: nvm: total access = 6100000, total read = 1340455, read hit = 503702, total_write = 4759544, write hit = 4759544, hit = 0, evict = 3710038 +[ 9643.085870] bdbm: llm_make_req: 4550000, 90 +[ 9643.390913] bdbm: llm_make_req: 4600000, 62 +[ 9643.437363] bdbm: nvm: total access = 6200000, total read = 1380654, read hit = 519181, total_write = 4819345, write hit = 4819345, hit = 0, evict = 3746767 +[ 9643.705282] bdbm: llm_make_req: 4650000, 74 +[ 9643.829719] bdbm: nvm: total access = 6300000, total read = 1420532, read hit = 534563, total_write = 4879467, write hit = 4879467, hit = 0, evict = 3783433 +[ 9644.021472] bdbm: llm_make_req: 4700000, 58 +[ 9644.211955] bdbm: nvm: total access = 6400000, total read = 1460008, read hit = 550251, total_write = 4939991, write hit = 4939991, hit = 0, evict = 3820161 +[ 9644.342581] bdbm: llm_make_req: 4750000, 67 +[ 9644.598403] bdbm: nvm: total access = 6500000, total read = 1499963, read hit = 565927, total_write = 5000036, write hit = 5000036, hit = 0, evict = 3856567 +[ 9644.672169] bdbm: llm_make_req: 4800000, 62 +[ 9644.993504] bdbm: llm_make_req: 4850000, 68 +[ 9645.002451] bdbm: nvm: total access = 6600000, total read = 1539982, read hit = 581636, total_write = 5060017, write hit = 5060017, hit = 0, evict = 3893305 +[ 9645.310605] bdbm: llm_make_req: 4900000, 65 +[ 9645.375477] bdbm: nvm: total access = 6700000, total read = 1580113, read hit = 597410, total_write = 5119886, write hit = 5119886, hit = 0, evict = 3929512 +[ 9645.603905] bdbm: llm_make_req: 4950000, 53 +[ 9645.740079] bdbm: nvm: total access = 6800000, total read = 1619729, read hit = 613214, total_write = 5180270, write hit = 5180270, hit = 0, evict = 3966050 +[ 9645.921128] bdbm: llm_make_req: 5000000, 67 +[ 9646.123011] bdbm: nvm: total access = 6900000, total read = 1660371, read hit = 629279, total_write = 5239628, write hit = 5239628, hit = 0, evict = 4002129 +[ 9646.217016] bdbm: llm_make_req: 5050000, 65 +[ 9646.509700] bdbm: nvm: total access = 7000000, total read = 1700305, read hit = 645022, total_write = 5299694, write hit = 5299694, hit = 0, evict = 4038606 +[ 9646.543391] bdbm: llm_make_req: 5100000, 77 +[ 9647.220624] bdbm: llm_make_req: 5150000, 59 +[ 9647.247591] bdbm: nvm: total access = 7100000, total read = 1740073, read hit = 660297, total_write = 5359926, write hit = 5359926, hit = 0, evict = 4075046 +[ 9648.269475] bdbm: llm_make_req: 5200000, 64 +[ 9648.368908] bdbm: nvm: total access = 7200000, total read = 1780334, read hit = 675983, total_write = 5419665, write hit = 5419665, hit = 0, evict = 4111420 +[ 9649.295427] bdbm: llm_make_req: 5250000, 52 +[ 9649.822119] bdbm: nvm: total access = 7300000, total read = 1821038, read hit = 692246, total_write = 5478961, write hit = 5478961, hit = 0, evict = 4147215 +[ 9649.962409] bdbm: llm_make_req: 5300000, 65 +[ 9652.016081] bdbm: llm_make_req: 5350000, 96 +[ 9653.481688] bdbm: nvm: total access = 7400000, total read = 1861378, read hit = 708343, total_write = 5538621, write hit = 5538621, hit = 0, evict = 4183300 +[ 9654.256240] bdbm: llm_make_req: 5400000, 95 +[ 9655.998479] bdbm: llm_make_req: 5450000, 96 +[ 9657.015809] bdbm: nvm: total access = 7500000, total read = 1901317, read hit = 724152, total_write = 5598682, write hit = 5598682, hit = 0, evict = 4219635 +[ 9658.067202] bdbm: llm_make_req: 5500000, 67 +[ 9660.199751] bdbm: llm_make_req: 5550000, 76 +[ 9661.385002] bdbm: nvm: total access = 7600000, total read = 1941153, read hit = 739745, total_write = 5658846, write hit = 5658846, hit = 0, evict = 4256444 +[ 9661.885473] bdbm: llm_make_req: 5600000, 96 +[ 9663.759980] bdbm: llm_make_req: 5650000, 71 +[ 9666.067087] bdbm: llm_make_req: 5700000, 55 +[ 9666.075576] bdbm: nvm: total access = 7700000, total read = 1980993, read hit = 755674, total_write = 5719006, write hit = 5719006, hit = 0, evict = 4292891 +[ 9667.954624] bdbm: llm_make_req: 5750000, 96 +[ 9669.829184] bdbm: llm_make_req: 5800000, 73 +[ 9671.029522] bdbm: nvm: total access = 7800000, total read = 2021418, read hit = 771707, total_write = 5778581, write hit = 5778581, hit = 0, evict = 4328740 +[ 9672.161541] bdbm: llm_make_req: 5850000, 66 +[ 9674.179045] bdbm: llm_make_req: 5900000, 96 +[ 9674.666451] bdbm: nvm: total access = 7900000, total read = 2061123, read hit = 787352, total_write = 5838876, write hit = 5838876, hit = 0, evict = 4365548 +[ 9675.841188] bdbm: llm_make_req: 5950000, 69 +[ 9678.287739] bdbm: llm_make_req: 6000000, 89 +[ 9680.453333] bdbm: llm_make_req: 6050000, 95 +[ 9680.837729] bdbm: nvm: total access = 8000000, total read = 2100659, read hit = 802775, total_write = 5899340, write hit = 5899340, hit = 0, evict = 4402210 +[ 9682.269045] bdbm: llm_make_req: 6100000, 57 +[ 9684.875289] bdbm: llm_make_req: 6150000, 66 +[ 9686.329424] bdbm: nvm: total access = 8100000, total read = 2140303, read hit = 818282, total_write = 5959696, write hit = 5959696, hit = 0, evict = 4438767 +[ 9687.105046] bdbm: llm_make_req: 6200000, 96 +[ 9689.003426] bdbm: llm_make_req: 6250000, 77 +[ 9691.292617] bdbm: llm_make_req: 6300000, 96 +[ 9693.053631] bdbm: nvm: total access = 8200000, total read = 2180675, read hit = 833827, total_write = 6019324, write hit = 6019324, hit = 0, evict = 4475000 +[ 9693.658524] bdbm: llm_make_req: 6350000, 96 +[ 9695.912445] bdbm: llm_make_req: 6400000, 78 +[ 9698.381731] bdbm: llm_make_req: 6450000, 96 +[ 9700.168906] bdbm: nvm: total access = 8300000, total read = 2220477, read hit = 849100, total_write = 6079522, write hit = 6079522, hit = 0, evict = 4511366 +[ 9700.493140] bdbm: llm_make_req: 6500000, 96 +[ 9702.898219] bdbm: llm_make_req: 6550000, 67 +[ 9705.280488] bdbm: llm_make_req: 6600000, 95 +[ 9705.721313] bdbm: nvm: total access = 8400000, total read = 2260215, read hit = 864518, total_write = 6139784, write hit = 6139784, hit = 0, evict = 4547862 +[ 9707.258635] bdbm: llm_make_req: 6650000, 96 +[ 9709.828268] bdbm: llm_make_req: 6700000, 96 +[ 9712.611009] bdbm: llm_make_req: 6750000, 96 +[ 9714.707730] bdbm: nvm: total access = 8500000, total read = 2300048, read hit = 880159, total_write = 6199951, write hit = 6199951, hit = 0, evict = 4584449 +[ 9714.717605] bdbm: llm_make_req: 6800000, 75 +[ 9717.417780] bdbm: llm_make_req: 6850000, 96 +[ 9719.748798] bdbm: llm_make_req: 6900000, 96 +[ 9722.332078] bdbm: llm_make_req: 6950000, 63 +[ 9723.918349] bdbm: nvm: total access = 8600000, total read = 2340759, read hit = 896163, total_write = 6259240, write hit = 6259240, hit = 0, evict = 4620559 +[ 9725.049102] bdbm: llm_make_req: 7000000, 96 +[ 9727.092333] bdbm: llm_make_req: 7050000, 50 +[ 9729.771941] bdbm: llm_make_req: 7100000, 96 +[ 9732.427671] bdbm: llm_make_req: 7150000, 96 +[ 9733.368290] bdbm: nvm: total access = 8700000, total read = 2380784, read hit = 911769, total_write = 6319215, write hit = 6319215, hit = 0, evict = 4656870 +[ 9734.971077] bdbm: llm_make_req: 7200000, 83 +[ 9737.805885] bdbm: llm_make_req: 7250000, 95 +[ 9739.958244] bdbm: llm_make_req: 7300000, 96 +[ 9742.663827] bdbm: llm_make_req: 7350000, 96 +[ 9744.775752] bdbm: nvm: total access = 8800000, total read = 2421016, read hit = 927607, total_write = 6378983, write hit = 6378983, hit = 0, evict = 4693190 +[ 9745.565391] bdbm: llm_make_req: 7400000, 96 +[ 9747.998277] bdbm: llm_make_req: 7450000, 61 +[ 9750.815549] bdbm: llm_make_req: 7500000, 96 +[ 9753.057177] bdbm: llm_make_req: 7550000, 96 +[ 9755.850172] bdbm: llm_make_req: 7600000, 96 +[ 9756.238059] bdbm: nvm: total access = 8900000, total read = 2461088, read hit = 943593, total_write = 6438911, write hit = 6438911, hit = 0, evict = 4729211 +[ 9758.675962] bdbm: llm_make_req: 7650000, 96 +[ 9761.164575] bdbm: llm_make_req: 7700000, 67 +[ 9764.105645] bdbm: llm_make_req: 7750000, 96 +[ 9766.384892] bdbm: llm_make_req: 7800000, 96 +[ 9769.145841] bdbm: llm_make_req: 7850000, 96 +[ 9769.523237] bdbm: nvm: total access = 9000000, total read = 2500653, read hit = 959317, total_write = 6499346, write hit = 6499346, hit = 0, evict = 4765745 +[ 9771.971146] bdbm: llm_make_req: 7900000, 96 +[ 9774.530035] bdbm: llm_make_req: 7950000, 70 +[ 9777.494115] bdbm: llm_make_req: 8000000, 96 +[ 9779.656556] bdbm: llm_make_req: 8050000, 96 +[ 9782.511348] bdbm: llm_make_req: 8100000, 96 +[ 9782.879026] bdbm: nvm: total access = 9100000, total read = 2540795, read hit = 975460, total_write = 6559204, write hit = 6559204, hit = 0, evict = 4801994 +[ 9785.235002] bdbm: llm_make_req: 8150000, 96 +[ 9787.893199] bdbm: llm_make_req: 8200000, 62 +[ 9790.830493] bdbm: llm_make_req: 8250000, 96 +[ 9792.982688] bdbm: llm_make_req: 8300000, 57 +[ 9794.642252] bdbm: nvm: total access = 9200000, total read = 2580814, read hit = 991340, total_write = 6619185, write hit = 6619185, hit = 0, evict = 4838181 +[ 9795.892187] bdbm: llm_make_req: 8350000, 96 +[ 9798.570514] bdbm: llm_make_req: 8400000, 96 +[ 9801.233131] bdbm: llm_make_req: 8450000, 68 +[ 9804.200505] bdbm: llm_make_req: 8500000, 96 +[ 9806.286671] bdbm: llm_make_req: 8550000, 72 +[ 9807.974602] bdbm: nvm: total access = 9300000, total read = 2620538, read hit = 1007017, total_write = 6679461, write hit = 6679461, hit = 0, evict = 4874447 +[ 9809.243095] bdbm: llm_make_req: 8600000, 96 +[ 9811.886082] bdbm: llm_make_req: 8650000, 96 +[ 9814.611426] bdbm: llm_make_req: 8700000, 69 +[ 9817.528587] bdbm: llm_make_req: 8750000, 96 +[ 9819.643079] bdbm: llm_make_req: 8800000, 72 +[ 9821.324613] bdbm: nvm: total access = 9400000, total read = 2660269, read hit = 1022665, total_write = 6739730, write hit = 6739730, hit = 0, evict = 4911048 +[ 9822.635963] bdbm: llm_make_req: 8850000, 96 +[ 9825.255512] bdbm: llm_make_req: 8900000, 96 +[ 9827.956874] bdbm: llm_make_req: 8950000, 47 +[ 9830.907411] bdbm: llm_make_req: 9000000, 96 +[ 9833.133019] bdbm: llm_make_req: 9050000, 91 +[ 9834.762848] bdbm: nvm: total access = 9500000, total read = 2700115, read hit = 1038119, total_write = 6799884, write hit = 6799884, hit = 0, evict = 4947444 +[ 9836.006977] bdbm: llm_make_req: 9100000, 96 +[ 9838.588805] bdbm: llm_make_req: 9150000, 96 +[ 9841.075687] bdbm: llm_make_req: 9200000, 96 +[ 9844.208504] bdbm: llm_make_req: 9250000, 96 +[ 9846.446950] bdbm: llm_make_req: 9300000, 87 +[ 9848.097661] bdbm: nvm: total access = 9600000, total read = 2740052, read hit = 1053832, total_write = 6859947, write hit = 6859947, hit = 0, evict = 4984494 +[ 9849.379030] bdbm: llm_make_req: 9350000, 95 +[ 9851.826697] bdbm: llm_make_req: 9400000, 96 +[ 9854.355367] bdbm: llm_make_req: 9450000, 96 +[ 9857.385018] bdbm: llm_make_req: 9500000, 96 +[ 9859.712193] bdbm: llm_make_req: 9550000, 60 +[ 9859.714119] bdbm: nvm: total access = 9700000, total read = 2780659, read hit = 1069745, total_write = 6919340, write hit = 6919340, hit = 0, evict = 5020573 +[ 9862.610879] bdbm: llm_make_req: 9600000, 96 +[ 9865.000093] bdbm: llm_make_req: 9650000, 96 +[ 9867.588317] bdbm: llm_make_req: 9700000, 96 +[ 9870.615242] bdbm: llm_make_req: 9750000, 96 +[ 9872.962832] bdbm: nvm: total access = 9800000, total read = 2820993, read hit = 1085435, total_write = 6979006, write hit = 6979006, hit = 0, evict = 5056870 +[ 9872.971864] bdbm: llm_make_req: 9800000, 63 +[ 9875.845338] bdbm: llm_make_req: 9850000, 96 +[ 9878.166044] bdbm: llm_make_req: 9900000, 96 +[ 9880.785259] bdbm: llm_make_req: 9950000, 96 +[ 9883.592576] bdbm: llm_make_req: 10000000, 96 +[ 9884.070663] bdbm: nvm: total access = 9900000, total read = 2861237, read hit = 1101238, total_write = 7038762, write hit = 7038762, hit = 0, evict = 5092694 +[ 9885.403110] bdbm: llm_make_req: 10050000, 66 +[ 9887.740023] bdbm: llm_make_req: 10100000, 65 +[ 9888.814611] bdbm: nvm: total access = 10000000, total read = 2901586, read hit = 1117308, total_write = 7098413, write hit = 7098413, hit = 0, evict = 5128577 +[ 9889.507051] bdbm: llm_make_req: 10150000, 96 +[ 9891.188182] bdbm: llm_make_req: 10200000, 96 +[ 9891.904078] bdbm: nvm: total access = 10100000, total read = 2940827, read hit = 1132740, total_write = 7159172, write hit = 7159172, hit = 0, evict = 5165716 +[ 9892.834571] bdbm: llm_make_req: 10250000, 62 +[ 9894.615054] bdbm: llm_make_req: 10300000, 86 +[ 9894.627375] bdbm: nvm: total access = 10200000, total read = 2980575, read hit = 1148413, total_write = 7219424, write hit = 7219424, hit = 0, evict = 5202372 +[ 9896.376166] bdbm: llm_make_req: 10350000, 73 +[ 9897.364164] bdbm: nvm: total access = 10300000, total read = 3020031, read hit = 1163873, total_write = 7279968, write hit = 7279968, hit = 0, evict = 5239113 +[ 9897.532002] bdbm: llm_make_req: 10400000, 96 +[ 9899.245471] bdbm: llm_make_req: 10450000, 64 +[ 9900.196682] bdbm: nvm: total access = 10400000, total read = 3060371, read hit = 1179702, total_write = 7339628, write hit = 7339628, hit = 0, evict = 5275153 +[ 9901.179247] bdbm: llm_make_req: 10500000, 64 +[ 9902.759285] bdbm: llm_make_req: 10550000, 96 +[ 9903.183484] bdbm: nvm: total access = 10500000, total read = 3100199, read hit = 1195386, total_write = 7399800, write hit = 7399800, hit = 0, evict = 5311209 +[ 9904.200433] bdbm: llm_make_req: 10600000, 65 +[ 9906.082526] bdbm: llm_make_req: 10650000, 54 +[ 9906.084283] bdbm: nvm: total access = 10600000, total read = 3140070, read hit = 1211327, total_write = 7459929, write hit = 7459929, hit = 0, evict = 5347936 +[ 9907.936772] bdbm: llm_make_req: 10700000, 67 +[ 9908.935207] bdbm: nvm: total access = 10700000, total read = 3180013, read hit = 1226897, total_write = 7519986, write hit = 7519986, hit = 0, evict = 5384323 +[ 9909.356686] bdbm: llm_make_req: 10750000, 96 +[ 9910.814191] bdbm: llm_make_req: 10800000, 68 +[ 9911.720046] bdbm: nvm: total access = 10800000, total read = 3219890, read hit = 1242312, total_write = 7580109, write hit = 7580109, hit = 0, evict = 5421211 +[ 9912.611877] bdbm: llm_make_req: 10850000, 65 +[ 9914.416072] bdbm: llm_make_req: 10900000, 60 +[ 9914.489780] bdbm: nvm: total access = 10900000, total read = 3259496, read hit = 1257659, total_write = 7640503, write hit = 7640503, hit = 0, evict = 5457972 +[ 9915.754980] bdbm: llm_make_req: 10950000, 96 +[ 9917.300531] bdbm: nvm: total access = 11000000, total read = 3299191, read hit = 1273580, total_write = 7700808, write hit = 7700808, hit = 0, evict = 5494675 +[ 9917.315344] bdbm: llm_make_req: 11000000, 85 +[ 9919.118071] bdbm: llm_make_req: 11050000, 86 +[ 9920.112395] bdbm: nvm: total access = 11100000, total read = 3339358, read hit = 1289218, total_write = 7760641, write hit = 7760641, hit = 0, evict = 5530908 +[ 9920.969401] bdbm: llm_make_req: 11100000, 7 +[ 9922.056424] bdbm: llm_make_req: 11150000, 52 +[ 9922.957431] bdbm: nvm: total access = 11200000, total read = 3379797, read hit = 1305035, total_write = 7820202, write hit = 7820202, hit = 0, evict = 5566854 +[ 9923.923352] bdbm: llm_make_req: 11200000, 72 +[ 9925.756952] bdbm: llm_make_req: 11250000, 74 +[ 9925.804365] bdbm: nvm: total access = 11300000, total read = 3419256, read hit = 1320524, total_write = 7880743, write hit = 7880743, hit = 0, evict = 5603566 +[ 9927.278323] bdbm: llm_make_req: 11300000, 96 +[ 9928.676270] bdbm: nvm: total access = 11400000, total read = 3458927, read hit = 1335991, total_write = 7941072, write hit = 7941072, hit = 0, evict = 5639910 +[ 9928.716856] bdbm: llm_make_req: 11350000, 67 +[ 9930.576161] bdbm: llm_make_req: 11400000, 61 +[ 9931.548673] bdbm: nvm: total access = 11500000, total read = 3499076, read hit = 1352098, total_write = 8000923, write hit = 8000923, hit = 0, evict = 5676337 +[ 9932.403746] bdbm: llm_make_req: 11450000, 70 +[ 9933.897233] bdbm: llm_make_req: 11500000, 96 +[ 9934.374257] bdbm: nvm: total access = 11600000, total read = 3538722, read hit = 1367870, total_write = 8061277, write hit = 8061277, hit = 0, evict = 5712822 +[ 9935.334404] bdbm: llm_make_req: 11550000, 66 +[ 9937.194722] bdbm: llm_make_req: 11600000, 78 +[ 9937.224684] bdbm: nvm: total access = 11700000, total read = 3579028, read hit = 1383622, total_write = 8120971, write hit = 8120971, hit = 0, evict = 5748860 +[ 9939.057803] bdbm: llm_make_req: 11650000, 75 +[ 9940.115734] bdbm: nvm: total access = 11800000, total read = 3619557, read hit = 1399525, total_write = 8180442, write hit = 8180442, hit = 0, evict = 5784938 +[ 9940.279725] bdbm: llm_make_req: 11700000, 96 +[ 9942.040337] bdbm: llm_make_req: 11750000, 74 +[ 9943.020066] bdbm: nvm: total access = 11900000, total read = 3659346, read hit = 1415083, total_write = 8240653, write hit = 8240653, hit = 0, evict = 5821376 +[ 9943.920370] bdbm: llm_make_req: 11800000, 67 +[ 9945.463089] bdbm: llm_make_req: 11850000, 96 +[ 9945.921919] bdbm: nvm: total access = 12000000, total read = 3699466, read hit = 1431142, total_write = 8300533, write hit = 8300533, hit = 0, evict = 5857833 +[ 9946.900361] bdbm: llm_make_req: 11900000, 59 +[ 9948.788781] bdbm: llm_make_req: 11950000, 76 +[ 9949.651308] bdbm: nvm: total access = 12100000, total read = 3738440, read hit = 1446447, total_write = 8361559, write hit = 8361559, hit = 0, evict = 5895029 +[ 9950.617871] bdbm: llm_make_req: 12000000, 69 +[ 9952.195949] bdbm: llm_make_req: 12050000, 96 +[ 9952.593474] bdbm: nvm: total access = 12200000, total read = 3777912, read hit = 1461796, total_write = 8422087, write hit = 8422087, hit = 0, evict = 5932067 +[ 9953.687748] bdbm: llm_make_req: 12100000, 64 +[ 9955.589008] bdbm: nvm: total access = 12300000, total read = 3818014, read hit = 1477598, total_write = 8481985, write hit = 8481985, hit = 0, evict = 5968307 +[ 9955.614542] bdbm: llm_make_req: 12150000, 76 +[ 9957.508436] bdbm: llm_make_req: 12200000, 52 +[ 9958.596705] bdbm: nvm: total access = 12400000, total read = 3858725, read hit = 1493723, total_write = 8541274, write hit = 8541274, hit = 0, evict = 6004072 +[ 9958.860202] bdbm: llm_make_req: 12250000, 96 +[ 9960.836521] bdbm: llm_make_req: 12300000, 90 +[ 9962.000344] bdbm: nvm: total access = 12500000, total read = 3898471, read hit = 1509271, total_write = 8601528, write hit = 8601528, hit = 0, evict = 6040574 +[ 9963.030742] bdbm: llm_make_req: 12350000, 67 +[ 9964.714691] bdbm: llm_make_req: 12400000, 96 +[ 9966.318500] bdbm: nvm: total access = 12600000, total read = 3938103, read hit = 1524673, total_write = 8661896, write hit = 8661896, hit = 0, evict = 6077022 +[ 9966.372073] bdbm: llm_make_req: 12450000, 83 +[ 9968.567314] bdbm: llm_make_req: 12500000, 84 +[ 9969.755011] bdbm: nvm: total access = 12700000, total read = 3977825, read hit = 1540539, total_write = 8722174, write hit = 8722174, hit = 0, evict = 6113637 +[ 9970.376593] bdbm: llm_make_req: 12550000, 96 +[ 9971.981273] bdbm: llm_make_req: 12600000, 80 +[ 9974.061890] bdbm: nvm: total access = 12800000, total read = 4018126, read hit = 1556543, total_write = 8781873, write hit = 8781873, hit = 0, evict = 6149655 +[ 9974.082668] bdbm: llm_make_req: 12650000, 81 +[ 9975.936885] bdbm: llm_make_req: 12700000, 96 +[ 9977.486135] bdbm: nvm: total access = 12900000, total read = 4058028, read hit = 1572407, total_write = 8841971, write hit = 8841971, hit = 0, evict = 6186220 +[ 9977.781422] bdbm: llm_make_req: 12750000, 96 +[ 9979.724199] bdbm: llm_make_req: 12800000, 57 +[ 9981.893130] bdbm: llm_make_req: 12850000, 78 +[ 9981.918757] bdbm: nvm: total access = 13000000, total read = 4097587, read hit = 1588163, total_write = 8902412, write hit = 8902412, hit = 0, evict = 6223046 +[ 9983.722211] bdbm: llm_make_req: 12900000, 95 +[ 9985.380147] bdbm: llm_make_req: 12950000, 76 +[ 9985.385957] bdbm: nvm: total access = 13100000, total read = 4137882, read hit = 1604050, total_write = 8962117, write hit = 8962117, hit = 0, evict = 6259869 +[ 9987.591445] bdbm: llm_make_req: 13000000, 80 +[ 9989.421751] bdbm: llm_make_req: 13050000, 96 +[ 9989.833932] bdbm: nvm: total access = 13200000, total read = 4177584, read hit = 1619672, total_write = 9022415, write hit = 9022415, hit = 0, evict = 6296038 +[ 9991.031357] bdbm: llm_make_req: 13100000, 67 +[ 9993.241914] bdbm: llm_make_req: 13150000, 77 +[ 9994.351002] bdbm: nvm: total access = 13300000, total read = 4218271, read hit = 1635252, total_write = 9081728, write hit = 9081728, hit = 0, evict = 6332064 +[ 9995.125962] bdbm: llm_make_req: 13200000, 96 +[ 9996.796075] bdbm: llm_make_req: 13250000, 77 +[ 9997.922186] bdbm: nvm: total access = 13400000, total read = 4259160, read hit = 1651289, total_write = 9140839, write hit = 9140839, hit = 0, evict = 6367900 +[ 9999.051085] bdbm: llm_make_req: 13300000, 58 +[10001.081228] bdbm: llm_make_req: 13350000, 96 +[10002.759004] bdbm: nvm: total access = 13500000, total read = 4299099, read hit = 1666955, total_write = 9200900, write hit = 9200900, hit = 0, evict = 6404386 +[10002.904710] bdbm: llm_make_req: 13400000, 96 +[10005.333185] bdbm: llm_make_req: 13450000, 81 +[10052.925002] bdbm: ----------------------------------------------- +[10052.925003] bdbm: < PERFORMANCE SUMMARY > +[10052.925004] bdbm: [0] Execution Time (us): 465.69745 +[10052.925005] bdbm: +[10052.925005] bdbm: [1] Total I/Os +[10052.925006] bdbm: # of page reads: 4833498 +[10052.925006] bdbm: # of page writes: 2184673 +[10052.925007] bdbm: # of block erase: 35584 +[10052.925007] bdbm: +[10052.925008] bdbm: [2] Normal I/Os +[10052.925008] bdbm: # of page reads: 2649098 +[10052.925009] bdbm: # of page writes: 0 +[10052.925009] bdbm: # of page rmw reads: 0 +[10052.925010] bdbm: # of page rmw writes: 0 +[10052.925010] bdbm: +[10052.925010] bdbm: [3] GC I/Os +[10052.925011] bdbm: # of GC invocation: 0 +[10052.925011] bdbm: # of page reads: 2184400 +[10052.925012] bdbm: # of page writes: 2184673 +[10052.925012] bdbm: # of block erase: 35584 +[10052.925013] bdbm: +[10052.925013] bdbm: [4] Meta I/Os +[10052.925014] bdbm: # of meta page reads: 0 +[10052.925014] bdbm: # of meta page writes: 0 +[10052.925015] bdbm: +[10052.925015] bdbm: [5] Elapsed Time +[10052.925016] bdbm: page read (us): 93 (S:0 + Q:0 + D:93) +[10052.925016] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[10052.925017] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[10052.925017] bdbm: +[10052.925018] bdbm: [6] Utilization (R) +[10052.925019] bdbm: 37847 37645 37905 37564 37770 37677 37680 37545 +[10052.925021] bdbm: 37539 37972 37726 37666 37719 37412 37500 37634 +[10052.925022] bdbm: 37531 37743 38048 37659 37813 37671 38080 37453 +[10052.925023] bdbm: 37756 37624 37867 37668 37836 37764 37816 37836 +[10052.925024] bdbm: 37770 37999 37846 38054 37787 37692 37833 37712 +[10052.925025] bdbm: 37768 37747 37805 37773 37842 38120 37653 37696 +[10052.925026] bdbm: 37463 37403 37936 37315 37406 37486 37719 37569 +[10052.925028] bdbm: 37448 37854 37705 37679 37768 37983 38224 37846 +[10052.925029] bdbm: 37893 37796 37870 37736 37970 37709 37578 37702 +[10052.925030] bdbm: 37917 37583 37740 37706 37804 37900 37852 37857 +[10052.925031] bdbm: 37852 38000 37792 38180 37988 37404 37766 37362 +[10052.925032] bdbm: 38060 38017 37676 37926 37541 38162 38280 38102 +[10052.925033] bdbm: 37948 37496 37738 37752 37583 37703 37658 37762 +[10052.925034] bdbm: 37641 37808 37645 37650 37507 37632 37830 37495 +[10052.925036] bdbm: 37872 37744 37925 38010 37576 38138 37703 37854 +[10052.925037] bdbm: 37824 37575 37664 38077 37712 37681 37893 37814 +[10052.925037] bdbm: +[10052.925038] bdbm: [7] Utilization (W) +[10052.925039] bdbm: 17079 17117 17130 17150 17159 17168 17171 17173 +[10052.925040] bdbm: 17172 17172 17175 17175 17177 17173 17177 17177 +[10052.925041] bdbm: 17173 17169 17169 17166 17166 17162 17160 17154 +[10052.925042] bdbm: 17151 17148 17147 17144 17143 17142 17141 17141 +[10052.925043] bdbm: 17141 17139 17135 17131 17129 17125 17121 17120 +[10052.925045] bdbm: 17120 17116 17113 17110 17106 17104 17104 17100 +[10052.925046] bdbm: 17098 17097 17096 17096 17095 17093 17091 17090 +[10052.925047] bdbm: 17088 17083 17079 17075 17074 17073 17071 17069 +[10052.925048] bdbm: 17069 17067 17066 17062 17060 17057 17055 17053 +[10052.925049] bdbm: 17050 17049 17045 17045 17042 17042 17040 17038 +[10052.925050] bdbm: 17038 17036 17033 17032 17029 17029 17025 17022 +[10052.925051] bdbm: 17021 17017 17015 17014 17009 17008 17005 17005 +[10052.925053] bdbm: 17005 17002 17000 16997 16994 16992 16990 16988 +[10052.925054] bdbm: 16987 16985 16983 16980 16980 16978 16977 16975 +[10052.925055] bdbm: 16973 16973 16970 16969 16969 16968 16967 16965 +[10052.925056] bdbm: 16964 16960 16958 16955 16950 16947 16946 16945 +[10052.925056] bdbm: [8] NVM I/Os +[10052.925057] bdbm: #_of_nvm_total_accesses: 13570331 +[10052.925058] bdbm: #_of_nvm_total_write_requests: 9243224 +[10052.925058] bdbm: #_of_nvm_total_read_requests: 4327107 +[10052.925058] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9243224 +[10052.925059] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1677981 +[10052.925059] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[10052.925060] bdbm: #_of_nvm_evict_from_nvm: 6430252 +[10052.925061] bdbm: #_of_nvm_write_amplification: 6430252 : 8614925 +[10052.925061] bdbm: +[10052.925061] bdbm: ----------------------------------------------- +[10052.925062] bdbm: ----------------------------------------------- +[10053.074978] bdbm: done +[10053.074980] bdbm: [dm_ramdrive_close] closed! +[10053.463327] bdbm: [bdbm_drv_main] bdbm_drv is closed +[10053.463329] bdbm: [bdbm_drv_main] bdbm_drv is removed +[10053.497038] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[10053.517914] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[10053.523433] bdbm: ===================================================================== +[10053.523435] bdbm: DEVICE PARAMETERS +[10053.523435] bdbm: ===================================================================== +[10053.523436] bdbm: # of channels = 8 +[10053.523437] bdbm: # of chips per channel = 16 +[10053.523438] bdbm: # of blocks per chip = 256 +[10053.523438] bdbm: # of pages per block = 128 +[10053.523439] bdbm: # of subpages per page = 1 +[10053.523440] bdbm: page main size = 4096 bytes +[10053.523441] bdbm: page oob size = 64 bytes +[10053.523441] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[10053.523442] bdbm: +[10053.523443] bdbm: ===================================================================== +[10053.523444] bdbm: RAM DISK INFO +[10053.523444] bdbm: ===================================================================== +[10053.523445] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[10055.050127] bdbm: ramssd addr = ffffc90050001000 +[10055.050129] bdbm: +[10055.050130] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[10056.571944] bdbm: *** building ptr_ramssd_data done +[10056.572177] bdbm: [dm_ramdrive_probe] probe done! +[10056.572179] bdbm: [dm_ramdrive_open] open done! +[10056.621837] bdbm: nvm cache addr = ffffc90870003000 +[10056.627529] bdbm: ========================================================== +[10056.627530] bdbm: NVM CONFIGURATION +[10056.627531] bdbm: ========================================================== +[10056.627532] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[10056.821116] bdbm: TRIM is disabled +[10056.821276] bdbm: ===================================================================== +[10056.821279] bdbm: DEVICE PARAMETERS +[10056.821280] bdbm: ===================================================================== +[10056.821280] bdbm: # of channels = 8 +[10056.821281] bdbm: # of chips per channel = 16 +[10056.821281] bdbm: # of blocks per chip = 256 +[10056.821282] bdbm: # of pages per block = 128 +[10056.821282] bdbm: # of subpages per page = 1 +[10056.821283] bdbm: page main size = 4096 bytes +[10056.821283] bdbm: page oob size = 64 bytes +[10056.821285] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[10056.821285] bdbm: +[10056.821286] bdbm: ===================================================================== +[10056.821286] bdbm: FTL CONFIGURATION +[10056.821287] bdbm: ===================================================================== +[10056.821288] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[10056.821288] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[10056.821289] bdbm: wl policy = 1 (1: none, 2: swap) +[10056.821289] bdbm: trim mode = 2 (1: enable, 2: disable) +[10056.821291] bdbm: kernel sector = 512 bytes +[10056.821291] bdbm: +[10056.821292] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[10056.841049] bdbm: llm_make_req: 0, 1 +[10056.968725] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[10056.968727] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[10058.633558] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 +[10097.742278] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 0, evict = 35134 +[10097.839738] bdbm: llm_make_req: 50000, 93 +[10098.149346] bdbm: llm_make_req: 100000, 64 +[10098.360660] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 0, evict = 135134 +[10098.458897] bdbm: llm_make_req: 150000, 89 +[10098.763950] bdbm: llm_make_req: 200000, 93 +[10098.985134] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 0, evict = 235134 +[10099.074726] bdbm: llm_make_req: 250000, 95 +[10099.386019] bdbm: llm_make_req: 300000, 74 +[10099.607662] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 0, evict = 335134 +[10099.697370] bdbm: llm_make_req: 350000, 92 +[10100.003466] bdbm: llm_make_req: 400000, 94 +[10100.218171] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 0, evict = 435134 +[10100.306267] bdbm: llm_make_req: 450000, 64 +[10100.613911] bdbm: llm_make_req: 500000, 94 +[10100.826853] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 0, evict = 535134 +[10100.920671] bdbm: llm_make_req: 550000, 79 +[10101.230510] bdbm: llm_make_req: 600000, 69 +[10101.459088] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 0, evict = 635134 +[10101.554530] bdbm: llm_make_req: 650000, 42 +[10101.858252] bdbm: llm_make_req: 700000, 94 +[10102.071835] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 0, evict = 735134 +[10102.169846] bdbm: llm_make_req: 750000, 95 +[10102.470681] bdbm: llm_make_req: 800000, 93 +[10102.677410] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 0, evict = 835134 +[10102.772868] bdbm: llm_make_req: 850000, 64 +[10103.075820] bdbm: llm_make_req: 900000, 91 +[10103.295126] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 0, evict = 935134 +[10103.388093] bdbm: llm_make_req: 950000, 95 +[10103.693004] bdbm: llm_make_req: 1000000, 94 +[10103.907798] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 0, evict = 1035134 +[10103.995410] bdbm: llm_make_req: 1050000, 75 +[10104.302821] bdbm: llm_make_req: 1100000, 92 +[10104.526966] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 0, evict = 1135134 +[10104.621551] bdbm: llm_make_req: 1150000, 94 +[10104.941252] bdbm: llm_make_req: 1200000, 64 +[10105.154985] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 0, evict = 1235134 +[10105.242696] bdbm: llm_make_req: 1250000, 95 +[10105.550748] bdbm: llm_make_req: 1300000, 96 +[10105.762884] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 0, evict = 1335134 +[10105.857028] bdbm: llm_make_req: 1350000, 72 +[10106.157508] bdbm: llm_make_req: 1400000, 94 +[10106.370799] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 0, evict = 1435134 +[10106.461634] bdbm: llm_make_req: 1450000, 96 +[10106.775520] bdbm: llm_make_req: 1500000, 40 +[10106.982267] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 0, evict = 1535134 +[10107.074925] bdbm: llm_make_req: 1550000, 94 +[10107.369788] bdbm: llm_make_req: 1600000, 92 +[10107.580825] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 0, evict = 1635134 +[10107.667268] bdbm: llm_make_req: 1650000, 72 +[10107.961064] bdbm: llm_make_req: 1700000, 87 +[10108.166734] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 0, evict = 1735134 +[10108.252964] bdbm: llm_make_req: 1750000, 92 +[10108.546254] bdbm: llm_make_req: 1800000, 95 +[10108.753283] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 0, evict = 1835134 +[10108.837616] bdbm: llm_make_req: 1850000, 82 +[10109.131029] bdbm: llm_make_req: 1900000, 94 +[10109.344901] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 0, evict = 1935134 +[10109.433277] bdbm: llm_make_req: 1950000, 95 +[10109.724690] bdbm: llm_make_req: 2000000, 91 +[10109.925538] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 0, evict = 2035134 +[10110.008767] bdbm: llm_make_req: 2050000, 92 +[10110.290370] bdbm: llm_make_req: 2100000, 94 +[10110.490047] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 0, evict = 2135134 +[10110.572512] bdbm: llm_make_req: 2150000, 92 +[10110.860858] bdbm: llm_make_req: 2200000, 93 +[10111.052327] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 0, evict = 2235134 +[10111.141620] bdbm: llm_make_req: 2250000, 96 +[10111.423681] bdbm: llm_make_req: 2300000, 83 +[10111.622604] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 0, evict = 2335134 +[10111.704564] bdbm: llm_make_req: 2350000, 94 +[10111.986641] bdbm: llm_make_req: 2400000, 93 +[10112.195368] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 0, evict = 2435134 +[10112.278185] bdbm: llm_make_req: 2450000, 68 +[10112.560644] bdbm: llm_make_req: 2500000, 93 +[10112.761860] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 0, evict = 2535134 +[10112.844274] bdbm: llm_make_req: 2550000, 96 +[10113.882247] bdbm: llm_make_req: 2600000, 93 +[10114.033512] bdbm: nvm: total access = 2800000, total read = 20852, read hit = 980, total_write = 2779147, write hit = 2779147, hit = 0, evict = 2612976 +[10114.116708] bdbm: llm_make_req: 2650000, 64 +[10114.354165] bdbm: llm_make_req: 2700000, 80 +[10114.453164] bdbm: nvm: total access = 2900000, total read = 61084, read hit = 6097, total_write = 2838915, write hit = 2838915, hit = 0, evict = 2665197 +[10114.605039] bdbm: llm_make_req: 2750000, 93 +[10114.847970] bdbm: nvm: total access = 3000000, total read = 101360, read hit = 14642, total_write = 2898639, write hit = 2898639, hit = 0, evict = 2711856 +[10114.854757] bdbm: llm_make_req: 2800000, 90 +[10115.121404] bdbm: llm_make_req: 2850000, 78 +[10115.246142] bdbm: nvm: total access = 3100000, total read = 141632, read hit = 24643, total_write = 2958367, write hit = 2958367, hit = 0, evict = 2756762 +[10115.381947] bdbm: llm_make_req: 2900000, 66 +[10115.648962] bdbm: nvm: total access = 3200000, total read = 181722, read hit = 34307, total_write = 3018277, write hit = 3018277, hit = 0, evict = 2802301 +[10115.650532] bdbm: llm_make_req: 2950000, 71 +[10115.910825] bdbm: llm_make_req: 3000000, 73 +[10116.050156] bdbm: nvm: total access = 3300000, total read = 221852, read hit = 43714, total_write = 3078147, write hit = 3078147, hit = 0, evict = 2848564 +[10116.173671] bdbm: llm_make_req: 3050000, 75 +[10116.444459] bdbm: llm_make_req: 3100000, 75 +[10116.459410] bdbm: nvm: total access = 3400000, total read = 261875, read hit = 52968, total_write = 3138124, write hit = 3138124, hit = 0, evict = 2894264 +[10116.701307] bdbm: llm_make_req: 3150000, 77 +[10116.864466] bdbm: nvm: total access = 3500000, total read = 301523, read hit = 62410, total_write = 3198476, write hit = 3198476, hit = 0, evict = 2940547 +[10116.974345] bdbm: llm_make_req: 3200000, 85 +[10117.233355] bdbm: llm_make_req: 3250000, 71 +[10117.261501] bdbm: nvm: total access = 3600000, total read = 342017, read hit = 72057, total_write = 3257982, write hit = 3257982, hit = 0, evict = 2985825 +[10117.500395] bdbm: llm_make_req: 3300000, 72 +[10117.668701] bdbm: nvm: total access = 3700000, total read = 381969, read hit = 81459, total_write = 3318030, write hit = 3318030, hit = 0, evict = 3031747 +[10117.765067] bdbm: llm_make_req: 3350000, 79 +[10118.035347] bdbm: llm_make_req: 3400000, 58 +[10118.077040] bdbm: nvm: total access = 3800000, total read = 422308, read hit = 91062, total_write = 3377691, write hit = 3377691, hit = 0, evict = 3077379 +[10118.293076] bdbm: llm_make_req: 3450000, 71 +[10118.481818] bdbm: nvm: total access = 3900000, total read = 461832, read hit = 100355, total_write = 3438167, write hit = 3438167, hit = 0, evict = 3123705 +[10118.555401] bdbm: llm_make_req: 3500000, 79 +[10118.820901] bdbm: llm_make_req: 3550000, 88 +[10118.879089] bdbm: nvm: total access = 4000000, total read = 501816, read hit = 109732, total_write = 3498183, write hit = 3498183, hit = 0, evict = 3169800 +[10119.081803] bdbm: llm_make_req: 3600000, 92 +[10119.286756] bdbm: nvm: total access = 4100000, total read = 541160, read hit = 119019, total_write = 3558839, write hit = 3558839, hit = 0, evict = 3216053 +[10119.353261] bdbm: llm_make_req: 3650000, 65 +[10119.614230] bdbm: llm_make_req: 3700000, 75 +[10119.692613] bdbm: nvm: total access = 4200000, total read = 580843, read hit = 128345, total_write = 3619156, write hit = 3619156, hit = 0, evict = 3262174 +[10119.880268] bdbm: llm_make_req: 3750000, 67 +[10120.097396] bdbm: nvm: total access = 4300000, total read = 620897, read hit = 137854, total_write = 3679102, write hit = 3679102, hit = 0, evict = 3307701 +[10120.143181] bdbm: llm_make_req: 3800000, 96 +[10120.404013] bdbm: llm_make_req: 3850000, 89 +[10120.493558] bdbm: nvm: total access = 4400000, total read = 661781, read hit = 147485, total_write = 3738218, write hit = 3738218, hit = 0, evict = 3352809 +[10120.670011] bdbm: llm_make_req: 3900000, 84 +[10120.900177] bdbm: nvm: total access = 4500000, total read = 701797, read hit = 156967, total_write = 3798202, write hit = 3798202, hit = 0, evict = 3398734 +[10120.932234] bdbm: llm_make_req: 3950000, 81 +[10121.196301] bdbm: llm_make_req: 4000000, 85 +[10121.300309] bdbm: nvm: total access = 4600000, total read = 741960, read hit = 166224, total_write = 3858039, write hit = 3858039, hit = 0, evict = 3444246 +[10121.454054] bdbm: llm_make_req: 4050000, 90 +[10121.707306] bdbm: nvm: total access = 4700000, total read = 781432, read hit = 175479, total_write = 3918567, write hit = 3918567, hit = 0, evict = 3490484 +[10121.724603] bdbm: llm_make_req: 4100000, 79 +[10121.984056] bdbm: llm_make_req: 4150000, 62 +[10122.104574] bdbm: nvm: total access = 4800000, total read = 821740, read hit = 184860, total_write = 3978259, write hit = 3978259, hit = 0, evict = 3536082 +[10122.252707] bdbm: llm_make_req: 4200000, 69 +[10122.511957] bdbm: nvm: total access = 4900000, total read = 861583, read hit = 194316, total_write = 4038416, write hit = 4038416, hit = 0, evict = 3582022 +[10122.515691] bdbm: llm_make_req: 4250000, 66 +[10122.773511] bdbm: llm_make_req: 4300000, 65 +[10122.916144] bdbm: nvm: total access = 5000000, total read = 901673, read hit = 203784, total_write = 4098326, write hit = 4098326, hit = 0, evict = 3627924 +[10123.042747] bdbm: llm_make_req: 4350000, 83 +[10123.305845] bdbm: llm_make_req: 4400000, 83 +[10123.316875] bdbm: nvm: total access = 5100000, total read = 941633, read hit = 213302, total_write = 4158366, write hit = 4158366, hit = 0, evict = 3673890 +[10123.574739] bdbm: llm_make_req: 4450000, 64 +[10123.725698] bdbm: nvm: total access = 5200000, total read = 981544, read hit = 222724, total_write = 4218455, write hit = 4218455, hit = 0, evict = 3720070 +[10123.838215] bdbm: llm_make_req: 4500000, 72 +[10124.107465] bdbm: llm_make_req: 4550000, 74 +[10124.132107] bdbm: nvm: total access = 5300000, total read = 1021662, read hit = 232136, total_write = 4278337, write hit = 4278337, hit = 0, evict = 3765460 +[10124.368634] bdbm: llm_make_req: 4600000, 71 +[10124.537274] bdbm: nvm: total access = 5400000, total read = 1062168, read hit = 241822, total_write = 4337831, write hit = 4337831, hit = 0, evict = 3810885 +[10124.637420] bdbm: llm_make_req: 4650000, 47 +[10124.897389] bdbm: llm_make_req: 4700000, 78 +[10124.936491] bdbm: nvm: total access = 5500000, total read = 1102116, read hit = 251098, total_write = 4397883, write hit = 4397883, hit = 0, evict = 3856566 +[10125.164114] bdbm: llm_make_req: 4750000, 74 +[10125.345011] bdbm: nvm: total access = 5600000, total read = 1142285, read hit = 260659, total_write = 4457714, write hit = 4457714, hit = 0, evict = 3902228 +[10125.443070] bdbm: llm_make_req: 4800000, 59 +[10125.704261] bdbm: llm_make_req: 4850000, 87 +[10125.768866] bdbm: nvm: total access = 5700000, total read = 1182479, read hit = 270241, total_write = 4517520, write hit = 4517520, hit = 0, evict = 3948237 +[10125.993477] bdbm: llm_make_req: 4900000, 71 +[10126.195308] bdbm: nvm: total access = 5800000, total read = 1222195, read hit = 279724, total_write = 4577804, write hit = 4577804, hit = 0, evict = 3994339 +[10126.268085] bdbm: llm_make_req: 4950000, 89 +[10126.547769] bdbm: llm_make_req: 5000000, 69 +[10126.618768] bdbm: nvm: total access = 5900000, total read = 1262070, read hit = 289143, total_write = 4637929, write hit = 4637929, hit = 0, evict = 4040029 +[10126.844694] bdbm: llm_make_req: 5050000, 92 +[10127.776225] bdbm: nvm: total access = 6000000, total read = 1302300, read hit = 298664, total_write = 4697699, write hit = 4697699, hit = 0, evict = 4085428 +[10127.829907] bdbm: llm_make_req: 5100000, 91 +[10128.816753] bdbm: llm_make_req: 5150000, 77 +[10129.315399] bdbm: nvm: total access = 6100000, total read = 1342303, read hit = 308170, total_write = 4757696, write hit = 4757696, hit = 0, evict = 4131247 +[10130.036891] bdbm: llm_make_req: 5200000, 75 +[10131.415093] bdbm: llm_make_req: 5250000, 96 +[10133.858197] bdbm: nvm: total access = 6200000, total read = 1382372, read hit = 317459, total_write = 4817627, write hit = 4817627, hit = 0, evict = 4176717 +[10133.890876] bdbm: llm_make_req: 5300000, 83 +[10135.989752] bdbm: llm_make_req: 5350000, 96 +[10137.837796] bdbm: llm_make_req: 5400000, 96 +[10139.919701] bdbm: nvm: total access = 6300000, total read = 1422455, read hit = 326725, total_write = 4877544, write hit = 4877544, hit = 0, evict = 4222544 +[10139.952873] bdbm: llm_make_req: 5450000, 70 +[10141.973677] bdbm: llm_make_req: 5500000, 96 +[10143.907210] bdbm: llm_make_req: 5550000, 96 +[10144.840093] bdbm: nvm: total access = 6400000, total read = 1463214, read hit = 336064, total_write = 4936785, write hit = 4936785, hit = 0, evict = 4267763 +[10146.017627] bdbm: llm_make_req: 5600000, 93 +[10148.250434] bdbm: llm_make_req: 5650000, 96 +[10150.323360] bdbm: llm_make_req: 5700000, 96 +[10152.672962] bdbm: nvm: total access = 6500000, total read = 1503142, read hit = 345474, total_write = 4996857, write hit = 4996857, hit = 0, evict = 4313554 +[10152.685627] bdbm: llm_make_req: 5750000, 56 +[10154.863131] bdbm: llm_make_req: 5800000, 96 +[10156.749660] bdbm: llm_make_req: 5850000, 96 +[10159.202716] bdbm: llm_make_req: 5900000, 72 +[10159.238235] bdbm: nvm: total access = 6600000, total read = 1543262, read hit = 354823, total_write = 5056737, write hit = 5056737, hit = 0, evict = 4359584 +[10161.404734] bdbm: llm_make_req: 5950000, 96 +[10163.184920] bdbm: llm_make_req: 6000000, 96 +[10165.528943] bdbm: llm_make_req: 6050000, 66 +[10166.837141] bdbm: nvm: total access = 6700000, total read = 1583196, read hit = 364170, total_write = 5116803, write hit = 5116803, hit = 0, evict = 4405723 +[10167.895511] bdbm: llm_make_req: 6100000, 96 +[10169.795555] bdbm: llm_make_req: 6150000, 96 +[10172.465271] bdbm: llm_make_req: 6200000, 64 +[10175.031326] bdbm: llm_make_req: 6250000, 85 +[10175.491571] bdbm: nvm: total access = 6800000, total read = 1622624, read hit = 373523, total_write = 5177375, write hit = 5177375, hit = 0, evict = 4452446 +[10176.955388] bdbm: llm_make_req: 6300000, 43 +[10179.350065] bdbm: llm_make_req: 6350000, 96 +[10181.917839] bdbm: llm_make_req: 6400000, 96 +[10184.174771] bdbm: llm_make_req: 6450000, 96 +[10185.743435] bdbm: nvm: total access = 6900000, total read = 1662463, read hit = 382862, total_write = 5237536, write hit = 5237536, hit = 0, evict = 4498563 +[10186.937625] bdbm: llm_make_req: 6500000, 96 +[10189.192334] bdbm: llm_make_req: 6550000, 96 +[10191.836825] bdbm: llm_make_req: 6600000, 82 +[10194.456598] bdbm: llm_make_req: 6650000, 96 +[10196.457475] bdbm: llm_make_req: 6700000, 73 +[10196.464384] bdbm: nvm: total access = 7000000, total read = 1702802, read hit = 392418, total_write = 5297197, write hit = 5297197, hit = 0, evict = 4543998 +[10199.251237] bdbm: llm_make_req: 6750000, 96 +[10201.758105] bdbm: llm_make_req: 6800000, 96 +[10204.494238] bdbm: llm_make_req: 6850000, 71 +[10207.349640] bdbm: llm_make_req: 6900000, 96 +[10209.590017] bdbm: llm_make_req: 6950000, 75 +[10211.253605] bdbm: nvm: total access = 7100000, total read = 1742798, read hit = 401930, total_write = 5357201, write hit = 5357201, hit = 0, evict = 4589880 +[10212.468382] bdbm: llm_make_req: 7000000, 96 +[10215.034297] bdbm: llm_make_req: 7050000, 96 +[10217.717628] bdbm: llm_make_req: 7100000, 78 +[10220.625212] bdbm: llm_make_req: 7150000, 96 +[10222.855369] bdbm: llm_make_req: 7200000, 67 +[10225.953834] bdbm: llm_make_req: 7250000, 96 +[10228.117070] bdbm: nvm: total access = 7200000, total read = 1782653, read hit = 411483, total_write = 5417346, write hit = 5417346, hit = 0, evict = 4635860 +[10228.555400] bdbm: llm_make_req: 7300000, 96 +[10231.109072] bdbm: llm_make_req: 7350000, 96 +[10234.247332] bdbm: llm_make_req: 7400000, 96 +[10236.558064] bdbm: llm_make_req: 7450000, 90 +[10239.601014] bdbm: llm_make_req: 7500000, 96 +[10242.019378] bdbm: llm_make_req: 7550000, 96 +[10244.877752] bdbm: llm_make_req: 7600000, 96 +[10247.807648] bdbm: llm_make_req: 7650000, 96 +[10248.724787] bdbm: nvm: total access = 7300000, total read = 1822298, read hit = 420826, total_write = 5477701, write hit = 5477701, hit = 0, evict = 4682356 +[10250.465752] bdbm: llm_make_req: 7700000, 67 +[10253.575386] bdbm: llm_make_req: 7750000, 96 +[10255.769546] bdbm: llm_make_req: 7800000, 60 +[10258.829583] bdbm: llm_make_req: 7850000, 96 +[10261.503669] bdbm: llm_make_req: 7900000, 96 +[10264.128894] bdbm: llm_make_req: 7950000, 96 +[10267.283118] bdbm: llm_make_req: 8000000, 96 +[10269.807681] bdbm: llm_make_req: 8050000, 71 +[10269.815868] bdbm: nvm: total access = 7400000, total read = 1862172, read hit = 430148, total_write = 5537827, write hit = 5537827, hit = 0, evict = 4728109 +[10272.907737] bdbm: llm_make_req: 8100000, 95 +[10275.245733] bdbm: llm_make_req: 8150000, 96 +[10278.198946] bdbm: llm_make_req: 8200000, 96 +[10281.013497] bdbm: llm_make_req: 8250000, 96 +[10283.501295] bdbm: llm_make_req: 8300000, 96 +[10286.832822] bdbm: llm_make_req: 8350000, 96 +[10289.245727] bdbm: llm_make_req: 8400000, 85 +[10291.047811] bdbm: nvm: total access = 7500000, total read = 1902445, read hit = 439667, total_write = 5597554, write hit = 5597554, hit = 0, evict = 4773706 +[10292.353185] bdbm: llm_make_req: 8450000, 96 +[10294.795061] bdbm: llm_make_req: 8500000, 96 +[10297.697433] bdbm: llm_make_req: 8550000, 96 +[10300.729671] bdbm: llm_make_req: 8600000, 96 +[10303.415158] bdbm: llm_make_req: 8650000, 74 +[10306.467071] bdbm: llm_make_req: 8700000, 96 +[10308.645660] bdbm: llm_make_req: 8750000, 47 +[10311.717344] bdbm: llm_make_req: 8800000, 95 +[10313.897350] bdbm: nvm: total access = 7600000, total read = 1942378, read hit = 449255, total_write = 5657621, write hit = 5657621, hit = 0, evict = 4819532 +[10314.402714] bdbm: llm_make_req: 8850000, 96 +[10317.046148] bdbm: llm_make_req: 8900000, 96 +[10320.222331] bdbm: llm_make_req: 8950000, 96 +[10322.788854] bdbm: llm_make_req: 9000000, 57 +[10325.867988] bdbm: llm_make_req: 9050000, 96 +[10328.180090] bdbm: llm_make_req: 9100000, 96 +[10331.152324] bdbm: llm_make_req: 9150000, 96 +[10333.956546] bdbm: llm_make_req: 9200000, 96 +[10335.030936] bdbm: nvm: total access = 7700000, total read = 1982635, read hit = 458697, total_write = 5717364, write hit = 5717364, hit = 0, evict = 4864974 +[10336.459894] bdbm: llm_make_req: 9250000, 95 +[10339.813515] bdbm: llm_make_req: 9300000, 96 +[10342.052332] bdbm: llm_make_req: 9350000, 82 +[10344.970559] bdbm: llm_make_req: 9400000, 96 +[10347.505304] bdbm: llm_make_req: 9450000, 96 +[10350.386810] bdbm: llm_make_req: 9500000, 63 +[10352.025164] bdbm: nvm: total access = 7800000, total read = 2023314, read hit = 468469, total_write = 5776685, write hit = 5776685, hit = 0, evict = 4910265 +[10353.140284] bdbm: llm_make_req: 9550000, 96 +[10355.158039] bdbm: llm_make_req: 9600000, 73 +[10357.903465] bdbm: llm_make_req: 9650000, 96 +[10360.526180] bdbm: llm_make_req: 9700000, 96 +[10362.952784] bdbm: llm_make_req: 9750000, 77 +[10364.544699] bdbm: nvm: total access = 7900000, total read = 2063359, read hit = 477864, total_write = 5836640, write hit = 5836640, hit = 0, evict = 4956327 +[10365.714433] bdbm: llm_make_req: 9800000, 96 +[10367.743473] bdbm: llm_make_req: 9850000, 96 +[10370.564627] bdbm: llm_make_req: 9900000, 86 +[10373.012980] bdbm: llm_make_req: 9950000, 96 +[10374.947688] bdbm: nvm: total access = 8000000, total read = 2103219, read hit = 487204, total_write = 5896780, write hit = 5896780, hit = 0, evict = 5002552 +[10374.971457] bdbm: llm_make_req: 10000000, 78 +[10377.669068] bdbm: llm_make_req: 10050000, 24 +[10379.832319] bdbm: llm_make_req: 10100000, 96 +[10381.728398] bdbm: llm_make_req: 10150000, 73 +[10383.048991] bdbm: nvm: total access = 8100000, total read = 2143281, read hit = 496830, total_write = 5956718, write hit = 5956718, hit = 0, evict = 5048623 +[10384.219746] bdbm: llm_make_req: 10200000, 64 +[10386.197334] bdbm: llm_make_req: 10250000, 95 +[10387.802454] bdbm: llm_make_req: 10300000, 82 +[10388.851009] bdbm: nvm: total access = 8200000, total read = 2182934, read hit = 505861, total_write = 6017065, write hit = 6017065, hit = 0, evict = 5094867 +[10389.952876] bdbm: llm_make_req: 10350000, 75 +[10391.684538] bdbm: llm_make_req: 10400000, 95 +[10393.150721] bdbm: nvm: total access = 8300000, total read = 2222359, read hit = 515158, total_write = 6077640, write hit = 6077640, hit = 0, evict = 5141353 +[10393.350617] bdbm: llm_make_req: 10450000, 96 +[10395.048013] bdbm: llm_make_req: 10500000, 83 +[10396.918690] bdbm: llm_make_req: 10550000, 82 +[10396.970765] bdbm: nvm: total access = 8400000, total read = 2262359, read hit = 524479, total_write = 6137640, write hit = 6137640, hit = 0, evict = 5187557 +[10398.410642] bdbm: llm_make_req: 10600000, 96 +[10399.794147] bdbm: llm_make_req: 10650000, 81 +[10400.639570] bdbm: nvm: total access = 8500000, total read = 2302432, read hit = 533896, total_write = 6197567, write hit = 6197567, hit = 0, evict = 5233525 +[10401.539611] bdbm: llm_make_req: 10700000, 75 +[10403.284658] bdbm: llm_make_req: 10750000, 82 +[10404.195377] bdbm: nvm: total access = 8600000, total read = 2341814, read hit = 543254, total_write = 6258185, write hit = 6258185, hit = 0, evict = 5279947 +[10404.712764] bdbm: llm_make_req: 10800000, 95 +[10406.102959] bdbm: llm_make_req: 10850000, 84 +[10407.823785] bdbm: nvm: total access = 8700000, total read = 2381725, read hit = 552829, total_write = 6318274, write hit = 6318274, hit = 0, evict = 5326037 +[10407.881677] bdbm: llm_make_req: 10900000, 76 +[10409.637048] bdbm: llm_make_req: 10950000, 76 +[10410.605354] bdbm: nvm: total access = 8800000, total read = 2422266, read hit = 562330, total_write = 6377733, write hit = 6377733, hit = 0, evict = 5371349 +[10411.088245] bdbm: llm_make_req: 11000000, 96 +[10412.481831] bdbm: llm_make_req: 11050000, 58 +[10414.216007] bdbm: llm_make_req: 11100000, 71 +[10414.218831] bdbm: nvm: total access = 8900000, total read = 2462721, read hit = 571703, total_write = 6437278, write hit = 6437278, hit = 0, evict = 5416925 +[10415.975360] bdbm: llm_make_req: 11150000, 94 +[10417.263488] bdbm: llm_make_req: 11200000, 96 +[10417.822478] bdbm: nvm: total access = 9000000, total read = 2502426, read hit = 581260, total_write = 6497573, write hit = 6497573, hit = 0, evict = 5462955 +[10418.802049] bdbm: llm_make_req: 11250000, 80 +[10420.550882] bdbm: llm_make_req: 11300000, 94 +[10420.622072] bdbm: nvm: total access = 9100000, total read = 2542173, read hit = 590759, total_write = 6557826, write hit = 6557826, hit = 0, evict = 5509177 +[10422.318471] bdbm: llm_make_req: 11350000, 79 +[10423.520971] bdbm: llm_make_req: 11400000, 96 +[10424.244799] bdbm: nvm: total access = 9200000, total read = 2582517, read hit = 600356, total_write = 6617482, write hit = 6617482, hit = 0, evict = 5554324 +[10425.143395] bdbm: llm_make_req: 11450000, 79 +[10426.934572] bdbm: llm_make_req: 11500000, 82 +[10427.843541] bdbm: nvm: total access = 9300000, total read = 2623730, read hit = 610073, total_write = 6676269, write hit = 6676269, hit = 0, evict = 5599358 +[10428.364400] bdbm: llm_make_req: 11550000, 95 +[10429.753798] bdbm: llm_make_req: 11600000, 74 +[10431.523644] bdbm: nvm: total access = 9400000, total read = 2663827, read hit = 619348, total_write = 6736172, write hit = 6736172, hit = 0, evict = 5645067 +[10431.559449] bdbm: llm_make_req: 11650000, 88 +[10433.352809] bdbm: llm_make_req: 11700000, 78 +[10434.355361] bdbm: nvm: total access = 9500000, total read = 2704280, read hit = 629044, total_write = 6795719, write hit = 6795719, hit = 0, evict = 5690438 +[10434.646658] bdbm: llm_make_req: 11750000, 96 +[10436.189224] bdbm: llm_make_req: 11800000, 78 +[10437.982704] bdbm: llm_make_req: 11850000, 94 +[10438.005447] bdbm: nvm: total access = 9600000, total read = 2743627, read hit = 638347, total_write = 6856372, write hit = 6856372, hit = 0, evict = 5736564 +[10439.789773] bdbm: llm_make_req: 11900000, 73 +[10441.013110] bdbm: llm_make_req: 11950000, 96 +[10441.670041] bdbm: nvm: total access = 9700000, total read = 2783354, read hit = 648039, total_write = 6916645, write hit = 6916645, hit = 0, evict = 5782668 +[10442.627788] bdbm: llm_make_req: 12000000, 84 +[10444.404311] bdbm: llm_make_req: 12050000, 87 +[10445.315187] bdbm: nvm: total access = 9800000, total read = 2823402, read hit = 657504, total_write = 6976597, write hit = 6976597, hit = 0, evict = 5828590 +[10445.870587] bdbm: llm_make_req: 12100000, 96 +[10447.278209] bdbm: llm_make_req: 12150000, 96 +[10448.201534] bdbm: nvm: total access = 9900000, total read = 2863513, read hit = 666959, total_write = 7036486, write hit = 7036486, hit = 0, evict = 5874590 +[10449.090667] bdbm: llm_make_req: 12200000, 78 +[10450.890224] bdbm: llm_make_req: 12250000, 77 +[10451.905058] bdbm: nvm: total access = 10000000, total read = 2903284, read hit = 676451, total_write = 7096715, write hit = 7096715, hit = 0, evict = 5920951 +[10452.376187] bdbm: llm_make_req: 12300000, 96 +[10453.792722] bdbm: llm_make_req: 12350000, 72 +[10455.684467] bdbm: llm_make_req: 12400000, 86 +[10455.704947] bdbm: nvm: total access = 10100000, total read = 2943356, read hit = 685839, total_write = 7156643, write hit = 7156643, hit = 0, evict = 5966775 +[10457.441915] bdbm: llm_make_req: 12450000, 96 +[10459.165515] bdbm: llm_make_req: 12500000, 96 +[10461.112296] bdbm: nvm: total access = 10200000, total read = 2984026, read hit = 695500, total_write = 7215973, write hit = 7215973, hit = 0, evict = 6012117 +[10461.177142] bdbm: llm_make_req: 12550000, 73 +[10463.356717] bdbm: llm_make_req: 12600000, 66 +[10465.017074] bdbm: llm_make_req: 12650000, 96 +[10465.636564] bdbm: nvm: total access = 10300000, total read = 3024122, read hit = 705186, total_write = 7275877, write hit = 7275877, hit = 0, evict = 6057947 +[10466.763821] bdbm: llm_make_req: 12700000, 61 +[10468.911383] bdbm: llm_make_req: 12750000, 64 +[10470.109261] bdbm: nvm: total access = 10400000, total read = 3063668, read hit = 714447, total_write = 7336331, write hit = 7336331, hit = 0, evict = 6104349 +[10470.785733] bdbm: llm_make_req: 12800000, 96 +[10472.405893] bdbm: llm_make_req: 12850000, 67 +[10474.772987] bdbm: llm_make_req: 12900000, 78 +[10476.076570] bdbm: nvm: total access = 10500000, total read = 3103826, read hit = 724054, total_write = 7396173, write hit = 7396173, hit = 0, evict = 6150254 +[10476.881649] bdbm: llm_make_req: 12950000, 96 +[10478.601053] bdbm: llm_make_req: 13000000, 78 +[10481.004952] bdbm: llm_make_req: 13050000, 71 +[10482.292122] bdbm: nvm: total access = 10600000, total read = 3143753, read hit = 733457, total_write = 7456246, write hit = 7456246, hit = 0, evict = 6196415 +[10483.103013] bdbm: llm_make_req: 13100000, 95 +[10484.822218] bdbm: llm_make_req: 13150000, 72 +[10487.251544] bdbm: llm_make_req: 13200000, 86 +[10488.558003] bdbm: nvm: total access = 10700000, total read = 3184160, read hit = 742847, total_write = 7515839, write hit = 7515839, hit = 0, evict = 6241811 +[10489.386544] bdbm: llm_make_req: 13250000, 96 +[10491.111023] bdbm: llm_make_req: 13300000, 77 +[10493.612487] bdbm: llm_make_req: 13350000, 74 +[10495.821406] bdbm: llm_make_req: 13400000, 96 +[10496.219742] bdbm: nvm: total access = 10800000, total read = 3224227, read hit = 752307, total_write = 7575772, write hit = 7575772, hit = 0, evict = 6287827 +[10497.593846] bdbm: llm_make_req: 13450000, 73 +[10500.141502] bdbm: llm_make_req: 13500000, 85 +[10502.460098] bdbm: llm_make_req: 13550000, 96 +[10502.960521] bdbm: nvm: total access = 10900000, total read = 3264454, read hit = 761615, total_write = 7635545, write hit = 7635545, hit = 0, evict = 6333474 +[10504.323216] bdbm: llm_make_req: 13600000, 70 +[10506.787418] bdbm: llm_make_req: 13650000, 71 +[10509.123498] bdbm: llm_make_req: 13700000, 96 +[10511.153057] bdbm: llm_make_req: 13750000, 84 +[10511.175779] bdbm: nvm: total access = 11000000, total read = 3304821, read hit = 771018, total_write = 7695178, write hit = 7695178, hit = 0, evict = 6378987 +[10513.503859] bdbm: llm_make_req: 13800000, 96 +[10515.716817] bdbm: llm_make_req: 13850000, 96 +[10518.148853] bdbm: llm_make_req: 13900000, 84 +[10519.617431] bdbm: nvm: total access = 11100000, total read = 3345759, read hit = 780636, total_write = 7754240, write hit = 7754240, hit = 0, evict = 6424380 +[10520.606111] bdbm: llm_make_req: 13950000, 95 +[10522.553397] bdbm: llm_make_req: 14000000, 96 +[10525.343046] bdbm: llm_make_req: 14050000, 53 +[10527.722307] bdbm: llm_make_req: 14100000, 96 +[10529.730104] bdbm: nvm: total access = 11200000, total read = 3386033, read hit = 790134, total_write = 7813966, write hit = 7813966, hit = 0, evict = 6469932 +[10529.735314] bdbm: llm_make_req: 14150000, 68 +[10532.243496] bdbm: llm_make_req: 14200000, 96 +[10534.677514] bdbm: llm_make_req: 14250000, 96 +[10537.145011] bdbm: llm_make_req: 14300000, 72 +[10539.761416] bdbm: llm_make_req: 14350000, 96 +[10540.201120] bdbm: nvm: total access = 11300000, total read = 3426319, read hit = 799533, total_write = 7873680, write hit = 7873680, hit = 0, evict = 6515589 +[10541.789627] bdbm: llm_make_req: 14400000, 96 +[10544.305559] bdbm: llm_make_req: 14450000, 96 +[10547.160622] bdbm: llm_make_req: 14500000, 96 +[10549.242932] bdbm: llm_make_req: 14550000, 93 +[10551.868796] bdbm: llm_make_req: 14600000, 96 +[10552.247190] bdbm: nvm: total access = 11400000, total read = 3465398, read hit = 808733, total_write = 7934601, write hit = 7934601, hit = 0, evict = 6562044 +[10554.309180] bdbm: llm_make_req: 14650000, 96 +[10556.907658] bdbm: llm_make_req: 14700000, 87 +[10559.587228] bdbm: llm_make_req: 14750000, 96 +[10561.750991] bdbm: llm_make_req: 14800000, 96 +[10564.329006] bdbm: llm_make_req: 14850000, 96 +[10564.689240] bdbm: nvm: total access = 11500000, total read = 3504824, read hit = 818159, total_write = 7995175, write hit = 7995175, hit = 0, evict = 6608399 +[10567.130454] bdbm: llm_make_req: 14900000, 96 +[10569.379090] bdbm: llm_make_req: 14950000, 49 +[10572.120170] bdbm: llm_make_req: 15000000, 96 +[10574.460948] bdbm: llm_make_req: 15050000, 96 +[10577.247238] bdbm: llm_make_req: 15100000, 72 +[10577.255397] bdbm: nvm: total access = 11600000, total read = 3544998, read hit = 827661, total_write = 8055001, write hit = 8055001, hit = 0, evict = 6654311 +[10579.867415] bdbm: llm_make_req: 15150000, 96 +[10581.974584] bdbm: llm_make_req: 15200000, 85 +[10584.674991] bdbm: llm_make_req: 15250000, 95 +[10587.138016] bdbm: llm_make_req: 15300000, 96 +[10589.831636] bdbm: llm_make_req: 15350000, 71 +[10589.839180] bdbm: nvm: total access = 11700000, total read = 3585505, read hit = 837060, total_write = 8114494, write hit = 8114494, hit = 0, evict = 6700110 +[10592.560321] bdbm: llm_make_req: 15400000, 94 +[10594.595344] bdbm: llm_make_req: 15450000, 77 +[10597.334459] bdbm: llm_make_req: 15500000, 96 +[10599.962331] bdbm: llm_make_req: 15550000, 96 +[10602.460889] bdbm: llm_make_req: 15600000, 77 +[10602.470625] bdbm: nvm: total access = 11800000, total read = 3625645, read hit = 846475, total_write = 8174354, write hit = 8174354, hit = 0, evict = 6746021 +[10605.156260] bdbm: llm_make_req: 15650000, 96 +[10607.231978] bdbm: llm_make_req: 15700000, 96 +[10609.904315] bdbm: llm_make_req: 15750000, 95 +[10612.656027] bdbm: llm_make_req: 15800000, 96 +[10614.989379] bdbm: llm_make_req: 15850000, 75 +[10614.996592] bdbm: nvm: total access = 11900000, total read = 3665069, read hit = 855906, total_write = 8234930, write hit = 8234930, hit = 0, evict = 6792069 +[10617.736929] bdbm: llm_make_req: 15900000, 95 +[10620.100247] bdbm: llm_make_req: 15950000, 96 +[10622.865741] bdbm: llm_make_req: 16000000, 75 +[10625.516261] bdbm: llm_make_req: 16050000, 96 +[10627.590646] bdbm: llm_make_req: 16100000, 88 +[10627.595320] bdbm: nvm: total access = 12000000, total read = 3705133, read hit = 865402, total_write = 8294866, write hit = 8294866, hit = 0, evict = 6837773 +[10630.297790] bdbm: llm_make_req: 16150000, 96 +[10632.806392] bdbm: llm_make_req: 16200000, 96 +[10635.381659] bdbm: llm_make_req: 16250000, 81 +[10638.149636] bdbm: llm_make_req: 16300000, 96 +[10640.112784] bdbm: nvm: total access = 12100000, total read = 3744843, read hit = 874618, total_write = 8355156, write hit = 8355156, hit = 0, evict = 6883859 +[10640.148551] bdbm: llm_make_req: 16350000, 96 +[10642.789171] bdbm: llm_make_req: 16400000, 96 +[10645.585604] bdbm: llm_make_req: 16450000, 96 +[10647.860862] bdbm: llm_make_req: 16500000, 78 +[10650.504902] bdbm: llm_make_req: 16550000, 96 +[10652.433050] bdbm: nvm: total access = 12200000, total read = 3784564, read hit = 884082, total_write = 8415435, write hit = 8415435, hit = 0, evict = 6929870 +[10652.818778] bdbm: llm_make_req: 16600000, 96 +[10655.494991] bdbm: llm_make_req: 16650000, 67 +[10658.144216] bdbm: llm_make_req: 16700000, 96 +[10660.121479] bdbm: llm_make_req: 16750000, 80 +[10662.786631] bdbm: llm_make_req: 16800000, 96 +[10664.663548] bdbm: nvm: total access = 12300000, total read = 3824898, read hit = 893542, total_write = 8475101, write hit = 8475101, hit = 0, evict = 6975450 +[10665.422136] bdbm: llm_make_req: 16850000, 96 +[10667.734857] bdbm: llm_make_req: 16900000, 81 +[10670.287057] bdbm: llm_make_req: 16950000, 96 +[10672.477574] bdbm: llm_make_req: 17000000, 96 +[10675.006007] bdbm: nvm: total access = 12400000, total read = 3864814, read hit = 902743, total_write = 8535185, write hit = 8535185, hit = 0, evict = 7021337 +[10675.014187] bdbm: llm_make_req: 17050000, 74 +[10677.508196] bdbm: llm_make_req: 17100000, 96 +[10679.405898] bdbm: llm_make_req: 17150000, 72 +[10682.204866] bdbm: llm_make_req: 17200000, 75 +[10683.653857] bdbm: nvm: total access = 12500000, total read = 3905121, read hit = 912398, total_write = 8594878, write hit = 8594878, hit = 0, evict = 7066832 +[10684.520696] bdbm: llm_make_req: 17250000, 96 +[10686.463855] bdbm: llm_make_req: 17300000, 71 +[10688.779575] bdbm: llm_make_req: 17350000, 96 +[10691.174019] bdbm: llm_make_req: 17400000, 96 +[10691.812979] bdbm: nvm: total access = 12600000, total read = 3945277, read hit = 921899, total_write = 8654722, write hit = 8654722, hit = 0, evict = 7112767 +[10693.153985] bdbm: llm_make_req: 17450000, 86 +[10695.334818] bdbm: llm_make_req: 17500000, 96 +[10697.553674] bdbm: llm_make_req: 17550000, 96 +[10698.321497] bdbm: nvm: total access = 12700000, total read = 3986038, read hit = 931488, total_write = 8713961, write hit = 8713961, hit = 0, evict = 7158265 +[10699.555406] bdbm: llm_make_req: 17600000, 82 +[10701.988858] bdbm: llm_make_req: 17650000, 96 +[10703.876744] bdbm: llm_make_req: 17700000, 96 +[10704.464994] bdbm: nvm: total access = 12800000, total read = 4025556, read hit = 940697, total_write = 8774443, write hit = 8774443, hit = 0, evict = 7204641 +[10705.630850] bdbm: llm_make_req: 17750000, 79 +[10707.910863] bdbm: llm_make_req: 17800000, 81 +[10709.789653] bdbm: llm_make_req: 17850000, 95 +[10710.231578] bdbm: nvm: total access = 12900000, total read = 4065034, read hit = 949970, total_write = 8834965, write hit = 8834965, hit = 0, evict = 7250920 +[10711.369779] bdbm: llm_make_req: 17900000, 78 +[10713.526492] bdbm: llm_make_req: 17950000, 76 +[10715.332455] bdbm: llm_make_req: 18000000, 94 +[10715.695530] bdbm: nvm: total access = 13000000, total read = 4105343, read hit = 959518, total_write = 8894656, write hit = 8894656, hit = 0, evict = 7296705 +[10717.031232] bdbm: llm_make_req: 18050000, 96 +[10718.998372] bdbm: llm_make_req: 18100000, 68 +[10720.063399] bdbm: nvm: total access = 13100000, total read = 4144983, read hit = 968567, total_write = 8955016, write hit = 8955016, hit = 0, evict = 7342699 +[10721.117258] bdbm: llm_make_req: 18150000, 95 +[10722.793457] bdbm: llm_make_req: 18200000, 96 +[10724.470816] bdbm: llm_make_req: 18250000, 65 +[10724.474467] bdbm: nvm: total access = 13200000, total read = 4185389, read hit = 977961, total_write = 9014610, write hit = 9014610, hit = 0, evict = 7388228 +[10726.545702] bdbm: llm_make_req: 18300000, 81 +[10728.280079] bdbm: llm_make_req: 18350000, 95 +[10729.774664] bdbm: nvm: total access = 13300000, total read = 4225320, read hit = 987391, total_write = 9074679, write hit = 9074679, hit = 0, evict = 7434204 +[10729.862736] bdbm: llm_make_req: 18400000, 70 +[10731.942894] bdbm: llm_make_req: 18450000, 81 +[10733.748351] bdbm: llm_make_req: 18500000, 96 +[10734.140529] bdbm: nvm: total access = 13400000, total read = 4265351, read hit = 997072, total_write = 9134648, write hit = 9134648, hit = 0, evict = 7480197 +[10735.577395] bdbm: llm_make_req: 18550000, 96 +[10737.451985] bdbm: llm_make_req: 18600000, 90 +[10738.569869] bdbm: nvm: total access = 13500000, total read = 4305276, read hit = 1006420, total_write = 9194723, write hit = 9194723, hit = 0, evict = 7525870 +[10739.600724] bdbm: llm_make_req: 18650000, 85 +[10741.381202] bdbm: llm_make_req: 18700000, 96 +[11767.280294] bdbm: ----------------------------------------------- +[11767.280296] bdbm: < PERFORMANCE SUMMARY > +[11767.280298] bdbm: [0] Execution Time (us): 1710.384665 +[11767.280298] bdbm: +[11767.280299] bdbm: [1] Total I/Os +[11767.280299] bdbm: # of page reads: 7212736 +[11767.280300] bdbm: # of page writes: 3892833 +[11767.280300] bdbm: # of block erase: 57728 +[11767.280301] bdbm: +[11767.280301] bdbm: [2] Normal I/Os +[11767.280301] bdbm: # of page reads: 3320350 +[11767.280303] bdbm: # of page writes: 0 +[11767.280303] bdbm: # of page rmw reads: 0 +[11767.280304] bdbm: # of page rmw writes: 0 +[11767.280304] bdbm: +[11767.280305] bdbm: [3] GC I/Os +[11767.280305] bdbm: # of GC invocation: 0 +[11767.280306] bdbm: # of page reads: 3892386 +[11767.280306] bdbm: # of page writes: 3892833 +[11767.280307] bdbm: # of block erase: 57728 +[11767.280307] bdbm: +[11767.280307] bdbm: [4] Meta I/Os +[11767.280309] bdbm: # of meta page reads: 0 +[11767.280309] bdbm: # of meta page writes: 0 +[11767.280310] bdbm: +[11767.280310] bdbm: [5] Elapsed Time +[11767.280311] bdbm: page read (us): 93 (S:0 + Q:0 + D:93) +[11767.280311] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[11767.280312] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[11767.280312] bdbm: +[11767.280313] bdbm: [6] Utilization (R) +[11767.280315] bdbm: 56453 56133 56239 56222 55878 56488 56316 56351 +[11767.280317] bdbm: 56381 56308 55870 56565 56482 56801 56512 56887 +[11767.280318] bdbm: 56526 56302 56384 56525 56675 56334 56635 56331 +[11767.280319] bdbm: 56591 56223 56511 56282 56361 56450 56544 56540 +[11767.280321] bdbm: 56308 56547 56969 56447 56219 56191 56080 56359 +[11767.280322] bdbm: 56200 56305 56510 56353 55908 56241 55997 56363 +[11767.280323] bdbm: 56157 56002 56324 56681 56537 56130 56210 56885 +[11767.280324] bdbm: 56762 56420 56298 56262 56399 56379 56409 56452 +[11767.280327] bdbm: 56130 56287 56203 56550 56200 56405 56393 56551 +[11767.280328] bdbm: 56006 56068 56403 56139 56038 56409 56157 56031 +[11767.280329] bdbm: 56151 56474 56127 56384 56147 56329 56285 56515 +[11767.280330] bdbm: 56800 56651 56296 56466 56389 56291 56559 56503 +[11767.280332] bdbm: 56176 56213 56341 56316 56606 56585 56320 56115 +[11767.280333] bdbm: 56441 56557 56334 56230 55821 56137 56454 56256 +[11767.280335] bdbm: 55877 56133 56499 56204 56267 56336 56305 55966 +[11767.280336] bdbm: 56363 56373 56328 56520 56579 56428 56668 56247 +[11767.280336] bdbm: +[11767.280337] bdbm: [7] Utilization (W) +[11767.280339] bdbm: 30438 30490 30524 30549 30564 30570 30572 30579 +[11767.280340] bdbm: 30581 30582 30584 30587 30590 30590 30590 30584 +[11767.280341] bdbm: 30582 30580 30573 30569 30566 30561 30559 30556 +[11767.280342] bdbm: 30551 30547 30544 30542 30536 30533 30528 30518 +[11767.280344] bdbm: 30515 30512 30510 30506 30503 30501 30500 30496 +[11767.280345] bdbm: 30492 30488 30488 30484 30480 30474 30471 30469 +[11767.280347] bdbm: 30467 30465 30463 30458 30457 30455 30452 30445 +[11767.280348] bdbm: 30441 30439 30434 30431 30429 30427 30423 30416 +[11767.280350] bdbm: 30414 30412 30412 30408 30405 30404 30399 30397 +[11767.280351] bdbm: 30394 30391 30389 30387 30383 30383 30378 30376 +[11767.280352] bdbm: 30369 30368 30367 30363 30362 30357 30356 30353 +[11767.280353] bdbm: 30347 30342 30339 30335 30331 30327 30323 30321 +[11767.280356] bdbm: 30316 30309 30306 30302 30298 30296 30294 30293 +[11767.280357] bdbm: 30287 30284 30278 30274 30268 30263 30262 30256 +[11767.280358] bdbm: 30251 30247 30243 30242 30238 30233 30231 30227 +[11767.280359] bdbm: 30220 30214 30210 30205 30201 30199 30195 30189 +[11767.280359] bdbm: [8] NVM I/Os +[11767.280360] bdbm: #_of_nvm_total_accesses: 13570935 +[11767.280361] bdbm: #_of_nvm_total_write_requests: 9237523 +[11767.280362] bdbm: #_of_nvm_total_read_requests: 4333412 +[11767.280362] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9237523 +[11767.280363] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1013034 +[11767.280363] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[11767.280364] bdbm: #_of_nvm_evict_from_nvm: 7558881 +[11767.280364] bdbm: #_of_nvm_write_amplification: 7558881 : 11451714 +[11767.280365] bdbm: +[11767.280365] bdbm: ----------------------------------------------- +[11767.280366] bdbm: ----------------------------------------------- +[11767.431023] bdbm: done +[11767.431026] bdbm: [dm_ramdrive_close] closed! +[11767.818667] bdbm: [bdbm_drv_main] bdbm_drv is closed +[11767.818670] bdbm: [bdbm_drv_main] bdbm_drv is removed +[11767.839659] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[11767.851527] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[11767.854826] bdbm: ===================================================================== +[11767.854827] bdbm: DEVICE PARAMETERS +[11767.854828] bdbm: ===================================================================== +[11767.854828] bdbm: # of channels = 8 +[11767.854829] bdbm: # of chips per channel = 16 +[11767.854829] bdbm: # of blocks per chip = 256 +[11767.854830] bdbm: # of pages per block = 128 +[11767.854830] bdbm: # of subpages per page = 1 +[11767.854831] bdbm: page main size = 4096 bytes +[11767.854831] bdbm: page oob size = 64 bytes +[11767.854832] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[11767.854832] bdbm: +[11767.854833] bdbm: ===================================================================== +[11767.854834] bdbm: RAM DISK INFO +[11767.854834] bdbm: ===================================================================== +[11767.854835] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[11769.418097] bdbm: ramssd addr = ffffc90050001000 +[11769.418098] bdbm: +[11769.418099] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[11770.980450] bdbm: *** building ptr_ramssd_data done +[11770.980573] bdbm: [dm_ramdrive_probe] probe done! +[11770.980575] bdbm: [dm_ramdrive_open] open done! +[11771.031495] bdbm: nvm cache addr = ffffc90870003000 +[11771.037280] bdbm: ========================================================== +[11771.037282] bdbm: NVM CONFIGURATION +[11771.037282] bdbm: ========================================================== +[11771.037283] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[11771.196178] bdbm: TRIM is disabled +[11771.196318] bdbm: ===================================================================== +[11771.196320] bdbm: DEVICE PARAMETERS +[11771.196320] bdbm: ===================================================================== +[11771.196321] bdbm: # of channels = 8 +[11771.196321] bdbm: # of chips per channel = 16 +[11771.196322] bdbm: # of blocks per chip = 256 +[11771.196322] bdbm: # of pages per block = 128 +[11771.196323] bdbm: # of subpages per page = 1 +[11771.196323] bdbm: page main size = 4096 bytes +[11771.196324] bdbm: page oob size = 64 bytes +[11771.196325] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[11771.196325] bdbm: +[11771.196326] bdbm: ===================================================================== +[11771.196326] bdbm: FTL CONFIGURATION +[11771.196327] bdbm: ===================================================================== +[11771.196327] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[11771.196328] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[11771.196330] bdbm: wl policy = 1 (1: none, 2: swap) +[11771.196331] bdbm: trim mode = 2 (1: enable, 2: disable) +[11771.196331] bdbm: kernel sector = 512 bytes +[11771.196332] bdbm: +[11771.196333] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[11771.216556] bdbm: llm_make_req: 0, 1 +[11771.356304] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[11771.356306] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[11775.012316] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 +[11786.883478] bdbm: nvm: total access = 200000, total read = 42, read hit = 14, total_write = 199957, write hit = 199957, hit = 0, evict = 35135 +[11786.975459] bdbm: llm_make_req: 50000, 92 +[11787.267014] bdbm: llm_make_req: 100000, 73 +[11787.465956] bdbm: nvm: total access = 300000, total read = 42, read hit = 14, total_write = 299957, write hit = 299957, hit = 0, evict = 135135 +[11787.558790] bdbm: llm_make_req: 150000, 90 +[11787.871785] bdbm: llm_make_req: 200000, 92 +[11788.079689] bdbm: nvm: total access = 400000, total read = 42, read hit = 14, total_write = 399957, write hit = 399957, hit = 0, evict = 235135 +[11788.163038] bdbm: llm_make_req: 250000, 93 +[11788.447999] bdbm: llm_make_req: 300000, 86 +[11788.652122] bdbm: nvm: total access = 500000, total read = 42, read hit = 14, total_write = 499957, write hit = 499957, hit = 0, evict = 335135 +[11788.736780] bdbm: llm_make_req: 350000, 94 +[11789.021002] bdbm: llm_make_req: 400000, 93 +[11789.224294] bdbm: nvm: total access = 600000, total read = 42, read hit = 14, total_write = 599957, write hit = 599957, hit = 0, evict = 435135 +[11789.308721] bdbm: llm_make_req: 450000, 83 +[11789.594524] bdbm: llm_make_req: 500000, 93 +[11789.802627] bdbm: nvm: total access = 700000, total read = 42, read hit = 14, total_write = 699957, write hit = 699957, hit = 0, evict = 535135 +[11789.887058] bdbm: llm_make_req: 550000, 94 +[11790.174433] bdbm: llm_make_req: 600000, 90 +[11790.378090] bdbm: nvm: total access = 800000, total read = 42, read hit = 14, total_write = 799957, write hit = 799957, hit = 0, evict = 635135 +[11790.463558] bdbm: llm_make_req: 650000, 95 +[11790.754223] bdbm: llm_make_req: 700000, 95 +[11790.957553] bdbm: nvm: total access = 900000, total read = 42, read hit = 14, total_write = 899957, write hit = 899957, hit = 0, evict = 735135 +[11791.051611] bdbm: llm_make_req: 750000, 95 +[11791.339219] bdbm: llm_make_req: 800000, 91 +[11791.541372] bdbm: nvm: total access = 1000000, total read = 42, read hit = 14, total_write = 999957, write hit = 999957, hit = 0, evict = 835135 +[11791.631820] bdbm: llm_make_req: 850000, 75 +[11791.918476] bdbm: llm_make_req: 900000, 91 +[11792.120978] bdbm: nvm: total access = 1100000, total read = 42, read hit = 14, total_write = 1099957, write hit = 1099957, hit = 0, evict = 935135 +[11792.203611] bdbm: llm_make_req: 950000, 93 +[11792.490681] bdbm: llm_make_req: 1000000, 95 +[11792.694474] bdbm: nvm: total access = 1200000, total read = 42, read hit = 14, total_write = 1199957, write hit = 1199957, hit = 0, evict = 1035135 +[11792.777801] bdbm: llm_make_req: 1050000, 90 +[11793.066737] bdbm: llm_make_req: 1100000, 95 +[11793.270370] bdbm: nvm: total access = 1300000, total read = 42, read hit = 14, total_write = 1299957, write hit = 1299957, hit = 0, evict = 1135135 +[11793.353396] bdbm: llm_make_req: 1150000, 93 +[11793.639889] bdbm: llm_make_req: 1200000, 59 +[11793.842151] bdbm: nvm: total access = 1400000, total read = 42, read hit = 14, total_write = 1399957, write hit = 1399957, hit = 0, evict = 1235135 +[11793.925458] bdbm: llm_make_req: 1250000, 94 +[11794.211016] bdbm: llm_make_req: 1300000, 95 +[11794.413177] bdbm: nvm: total access = 1500000, total read = 42, read hit = 14, total_write = 1499957, write hit = 1499957, hit = 0, evict = 1335135 +[11794.496382] bdbm: llm_make_req: 1350000, 89 +[11794.782525] bdbm: llm_make_req: 1400000, 92 +[11794.985062] bdbm: nvm: total access = 1600000, total read = 42, read hit = 14, total_write = 1599957, write hit = 1599957, hit = 0, evict = 1435135 +[11795.068245] bdbm: llm_make_req: 1450000, 96 +[11795.373350] bdbm: llm_make_req: 1500000, 54 +[11795.579089] bdbm: nvm: total access = 1700000, total read = 42, read hit = 14, total_write = 1699957, write hit = 1699957, hit = 0, evict = 1535135 +[11795.672237] bdbm: llm_make_req: 1550000, 95 +[11795.972950] bdbm: llm_make_req: 1600000, 92 +[11796.180978] bdbm: nvm: total access = 1800000, total read = 42, read hit = 14, total_write = 1799957, write hit = 1799957, hit = 0, evict = 1635135 +[11796.268250] bdbm: llm_make_req: 1650000, 72 +[11796.565721] bdbm: llm_make_req: 1700000, 86 +[11796.774383] bdbm: nvm: total access = 1900000, total read = 42, read hit = 14, total_write = 1899957, write hit = 1899957, hit = 0, evict = 1735135 +[11796.860532] bdbm: llm_make_req: 1750000, 95 +[11797.157928] bdbm: llm_make_req: 1800000, 95 +[11797.367002] bdbm: nvm: total access = 2000000, total read = 42, read hit = 14, total_write = 1999957, write hit = 1999957, hit = 0, evict = 1835135 +[11797.453530] bdbm: llm_make_req: 1850000, 82 +[11797.746772] bdbm: llm_make_req: 1900000, 93 +[11797.957484] bdbm: nvm: total access = 2100000, total read = 42, read hit = 14, total_write = 2099957, write hit = 2099957, hit = 0, evict = 1935135 +[11798.046094] bdbm: llm_make_req: 1950000, 95 +[11798.329864] bdbm: llm_make_req: 2000000, 89 +[11798.529611] bdbm: nvm: total access = 2200000, total read = 42, read hit = 14, total_write = 2199957, write hit = 2199957, hit = 0, evict = 2035135 +[11798.612869] bdbm: llm_make_req: 2050000, 94 +[11798.895299] bdbm: llm_make_req: 2100000, 94 +[11799.094722] bdbm: nvm: total access = 2300000, total read = 42, read hit = 14, total_write = 2299957, write hit = 2299957, hit = 0, evict = 2135135 +[11799.177160] bdbm: llm_make_req: 2150000, 94 +[11799.466693] bdbm: llm_make_req: 2200000, 94 +[11799.660065] bdbm: nvm: total access = 2400000, total read = 42, read hit = 14, total_write = 2399957, write hit = 2399957, hit = 0, evict = 2235135 +[11799.749580] bdbm: llm_make_req: 2250000, 96 +[11800.031792] bdbm: llm_make_req: 2300000, 86 +[11800.230632] bdbm: nvm: total access = 2500000, total read = 42, read hit = 14, total_write = 2499957, write hit = 2499957, hit = 0, evict = 2335135 +[11800.312775] bdbm: llm_make_req: 2350000, 94 +[11800.594334] bdbm: llm_make_req: 2400000, 93 +[11800.802677] bdbm: nvm: total access = 2600000, total read = 42, read hit = 14, total_write = 2599957, write hit = 2599957, hit = 0, evict = 2435135 +[11800.885627] bdbm: llm_make_req: 2450000, 67 +[11801.168921] bdbm: llm_make_req: 2500000, 95 +[11801.370815] bdbm: nvm: total access = 2700000, total read = 42, read hit = 14, total_write = 2699957, write hit = 2699957, hit = 0, evict = 2535135 +[11801.452985] bdbm: llm_make_req: 2550000, 95 +[11802.507962] bdbm: llm_make_req: 2600000, 91 +[11802.667505] bdbm: nvm: total access = 2800000, total read = 20988, read hit = 1003, total_write = 2779011, write hit = 2779011, hit = 0, evict = 2612954 +[11802.753864] bdbm: llm_make_req: 2650000, 78 +[11803.006146] bdbm: llm_make_req: 2700000, 72 +[11803.113072] bdbm: nvm: total access = 2900000, total read = 60658, read hit = 5954, total_write = 2839341, write hit = 2839341, hit = 0, evict = 2665713 +[11803.276068] bdbm: llm_make_req: 2750000, 90 +[11803.540756] bdbm: nvm: total access = 3000000, total read = 99843, read hit = 14401, total_write = 2900156, write hit = 2900156, hit = 0, evict = 2713429 +[11803.546747] bdbm: llm_make_req: 2800000, 63 +[11803.828550] bdbm: llm_make_req: 2850000, 71 +[11803.960844] bdbm: nvm: total access = 3100000, total read = 140064, read hit = 24325, total_write = 2959935, write hit = 2959935, hit = 0, evict = 2758526 +[11804.104914] bdbm: llm_make_req: 2900000, 85 +[11804.383063] bdbm: llm_make_req: 2950000, 65 +[11804.385417] bdbm: nvm: total access = 3200000, total read = 179855, read hit = 33771, total_write = 3020144, write hit = 3020144, hit = 0, evict = 2804355 +[11804.660693] bdbm: llm_make_req: 3000000, 76 +[11804.808711] bdbm: nvm: total access = 3300000, total read = 219905, read hit = 43008, total_write = 3080094, write hit = 3080094, hit = 0, evict = 2850302 +[11804.940803] bdbm: llm_make_req: 3050000, 66 +[11805.211318] bdbm: llm_make_req: 3100000, 50 +[11805.231769] bdbm: nvm: total access = 3400000, total read = 260232, read hit = 52530, total_write = 3139767, write hit = 3139767, hit = 0, evict = 2896216 +[11805.487213] bdbm: llm_make_req: 3150000, 65 +[11805.657771] bdbm: nvm: total access = 3500000, total read = 300468, read hit = 62157, total_write = 3199531, write hit = 3199531, hit = 0, evict = 2941915 +[11805.769579] bdbm: llm_make_req: 3200000, 66 +[11806.043430] bdbm: llm_make_req: 3250000, 66 +[11806.085019] bdbm: nvm: total access = 3600000, total read = 340087, read hit = 71573, total_write = 3259912, write hit = 3259912, hit = 0, evict = 2988237 +[11806.322817] bdbm: llm_make_req: 3300000, 56 +[11806.499305] bdbm: nvm: total access = 3700000, total read = 380542, read hit = 81116, total_write = 3319457, write hit = 3319457, hit = 0, evict = 3033875 +[11806.591287] bdbm: llm_make_req: 3350000, 74 +[11806.872088] bdbm: llm_make_req: 3400000, 55 +[11806.920149] bdbm: nvm: total access = 3800000, total read = 420752, read hit = 90759, total_write = 3379247, write hit = 3379247, hit = 0, evict = 3079519 +[11807.144899] bdbm: llm_make_req: 3450000, 68 +[11807.339625] bdbm: nvm: total access = 3900000, total read = 460965, read hit = 100312, total_write = 3439034, write hit = 3439034, hit = 0, evict = 3124919 +[11807.414192] bdbm: llm_make_req: 3500000, 75 +[11807.695551] bdbm: llm_make_req: 3550000, 73 +[11807.766703] bdbm: nvm: total access = 4000000, total read = 501029, read hit = 109597, total_write = 3498970, write hit = 3498970, hit = 0, evict = 3170929 +[11807.970520] bdbm: llm_make_req: 3600000, 66 +[11808.185020] bdbm: nvm: total access = 4100000, total read = 541048, read hit = 119065, total_write = 3558951, write hit = 3558951, hit = 0, evict = 3216622 +[11808.250528] bdbm: llm_make_req: 3650000, 74 +[11808.520333] bdbm: llm_make_req: 3700000, 63 +[11808.603760] bdbm: nvm: total access = 4200000, total read = 581401, read hit = 128787, total_write = 3618598, write hit = 3618598, hit = 0, evict = 3261968 +[11808.802778] bdbm: llm_make_req: 3750000, 78 +[11809.032407] bdbm: nvm: total access = 4300000, total read = 621639, read hit = 138295, total_write = 3678360, write hit = 3678360, hit = 0, evict = 3307561 +[11809.079248] bdbm: llm_make_req: 3800000, 70 +[11809.360681] bdbm: llm_make_req: 3850000, 69 +[11809.450961] bdbm: nvm: total access = 4400000, total read = 661677, read hit = 147692, total_write = 3738322, write hit = 3738322, hit = 0, evict = 3353382 +[11809.634682] bdbm: llm_make_req: 3900000, 60 +[11809.878888] bdbm: nvm: total access = 4500000, total read = 702068, read hit = 157253, total_write = 3797931, write hit = 3797931, hit = 0, evict = 3399009 +[11809.910390] bdbm: llm_make_req: 3950000, 54 +[11810.186825] bdbm: llm_make_req: 4000000, 71 +[11810.299346] bdbm: nvm: total access = 4600000, total read = 741939, read hit = 166646, total_write = 3858060, write hit = 3858060, hit = 0, evict = 3444802 +[11810.459288] bdbm: llm_make_req: 4050000, 74 +[11810.722952] bdbm: nvm: total access = 4700000, total read = 782441, read hit = 175829, total_write = 3917558, write hit = 3917558, hit = 0, evict = 3490364 +[11810.738418] bdbm: llm_make_req: 4100000, 61 +[11811.011045] bdbm: llm_make_req: 4150000, 61 +[11811.139857] bdbm: nvm: total access = 4800000, total read = 822222, read hit = 185244, total_write = 3977777, write hit = 3977777, hit = 0, evict = 3536579 +[11811.290840] bdbm: llm_make_req: 4200000, 64 +[11811.563996] bdbm: llm_make_req: 4250000, 77 +[11811.564242] bdbm: nvm: total access = 4900000, total read = 861979, read hit = 194390, total_write = 4038020, write hit = 4038020, hit = 0, evict = 3582464 +[11811.843043] bdbm: llm_make_req: 4300000, 62 +[11811.992469] bdbm: nvm: total access = 5000000, total read = 901962, read hit = 204114, total_write = 4098037, write hit = 4098037, hit = 0, evict = 3628283 +[11812.123015] bdbm: llm_make_req: 4350000, 64 +[11812.395826] bdbm: llm_make_req: 4400000, 70 +[11812.407839] bdbm: nvm: total access = 5100000, total read = 941777, read hit = 213429, total_write = 4158222, write hit = 4158222, hit = 0, evict = 3674045 +[11812.676253] bdbm: llm_make_req: 4450000, 73 +[11812.831819] bdbm: nvm: total access = 5200000, total read = 980889, read hit = 222567, total_write = 4219110, write hit = 4219110, hit = 0, evict = 3720613 +[11812.946141] bdbm: llm_make_req: 4500000, 77 +[11813.223447] bdbm: llm_make_req: 4550000, 88 +[11813.249709] bdbm: nvm: total access = 5300000, total read = 1020981, read hit = 232115, total_write = 4279018, write hit = 4279018, hit = 0, evict = 3766254 +[11813.492330] bdbm: llm_make_req: 4600000, 56 +[11813.667352] bdbm: nvm: total access = 5400000, total read = 1060814, read hit = 241512, total_write = 4339185, write hit = 4339185, hit = 0, evict = 3812366 +[11813.768277] bdbm: llm_make_req: 4650000, 75 +[11814.040137] bdbm: llm_make_req: 4700000, 80 +[11814.078626] bdbm: nvm: total access = 5500000, total read = 1100160, read hit = 250655, total_write = 4399839, write hit = 4399839, hit = 0, evict = 3858584 +[11814.317891] bdbm: llm_make_req: 4750000, 69 +[11814.506681] bdbm: nvm: total access = 5600000, total read = 1139710, read hit = 260041, total_write = 4460289, write hit = 4460289, hit = 0, evict = 3904616 +[11814.607150] bdbm: llm_make_req: 4800000, 74 +[11814.879535] bdbm: llm_make_req: 4850000, 67 +[11814.941898] bdbm: nvm: total access = 5700000, total read = 1180262, read hit = 269575, total_write = 4519737, write hit = 4519737, hit = 0, evict = 3950350 +[11815.155967] bdbm: llm_make_req: 4900000, 54 +[11815.366885] bdbm: nvm: total access = 5800000, total read = 1220702, read hit = 278996, total_write = 4579297, write hit = 4579297, hit = 0, evict = 3995691 +[11815.428860] bdbm: llm_make_req: 4950000, 94 +[11815.711355] bdbm: llm_make_req: 5000000, 77 +[11815.785539] bdbm: nvm: total access = 5900000, total read = 1260948, read hit = 288245, total_write = 4639051, write hit = 4639051, hit = 0, evict = 4041417 +[11815.988926] bdbm: llm_make_req: 5050000, 71 +[11816.926707] bdbm: nvm: total access = 6000000, total read = 1301077, read hit = 297541, total_write = 4698922, write hit = 4698922, hit = 0, evict = 4087353 +[11816.990897] bdbm: llm_make_req: 5100000, 76 +[11817.963213] bdbm: llm_make_req: 5150000, 72 +[11818.415396] bdbm: nvm: total access = 6100000, total read = 1342106, read hit = 307308, total_write = 4757893, write hit = 4757893, hit = 0, evict = 4132369 +[11818.959801] bdbm: llm_make_req: 5200000, 61 +[11820.377703] bdbm: llm_make_req: 5250000, 96 +[11821.670634] bdbm: nvm: total access = 6200000, total read = 1382793, read hit = 317067, total_write = 4817206, write hit = 4817206, hit = 0, evict = 4177597 +[11822.789878] bdbm: llm_make_req: 5300000, 62 +[11824.884575] bdbm: llm_make_req: 5350000, 96 +[11826.883920] bdbm: llm_make_req: 5400000, 96 +[11829.021948] bdbm: nvm: total access = 6300000, total read = 1422707, read hit = 326251, total_write = 4877292, write hit = 4877292, hit = 0, evict = 4223516 +[11829.090392] bdbm: llm_make_req: 5450000, 54 +[11831.189310] bdbm: llm_make_req: 5500000, 96 +[11833.210605] bdbm: llm_make_req: 5550000, 96 +[11833.945165] bdbm: nvm: total access = 6400000, total read = 1462575, read hit = 335638, total_write = 4937424, write hit = 4937424, hit = 0, evict = 4269298 +[11835.113481] bdbm: llm_make_req: 5600000, 66 +[11837.159044] bdbm: llm_make_req: 5650000, 96 +[11839.375864] bdbm: llm_make_req: 5700000, 96 +[11839.960141] bdbm: nvm: total access = 6500000, total read = 1502347, read hit = 345155, total_write = 4997652, write hit = 4997652, hit = 0, evict = 4315721 +[11841.207965] bdbm: llm_make_req: 5750000, 45 +[11843.719699] bdbm: llm_make_req: 5800000, 79 +[11845.732610] bdbm: llm_make_req: 5850000, 96 +[11847.629441] bdbm: nvm: total access = 6600000, total read = 1541898, read hit = 354327, total_write = 5058101, write hit = 5058101, hit = 0, evict = 4361903 +[11847.688622] bdbm: llm_make_req: 5900000, 52 +[11850.056320] bdbm: llm_make_req: 5950000, 96 +[11852.354898] bdbm: llm_make_req: 6000000, 96 +[11854.360050] bdbm: llm_make_req: 6050000, 76 +[11854.365231] bdbm: nvm: total access = 6700000, total read = 1582060, read hit = 363886, total_write = 5117939, write hit = 5117939, hit = 0, evict = 4407437 +[11856.662599] bdbm: llm_make_req: 6100000, 96 +[11858.942903] bdbm: llm_make_req: 6150000, 96 +[11861.202219] bdbm: llm_make_req: 6200000, 59 +[11862.540134] bdbm: nvm: total access = 6800000, total read = 1622205, read hit = 373339, total_write = 5177794, write hit = 5177794, hit = 0, evict = 4453362 +[11863.543434] bdbm: llm_make_req: 6250000, 96 +[11865.669466] bdbm: llm_make_req: 6300000, 96 +[11868.196339] bdbm: llm_make_req: 6350000, 78 +[11870.676618] bdbm: llm_make_req: 6400000, 96 +[11871.131072] bdbm: nvm: total access = 6900000, total read = 1662058, read hit = 382652, total_write = 5237941, write hit = 5237941, hit = 0, evict = 4499686 +[11872.654086] bdbm: llm_make_req: 6450000, 83 +[11875.288044] bdbm: llm_make_req: 6500000, 96 +[11877.936442] bdbm: llm_make_req: 6550000, 96 +[11880.136578] bdbm: llm_make_req: 6600000, 65 +[11882.861201] bdbm: llm_make_req: 6650000, 96 +[11883.250736] bdbm: nvm: total access = 7000000, total read = 1702525, read hit = 392109, total_write = 5297474, write hit = 5297474, hit = 0, evict = 4545158 +[11885.099249] bdbm: llm_make_req: 6700000, 96 +[11887.622004] bdbm: llm_make_req: 6750000, 96 +[11890.627676] bdbm: llm_make_req: 6800000, 96 +[11892.727851] bdbm: llm_make_req: 6850000, 52 +[11895.580005] bdbm: llm_make_req: 6900000, 96 +[11895.972510] bdbm: nvm: total access = 7100000, total read = 1742287, read hit = 401625, total_write = 5357712, write hit = 5357712, hit = 0, evict = 4591260 +[11898.067783] bdbm: llm_make_req: 6950000, 96 +[11900.805446] bdbm: llm_make_req: 7000000, 73 +[11903.614417] bdbm: llm_make_req: 7050000, 96 +[11905.708919] bdbm: llm_make_req: 7100000, 75 +[11908.646581] bdbm: llm_make_req: 7150000, 96 +[11909.074911] bdbm: nvm: total access = 7200000, total read = 1782513, read hit = 411401, total_write = 5417486, write hit = 5417486, hit = 0, evict = 4636616 +[11911.319334] bdbm: llm_make_req: 7200000, 96 +[11913.764335] bdbm: llm_make_req: 7250000, 96 +[11917.085297] bdbm: llm_make_req: 7300000, 96 +[11919.353621] bdbm: llm_make_req: 7350000, 87 +[11922.472946] bdbm: llm_make_req: 7400000, 96 +[11924.983029] bdbm: llm_make_req: 7450000, 96 +[11927.685796] bdbm: llm_make_req: 7500000, 95 +[11928.094536] bdbm: nvm: total access = 7300000, total read = 1822685, read hit = 420802, total_write = 5477314, write hit = 5477314, hit = 0, evict = 4682063 +[11930.759195] bdbm: llm_make_req: 7550000, 96 +[11933.344532] bdbm: llm_make_req: 7600000, 46 +[11936.386822] bdbm: llm_make_req: 7650000, 95 +[11938.648715] bdbm: llm_make_req: 7700000, 96 +[11941.506944] bdbm: llm_make_req: 7750000, 96 +[11944.366652] bdbm: llm_make_req: 7800000, 96 +[11947.094087] bdbm: llm_make_req: 7850000, 70 +[11947.111360] bdbm: nvm: total access = 7400000, total read = 1862422, read hit = 430254, total_write = 5537577, write hit = 5537577, hit = 0, evict = 4728198 +[11950.118709] bdbm: llm_make_req: 7900000, 96 +[11952.301165] bdbm: llm_make_req: 7950000, 70 +[11955.369111] bdbm: llm_make_req: 8000000, 96 +[11957.958317] bdbm: llm_make_req: 8050000, 96 +[11960.654588] bdbm: llm_make_req: 8100000, 96 +[11963.769286] bdbm: llm_make_req: 8150000, 96 +[11966.269294] bdbm: llm_make_req: 8200000, 77 +[11966.284594] bdbm: nvm: total access = 7500000, total read = 1902918, read hit = 439768, total_write = 5597081, write hit = 5597081, hit = 0, evict = 4773375 +[11969.393067] bdbm: llm_make_req: 8250000, 96 +[11971.668079] bdbm: llm_make_req: 8300000, 96 +[11974.617539] bdbm: llm_make_req: 8350000, 96 +[11977.467687] bdbm: llm_make_req: 8400000, 96 +[11979.903951] bdbm: llm_make_req: 8450000, 96 +[11983.197693] bdbm: llm_make_req: 8500000, 96 +[11985.428452] bdbm: llm_make_req: 8550000, 65 +[11987.149810] bdbm: nvm: total access = 7600000, total read = 1943080, read hit = 449451, total_write = 5656919, write hit = 5656919, hit = 0, evict = 4819261 +[11988.494528] bdbm: llm_make_req: 8600000, 96 +[11991.113097] bdbm: llm_make_req: 8650000, 96 +[11993.885962] bdbm: llm_make_req: 8700000, 96 +[11997.045265] bdbm: llm_make_req: 8750000, 96 +[11999.552889] bdbm: llm_make_req: 8800000, 72 +[12002.606399] bdbm: llm_make_req: 8850000, 96 +[12004.973498] bdbm: llm_make_req: 8900000, 96 +[12007.860750] bdbm: llm_make_req: 8950000, 96 +[12008.235302] bdbm: nvm: total access = 7700000, total read = 1982723, read hit = 458690, total_write = 5717276, write hit = 5717276, hit = 0, evict = 4865550 +[12010.651083] bdbm: llm_make_req: 9000000, 96 +[12013.414498] bdbm: llm_make_req: 9050000, 52 +[12016.417814] bdbm: llm_make_req: 9100000, 96 +[12018.654875] bdbm: llm_make_req: 9150000, 62 +[12021.646200] bdbm: llm_make_req: 9200000, 96 +[12024.274002] bdbm: llm_make_req: 9250000, 96 +[12026.852929] bdbm: llm_make_req: 9300000, 96 +[12027.210657] bdbm: nvm: total access = 7800000, total read = 2022787, read hit = 467839, total_write = 5777212, write hit = 5777212, hit = 0, evict = 4911006 +[12030.008589] bdbm: llm_make_req: 9350000, 96 +[12032.264699] bdbm: llm_make_req: 9400000, 81 +[12035.162213] bdbm: llm_make_req: 9450000, 96 +[12037.560872] bdbm: llm_make_req: 9500000, 96 +[12040.262569] bdbm: llm_make_req: 9550000, 68 +[12041.870793] bdbm: nvm: total access = 7900000, total read = 2062908, read hit = 477368, total_write = 5837091, write hit = 5837091, hit = 0, evict = 4956763 +[12043.012998] bdbm: llm_make_req: 9600000, 96 +[12045.065179] bdbm: llm_make_req: 9650000, 74 +[12047.681980] bdbm: llm_make_req: 9700000, 96 +[12050.185816] bdbm: llm_make_req: 9750000, 96 +[12052.612759] bdbm: llm_make_req: 9800000, 67 +[12052.637769] bdbm: nvm: total access = 8000000, total read = 2103797, read hit = 487025, total_write = 5896202, write hit = 5896202, hit = 0, evict = 5002049 +[12055.234048] bdbm: llm_make_req: 9850000, 96 +[12057.307436] bdbm: llm_make_req: 9900000, 96 +[12059.990652] bdbm: llm_make_req: 9950000, 69 +[12062.429718] bdbm: llm_make_req: 10000000, 96 +[12062.840962] bdbm: nvm: total access = 8100000, total read = 2143701, read hit = 496740, total_write = 5956298, write hit = 5956298, hit = 0, evict = 5047959 +[12064.238637] bdbm: llm_make_req: 10050000, 96 +[12066.752263] bdbm: llm_make_req: 10100000, 67 +[12068.934433] bdbm: llm_make_req: 10150000, 96 +[12069.392872] bdbm: nvm: total access = 8200000, total read = 2183118, read hit = 506002, total_write = 6016881, write hit = 6016881, hit = 0, evict = 5094323 +[12070.716870] bdbm: llm_make_req: 10200000, 96 +[12073.052023] bdbm: llm_make_req: 10250000, 87 +[12074.923422] bdbm: llm_make_req: 10300000, 96 +[12075.363383] bdbm: nvm: total access = 8300000, total read = 2222903, read hit = 515576, total_write = 6077096, write hit = 6077096, hit = 0, evict = 5140119 +[12076.648154] bdbm: llm_make_req: 10350000, 96 +[12078.424303] bdbm: llm_make_req: 10400000, 71 +[12079.433306] bdbm: nvm: total access = 8400000, total read = 2263839, read hit = 525202, total_write = 6136160, write hit = 6136160, hit = 0, evict = 5185408 +[12080.337646] bdbm: llm_make_req: 10450000, 63 +[12081.813905] bdbm: llm_make_req: 10500000, 96 +[12083.169857] bdbm: nvm: total access = 8500000, total read = 2303724, read hit = 534401, total_write = 6196275, write hit = 6196275, hit = 0, evict = 5231384 +[12083.202816] bdbm: llm_make_req: 10550000, 63 +[12084.983867] bdbm: llm_make_req: 10600000, 77 +[12086.777867] bdbm: llm_make_req: 10650000, 82 +[12086.797635] bdbm: nvm: total access = 8600000, total read = 2343603, read hit = 543990, total_write = 6256396, write hit = 6256396, hit = 0, evict = 5277566 +[12088.177569] bdbm: llm_make_req: 10700000, 96 +[12089.547480] bdbm: llm_make_req: 10750000, 75 +[12090.363678] bdbm: nvm: total access = 8700000, total read = 2384146, read hit = 553605, total_write = 6315853, write hit = 6315853, hit = 0, evict = 5322913 +[12091.326634] bdbm: llm_make_req: 10800000, 68 +[12093.078813] bdbm: llm_make_req: 10850000, 69 +[12093.145655] bdbm: nvm: total access = 8800000, total read = 2424527, read hit = 563259, total_write = 6375472, write hit = 6375472, hit = 0, evict = 5368419 +[12094.399130] bdbm: llm_make_req: 10900000, 96 +[12095.815352] bdbm: llm_make_req: 10950000, 82 +[12096.650657] bdbm: nvm: total access = 8900000, total read = 2464628, read hit = 572530, total_write = 6435371, write hit = 6435371, hit = 0, evict = 5414027 +[12097.551970] bdbm: llm_make_req: 11000000, 84 +[12099.288568] bdbm: llm_make_req: 11050000, 86 +[12099.398652] bdbm: nvm: total access = 9000000, total read = 2504892, read hit = 581891, total_write = 6495107, write hit = 6495107, hit = 0, evict = 5459875 +[12100.448830] bdbm: llm_make_req: 11100000, 96 +[12102.037712] bdbm: llm_make_req: 11150000, 74 +[12102.951582] bdbm: nvm: total access = 9100000, total read = 2544351, read hit = 591294, total_write = 6555648, write hit = 6555648, hit = 0, evict = 5506283 +[12103.806051] bdbm: llm_make_req: 11200000, 72 +[12105.574154] bdbm: llm_make_req: 11250000, 88 +[12106.515431] bdbm: nvm: total access = 9200000, total read = 2583694, read hit = 600422, total_write = 6616305, write hit = 6616305, hit = 0, evict = 5552529 +[12106.783368] bdbm: llm_make_req: 11300000, 96 +[12108.351900] bdbm: llm_make_req: 11350000, 61 +[12110.080726] bdbm: nvm: total access = 9300000, total read = 2623096, read hit = 609946, total_write = 6676903, write hit = 6676903, hit = 0, evict = 5599140 +[12110.101849] bdbm: llm_make_req: 11400000, 67 +[12111.820803] bdbm: llm_make_req: 11450000, 69 +[12112.821468] bdbm: nvm: total access = 9400000, total read = 2663108, read hit = 619734, total_write = 6736891, write hit = 6736891, hit = 0, evict = 5644948 +[12113.024800] bdbm: llm_make_req: 11500000, 96 +[12114.594461] bdbm: llm_make_req: 11550000, 62 +[12116.361466] bdbm: llm_make_req: 11600000, 78 +[12116.391721] bdbm: nvm: total access = 9500000, total read = 2703190, read hit = 629199, total_write = 6796809, write hit = 6796809, hit = 0, evict = 5690820 +[12117.801583] bdbm: llm_make_req: 11650000, 96 +[12119.172017] bdbm: llm_make_req: 11700000, 96 +[12120.039223] bdbm: nvm: total access = 9600000, total read = 2743380, read hit = 638518, total_write = 6856619, write hit = 6856619, hit = 0, evict = 5736507 +[12120.981358] bdbm: llm_make_req: 11750000, 85 +[12122.735458] bdbm: llm_make_req: 11800000, 88 +[12122.820814] bdbm: nvm: total access = 9700000, total read = 2782881, read hit = 647871, total_write = 6917118, write hit = 6917118, hit = 0, evict = 5782712 +[12124.160820] bdbm: llm_make_req: 11850000, 96 +[12125.515367] bdbm: llm_make_req: 11900000, 66 +[12126.405695] bdbm: nvm: total access = 9800000, total read = 2823499, read hit = 657391, total_write = 6976500, write hit = 6976500, hit = 0, evict = 5828047 +[12127.292707] bdbm: llm_make_req: 11950000, 68 +[12129.076392] bdbm: llm_make_req: 12000000, 62 +[12129.999203] bdbm: nvm: total access = 9900000, total read = 2863448, read hit = 666922, total_write = 7036551, write hit = 7036551, hit = 0, evict = 5873842 +[12130.492781] bdbm: llm_make_req: 12050000, 96 +[12131.846738] bdbm: llm_make_req: 12100000, 83 +[12133.569736] bdbm: nvm: total access = 10000000, total read = 2903070, read hit = 676402, total_write = 7096929, write hit = 7096929, hit = 0, evict = 5919941 +[12133.619751] bdbm: llm_make_req: 12150000, 82 +[12135.410032] bdbm: llm_make_req: 12200000, 59 +[12136.388897] bdbm: nvm: total access = 10100000, total read = 2943987, read hit = 686133, total_write = 7156012, write hit = 7156012, hit = 0, evict = 5965347 +[12136.719219] bdbm: llm_make_req: 12250000, 96 +[12138.216168] bdbm: llm_make_req: 12300000, 61 +[12140.009360] bdbm: llm_make_req: 12350000, 76 +[12140.033516] bdbm: nvm: total access = 10200000, total read = 2984210, read hit = 695476, total_write = 7215789, write hit = 7215789, hit = 0, evict = 6011056 +[12141.463405] bdbm: llm_make_req: 12400000, 96 +[12142.858228] bdbm: llm_make_req: 12450000, 53 +[12143.663789] bdbm: nvm: total access = 10300000, total read = 3025032, read hit = 705107, total_write = 7274967, write hit = 7274967, hit = 0, evict = 6056209 +[12144.685869] bdbm: llm_make_req: 12500000, 49 +[12146.461464] bdbm: llm_make_req: 12550000, 89 +[12146.549501] bdbm: nvm: total access = 10400000, total read = 3064705, read hit = 714204, total_write = 7335294, write hit = 7335294, hit = 0, evict = 6102398 +[12148.109381] bdbm: llm_make_req: 12600000, 96 +[12150.150514] bdbm: llm_make_req: 12650000, 75 +[12152.661393] bdbm: llm_make_req: 12700000, 63 +[12153.919504] bdbm: nvm: total access = 10500000, total read = 3104360, read hit = 723472, total_write = 7395639, write hit = 7395639, hit = 0, evict = 6148304 +[12154.580462] bdbm: llm_make_req: 12750000, 96 +[12156.440798] bdbm: llm_make_req: 12800000, 85 +[12158.797608] bdbm: llm_make_req: 12850000, 64 +[12159.973999] bdbm: nvm: total access = 10600000, total read = 3144021, read hit = 732970, total_write = 7455978, write hit = 7455978, hit = 0, evict = 6194362 +[12160.758461] bdbm: llm_make_req: 12900000, 95 +[12162.353842] bdbm: llm_make_req: 12950000, 78 +[12164.660398] bdbm: llm_make_req: 13000000, 69 +[12164.709298] bdbm: nvm: total access = 10700000, total read = 3184479, read hit = 742371, total_write = 7515520, write hit = 7515520, hit = 0, evict = 6239910 +[12166.699016] bdbm: llm_make_req: 13050000, 96 +[12168.335565] bdbm: llm_make_req: 13100000, 93 +[12170.710945] bdbm: llm_make_req: 13150000, 82 +[12170.750378] bdbm: nvm: total access = 10800000, total read = 3224715, read hit = 751759, total_write = 7575284, write hit = 7575284, hit = 0, evict = 6285715 +[12172.793697] bdbm: llm_make_req: 13200000, 96 +[12174.561044] bdbm: llm_make_req: 13250000, 89 +[12177.194079] bdbm: llm_make_req: 13300000, 72 +[12177.257699] bdbm: nvm: total access = 10900000, total read = 3264616, read hit = 761470, total_write = 7635383, write hit = 7635383, hit = 0, evict = 6331274 +[12179.371052] bdbm: llm_make_req: 13350000, 96 +[12181.122984] bdbm: llm_make_req: 13400000, 59 +[12183.605848] bdbm: llm_make_req: 13450000, 79 +[12184.946961] bdbm: nvm: total access = 11000000, total read = 3304715, read hit = 770863, total_write = 7695284, write hit = 7695284, hit = 0, evict = 6376729 +[12185.810186] bdbm: llm_make_req: 13500000, 96 +[12187.584451] bdbm: llm_make_req: 13550000, 67 +[12190.144615] bdbm: llm_make_req: 13600000, 43 +[12191.556867] bdbm: nvm: total access = 11100000, total read = 3344903, read hit = 780385, total_write = 7755096, write hit = 7755096, hit = 0, evict = 6422280 +[12192.280250] bdbm: llm_make_req: 13650000, 96 +[12194.258265] bdbm: llm_make_req: 13700000, 81 +[12196.548955] bdbm: llm_make_req: 13750000, 96 +[12198.852672] bdbm: llm_make_req: 13800000, 96 +[12199.713290] bdbm: nvm: total access = 11200000, total read = 3385227, read hit = 789916, total_write = 7814772, write hit = 7814772, hit = 0, evict = 6467774 +[12201.129367] bdbm: llm_make_req: 13850000, 86 +[12203.515456] bdbm: llm_make_req: 13900000, 96 +[12205.665575] bdbm: llm_make_req: 13950000, 96 +[12208.157941] bdbm: llm_make_req: 14000000, 73 +[12208.201310] bdbm: nvm: total access = 11300000, total read = 3425017, read hit = 799323, total_write = 7874982, write hit = 7874982, hit = 0, evict = 6513743 +[12210.678429] bdbm: llm_make_req: 14050000, 96 +[12212.603043] bdbm: llm_make_req: 14100000, 66 +[12215.465005] bdbm: llm_make_req: 14150000, 64 +[12217.797164] bdbm: llm_make_req: 14200000, 96 +[12218.439438] bdbm: nvm: total access = 11400000, total read = 3465897, read hit = 808949, total_write = 7934102, write hit = 7934102, hit = 0, evict = 6558829 +[12219.920396] bdbm: llm_make_req: 14250000, 81 +[12222.464671] bdbm: llm_make_req: 14300000, 96 +[12224.790345] bdbm: llm_make_req: 14350000, 96 +[12227.280358] bdbm: llm_make_req: 14400000, 83 +[12228.782350] bdbm: nvm: total access = 11500000, total read = 3506129, read hit = 818229, total_write = 7993870, write hit = 7993870, hit = 0, evict = 6604541 +[12229.860944] bdbm: llm_make_req: 14450000, 95 +[12231.785767] bdbm: llm_make_req: 14500000, 70 +[12234.373749] bdbm: llm_make_req: 14550000, 96 +[12237.109812] bdbm: llm_make_req: 14600000, 96 +[12239.394192] bdbm: nvm: total access = 11600000, total read = 3546474, read hit = 827695, total_write = 8053525, write hit = 8053525, hit = 0, evict = 6650778 +[12239.397488] bdbm: llm_make_req: 14650000, 71 +[12242.053013] bdbm: llm_make_req: 14700000, 96 +[12244.438493] bdbm: llm_make_req: 14750000, 96 +[12247.114492] bdbm: llm_make_req: 14800000, 76 +[12249.795273] bdbm: llm_make_req: 14850000, 96 +[12251.739146] bdbm: nvm: total access = 11700000, total read = 3586040, read hit = 837133, total_write = 8113959, write hit = 8113959, hit = 0, evict = 6696888 +[12251.778006] bdbm: llm_make_req: 14900000, 63 +[12254.442484] bdbm: llm_make_req: 14950000, 95 +[12257.049485] bdbm: llm_make_req: 15000000, 96 +[12259.479040] bdbm: llm_make_req: 15050000, 75 +[12262.155620] bdbm: llm_make_req: 15100000, 95 +[12262.596660] bdbm: nvm: total access = 11800000, total read = 3626600, read hit = 846352, total_write = 8173399, write hit = 8173399, hit = 0, evict = 6742297 +[12264.234426] bdbm: llm_make_req: 15150000, 96 +[12266.882829] bdbm: llm_make_req: 15200000, 96 +[12269.662091] bdbm: llm_make_req: 15250000, 96 +[12271.994440] bdbm: llm_make_req: 15300000, 79 +[12274.699577] bdbm: llm_make_req: 15350000, 96 +[12275.127553] bdbm: nvm: total access = 11900000, total read = 3666763, read hit = 855661, total_write = 8233236, write hit = 8233236, hit = 0, evict = 6788234 +[12276.987630] bdbm: llm_make_req: 15400000, 96 +[12279.790598] bdbm: llm_make_req: 15450000, 54 +[12282.427606] bdbm: llm_make_req: 15500000, 96 +[12284.554836] bdbm: llm_make_req: 15550000, 77 +[12287.225210] bdbm: llm_make_req: 15600000, 96 +[12287.639351] bdbm: nvm: total access = 12000000, total read = 3706765, read hit = 864973, total_write = 8293234, write hit = 8293234, hit = 0, evict = 6834292 +[12289.780086] bdbm: llm_make_req: 15650000, 96 +[12292.292263] bdbm: llm_make_req: 15700000, 72 +[12295.002777] bdbm: llm_make_req: 15750000, 96 +[12297.184537] bdbm: llm_make_req: 15800000, 96 +[12299.908360] bdbm: llm_make_req: 15850000, 96 +[12300.299839] bdbm: nvm: total access = 12100000, total read = 3746872, read hit = 874370, total_write = 8353127, write hit = 8353127, hit = 0, evict = 6880119 +[12302.651137] bdbm: llm_make_req: 15900000, 96 +[12304.987423] bdbm: llm_make_req: 15950000, 64 +[12307.670169] bdbm: llm_make_req: 16000000, 96 +[12309.867782] bdbm: llm_make_req: 16050000, 96 +[12312.693379] bdbm: llm_make_req: 16100000, 74 +[12312.716085] bdbm: nvm: total access = 12200000, total read = 3787075, read hit = 883755, total_write = 8412924, write hit = 8412924, hit = 0, evict = 6925950 +[12315.291287] bdbm: llm_make_req: 16150000, 96 +[12317.394124] bdbm: llm_make_req: 16200000, 81 +[12320.055592] bdbm: llm_make_req: 16250000, 96 +[12322.540570] bdbm: llm_make_req: 16300000, 96 +[12325.130597] bdbm: nvm: total access = 12300000, total read = 3827252, read hit = 893220, total_write = 8472747, write hit = 8472747, hit = 0, evict = 6971473 +[12325.134437] bdbm: llm_make_req: 16350000, 66 +[12327.854471] bdbm: llm_make_req: 16400000, 96 +[12329.866560] bdbm: llm_make_req: 16450000, 96 +[12332.513108] bdbm: llm_make_req: 16500000, 96 +[12335.258317] bdbm: llm_make_req: 16550000, 96 +[12336.021223] bdbm: nvm: total access = 12400000, total read = 3866999, read hit = 902608, total_write = 8533000, write hit = 8533000, hit = 0, evict = 7017482 +[12337.545000] bdbm: llm_make_req: 16600000, 80 +[12340.160002] bdbm: llm_make_req: 16650000, 96 +[12342.458215] bdbm: llm_make_req: 16700000, 96 +[12345.111680] bdbm: llm_make_req: 16750000, 59 +[12347.651530] bdbm: llm_make_req: 16800000, 95 +[12348.064751] bdbm: nvm: total access = 12500000, total read = 3906879, read hit = 911810, total_write = 8593120, write hit = 8593120, hit = 0, evict = 7063491 +[12349.619829] bdbm: llm_make_req: 16850000, 57 +[12352.161017] bdbm: llm_make_req: 16900000, 96 +[12354.861633] bdbm: llm_make_req: 16950000, 96 +[12356.912728] bdbm: llm_make_req: 17000000, 81 +[12356.924757] bdbm: nvm: total access = 12600000, total read = 3947116, read hit = 921222, total_write = 8652883, write hit = 8652883, hit = 0, evict = 7109581 +[12359.380910] bdbm: llm_make_req: 17050000, 96 +[12361.789028] bdbm: llm_make_req: 17100000, 96 +[12364.052821] bdbm: llm_make_req: 17150000, 71 +[12366.400268] bdbm: llm_make_req: 17200000, 96 +[12366.802465] bdbm: nvm: total access = 12700000, total read = 3987322, read hit = 930659, total_write = 8712677, write hit = 8712677, hit = 0, evict = 7155425 +[12368.550779] bdbm: llm_make_req: 17250000, 96 +[12370.911202] bdbm: llm_make_req: 17300000, 48 +[12373.226780] bdbm: llm_make_req: 17350000, 96 +[12374.914596] bdbm: nvm: total access = 12800000, total read = 4027721, read hit = 940070, total_write = 8772278, write hit = 8772278, hit = 0, evict = 7200905 +[12375.101477] bdbm: llm_make_req: 17400000, 96 +[12377.515187] bdbm: llm_make_req: 17450000, 76 +[12379.664397] bdbm: llm_make_req: 17500000, 96 +[12381.307339] bdbm: nvm: total access = 12900000, total read = 4067391, read hit = 949546, total_write = 8832608, write hit = 8832608, hit = 0, evict = 7246819 +[12381.528236] bdbm: llm_make_req: 17550000, 96 +[12383.790134] bdbm: llm_make_req: 17600000, 73 +[12385.722223] bdbm: llm_make_req: 17650000, 96 +[12387.275886] bdbm: nvm: total access = 13000000, total read = 4107426, read hit = 958842, total_write = 8892573, write hit = 8892573, hit = 0, evict = 7292262 +[12387.612671] bdbm: llm_make_req: 17700000, 96 +[12389.535956] bdbm: llm_make_req: 17750000, 72 +[12391.688980] bdbm: llm_make_req: 17800000, 70 +[12391.744704] bdbm: nvm: total access = 13100000, total read = 4147704, read hit = 968552, total_write = 8952295, write hit = 8952295, hit = 0, evict = 7337700 +[12393.445386] bdbm: llm_make_req: 17850000, 94 +[12394.985287] bdbm: llm_make_req: 17900000, 81 +[12396.082964] bdbm: nvm: total access = 13200000, total read = 4187616, read hit = 978090, total_write = 9012383, write hit = 9012383, hit = 0, evict = 7383330 +[12397.088059] bdbm: llm_make_req: 17950000, 79 +[12398.820420] bdbm: llm_make_req: 18000000, 96 +[12400.374253] bdbm: llm_make_req: 18050000, 65 +[12401.341875] bdbm: nvm: total access = 13300000, total read = 4227600, read hit = 987500, total_write = 9072399, write hit = 9072399, hit = 0, evict = 7428769 +[12402.475675] bdbm: llm_make_req: 18100000, 96 +[12404.590294] bdbm: llm_make_req: 18150000, 14 +[12405.670260] bdbm: nvm: total access = 13400000, total read = 4267468, read hit = 996783, total_write = 9132531, write hit = 9132531, hit = 0, evict = 7474720 +[12406.007258] bdbm: llm_make_req: 18200000, 96 +[12407.821651] bdbm: llm_make_req: 18250000, 78 +[12409.896520] bdbm: llm_make_req: 18300000, 78 +[12409.946123] bdbm: nvm: total access = 13500000, total read = 4308085, read hit = 1006230, total_write = 9191914, write hit = 9191914, hit = 0, evict = 7520204 +[12411.615712] bdbm: llm_make_req: 18350000, 96 +[12425.738162] bdbm: ----------------------------------------------- +[12425.738164] bdbm: < PERFORMANCE SUMMARY > +[12425.738165] bdbm: [0] Execution Time (us): 654.514835 +[12425.738165] bdbm: +[12425.738166] bdbm: [1] Total I/Os +[12425.738166] bdbm: # of page reads: 7055464 +[12425.738167] bdbm: # of page writes: 3732561 +[12425.738167] bdbm: # of block erase: 56448 +[12425.738168] bdbm: +[12425.738168] bdbm: [2] Normal I/Os +[12425.738169] bdbm: # of page reads: 3323339 +[12425.738169] bdbm: # of page writes: 0 +[12425.738170] bdbm: # of page rmw reads: 0 +[12425.738170] bdbm: # of page rmw writes: 0 +[12425.738171] bdbm: +[12425.738171] bdbm: [3] GC I/Os +[12425.738171] bdbm: # of GC invocation: 0 +[12425.738172] bdbm: # of page reads: 3732125 +[12425.738172] bdbm: # of page writes: 3732561 +[12425.738173] bdbm: # of block erase: 56448 +[12425.738173] bdbm: +[12425.738174] bdbm: [4] Meta I/Os +[12425.738174] bdbm: # of meta page reads: 0 +[12425.738175] bdbm: # of meta page writes: 0 +[12425.738175] bdbm: +[12425.738175] bdbm: [5] Elapsed Time +[12425.738176] bdbm: page read (us): 93 (S:0 + Q:0 + D:93) +[12425.738177] bdbm: page write (us): 0 (S:0 + Q:0 + D:0) +[12425.738177] bdbm: rmw (us): 0 (S:0 + Q:0 + D:0) +[12425.738178] bdbm: +[12425.738178] bdbm: [6] Utilization (R) +[12425.738180] bdbm: 55416 55101 55137 55004 55341 54905 55194 55148 +[12425.738181] bdbm: 55110 54962 54935 55160 54986 55315 55236 55010 +[12425.738182] bdbm: 55090 54985 55233 55060 55097 55161 55171 54901 +[12425.738183] bdbm: 54925 55013 54924 54611 55362 55287 55525 55366 +[12425.738184] bdbm: 54921 55682 55283 55115 54926 55349 55377 55016 +[12425.738186] bdbm: 55215 55017 54792 55112 55242 54733 55089 54963 +[12425.738187] bdbm: 55332 55447 55455 55296 55202 55320 54920 54936 +[12425.738188] bdbm: 54902 55091 54871 55298 55356 55104 54713 54886 +[12425.738189] bdbm: 54970 55099 55016 55057 55306 55315 55351 55110 +[12425.738190] bdbm: 55108 55149 54934 55045 55184 54997 54978 55171 +[12425.738191] bdbm: 54958 54903 54899 55326 54772 54871 55238 55247 +[12425.738192] bdbm: 55230 55014 54910 55221 54949 55234 55206 55099 +[12425.738194] bdbm: 54750 54775 55084 55151 54889 55198 55272 55284 +[12425.738195] bdbm: 55442 55105 55223 55369 54915 55150 55769 55006 +[12425.738196] bdbm: 55151 55037 55152 54976 55318 55060 55297 54801 +[12425.738197] bdbm: 55632 55081 55150 55146 55003 55760 54964 55055 +[12425.738197] bdbm: +[12425.738198] bdbm: [7] Utilization (W) +[12425.738199] bdbm: 29177 29227 29248 29276 29287 29297 29307 29308 +[12425.738200] bdbm: 29309 29314 29320 29321 29324 29326 29332 29330 +[12425.738201] bdbm: 29327 29324 29320 29318 29314 29313 29311 29311 +[12425.738203] bdbm: 29305 29303 29303 29295 29292 29287 29282 29279 +[12425.738204] bdbm: 29276 29271 29271 29269 29266 29259 29256 29253 +[12425.738205] bdbm: 29252 29249 29244 29242 29239 29236 29234 29229 +[12425.738206] bdbm: 29224 29222 29219 29215 29211 29207 29204 29201 +[12425.738207] bdbm: 29199 29196 29193 29187 29184 29183 29175 29174 +[12425.738208] bdbm: 29170 29165 29158 29157 29153 29150 29145 29141 +[12425.738209] bdbm: 29137 29133 29130 29127 29122 29119 29116 29114 +[12425.738211] bdbm: 29110 29108 29107 29100 29096 29091 29084 29083 +[12425.738212] bdbm: 29080 29078 29074 29072 29071 29068 29063 29061 +[12425.738213] bdbm: 29055 29053 29051 29047 29044 29041 29036 29034 +[12425.738214] bdbm: 29033 29031 29025 29023 29019 29016 29010 29008 +[12425.738215] bdbm: 29003 28999 28997 28994 28988 28986 28983 28979 +[12425.738216] bdbm: 28973 28971 28966 28962 28961 28958 28954 28951 +[12425.738217] bdbm: [8] NVM I/Os +[12425.738217] bdbm: #_of_nvm_total_accesses: 13570391 +[12425.738218] bdbm: #_of_nvm_total_write_requests: 9234187 +[12425.738218] bdbm: #_of_nvm_total_read_requests: 4336204 +[12425.738219] bdbm: #_of_nvm_write_requests_serviced_by_nvm: 9234187 +[12425.738219] bdbm: #_of_nvm_read_requests_serviced_by_nvm: 1012837 +[12425.738220] bdbm: #_of_nvm_total_requests_serviced_by_nvm: 0 +[12425.738220] bdbm: #_of_nvm_evict_from_nvm: 7552352 +[12425.738221] bdbm: #_of_nvm_write_amplification: 7552352 : 11284913 +[12425.738221] bdbm: +[12425.738222] bdbm: ----------------------------------------------- +[12425.738222] bdbm: ----------------------------------------------- +[12425.896014] bdbm: done +[12425.896017] bdbm: [dm_ramdrive_close] closed! +[12426.283776] bdbm: [bdbm_drv_main] bdbm_drv is closed +[12426.283779] bdbm: [bdbm_drv_main] bdbm_drv is removed +[12426.302721] bdbm: bdbm_dm_stub is removed: /dev/bdbm_dm_stub (241 0) +[12426.323955] bdbm: bdbm_dm_stub is installed: /dev/bdbm_dm_stub (major:241 minor:0) +[12426.328131] bdbm: ===================================================================== +[12426.328133] bdbm: DEVICE PARAMETERS +[12426.328133] bdbm: ===================================================================== +[12426.328134] bdbm: # of channels = 8 +[12426.328134] bdbm: # of chips per channel = 16 +[12426.328135] bdbm: # of blocks per chip = 256 +[12426.328135] bdbm: # of pages per block = 128 +[12426.328136] bdbm: # of subpages per page = 1 +[12426.328136] bdbm: page main size = 4096 bytes +[12426.328137] bdbm: page oob size = 64 bytes +[12426.328137] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[12426.328138] bdbm: +[12426.328139] bdbm: ===================================================================== +[12426.328139] bdbm: RAM DISK INFO +[12426.328140] bdbm: ===================================================================== +[12426.328140] bdbm: the SSD capacity: 17179869184 (B), 16777216 (KB), 16384 (MB) +[12427.861313] bdbm: ramssd addr = ffffc90050001000 +[12427.861315] bdbm: +[12427.861315] bdbm: *** building ptr_ramssd_data begins for data curruption checks... +[12429.386430] bdbm: *** building ptr_ramssd_data done +[12429.386623] bdbm: [dm_ramdrive_probe] probe done! +[12429.386626] bdbm: [dm_ramdrive_open] open done! +[12429.448760] bdbm: nvm cache addr = ffffc90870003000 +[12429.455725] bdbm: ========================================================== +[12429.455728] bdbm: NVM CONFIGURATION +[12429.455729] bdbm: ========================================================== +[12429.455730] bdbm: total size = 536870912, nr_nvm_pages = 131072, nvm_page_size = 4096 +[12429.650356] bdbm: TRIM is disabled +[12429.650515] bdbm: ===================================================================== +[12429.650516] bdbm: DEVICE PARAMETERS +[12429.650516] bdbm: ===================================================================== +[12429.650517] bdbm: # of channels = 8 +[12429.650517] bdbm: # of chips per channel = 16 +[12429.650519] bdbm: # of blocks per chip = 256 +[12429.650519] bdbm: # of pages per block = 128 +[12429.650520] bdbm: # of subpages per page = 1 +[12429.650520] bdbm: page main size = 4096 bytes +[12429.650521] bdbm: page oob size = 64 bytes +[12429.650522] bdbm: device type = 3 (1: ramdrv, 2: ramdrive (intr), 3: ramdrive (timing), 4: BlueDBM, 5: libdummy, 6: libramdrive) +[12429.650522] bdbm: +[12429.650523] bdbm: ===================================================================== +[12429.650523] bdbm: FTL CONFIGURATION +[12429.650525] bdbm: ===================================================================== +[12429.650525] bdbm: mapping type = 4 (1: no ftl, 2: block-mapping, 3: RSD, 4: page-mapping, 5: dftl) +[12429.650526] bdbm: gc policy = 3 (1: merge 2: random, 3: greedy, 4: cost-benefit) +[12429.650526] bdbm: wl policy = 1 (1: none, 2: swap) +[12429.650527] bdbm: trim mode = 2 (1: enable, 2: disable) +[12429.650527] bdbm: kernel sector = 512 bytes +[12429.650528] bdbm: +[12429.650529] bdbm: [bdbm_drv_main] bdbm_drv is registered! +[12429.670064] bdbm: llm_make_req: 0, 1 +[12429.810006] EXT4-fs (robusta): mounting with "discard" option, but the device does not support discard +[12429.810008] EXT4-fs (robusta): mounted filesystem with ordered data mode. Opts: discard +[12432.095349] bdbm: nvm: total access = 100000, total read = 33, read hit = 5, total_write = 99966, write hit = 99966, hit = 0, evict = 0 diff --git a/result/fio_ton_o1_n500m.rslt b/result/fio_ton_o1_n500m.rslt new file mode 100644 index 0000000..a48f61b --- /dev/null +++ b/result/fio_ton_o1_n500m.rslt @@ -0,0 +1,44 @@ +JESD219: (g=0): rw=randrw, bs=512-64K/512-64K/512-64K, ioengine=libaio, iodepth=256 +... +fio-2.14-20-gd6192-dirty +Starting 4 processes +JESD219: Laying out IO file(s) (1 file(s) / 10240MB) + +JESD219: (groupid=0, jobs=4): err= 0: pid=25822: Mon Nov 7 18:15:40 2016 + read : io=16415MB, bw=27517KB/s, iops=3594, runt=610861msec + slat (usec): min=1, max=1843.4K, avg=221.55, stdev=16537.57 + clat (usec): min=417, max=3441.4K, avg=87018.00, stdev=323801.10 + lat (usec): min=420, max=3441.4K, avg=87239.60, stdev=324176.65 + clat percentiles (usec): + | 1.00th=[ 1704], 5.00th=[ 1848], 10.00th=[ 1944], 20.00th=[ 2096], + | 30.00th=[ 2320], 40.00th=[ 2736], 50.00th=[ 3696], 60.00th=[ 4048], + | 70.00th=[ 5920], 80.00th=[10816], 90.00th=[19328], 95.00th=[978944], + | 99.00th=[1646592], 99.50th=[1695744], 99.90th=[1744896], 99.95th=[1761280], + | 99.99th=[1843200] + write: io=24545MB, bw=41146KB/s, iops=5385, runt=610861msec + slat (usec): min=2, max=1843.9K, avg=399.94, stdev=22636.07 + clat (usec): min=331, max=3440.9K, avg=82007.27, stdev=314764.95 + lat (usec): min=373, max=3440.1K, avg=82407.26, stdev=315501.76 + clat percentiles (usec): + | 1.00th=[ 1624], 5.00th=[ 1736], 10.00th=[ 1800], 20.00th=[ 1928], + | 30.00th=[ 2064], 40.00th=[ 2480], 50.00th=[ 3504], 60.00th=[ 3824], + | 70.00th=[ 4960], 80.00th=[10048], 90.00th=[18048], 95.00th=[815104], + | 99.00th=[1630208], 99.50th=[1695744], 99.90th=[1744896], 99.95th=[1761280], + | 99.99th=[1843200] + lat (usec) : 500=0.01%, 750=0.01%, 1000=0.01% + lat (msec) : 2=21.16%, 4=41.29%, 10=16.89%, 20=11.61%, 50=2.89% + lat (msec) : 100=0.01%, 250=0.01%, 500=0.08%, 1000=1.39%, 2000=4.66% + lat (msec) : >=2000=0.01% + cpu : usr=0.23%, sys=28.27%, ctx=122054, majf=0, minf=43 + IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% + submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% + complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1% + issued : total=r=2195959/w=3290058/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 + latency : target=0, window=0, percentile=100.00%, depth=256 + +Run status group 0 (all jobs): + READ: io=16415MB, aggrb=27516KB/s, minb=27516KB/s, maxb=27516KB/s, mint=610861msec, maxt=610861msec + WRITE: io=24545MB, aggrb=41145KB/s, minb=41145KB/s, maxb=41145KB/s, mint=610861msec, maxt=610861msec + +Disk stats (read/write): + robusta: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00% From 37947e1e32b77bbdfcda16f9d9bf4d0aeb9ea647 Mon Sep 17 00:00:00 2001 From: Minseong Jeong Date: Tue, 15 Nov 2016 15:58:44 +0900 Subject: [PATCH 44/51] add flush --- common/.bdbm_main.o.cmd | 262 ++-- common/bdbm_main.o | Bin 0 -> 212680 bytes common/utils/.ufile.o.cmd | 213 +-- common/utils/.umemory.o.cmd | 314 +++- common/utils/.uthread.o.cmd | 170 ++- common/utils/.utime.o.cmd | 310 ++-- common/utils/ufile.o | Bin 0 -> 190648 bytes common/utils/umemory.o | Bin 0 -> 94840 bytes common/utils/uthread.o | Bin 0 -> 107536 bytes common/utils/utime.o | Bin 0 -> 106072 bytes devices/common/.dev_main.o.cmd | 167 +-- devices/common/.dev_main.o.d | 151 ++ devices/common/.dev_params.o.cmd | 310 ++-- devices/common/.dev_stub.o.cmd | 228 +-- devices/common/dev_main.o | Bin 0 -> 70984 bytes devices/common/dev_params.o | Bin 0 -> 131584 bytes devices/common/dev_stub.o | Bin 0 -> 229200 bytes devices/ramdrive/.dev_ramssd.o.cmd | 524 +++---- devices/ramdrive/.dm_ramdrive.o.cmd | 313 ++-- devices/ramdrive/.risa_dev_ramdrive.ko.cmd | 2 +- devices/ramdrive/.risa_dev_ramdrive.mod.o.cmd | 153 +- devices/ramdrive/.risa_dev_ramdrive.o.cmd | 2 +- .../.tmp_versions/risa_dev_ramdrive.mod | 5 +- devices/ramdrive/Module.symvers | 6 +- devices/ramdrive/dev_ramssd.c | 4 +- devices/ramdrive/dev_ramssd.h | 2 + devices/ramdrive/dev_ramssd.o | Bin 0 -> 187008 bytes devices/ramdrive/dm_ramdrive.c | 4 + devices/ramdrive/dm_ramdrive.h | 2 + devices/ramdrive/dm_ramdrive.o | Bin 0 -> 124592 bytes devices/ramdrive/modules.order | 2 +- devices/ramdrive/risa_dev_ramdrive.ko | Bin 63600 -> 1268664 bytes devices/ramdrive/risa_dev_ramdrive.mod.c | 49 +- devices/ramdrive/risa_dev_ramdrive.mod.o | Bin 0 -> 69768 bytes devices/ramdrive/risa_dev_ramdrive.o | Bin 0 -> 1201264 bytes .../.risa_dev_ramdrive_timing.ko.cmd | 1 + .../.risa_dev_ramdrive_timing.mod.o.cmd | 605 ++++++++ .../.risa_dev_ramdrive_timing.o.cmd | 1 + .../risa_dev_ramdrive_timing.mod | 3 + devices/ramdrive_timing/Module.symvers | 3 + devices/ramdrive_timing/modules.order | 1 + .../risa_dev_ramdrive_timing.ko | Bin 0 -> 1269264 bytes .../risa_dev_ramdrive_timing.mod.c | 86 ++ .../risa_dev_ramdrive_timing.mod.o | Bin 0 -> 69808 bytes .../risa_dev_ramdrive_timing.o | Bin 0 -> 1201824 bytes frontend/kernel/.blkdev.o.cmd | 962 ++++++++++++ frontend/kernel/.blkio.o.cmd | 917 ++++++++++++ frontend/kernel/.kmain.o.cmd | 616 ++++++++ frontend/kernel/.nvm_cache.o.cmd | 617 ++++++++ frontend/kernel/.robusta_drv.ko.cmd | 1 + frontend/kernel/.robusta_drv.mod.o.cmd | 605 ++++++++ frontend/kernel/.robusta_drv.o.cmd | 1 + frontend/kernel/.tmp_versions/robusta_drv.mod | 3 + frontend/kernel/Module.symvers | 3 + frontend/kernel/blkdev.o | Bin 0 -> 212792 bytes frontend/kernel/blkio.c | 4 + frontend/kernel/blkio.o | Bin 0 -> 209056 bytes frontend/kernel/kmain.o | Bin 0 -> 63408 bytes frontend/kernel/modules.order | 1 + frontend/kernel/nvm_cache.c | 87 +- frontend/kernel/nvm_cache.h | 11 +- frontend/kernel/nvm_cache.o | Bin 0 -> 98272 bytes frontend/kernel/robusta_drv.ko | Bin 0 -> 3165032 bytes frontend/kernel/robusta_drv.mod.c | 93 ++ frontend/kernel/robusta_drv.mod.o | Bin 0 -> 70256 bytes frontend/kernel/robusta_drv.o | Bin 0 -> 3096376 bytes frontend/kernel/umount.sh | 10 +- ftl/.ftl_params.o.cmd | 764 ++++++++++ ftl/.hlm_nobuf.o.cmd | 961 ++++++++++++ ftl/.hlm_reqs_pool.o.cmd | 957 ++++++++++++ ftl/.llm_mq.o.cmd | 774 ++++++++++ ftl/.pmu.o.cmd | 765 ++++++++++ ftl/algo/.abm.o.cmd | 907 ++++++++++++ ftl/algo/.block_ftl.o.cmd | 767 ++++++++++ ftl/algo/.page_ftl.o.cmd | 909 ++++++++++++ ftl/algo/abm.o | Bin 0 -> 187328 bytes ftl/algo/block_ftl.o | Bin 0 -> 160832 bytes ftl/algo/page_ftl.o | Bin 0 -> 207952 bytes ftl/ftl_params.o | Bin 0 -> 105728 bytes ftl/hlm_nobuf.c | 22 + ftl/hlm_nobuf.o | Bin 0 -> 219688 bytes ftl/hlm_reqs_pool.c | 99 ++ ftl/hlm_reqs_pool.o | Bin 0 -> 228024 bytes ftl/llm_mq.o | Bin 0 -> 128976 bytes ftl/pmu.o | Bin 0 -> 163128 bytes ftl/queue/.prior_queue.o.cmd | 765 ++++++++++ ftl/queue/.queue.o.cmd | 764 ++++++++++ ftl/queue/.rd_prior_queue.o.cmd | 765 ++++++++++ ftl/queue/prior_queue.o | Bin 0 -> 125360 bytes ftl/queue/queue.o | Bin 0 -> 115488 bytes ftl/queue/rd_prior_queue.o | Bin 0 -> 125912 bytes include/bdbm_drv.h | 26 +- tags | 1316 +++++++++-------- 93 files changed, 16546 insertions(+), 1839 deletions(-) create mode 100644 common/bdbm_main.o create mode 100644 common/utils/ufile.o create mode 100644 common/utils/umemory.o create mode 100644 common/utils/uthread.o create mode 100644 common/utils/utime.o create mode 100644 devices/common/.dev_main.o.d create mode 100644 devices/common/dev_main.o create mode 100644 devices/common/dev_params.o create mode 100644 devices/common/dev_stub.o create mode 100644 devices/ramdrive/dev_ramssd.o create mode 100644 devices/ramdrive/dm_ramdrive.o create mode 100644 devices/ramdrive/risa_dev_ramdrive.mod.o create mode 100644 devices/ramdrive/risa_dev_ramdrive.o create mode 100644 devices/ramdrive_timing/.risa_dev_ramdrive_timing.ko.cmd create mode 100644 devices/ramdrive_timing/.risa_dev_ramdrive_timing.mod.o.cmd create mode 100644 devices/ramdrive_timing/.risa_dev_ramdrive_timing.o.cmd create mode 100644 devices/ramdrive_timing/.tmp_versions/risa_dev_ramdrive_timing.mod create mode 100644 devices/ramdrive_timing/Module.symvers create mode 100644 devices/ramdrive_timing/modules.order create mode 100755 devices/ramdrive_timing/risa_dev_ramdrive_timing.ko create mode 100644 devices/ramdrive_timing/risa_dev_ramdrive_timing.mod.c create mode 100644 devices/ramdrive_timing/risa_dev_ramdrive_timing.mod.o create mode 100644 devices/ramdrive_timing/risa_dev_ramdrive_timing.o create mode 100644 frontend/kernel/.blkdev.o.cmd create mode 100644 frontend/kernel/.blkio.o.cmd create mode 100644 frontend/kernel/.kmain.o.cmd create mode 100644 frontend/kernel/.nvm_cache.o.cmd create mode 100644 frontend/kernel/.robusta_drv.ko.cmd create mode 100644 frontend/kernel/.robusta_drv.mod.o.cmd create mode 100644 frontend/kernel/.robusta_drv.o.cmd create mode 100644 frontend/kernel/.tmp_versions/robusta_drv.mod create mode 100644 frontend/kernel/Module.symvers create mode 100644 frontend/kernel/blkdev.o create mode 100644 frontend/kernel/blkio.o create mode 100644 frontend/kernel/kmain.o create mode 100644 frontend/kernel/modules.order create mode 100644 frontend/kernel/nvm_cache.o create mode 100644 frontend/kernel/robusta_drv.ko create mode 100644 frontend/kernel/robusta_drv.mod.c create mode 100644 frontend/kernel/robusta_drv.mod.o create mode 100644 frontend/kernel/robusta_drv.o create mode 100644 ftl/.ftl_params.o.cmd create mode 100644 ftl/.hlm_nobuf.o.cmd create mode 100644 ftl/.hlm_reqs_pool.o.cmd create mode 100644 ftl/.llm_mq.o.cmd create mode 100644 ftl/.pmu.o.cmd create mode 100644 ftl/algo/.abm.o.cmd create mode 100644 ftl/algo/.block_ftl.o.cmd create mode 100644 ftl/algo/.page_ftl.o.cmd create mode 100644 ftl/algo/abm.o create mode 100644 ftl/algo/block_ftl.o create mode 100644 ftl/algo/page_ftl.o create mode 100644 ftl/ftl_params.o create mode 100644 ftl/hlm_nobuf.o create mode 100644 ftl/hlm_reqs_pool.o create mode 100644 ftl/llm_mq.o create mode 100644 ftl/pmu.o create mode 100644 ftl/queue/.prior_queue.o.cmd create mode 100644 ftl/queue/.queue.o.cmd create mode 100644 ftl/queue/.rd_prior_queue.o.cmd create mode 100644 ftl/queue/prior_queue.o create mode 100644 ftl/queue/queue.o create mode 100644 ftl/queue/rd_prior_queue.o diff --git a/common/.bdbm_main.o.cmd b/common/.bdbm_main.o.cmd index 64011d3..608225b 100644 --- a/common/.bdbm_main.o.cmd +++ b/common/.bdbm_main.o.cmd @@ -1,14 +1,15 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/.bdbm_main.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(bdbm_main)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/.tmp_bdbm_main.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.c +cmd_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/bdbm_main.o := gcc -Wp,-MD,/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/.bdbm_main.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -DCC_HAVE_ASM_GOTO -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/3rd -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -DKBUILD_BASENAME='"bdbm_main"' -DKBUILD_MODNAME='"robusta_drv"' -c -o /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/.tmp_bdbm_main.o /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/bdbm_main.c -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.c +source_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/bdbm_main.o := /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/bdbm_main.c -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o := \ +deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/bdbm_main.o := \ include/linux/module.h \ $(wildcard include/config/modules.h) \ $(wildcard include/config/sysfs.h) \ - $(wildcard include/config/module/sig.h) \ $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/livepatch.h) \ $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/module/sig.h) \ $(wildcard include/config/generic/bug.h) \ $(wildcard include/config/kallsyms.h) \ $(wildcard include/config/smp.h) \ @@ -16,7 +17,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/tracing.h) \ $(wildcard include/config/event/tracing.h) \ $(wildcard include/config/ftrace/mcount/record.h) \ - $(wildcard include/config/livepatch.h) \ $(wildcard include/config/module/unload.h) \ $(wildcard include/config/constructors.h) \ $(wildcard include/config/debug/set/module/ronx.h) \ @@ -59,6 +59,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/uapi/asm-generic/posix_types.h \ include/linux/poison.h \ $(wildcard include/config/illegal/pointer/value.h) \ + $(wildcard include/config/page/poisoning/zero.h) \ include/uapi/linux/const.h \ include/linux/kernel.h \ $(wildcard include/config/preempt/voluntary.h) \ @@ -72,6 +73,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/linux/export.h \ $(wildcard include/config/have/underscore/symbol/prefix.h) \ $(wildcard include/config/modversions.h) \ + $(wildcard include/config/trim/unused/ksyms.h) \ arch/x86/include/asm/linkage.h \ $(wildcard include/config/x86/64.h) \ $(wildcard include/config/x86/alignment/16.h) \ @@ -79,51 +81,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m arch/x86/include/asm/bitops.h \ $(wildcard include/config/x86/cmov.h) \ arch/x86/include/asm/alternative.h \ - $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ arch/x86/include/asm/rmwcc.h \ arch/x86/include/asm/barrier.h \ $(wildcard include/config/x86/ppro/fence.h) \ @@ -139,11 +97,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m arch/x86/include/asm/required-features.h \ $(wildcard include/config/x86/minimum/cpu/family.h) \ $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/pae.h) \ $(wildcard include/config/x86/cmpxchg64.h) \ $(wildcard include/config/x86/use/3dnow.h) \ $(wildcard include/config/matom.h) \ + $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/disabled-features.h \ $(wildcard include/config/x86/intel/mpx.h) \ + $(wildcard include/config/x86/intel/memory/protection/keys.h) \ include/asm-generic/bitops/const_hweight.h \ include/asm-generic/bitops/le.h \ arch/x86/include/uapi/asm/byteorder.h \ @@ -161,16 +122,22 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/linux/printk.h \ $(wildcard include/config/message/loglevel/default.h) \ $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk/nmi.h) \ $(wildcard include/config/printk.h) \ $(wildcard include/config/dynamic/debug.h) \ include/linux/init.h \ $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/debug/rodata.h) \ $(wildcard include/config/lto.h) \ include/linux/kern_levels.h \ include/linux/cache.h \ $(wildcard include/config/arch/has/cache/line/size.h) \ include/uapi/linux/kernel.h \ include/uapi/linux/sysinfo.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ include/linux/dynamic_debug.h \ include/linux/stat.h \ arch/x86/include/uapi/asm/stat.h \ @@ -194,6 +161,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/asm-generic/percpu.h \ $(wildcard include/config/have/setup/per/cpu/area.h) \ include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ $(wildcard include/config/base/small.h) \ include/linux/percpu-defs.h \ $(wildcard include/config/debug/force/weak/per/cpu.h) \ @@ -207,8 +175,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/bug.h) \ $(wildcard include/config/generic/bug/relative/pointers.h) \ arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/vm86.h) \ $(wildcard include/config/ia32/emulation.h) \ arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ arch/x86/include/asm/page_64.h \ $(wildcard include/config/debug/virtual.h) \ $(wildcard include/config/flatmem.h) \ @@ -217,14 +191,44 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/asm-generic/memory_model.h \ $(wildcard include/config/discontigmem.h) \ $(wildcard include/config/sparsemem/vmemmap.h) \ + $(wildcard include/config/sparsemem.h) \ + include/linux/pfn.h \ include/asm-generic/getorder.h \ arch/x86/include/asm/cpufeature.h \ $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ + $(wildcard include/config/x86/fast/feature/tests.h) \ arch/x86/include/asm/processor.h \ + $(wildcard include/config/cc/stackprotector.h) \ $(wildcard include/config/m486.h) \ + $(wildcard include/config/x86/debugctlmsr.h) \ $(wildcard include/config/xen.h) \ + arch/x86/include/asm/processor-flags.h \ + arch/x86/include/uapi/asm/processor-flags.h \ arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/ptrace.h \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ arch/x86/include/uapi/asm/sigcontext.h \ arch/x86/include/asm/current.h \ arch/x86/include/asm/msr.h \ @@ -233,8 +237,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/tdp/level/1.h) \ $(wildcard include/config/tdp/level/2.h) \ $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ arch/x86/include/uapi/asm/errno.h \ include/uapi/asm-generic/errno.h \ include/uapi/asm-generic/errno-base.h \ @@ -254,7 +256,21 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m arch/x86/include/uapi/asm/ioctl.h \ include/asm-generic/ioctl.h \ include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/linux/tracepoint-defs.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + include/asm-generic/atomic-long.h \ + include/linux/static_key.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/frame.h \ + $(wildcard include/config/frame/pointer.h) \ arch/x86/include/asm/special_insns.h \ arch/x86/include/asm/fpu/types.h \ include/linux/personality.h \ @@ -269,13 +285,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/irqsoff/tracer.h) \ $(wildcard include/config/trace/irqflags/support.h) \ arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ include/linux/bottom_half.h \ include/linux/spinlock_types.h \ include/linux/lockdep.h \ @@ -283,9 +292,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/lock/stat.h) \ include/linux/rwlock_types.h \ arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/qspinlock.h \ include/asm-generic/qspinlock.h \ arch/x86/include/asm/qrwlock.h \ @@ -334,21 +340,23 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/zone/dma32.h) \ $(wildcard include/config/zone/device.h) \ $(wildcard include/config/numa.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/compaction.h) \ $(wildcard include/config/cma.h) \ include/linux/mmdebug.h \ $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/vm/pgflags.h) \ include/linux/mmzone.h \ $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ $(wildcard include/config/memcg.h) \ $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ $(wildcard include/config/flat/node/mem/map.h) \ $(wildcard include/config/page/extension.h) \ $(wildcard include/config/no/bootmem.h) \ $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/have/memory/present.h) \ $(wildcard include/config/have/memoryless/nodes.h) \ $(wildcard include/config/need/node/memmap/size.h) \ @@ -422,6 +430,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/linux/workqueue.h \ $(wildcard include/config/debug/objects/work.h) \ $(wildcard include/config/freezer.h) \ + $(wildcard include/config/wq/watchdog.h) \ include/linux/timer.h \ $(wildcard include/config/timer/stats.h) \ $(wildcard include/config/debug/objects/timers.h) \ @@ -433,6 +442,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m arch/x86/include/asm/mmzone.h \ arch/x86/include/asm/mmzone_64.h \ arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/local/apic.h) \ $(wildcard include/config/x86/io/apic.h) \ $(wildcard include/config/x86/32/smp.h) \ $(wildcard include/config/debug/nmi/selftest.h) \ @@ -469,7 +479,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/pm/clk.h) \ $(wildcard include/config/pm/generic/domains.h) \ arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ $(wildcard include/config/provide/ohci1394/dma/init.h) \ $(wildcard include/config/pci/mmconfig.h) \ $(wildcard include/config/x86/intel/mid.h) \ @@ -508,12 +517,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m arch/x86/include/asm/xen/hypervisor.h \ include/xen/features.h \ include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ arch/x86/include/uapi/asm/vsyscall.h \ include/asm-generic/fixmap.h \ arch/x86/include/asm/idle.h \ @@ -531,7 +534,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/linux/percpu.h \ $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ include/linux/elf.h \ arch/x86/include/asm/elf.h \ $(wildcard include/config/x86/x32/abi.h) \ @@ -545,7 +547,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ $(wildcard include/config/have/cmpxchg/double.h) \ $(wildcard include/config/have/aligned/struct/page.h) \ - $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/userfaultfd.h) \ $(wildcard include/config/aio.h) \ $(wildcard include/config/mmu/notifier.h) \ @@ -628,12 +629,13 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/fair/group/sched.h) \ $(wildcard include/config/rt/group/sched.h) \ $(wildcard include/config/cgroup/sched.h) \ - $(wildcard include/config/memcg/kmem.h) \ + $(wildcard include/config/slob.h) \ $(wildcard include/config/compat/brk.h) \ $(wildcard include/config/virt/cpu/accounting/gen.h) \ $(wildcard include/config/sysvipc.h) \ $(wildcard include/config/auditsyscall.h) \ $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/ubsan.h) \ $(wildcard include/config/task/xacct.h) \ $(wildcard include/config/cpusets.h) \ $(wildcard include/config/cgroups.h) \ @@ -642,12 +644,15 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/fault/injection.h) \ $(wildcard include/config/latencytop.h) \ $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/kcov.h) \ $(wildcard include/config/bcache.h) \ $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ $(wildcard include/config/have/unstable/sched/clock.h) \ $(wildcard include/config/irq/time/accounting.h) \ $(wildcard include/config/stack/growsup.h) \ $(wildcard include/config/have/copy/thread/tls.h) \ + $(wildcard include/config/have/exit/thread.h) \ + $(wildcard include/config/cpu/freq.h) \ include/uapi/linux/sched.h \ include/linux/sched/prio.h \ include/linux/capability.h \ @@ -681,8 +686,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/asm-generic/siginfo.h \ include/uapi/asm-generic/siginfo.h \ include/linux/pid.h \ - include/linux/proportions.h \ - include/linux/percpu_counter.h \ include/linux/seccomp.h \ $(wildcard include/config/seccomp.h) \ $(wildcard include/config/have/arch/seccomp/filter.h) \ @@ -711,6 +714,8 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/time/low/res.h) \ $(wildcard include/config/timerfd.h) \ include/linux/timerqueue.h \ + include/linux/kcov.h \ + include/uapi/linux/kcov.h \ include/linux/task_io_accounting.h \ $(wildcard include/config/task/io/accounting.h) \ include/linux/latencytop.h \ @@ -724,6 +729,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/security/selinux.h) \ include/uapi/linux/magic.h \ include/linux/cgroup-defs.h \ + $(wildcard include/config/sock/cgroup/data.h) \ include/uapi/linux/limits.h \ include/linux/percpu-refcount.h \ include/linux/percpu-rwsem.h \ @@ -752,10 +758,11 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/failslab.h) \ $(wildcard include/config/slab.h) \ $(wildcard include/config/slub.h) \ - $(wildcard include/config/slob.h) \ include/linux/kmemleak.h \ $(wildcard include/config/debug/kmemleak.h) \ include/linux/kasan.h \ + include/linux/uuid.h \ + include/uapi/linux/uuid.h \ include/linux/device.h \ $(wildcard include/config/debug/devres.h) \ $(wildcard include/config/generic/msi/irq/domain.h) \ @@ -769,22 +776,16 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/linux/pinctrl/devinfo.h \ include/linux/pinctrl/consumer.h \ include/linux/seq_file.h \ - include/linux/pinctrl/pinctrl-state.h \ - include/linux/ratelimit.h \ - arch/x86/include/asm/device.h \ - $(wildcard include/config/x86/dev/dma/ops.h) \ - $(wildcard include/config/intel/iommu.h) \ - $(wildcard include/config/amd/iommu.h) \ - include/linux/pm_wakeup.h \ include/linux/fs.h \ $(wildcard include/config/fs/posix/acl.h) \ $(wildcard include/config/cgroup/writeback.h) \ $(wildcard include/config/ima.h) \ $(wildcard include/config/fsnotify.h) \ + $(wildcard include/config/fs/encryption.h) \ $(wildcard include/config/file/locking.h) \ $(wildcard include/config/quota.h) \ - $(wildcard include/config/blk/dev/loop.h) \ $(wildcard include/config/fs/dax.h) \ + $(wildcard include/config/mandatory/file/locking.h) \ $(wildcard include/config/migration.h) \ include/linux/dcache.h \ include/linux/rculist_bl.h \ @@ -792,17 +793,22 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/linux/bit_spinlock.h \ include/linux/lockref.h \ $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ + include/linux/stringhash.h \ + $(wildcard include/config/dcache/word/access.h) \ include/linux/path.h \ include/linux/list_lru.h \ include/linux/shrinker.h \ include/linux/radix-tree.h \ + $(wildcard include/config/radix/tree/multiorder.h) \ include/linux/semaphore.h \ include/uapi/linux/fiemap.h \ include/linux/migrate_mode.h \ include/linux/blk_types.h \ + include/linux/delayed_call.h \ include/uapi/linux/fs.h \ include/linux/quota.h \ $(wildcard include/config/quota/netlink/interface.h) \ + include/linux/percpu_counter.h \ include/uapi/linux/dqblk_xfs.h \ include/linux/dqblk_v1.h \ include/linux/dqblk_v2.h \ @@ -814,13 +820,25 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/uapi/linux/fcntl.h \ arch/x86/include/uapi/asm/fcntl.h \ include/uapi/asm-generic/fcntl.h \ + include/linux/pinctrl/pinctrl-state.h \ + include/linux/ratelimit.h \ + arch/x86/include/asm/device.h \ + $(wildcard include/config/x86/dev/dma/ops.h) \ + $(wildcard include/config/intel/iommu.h) \ + $(wildcard include/config/amd/iommu.h) \ + $(wildcard include/config/pci/domains.h) \ + include/linux/pm_wakeup.h \ include/linux/pagemap.h \ include/linux/mm.h \ + $(wildcard include/config/have/arch/mmap/rnd/bits.h) \ + $(wildcard include/config/have/arch/mmap/rnd/compat/bits.h) \ + $(wildcard include/config/arch/uses/high/vma/flags.h) \ $(wildcard include/config/ppc.h) \ $(wildcard include/config/parisc.h) \ $(wildcard include/config/metag.h) \ $(wildcard include/config/shmem.h) \ $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/page/poisoning.h) \ $(wildcard include/config/debug/pagealloc.h) \ $(wildcard include/config/hugetlbfs.h) \ include/linux/debug_locks.h \ @@ -831,17 +849,19 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/linux/stacktrace.h \ $(wildcard include/config/stacktrace.h) \ $(wildcard include/config/user/stacktrace/support.h) \ + include/linux/page_ref.h \ + $(wildcard include/config/debug/page/ref.h) \ + include/linux/page-flags.h \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + $(wildcard include/config/ksm.h) \ arch/x86/include/asm/pgtable.h \ $(wildcard include/config/debug/wx.h) \ $(wildcard include/config/have/arch/soft/dirty.h) \ arch/x86/include/asm/pgtable_64.h \ include/asm-generic/pgtable.h \ $(wildcard include/config/have/arch/huge/vmap.h) \ - include/linux/page-flags.h \ - $(wildcard include/config/arch/uses/pg/uncached.h) \ - $(wildcard include/config/memory/failure.h) \ - $(wildcard include/config/swap.h) \ - $(wildcard include/config/ksm.h) \ include/linux/huge_mm.h \ include/linux/vmstat.h \ $(wildcard include/config/vm/event/counters.h) \ @@ -855,6 +875,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m arch/x86/include/asm/uaccess.h \ $(wildcard include/config/x86/intel/usercopy.h) \ $(wildcard include/config/debug/strict/user/copy/checks.h) \ + include/linux/kasan-checks.h \ arch/x86/include/asm/smap.h \ $(wildcard include/config/x86/smap.h) \ arch/x86/include/asm/uaccess_64.h \ @@ -864,13 +885,13 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/linux/vtime.h \ include/linux/context_tracking_state.h \ $(wildcard include/config/context/tracking.h) \ - include/linux/static_key.h \ arch/x86/include/asm/hardirq.h \ $(wildcard include/config/x86/thermal/vector.h) \ $(wildcard include/config/x86/mce/threshold.h) \ $(wildcard include/config/x86/mce/amd.h) \ $(wildcard include/config/hyperv.h) \ include/linux/irq.h \ + $(wildcard include/config/generic/irq/ipi.h) \ $(wildcard include/config/irq/domain/hierarchy.h) \ $(wildcard include/config/generic/pending/irq.h) \ $(wildcard include/config/hardirqs/sw/resend.h) \ @@ -892,10 +913,10 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m $(wildcard include/config/dmar/table.h) \ $(wildcard include/config/ht/irq.h) \ $(wildcard include/config/x86/uv.h) \ + $(wildcard include/config/vmd.h) \ include/linux/profile.h \ $(wildcard include/config/profiling.h) \ arch/x86/include/asm/sections.h \ - $(wildcard include/config/debug/rodata.h) \ include/asm-generic/sections.h \ arch/x86/include/asm/cacheflush.h \ $(wildcard include/config/debug/rodata/test.h) \ @@ -913,38 +934,41 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_m include/linux/scatterlist.h \ $(wildcard include/config/debug/sg.h) \ $(wildcard include/config/need/sg/dma/length.h) \ + $(wildcard include/config/arch/has/sg/chain.h) \ + $(wildcard include/config/sg/pool.h) \ include/linux/elevator.h \ include/linux/hashtable.h \ include/linux/hash.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ + $(wildcard include/config/have/arch/hash.h) \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/bdbm_drv.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/utime.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/usync.h \ include/generated/uapi/linux/version.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/umemory.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/debug.h \ $(wildcard include/config/enable/msg.h) \ $(wildcard include/config/enable/debug.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/ftl_params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/../devices/common/dev_params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/llm_noq.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/llm_mq.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_nobuf.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_buf.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_dftl.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/hlm_rsd.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/devices.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/pmu.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/no_ftl.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/block_ftl.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/page_ftl.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl/algo/dftl.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/../frontend/kernel/nvm_cache.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl/ftl_params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/../devices/common/dev_params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl/llm_noq.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl/llm_mq.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl/hlm_nobuf.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl/hlm_buf.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl/hlm_dftl.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl/hlm_rsd.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/devices.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/bdbm_drv.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl/pmu.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl/algo/no_ftl.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl/algo/block_ftl.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl/algo/page_ftl.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl/algo/dftl.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/../frontend/kernel/nvm_cache.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/ufile.h \ include/linux/buffer_head.h \ -/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o) +/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/bdbm_main.o: $(deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/bdbm_main.o) -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/bdbm_main.o): +$(deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/bdbm_main.o): diff --git a/common/bdbm_main.o b/common/bdbm_main.o new file mode 100644 index 0000000000000000000000000000000000000000..6bdd0b2229b8ab0e32b969617ae01b9efc3a9b0a GIT binary patch literal 212680 zcmb@v34B!L)jxjkOlG*r1ZFaXWJm%`2upy3Ojrj3WZ1%hERi+Hk_AE%wuDK*xKyKp zf{5addn_(kwPM|Hj~n1pi&`z#4YvwbTeP+Mwkp5#J?GrX&}!fJ|M~p=$j$eA&Uwyr zp7lQWxyzh8b!M5vG!6Sd)0kj%GFxgGdqz3qB*G|S^fr1LM}ZeS?QX?QnGaRh)Niba*-kv$214 zNA2+?6PGS~?y)(rJg}dR^ydKnu$SVFKObbUYA63$5Z!WuO6T3Yo2q8}v|x1GBZrV= z+qEdw1>c$8&2JF!o#(eDKkAytA8aFy)YxNZ{Dzv!KKuoB zxLeS;(Jk+IH$O<}qT8uMqT}9;uD;{+(1}CDw%i1^o%$zKX*5P=Zu?d=Nkpa=pO|>T zIr-E-{N!T#_6yNIWE$Nz^ z1<(6v=uKQUarwkb>Z02xhq>lHq;}SB6_4TwMKSSdIvB^EB{fP|&c-F&F?rP5#+wJS ztaAt-%OC+&|FMhEgB;}LlWP}Nf6K4a-yXh)z?X) zPg=Z)>m=EiFq@hnqCNy?lLMW3%-Zsg7R#=p#|HjKcpMsc*JCfDY7i3jmPffu9(b1O zgv!%dTG30ims6>y7Jo9e_{(EcFk+u!+y9v3j;(_7e||>!9as29>(LL{;6F0t3{D(- z4VC-(Py0aS-w!>qKDqL_bjLnL!4e8_?A`BAoM4sCxAVN4zeU<@|I(JaKzd|Hi#xjQ zgA?U6Mla9-l^{8SB-DJJHW(z3q+W1VzS%M@o)%tDwv-WXTh3z3039X&gjknQ-@Tx< z!f5$TVhJc7&P&fIh_OOtf8Iv+5u@dvf3uecmDYiMgzO>v^97HEe!5ps);~3W{YQw) zo+CF#QGMgO+M;z0>zivE*Vh%*HMG=ktSPElS+lNkWo%O?SQTqr-%`7NWzm}2*!tSF zMMH<;{}qkv)-|pdt98{4>xZs@PyA;NhmXSASgbKNHn_xgSP83TL8j}f*RE|`5zHSH zTvgq$wsvK3N&n`t{Z}qaNl1Tsb!>gZ`ns{f#>S@RTuRpvY-kS7UNCd!N!I_KU&H!M z)oUA82J6?Z3$~omRNHBMa$Foo&BnUQ#`T>hKM}v}Z|(o$&$e6Dvi85``|tIk70}Wc zY>GA3)CQ}AtJYRG*9TYDZfaPO5dFWG^XL6EHr1~GFK!HT6w3aeEwi?
nOaNx>y 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 Q(DrL?&s97n-kzWQ8{Z2DKmY&$ literal 0 HcmV?d00001 diff --git a/common/utils/.ufile.o.cmd b/common/utils/.ufile.o.cmd index f62fdee..1e9fb95 100644 --- a/common/utils/.ufile.o.cmd +++ b/common/utils/.ufile.o.cmd @@ -1,10 +1,11 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.ufile.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(ufile)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_ufile.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.c +cmd_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/ufile.o := gcc -Wp,-MD,/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/.ufile.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -DCC_HAVE_ASM_GOTO -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/3rd -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -DKBUILD_BASENAME='"ufile"' -DKBUILD_MODNAME='"robusta_drv"' -c -o /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/.tmp_ufile.o /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/ufile.c -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.c +source_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/ufile.o := /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/ufile.c -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o := \ +deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/ufile.o := \ include/linux/init.h \ $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/debug/rodata.h) \ $(wildcard include/config/lto.h) \ include/linux/compiler.h \ $(wildcard include/config/sparse/rcu/pointer.h) \ @@ -44,9 +45,10 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/module.h \ $(wildcard include/config/modules.h) \ $(wildcard include/config/sysfs.h) \ - $(wildcard include/config/module/sig.h) \ $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/livepatch.h) \ $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/module/sig.h) \ $(wildcard include/config/generic/bug.h) \ $(wildcard include/config/kallsyms.h) \ $(wildcard include/config/smp.h) \ @@ -54,7 +56,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/tracing.h) \ $(wildcard include/config/event/tracing.h) \ $(wildcard include/config/ftrace/mcount/record.h) \ - $(wildcard include/config/livepatch.h) \ $(wildcard include/config/module/unload.h) \ $(wildcard include/config/constructors.h) \ $(wildcard include/config/debug/set/module/ronx.h) \ @@ -62,6 +63,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/debug/list.h) \ include/linux/poison.h \ $(wildcard include/config/illegal/pointer/value.h) \ + $(wildcard include/config/page/poisoning/zero.h) \ include/uapi/linux/const.h \ include/linux/kernel.h \ $(wildcard include/config/preempt/voluntary.h) \ @@ -75,6 +77,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/export.h \ $(wildcard include/config/have/underscore/symbol/prefix.h) \ $(wildcard include/config/modversions.h) \ + $(wildcard include/config/trim/unused/ksyms.h) \ arch/x86/include/asm/linkage.h \ $(wildcard include/config/x86/64.h) \ $(wildcard include/config/x86/alignment/16.h) \ @@ -82,51 +85,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/bitops.h \ $(wildcard include/config/x86/cmov.h) \ arch/x86/include/asm/alternative.h \ - $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ arch/x86/include/asm/rmwcc.h \ arch/x86/include/asm/barrier.h \ $(wildcard include/config/x86/ppro/fence.h) \ @@ -142,11 +101,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/required-features.h \ $(wildcard include/config/x86/minimum/cpu/family.h) \ $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/pae.h) \ $(wildcard include/config/x86/cmpxchg64.h) \ $(wildcard include/config/x86/use/3dnow.h) \ $(wildcard include/config/matom.h) \ + $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/disabled-features.h \ $(wildcard include/config/x86/intel/mpx.h) \ + $(wildcard include/config/x86/intel/memory/protection/keys.h) \ include/asm-generic/bitops/const_hweight.h \ include/asm-generic/bitops/le.h \ arch/x86/include/uapi/asm/byteorder.h \ @@ -164,6 +126,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/printk.h \ $(wildcard include/config/message/loglevel/default.h) \ $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk/nmi.h) \ $(wildcard include/config/printk.h) \ $(wildcard include/config/dynamic/debug.h) \ include/linux/kern_levels.h \ @@ -171,6 +134,10 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/arch/has/cache/line/size.h) \ include/uapi/linux/kernel.h \ include/uapi/linux/sysinfo.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ include/linux/dynamic_debug.h \ include/linux/stat.h \ arch/x86/include/uapi/asm/stat.h \ @@ -194,6 +161,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/asm-generic/percpu.h \ $(wildcard include/config/have/setup/per/cpu/area.h) \ include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ $(wildcard include/config/base/small.h) \ include/linux/percpu-defs.h \ $(wildcard include/config/debug/force/weak/per/cpu.h) \ @@ -207,8 +175,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/bug.h) \ $(wildcard include/config/generic/bug/relative/pointers.h) \ arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/vm86.h) \ $(wildcard include/config/ia32/emulation.h) \ arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ arch/x86/include/asm/page_64.h \ $(wildcard include/config/debug/virtual.h) \ $(wildcard include/config/flatmem.h) \ @@ -217,14 +191,44 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/asm-generic/memory_model.h \ $(wildcard include/config/discontigmem.h) \ $(wildcard include/config/sparsemem/vmemmap.h) \ + $(wildcard include/config/sparsemem.h) \ + include/linux/pfn.h \ include/asm-generic/getorder.h \ arch/x86/include/asm/cpufeature.h \ $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ + $(wildcard include/config/x86/fast/feature/tests.h) \ arch/x86/include/asm/processor.h \ + $(wildcard include/config/cc/stackprotector.h) \ $(wildcard include/config/m486.h) \ + $(wildcard include/config/x86/debugctlmsr.h) \ $(wildcard include/config/xen.h) \ + arch/x86/include/asm/processor-flags.h \ + arch/x86/include/uapi/asm/processor-flags.h \ arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/ptrace.h \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ arch/x86/include/uapi/asm/sigcontext.h \ arch/x86/include/asm/current.h \ arch/x86/include/asm/msr.h \ @@ -233,8 +237,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/tdp/level/1.h) \ $(wildcard include/config/tdp/level/2.h) \ $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ arch/x86/include/uapi/asm/errno.h \ include/uapi/asm-generic/errno.h \ include/uapi/asm-generic/errno-base.h \ @@ -254,7 +256,21 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/uapi/asm/ioctl.h \ include/asm-generic/ioctl.h \ include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/linux/tracepoint-defs.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + include/asm-generic/atomic-long.h \ + include/linux/static_key.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/frame.h \ + $(wildcard include/config/frame/pointer.h) \ arch/x86/include/asm/special_insns.h \ arch/x86/include/asm/fpu/types.h \ include/linux/personality.h \ @@ -269,13 +285,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/irqsoff/tracer.h) \ $(wildcard include/config/trace/irqflags/support.h) \ arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ include/linux/bottom_half.h \ include/linux/spinlock_types.h \ include/linux/lockdep.h \ @@ -283,9 +292,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/lock/stat.h) \ include/linux/rwlock_types.h \ arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/qspinlock.h \ include/asm-generic/qspinlock.h \ arch/x86/include/asm/qrwlock.h \ @@ -334,21 +340,23 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/zone/dma32.h) \ $(wildcard include/config/zone/device.h) \ $(wildcard include/config/numa.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/compaction.h) \ $(wildcard include/config/cma.h) \ include/linux/mmdebug.h \ $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/vm/pgflags.h) \ include/linux/mmzone.h \ $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ $(wildcard include/config/memcg.h) \ $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ $(wildcard include/config/flat/node/mem/map.h) \ $(wildcard include/config/page/extension.h) \ $(wildcard include/config/no/bootmem.h) \ $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/have/memory/present.h) \ $(wildcard include/config/have/memoryless/nodes.h) \ $(wildcard include/config/need/node/memmap/size.h) \ @@ -422,6 +430,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/workqueue.h \ $(wildcard include/config/debug/objects/work.h) \ $(wildcard include/config/freezer.h) \ + $(wildcard include/config/wq/watchdog.h) \ include/linux/timer.h \ $(wildcard include/config/timer/stats.h) \ $(wildcard include/config/debug/objects/timers.h) \ @@ -433,6 +442,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/mmzone.h \ arch/x86/include/asm/mmzone_64.h \ arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/local/apic.h) \ $(wildcard include/config/x86/io/apic.h) \ $(wildcard include/config/x86/32/smp.h) \ $(wildcard include/config/debug/nmi/selftest.h) \ @@ -469,7 +479,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/pm/clk.h) \ $(wildcard include/config/pm/generic/domains.h) \ arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ $(wildcard include/config/provide/ohci1394/dma/init.h) \ $(wildcard include/config/pci/mmconfig.h) \ $(wildcard include/config/x86/intel/mid.h) \ @@ -508,12 +517,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/xen/hypervisor.h \ include/xen/features.h \ include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ arch/x86/include/uapi/asm/vsyscall.h \ include/asm-generic/fixmap.h \ arch/x86/include/asm/idle.h \ @@ -531,7 +534,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/percpu.h \ $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ include/linux/elf.h \ arch/x86/include/asm/elf.h \ $(wildcard include/config/x86/x32/abi.h) \ @@ -545,7 +547,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ $(wildcard include/config/have/cmpxchg/double.h) \ $(wildcard include/config/have/aligned/struct/page.h) \ - $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/userfaultfd.h) \ $(wildcard include/config/aio.h) \ $(wildcard include/config/mmu/notifier.h) \ @@ -645,7 +646,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/have/syscall/tracepoints.h) \ include/linux/tracepoint.h \ $(wildcard include/config/tracepoint.h) \ - include/linux/static_key.h \ include/linux/trace_events.h \ $(wildcard include/config/perf/events.h) \ $(wildcard include/config/bpf/events.h) \ @@ -653,16 +653,21 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/ring/buffer/allow/swap.h) \ include/linux/kmemcheck.h \ include/linux/mm.h \ + $(wildcard include/config/have/arch/mmap/rnd/bits.h) \ + $(wildcard include/config/have/arch/mmap/rnd/compat/bits.h) \ + $(wildcard include/config/arch/uses/high/vma/flags.h) \ $(wildcard include/config/ppc.h) \ $(wildcard include/config/parisc.h) \ $(wildcard include/config/metag.h) \ $(wildcard include/config/stack/growsup.h) \ $(wildcard include/config/shmem.h) \ $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/page/poisoning.h) \ $(wildcard include/config/debug/pagealloc.h) \ $(wildcard include/config/hugetlbfs.h) \ include/linux/debug_locks.h \ $(wildcard include/config/debug/locking/api/selftests.h) \ + include/linux/percpu-refcount.h \ include/linux/bit_spinlock.h \ include/linux/shrinker.h \ include/linux/resource.h \ @@ -676,17 +681,19 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/stacktrace.h \ $(wildcard include/config/stacktrace.h) \ $(wildcard include/config/user/stacktrace/support.h) \ + include/linux/page_ref.h \ + $(wildcard include/config/debug/page/ref.h) \ + include/linux/page-flags.h \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + $(wildcard include/config/ksm.h) \ arch/x86/include/asm/pgtable.h \ $(wildcard include/config/debug/wx.h) \ $(wildcard include/config/have/arch/soft/dirty.h) \ arch/x86/include/asm/pgtable_64.h \ include/asm-generic/pgtable.h \ $(wildcard include/config/have/arch/huge/vmap.h) \ - include/linux/page-flags.h \ - $(wildcard include/config/arch/uses/pg/uncached.h) \ - $(wildcard include/config/memory/failure.h) \ - $(wildcard include/config/swap.h) \ - $(wildcard include/config/ksm.h) \ include/linux/huge_mm.h \ include/linux/vmstat.h \ $(wildcard include/config/vm/event/counters.h) \ @@ -697,18 +704,18 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/memory/balloon.h) \ $(wildcard include/config/balloon/compaction.h) \ include/linux/seq_file.h \ - include/linux/poll.h \ include/linux/fs.h \ $(wildcard include/config/fs/posix/acl.h) \ $(wildcard include/config/security.h) \ $(wildcard include/config/cgroup/writeback.h) \ $(wildcard include/config/ima.h) \ $(wildcard include/config/fsnotify.h) \ + $(wildcard include/config/fs/encryption.h) \ $(wildcard include/config/epoll.h) \ $(wildcard include/config/file/locking.h) \ $(wildcard include/config/quota.h) \ - $(wildcard include/config/blk/dev/loop.h) \ $(wildcard include/config/fs/dax.h) \ + $(wildcard include/config/mandatory/file/locking.h) \ $(wildcard include/config/block.h) \ include/linux/kdev_t.h \ include/uapi/linux/kdev_t.h \ @@ -718,10 +725,13 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/list_bl.h \ include/linux/lockref.h \ $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ + include/linux/stringhash.h \ + $(wildcard include/config/dcache/word/access.h) \ include/linux/path.h \ include/linux/list_lru.h \ - $(wildcard include/config/memcg/kmem.h) \ + $(wildcard include/config/slob.h) \ include/linux/radix-tree.h \ + $(wildcard include/config/radix/tree/multiorder.h) \ include/linux/pid.h \ include/linux/semaphore.h \ include/uapi/linux/fiemap.h \ @@ -731,6 +741,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/blk_types.h \ $(wildcard include/config/blk/cgroup.h) \ $(wildcard include/config/blk/dev/integrity.h) \ + include/linux/delayed_call.h \ include/uapi/linux/fs.h \ include/uapi/linux/limits.h \ include/linux/nfs_fs_i.h \ @@ -738,9 +749,15 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/uapi/linux/fcntl.h \ arch/x86/include/uapi/asm/fcntl.h \ include/uapi/asm-generic/fcntl.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/linux/poll.h \ arch/x86/include/asm/uaccess.h \ $(wildcard include/config/x86/intel/usercopy.h) \ $(wildcard include/config/debug/strict/user/copy/checks.h) \ + include/linux/kasan-checks.h \ arch/x86/include/asm/smap.h \ $(wildcard include/config/x86/smap.h) \ arch/x86/include/asm/uaccess_64.h \ @@ -765,6 +782,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/x86/mce/amd.h) \ $(wildcard include/config/hyperv.h) \ include/linux/irq.h \ + $(wildcard include/config/generic/irq/ipi.h) \ $(wildcard include/config/irq/domain/hierarchy.h) \ $(wildcard include/config/generic/pending/irq.h) \ $(wildcard include/config/hardirqs/sw/resend.h) \ @@ -786,10 +804,10 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/dmar/table.h) \ $(wildcard include/config/ht/irq.h) \ $(wildcard include/config/x86/uv.h) \ + $(wildcard include/config/vmd.h) \ include/linux/profile.h \ $(wildcard include/config/profiling.h) \ arch/x86/include/asm/sections.h \ - $(wildcard include/config/debug/rodata.h) \ include/asm-generic/sections.h \ include/linux/perf_event.h \ $(wildcard include/config/have/hw/breakpoint.h) \ @@ -800,7 +818,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/perf_event.h \ $(wildcard include/config/cpu/sup/amd.h) \ arch/x86/include/asm/stacktrace.h \ - $(wildcard include/config/frame/pointer.h) \ include/linux/uaccess.h \ include/linux/sched.h \ $(wildcard include/config/sched/debug.h) \ @@ -826,6 +843,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/compat/brk.h) \ $(wildcard include/config/auditsyscall.h) \ $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/ubsan.h) \ $(wildcard include/config/task/xacct.h) \ $(wildcard include/config/cpusets.h) \ $(wildcard include/config/cgroups.h) \ @@ -834,10 +852,13 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/fault/injection.h) \ $(wildcard include/config/latencytop.h) \ $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/kcov.h) \ $(wildcard include/config/bcache.h) \ $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ $(wildcard include/config/have/unstable/sched/clock.h) \ $(wildcard include/config/have/copy/thread/tls.h) \ + $(wildcard include/config/have/exit/thread.h) \ + $(wildcard include/config/cpu/freq.h) \ include/uapi/linux/sched.h \ include/linux/sched/prio.h \ include/linux/plist.h \ @@ -851,7 +872,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/uapi/asm/shmbuf.h \ include/uapi/asm-generic/shmbuf.h \ arch/x86/include/asm/shmparam.h \ - include/linux/proportions.h \ include/linux/seccomp.h \ $(wildcard include/config/seccomp.h) \ $(wildcard include/config/have/arch/seccomp/filter.h) \ @@ -869,16 +889,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/time/low/res.h) \ $(wildcard include/config/timerfd.h) \ include/linux/timerqueue.h \ + include/linux/kcov.h \ + include/uapi/linux/kcov.h \ include/linux/task_io_accounting.h \ $(wildcard include/config/task/io/accounting.h) \ include/linux/latencytop.h \ - include/linux/cred.h \ - $(wildcard include/config/debug/credentials.h) \ - include/linux/selinux.h \ - $(wildcard include/config/security/selinux.h) \ include/uapi/linux/magic.h \ include/linux/cgroup-defs.h \ - include/linux/percpu-refcount.h \ + $(wildcard include/config/sock/cgroup/data.h) \ include/linux/cgroup_subsys.h \ $(wildcard include/config/cgroup/cpuacct.h) \ $(wildcard include/config/cgroup/device.h) \ @@ -933,7 +951,9 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/x86/dev/dma/ops.h) \ $(wildcard include/config/intel/iommu.h) \ $(wildcard include/config/amd/iommu.h) \ + $(wildcard include/config/pci/domains.h) \ include/linux/pm_wakeup.h \ + include/linux/cpuhotplug.h \ include/linux/irq_work.h \ $(wildcard include/config/irq/work.h) \ arch/x86/include/asm/irq_work.h \ @@ -942,15 +962,16 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/have/perf/regs.h) \ arch/x86/include/uapi/asm/perf_regs.h \ include/linux/cgroup.h \ + $(wildcard include/config/cgroup/data.h) \ include/uapi/linux/cgroupstats.h \ include/uapi/linux/taskstats.h \ include/linux/user_namespace.h \ $(wildcard include/config/persistent/keyrings.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/debug.h \ $(wildcard include/config/enable/msg.h) \ $(wildcard include/config/enable/debug.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/umemory.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/ufile.h \ include/linux/buffer_head.h \ include/linux/pagemap.h \ include/linux/highmem.h \ @@ -959,6 +980,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/asm-generic/cacheflush.h \ include/linux/hugetlb_inline.h \ -/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o) +/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/ufile.o: $(deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/ufile.o) -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ufile.o): +$(deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/ufile.o): diff --git a/common/utils/.umemory.o.cmd b/common/utils/.umemory.o.cmd index 954cd7e..0190b8b 100644 --- a/common/utils/.umemory.o.cmd +++ b/common/utils/.umemory.o.cmd @@ -1,8 +1,8 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.umemory.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(umemory)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_umemory.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.c +cmd_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/umemory.o := gcc -Wp,-MD,/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/.umemory.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -DCC_HAVE_ASM_GOTO -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/3rd -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -DKBUILD_BASENAME='"umemory"' -DKBUILD_MODNAME='"robusta_drv"' -c -o /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/.tmp_umemory.o /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/umemory.c -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.c +source_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/umemory.o := /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/umemory.c -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o := \ +deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/umemory.o := \ include/linux/types.h \ $(wildcard include/config/have/uid16.h) \ $(wildcard include/config/uid16.h) \ @@ -43,9 +43,10 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/debug/objects.h) \ $(wildcard include/config/kmemcheck.h) \ $(wildcard include/config/failslab.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/slob.h) \ $(wildcard include/config/slab.h) \ $(wildcard include/config/slub.h) \ - $(wildcard include/config/slob.h) \ $(wildcard include/config/zone/dma.h) \ $(wildcard include/config/numa.h) \ $(wildcard include/config/tracing.h) \ @@ -53,12 +54,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/highmem.h) \ $(wildcard include/config/zone/dma32.h) \ $(wildcard include/config/zone/device.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/compaction.h) \ $(wildcard include/config/cma.h) \ include/linux/mmdebug.h \ $(wildcard include/config/debug/vm.h) \ $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/debug/vm/pgflags.h) \ include/linux/bug.h \ $(wildcard include/config/generic/bug.h) \ arch/x86/include/asm/bug.h \ @@ -81,6 +84,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/have/underscore/symbol/prefix.h) \ $(wildcard include/config/modules.h) \ $(wildcard include/config/modversions.h) \ + $(wildcard include/config/trim/unused/ksyms.h) \ $(wildcard include/config/unused/symbols.h) \ arch/x86/include/asm/linkage.h \ $(wildcard include/config/x86/64.h) \ @@ -89,51 +93,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/bitops.h \ $(wildcard include/config/x86/cmov.h) \ arch/x86/include/asm/alternative.h \ - $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - include/uapi/linux/const.h \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ arch/x86/include/asm/rmwcc.h \ arch/x86/include/asm/barrier.h \ $(wildcard include/config/x86/ppro/fence.h) \ @@ -149,11 +109,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/required-features.h \ $(wildcard include/config/x86/minimum/cpu/family.h) \ $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/pae.h) \ $(wildcard include/config/x86/cmpxchg64.h) \ $(wildcard include/config/x86/use/3dnow.h) \ $(wildcard include/config/matom.h) \ + $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/disabled-features.h \ $(wildcard include/config/x86/intel/mpx.h) \ + $(wildcard include/config/x86/intel/memory/protection/keys.h) \ include/asm-generic/bitops/const_hweight.h \ include/asm-generic/bitops/le.h \ arch/x86/include/uapi/asm/byteorder.h \ @@ -171,28 +134,34 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/printk.h \ $(wildcard include/config/message/loglevel/default.h) \ $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk/nmi.h) \ $(wildcard include/config/printk.h) \ $(wildcard include/config/dynamic/debug.h) \ include/linux/init.h \ $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/debug/rodata.h) \ $(wildcard include/config/lto.h) \ include/linux/kern_levels.h \ include/linux/cache.h \ $(wildcard include/config/arch/has/cache/line/size.h) \ include/uapi/linux/kernel.h \ include/uapi/linux/sysinfo.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ include/linux/dynamic_debug.h \ include/linux/mmzone.h \ $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ - $(wildcard include/config/memcg.h) \ + $(wildcard include/config/sparsemem.h) \ $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ $(wildcard include/config/discontigmem.h) \ $(wildcard include/config/flat/node/mem/map.h) \ $(wildcard include/config/page/extension.h) \ $(wildcard include/config/no/bootmem.h) \ $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/have/memory/present.h) \ $(wildcard include/config/have/memoryless/nodes.h) \ $(wildcard include/config/need/node/memmap/size.h) \ @@ -218,12 +187,15 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/debug/list.h) \ include/linux/poison.h \ $(wildcard include/config/illegal/pointer/value.h) \ + $(wildcard include/config/page/poisoning/zero.h) \ + include/uapi/linux/const.h \ arch/x86/include/asm/preempt.h \ arch/x86/include/asm/percpu.h \ $(wildcard include/config/x86/64/smp.h) \ include/asm-generic/percpu.h \ $(wildcard include/config/have/setup/per/cpu/area.h) \ include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ $(wildcard include/config/base/small.h) \ include/linux/percpu-defs.h \ $(wildcard include/config/debug/force/weak/per/cpu.h) \ @@ -231,31 +203,64 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/compat.h) \ $(wildcard include/config/debug/stack/usage.h) \ arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/vm86.h) \ $(wildcard include/config/ia32/emulation.h) \ arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ arch/x86/include/asm/page_64.h \ $(wildcard include/config/x86/vsyscall/emulation.h) \ include/linux/range.h \ include/asm-generic/memory_model.h \ $(wildcard include/config/sparsemem/vmemmap.h) \ + include/linux/pfn.h \ include/asm-generic/getorder.h \ arch/x86/include/asm/cpufeature.h \ $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ + $(wildcard include/config/x86/fast/feature/tests.h) \ arch/x86/include/asm/processor.h \ + $(wildcard include/config/cc/stackprotector.h) \ $(wildcard include/config/m486.h) \ + $(wildcard include/config/x86/debugctlmsr.h) \ $(wildcard include/config/xen.h) \ + arch/x86/include/asm/processor-flags.h \ + arch/x86/include/uapi/asm/processor-flags.h \ arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/ptrace.h \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ arch/x86/include/uapi/asm/sigcontext.h \ arch/x86/include/asm/current.h \ arch/x86/include/asm/msr.h \ + $(wildcard include/config/tracepoints.h) \ arch/x86/include/asm/msr-index.h \ $(wildcard include/config/tdp/nominal.h) \ $(wildcard include/config/tdp/level/1.h) \ $(wildcard include/config/tdp/level/2.h) \ $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ arch/x86/include/uapi/asm/errno.h \ include/uapi/asm-generic/errno.h \ include/uapi/asm-generic/errno-base.h \ @@ -275,7 +280,21 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/uapi/asm/ioctl.h \ include/asm-generic/ioctl.h \ include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/linux/tracepoint-defs.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + include/asm-generic/atomic-long.h \ + include/linux/static_key.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/frame.h \ + $(wildcard include/config/frame/pointer.h) \ arch/x86/include/asm/special_insns.h \ arch/x86/include/asm/fpu/types.h \ include/linux/personality.h \ @@ -290,13 +309,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/irqsoff/tracer.h) \ $(wildcard include/config/trace/irqflags/support.h) \ arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ include/linux/bottom_half.h \ include/linux/spinlock_types.h \ include/linux/lockdep.h \ @@ -304,9 +316,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/lock/stat.h) \ include/linux/rwlock_types.h \ arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/qspinlock.h \ include/asm-generic/qspinlock.h \ arch/x86/include/asm/qrwlock.h \ @@ -410,6 +419,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/debug/objects/work.h) \ $(wildcard include/config/freezer.h) \ $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/wq/watchdog.h) \ include/linux/timer.h \ $(wildcard include/config/timer/stats.h) \ $(wildcard include/config/debug/objects/timers.h) \ @@ -421,6 +431,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/mmzone.h \ arch/x86/include/asm/mmzone_64.h \ arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/local/apic.h) \ $(wildcard include/config/x86/io/apic.h) \ $(wildcard include/config/x86/32/smp.h) \ $(wildcard include/config/debug/nmi/selftest.h) \ @@ -457,7 +468,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/pm/clk.h) \ $(wildcard include/config/pm/generic/domains.h) \ arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ $(wildcard include/config/provide/ohci1394/dma/init.h) \ $(wildcard include/config/pci/mmconfig.h) \ $(wildcard include/config/x86/intel/mid.h) \ @@ -496,12 +506,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/xen/hypervisor.h \ include/xen/features.h \ include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ arch/x86/include/uapi/asm/vsyscall.h \ include/asm-generic/fixmap.h \ arch/x86/include/asm/idle.h \ @@ -519,12 +523,172 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/percpu.h \ $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ include/linux/kmemleak.h \ $(wildcard include/config/debug/kmemleak.h) \ include/linux/kasan.h \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/ubsan.h) \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/kcov.h) \ + $(wildcard include/config/uprobes.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + $(wildcard include/config/have/exit/thread.h) \ + $(wildcard include/config/cpu/freq.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + include/linux/capability.h \ + $(wildcard include/config/multiuser.h) \ + include/uapi/linux/capability.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + arch/x86/include/uapi/asm/auxvec.h \ + include/linux/uprobes.h \ + arch/x86/include/asm/uprobes.h \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/linux/uidgid.h \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/pid.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rculist.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/kcov.h \ + include/uapi/linux/kcov.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + $(wildcard include/config/security.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + $(wildcard include/config/sock/cgroup/data.h) \ + include/uapi/linux/limits.h \ + include/linux/idr.h \ + include/linux/percpu-refcount.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ include/linux/vmalloc.h \ -/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o) +/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/umemory.o: $(deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/umemory.o) -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.o): +$(deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/umemory.o): diff --git a/common/utils/.uthread.o.cmd b/common/utils/.uthread.o.cmd index 4f9dcb3..612b8b1 100644 --- a/common/utils/.uthread.o.cmd +++ b/common/utils/.uthread.o.cmd @@ -1,12 +1,12 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.uthread.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(uthread)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_uthread.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.c +cmd_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/uthread.o := gcc -Wp,-MD,/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/.uthread.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -DCC_HAVE_ASM_GOTO -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/3rd -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -DKBUILD_BASENAME='"uthread"' -DKBUILD_MODNAME='"robusta_drv"' -c -o /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/.tmp_uthread.o /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/uthread.c -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.c +source_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/uthread.o := /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/uthread.c -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o := \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ +deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/uthread.o := \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/debug.h \ $(wildcard include/config/enable/msg.h) \ $(wildcard include/config/enable/debug.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/usync.h \ include/generated/uapi/linux/version.h \ include/linux/completion.h \ $(wildcard include/config/lockdep.h) \ @@ -50,6 +50,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/uapi/asm-generic/posix_types.h \ include/linux/poison.h \ $(wildcard include/config/illegal/pointer/value.h) \ + $(wildcard include/config/page/poisoning/zero.h) \ include/uapi/linux/const.h \ include/linux/kernel.h \ $(wildcard include/config/preempt/voluntary.h) \ @@ -66,6 +67,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/have/underscore/symbol/prefix.h) \ $(wildcard include/config/modules.h) \ $(wildcard include/config/modversions.h) \ + $(wildcard include/config/trim/unused/ksyms.h) \ $(wildcard include/config/unused/symbols.h) \ arch/x86/include/asm/linkage.h \ $(wildcard include/config/x86/64.h) \ @@ -75,51 +77,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/x86/cmov.h) \ arch/x86/include/asm/alternative.h \ $(wildcard include/config/smp.h) \ - $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ arch/x86/include/asm/rmwcc.h \ arch/x86/include/asm/barrier.h \ $(wildcard include/config/x86/ppro/fence.h) \ @@ -135,11 +93,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/required-features.h \ $(wildcard include/config/x86/minimum/cpu/family.h) \ $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/pae.h) \ $(wildcard include/config/x86/cmpxchg64.h) \ $(wildcard include/config/x86/use/3dnow.h) \ $(wildcard include/config/matom.h) \ + $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/disabled-features.h \ $(wildcard include/config/x86/intel/mpx.h) \ + $(wildcard include/config/x86/intel/memory/protection/keys.h) \ include/asm-generic/bitops/const_hweight.h \ include/asm-generic/bitops/le.h \ arch/x86/include/uapi/asm/byteorder.h \ @@ -157,16 +118,22 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/printk.h \ $(wildcard include/config/message/loglevel/default.h) \ $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk/nmi.h) \ $(wildcard include/config/printk.h) \ $(wildcard include/config/dynamic/debug.h) \ include/linux/init.h \ $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/debug/rodata.h) \ $(wildcard include/config/lto.h) \ include/linux/kern_levels.h \ include/linux/cache.h \ $(wildcard include/config/arch/has/cache/line/size.h) \ include/uapi/linux/kernel.h \ include/uapi/linux/sysinfo.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ include/linux/dynamic_debug.h \ include/linux/spinlock.h \ $(wildcard include/config/debug/spinlock.h) \ @@ -184,6 +151,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/asm-generic/percpu.h \ $(wildcard include/config/have/setup/per/cpu/area.h) \ include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ $(wildcard include/config/base/small.h) \ include/linux/percpu-defs.h \ $(wildcard include/config/debug/force/weak/per/cpu.h) \ @@ -198,8 +166,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/bug.h) \ $(wildcard include/config/generic/bug/relative/pointers.h) \ arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/vm86.h) \ $(wildcard include/config/ia32/emulation.h) \ arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ arch/x86/include/asm/page_64.h \ $(wildcard include/config/debug/virtual.h) \ $(wildcard include/config/flatmem.h) \ @@ -208,24 +182,53 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/asm-generic/memory_model.h \ $(wildcard include/config/discontigmem.h) \ $(wildcard include/config/sparsemem/vmemmap.h) \ + $(wildcard include/config/sparsemem.h) \ + include/linux/pfn.h \ include/asm-generic/getorder.h \ arch/x86/include/asm/cpufeature.h \ $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ + $(wildcard include/config/x86/fast/feature/tests.h) \ arch/x86/include/asm/processor.h \ + $(wildcard include/config/cc/stackprotector.h) \ $(wildcard include/config/m486.h) \ + $(wildcard include/config/x86/debugctlmsr.h) \ $(wildcard include/config/xen.h) \ + arch/x86/include/asm/processor-flags.h \ + arch/x86/include/uapi/asm/processor-flags.h \ arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/ptrace.h \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ arch/x86/include/uapi/asm/sigcontext.h \ arch/x86/include/asm/current.h \ arch/x86/include/asm/msr.h \ + $(wildcard include/config/tracepoints.h) \ arch/x86/include/asm/msr-index.h \ $(wildcard include/config/tdp/nominal.h) \ $(wildcard include/config/tdp/level/1.h) \ $(wildcard include/config/tdp/level/2.h) \ $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ arch/x86/include/uapi/asm/errno.h \ include/uapi/asm-generic/errno.h \ include/uapi/asm-generic/errno-base.h \ @@ -245,7 +248,21 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/uapi/asm/ioctl.h \ include/asm-generic/ioctl.h \ include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/linux/tracepoint-defs.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + include/asm-generic/atomic-long.h \ + include/linux/static_key.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/frame.h \ + $(wildcard include/config/frame/pointer.h) \ arch/x86/include/asm/special_insns.h \ arch/x86/include/asm/fpu/types.h \ include/linux/personality.h \ @@ -260,22 +277,12 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/irqsoff/tracer.h) \ $(wildcard include/config/trace/irqflags/support.h) \ arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ include/linux/bottom_half.h \ include/linux/spinlock_types.h \ include/linux/lockdep.h \ $(wildcard include/config/lock/stat.h) \ include/linux/rwlock_types.h \ arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/qspinlock.h \ include/asm-generic/qspinlock.h \ arch/x86/include/asm/qrwlock.h \ @@ -313,8 +320,8 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/inline/write/unlock/irqrestore.h) \ include/uapi/linux/wait.h \ include/linux/semaphore.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/umemory.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/uthread.h \ include/linux/delay.h \ arch/x86/include/asm/delay.h \ include/asm-generic/delay.h \ @@ -327,6 +334,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/detect/hung/task.h) \ $(wildcard include/config/core/dump/default/elf/headers.h) \ $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/no/hz/full.h) \ $(wildcard include/config/sched/autogroup.h) \ $(wildcard include/config/bsd/process/acct.h) \ $(wildcard include/config/taskstats.h) \ @@ -351,13 +359,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/preempt/rcu.h) \ $(wildcard include/config/tasks/rcu.h) \ $(wildcard include/config/memcg.h) \ - $(wildcard include/config/memcg/kmem.h) \ + $(wildcard include/config/slob.h) \ $(wildcard include/config/compat/brk.h) \ $(wildcard include/config/virt/cpu/accounting/gen.h) \ $(wildcard include/config/sysvipc.h) \ $(wildcard include/config/auditsyscall.h) \ $(wildcard include/config/rt/mutexes.h) \ $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/ubsan.h) \ $(wildcard include/config/block.h) \ $(wildcard include/config/task/xacct.h) \ $(wildcard include/config/cpusets.h) \ @@ -368,14 +377,16 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/fault/injection.h) \ $(wildcard include/config/latencytop.h) \ $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/kcov.h) \ $(wildcard include/config/uprobes.h) \ $(wildcard include/config/bcache.h) \ $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ $(wildcard include/config/have/unstable/sched/clock.h) \ $(wildcard include/config/irq/time/accounting.h) \ - $(wildcard include/config/no/hz/full.h) \ $(wildcard include/config/stack/growsup.h) \ $(wildcard include/config/have/copy/thread/tls.h) \ + $(wildcard include/config/have/exit/thread.h) \ + $(wildcard include/config/cpu/freq.h) \ include/uapi/linux/sched.h \ include/linux/sched/prio.h \ arch/x86/include/uapi/asm/param.h \ @@ -453,6 +464,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/debug/objects/work.h) \ $(wildcard include/config/freezer.h) \ $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/wq/watchdog.h) \ include/linux/timer.h \ $(wildcard include/config/timer/stats.h) \ $(wildcard include/config/debug/objects/timers.h) \ @@ -473,6 +485,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/llist.h \ $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/local/apic.h) \ $(wildcard include/config/x86/io/apic.h) \ $(wildcard include/config/x86/32/smp.h) \ $(wildcard include/config/debug/nmi/selftest.h) \ @@ -511,7 +524,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/pm/clk.h) \ $(wildcard include/config/pm/generic/domains.h) \ arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ $(wildcard include/config/provide/ohci1394/dma/init.h) \ $(wildcard include/config/pci/mmconfig.h) \ $(wildcard include/config/x86/intel/mid.h) \ @@ -549,12 +561,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/xen/hypervisor.h \ include/xen/features.h \ include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ arch/x86/include/uapi/asm/vsyscall.h \ include/asm-generic/fixmap.h \ arch/x86/include/asm/idle.h \ @@ -592,7 +598,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ include/linux/mmdebug.h \ $(wildcard include/config/debug/vm.h) \ - include/linux/pfn.h \ + $(wildcard include/config/debug/vm/pgflags.h) \ include/linux/topology.h \ $(wildcard include/config/use/percpu/numa/node/id.h) \ include/linux/mmzone.h \ @@ -623,9 +629,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/have/bootmem/info/node.h) \ arch/x86/include/asm/mmzone.h \ arch/x86/include/asm/mmzone_64.h \ - include/linux/proportions.h \ - include/linux/percpu_counter.h \ - include/linux/gfp.h \ include/linux/seccomp.h \ $(wildcard include/config/seccomp.h) \ $(wildcard include/config/have/arch/seccomp/filter.h) \ @@ -655,6 +658,8 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/time/low/res.h) \ $(wildcard include/config/timerfd.h) \ include/linux/timerqueue.h \ + include/linux/kcov.h \ + include/uapi/linux/kcov.h \ include/linux/task_io_accounting.h \ $(wildcard include/config/task/io/accounting.h) \ include/linux/latencytop.h \ @@ -666,8 +671,10 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/associative/array.h) \ include/linux/selinux.h \ $(wildcard include/config/security/selinux.h) \ + include/linux/gfp.h \ include/uapi/linux/magic.h \ include/linux/cgroup-defs.h \ + $(wildcard include/config/sock/cgroup/data.h) \ include/uapi/linux/limits.h \ include/linux/idr.h \ include/linux/percpu-refcount.h \ @@ -685,12 +692,11 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/cgroup/pids.h) \ $(wildcard include/config/cgroup/debug.h) \ include/linux/module.h \ - $(wildcard include/config/module/sig.h) \ $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/sig.h) \ $(wildcard include/config/kallsyms.h) \ - $(wildcard include/config/tracepoints.h) \ $(wildcard include/config/event/tracing.h) \ - $(wildcard include/config/livepatch.h) \ $(wildcard include/config/module/unload.h) \ $(wildcard include/config/constructors.h) \ $(wildcard include/config/debug/set/module/ronx.h) \ @@ -746,6 +752,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/modules/use/elf/rel.h) \ $(wildcard include/config/modules/use/elf/rela.h) \ -/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o) +/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/uthread.o: $(deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/uthread.o) -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/uthread.o): +$(deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/uthread.o): diff --git a/common/utils/.utime.o.cmd b/common/utils/.utime.o.cmd index ac8c93d..786a270 100644 --- a/common/utils/.utime.o.cmd +++ b/common/utils/.utime.o.cmd @@ -1,14 +1,15 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.utime.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(utime)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/.tmp_utime.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.c +cmd_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/utime.o := gcc -Wp,-MD,/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/.utime.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -DCC_HAVE_ASM_GOTO -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/3rd -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -DKBUILD_BASENAME='"utime"' -DKBUILD_MODNAME='"robusta_drv"' -c -o /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/.tmp_utime.o /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/utime.c -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.c +source_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/utime.o := /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/utime.c -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o := \ +deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/utime.o := \ include/linux/module.h \ $(wildcard include/config/modules.h) \ $(wildcard include/config/sysfs.h) \ - $(wildcard include/config/module/sig.h) \ $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/livepatch.h) \ $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/module/sig.h) \ $(wildcard include/config/generic/bug.h) \ $(wildcard include/config/kallsyms.h) \ $(wildcard include/config/smp.h) \ @@ -16,7 +17,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/tracing.h) \ $(wildcard include/config/event/tracing.h) \ $(wildcard include/config/ftrace/mcount/record.h) \ - $(wildcard include/config/livepatch.h) \ $(wildcard include/config/module/unload.h) \ $(wildcard include/config/constructors.h) \ $(wildcard include/config/debug/set/module/ronx.h) \ @@ -59,6 +59,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/uapi/asm-generic/posix_types.h \ include/linux/poison.h \ $(wildcard include/config/illegal/pointer/value.h) \ + $(wildcard include/config/page/poisoning/zero.h) \ include/uapi/linux/const.h \ include/linux/kernel.h \ $(wildcard include/config/preempt/voluntary.h) \ @@ -72,6 +73,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/export.h \ $(wildcard include/config/have/underscore/symbol/prefix.h) \ $(wildcard include/config/modversions.h) \ + $(wildcard include/config/trim/unused/ksyms.h) \ arch/x86/include/asm/linkage.h \ $(wildcard include/config/x86/64.h) \ $(wildcard include/config/x86/alignment/16.h) \ @@ -79,51 +81,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/bitops.h \ $(wildcard include/config/x86/cmov.h) \ arch/x86/include/asm/alternative.h \ - $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ arch/x86/include/asm/rmwcc.h \ arch/x86/include/asm/barrier.h \ $(wildcard include/config/x86/ppro/fence.h) \ @@ -139,11 +97,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/required-features.h \ $(wildcard include/config/x86/minimum/cpu/family.h) \ $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/pae.h) \ $(wildcard include/config/x86/cmpxchg64.h) \ $(wildcard include/config/x86/use/3dnow.h) \ $(wildcard include/config/matom.h) \ + $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/disabled-features.h \ $(wildcard include/config/x86/intel/mpx.h) \ + $(wildcard include/config/x86/intel/memory/protection/keys.h) \ include/asm-generic/bitops/const_hweight.h \ include/asm-generic/bitops/le.h \ arch/x86/include/uapi/asm/byteorder.h \ @@ -161,16 +122,22 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/printk.h \ $(wildcard include/config/message/loglevel/default.h) \ $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk/nmi.h) \ $(wildcard include/config/printk.h) \ $(wildcard include/config/dynamic/debug.h) \ include/linux/init.h \ $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/debug/rodata.h) \ $(wildcard include/config/lto.h) \ include/linux/kern_levels.h \ include/linux/cache.h \ $(wildcard include/config/arch/has/cache/line/size.h) \ include/uapi/linux/kernel.h \ include/uapi/linux/sysinfo.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ include/linux/dynamic_debug.h \ include/linux/stat.h \ arch/x86/include/uapi/asm/stat.h \ @@ -194,6 +161,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/asm-generic/percpu.h \ $(wildcard include/config/have/setup/per/cpu/area.h) \ include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ $(wildcard include/config/base/small.h) \ include/linux/percpu-defs.h \ $(wildcard include/config/debug/force/weak/per/cpu.h) \ @@ -207,8 +175,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/bug.h) \ $(wildcard include/config/generic/bug/relative/pointers.h) \ arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/vm86.h) \ $(wildcard include/config/ia32/emulation.h) \ arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ arch/x86/include/asm/page_64.h \ $(wildcard include/config/debug/virtual.h) \ $(wildcard include/config/flatmem.h) \ @@ -217,14 +191,44 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/asm-generic/memory_model.h \ $(wildcard include/config/discontigmem.h) \ $(wildcard include/config/sparsemem/vmemmap.h) \ + $(wildcard include/config/sparsemem.h) \ + include/linux/pfn.h \ include/asm-generic/getorder.h \ arch/x86/include/asm/cpufeature.h \ $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ + $(wildcard include/config/x86/fast/feature/tests.h) \ arch/x86/include/asm/processor.h \ + $(wildcard include/config/cc/stackprotector.h) \ $(wildcard include/config/m486.h) \ + $(wildcard include/config/x86/debugctlmsr.h) \ $(wildcard include/config/xen.h) \ + arch/x86/include/asm/processor-flags.h \ + arch/x86/include/uapi/asm/processor-flags.h \ arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/ptrace.h \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ arch/x86/include/uapi/asm/sigcontext.h \ arch/x86/include/asm/current.h \ arch/x86/include/asm/msr.h \ @@ -233,8 +237,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/tdp/level/1.h) \ $(wildcard include/config/tdp/level/2.h) \ $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ arch/x86/include/uapi/asm/errno.h \ include/uapi/asm-generic/errno.h \ include/uapi/asm-generic/errno-base.h \ @@ -254,7 +256,21 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/uapi/asm/ioctl.h \ include/asm-generic/ioctl.h \ include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/linux/tracepoint-defs.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + include/asm-generic/atomic-long.h \ + include/linux/static_key.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/frame.h \ + $(wildcard include/config/frame/pointer.h) \ arch/x86/include/asm/special_insns.h \ arch/x86/include/asm/fpu/types.h \ include/linux/personality.h \ @@ -269,13 +285,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/irqsoff/tracer.h) \ $(wildcard include/config/trace/irqflags/support.h) \ arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ include/linux/bottom_half.h \ include/linux/spinlock_types.h \ include/linux/lockdep.h \ @@ -283,9 +292,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/lock/stat.h) \ include/linux/rwlock_types.h \ arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/qspinlock.h \ include/asm-generic/qspinlock.h \ arch/x86/include/asm/qrwlock.h \ @@ -334,21 +340,23 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/zone/dma32.h) \ $(wildcard include/config/zone/device.h) \ $(wildcard include/config/numa.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/compaction.h) \ $(wildcard include/config/cma.h) \ include/linux/mmdebug.h \ $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/vm/pgflags.h) \ include/linux/mmzone.h \ $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ $(wildcard include/config/memcg.h) \ $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ $(wildcard include/config/flat/node/mem/map.h) \ $(wildcard include/config/page/extension.h) \ $(wildcard include/config/no/bootmem.h) \ $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/have/memory/present.h) \ $(wildcard include/config/have/memoryless/nodes.h) \ $(wildcard include/config/need/node/memmap/size.h) \ @@ -422,6 +430,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/workqueue.h \ $(wildcard include/config/debug/objects/work.h) \ $(wildcard include/config/freezer.h) \ + $(wildcard include/config/wq/watchdog.h) \ include/linux/timer.h \ $(wildcard include/config/timer/stats.h) \ $(wildcard include/config/debug/objects/timers.h) \ @@ -433,6 +442,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/mmzone.h \ arch/x86/include/asm/mmzone_64.h \ arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/local/apic.h) \ $(wildcard include/config/x86/io/apic.h) \ $(wildcard include/config/x86/32/smp.h) \ $(wildcard include/config/debug/nmi/selftest.h) \ @@ -469,7 +479,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/pm/clk.h) \ $(wildcard include/config/pm/generic/domains.h) \ arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ $(wildcard include/config/provide/ohci1394/dma/init.h) \ $(wildcard include/config/pci/mmconfig.h) \ $(wildcard include/config/x86/intel/mid.h) \ @@ -508,12 +517,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ arch/x86/include/asm/xen/hypervisor.h \ include/xen/features.h \ include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ arch/x86/include/uapi/asm/vsyscall.h \ include/asm-generic/fixmap.h \ arch/x86/include/asm/idle.h \ @@ -531,7 +534,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/percpu.h \ $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ include/linux/elf.h \ arch/x86/include/asm/elf.h \ $(wildcard include/config/x86/x32/abi.h) \ @@ -545,7 +547,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ $(wildcard include/config/have/cmpxchg/double.h) \ $(wildcard include/config/have/aligned/struct/page.h) \ - $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/userfaultfd.h) \ $(wildcard include/config/aio.h) \ $(wildcard include/config/mmu/notifier.h) \ @@ -599,24 +600,165 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/ include/linux/slab.h \ $(wildcard include/config/debug/slab.h) \ $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slob.h) \ $(wildcard include/config/slab.h) \ $(wildcard include/config/slub.h) \ - $(wildcard include/config/slob.h) \ include/linux/kmemleak.h \ $(wildcard include/config/debug/kmemleak.h) \ include/linux/kasan.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/ubsan.h) \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/kcov.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + $(wildcard include/config/have/exit/thread.h) \ + $(wildcard include/config/cpu/freq.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + include/linux/capability.h \ + include/uapi/linux/capability.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/pid.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rculist.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/kcov.h \ + include/uapi/linux/kcov.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + $(wildcard include/config/security.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + $(wildcard include/config/sock/cgroup/data.h) \ + include/uapi/linux/limits.h \ + include/linux/percpu-refcount.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/bdbm_drv.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/utime.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/usync.h \ include/generated/uapi/linux/version.h \ include/linux/semaphore.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/umemory.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/debug.h \ $(wildcard include/config/enable/msg.h) \ $(wildcard include/config/enable/debug.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/utime.h \ -/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o) +/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/utime.o: $(deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/utime.o) -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.o): +$(deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/utime.o): diff --git a/common/utils/ufile.o b/common/utils/ufile.o new file mode 100644 index 0000000000000000000000000000000000000000..27e6b45aa5c2995e0f09a7c74468c02e310db2ee GIT binary patch literal 190648 zcmb5X33yf26*hd%opMM5Np1+-kOXcRLKp%G1PBB!m(fHJq6`U>1_%&j3Zrq3GdRW> z=fn}UDh{=1YmGCtwxU&wt!=HfEv-Xs?O?5~-}|n$&Q0v!|9k%5N6vlUz1CiP?X~yW zXYYN6oI7X!+<@yk{(r8MaJreF>Nxv<9Y~R+prn)U^mUFAFUk7On>G7>J7e*pbv2h2 z4r9{%%kGMGef@RKD;MyG|B2?)l+{dgKl}RY`TJBOYu58CW~^NG!uqU1vmLWn@pqV$ z469zq8kBU_kI5QzA+wqs#e}37mRdh!>5L^PyXJzAy_$=DF#obcQu4mtM`~Va^Gn~g zw07TXwfo+w-S_W`pMR8Dvrtewqr_M?5*F{vTkd9{c316#a9g5 zIb~SWs&wZUe{dXB3;%i2-~S(-eo}XbcLH7-HG^e1pp!Zw9$Y^;>@|P}+z5_NmJSqhOVg9I~|5cJAL{suRk>Z8I8@KK9uqGI46`x`@MD(_M_omJ115;q1fY+N|;aMVXqWH zNgt0x1~aHD;XVl@^mHYh#juDY;Q}fuET?6K72WW-ImoT4HMFd-o<%Ec=uTbM4VQP@ zT|pT37-q>4$vlvPSugq~BT-gY74qs*sRJHQ!J-HnIN(YvtKOg$DPeql3YJ}xf)lr= zVD(ukIOm!aTz^BV&{H?1;HC>xaC5h>+c*|#!55_h7`eC`-j<45hh;OdHG>_9(GJe|cjn!>i;V^&_~5ay1q zZ*nq+QeW+44m%rA!<<<{96`}6GPkr>-Xr+!OWj@r*+>e9pP7PV)9H}Zr@UA0kHr2~ zr&r$(n4EVJj-JzxReujKg9jL=(XdBl$#|f5@rM|lqdO`lIK4~gF>$5SdpNNNJl^SD zDzyS0=ky*SwTiB3ae9v=j7QhBI=x2`mO`V#=`ArR2QGJdOAM-_J0?55$5JI3-BIQA zE+?#su13ZR!n){Mz;T2P(I&w0gpJXi8=c;jgw4?=zzKvcy>W1QPa$rNZiE|C3EQG; zcRIbN5$;uu1aW(GCp4xL?vL(-Mv|}t!$6;yiyt#vVea7#` zHCJm^*`t;dq?WObJ9jyKCW?E(A}dH~*sruvzn)61o=Q+pEnpIjMif`^T-URw&ty68 zb%^eBB7Ky8ncnB*ds5Dw!a>IzZ7c%}sD4%^iPR{ocQ@?Q4ZAPES=mg@^s=IVhTUk( zu60gUltuUkqVIv|;E?@gUN0*z`^z`Fb+W(w3MA9Z{%Qi`(UuKOPWD$X_mF=TNBRIS zyN_EBP|&g)3Vqz~ibf%e0!ymO5cdpG*#eaz?!g`^L)^8HsCuV+4RF}okE8gO%qe>t zxHpaE$SLLIOL1U03deHQdH!?YDyvwu`cpr1bZQr_4rVnLO^!-8 ztI-*9K1lB9OpaCBg3&o_L2b2Y%{<_2wHk{qTbatd;wf6y%qxj4!zyCSkR5G2FO^~S z#ekM!%`L#5ll2l(!X9<{5i(WhSz+&T;3A|sTV@P5U69|Z1DeCcz*2NYjM zd{FTfku1kKr1&b@>{5I+eLk%C8sa00uOAKlql#~u0sOw=n^yuKQ`~VD@MnrUZvp;d zAR8lk*Fj*%Rq`N>dPW{0$u{yRNzBOO@8+Woj66YtS#`fM*kNP(4bC=BXNyWg2F2(b z*C0X8?XY)%3TzTz_Baz>X95pUej7iLHk@H$??uW!qKpS5X!83^PD8aajY66W*6tYR z1a1=2qLQ11v?{qpNSl&Q_g474SIM0sX;*T$%c}1$Sl_bS3Eb!YwFEs15$uaVq_cZv zSY*Znr!QlI96FIn!U|npnZn*|DzG#EmxABq>nOjOayf{B4p3y}1uN{`3ldRy5p~(= z)t0&NC{usRR5`HSknI;phyyuY@xVZrXNOj7u=|Trq$(Ndo{jcvgZe8pQUa}v|8anv zWre*=DD>kblxK_|f^opAD6QPZBA`%IYqUOQ{<_rvr`J8N#2zv$I!lPeA!wufC%gH?)?u!dYGB5;QIJvKe&w^G!7*e12p?L4 zh6}0FUy5Ue#{MNN{tY(N*jFMeHTG|9BV$g4O6-C#3r}l4c{rx8W!B_HFnHS-y>=dDSn%epF*D7UANhE;P7hW0R9RAo5#8sLf;r z!Y(v6Nb>D9RuW+cY&SMs*nVT9B5bSUB)U!cG%biVMmQsMXq7{7@I7z z^02ng6k$nYQzM7b0qTrRi}2iUFqRP3Xe=2y3mvEV8?5CUto0kL&Daddx7XOr$TQeY zX*ae=;&R{{?4Ys55e_Sdj4ct?WvpKE9sUM8Vr*IDFDT)tvE`9v<1s@pwkq=2O^y?f zXe3S%R%&c@k`4Mi}95r@f{k@@#D(j|>Oo#Lw zO9b~CbJBRaw;OYX?Kc)k<5pvbu}~U^$b-hhX*V54tc~TRakhBaSidw5*GG&EO#2gt zf}_UbBKyqP(6lo2o-e$?JJ#-Ya)(QK@m?Cw(P<}Nk6veNOxi!WfHhW;b_YtYF*YTQ zZChuoTG(P^Q>DBHV{@f`jmC}>)@*En3}T!eQR+md!GtQ;`5RZ9PsvF&NR3?DSMEA5}~<&d${MAl`jRoIKh z&K4_&jh&mu3*Hf9=cjS4f=%17_au`006SID?<5EK3+Cszqu@}-i9S#4DSm-CTk(s; zF~u))6&F|h3UR68SBcAYd7gBmKOTwMjY?kUQrGYiuGOrBH<@lF{DkRN!n<{YQYHMH z*h=`tYT$CU`D>O|rT7Elq~hQ7Se}1)5A^Fa{f|!rHz@w-9pFaAfBqP_S@BEHUfZ~5Q0UuQS^|`=@iXHqH4Y;?1 zbSVkB%zao%n#;f+QQ`?Xsw7>=`${r|98=QIeHsQnQxX%&7ei2t6U`UmxXKEJdB%!_ zWg8ph9)XRRu^}$EhvLRYxF11Q3xzcrA^Z_O9Zel4)RdStMhAeRZ?sO=5 zP{;u#4+%M_7&S*5Wx&il()=u~Kb+W98pqRmKjvv(bV{W8Zf_!zJ#ZF1B*I z++~m*G4{Nhhc-BB>?QZn<8VPR_KK8VqwAfVAGoI=U!AcZN~1Iwd(Ax+GFy7(yz6q{ zYc|<0-10>@osIp<-3`rFW1mO~wn)qQOxRwNeJ*{#mTWoya{uKz&UGgHx0|;Rr@1jF z(1n4g!&orDUUk4&Bv4<4x(9Jqa3DiZD?@_7iX*j)sT{L(Kjkr;x*2&YdIzZz=}_LF zbc9!KV&=s;aM+E3yy8FmI$pnwDbSJD=$9!vihDC_Nbf}S>yrmEjQQiyiS8vJ_#c+5 z+}jA0OxCeiNwxbFK(>;p?qC;Vpp$+hc!nHYB%m7fBka*&`s0+z;T?#O%Ac@z7m}qm z+5OW$1Qzf5%k59YnM~%b&|_i83GzleJC!}PAy08|V?%gQ>(e)j{S7@BJ3_YviXja$ zfn8nHEKITfe?iQo@L2w`Es#p#`OCY*l)v(JBzu~E^8LX69fSdMDG|Yd;~oJtTtnZbz!0#PA62~&HxhMGIZwX z1PY4-Xi1II;E$l^Xq1K!2Q*4UiRlX*A4VL>qtn_Xh2!Xv#bi9O#bhE4Yf}|Yjskbc z9gD(hy3^qfr~5}-^^0QhYmoB6KA*0QxwmlMr$|ya=d%!V^8{jR%mu{OmcWiMAml5hbws1M|c2!wHk9AI4 zxROP+p?f}CjFzBM2xpblI7@k7pAXU+CkuZw2T5w`L+Lq+e=9vl@$aaT?F5;$#5WMO zMM0qOFZ)s!K4;52+5mrLSx!L7->8!es1y5vOJ_sqjNrk^E_B`BAPu)X(5wM>3Hq7h zpi6^_LoS<3aoD9FiX)O&E%OG(C|dqH%Nfm^8p&*&e6xq!5M5Xx_d6U!2L%mv_uwa_ zq*_Q=$#Fs=N}65zo78w63)DYUieAxLHPHz)Y@!{BQD7Odt9UtaK=BIVpyG9%z#+vO zn66zr&`jJ*)8$F3bj9-gRHovs%$u!v8(rW%8kEw)9k)is+kXVCT_muR`noI$>>_?b zb@mV+QhXZm_Y}7hcPT!-4EV6(Gd}`8qWCQ0Hx-{v{FdT#h~H7%MtoH9`NTg{d?E3B ziZ3SqrQ*HB?A%z8eMk0_Y#)hgj4COGeQVGU#kVYk0 zF5PcZk}YJto+rHHB>qM8LCPz^rDtMJF`ztfg8Nv?*#&~l^M!61ES74epZARnw=*Rf znCpIkMCti~;{@l^wCeLVrFQ@6PLMa|co$K;z?qi|%zwf;h0OCsE~3cB>_JAmQ*raBy~zk1D!C|sAPl?jaSjg0NrUWXxXyc zDH;{1K8nt(YNKTi-l}9wVDY;c)s&14a5LpXCFOykuln~jiz)(~thB3SYJg3?U&%Bf z9ZG72=vuDmcp(Q>GEa!E<%*UF=~793;9C#kgy7ZBDQXC?$!%>^v`p9(S7pnEVYb(N znp3nQFyw87#2vhLSF2OBDp2zZ^66rz=ww+|c*dH<^=xD7gvE@V8sKhY+}I|GY>lza z62JyyTQ$&u!D}(@6>ZZP0y#@Ww*e!t{A!4?c zEV?al03Ec$WOoMs1zCgMQ7XDi>e|TX5*f$=Uf>h=DInbV+~5R0m0a15Nv0%HA<;0&C`6A8Bi z<4O}s2gV(!;J8y+ngbCzut*9t=r=a>HoUxM}A1`XTW;N9wHARW=D6UcMTc9;`>H7 z5ErnhnAB}ZA@k}?c1Y0>lpELdfqbmBRPi9XV1X;}4e*Um#a!S@;hooq$Q?h};u2^>g>Qqon$4j0+j1+ObD^9 zUJqCJf+K{c^aicfX@;M0G25c}?S8mv(W-vsL0#$+Sw zUi(VU6w<1adxf+qxlhPmB?pA)<*wub7lV~u?n-oju|w6qBd3X8?n>TtH^Cjf+?D)9 z4Cv*qTX9SpZ#1E?Jjl6FXddbyVND`OFp~5T=H9y`RsQt z+tuzim*`Gijotz+`Lo!pGxoX5rfx9ymBhB$*uRBsHufKBgcf7Lz`tC_*<~yuY_~Bl zz#7?&;*#{hd8knvAIoNMkdBuu`5SL?Yk&EBCp<9x4`Q9OmwZ92Lu|>vsE#!e`}#&e zn`McymXiP6kECeJ+7_qe>q0=M82_9S*L@8?NhKj6Gn9l~=9uXOsqmCqT8M{I9C5_z}V0301yGdj<#%>nbd}FtW%{pVZip^$Y9a4uDV|R(4t;X&Z)@JN6 z(cEk7ahU?O8+$@DI~JlNF}Pum9Rbf6qOS#Oa9}r+h^IS24o6q}yhPV5*(LJ=Pa#bk zV19tZkdYIlVxALcu(JD>oE&&NrFe>9ltFuJG@0@zvB$yg%!adO4$^o8(?{X1_Vm#3 zKAcfXPamEuJ9#Q7Egi?ZAtETP?B3!loxt|iQ=oLBTtZYwW*@QWww>FZ(rOkHH$x)| zAN385C}P)Bqay}(XC5(#vkJ{TqL`WWA~>RiQyMcAADRD-Z)l`E$ghS*7BIvfHsbJ~ zH)`0YQ0hxOsw9)8$@bx>5zO0%$#tVM`G}TyJvxUA6~oaoK%EwqwHEXXQV zOKi>`Pm`HWkV)_O1={)Sm7kC{#V=$*j{+C=D6ozy*aKive?X}Lt`nQUhx%&)yn41&45ZB} zz0q|SR5Ex#e_$xX9?MRDn#nvMfn5UcI5GJRCi8#<#v$yz%w(1$$r<10>5r#^ksy6D zRxx5|weSB(`e1b#)uS$>M?fXp$ztZPM}5mXu`!i*QjfeQ$U@drE16DEY-Tyq*#)>ydl8lA7ZzHw_Y@to<)@xFkPyd{;*34(HpI9rOITi&s$Vpal7K7BHI%l)~ zZHmufHTNn$mo@9ad}yOn(MG2asHdTdyB)Y49QxK8mqtXPBMpEAAKNvA6re4P>9jNZ!SW-qT*Mo751CS(zhQ=p0`kBU0mqt>Z@yR-* zW3wJR&Eto=4^6jO&G=IHxfw_-reypG_e~H_$w-l8D;Xt3*InaB3yG_wOh~DcF+$3f zj1^L)q+Cc+NrjLaCF6wDDH$)MK}n^MMkN!3G%J}Xq(#XjA+1WPgtRG{EM%{eDMH$n zR14X!WU7!3CDVi)P?8XGP`kzV5VQ;)&`!_eC(f814OC_Z8A8cW**ho-1uafxR!+R^|mc5o|12vwNpgnID{trH6W7IUsn`kNmyV z%EBOLH|l-mKq2aVWjwfHrsEtKLf0ybgD=B_W4dar92y+>Aol!>4G+Es*%!t}%A(1( zLMz7vJCWTsKP$_FuN{YBM)w0NE991wZGKixlpa}XvZ~;luvuXIp1=yyktd-lWyG(Ijkh9=cWAmjr+cT|P z5IpmT2$#tg2A@BY+BB`K3+_TF51H(wAp3lmu|>iEpzy>n8Sf6){RA-nHBen@~#Tuh_m zhssjO$S~Q652-{q{B5<8bjObgEZbc-Y<#@& zknu|6LE{sQ2aHcN?i!zD-0t#?uaYWw>h%;^%;{+|zB<5}bzCJ=1EIMX;nl}!W+Sae zdBS+a_;lmp8qGXA@K0FM6K?z*T_UPvt~@?uXZvxoJUy(Enm`r`d|yee>~tSfa=eg_ zwdi>ou3*t;%I9173XPv&yukPZ;{%K@G@fs~&UnoDiGEf8toBbbc|VgcGM;CAvGKmf zml)4AzSMa1Gp$U$^wGa6X$Tyhfk8pZGFk6_B}2*hDD6ZMxloTOc^3WKV#Xr!FO@1vp+=7jG4E#7U>N zmPgm%1?^_mP0aWUexsY4b~zJ!{{zsGx=oB;1?VZx;{_{QalbBHm8ul?zZVycq~d%o zf@}N=(5AF;^Q25FiO!_n%xhTQEcc?TH}7&L$@}DLUvW(Jquj)ZEAC6I?L8@vxLnia zs|@PTr2b4-eU#Rk`l(p`}AzRbTfjkeEvHL@lnQzuem{ zRf30&T*uM3|EdPKX~(0gDk+qW*D56gg-lg4$Q=%~q>^H{2Bb#G5LYJ0N`|>7L(-sR zxJVk6l!|Z7N=CT5pw^;fq)1wojB>Apq)kbgdl$%FC1cz}Ani)Vx@D;SekB#|Pa)}0 zGSU46<`susAs-Do3T)j|>3h*wo7@v#xF>O}WsXvXkXbtf{gRb|oZuYB1V zM8YQa-zEJ7IEzoEhP?o4E$?F&17yg7b|B$QAA6TbPM=8`lQRS{Cq(*)Y8e&SdYYLQ zAX~sxHkM|y)Fvc|Gi)rCSYc;S!f6Xz&VNGoIwrEg*n^)?sFHm294dT2Wp4C_Gft@<3Z*}{o z3;bcb`fB1vO}~b?S@E^REsAeo99k9c&%ld@ZHjM-KHyIYs&9?~w@3NjRP`-wwGahA+er?X-jtf@)jOlKUWvJ#j!J!8TDWg(Cmn|8uzD2SzL3)nJ- z7qWzG2MQ;hkWyGge@tPqD&)qd&2NN4KFi6cEp<0Jt@e>rzT-cj;XE2rN2fJB0UYm* zRA<^US}Ik%B5R@F8q-#?GFAS?o7VbJzkJ#$R8sv$+A+MEcFg`7V(lr@))H&)nAXH; zhLyXXW=hddpY~0A)3%REncguTFg5vMdajpKu@=8_dm(4s@H!t(X1i+Y6zS4(3hhrk z?ovn2n#2?C%rjt4$+z9-E`zU1o|K!TF(u!T*H{Xb9FiAl;!2*9_ftxheAi{A>XbYq zq(RB|g)}O8*1i2Y|ITuvOC&8Sc}@y#Rr0*N?b4>?1(&sHM_gD})HyjnRnZwNRVzA^ zT6mZu=j8JtmicAQDQvM&cDB(*p;@lc)k0mU&(iZFX|L%jJls ze*ajHOjIs`7TWStKskM~bN(>$B;V0L_6Whp-Omi=d?L>bIdSH7+{C3pzGzdh{*>KL z;>uwAO-L-JBym;np>uJbDQOR~hsTv%9Xw+{&MqZ4%6>_?lKpb~vr5TLavLM53h$-P33 zD0x73Z;mQ?P{=VQ4+VMleu3aIU~)=(IYsV?3FGSxQ^|PI(g5cuiK%3Q*p4fiCI+gM%y9X> zQBuiFmoLI-7;|QcTAfPfyDQ;mgObHE0<Yl&YpF`&?bEhxy=g>JT#lU`5J6T@8 z>QHiuj2Z`&taJJ1^FbvW+=(dX5W>i~Sa&=d1xQ4jr_YiCM0fgZ*S*LO*z`FkI~3k7{9N9zVdwF*6 zR9uVaTP#n$ z)T}R*35jcijT1HN3zNk_c>%u*H@(^o#5uK)g>^FPX*8X}>4z=#A;*i>$L=L6R>`1kN`5FV6sxJF|}h zNULPogev*o`Uby@Uvxrh<^7U&b*hv66>(I{d!Ih(1UdO@mZwvo zA==W(X)fcTEuBnA=g^i;PIu|8wsbNnYTDAt8DcjV=&V_Z+LGcWqVHWeEjmCH0akj0a#?^#-<%k>5P$o09JFOsN+O;ZEJC6j3(AD zGNX*}A=YM{F}8afaz;7Rb=@J2GT@4a~_QuKH>gJeg$SO z`Y}}OR&~qFJIJD&wmLIAuUwJRzq5N*HS-=iqtm1kxt%BB>r;@2)lg!W+ZtX~P*YKIA^AaA5;t}zg zXQn|@&ybmC(c7xL#+51GF5rZ?QEgpx6{O9IFXmIgr^=JUGi4FFS=0Akg}g2BpFWHK z@tMotfDch_tIk|;JjCYm%H_c3+A7Y3EHo$6WxH2jGqa01)b?wiAZCVtoOVho^XnzR zmifq3U>y@?zPTPau6f_%S8hrb|AxyYtMP}_(Q|+1@7sWr@VyR2M(DH+@=L&T<1^2` z6u;w}Htuj{o>PnJ$tgAS+_zG&?KWgdtHVtLQD>{eEz^KYb<=}pGT7rX_$?-XZ;a*W{tv}Pz7DE11X#S;J1dLDM%V0K z@65`U-Bj^rRt_Vi-pq;;t2eW9iPf7~eTmhZS$S+Sjp(d?#2V3A{ke6d5uFv|Zgvt) z@65_yfgONmElOTiZBbmX9_g)$3)$J);B7B>DD_}eGT0w7*mpD7=^%c?7c)>IM&f6F zA|s}GQW+r*BUMZ?h#DFZGlmckMQYf)-fy#xnGe5<6giy_QqP+2QO+Q&$sVJ()@0vi zMXkx6luApDW`3s=S+&+P5AihDTF-onfp1ft?=q-+6@QOivt98soTBbmr`hw>X%-4k z>7Cpk;CY}DK2QhA=e~qzMR%SI6Zb}HI!}^r5i*TNLchuIqmdFh(8CP6mchn_PAv?F zy_wWxt$4DirhFtL>}^Iu_a4pcg8RY8Lh+k7YwetvUHTu0rJ}P(TnuP@a$22 zfHlCgM~?y40M9O)3>??IV>VzXuGGn5+`=AhW-&tOLeS~Qp=}621`kLafgd}k`vPWB z9`-5$<=n`gQ`7`3mgne;(~1YN6}FmrIZ%4TUv%CXRr2MpHu%2V0C@YvVQ}s z>vNU|*T8kBAML#iD;aV)4GOYb3uj(KsyLIJJDus`z}#eaIdf-p-?E!Kllj&5+*$c+ z{jkiP-3(kB-Pz>Kox|>1u4d-Gfa0tA!)0gg@i<@jcFa_z^OO!WI$vp#(G!#w8eO2Y zU@9D*4i9ke9!IIwt*ndGN>C>Xf%s0OO0BBq+``akSZ`%s!?&@kS;TH<6I#UXs9?lY zzmvFB@m))R%VGKgmB5^!> z&KqsOTKJnc0UG|vGr)NMh-VLzdo(FaL^;eSVrupf%aF!uL+1{Nq@2)k{oezYa*m7f zN^XM2xd+(5BA6>v2Ez|{sEOUD0~+3QF0c-3 zb5CP;HFK?ZBi+oM{uFQ=t`5R)Ix|aEkgydPk9*-5S%ISZ-2}vczWfeKI2we#O9ADq zq%mLq0B{lO8SgdstV}qq4xUYD_?$xE*gz`HJ+~9bm^*=2u(@rcAt-cJavmjxy__He z&m1!Q!$YCuR1}Uk^ny=aM&ov$flt515hP zqaw^6VQN1%ZRdZBub`Nz(&=9MhB$*10eTkZaFdjpKg0oFIw7R5(t`1t@`3BjubOc@ z3-S8?x?N69<$ff4(GA2C9|P7Ftf}Jo7}FBRAz81ZM6i7=ezarM%qEtq*UXWzCc0%? zlT$PI*hZS=+^y!gPl3&B%|C&)W7O2X24e#>@A2;d7vvp+vA7ed!cW+v!%}0qrML2| z{M(U`>($Kr0Kel`@7Unf%;%Xue&?m?O%!3se2G`nUA)3vmv5&*^ZY-8?3 z^oBS>ix#jI%pBc<&-T}>>Y;x!aVWZV_ZFw-6y9pHS~m8m;RqohR5hhh@bf<&p9!%|O*Fm0xDp@1%HXTy3R!EnU zCimq=|M7y_4ekw_@uIp)n%z#2qe?c)4#WFOwz!;s92>l;#i`xqehXT5W3{$L)a+4` z+MU7*-62wmU1B_LY`0jq2TN*C7g@Q<&JbCZu`|U=(%3n|W*a+K^3@n?lYDi?E|TvP zH5l6~Y?-mkBwwSk%Ozj4u`8s67Gv$gb{V_c{S9i{YV10>?cZkXM)ySoyvx{rVfI8` z?Je$bw2VD3S9_b-^jW8{CViZ(_D*SCdzP;DF82>C&twPOKY`f;bG7%oxnO%u_AU2I zunuF7xZy1hUO?8!KOv7a95i-Fws-7dy4t6t^e&S2mTz-q@h_UBI z^Qf_xguQ3%Ww#Ld-Z%CG_jRyi#$FZ8&y4-h&D@HuVq>p~%+WV}YhM=@GIm5hzwHGF zZ`zDr_m;F~w#nWWmSgOw8-vZ5v0q3$Kmz1g9UA5Q2vK`wOJyfXB=4o(gHH@}x$0(e47`Xn{bSUchp z-$3n1UP>`=U>K|&#j`yrhHFRjl&pzvK}E|hhjyJNk2#Ej8vNNM&4^D`wH3clnH<+W z->Ds+iT!|sC(Q+ptIaBYT0`eMwUajkm+L%&V@HM@B19bd5Rq$84yI#r zWSKJMpyeK_^PuTZf1(hjv$PD>PA&|{KM@HsTC;4CAaOob>42ZG8h8wB>HXN+A?~e6 z7|R4be&fYG-72f99W7^Ffkd=S22dM8$GHE22cGKH)mF&4qodh)IUh`Kf^<3?Tqg<1 zRJF-MvJ1BC+UnF!6>n^7IaYg|TZ5BN^=bqgsqJa*csUKTQCV()4r5IkY8SZe$Xd{h z4WrtHE_W&|Yn=#^YV<_OTBGD7Fa`%?@)H0J(vk~;(n5`@ z7825|q>t?5wkjl}VV z^2eYI%Q{VGXA1|Fp+0QGC{)AV&&9+7L`O_`b^RwHJ-T*vi&GaP#Q4Bna6SlOi_#x}My9uD@;~t_6<;)^4y75cUIC21`x9F< zJ+aMCOdjY~m_f7Jg%-`EibiSCES79|Hg&RfMtlNP^iB25>_s(aq-@sqDD-$KRGpb8 zcAU)kqJ__e#nvF>ws{r5826pE9yqqM)U$A?B^-MJIm^ z1r5_$7N~F?TaZpPl(hI!Sk@!|sGbr-$Vn_j;KlHOUM-MDR0`QYt-O)Kb?b%=4q*52cLc)ObwvU@R$_RyRRZ!NiV zf_z-3m=<#924$_Op6s#|zO>H+P}(B0d~v{S^#iduEd$oNFV1jpVkRkU zac`Fv>>?9iobB@4?*%(oJBxE%7U_>UO9~(K9avIyPy{w=GrbQLOPA(;?&~a-Z;`0O zOY``yubwkY`_p+nXO`wuJ&t<*9l68a*I?43pVb$+_wO{{>j%2>9U(`$ zr(G&3)>)U5!LoSJu-6ZfIajkvhPu2n(V}FSd%+(6UV43rn|YdlFTH-a%N>^es#Yq| z>rgVn9R;-mPMlRvMiRAQ+7Madc=_WKM&^b2ii*0Lm>-6c{ZWs^31PN|_Nv5!FiVQ7 zfra6Y+Yv}5b>V;Bfniq3iQ!NO_Pmsw6wU%kDp?dB1fsnvu~^{G%BeN zPurV%^r#`sx5+gmiDltV_@)(4ESJAaa;xT9DSxq~L&?eEu_*L_lE&~Hkb_FrgvVX% zKV+U*D*@?JNmF=XyT9;DtP3weo}(&RA8rJBU&)3r+xwW3X8AK9`s{6DWBB4W$A9)V zu_=7RZ8&FiTA$bw{@!s2mVUA)u{Hcx^rSjtE#i5jvF&2A+1QRSA8XlcY){yA5ej2x zg}DT6HFkcOQwRHF6^XsV4w!6T_$$QI{&Yp+N{QhileLFuUx+1}v1`M;tMBNaXh_^3 znx3(n!dFzG#~8a={yIv`SV#CLm!ipybqZ?>%NN`ecZTIrM3dbW<_q8UXC@N&NFD5R z9*GB}Jo^I?iHE}6a&tJp!cF0arL8=EY=bACT<;rldFjgxHRRoo{wp8lY3R3)UD@RQ zuLBuJE>ASpPy8u3hBEvoN1H&acKyu9k)9i>pTje4JV(Czxg7Y$^J_cx$MJzsxop(e zusECT)X(M#m-hivWB{x`{t4iaifig$xEo>>yvWiGzeKEqPW{WoI_T8DLad9F`oqL= z&HDr5QpK+lmn;6^Z1j&R#jg=3{es^rYV`|y`xHPc_?=EbEBI*lXjlJk8Pct=pYg(L zh5ej(v=;DQkAi64O5wkYB^4z_51`h*YAkezF@l!}oiN6l;~JcKbnKm6+-d2eC>_6E&+uLWosj zx)7^GQtE1znB_ijmOqZy&vsu0Now`xO7&`-e)OG1exrJHE}dojRVxJUHx&o|%b1A+ z>ccLB2fRVz;7(~EadLp=NePKl0&?R~Nn_wDXatn34)8S8iBe)sfG46>II&h<4AY5H zVtruO^?vOW8-!@>6Q>4#e1qSFiA@1EjMhG}Ilu??wDyT@0e0jnEp(^61eVNu^}5vM z>)ZgZne$cN7T}e!PRV%zzHQy07g-xmYUFuH=%y)iAwZ ziGB*FL&;SEUJMT?xmr9tqU0JON0nSBUr~Ht$@TJj;%7RH-Y&#(mEEClF1o}2j7r8W z@oxEmooz%W?veKfZ6h*qudu16d7rSPvHOMDwq)YLz#01yIFo%V@Cul1OC}x)tX+s` zne1Wp&mEqN)^qHF`JDh49Gx7;|)&lvKr*^jbg+j6=s`Yh3VoFXF5?6AP z5ba;}i-eS`WUMm13<~$ttnd zqP454Z*vpp__aGvHclMXJ70*NSM?Y6*r%z#NQjsVcUD$$fnUHez=V1Mn?)sEJSBVAl=LQjYPLQp!2Rbsa2Q**2{$}^%RK8n! zw$iO)#Ok3t%bwQo4v|VEG4B#msHHa4-{bhdk zLYyB82e$xgxtuDx`dGPwSikGKa^=5V zEN0!bxV%rcaupYGrLca5Z#}*$gG)!TxGIwmTpP|6>(Q-PHLa5Bsr6O)pPvZp>RNJD z#XYIa<6Z)^%$3CI+Nw#NNVd#X+(nFOVUt-vT=7(Pp;E<(A0jVi;1oXvm?4K}X&ir9 z7C&JxO^z%&>@gsE@}4~M??@3NCy$zgf((x)_MCLSS&(7Rs!&sE#g_{F#57<@ij36AS2c4f~S#~e-^m;usZewkUW~8u{C4=2qXs9l)G&6 z=;n1>9mO=ZW=!xBSYRfxxMm!mxwIa$rfe{Tc{E`*Dw#l!OYs}Q3=^B_Yu3#N(cJPC zJB1tg`BaLx?n#Naaa&2nEv&P`?eZkKgsN-JB3`l8;U&^@6ffl$jzfy;nN`o8H4RkP zGiJ>)Rwb@F%efjWSG;l-bgC4e!q_z^ZsdkhqvF+EE;TD&QwGOd6t87RY|Sf!@u|ce(I&k2wPpvSa1fzkb%PAeBAAyBVt+oOZOwTsQL~<3kea2exq#Rzbm3fJ z9S+u9bOx|h?vks3t#W%ifOR-nvya#+dg+tER?*Ae22N^Om;Vj8M)4I{*u$z*eB}sW z3&vHmfE(d{0J;&nE~h#@%V3N%>@-e8f=DJ%B8MapGFIa!!pes|HbmGf_Eoo~R7Ibb z^x+{2ptzekHP3uM534KYA#VdtXFbIeBwWt~R#siJmG`|!=*LU*+bIc|zdP|gq?VvO zr{AA|_%Flekv|6xd+*~YHDiR-Fs}}f{EHG6!gzfn8hJ?Q$M7(E-*9Fu5~NGV))s69 zmWZz{?4Ap(9mv7np80py7GDCTC|`bDJA@E@=mz}oU+HX8JT(g}CX;JRegv#0^_$h2 zb0k%?Bdsl?N*vi(x_MIZMJn4kLNifGuXtA9inPq^rj>&(Gf~sYX922OQzOp>Plv^1 zpsAiB@u8`K-QDmqV*PYu({eU-DDQkIs#i@iKxmh4+HecfO9wJ*Q}ctwT+y=Z-0Y?m z6z2a24#^9rp>>DKpouDedTW2O254xJErR* zS(pE>9aGGP&ADdNa~D~egbbAjEv-4_KikHaR3wRmne6UAJ!XRel)ORd>%{*G-k4At70ppo%9muyxZJlDMWP??8IF6XZq+ zp|-ITWNSU*bH8t|oAVZudc!qm-EnfaDoO{|)i9a&@#o@KPJ^lq*<-IX)eSkkfNHi4 zxy0H}H^_Tz*1Db#1Xi>J}o72}IS-R0Tx8l21 zHWppdbEk7^CX3esPVLQS7n4%JseQPbs8O87c56|b&B9uB+u*arYc6jmAv(Bs z@gtY}hDLrYI~TfHk$7F+?AL{A;)vYu(>;X58*-0O_Ye|q%H6}HTKkDS{ZXgnEg`y| zO}s6p8&&d-JQ3EUDS-;;8iC>DOT_wK~)7L3^-+c;d z`<49KeG#NX$p=!-0VRKM%TVh>NrC`2FS#_i|vX=$Y=lAm-3HZWoC8aGv`% zi1~1V`%jR#7JIQf?pj1o$v$@-NV$?L-E%?AyQ|!rL6RzIcb@>MQF66=Ee5_iCD*v` zLeik*M)%(!jY@7351N(S>=vSTv?#gNod(jXr}*NKK!V5((k~IXPX#b7mk?2AjUS3`l1Al0B5jL0%(2 z4;13F@MC^55Mgf>64KdCB%nyR0vLbv5ywa~P9RghAKc&*-SAn!Nuk73D{4DO`tL`Q%(CRD9cZapZzQ~m^yGs#Ol5?GefI2hnxC|8X~1H1+(ek`yt zmHv2ulW$FbLJKn|X~$qwH{1porsRxYLKL=JsVjLQlq3x)NDw2 zE^-beHY7YBxf7&O)n1JJ5Tsej%aM;jY)E(|l6`M#NH`oxfV8RFtC0;LdzHKvxfrBf z$&Vr(Ap4d4IPxk;hms?aKY$!i@7J*Gjc6iyYgSitgo+%Fa}DuZT2&WUJbhk+VQzO0J4c|aHD_3%j zkSZnDMt%-SQpt6ZFF|UQTrZ?f$qkXdcc!9yV`L0Sqe}KiYCxKm+$53~B{xSlL(;0` zmdM2*ZAxy9+yk;#$!(DrLE4qv9{CH%ekFHA_(g{fB^?od4DNuEPRVmn$(@mcyHZ#B zyCSnex>Ry^WGl#FCHF+G0Xd@NzQ_TPqe>o(yaV#Sl7}K+gB(-xNTd{9^fRMMz9ZwUAO6y9ilJ*ydsHM}T57p4cQGfl=Mf z!HzMI7jUYa*b?Mi*;C2ZAXiV>@@!mUn>-t*_mPZPVJ-484ZDvNPwbJ8->8MtWN~J` zx5~@PX8Uv@Hn})UNVeuVTZk2Oj(pT6#^LEQ`HGDWCYJ~K^)$s-1Z7zm_72^IxbahJ zvVoWQr7RSs!r6%rf`5io3;0bi|CUsL|1dZbgj=6CV~kB55Uw;NNbVzvej(=2-2FpT zG7{_A0{J1XIV>mxv;{OzLFgHjUZtc^)&)r=MWH<~He1O+k<=&|6zYUzzLI!|%~GeN zIK&BfgOb4^UOrls3<>cf-Ku1$kTxYHp)+nvod%`yrMh;Nj1aP4$*52p)H;-m4qXOv zKuKljvs-msHU;+zNRnAvK+zs>o(e zOOYVUg81fMw*kxSd~>?%B9G#XJCUqQyUm$A-?RPmnfj8~+noJeDsRrqfT?qy=>uYk za%sI{3KA94Gp$|5h3Ij%Gbx@Z3k^hb>p3+hv>6!{j}09Fu3Ei*r;`{TdX3hlwaXKk zVRkCD+FKuDQ_?3)tG4vZ5@JoCEm^GTbHePq*7Q+%dM=Jg(GA=b!ZGp#G)>sMny?(L z5rL1d$U15FoqqNZ&UahZw+>?CL zlYE-?H7J55_auK&f}pTMQj^1pk0X3SRUP>xG7l~q`82W;#A@WT3*$O1_eET9o`JG7OSdC0`3^Q{tpivR8>Kq+LlcZ2=_vm4wnx1L;r_PP+!= zfRePdM?nrM@zQ<>a!5(KkS+xFYs4~gFS-Uk`rHAC@74h35%RGNyO<6mAAp1L34qxD zX6nf9)OqB|ZeG_7R{%=;#S$|k2SC)1Suz_pGFyn9M{|UDsy0`$a8K)JxG)qt_%G2E zc^YQ08pBZrqGJFVa$xV)TWPY2g`aPNok2IX9$qSPhhL zJ|(LF52hqUkUWVW84a_y4C6erH&UG~CEFjskK*BFfZSoZ6=M1NG^e2ICQbUQyI)g` ze-7uNDz;mq4iZGdNvS?*#Ssi92lx`sP&JQTRw{i7XQ(QXkoAn)0$=B1>d3m4<-_g{ zU&2|ewxBE*O?Od_~TGd+10OF>8v&kW0LpQ;G=}S%lgZkh7_z2xg~J>0`LdWo|C;ETCJ?lu95hXnDL%jIr~|I+7RU(5w` z4>8L|?is$AtLXm{XUGO}*lYB4xVY}2Be668F7$P{=Kfzg{t$P-SNts%r45MS3b$AB z0U%$VelO&_Yobb|5KqT0XxRI+uf(N$k6_8*#V^0;DPrO82PNs1T-*P*Hn+?C*Jfw? zid^@rqBJ8rElS-&F>P`uK*cN&lFNO`izp3P(_D6g% zcM*DoQ98Mdi_&NKVJH~;ldsL41=VKv^oR1gR^hCMvP5&{kidEiN9u|v^^1=_&t6~fB=8w zD{)GqPwn;m4%T0MF=rn-_*fUrL4q_hXCIo8mC?^q$hgB12qld26*)8Mq1b)tGsVSJ zyc`Gq^Q+27(Zk-^6wy5AFls|abKCsfPces3&T3R_PXv935_-(3YzAk&dL@y<*%@K{ z4TyrAsfO=QO_b$w+Fl)BfF!wuRu^~QzN_wW|EYQi-O@!$^-!v3s{XK(f!m!RZzK@P z3>;rf*#gXe{%vi_i(mqOZ)9seZ$V1-tpo0S6KRSIh?9y7iQ5zx(WNfM1DW-(;z4xj zh~hZ!YP_Ymm}MR1o!hO0d9(6;O&(GP^)CkE;A|bvC)6DM3e470-UahqglH!m#+Scv zl)%Ji4dO@0B>Sv5Kb&Q_nBT+FV9Xj^0-UWnL-^S(zWcEn*&+jRz*nvaN1kNQxNRA9 zmZYAKWBQFa=!J(*(PYRpM+@E-eG4)%x-FNZg<<)gnkP^9Y|CTs(}K6jj4h@CF3oP~ z?LBBYTKW(=6LzlK?zCjFKqp&5(2~vQ#j_oGh$SCN`fZym|BPYMByal&cP_w4=sMd+ zx=-Ur@hHLAd)~g>ZBA*daM8(310R%SF4$;vFHLEz?qOq%+3>bEx!+1@tm~n%UNwf% zP|Nn1Tm7)jUbh#i^4Pe6sN><5k8d8=qu+it&lYtBp@EKGk@o@oC1#8&4P? zXMDQx3ggEs4~#WF&*Wo_&o^FXe1Y-N#upkNW&A|rBaNSAe1!2u#!HPaHa^_=65}Pt zml_{tyx#aw;|wxBlsdptJ<@A^Z#M(O~5Rx%5&kp>vT0mH#AKbLpM!nfq<={ zdZNHaK)Qj3Ziea^8iUz=>I_wfI#ZvahHj7sK~PaZNkHQOCVJaH6OIt$0FJ~V5~B&3 z41Y8R6XVr5MvdP0eZOz*bLuqw|9$Rr&jZzKt-bf!Yxvgpz2C6bj`kna)fHR`u3heb zGIQ0Rgmv-fx*V-+)uR1hu!^h|U$jho@lwlw$@8!9{Fgm{k>~%y^A~#lE0$k+w&$O+ z{Mj%qEnzEHHTK+uR)}Xcu6>wAmcC9VY)kKDdbx%BHf5I7vrAj+9tzL4*7KgA>9tpU zHe6_*(y6q)@(U&4TH_$et5*j+k(>?x0U>!z3Rd{%4e z^l>bv`uG&;SkFetTzmEpE<*Vl<~_i}Ubc58|B+D7Oo7i>Ju^kVY*;UznfM}ZS!L9h-puhbDKhhxvv9w+`+oL;?uEZZ)e_tr z=NmUs(p4T z(>Bzz%b2zym_31M>-OxaOxsY;p3bzjc=k7#UTbqXFn8^T@dBPHI=5G6idy+&bK~1T z=<_g_uYL&aUxp~3xrv1z3Gbb|@qGX|_TIV5F(}`nw$0VKxVBq*Khyhgx^Xl&^Dru@ zTk#wR#5MxV-OA?7TKS!XVTUaJdOBq8vh*7mL-wH2$f3TuZ?HjjCL@V2OVtj+(^vf@XhjbYvT{$4Tl)<$SD(!`TpF8V$PH`=)>_Hc;HrSO=!-7=q53uYx&=02}jEo`{-6DNzvsW{`2~kok`TYGc&6K};(v{=!qD7hnSWE}Ud#N4X6`}Dd_U&V+z(mi zCz`1zE%VFx>Bmyq`EO;Ou`3JvNafFBURog6{sB_z5Xs=Nc<#4JB1U@;bhM$lchL7| z%X;p;l4Ewy|6tmd@7y0TZH#5^5iSH@c8{`3Uv?koJ%{btPcZ$Mr9aR6pS1LoOgsJm z`492z(^mdf66G@j@N-}1v-g?~Gxs!E=R=}XLN!3ej{cP5idwm^j(ODq(d+sXD z%7dO8Q-y~;w?otSi05|4pGMRCB)Yll;x9w&J-rM~XN%>A=5^C5Gds}ouOS;$7pMdHUd+n}6>c&3H+^V zAi0Ps--C+l#G(!BhH3N=xn4EBgq2mv?7| zEpw`FTh*QM&BMzFU)cBY^hLv}!C!QmGXA2|`{Fo#(TkKh!GZtan!f)`YgpG^!}{(T z&gmmo^RtVV4{q&y@t=h*UD^H6RoxF=-S=7cFT5$~yCHpOU*CUX;dooK%6MDHmGOs$ z2k-8?FMa5ZdaFP5CVf=b$Lk(tRz$<7Gg`G^@a=uy{zRz#9o=*KPGwBXAAFZ)#^3vp zt{77qeArF`up$3FP4=*5-rGkK+F+UY^&OAt-)NaXRBd}L^8sZ{8yx(gp4n$tKB6m= zmU&bnq%1Kv_$g&@I(FUipZ5Fka;QA2ozYzt*4O`gzE6OEbq{bPs!OFhj0$*iI@PJSp?C zCot!pTcOyfXFYdH<`P`{zUNNU*Ux|ExzjT@;|)Le+>4a^rRUDlXTzceQHH$iCzxmP zxHxcHmN?Um(Xh;4-VP-U3Eg#EBqX#YKCp@{6Y@B)8h3>B8XER2oczG(6w(8B&$&z= zZRsoUUROX4Y+-u2m2YEu*wWjXUS;WBOs}={Zl(=I9k_w%jaHs#dW)q?JcY^-)qxxN z-nx~SPkuQJf|jnZowJs%F@2Mz>r5ZA^nRvqw{(N)yDZ)0yY97go9PEFJ3f-e#?tpO{j8g!BFT^*uYU?zffk>V8L=<<^7;GI5MPTIQ|FoMD-_>$X*vd51DP}_v2|-4gPw;C)4|)enK|C&obVZ zxStPsUo3NiwX3gx1dn*fEHi9vczSSQ|Jk1j)g9Gc_kc29_tDCD-HVj*>J}?AY%e-S z86TP@%J|S6r_2VsZD~KD;6}?V)0Hij8B}JwWlm6LuVqeDW}jtFR%X&N%ay5HW`#1d zmN`Y4LzY>o%w3ilQs!REyg-=;E%QQU9dE7E*DD$Lc z&Q#{9Xc*&FW;L?RZ}ijFxYROd>wLFWmKo6@cpEIUM)hs9%vxo( zSZ19v+by$RnZ1@7Rc4=MUe-@inlvGOLI1;Oz(yCE7piSrJok$JC6GUE%oyCL+}`-~ z?DRx5cx6B7_7K-HiO1LS(YRlPy>@V{|7K+DjoZ3TS{&RiO7w2-=qAgZ>gKRLv#b9e zG|boAZe`B0E7z)KniWq7uX|*0U;oJG!t1gcNPqXFy1v{VEh*z~xKSA&;wfd;+HDOH zr;m42S2o&}mYV3}eY?i)YP(_?AAHN~wkxmiCpg<{1G8%Iq5ko-rSIwI*T21`hx@62 zd*l8@nbV?|Q(f@UZQ!|u6Zqr#86-1|IeIe^lDe5F!|jgm4*9-tD@)G8n=oj9)JZ;u zB;qE4ulol+4vom~_)6!Fzw0FbrIY-AC;5v`a^dG$&*}TqdQL{cS@zP?JIN6wGh6V7 z|2v|?KU6%Q*GIv|%bJ8B} zwan**_aC&(mvnyELzelnGKVemSA86UM=bL-U3tthUsvXF%lx(8^Q2||Mwu^J=4qYo z^^|4)R{L+B4kOMn#HUZ5@L^qb@WjjyIjjwQtmEKGT>MJ9ocimJr#cU;< z>^D{V=w-J?+*IwOhkn@Zs`b(O#O3}QxMKO%Sh|phv47C&(g;+ZGQPf zOaB__rB;4C)5qIe7BBk=GJ4^`SKNkb`Umd9-$n1npRUh~D*G*tU;n^iT+)jlJNVG~ zU-Xw9e0T=M_Tq!@=Iu6W2Y-)^uooZv{l_x_avyvT?;lo!4!)OBFRLtlm{qQ|^!wUK zPg?r_VR_xse=veN4_o>VnSR6?wBg{JZcH0=PYp?L(7jB1gYM(0uIV)L{{8{htu77U z`r}MSXPg28~zy*cKdCoWxf<{zwLCU zZ3J#RgX!g}{h;0bu{uGgp1*?o_cV! zeEygH&e6(Mc*vd_tuk$W7_EKm;?StkdKI@@qel0)kRH|>M;lD9vUHPao0ie`fxifv z(CGC2NN==zW}es-G@;R1rng)9+*gs_Yw3e5-)HHYn4YxstN$4F*z}Ix!t&W=^-45) z>xWQ$$ZmPfXOO-NBRzV@*O0o`N?*(1p$Cl{43D1C$G)7#K98Q+ckw>_Ynik9N`HwC zTV_??8vN)>`I- zn4_}6GAAmt(K08+9N#ULIXUJ)Znw;G-L}^*LqY$*NAY)I3nfm#Uts=|_~ZGnAZhG+ba~&o zc%8SXPsC}NQ~KCEAG(!&Y=h6%seM;+w(PbS^s%$U>cwy$dqGBi0qR`%cgU z`b-XmYnZpc;VfcrQ{kJ2b=I<~!s2aF@6F zE)BM~`E~K<_My%8%o}2M&1d-T`2BdsXZTI=lgRiC-=j(O8NN@G>NEUiO{&lE{qb9K z!811c+wni50-NCnIy3y%_-lA$JuH#Ws-4!D&&6F!vyH{s0M^ ze5Nq!jL+;JcmSD2pW-$CLBX3aa{U93BBO7lu}yjmg@3_922Jx#x_>bTEqwdso8dCw z-F2B{5&~EIa7oR%jQ41Ps$t49whym4VGaMD#XI>ju6($q&~>@{Wi?z9 z5iA}3Sl^!^W5f1@?5Ljkl&o(lGv-}zJzUPe6eajR8A_bUp6(>S*-3t{ll(6vm!J>P z^4m{1_p8phZ$EK_MaS~b?I&>u;((=3z8tqKjTUXhKa2SXZ(D$W`Um)|>REcng8fJ@ z%Z`_#JNjuZv3l-UNNMgLgFL3XgprM^w0c~OY4!9{rWaWG@l5*z8>`2BK7HWWt_PN} z7zRGR^KY2E40ZWg-2+1x{2WC*$7bk4wPabT9t~Z@LLelT9Q{{V8hiv@;N#YXp)I2* zS1X3Lc3w7gCFQfXXkh5ty|_u0U)Sm8&|a3Jc7`fVq_x`+5AFN?wBD>NAj=wsiD+n? zK+lGFDEBbZ#~?yrHX6z^jjwO)8>*c7wa}od9<;{QnDz(jBfQzl_cLt*cBsKhhONRT z(`VQ{Ev8ply3Mqm2|hH#Rbw6sEqr6w zfV@cq5*@Q@=)Rw(H$1Q=MT$cYvfAa*;J%^qi@uISmpCCSIJhg=!4>S#3U*)xU%G-X zF`9UM=*G|C{u5cN_voP~jtj_Q=)I(jNo)E0MsQ2r(jQ=hXD$60Vf7(Pf1K^S%hI1> z`d&-_Iq!MU(qCcuLzaGu>BE-(Yo;Hu^xrW3Sacy(&4GC62lxL?Xx)FZqu$aVaRcAd zW%cZ?}_4Qm}5E{5B*CYhj?YK1y=CwKH3)|d+cAOc6)`-N}u)$ zzoX2L?6!ZGwZUuut{iMp{32F9^dEAn?e*OEBwqG;?)$P>OnUAIeZTlSj6cm}B(6oY zW-OLT1E;KDMf4A>MTx)~XKnG|OHqISz!gX@;>?AD8^T?jG!=%e6cyge*_&5-Crdd$ zdRf@v@(vW}U7W1Yj1TfwPRn9iBf_SiCwVKE2d5>p;u|b{9BY-+W19nX`pd&;ba?QG zyoUvxsIaT~WTYjSmk<3zyc-!CV*3)GXTA}ehj}%gjTW$mp>M^n$GsP^;3oaOS$|)x zzqbH2;HST_?QIpf5ZP_g=KI|je znP_NFX6Em~W9`bdnVXSWYMJZ090Wsql^I^ynyp4d*DJHiZhNIdd)HcKpRR0JN%5Ig zdZS$^WY(bOEtViPay74#!j(46!Qq%PK(BcdUcV!OYD?`U*6oY3qADejz8o=O@zY2FR z9a^YDyWuF+@1r`P%mD6=@zf~;L*r_{PLUYO$yb6fV|F>O%mUt1(&(>b_~+1#c8^s( z<@fXt9EX168`}6QY%nl(-s7lWJa_D6_i%bGy6jziN-?&Z#^1wBwaH@aI^Olj(sK(qrF?Aff1#?U zhwYi`S=Te3c_m-|tY?0cnePst%V8V4ftl|QpWA9iW3S>e{@L)k+@m{|Xamt{=Mo`} z?eka^pMDO4C%@WB{$nTkLnQkLp4H#iV7z6A8Y?gQM;4!tzw7Z<)91#@%y%zQrTg?Z z6P>gaS9jw7#rnh6F5ZhQ>fuE85BwG~n%cEv)4z+fjou8y=R7@25$!WF#|nHF4m^$9 zSJ}hEV>RaN;rg%9a2#fb1wOW)>49aF1&l(2X|JfsG%XE$XIF22|ApUp{@$oh3-q^N ze;4Ynf8lw{*az>%!`6lm5hr;1!z3douSc0)Dm**(r|-e-PF{cZQKY?NANvZ@PF{-t zTWfWGg7<7Rrprec^CO0fzkv>f^RxJV@nqhq%jn@Bu<&%emeq#B$B`Z!82bgk%Xk8t zI`+#?fO^is$K1w#bv)|DgB%JR>x(CySbmKHRnM;|+S^@@Ekc2a`nL`?TPq;nP(6Ix8^x6z2JR-JoXEB zU$d!m-&nZ#rtcuNjhzp_WuA!N{^&DcK=1KO=@W0`6E+H09mE0(zxzEAzx_M^Z|LV$ zp<~wV^nTCsM*e!P+9+I;jshJH@fhE=g9l2-+rn#~dr)@VjcWf-2IaY{d)43nA6A!+ z*n2r*{R6K=2W;H3p#$vvJ^X`T{Pq`pGYmy`{q|NMV*?CK|?OaHr5v6J)}@4!%`Blm$0t+nc1w8rJkU;Or+cmenVk}Zx| zyvK+5uI}4ABz#CL@uPG9y3zHGPZdL#exH(~$aMHhZ6OwJqUFYPyyz45mLPOkW# zQ0!29^GNZao_JExA6A#zGM3S zFcip%_XKi!>94KM*Drg2xc3b&m3d6By88k$G9}-*h{;R=llZIf@KM%^rIq-5D9Uhs zoboSTaky5E7okYaTKaqOdj>qcY+L-jqeFT}d;An!HywKi$yxw##1Z_x8P;Np-F7y!aoNg!HcXQ!feWf+AP- z4`Pjn4c}oB-kwc8QkP#^_FA)6dBdC?%6Xh49S1{hcx-!zrV;!*Xtx_-MjvQ&5-Fz z-mj0pdXkoo302TKSeDw;i^ZYaZJ=}Nx$%Nv1`utNm z$y3wn&%ZQ}<(a`|4*>4a;-gU8Fa)*gKWo#1{}~$o;HBw<*QyTPab155xM^>B>muHv z;OujS-TaJs{IV_ z)Wf>r?Za;g_gYf*jQ^lRI7OXTuHsj0IGSHK(1Y(-LXBC;cfKTT?aX>vp>+4$(S1BK zOX<~bSJ&2EB#LkJLS)GrN4gkE5ozz+L0#j zdRr79AD_8oaB*hI$|c9g%Z^%lGVtpe_~O$mP=p4@@z%k35S=+K+B&#qG05vUT-=J1 zg=e7z;P<2`v*hKAFHqTlKRE!)Im!n@`Jxl!7q4J7i~IG^F@y2q#k|O}V~tAPwuMlgieL9$R3L~@|Kg>2J6hpof{S} zK6ddji+LUTNT{(>xPniE?R$Is+1{0YW53mVst*9NFzBf9{h@0w=)7n{e-ynCi#-}n zZ&7Wh`7K`C>0OoMi5GQUMHZ%c4K{A}Hlpy%bih>MS%bLeLX6al)pOhciw)cMl9M^G zY@6%vZJEtn$c*T9v^$%ZEvyF9(?IY8tY; zyL&OO4|`Y>IQ(g#`Rh6zxOfGpVy_oq+N|LE)e#fbB{maL^vZb!nD+Fy+Ea0~CoStq zbZ!w|?zyV$(OwuwMD+81qn_LB|HjewdDoGF;MZ@9|C@7P(>lHPJepXz?;(atR)`SY~sRUx?mbj#m!49<}i?G6=%r~0D%HtO-NKSw^cBRuv? zzb%e_Dgi4qLHcRW02g*}gc*z-T} ze=#F{JhM=N7TLDFQ)&5yMOE@&p~TTy_W0z zUrcRCzB(;>RY<-oEjogdj;v^Rs3<)3Tm*3BV>`lQ;iYkOLr6Z5zW<1Ib!0_5kE|#O z6@@0n(Gdi2zQ5yl{ohRVTSuyuVYFPJ}1+_@&=YZ`sv*%M1Ndcmbv? z=S5xb3f(xAR&>PNKjN1@nci~5ls)B_{^S4umhYsu><-D5&{+Ay^bC3OWt}3s*7^HA zuiz(XMcYGiMf%jPP|;{wbVR?-MxAzbK1&Sm?!3}c+o2KnMehYij^ke}ITn9oHUa;~ zYbI-z!kS8{+AP$n6Kf_)t;zQIn(_R2CCN9YJBebWR&5ok`8898Mzv60vwAiE%hf8C zT6ImkRVp{5)oZei+~k_s4d<;XRdeNbzOW|StVAK*&elsT7?~(k3yo4Pz0h5@I(_tc zZ!eds?b-BU-DXA4{r)vYI5T>xonM7=YwBoct5HrXo`sEx@g{W@$EQ&D9G{Tn4%d$%Xh_&}_ZdXrUPC@%97~c%U`e zC}i_VsamYrl~$=zKnkD&BV5n&e!R0@E0>W%g)nMobG!qk`9d?7BQU;l!08iZ5uGEuqcD%q&;T`kxc)j{quW_Wkd$=id z0EAyJG>S=K8V)Xde*P%3{k_e^^F6IZ3673o!>x{XDL+y2J~vw$c-%6RE%`gDwS1v7 z5S7Y-T9wm)duq-7NvEDlyH%LA3ym3kG1Zcs%yOYss#PsN<@1cknIdT+*%)s%3SMiq z3A&q|vkNn|#?=0Hq3zcy^=7@GsmEn>7Yh$0q?RIQSM5sO-;el{lE?;csaKMj>{Ov$ zx4J7~nx^wj5+Q29dd*p?S>atMDwj)5ABkKe&_)|g92cqMj!p*e5KZFWiod^5E}|Y# zbt&(CB{vCoVImT(H;uwnZT!YUu9Z|t*Qld8*9l?1roBq&I;_J z4Jyd3m7BB@PFB7Uy02$(0d(2U=D5<4L4QPqMrGcR4p~|~xojPwcI8sbXQ^45sAfsh zc-qo|e6es*;Hw;5BfXQ|3p4_%#$roywKn*zkJA2jt(CR6VXSWq1PaFBeaV6`<&tcp zk@ZI4bH0ARsvE%|sYWYoPBuza487$Vg=VeY5M5wurYjw~=WHkAzC1Zz=~(A;Suh8C zUU%VJf?iuTUz#21P%u9BU>A@`s@Y1RSvS^&P8Um9Oq>Borb=m|k!=+cOq$n=uhu2a zxhiQ8_u9CObgd?Y9cAYV`6QPWTf{ver3C+#{0U>1C~r3ljox>Y+Q!>XIyTEFO5fGt zEEtn|7unY#>?(!i#!?ZjCrN-}nv+g(%|ecA+-lL1?pm*tjjl!B0yj-cwFI=rnJ$Sb zqN%xwMy*{B6oUfZ$Qj|QFib@?)m~utTDsZ<$xs+u7LyfdP)P|Yv~+SN8HcQy5?jTs zpwX#L=g1#S1_3an%mVk68v7G+AFEu97jcumAWTS3Qb@vG>9>HuT7J7BhV)TTH_~W} z%_!1%K|MQBNTo^0tI^2h+Kq;Bd1NY0z5)p{zf!ggme&-I;8Wn6mAXsI&J1A`jZ;G? z+Ow@1WNB@JYXpx~A=@lfEM!}4tOw+v5NC6Bk`nIdx*wJ03y|Dm_C5kGb8#<+xQ(s^ zjt7DuyXSql#9{PtQ)_D-cGqlS#3&e1KWuxrY`@I8aV0Z%;ex)*yE8=?c)oelz3o4` z;e9jL{K>?~Mc4lr<#((6M>pO3UoWq1|D%7uAamf#>rs4rX5gK;|BjpQozBz;hBJfz ziNc@sv5wc@Z1+BU!4=nM4&b)F%#ZqLdwLKz|2T7eF;iQeIsU@m)Ei2B-m>@0nGf7D z(8@d&y)$!Q??Ah+4+zr8BgwYV@Nr1H2r#MuNeOhA2aVOH3e{w?RA>+r&hg?@1TrST z!19TV?Ku@>71Ze_3cMvOPqoK`89fK`&|M8sdUq**Jr%B2d< zx|romC0u%iXwU9VyRJ%h?im}~I(9|0xm*Ogx~|s9M^nv0D`^XaB>d)ml8||W4x1p@ zgh(MOB9~S~ypYt<1x$8Ss!_xy^~pK#tUT_ngXH$NON~O3C(Dln!;7^#peUlKKstDv zMu-v+4Q>?5g>16`@@!!th%YtT)hg?@b~lqeniX-FttU-gXhy`F5q8#bULax(W=0$tynGzt8;f<(jD{_Ccgm-D8A)+K_y-^^eNmR`1kltlXrSX9##(cUEu@@TrVpjYS z(^N^Or?U+Wnj^G?Oi_%3PoW7!7FfhNOCV^W-KdhSx3bk7>I5wyiCZ*_poai-lUkt? zW!tSxC4NEthzY*`yAd4U{U8o1BK54dv?2`#B zbTI-dGoVwAbu;VpO{s&P5UGPJM1YrkAvjX2fE<=1mykV=Wd`!8PheeeIf5ZzsL;I* z6C1D9%FdLskVMm*c=9BlZ)2k<0|@|WG$t_Cn!lZw?ny4$lI*&E>{2{VtpYTi*IR)B zNwHWjWsE^N+P!nrrJIx8*KgmPY~QqV_ts5UCs%JB+Z-kv7_HXEY6P>YU>*C5HH70B zJCL3&7L52rG21S;B#y_kWn2RzO9Czg7ct&pdL(EC7twi=I|wMkxaS*Dy;w~uQ#S6z zh2x-`WRlFTGim5OD6oyiIv16a=D78km7C_w-hx^<5)fKN0#XicVY-E(DAs_K6R`e5 zgZQ0r2^Ybc!4I%9yC7*Kj*C5l`ASx@VZ2oB5|X@)gGd8JvHphv z!PkaoWn@VvA>+8}!7yqKOl4FlRB{u^6#hw?Q>A*qm|!_rBU`s`6%8aDop!4Uoh+JY zma2I;mSLQL@M$Jha`{p|n~axQlu9KcRbSUcu~qkWkC8f#DOT#pF%nsRMHwER%NsXz!F+$ zFF{CCOAxCDVi04#pKAxR59VlWndA!qQB6#*1T+8zYXO3o1@K$kd z<07g|E0D@ibR!l900gm{_#tIMJ<6fo5SOU{BNdXC32sO+6g?PGRU0+4(?Cqk9JC)S z2C!(bL=u-VJv>uy0lS#CVnTJg;!SHqHYUw;)PMp0u0f7tI95 z5U@DV1ONect3a@orYTK04!Ox}sTy$@eYD8wIGYiU=nAuKAV@+c!J^;3ee-30cR3Y# zMGz8LkRfvoQ)k@)sA=)o0+uxkcn4IS*J`U)O6YyIiGl9`ILsmhYs&CTP;uG@10s+e zP#EYB!627P!f`6wg@DkL8Ufok}Zc-f({!uU=P)EXF;%}wHmcKX*!*E64tQ+ z7)uF-?K`(!vN^eY+fHyj^2aSZw~cMvvrF0nUIL7d`6tYyd`!UNF#595F%oqgtC4)F zi)oH+OD^3uwrkHdn;8Nnn|! z30gU$%51LL=r+E9;wQio#VIgdZSsJ+YLZki(eEII`kd(k&_`(E3h0KMTv(usz_QTe z0T}_saI85x3SI}yD6=b2iZCD;D+vg)1!iCJNg;MIKlDcOx}Jl~HW&!xiLH zNCh2G@5Si|I}G|lg#de@BI?9I#sH>2K^icFlW1GKfUs9YfjP?;@|dM=Qf|<`lW0XX zYS2;42tip$H6ic{gRW>Sk$e+IUN8lTC?FL8=aQfvIcFp>rD3+V`shJ(DPg%l&o+4A z5~EQs0}%lhmdW&~)sYn1RlEo9rtHbVmjNUNi8uq%REaP^hT-sjU~t@Bn1$68NL7kx z3wo7gA-^rZK>(1;vPaK}(RKN@Gdxg*hX0?iyi%RZvbfYf6SeNn1P7 z_RTvlPc~n>d2DyGYxkzzn}dQ-1gD5(=W|I{g!(cIk4vkGc?QXW7x3KuMup=7Yu{8f znZ+VxJT&Qtnon*n+5!M}&E}oZr&0UP-6=-susYhpjQusCFM&geOv{x7QZT8_z%?To zLX{0NRZRd9P#95J!5o^bH@c3BZICh<0Su;?Vlb!fk$|M;>jdkHkTTdu2eOx%NcqlH z1sgG#R1}1=>Am@KIzRI;3nzP=&1%kIy;SEd`u&(i@DHf(j$&YAnA7V6)1apSa|$<) zCNG~*bucy5SE;~O1d50K#`vN*FSJ}VJED|xQlUCWKmk~jj8A48c~d6X*^Zsjy)+3- zo)WBOxT!=wf=0HExf%%?PNtzf)gT~mxy%a94V;t29q<`+!FB+&=ga}dH}T*0!SiD7FEs2wpt zmu=p3Sr_9&rzwB9Zfumv35B*u$5=Wv8?ghm8F6~^$$+XLBr%1+V_=hJC^aeA4ShCU zdKGxSbSZOoM5YRk(-PC1gz&7@jl!@^$fn7Vpa8TRflbvVY6c<$1JRVy;6scU9brC0 zhbpC}Kxv{ep!)_>PpZ-S#e*hJ>+QVw1cndTiCQm=I^-)@G)bFFEex<{TvXT7}3Kin4JV!(BT! zUy+E0HeGfZ3^EuSnre3K*|mN1*kwSqPyx!>5=L0Yzj6(raUyRRNbsF92f_yGBFqo7 zXbyN~B@2_HsTxMQcwl7|lQ%9OK&)P< z%D_Y$2`q9TV6x6G;1lKMpmShsU`hn!qmB?vxZ$}|5l@B=%S=PTim~k0Ft%(OgK7P;XrfpLRS3(vV&7Rypp;^(LQ6uu1i%N+7#M~S zQptp2YZBbdcnpv|OsQb=@NYZVg^iW_N!o}w{Y{&n2x0?!am(DEJJi7w)2`zS4V5w&Bhv-x7R==YR`_0 zu726-^;i=??Sd=>Tml<~pp@&;XYf>=zOz=#>B&7BC);Xyb=zUN(v@h8pm? z!P{(ok_sc8@fJS;;sxq-Nr~Ae@o~CL=yoC^KwP#K&x2+Kiy&;Jw6WLG8VXB_1+x^E zlXm0-$Kj4h@76Jp(u~$UVGlhVb4}Q4&l`3?1%>iz~q*x)6k~N&_ z3_~AavT-YVVH}31CS(x6fIOd|#HkXvk_EkhusF1~f~eopa&Ji4jJ-yFko_jQjg!FH z2WCWT5OFQmp&Q9CGBAp`>)FN*D)xBdE=RgXsFR{=5g;;%rCp~FwTs&EY9M#o5uXb*C zWW_!~E$xEr^q5nyCwc%)8lyT<3^W;AsJ_DN%|Hnxelu7_9it4{aO&QZ+6)JXGYHVL z$Oe;OYG-0YX7Es<0Wf(~TN`jAd4b$DW~*gesm4rJ@Gk0|w0}?%0v1_JmX4C#?z5eSd$oY0fg zgSCKRG#frdQ4k3LMe`(wu}*nfK>)BYRE(hr+FFKAJU#<<&N-6%wL5-h^+G)<3KkNqwIw!%`TPpyJZ-U3I@H zEP-HATn4sQZK~UKU}DfDSD9P{@I}`^;NXpvR9f)PnlPBKEyzPoFTNCBHd@9>94Q9j z3p1OPA{gK3;-l%%VzmrT52UV-b6_Sk?> zy8;R7)jEJH?C&)Adi+^{J@7Dq@L&gOmGHQhBt0ZDmCG~=c-58_IRFcHJchN8>4bk9 z9%3x8#NnE|P-%2_YL++GT&i#<3B|ghjm9w<+Y+!2h1~c!7Rjz;=R+(lwOKti52`qy zl#WSjC#=UVk(}F@h6Ve*Swm|1H?1M z>6%Tr59&K612>2XVtE+0MbBhm#~gFTB5uGvXb>dE8AS+9tLmC<*KWGx>dhWmvWc3A zX;BIOEE+sGRii9U1p0F_Q-J9i{#h)C zIm{wu2apHNDol$%lL~3)A_l@(vW<|w4EGLfvVzk|K+zmzttZIxj*(8ma&V^5){96Z zib}jh@(z=Tm=1%r_M{0%Ep-oaB8_ml$ej$=5D0gM`U_}^P}>F`9xKTGz|YWk1O{Kj=|2u0{1q6q#mcYWkx5ruL=eSyX>3UNegY1X~h#U`*b zzyq+mtioXPu4=)n(GA0>zhj1|pw?^kHhBap1mA?32r=rfZBDjZ@EySvWawPuOx!d9 z;fB}9nVVqc!3-<9B&xJjw^T5gkKG3^17$<#(z6MVhvcPzlL9_nU6;c;3Pv@sTi`8N z$pQDFm1(-*(VmNFk%Iw^;a*gM5=CV~**BSQJXX=Om{mB{NvZ0eF=XN=C?T3TTVOeX zc_B2H*8xc=peRA3!L~&=4t~tb3v1D|O!?Mf;SPxsT9lxV!FXbJ0AK|}QJQnD)V4zI zG4Qlqz(b~p<*tB&Nh|{zRLNjqnr4kIJdotXmCHrh-@=kK1B$f)MC~R4g?Kw?P^_^D zwh$G~m?~mjpdzZ!frF7RZ6p>S|w1&k%kHc=|bx@ z36u~QMs~zwq`qLd+&U|~8IixO)!%jGh?AHz`rr`p188cjhMLX{Fs9ZZfdHcsaqe0N zd5A7(W&w?8x|=}q;u}<Dq*ZNna1s8y6m!g*p6VWu&WF>p`z?>!#!d$SBw8>aetq>gSn`A<64+AYTqJ^!`fguE+gga^> zhbGWd1kDW3i;rrSVMv5ToHckOVg#oT?=t`aYcJVvD)yzbV9xeKE&({%NctneS?SRa zM@A-MVIpcPmzbtSYL#P#%u3Ekm~+4{iRTnO$l>iw8suzua2Sj<2r!$ha|$TZg%$w@ zzymND(g4UpWVSMW09mq9uwTW%M^oO1dxAdR&5q$ z1rsEc$FsWFCt{s>ya95D}YA>#!+AgBb2;3AcS4pJi(GjxffGKt^{0w!I%v3_~LmV;7( zD}#1~$F6_FK2pLwQKDkWaL^F`pcR2II!v-mh>F_ucz|(mDCZHF!Epqsb$c^_ z8>plK{bKGw;1=c}xNU$EVTLw@ilZ@%iieK$EVy@n>#k(;&Yk8!Pq%Aec!?S5?n%~l zXVyz$*C3!-;6Xx=rko%g)7p8)Y!>2)3 z02WENe!ZUY@o;Xty0ix-e#f~C2tMgv1Iz&Ybq533WVk?=^VcN|HWI;GUVy6#!o!UflEp%DLd}R7ql)9fWr_!b zM~{q3ep9-^g5fdPvk06>x89*rF!sP4lXa%h-uu0H*a1J1- zY6g0d#R0R2^a#L)S)T+;@kdhw!dr+?j)?h=rUcR0yjD@8#Dmbwm|Fy^{GO`VgbM$^=}-Jv$}519fcsY{;DAQ7>CdhEp5 ztQ4!5&h{b{c4+Qc0EKLY>M&e3G}6;I$!A5kwj-B*9!3;Nx511v$O$fFi>YH+1Xo@{ ze#gLaIlL^M57dPa{9x*k85=uWQg59eGsRYxM}TP}0PU*)cb0ha&@}kS!?3`(40`pr z9R-n9vWPIjt6_kJb%QQ`x2pjRa*k}ClX31>u^op2gfa$cqC%cGPMbFZkBqWir~)G> z)RW{4$Uta;F3H1gLY}0Lt)>_~uLl6h0`4UBEQ-X|j$U#~eAosU zeFa|~%&G|c(hB1GB{D@2AT(671d1aD#7{X1k?8hQkf)>;zy#J6F&P#MRu7_Qv4e_g zD8Z81Mezc_c+8DZq*dx$xnXf*gqru>;5&q_?nzDLfb-|9#{g4~T67WFJMa)6D)!L23>y2Ud(lK~~az9TGaHQ=ckRzz4z3ETT>u zS;l+N#ytF^@QMYLD@jGACbh-Lo=n6`av>A|h1Ea|Xe!o($r2F(RbfC#f*YFRLvUbs z-~&g5tw^A8Ik+*a16I|3*(Nx-aL0=u)5`~z3mXHl9J)*uG+^kUmM2g{j|kn_cKPK1 zBUmpW5615SjKUX>?*lf>a%PPd12DBi>(b1Jl{!cfB2LgAQwHD@0{hv^rfX~x`{wt9 z%t^H~5EPA-P%f#P_L??RJcAVw;^eQ|cFC2=*e=`bFt&L&43}7_v=tfkQE|WuhiICB zsVUu#L6;bu0%DiIoa4TLFkEG{2h#Vw&@eQb zWkD`(F%1w8ViG}nMc9TFLZEdi<$_ic>_{;)tIP)iEHFDzS>%o#V5lryvW6G2|4O@Y z5rSC3qBQdcMV?Uy$+R~vmBt+ET-u^+3I^$>0K1$86|@ll1f)+aDT`%LC~$6dlEujp zZFIO}@`d!XC6yAdO&qo6fIOUa$*iex4cHB}G~M;$UZb-NJ%P_1j19yNIi*o0zJi2t6B1>S^EM&nArf%Tg<$DOsaV1L$WvRmPL3?7(?%)G|shNDmlwk=1FE|TVtSnv+ zhQck0QZp1>$8c&0(^-psci9O!3EloncwPqf<{%6cJPtzJx2w=Y zN&ORKgN@PP$=tR@ADwGaV1(G$(}k;#;JMI+x9tqBC9rG+jL`Vu`j%T3{gegpr=pLY zDPqCy#a6AAKNy=36vD}2n&A(0#TH@jkcps8(6H+% z&QQpYj0;-Sw!2vgu<>q2!Z6ws{nt4%BKQGuoI4(u+j6 zgc`-tgb84n^I>Lman}i(x1NU}Ia|Ppi7bNeAQ~uWT^t761mq?J$}8?Mpz#cGQ6?=_ z7j-E{-be{?85qOY_zLzog4s4Fc&7}I}rj= zfk3v4py24VeTLu$&Id|WJ2!#r3gH#(k0QZ%3RXl4cBo071uY5-0#s-&3JY+{Zi@@Uh~8tLAfwU%@?dTak;Rx%ox1>2BzJ;A zh6CxjjgY(jAR7b*>G#o0V0NI%O(OVN%BrK(2HoP-23RGm&fp+0f9Z%Fy8T3?LaT;4 z!G3~^H{d#GI!?>ftxY(<2~58n^$_Db-L?e->D-oMsvg#wu~}NzN{LzB)%g|;pv{~~ zXn0jq9~7($fMhV?n9{|?o^DOjX%hqh!flN1n=FYXCnmHJN2*@I&cMb>3PHg@fJ(Os z8}qK=0Unm#sV&yBubYE@-Vr-$46M!(j7-yoIe6uaNt+FmN;BGt6Aci5Zk9hkIe;w; z3M3yFMH$>gv#UBm0!`0N=4%sNT9`bEc(XN$NDNe@90&U>Ip*B44T|s5`Av9g!D2;X zc$yfNiAftI#_d_G5Zc4JCn?)BSr>ARwP4L?BiA@5O^s4WF+>2P zK?^CtL%3@L{p(qrsE6@&ek(%{H_>YSC?49KQP|Qj-#&9S57~fIT9HxRJM=V(c&np- zDHt3D=yo_%rCbBDR`4+QxIsig+}WuHl!&&d$-vbS8Z2drQIxmjF`l6GoVPU-961~%7PX*A(yT_u3xs~q;9xt3gWVRg zu+V00#oi0U7VKQw#^vmOULb_cGy`2kM5c0(y;850?Z-6_D179%LMb8C_L@z55h#c- zRY4XlPe^&e2YdTw#cCOpp^G9t5K9|w7!(2s7_St@NXK){SBwKMpf!{hs>tF`ZF4W7t^sN~k!|^aqA;@1S_!Fuh}5m~v3`iL!|?{me)25<1qIn!(|{pK^<5@XDj+hst~XvNI}f!_ z8XvHr>~YMVc6^h*xOWW!O$=3A?>bZ6H(u z=qJnKk}6L_MmkKK!HGFS<)m8oh0B=1P(w^PZI2;3kON~DdT6uoDMAMf_?0nq@UKH% z!M4_Vt0rYyYf83Pvt8>P4x3jomyR|LV1>QY7zQ`nQ|yyzG@je&!L3gy4*Uz7 z5pC=sNl0p^6Ya(5j5k=N?B?!b5LYW z$uad!-O{-bI0dVV#2cFEM{3m&Kgh6iy~vQ8MNf1hIAk4V^QENOo_XpjJkNt$lW9S< zv7vpHh5+vDqpewcp5#|^2%-}pffv*r$%QC~l?y|glq*INs>T2w0qAVA7(F1_8|eXY z%bN2vBM;+gfQgOP{4gA@6*6^M6pco7B$Nio&Vvf!0w60{Te)tfkp#43_HwOZoGZw< zX;LG?GsFXEIFx&hI<$=2Sme~PaAu}9=h?{cs#G<`dP>v7=xJma00$6Y+;$hat?U)l zkHA@Fn+fqOD3GhNp5zn*&%t_aF+YkGpJr|8b zJXeTdp_s-Ne#X53P9n}x0YT}5)4`K`#BK-l7OKTOqiq9B(OHZ_zASXWFoLY(2ub7n zf&q;3q%@0GwuN1$kdm>$!~SR+q_9gF2n~TK^36s(O@b~C^*)Rf+(xwU)5|3SJH+_|VnFkzG}`wKy9vA1-j zg$M}x%)18)$jD8!k}qHiI_F7dNi1C{_t|mqH}Q^ACk_$78nOV?7&S1eA;5t%9ArXJ z8?|8O#j4o05QOVa3K=LEN8oE}KQxZ{UO8-Orm&^#mPt*aJ~Bhlbj8E;U`f^rsAwCF zPK~3%Y5UGAckJ1=dlTX4b8L3gp1T=HSp+=JrpJWv1P+?8TzoN_)ZFWk{XELg^-tGw zq?ZX}V0;yaD5WL{k#box8TJF=D3k1spc8no=}I}`I7WaSKVaL0R;eZ^%axShU#o&% zoF4-zG4vfeH^H+PV#29O*37=CaETj%`M9N5&4d@pjy0xM(zPK9m_dAua@J1%ge@C; z8z>tnogtdRlsqUOo7Oz^z%Ap3H=qV$7m_2};Ji+`SGqp|NOejK1WN<^SsZDn0r)(c zD%;L8bh*tF$S}85LL(j|rHJV?`VA17TM4k~Cm1^zG5`h~rU$Sm-9lmO7!2P;L|Ca< z1cV+?)6Me3lj;DCAd$Eb+*i$j6w(%9KY|v3hM;94UI1)HSVQwms~R>a6C=Tb0Tu=l zl>HK9OC24`mN5s~;e7{-tgpb;*uSLrF~SR^#>iHlCy&k%a~TK=zFPAe2_{(VeTcZE zgAm7}aVwv+DPN4KslbLSxbKbnObbB>4#Nw%7sQlfau0-IL*P&0G$!a8Tw6Ml5=Jr3 z29$^3h2r<0Dyx>7o&dFj1@K0mNGk=FG8DiAf>&FdbZ(Vh_9(>g*#jJ+ z%1z=#bOr#lsSt4jT<+NDg9!t1<>52O#E6eT=+dbn|DKUMPJClX5g;GVLzw_)u$8(wC~VjU;Pw?<0U5i3Hc>`00cbSgJB z5~9s6ItTaD5IWMx&W-?)w(BTpVPEt`VuYof)rT<|p*;<`96?_BBGaCc2UclUw6$mi zVT}{`?8C$eU4Xb$1VU@f@g6Lri=g0)u&ERHFAwW!aRixd=v1?nzi6V`K7Z}-2;N>~ z_aUKjtr5jopgt?4pr}=mmZN`!*0<(G>(V^Dte$6x^hg%}jgWloVcFv*@huc=h8}5G zi3dhxEI>Q?Msx{SVx)>=u|}i^6dEHS5+F)kw=n~RrT?MUVDq>iLl45&-x`6%qEZOY zdAW8j9Vm=A`x+q&@Rvap;h=rYgT@N_@kEtz3x3r*A7BHj0}Bv7w#geF8Ie*tOkO#I zGQ_HkkV#<<5z%=OhVgk?3<+SCHzP{hA}i?(p6d1`NF=O1F^49ta%NDJIaY`kr=4TUJAqq-JHp8{H_*H5b-9_)hRH*gupmTX9@C{) z+wg<~-+ePT2aeoAQlCOJJ8O}9qD>R-+>sDasf0NIyUxW)Cfann`Bp1<=D}q`WGXdV zExZmbAZA(0Z1>J3n(gc(2c%8P6w~^Mty5?h>h$$W6`Cp@qr`E-1~y@kpc$qlX+}n= z!EhA8^TnZ{VE2lS;^jI^x7&fSP4nOq?y%`GZ(?+DmIZyUjDF+l*V#-qz{wOiFe1NU z8)IBL%z>s?bngP8c_cNL5f;Kcr9F1tRBjBDx7MePTZush<1wu@T4E7KUVd_|O4$(>6 z9)rndOpvofSG#Rpi`)2V1+Ey|+**(&W>LBzus-eafnO)Ee(g=hb|&<#?1C18fO_I> ztf&_D$r#SB-b2X|@NDUuuZMGO*Sz*Q!uA>n}` zcKau$9u6%rO!yk41#1tygoW<`ABR8=%9fZXDz$E+1sr-Bx-j109O@|d!(dV<$v9bv zj1qr=<(vcA`MwyYT`$ZvM$LA|QS+@%?sNd=B00fx6VAsX8!?XBb@Z0GJz6-YnS=|`OEYTt>I6pEoyh5?TM#*#BO8bCvh?Si2Wo?Sv2sU)sY|g+<9|CEMx;W+}rUt<)r07|nUe(R}!q zs(hF*&AvP88OZSy=j@AzyVAdtD;qg#L=Ys02o;&i%?c&Y4UH~FJw-ro9wylp z@&Sy_sWT%6E3|M;n`4TqfZ|f8QP>cs{b1>NS?Ru!;HBSw1y00*q?;8!R-mDUhGR4_ z?hsEHxFF3zc6Qc1W*8<*3;|{y%m~s>B?`?^JR)(XMpOIOpJNldgd8}$3D{Ii#jzRO zP@_ri>b}85+T^MF%dm=16(Qt>6sr$Fv9%;gpATRJ$pL`l!syzyNp2nJJw%Zum+%`K z=I;XANCVc)OiqHs21!_nXvmdwj}iPxJ{NE<-X2#V8TrF*p;3&ae`!-5&XW~3eeS}Goojo?AWKY~y@Mh=ER2bB@SigknG#;%qM-r2#Z z28DIj+Mcm+jAc610NfNzbj5ZZ6=U=RxCGR0FD6&wnI%;mR@_3k91n-Ij|!;Oa{2{S zX1f`|Lv<{*zDSU_T0+3E_&*oCS(G8&bbakug6K5S_v9a5)oD23)}Xl*RhMUbOB{&~P7~EXj-zg<$7gh7c_fBgB#i zS!o*w)klSENPlDio(*!CVVB2RN$K{puzW#dbh4mUvuRT3%!_G)B?~(p0%L~$#ycEl zUE9Mm@THV9mMDbSXIA51>%QOVYAVMmA-zH4tDg-o5=#06+u z($0CU+`8_X^gRgDYXW(d456irPdpw(-t7xV^pnN@(wo5rL903)+QfFCGM$Xk(aNvb zx!oLf0PK>Wuq|LwM*MshSi4xJ7&cZh0*@(J)g;?P<4OxA3uwX5_Yty1K#|s*>u+>E zC}x$~v?=C1TS-KU&A(I_;Gba|#npSyLWk*6_*WYoY_7rm@KroH>Pev>P{S5SY|V1| zF(-(9iw#|+Yly__2$*k{PHJqFL;#-3SU<(TbZ;KPa8q^Umw!k&K|9e@@Z$`&OT~8c z$s%HJ4#t%+x>O;vgc5az9(6Y|6yF0OB?y)yOa|DHS*BFRWAl;{HWJ&pUtFa+?bwk? zw~&>J3MC47iw0QPrWm1zm^XlKfTsr+l4p(wLl!?FL`w?`HR@^nzwMI* zAxI&Dh6$oI<&TD&P7o0hr-i8zb!gBr;>7U?M54i;GGo0WoUp;)LKgV#Gj6%2mO;${ zQkvUqO@zV#01m{c1wh7W&<*zHkj)d~SrmWxU{%<0Wll}FH}P#wJBJljQ7Eog?bsfd zE+@Pn0cXH^;(4GDSFfa>Gq@nEc>!2W4GmIa^Fg3Z=%|4ybd^E`vFtFMU>CZ;C4@ry z?LwKTfQwC)$9#j8c^tUJy_7^_PzFRhZZ%Vl^Ljk3lMgpq3_n75UvZ^gcvm0 z@2VvzR`9g7VGZEY#@bhiLX{^xK!B4sOCE)Og6q>w3$A66C&9L+vj(U>$ok{k;|<1B z9$=&ihfo_ghpAVP))*J+JD5%zKw4vUcpu0u?5xm)2!o_y`Oe)d z&2f50CETVuS0ThT2k9nBiltAs@0M-Z7(s#J{`1bU>Gxz@8BcUY$Q*jc`igRBB1 zka1LiT&{ju4Kc3VH`!&0kp({ea9PR*Xq=t4(3@-nyV5~9uB|%W((V!&w8`lW_e%}L zK2RNH;Hw1Vi#6m(l=m@GpL&k1K`vzK>{xq>bYNcbY!o>dHf|gbn-mbfVAcYgXs&oJ zS)Dc$0-3<{Jc>(3OzIcfMc9Fla1+VyrF~hnzuCS69G3Tux-v}1_G;nJ(O?bWlQEV7$P0#cVeddMJBTu>5g-h##6u znT8|M8+bYTAd@Sm(n9F$i%B}so$JEXe$$tHH)#idrMm(oBJ491)GrJ9VZl9ck>}Hg zX|2Rrq>MY)wnD=k_C*UvP7<$h)$pt@S^CVx2Ht_uvy%c9;U}{s@e9NvPYp2pzMJdq za1)Xo_N zsG=?foUbIOGi#Lr2FSzkoi6)8))eOue6m^1)*-FUM~CHW5un1T?ns1|g@7A=H`^2j z*KF`YKPIdM?=`K`PKNfG94=Hu-Y_a7L|O!%!toK~^M$QdO4*ODf;{l0fw18sh+VM} zQ&g~<7I>OlApk4E#(+$5@~R%J&mg8T$IoIgmPe2C%v0H!^=b{dw(>oEM<4?|6-QPPGlM$BloUycu8ZR-9spLRo_3hw*ulHQW= zb_R-;GP=nK8mJN2lY#*xK7^a58?uVH5%Ne&Gh}0aU1DciknQ?cgi>>4M>A)fFQ`E= zE*LQpg%BFl6Ls4+gHV|Qg8&nU^{?wK>k|(!aUTzS7WU0fh-FyO zwDH&cqS}^9{DQ@7HY7h7DmY(>FnOR?77!c|+JbcF9S;M5o20Um1{?GAg^*C3n@)2Z z52)kVoP$=|PBnvvbmp>$VFVZw8+98N@!i-fw(O>K?(Eu-efZke#?Id~*`i z{In-|jX1G{8&4+HB8T9HJJ=762p^je5n~bn+(0qhfT9IXmdM4-0q`(O7wiJ$w8MgN zvm+jyDZvcQ=4RAnjXuspL~6YLx+q2Apo8_h6cg2sZUR457!3 z=Nr?(KnYHU-cbmcQ_O8TVu3ge8)HJP2uO>@7`#NMyusU{Q>x^mfW$DtiXA92^rr@M z*vkc0urO%l@sn!+=U}r!Z91Wugs)vX1SDbYVox$mO6nKsLFZ3EqL5oNFqU*yhjSQg zA&0uCnUZlLbg2cQL=#+KLmVo(hQXp~eu(J7MU7`$eczv4_;& z;irZe!6F66!iN+p<0a6H^jI(t<8{7C!4z^EZSDFDE^w@N>#rf)4!Z#AG#-E1=F2zj zxtd>4P_W6*(@UR;I zAF8QF9(6<$xArW35aOB`2Ig&Onl|b!tPYx!BRS zvV9FM7`hxNFieC#aMJ@YaMVh1H@yD(f;(0Ld>dvZ5H>TrIhGAJ(qqFIhzh&uuq9i^ z^}9vVyrATQ@=EH!8-tA)RtBZIwt{iCVRrAGdd6L+62?G4h+VZvjUx}U*}HYOoTZ{V zH)gs#=BIK4U~(g+8|o~gg_dPd|2P~83<1Wj{Nikv#Y5Vshq6y`?iAF(U>XMc<3sQK zZbe58SNNVg1Hoju-OM^gGY*sw#6s)vU?L;L3h|5{Kx70vBip45(}6)w40XozJx~nw zEIx(-f!V4X!Y##qMpaKW^wE>%wx?N@B=@ zwu1-516~1CATCVX=y>-5APO0VrN(SIvOS1Bad)^UcnTyK7Po_YViZa~j4!l^2H1IYp!Teq zWGBB2%3CQ5O9Dw2aTD;%`_VDBZ_*WBX$;)D0$hjBQ}Clx77ugYC;%TOD$=wXNP>S? zb~a!!=r}NX33Ex|LhqyKic2qj`S7YeR#6-+j-#Y1R z68ih|uJRXjl`mpP@#8#nx~_L09({`2cB&$jUw$|Ft!e*TZ>)SIC4m*}tE&pw3TT2F*}KI}JM z(Nq4+tE^ymPx(J?u!4O(nZ>0uoWEYDWCNU?&vB1 zr|nko=AQBkuCam#ddlx~(e=Kb@~`Z$f{*l+-+Q|i{8>-=<7CkIJ!$`>^U@|G#&6W= zFpR^US6ca|p7O0e0GIca=f>>*9X;hY`DEVEQ~uMd?EZqUthF(g4_w?>B}Pe z`=0v?&QQPIQ(ivX>iI!W`CZ=5U-p#0*P+tUzNo@`k1km~OM1%R@o%Aa+{`N5v@pIu`2f3Bx|k29XX z>M39EeB;|a<>CGx_LN_7$m;)9Px%*DS@|M|+<_kc&IQ0pJ>~z@vio1sQ+{~Z%Fpd7 zzb}uOuk0y5JZ|?ld&=MK<9SO@d8p?NJ>|dSg6Pvd<(K$6`btmv z|7!29qpYgm|L+go-92;;-8nQ2T|>hR-Q78)grrCa1}z~XC?JXwqLLB<(g+CBiUYZ0pTK7Z7WC1#J@BrouOskO<1GFPJa*tjCHi(3?s=ZVJx?l)TV5}T zi&>s*@cVhW5{WgYg&TDzP!&{Uz9}Leq(0n$$QC;&T@MW5KR>7+V zUU>9vGrXndqg(K=N?ZJU>X%+_`9jV2!o7VajAxH~{9l1ZZuBiJJVr(H9PoJZV(?`- zExspwSYR<5ecJ?2qCCgpAE@14hqusr<`?*`z{yke?N9ib66WdDpZxXC)i|67?#JH* z{&!W&(;og^H}jtGh55{f!S84unE(&bygv)xF3j>Qf$!Hixd#4SVvGL>o_v7$=kV~t z=HI}}2TpFHZztgOnwUR?XV&=k0zOOQOahI&UjFWB;WN~}OT*J?zpdcg)sIHQ!+P0q z`a0eB8?(Fl62w>3c)l9${pA2WZ?NS#4c}A5{3_h%!3Xg679R8*-e2=hyug7+-~9Mn zYTQc&A3Me3vcY}cECg?+dMXRgsC8Nm_|3YOzcIX$+F^V6`5G4A6Fx=j^P%vK%D)1> zVY21<5MEU4na|*9)E~crZ`FC?NqDgGUxvr1W&6DY|5EeI6L2 z@WGMh1$6<~UsuI$=H=k6G%gK?kI;BN8Gcyv_dNK-Dwh8pc$?Pd8{q9#{yX5ib)joN zymcPSa~VFfr}!Hfs3cnH{b6dwZnAqL%l367yOLY z&&A-MX&q7-K1<_FJ@|Key{+J}Cfa_x!t-}D9|UhV+(ze7WKPq@S>p>9|9kta;N~WliA|y z!gpw$-x5Axl*JE%f2;943O-W(dN#a_@-KtmuVeYw!%I&x-vNJ;%lvEjUs2}Y!+()q zg=bA?@xQ=77-s$#{KR4G*8unM}JZF<*hku z4)3k?)mw1Ce)H{ zL>f18!-r(I_!97B8lS7e$7(&$2%cB-dwcloL6*Na{B5oGM#2~8u=v;D#Z-@P!Z&Js zSP4&5%kq2#e@El8T^UX8wcRKYg_yocrLBie}dPpYVp6p@2OwJPk;>2aTT11h0lrk{ z+j-%$b$z20Jbf?QZ*}=>45j=+0QLEwOvRnLC z_|s7HJ@9ul9)1VUT*=}u!gs3t@4!RV-~WL7`)%4zYGxgu)@UdDydgPPku3`x?GU@h9NrwEnmR|3Kw`8y-B=_WKzAOywL??a0gLvEq}$Z|J-x zBfP>G%by3{E6Th$e5l$(Wq4>Tiw}cmDr6oGpWev46TH0Ib3gc|h88~>zB`NgGz zjaNzGNvc^~X82W&?^WT6b^MLsxk_1{cJQ96-=1*49yJU;O?f84kL&p7!XF0Pe&2?l z(0H{TK2PoBEBMD+ha880tM%R`cn8fRcio1QM>bc$*y%#O89qUEj}AO zLu>Ow@clK+%fWl8U)O@C(YV(P{#P%{69M1Y+`KP*nA+PYcnY0gyawM9Yv%;rm8dp40Fh#z7C^A8Fkiq}So~mB7bIc((qQC^NjU+J6D~ z3(YTO;YHLwYr*|`Y;$-7r3kR4tgP+Q09s!@D_SqNSPV3=O@V;8F?1oQnX88}pyNxyf0sgW2T_T+a zc)4AuV)1F=zi50b4j&oU;w!;FE@565oT zF~WQ`e6MlPX80DZS3iS?tG}Oy-&Vi73ir?9+=utp{QC^64wUc%uwv>x6Df1&Hud*RbYTK?v_{(1bT^g27jPih_+4L>u{ zp8o~BgRWN`g#Q?7@u%T_oLAw&8gK8zCv~t5o89U9t3jN_P04O)V}2-beA};FYUd zd^r3^9~k%(K8dX&xy6_s{v4f&1quYQnE-K5Y*_(B1ai6TYXH`B3;J zjjI#j_X004`Zf!`YLfX9c;;;8tKqe@KKuxNu$IN|g1?AkegOWl&VNtAGgh|vAK{7g zdhfySsvZ6T|E|2{iKBTt@bUvgPcE&)Q^31gcu*GjujA~2{P5OVCzOI$)bUh>horPT z4d88~%v-}pbT{t`pQ8gE2>(;#>R5RAc*`>#UR~qloA6^LEq*!tedW0XKcMx`9e8^6 z(`;JbdHLs%mxC9Q*MgUpH-m@DBj8I~*zqrh_fWmBhWqCV_Q4ahwmg1b?#Dk={XJs= zd)$3@R@24bK(B^ zhxPDX32eXH;Xb~71y5hc;*Z1I2Af}k@6>glJMeGyx}L&c*E|wO^IO8`w1F0=+o#4GS?#+Z()$uQZKkR9F*205T zE}y{1*0=b5@ItA~kHh`*Gne80wBC9SAF6pFK_ScMEH|0o^!+V>ij(vp0kGK zZ3ur$>*RLu;#$x2f-jz6c}Bp8l{KFVe_!>o0A51xGp>M7N@saC!~OFNU%=B1viQUB zPeaYm!L>XO`Wb#%>&3_L>>VvnY+ZNvdhze&6@ur}>n#sIt@E-v@T=-~;qdEf=Uw3C zI@$3If)Cex9R>I6YqQ}yvs#{=@ICF!zlM+3{B;68G{WL9!ToyCZMdHw#Vl;k^YWad z`8p}QsIDhxf&Y@%o*x3QsByA1ynwc=!4K-ZqY?a``b#HxWvw6j!N1Wuc>??sttS`2 zeZR}$lQnK{gkO(suXhJLerEIi@YzYs&%!;=4S3Q<7XJwTw6A#@wO_BVUnZKDf*%`b z9t!`po_QDeI~q?0z$dF77rjl*BTTPgoBc-~}|=K?&H z#_e11DD|V?;a<)$)ULfe2Wi|%3Qwi^Iy>C22Udosi?HLY3lGg^-U5ESw|OKy`nT?1 z-p0X8YrI+ozoqk+&G1mI(>{kc(E8y3eEMYD?%l8&zHbGeuJ+#*K0c1+83a#}-F!U!bFG(NhySVT zBun6z6~6|)e2C@W3a_ZwyBi*%esl!hR1@tvxL>ck32&Fk_WKAvQ0r~KZsGOy*I0{B zs&?xBSmmDyo=Wq3K6p&ELqAXQJl zelh$~V)Hfd{Ef^%hW{L9z88K}{rVXEH|4nm|FeeWxeLFe@_z=;s{R;X*Tw%+&Y3Mw z7I>J(;rwtv-zf#ZP}A~Mh5w}WQUkb;C%xb!)NUujr{uBxbKoO%zPSwEU)P0p!mFrX zAA-M7J3kJORDJpPs=eGErMKg`i1<3{@7Lg8rLp*1@Q-!gnq1c{Jim`eS>aREZVSR! zY8)sBkE3~~HoQwYJ0AajzwdWjbMwxKKR4KXAbe^s^YQS(vCU_}%V>SG6y8neFYDlA zH9l{Lch6+`_ru3`G(QPHI>7u#_%{X2AHb*AH-7;?HN-rT<~=XBdpe#B@N-QqJ}5bp28o`JtmzqkfprFQrL9{qE?FK^G_6^5F})%laxV`9zkDdGM* zDp}#V##^2OaDSh%G~DO$YVgMKEKfuD1f2)9ffs0P@!jBaG(Qf8uhDoo9$rS*vyN|J-UT_{xD+FJ0i?9tOa@y^VqU``6RqdDK2XfxoMMv`Q7e7@FK2{f;I`M;*?0BPWtR6g0^?8O?|XKG z4{2!egW&#qFXQ0;{>}_|rT&&@A$-{&^A+&T>CHF6{d3Pd;ePyQ;ITq1&o#Io{{wh& z%~Q|e)gvrVKGn0=%TdLZgx}JBL*e_YTAupwnX1QDa9_uFffoq3JOkjX)Skw`$5pfV zY4FAE%pbwO*LW3F!5;V5J0zxUCx-9TIFKH`M)Q49_*lK(itwQ+EPow%U-gUT@Rh?X zJ`z4!>&CwD0-Ene!lVCW?#tU$cqzTVFdu$Q>#ld1$e(!=KlFgudfl>@9&83uIsM;J5?U+y4HK`@sz6wGi*$Yi$Bg7;N$F;f>UfdciyCe10hWfX3m8 z@ZOpq=fGQr+J2Y8cjh!-2cMJHd>j0eTIT!UnRGnI;BA^&{6%;Yt;27_zf=Eu0xzrc zsn}I4pO=6CShk%4K2qaGR(M!8i!TV@qIGXs_@1#AUlX1@i+NM{=fllA!hbAo-UohD z=SL&qe~h>Isqm)ik8i+#Reik&Z=Bll?1TH~5{|?DeeGNDG1)B7WBAV<&0~eyz1NGc zqmsk@e7pesp4x30_&3^b4S1#`K`(Dj;8!%Bbb$Y)>)Ux%b3@L_sDAA8eUoJ&+hOX5f(obp1hs;BzT8z=JVih<~Dy99=DYF zW_Y`j=4at)hne4o=hXP~3%o*Wi+>D1s{Z&Vyg(X@kEQbPdMU4UOKSL4tv52l!z@iu zFuZ=aJ&*@JL&s4FKBa@jmw=B?WgZIm_eUDQ{qs3(;66_EfVWb;41;&px@Qu+fY!rr zz`ND9<6H?psrIlHK3D7DeeeqEcPHU>G+$hU&zoZV{SCfoqIs<9cJKA;<(3@o*DJEX z{rX-3_=W72w+#HW#-G~o=6XM_CA`1Jf$s3tI*%9vKc{u$1b8itW3%B0>ez8Eg}_yVnabI>Q* z^NYhzXg;b2kFRoT3QwSR-U(j4u;m{FzhB6FBD}rUv3~v1Usr}v7QYPf<)X~j!KcMG z-wyAlb&-D`(eq!>_;wQUy(e3qAK|N14iDgs^}1fbH}tYR8Ee|T?{{#RZRdge`_#qZ z-tQ{Iy`P4`z1@bxi`3;%G6#UF*=(EM@^zDDbl8}PIJEYI)o^C}1by&o^1xoQu^YuWSML$wa9 z1ph_rjh65snqRuW_v^fSAUx?v+ut~NTdl9Q!Rt@4_`Ps%KS$yBf-U|WJeQ8=2K<+< z7XKUkVRG}o;GQR;=0h(xzfPVO?w_+N3_loV`OCw9o?u=Jo+q|>Q}}BI%sapzMw<76 zzprs}7(BPy$wc@!$}=0jSo7dp@S~dVw!nL3w&OVoA2indN4WRr`|#0$0*}5uhc_%? z9$)jJ*UOtKpEU4idc8T|aR*wSBJgG^H~+k(=O0?o;_D)QX$tdj_?@EWo#B}@J`8{_ z(E4^Pd~7GnGXq{dhWR46|L)Z)_#KS{AHgRKwLD+I$K^0TM9*pd1H7Kblb_%*H4Z$4 zkJfndH#~;U?-JLw{doB=ZExEd;N8`K^T4;pv-lG5E2Yi-^LL*A1DzK%Kzwqo6WYKZ z=sdSOe74rFL*RbhYy$jvB0HYh@Ve?R{ywK4=Q5S&I>h&hZ+W)Er)M|c56`FddDnXO zxaW@-W!nSc!Me^c7XGQ)|8)472A1bdc!btV%i*6Y{sVa9UY6%m_+yPr`{7B_S^RPM zCS4D?2+x?o;%~u!(s^t4`u4b&&wHb7yD)r%u5VO;|E)ZA;XmZHJT2h*d+0jKwEV z{k!*wW1a^7Ryp(R@Txk`4S{EmviNfFxCzW_!n;P8H-X33b;$PcAk}+McxXz?GZda~ ziunZiz;WiY;I+D#FM($mV7>)DSmpl(yslpFL3nYEW2fPdH1A%6`{xpVgWt2m3Hk#* zE0#U*H~gN;Cyx5D*ZV^qXKHv>jl;q4mc=Z8Dfr7j8X5hN|E{^`_uom3MErftM}6V` zy|eM~7drl#@CG&QcoxC^`*JJc={4VNhNlRzJfFc^Ykl|)+~ZHe{c{?Z;r{#Tci_9V z9(V#z?AKv*zV7Ae<5gO?{~kyVc&V=Tx{CaZSA$R0yww0+s;hk-^WK5* zFZgn0f9QO0HT;(5qb=}?gDn4-@US%IhvB!Xo1cYG)x32BzDDOW z{yAl@FaLa3P-DyIzFz0QN#Je!TUi$N%v5S;FE!hTm^!z6b8#8#xLus&;Z7KD(&p`5FE|8t?S-_x7T^%2KaFGi%;RPvfJ@|4R2A>{3N_>u=%g>Z5jvvf_r?6 zaC@HD%V!mByBplE2MvV#@B2-IH_T;u-h}&lZw0)%*0CSLQ)xW>9G+F<$N~5;jZ3HD zJ}+N``};({!0(N;<4>ghd-=4`^~SXDzch|zhhJBGA^3AkA5;dOSl1t`!6&GlH-u-< z`y*}Om!fP3-QeZ4{u~7Ft>YXApV!Iq%z$rK{Vsy%5>E z{BbNho`&#L%HIawR`t>y?$_l9!7t^o{Nv%trkKADZ=`u`3H-7?=v&G*;{QLRMAHf%^KgQH~x#xM>z~a-wm*_fbcDSE+gupZF z`gVDE%tn^K7CgS{u>;)4;WyzK!z|AS@anqcJJly*8x(({qvt$ z;lAz)g}+s=s%DdwKSP`|pHIgkKqC`QL;;D`)-z+}FLI!u@=CKfI~VA5XyB zX`Ort987y4mydz+cn)xj5Y4kE;y# z-)RqrFCAg|hrqLSHy;o8-}Raa57za8h43n+EYAvfyiw+x;Az#rcEVrRdB@lA;aZ=c zfCmk;{FmVCGMW4D9DBX2P`j0^j776z}ec?V1jD-8=!2NTko}hy&vs?uh6>g2;8p&yrz79oVB#xSOlM;`TA}6qtbRf zE8%ZxJ+>YmnZe?>!Todfd*L_Ku8zXbX0$x#;QL~j-+=cXZ~hSeQ0MOjBJ6Q5hq3B+ zq42xft`GNlq!rx9|E}<;{y{Hq1L2-$Ec|XZi=PgU-O~I`_-9qjm%|6AH$MVzrgAt7 z_v85q?&pcW!hN270dJ`DtOT0py_|0r33_=8hQ~-?UI<<`yLkn8bB%{#@H=TNzBT-U zt~d68SJb?=5?);Ezz^X*U-;i!^Vj9$s()_F{ZN!0&q?I*`SCK`=es*_pYPhKpLza| zw65p@KN4*F9Rd$ky?+Jw@;?Um&%IxSd;Q*m`#APHyq3;)V(2`^kKezKlLX#8yB&Wp zyi{59LU8}yL|M3(PYrlxZ8wJd=jPkNw`&~P4foGk9)WkOY{z*PUS93?C-{1`+rQxj z%UhnxI-m1$iyOl{4DP?X7!LP--3k6v9?NqTo}ixjeYmfCQ|kQKk7r0ui!TQc*LhG) zxF1hX_&SXbL*bFZmVW}=kLMcvgv#*&eCJrp^Bg{QvU#d*cJHq%qsG;O@L5q7*9ab0 z<lpkG^}CDknObk( zhWpwB@a9`|y7q4jE3c;aw7ohIuVM0zP}9c|Ulh z`uQ06;UN}31D-U#`C@p-!sct>Qx*R)JW}KTUbufx<{11y63c%H?tc&CF1(?R{~0{2 zw&jVh_Tu%GQP&63!dI(&a={C0ynX!^->pjYmEb=;R)0qr@`}SJbVKlrFwZ6?(1Ivep15d!%H0f zpRY5wBi`4U`{0NB+3Wfao~*C=dAP4D25X(3Q2YI}v&Bz_PpD-+1Ma_PHy0k7$>JBn zQ_0_kKi4?09q#qJAD%s~2&f0+b7k<0RIg-;x8{w3W1KExsT63usK;QsyF z$MBM|Eq@HPJ1@89bv{iOH{Y*+ z?`byTeLcJs-b=6leR#e=!sy#4@U5D!_riUhaRELovE}(0J~NT|Be=J-AdLt9x)y1E z$p+7=d7%#c;}(|R|BjaD>7etb!H7Sj>!;)3pEj{PbKt>Rhxp$g@cb>bKHPx#-v(Kp z?eNz%Pw$1VjkNfq@U&WA{RnTE+2ZfPpVl{zsrk*1Gev&$r10J`%`?K=>3UHf_!f;P z#o-M#?}yWMoSoo)oc-XQe-hkZ?;N=2Sqje)&tBJB_y}Ex-wNNR_q)G^Pu9HtJ>0+N za0_0xknQ&oe5cAGzV_qwGFS6LYIr{NBfk#q@nb4k{>F$OmB+jtylqkQ9`KnOXU4+4 z-lxIa>iq5v_(3kTj43VuLwI~0=U?#UYUc^H z9`y2zEl&$yk;C%mgvV05DhyAf>p~UaT?$&BI`GrI%v-=)HZku6zpnABKm2GPiys63 zPW^W}yls7pUkERu@oFXfL$%w@@H=HK&o1~`UFSInFEzp9&%nDzm|ur)()#2txc@!h zlsaCoM=!UmaG#e8z@O+mq71xo5j&n5@EN(yo4_0Ee4zt8p>9{#P$X9v8Uu7mA|x6ygZ3Aleh3rk>JbyPkp40Geo0wmN$JO!t0zcf@ z;$OhO(S8#Swa2}FBU{^cI`}%}&kesa#^OuBcj@@6!ndTd_(t&3I!|m5->l>A4Uga0 z@{EL!Xkq>u{PXPQZ^EafFkcCuT+#d^`05zuU&7M_n;(IHQNa8>yhvR0Tk!ND=1<`F zHU7sLW{-P)eVD+uQ^EJD{IkQ?YyDFReln0S`c@C#TH|nQc!c)b9sZ%(|4{e^ZO?%B z7-#!k4=<>7z$fqnH7$NW{A;Zr4#7w1eCas+cvH*s1N=fP^B8(x!pr%Zu8$>wPf?z1 zaQ~b`A^7xA%U>2ANA0i%{Le`i-x$7D>pK5?)P9_u!!5oC;4GF+JpbyQGZ=`wN5yN__6XI;R7`v-GlEhZu|WM z-c<8q9Gy@2ey8hr{O_W>`|oRHMSQzfmcJnUcs28~@Rn*D9gusnal{c}YL)W5y_ z^JqPm7Cu7jqQUT?nqQ*eThiKoXTkr{`NCW9Pc?t7g@qwvDb zEdD$^q1xxq@NdRj{O@othq~I2ms_)>7T*%Sp^JGJ_(zfE1L0ZKugAeRYkZywpR4j* z49}w1wHkg=>zpm{G#Tu8zJw=Ly&r}T$!hUu;R{Ne-+=#+*!&N8Znev}x*q1`xm4{r z6+E@Z=U}-1ot_Z*cbf0Z!=I|0Yr~gKvEytG@6_Bp623$2zaPA7YKtEY|5EL08azim zi+>Z|yQ}#McntNg58-!pUFCClrg4_%ApC2smoCG1Y96@OaiT2y&lW; zwf&}p|J2JoH+-_j+Y<2G11!EOd{(e|Be;Jat_!@5+TkF0@^Y3Z3ckOg`D}Q*H0I0T zxz$dN!~O5@U4l>2czy@IIKSn83Ll)#JdQqh$2zx>~ z_($rewcwR?-rWq|LH#ZQ{#Fgk-xnUD@n;nLjW`zn8oaZPe*yfm>Tx+dM;XiWA$(0g z^UvY_zRv;pr#ino4KJki!!`J>mX`k)_zbNBU%>zK_iWT(y?#?Yj|9<#E z&37l@dpcVDW%$&x=J(+Bdz(Ll$J6n|)A;T6(o5^))bPLBS)T0h-zu0FhG*1xUIG4Y zu*KJbpRZ)z0-jIx)d?Ou%;NjQkEk7vf&1r>Ho>>#vOHhI|I&K(wJ3Ys%V(hcO}O{3 z74X`9?D-$U-)?69IXtHN;{kZ<92TEug5CS^{GjnFJKVqj6$1ZV<7#>MBb9Sa_{SPg z8p8`j+HtgnpXgxT9q#A3gW=~!TKstUcFhy7!w0CnErRD$e_097UD5Jyg8Td9C*Vai z4qt@F(s=SKd`%w9|0mqv2TeZF9{2k4a>xw#awrBLpz;rcKhx_9hmY@R`|Ax)Qqp`h ze1hhYH{kv|b??IccOrJd{rAug!2S2r&cjo6vE%t0?w{{XH0ht^=HHu52VbjkASc}W zV+Hu*2+QlgYwq>3BDwim4Tz8?N&9rJDQw!!9m;nlU?I|}#DrJsX$Nn&|!z)J=W zIQkZUvfcafp9r<>)NudZfMEEF>K0!XzESgFP53OWpPRr}=ykP+f2{NFp74>aY`;U{ z{`YMsz`Y)4!TtTFCGfF&pY8-aQs;4(;9qK9ybZ6RdVit$-^=;en0EXLrrN!G?ED|qT z!+kw42_6~C;^)8%#4%qA@0rbfE&PuX=3C)^7d8J9K3e-d1dqsS@n_&gbzS!w{D)!| z{{UWG^Tl)c>dqD)Z<^hEJ!aSWV+OdNPv(XvP&;o9U)RI(M!<{rGVcSg)7pFl+{<|~ ze6q@OF5G`tYZ-iE49ovMJbo7QkKvir?{>paYJGbczDMo<2l%HsEdO=*K-JeTaDSis z!gPC{*GnahS79^$>0{Ji!r?xyc7hjBp8oJgY7cM2*JiN&t%Ljcvj@IAqs4y@Ul3`2 z1@51xy$ko_k2mw5uh+kamEPTQ>`D4!hJn(4*r?i=S}#Y__p6C@X9)0dI3+;!{TGTZubeJ?*f;o z{>*IK3E-up2-eN2G)ozw&Ap9e(hsVKRYiaQ_;q}!| z7sF4f{8z&xgDuY%xVO(Q;p_WY{9$-()yrA<6CM8z_$tN!2KV194w_~A@%mbx)3%eq zuMRNJ2>-sid0zNR%_Gg=-Y+`BBZDnZZ+IQGpGokc8b3F~`=}j$4)<~6JUqih+wV>I z60OsIgQr*f|C_GzPc+-|d3l!B{GJZJsl3JIgm2ZlG!$My>xahhi<%e0;kCzD{&w*D z-OW40yX*XMFubMu<4E}LeJsy-_$94>roy*YwfOn)kL#Pi1NZZ~_3%L|=WXy@YHxet zKSWsmqwvzI$Mf)!n!kR7r%`|Z8@@cL3Zfz;LAFipM!U*W_}Z%OYQIx{6!Iqk1^Noy&ex~en|@dbeP3ug6C8_$p`np zhg}LjL*s2V_>tz8KOCMWo_Q4fUL*5a@MKZuZ^56BFkcIwm)`ti_#x%l0}oL@`VQ{D zYjhqyN$v9{{6r_)?{DzZnt%U>`}YJA&$H)weI+Pl+Zo`ulqU~-bEw6afS=ZSEEN8J z1B>qoPn6tz82pLm-%0Q`YHxGl{{GY3@L6i->)}N;Uu=iRZfD2y6@0yp=Qup)V2i&5 z-&4%|4!oSM7d?eHRQbf2Z_o33IoQ{>Q^FSwG|vWa(cZiee1OJ*a_~$#kEjK2pn7Zu zf4`~akAUwgY(5R1P~+ICH|%kLUHfz%Gmj@5g^r@mb&lvRGVx_~%+bl!D(;`>zU*(7K`le6-5H4cz~( zNmqDomBRq|2gU6;N5j`9F`o_}rS-!?_~p13zY^Y8^X6u_e{O6SyuaqJgYcs&|1)sC ztf1@gKQ)g13isbD`wQ;B8&APbRp3KQr|KE141qS4t$#W(NlP@Y8D@7vE6(9?$&u(N_ZBXH)VsjtZC0L1kX9ryc~SD z=J8taNg5}c!E02oJQ48BiOl=LZ)jYd3Xjn7ya8{ldF?&;kTjP61NiEp<~!jvH4Yqw z`{x(W!l$c$-GF=j1}(Auc)j@bu8eU1ds}(oIdmPV6g*x>%Ucb;#W<)D+`re~4t_`d zs3&}(t{V)4*Q#tgm;~P!ZvGbBe}8-pJYHgp{{mj4tNB5A_+;}l@ZuBAufvmTy%GN{ zd)&*vdo9~e18<+&JO})q>bD4dp5}#$@MSvwy72eQSpIPMMjcOQcmu6}2Eg-c92g59 zG{W-FfFCVkz6d^5>x5PCPCCE-2wtze<@o}hxwQEq_{pN?Kfo`iH2(=+TIKK%o+_=y z{|!H?^Nz$z?QyT)n;C4o82p0f{mSryx-MN0-f5EMX$Ai}lX+M8(PZX>;N8ockB2wZ z@xKm#W0=J+f!EP^y9WMiMvL#e%(y&;KmKR%C)Mrs$9?;slWmIrspLSGC}= zwclp&mYTmJ;MufZ>I<)#!;X6q+`l)q8t#AhY70E9n&tTt?$-}5!pr2c_}g%QfBXr& zQWJ}h{f^yxd)ue+Dh2#lF^kIz_x4Z_?w>a(3*W8&SQ8$hMGn=8fUQbUxS~?!R~4 z3w|Zo@(hRj?_f`cr&j-+2lwB#eg~eqh2`G>k5Iqf0dKB(VLyDW&i7BiyX3L_m*MY( zn%{-{=hrj6XODY5K39J%2*2FO;;O>eDZUB3Py&l@2Y)S_d3X3;jblUL1u|Rw1o$EK z-`Vg8mD^JIqRN)%LwGB#TOPoB$^V2WQvcn)-12$3t?O&s``~@T%)f(YXlDNN+JENh zs(Cr?x_`R=oz|3a|2$+?_#+)>0eEm-%Uc>gQv0n2_s_i#fu~Mkc_zSr(>y*4exr)T zFM$thY`z-aHrV_lxW6C03m&QX18|=&PQm}oZ~5=S{d0X!;h`GG;;gsldA%3yVcXf@ ziPR1Y!nas>P#O3eTE|w0`@Gf&ek9lu4TAgchA)QqOJMP<;Bho=Y=--J-?#8`6)n#x z_*%_7SK*%jIXtee$7bAM`4UFo1*U}jD(AxRjU6nmJpAiW^TzO`8fV(UL(~oj!AmEy zJmcW!`(!}9C>#5dCgzN;G}@;AKi$ zp5^e7nrAD4oq1}5qf7aW!Gr==8H7^LCt#YmauUysQ>%-@$d|JW%cO|;O!?IhR0r1>9zZeUD zTm5kwd`U0MvjCnh%6vJzn9A(~xc}XaPvQRinP0;jw6gri;Uh!MFT(wEWw+q@Gg7;FPb{4v zczwOldMp_{ti9#01pj)Bd0qH1_3IY!;wqm=ct|_T(-%HpJ`$cIrNvKyf2s5IdGP)k z58r_|>STGg!Sh9!?}f)tYJL{(zjOW*+|M6>g%{EI^8)UF$1wF)+mF|apC<;xzg9UH zg2&Xlv@F~|Ctm~Zzh~71?yt84{CIymzFu%Y&I$0yV2hsxf1-Z33cfRu#czf$D`UP3 zet3lWLHI_^zh~e>v>v+--U7u9|v;P;egD15orbra$J<#XV*V%mO}!Too@*TFl+xA<-FD#^|F z!TZNBKL%gY#QY+Bl=|asc$1VC{{+6qI4Jff_7AVGOOJ-p=>KTlKW~ z6Y#T9=9l3;2bkZ5zpMHB5BMsTL#l1|Jg={hwVnxvS1o37h2STn%*(?4`xG_cnQ~ct zWBAAl=I!7~8<_Wi`?xU#UZ91=N5Ok(UVa^(ytlR-j-SISs?75Hl!pXng?s!1_@O9^{}Vn;>(2x`>~SxD zKmN4v4>g__f%|z)MR=ohmbWhabM?D$_+ZUzo#FoXa|giv@8^z%XI49(0r$V3y9jM-eFXQ<4bJ-XpXIhXmTi9lPp0|hFx=lSI18VkpXD zJf4apZ95pAL$5akzO1Rmm#1qSs|`P?^YP~J)!J_)JdMVae(-b}_r|~rshv!R`*nbY z@U6ji{43#`HD7Fof2QO70{&G&%X0{xSJ&ZxfL~KP{|WBrmA}C^RkHj+pV__lJI|j4 z?)fvqKP+d@&j)W_!MqgQ^H+m={zh=m-yYsg>!M!p<62J+hx>W-WOyRA=lSp$>FxO6 zgKvv4{{Wsmw)swY7qy>n;PbVf{2rb+iRJkbUU!iBefZ=G=Fj2FHIBvq+#dJ(9n{>m z)4)rpKjwh{JlW!lz{5tESA_exT^Ig?=DXJLJ5?=DPk3jw&tdTQbiOtTJ|)8P%!QXx z`M(W+pgh~)2URa$!DnlJJOQtj(e`@sq&TfEO-e@qOUwyPJ=K`*<}CK1S_uA-r5B%d-mZzqhyr zURLwkZg_~+?MLC6+gtt%@Wpj@weg4bpH4l9y^)kiMiYEy?&FAx9z0x$_30b!q;hh$OHFv zV{y2z8!N+o-53Vsd$0GLg={-HyrtId zS>O*+SbPEal*Hzh;XaPlg^w6+@!{}?YKNWS*Rosu0C*GC%UF2cE*3u%K2P)JVz{s8 zSHpeXwFO>D_4_4!ipujaJV_rrp0jWtmu|p){P_)jLF>byy_V1GaabOIiF8c$?zp=im`_&2Pf5s~tXqpH=z9*k{l4dQ3Ihwv)o=YaNvd zo~)FjV81qT+dFn57;bl8m z{M+y{sm<5JA87r#9lq4UgT8|M-wiqrA2!aOa0y<#v-utP_Ppj#;ky!>$N9?cy?#Fo zv+b1dTxt*5;OzoWjJ}1yXR3ZHz<<-YT?al!<=g^3SK~=1c>a#I-~R9z>R)5vem!A2 zyjzInSqT3~^|cbdSnImY@bp?I@1m<+9fJG&s%PQ9Y88GvR*SN8bgi(Bsp< zBSI}M2Ruz|^CIvlz3)&FKC!07*M+ChIwTzK_0k!>Q{^)Nen#`cWcae$w%>X1HQCJH zfwxO;z5%{M^}7Q;TjR`r_yFZU0dLUA@?VCp)ckT6?(^~=@GV+D#QoaxdA~c?$+lC$ z7pk0t;f;G(d|~)0t$!-O8|Zpn9r%VsmZt@LS0D2p@V*+~M!-K*{jP+c(0S-4`28W4 z|5JFXaPwpE*}4vP9{xnvQE$N4rL{c2!uQ5B{}X;euPfd+_PE!}d5vS~;bFlRmlNKm zsd-`e)q3WQ;N7a2_k{a;Zx}p96N{e&->d69bKzC9Sp3`YnZ`lu;aA4m1KZ(iqRhX7 zugGqG9Gt|!j}dnf#};Bc*ff1yWtD< zx{kp2=(^K6_^Hg6C+L9Pd-=bu^U6fFQ@H=mVMq9t zNftjC{$3sP@$j2^U5nu53RwIq__mtnAH)6kCwIfUsy!cuS5$wz1%Isak9W}ars0`A|l=nF5Sd1M5;KR#X{!ifE4)?(Q z{O$E=V^Wk zfrrMkJmujFGMU$cf35SWrtl0JuR6e!>3p*{yk3Om9|Mn5!+aXNh3aeHW@#x%HoT_mn1R|g;!L+t`GOmOSFQ=%V&AIz$fUuX#jk>=KV47Dk`^W@XmT& z3*c8&U+=-|>iv$5@SpP7aqfVR4s@L8+gI>!N|+ymkJY;F0{ph-*`MLoxR?L$aNlpt?@&JK7s=pdbbgu{?!SLk74G%Y z1U@Xv_SX_VU-i-+{)hTw7x?TxmS+gObsY1_@YH?H=fHDBm@k8SxvhhHyWIvqs`cbP zxQ|!I;3H$$elNoJ^fSK=_ws)Ne=XeNV;{47Z|Co8J)Z*Z?K3Of+h;*|+y<7nEPT7h znfCCKMJ&D-+{c;Wa35zT!+o4taQvUI>rOG-UJmcp&3qGlj{3{z@On)x{w#c9Ve{+o z8=cJ`z_)9C_zeE0)&p@)*z>$z+BLH66mVZ3W`Q@;Ix0Wh*PjjG*>yZ!;U8=LGYCE< zqaDvUxc~i^8Sq>kEPf%pZLs-D_#v$)KZMUzfBX#Isfp$J0se)?f#fIcaWBtQx_*)w z?%$`*2lv0XRSLc~h2^ae->7=;0e_})8v^(5YrhV^S;F#v0QdM$;Wf36+7ItD(efOJ zCrV|05uQD(`S0*$5#}+zw|g&7Z-+_XDK)-jfR}D)&o2!3@9|ZKw706nRkH~ zPi#H_o=EL{47`!n1JmHsidmio@IqP4*THXAHva-%Qtj;^JhkfOGQ4#T%X0@lUF-i` zr|fYr|Jf>^((sBA7FP}aX{dQa_+^bhZQ%Yr$8PW{Wi8Jjxc?5rIC#=9i=P3{tom9A z|1N{YuYiA2+k6xJSt;|K@B%~4zlSH*`Ro<=)ewt+3eVNUJoah3_wx67KRMj5CuD|S zX=cyQ2T!1OSQ0)?{jn@GZtc7vcWec)xfTmF&ovRcnih40t;_Dy*8^pu?|EAHrW(dk*@+p6B(IBGR^#!cPq{&kXnPn}nSGXP#!d z{#hRGze89X?(avmfRCAEdAre5n)iW^Pq?aR2;C>T~wE*JJjWww)dB<79dGakc;2aDQJT z0zOCmt}pzE#?Mjk;#&W|20x&AZ~?rA+W&HRzZUkoK7{w}Wc~%bn$F)3z$aF+`0wHO zN|@h=`#K@!d3)T;xvt7B8QjY)Gu+<~>IL`T)0hn3Tfz1>7w+}A4DRd0_u*RxTb@1e z^=kiT;c>Md`w70YjOF&Le|m*8HWx8Ny8%c#kRe zx}xAYQ<-0a`#L}9vOVtQxxKP&=Z5$1U|tj+p?+Eoek+H?H->*u$h;5yPmMq0;A`7i z{9Ev=I`3WsFQWN<3%pAV%k#NBu&F8hP^)aQk}uXrF{ z-7e_YS3D5Ean#E+LC;_DK)jlHP|y{7-0P*eURT0bJP_a0!h({$;(`2kHBM%D#RKuL zNB#5RLwz#Gd~%RP@S z7X+RHy=!&da$NwbyzrgM1D=+VYy!`!lfgZl% zf%s6ht0%8`;CTExTZ|v0H==L;x`r!0?kgUM_v>}ZU-3Zx-HK21iU;DoezU#ef%pV! z)aBsS<<;adqGJQ3VJ4{kzxaTE@hNhDT_cr$9^x-W?;~*A_%HtDzxemae@gi;AYRM$ zpkH2z50p=bv@drX^bGOIW0J9Ey1|Rchr+wc z$H@c56*Kz3v?{kH|Kc0}#rMd)olH~yBZ!Yu{-6KFpZ|-ey%uimd;EPJe;W8-@*Hr_Uj$xC`J2kU-ec>0vmbm)bvurc@bw^Y?*$teExb<=)5v7e6rS!CE)Gt=|NTC z=WEyl_23&Oo414yE@|EwUTUCufA~Tj|7iG}krqD{USNv(Jb2Ig=F8xp7BycB_i=0s zd_x?IKM6mO*Zev>RU`8U@Z5FGpTRRLPn;X}xYyV3acw&}Jh`s-W`h5w^OQXBsag*g zhbL%l`76VJ>tP-SkCVf^1w4cL(E#{H_0uu%ZS^eAG}&j<+c(Yn!)mHf{#~! z-w)p!7|fz?$KdC4nxBWy3{*t)?FM{t1M^?uLo1vA3E$P&Jl;*a_xc^2#I{qyztMSF z33wVUlpDdnSNXJopGa!?yTTvncm}{z==^jv{CSw=nF>#!@CQ21@8HuyEdCrkj>h4i;PIj?KHkrE@AdNDXxmN&PonGaS>cy@SbTo? z^4#X7;5Af_q3}?ZLw)!Lwa>orA+;_4ICxpbPltzU-hUUqO0R1@{B|76{|Wqz`qv(K z23;>Y3}0Em^85flqVuwA@Xu>m{C)WFZsyP6 zu4%`);a_|!e30h5?f>Fm!XKzT?E4o#1W%RHj_137@ze0c>UZb<#p7DKm*?H_^zXo3 za{W6nZK;XBl&uNu0lJ#q%RCxtUj_zS_Bx3$p47faQvTm-&S+^AMxsD|A`-< z9ek|&K(l}Kcy`GB`29Th(Z9q$Mf`h#Cq~~g>z?_8<(}WqcWV4gd>zF5c}h^>!6W+) ziR=`8KV*>I_wauW>e?r=@Q|(}h6EMv5;-I?sBovjgM(f|;i3Kd^z7ZW&&Z&{gZc*^ z3p~46;j+=2f#-DT+G%L_jy?Nz>mU8hm;a9J)M-%HVZPO;f9HQhMh=SX*S%|W?pL1O zr)R&e9v_`NsBq{0efxIp7kw=K`VZ+^xOT%9A%llRcJBR;Cv_VX*|)0|-2dhOgQK4x zC^B!io-S1XDD!G#jW%z`9+xTlAF-qV3w6-_vDd94LiPMK(H@ZadOW@E^T=aq+wX>B zzwWAD-wY}g{jWgI|I_COPFw!l>;M0{|4=<&Z<|JM*=>Z5e}aSV{q_6nXddnU?^i?r z(DQ%PIOC5oHZVN?xAIRu$07&RwfjK%2gW1czn6bRv@vHi1)aMa_-ltlp8Gfd^8EMp{1JG9zkYxI-spe) zxAOZ|<=0rx50qbEs`lr5xu%FV_WfuI+I+?8|3+Zrl^YJ{WqGKpy%H4^6g*v#N*=hZ zn>_kI?msYn|F``IYy8{zkF5W*{rvxNUV1sbb?n%;bN`|JhI9-}g8%oo;OG>A8u{OO z>Yru#zw?xp$N$b#|7;f==l*w|`Y&T|bdmkZm(Md5ya`u_j|x^~_G literal 0 HcmV?d00001 diff --git a/common/utils/umemory.o b/common/utils/umemory.o new file mode 100644 index 0000000000000000000000000000000000000000..cc32e0f7f8107aff451c2f5fe599b10f6169b318 GIT binary patch literal 94840 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 B3jY8A literal 0 HcmV?d00001 diff --git a/common/utils/uthread.o b/common/utils/uthread.o new file mode 100644 index 0000000000000000000000000000000000000000..1404609c5502abb22b8fc18af8a51d2023b004bb GIT binary patch literal 107536 zcmcG%d3>B@)jxdSlg#vPlD1j8q)nIUp6*FoN@xR3O4FuEDWMCbK$%XGNiuDcna)hw z6strQX+gArNLkdnVcqLW1=Ip+tMb$8gIX1}kEjnSDu@d&;=}v>o^$S*Dd6v~_w7d~ z=X)*ZI@h_*b*^(QGu+U$ab3W59si%}T;k-ApXxX-JdjImkmLrZ${FuGM|#`W0{Cn` z^xG}XhyK-k)AKdWr;(D!r9eKIMnn)?MZ=52Rze!N7HGP6Gr%ZR@2wl ze0?M+O+EB0{d@ac8eZGd+co%$C4oGK7-=u)rw(50oPE-j>9gwMu9|NY2o_}6^sm(8b6v6RmqCF?TP&4hYDJo(64WH&3v{KB;-|M>GqDBqjpHJchx=Hc!!({5%9rvK*KZ>U2brM=pd zJD%)b{JMPfpS{=N@tSXWEz{k6`@WjyTmF%WZM-8<8QXaKtl8wZ@z7sXYK$Cv)_i-@ zxed1#&caBYBdwXYr)&Iz8*X1a%WJ+Js(Sp~#m$euy!xhd90E_ey5q^_+n3L#Hk%Lq zwedtJiBpf`6ZkwOp-wI#r4Oz?8sxU!^b6%O=swFrcv_Zu6}HNcJ)$ zd->Z>j+xfr*Jt09ht%DHyz}&>rkd>xhgm?*GSQ=JcD$}%Pj(-cQrnzZMW)6CXf%{kO58uSvZMb2{kKF&}{Qmf?&(Fr*jGp#x zqAcl6^v9O;#|P4}#6ZuIo_MBruwzL_S4V%OE44RAbf*#nnb<(rlHIY?K&)@c;>G-5 zXQID9F|cGX6Yopovo{rsb}i;8I_@&^SQJa85~-D8;nyGS>q~S-qM1a0yffS#jrYa6 z!q?1Bubkbrqlk6*@BDhZm1U$8j5Dz}t8;$&L?W4<9^M^Jq{6!wU9vA4&xGUY@TP4W zH-@WcCl`iiC+EGc#W%0-SISB^hwSz^TlP9mp~&fRIN#_AkIL+q5>CJkk&u)TV^@O= zxE@mifgt~A#)NiB8IenwxC?Y)VK6?Bu`-hmuuP$p33yUD;0X$*>l|;)B4h^#L6x$V zV7hjNuK@Nm5BpybYvr3_Sz-CH#K`KU_cA^G2Y@ z)}@i`xaXDQvuFxFiYc+mI&yS1%c+pk!;xdiQOPP6RI-MWC|R2$*DpbBO>HJ;C9k?E zTedxyx;;l;o#T5ANzbE%Qn{#{y;pMF%53VS_hrc`KLZ(XxkOpHX-(P8a9fsKv?oih zxF$=k>dul)2eM>$B+G2q@+`UgvMkxRCriFB+x?;s{s5^Zg+-sa9@2~g?G$}hbZdeg zk0HIpEBeCy+59h3-@f2qx&`T@iA#%4d?#DxDl4OQNO5H^w{sSMZY>)RAoF) z5~&=IONP;7kxU+}=XuPr3cp;Pt?(<7R{30;RhWdoMFho?>v>I}$9SH19sZW;(8WQP zl~fl`coc**SX@ccDc>9IbBZTE3ewZ`Nu*1Zt|DEk^knL>Qt2tI8-|!tHe4KjCChgD zH>f);He(tlwy~WxAGEQWBdn}{B_ml%DwGs)w2dz2AW$LXU4dkfvr)1nTs&{kuTebz zdXU!K0_m$Zy^yr^Vi6~cHNBX0rO%Ii##R@P`vm@uLxxj4br)Jwa_-|7M$MrZq?bFR z=92b6FLOp!i>RQNI-}-^sO23=XViR>;qs0lXVe0c)hJQxjFOJkfUa>yNyqBSQx`d- zmas@ed8*DCRYS75Jc^37B-_e6K`tfPUfu9{j$ImzDgE|3?HOo}E)tt35E z9)}q9B!|m8)6S@iNgmV^mykYOo<@n)B#)G*QKEt5QOvB-m9MhjQD^kT14wepJDkzt zeG8d6`2;+=@EJYjIJ1?WN;*)%fiAf*0 zrB*L2Yzj*XCr0<8s6w~6aAFP=flW4NWZ}e~Ebz`_;$g)a>y4i9UC2I(qdJLQ)N%Gk zkN+i-$FpCSR62TD5=)ErYY=k+V)CcDaGB{j+$4^UF2*U(|<2$nZ-1l4brH@^b9RJm4`Z@(&A`I=60 z)ymhBwhB8)TZPi{od>cNqHpK!PAhc07qsV;-o}PJmYG13sTz2A-mRdgBF(9B%VR^u ze$Ad+K^m9d_kp%%cS*C#z3&*(b*U)t{|e}^rYD$Qt#p#KYOZ__%hYLlhUpDT4>G-3 z>HXy2ru6kcLVCN>Zy~)?>9;-)x>xD9jV$q9Sosa)Ii%^sY=2nk8!y7&gG%3gHU1t} z`W@Hf?-8XBK7_wVmA>sU{5_`h?WB(@eTR#&J)!iw$@8SrcT(olO5a8LjMDeaMftNz z-&YU%oYMDS1^PLqkM0Bgg3=#+FX)%2aWKk1{7KM`tKgGl>KXVfL8*by5mXxZ!qf1a zVFO-rTh$AWq#mt6n+<^p{(4O~U7T}Qhd7ojzcbLEr6h4DLBj17< z=6PRd-tU;l49Wd);cNWClUS zkb6@#{!UIOYn+PxF6FHRa4N1BIy^a+b}HWH(xX*R?gD*-(DSwSuz-aM-Y#IVf?K6} zje>&$>J;4V-i;O;6x<^@I~Ck3pm%a-YN=CkpMa$1+%I5A!2<$@6@1YB47eRs@FB@L ztl%RqyMAPHcXH6F_?Ub1Y*-XDI0lL+qIngYW)_1k+R6m^pa&7PqAXV?&s)s`H0IY8 z@P~XS^Y3B4d%XHk;#w^A+|W=%UA%zz;Ba0)NyvtAd{oa%xHEf?o(e z-;Dwaz8K^R;3@c0kQ)HF#3$G-#bC1gur?4FS#hU}HXLQ}9h`XRCs51^o!f*K6fhd#X!eK2%!h;zT)&?SO) z8fpl=8&j?KJd`{S4V{OE4K+%=gND|GcI-gk4Q&y<96JvkH?%cGw{pVJHbEy1T_yES zpNGyE+8(+KEu1xUb?6^Wh!70z2rYzO!Xec}L{PP%Xy~%J@DYZ(L-i=xU??8C|6;^g zhIWNMbP053Xh3Ay8JgLhc7l6C>rt)OveKc=KuJS`p)WwyLx%Q++L1SGXee|Y&_P4j zht8mZ!{?zRhTbB1M-3eay|)p;mZ7(aC?^fw5DLJQP8%8)TRvmx#t=_I&KkNo6i4gl z480?iKxdybbgR^R-q4}YcblP3L+=dHDL5lkop%T-G;}z0*E~1{LwARE0+krLC-jjH zICn$$g}wkERB7n`(5HdIh8_%MAX&AcuZOro)EIgqbOZA041Ftf8&HFx?}Y9FYBuy# z=qON|q3?x03Dj=rj1HfnAA~-Kyk0{;485}z<7en;F~MVoekAC)p&yHppD^^((2MB9 zNkcyi{b@eN!O+h`T%?{d^o*c0hR%iVx(cIW=+`n)&l&n{=rKt4f}#HjodSB<(C?+B zL;nb^gPgsF{wZjep;tue zK12T!3rQM!RZzyzzoq1mq5lb4o!D#Wcq46WQ?4L0-b;LW-rL%^@lJ|n4StB0CD*UoHGu1ih1m{Y7;gPD( zg(C`jVReQUk2qNit20zPVkGjK4Xqr(v28Q7O3+qA_0nFup>@)~orcy6>NT`U>Lm@e zjTnm-h74^UaT{6~Hgwep21y4EZ5Q-TLp!9s!-gV)ju`42!A~%kXhSnGus9%LzmKB=4l5Awl0T^j6_=+RzOnxZs^JbmIu_Rh%Nkg`Yz*{s(=Q zKfG$9zhQoyCkhUtU2No@AnhsrB2Glt7gqWdY3_bd_dBF(bbH?5mVa+H zq8rWmKDW9?pW$B3TKFN;t%d($y0!4rR_yVug`bnQ7JhLp=o;nu-)yZ;>0gs>Q2N=t z?fGwxqI{dC|KUrZ+m-&~4?yo!`o;eN-K+FpNhg(liS&@te+si4qh?b8ZIxK#WZ1)hMj z3W@}rQ&246IR)e0FM+`e3MwV%Wtm##69qV~qRE0hLsJBm8k**Q7d$Er&2)J@6gD)^ z{T=e^T&IZfYjO4i2DS~2QP zqkE0A_sHfmtU0=`tyb_}$*EDGo7}p|JdG%@E)fqbBwqpbv41LWl1Ujypt+JDDKhPONPq=3=24@X@ z)BPe&F<&-xN?LE${Z84p-8Aa88TzgaO1q(_+_xdmwq9jFb?NweE$V6VL!a(F$~-zX&0~8={Rvb5%~bi|;W$$H$MgQgJUXLX zjq^&4L{`y7%$E-yXrmVYc-}nb(cR_M%`er&e7eBAd`f_-F{DnQ1ayjT%pPXV&oWCs zc+!qa{Ns5aU>-eJu_%EZN9vxQgIMGX z!I50_Hs;C41DeM_o;QGGk*;)n(Pu%69gLSdNTW-b%=^e^3vs=|G5sbIxF${_wq`^l=} z0gPOE=e{ndszipWJWYBO>B901>CvRU@^0KeR*fNDQr?XV$f{D(rRCj;gi}>UdMs$9 zmy@oPCacDg{bZ#pncnBfPVQ|;mJz9NN=mEdet<%x*g!RP1G)?JJklNuEa0l35-cPa z(3D^i=|YuYF=1WIHp z*6_{=R89X7(o{<`cr)avmS&O;sFr4trYsPAHtEoK3au7YwUiQ>PL`22ova{Z9jdB} zJ`egR<_WIVR#BXz?p%t0##OnPEpkm${DhBJ>tG(NYJC@i9TjsU8!<62BW;7ZiL?#o z<)m#e+eq7BUP0Ohb2DiZd~4odZhHXfeLApLlI~afD$)Z=x06nkr}~|$?IbnWth$=? z9xZYWB_2}x+DDN-4D-A#4DGSdN04bf7IST=diF<1(&E1nOHul_Vkt`hjzvlx*#Q35 zXArbVJy7-6i8%Jtk}q+j9aZ?>*p?Ge@OPGJ2&fR%psQa(ri1th|4OS|H;uIU1XTg| z@0d(V7r11obfL@PQ99^S4y8jr76)jX;O*)|THKYra zj_m@i*P#_XOjlE`=p{W;%g8IBBBkZ+kG}V)7+~E}O;1pSu}UX-47OA0Jv%_FNmQg+ zUiS(W8PZ?WGJ8p%PHS;?PAmNuPP{WpA0W*u5tM%`>8F)`8|fb_ zJxuzn(l?U+nbJ3ten#nckp8982T7k(`Vh_aH%@2|{;*qOsO3(`aUF+U6Ff$7zmHez z;yPRra{rAq8MBHJvMsP{G|#0i7vdVN)~OgNpacMyT15i%rlO))z~sq%xKL3d%w{RK zQNrz71)~M*R4~S+_!{C@lnUt9dBSTTkvF94>QrE{OsCMPs;RilU4sN=vPozImrE>J zt)1NLGns2MrJ-V-n?mAzwCYr>7kUy|YkA%ss`;;WLcA^G)t*R!nfGDP{J&tvl^+MN zm6QWsB%ce zmy~y63Qk@{T1|IyJsYURjS`x<_y9g}OAuCgiNdL2XA!fV$R~Nnh7wc8@-$M~n=&pK zW?BJ1ri9lceQe>B#vAZg-ZxEI!z7ina7qLBU*mT(#cFJ1NvS-waP`6yzJdznozbKdt|SRF;#hqfq*#fol7uIcvD7J?zJ$l4!fd)c%`|;ZU;Z@G ztGwy&aVKMYE|xw09+!y*-YYw=LX9P--|N2Y^Q@k+Z9A$6&ly+lq8LhFCBiD*t~y`L zTyN&=J*XffK6B2um?UF5a~}DKoRza?@nBl&&YJxUizq#Z$!est=8|Si$y+s5$*cuW zWveY@Hmum29sO@VQAy~DEO~4!db0LsM_F0*G-ovT`_kr|3f&J#M)lmuJkynoxl`m# zrqWY$ot-<4qgPp;NbhmxPJb0VHMW^MhqEoLEmT)8{g}_FdU-C)uD*cwq^nHziX78w znX1aPdKH<5(er=8wR&C)hQjl{0(RmLM49s{z76bo-^XXs&+t*q4ndAh zU6~hqK8#%H%DnDetMhukhT_?`i7YR5OXsh;%&$9N-rZ^4`KxKHIzICoNS8R+*`q_G z7p&fkN;Sm#=?Wc?&jP2Ua=~Ty`dk-mnha98F1Vb-RmuXJPh<;h;W4!p*s2A_Rxa51 zT@;wab|#URircVY!=%N2*%nHUw{ZAWK^L@7LuPmsQk@0c$*EfDYpzFnjndb$19iT` zCAZNmU$Y>>LRw}g`4}A~ALHL4(rKAa(i%Q4=;GOewcAZL)fk`I_&XY99B;v%`#@{8 z)cZkZ{XNr5+7=f79e>OFx-!nfQLivx$}W_b(AxCEakN(Tdke)M)@hjuAIGpXC_RzZ z*X(zVJV&#w-bE!WBxM$j%5B9Kjh3#JNBc6)B6)_R{FTb zFl9^soFy+}FEn+fOgURWSs0ZXDqxA4-N-&FxkkEPQdoA~24u@(R~9*d?84GggF6L| zaScWVLO`r;WmooRnO@5_C*>OH6lYoDm2EwUGULf!)m;{6NxtVSTgR7uDo6`unv`R= zo6TS|Sho6cR{tA1;fyCI?hwn~{%264tg;*VjL_(t*`^vt*)60?Som;NtzY0ywqk`J zU<+3GLDEwABYbA4oIjdZ_~UO!D<1ZkWqSuvptdhH=#=fFFH!LiT#wXA6jkv%Ie#Zn z%1Lb9w?EcJzd!p4{MCZT*+^|N)8~{uO6RDlU;AucB^I`^{1Qm9-_o+*zX)0d{X?D# zp5K$})t^Y0_;p!c&U(DEDei=&aNM1lA*XDrI~jDg1!h!*%Qm=8ERpJP%3545LAp?u zwYrqIQW>2rTOfzuGg!ZDv1D1fB?3InSth0Q(5Os7rRH29yu%7EmO6C`8eJY8HYix* z@=U8)!KG5HO~FQY2IOp4uvLz(hZJ1tHZSvEdzEc>w*Va0oNI-_5e3)DN$ODr5tq~9 zn1YzgOU&a6dfZo`z7v>})QgSArN}pOJIIlna`-xsqU_SLUGAL#%4WBm;u`3a44!bs z{nB-1370Qmv~*Gq_6_WDS;{n;a=9$pFpMo5cK?>G^maMowMsWiMxi5jr#!G8@e+or zKt&6ey~CY`G;Qowp%FbiA9kE2xuWuHk#`rxJaU#}+}C}e11v9L2e*sT#v)%cO!2&X zAzuZ}#Pjwe!N{9Iifdb3NV5{l_Lek$0m)+7OV*HNCBDs)z1FuuNCO30d|}P3t1qzP zHM76M;!?F{PCG~qHEQNM@K^dmyQZ4-i1I|N->I3$s_Fu2=I;Wn&c0^B0o2vFre-1e zgq7za(leA^%rdi-UP9XTMPwraj!=QG_i?cbJhtZ2pCd^tuH`P@=qA#-ORrf+T6gI+ z>q+Y_y{4HBS*JFTHsM>yvP54x{n2mGHHFq(HhG2L$fmpoFVAbRjYY5#W70y9(u1Hf zXs8{3pU37(A7rcH(DHMAcV2>6@T+t*otj2DGZLcJg0AS4+=pr?9TB zm9S20_Swg>js4~fNNeo3(r0G^ZJx<`-9dyA zVin%6K>nrIzTnqix`U+oCHEr#^uhLxOLzVlxzkx7>@FMQj#_1oa9ODVP#ZlKOm@1%N!8A9D zVhswWyEg*p+P7?`OFgt{&TRJxa@rNlm7JXlsztV51@qj`pjcADe90M7u)sZyoM8ov z++P43RIu3nE5Km|x|SbNQ0tb}W9SsDaOVOXQ*fbsF~D&JbplQ(SSj~JCl#y`a9V-h zAe~XL+Pw-4&MIh>V&@dBb^DO>oPs9zMt~O-TqZzogqLk{??8^@@@&^xcDZEP8-QhP zq93~vUUr3h1SKo+D4$UxM^!w9?=ENzlEWePpCZo%UCK*M&#PztGpKnD^W}qlkV8B3 zy!A*fI>0<87YoIj$kH3m9v0x}X=QRi-a)2vu(X<`z8?u93 zlkYK+vT+1unjrC6CbAX>Pj6=BdX~?>k^M5Vi#U|$v7dm1B95t6utpalL0ECHwEQz* z0xp*_=TVRxtYQ*K+yT0X111T6Y6=OZKac_kNwP4$3ItL-ZTs@YOYm?|e8uu5Gi z+O)4^qb^6z6cO+sp@@Y=H;{b;=#s(<#`3|V+_YXW?!Qsr;+qS`U#Tb7k8SAQ&9py94ufksXujo((T zVG*_Em6x(*qt~(wZnPX!`!bUCHmam_W%ILHo*VKSZIMP*m{#HAl!RAaUftkJ)s|QI zioC*`*^o85yYh@Cv%*8m9E@%JX>rxk3O98NOzaBvQOk=f#ff;1@`3eN#%7QeE{`v z37lMc!6l8pAS-fYeIt~o;x%#bY9shI#mbFTu%>RKc9rbO^{Sse(9{g2)Sc8Ov>*|3 zmD=j?%9`7eq&=;rR7Ni)ZR5QxPujs>G_db#RC~!zY`!uu=~16gph|3Bcm^iZ>Pv0g z76`ciMk$#&fkO9p$TASj+jR$u-2i%|Q#>%rB?sFuh6APUgf-aVq@zxt%w>}%KzP;C zb;u|mNI9#POFzm7($1<2T9K%hvT6nAaH;Q-Sb8bHw9vNdqWeLMxT{u)LsGh)1EVTf zbqR~$o7bI#&Z^ZsAqi`lhEE{9#tHEoDbF{Pg(Z2|dk{r5kVEp&#Y75V|WwP}U_dOqxj%k@9{LKE)C zRj$vYh{#o_QR>MN^=n<`&j1^zzS-pyWCJZS?vn$zJ1n*C6+zE`;I)SSHndKK&wkW}y%0YeHN5-_abV*(B;I40n*f={@7#BxM| zz5qO`;9ZHxfHbTk<|ZE z?sx2aB=zT{o_zzP{UAK|@}EJsLJt6qt%04ToUUv<5M}hWfwrYba_v|H!$T`hVtJ zP5sL`S5yBl7RPczZ^EbdHn)UXvi^V9Aqo4iq*MReS5VMVHM{Pepc@nv3TRXibXjAK z6JmiYeSUKsobO|6fj_2~eO zRVBy-ZsItr2@D4A1~@rK(cS<%er}VZ+XFmM{f(hJ0-W^E8G4tX7Yw~y(94GI6fVx? z%H^(r++!NLTTs~0djbpx>kPeD>NOa;H$d&IHFTfkH5 zd5nllH^ z99)RZKkQ@IZ*)Q-zapfK&MM^a8JJth?`GKDa_PkrUqCUL5f{trIisuoj%3fVvqqK? zqc6Q=et3hGzhuD@7@U^BWFcu|8eZ)+`Gr=Glml>SV0961ckO7TboHoR*+QfF@>@Br z9>ZiF?6M)=TyGV0u<2a2HJ=H7S&!DM6=>fi8X?7+g(abooDdq=6rD!k=0QEDC?_wib z=iR$oQAX**yI5T5JNer)`Ut4;F6v7o$i}<(qP)rd9`=EEf78KkD(d11b>kyss5~B( z*8t^d1dWZ4@%~<8g~qQ^E>B)*G=7bK#dv?6v_3FuJV{!Qpc)^iSJgAy#wSQmsYIsJ z_zjjRbjM6q_)UeQ4Sq}ED64oXPvNI2fGPajEM^M-4(a78{C7#4@}DAY3jf{#^sfP( zJ^&u2Wa@c)kQAa4_)Rb|d^^IfTT}ceBnihgqq!?KT6f5rUe0t?!J4t8wcBgtSAta4 zYi2NAC0?_Dbd6d3rIX4x8q-UwCV5rJ(bz)dq`rxu=Y{+GV9{n$MOXIsvPJ#VE>g#D4;wa zSq4^<$j>PWuRXOYTl3qw_Ay-hqIJVf={kJ6yD^E za9b`KUVHl#)F~X#&U&! zN4RQR~OTCGt(=z2e&X?Jw?+yn6AUtbSr26EG={J z+w=W7*mQ`rdX1*rNY`nZ+etSl{Z7(40O z<^N?&UqjPua%sFPf#)*ai5q;g8Q z?&J4SDy{ShCUbS8(9o#ktiLdZq@pA~iur-Oz4$Yld3Eczd=Io#UBC7DFp`v(hdJ80 z^;ffqTH^X^Nb8ft_1AJybKMbP8Nl^BI38^IY81)E7|m1u30%Y0^wWZG6`-Lxym7NN z+B}^aQURLtCS>zW33x@Y=GiP0R$45eTIuSi(Te@{(%}uo_kd}63co_Op@hvV(+#6| zyxbraHpr8+W~Ik)ZmQjGC}m?qDxKGI<)_JL_kh#VzG(}k6SWPs?jn-Pt-Et>q_vN< zx{=nsETSrG-6y}{RG#W^TK99wsN^X|>s$B>I656$4{*xXjb9Y^1#G>E6KJQlaSOd= zuhQ@M4Aj1>JU)G|lDzGN-C zXbU>HE&ZQFx~ill$;GBkT5Q=vdM9knY1v2htEO7^Q)G4LEpPt;Xr1jXw^9kiTJ<&> z#X+TS=VQ1d8gdN>T7F4^H0Rt_>Q?Dr)7(!;W6!g(lbZZD(%(?}Rnn(rRQ{JrKBLL6 zanR4sK%Ud$xCG}EjFh*=&nYMp@COCO0-je;BH+&o#<(|Lg-adTa!T}2b* zRY#kluzLgrcN&@_d8PW@x|X>vAB2Ss&39>9&4w1aRL4$3HSQL)FdV?}amePd6EC!U z(d9^~KwonIcnuO2eA#ub#SkiZ*ewGnRd7N;rGl>r2rGC*K(&I$+*;JBQSeoF4M3fO zuL)>S@O8PQYF2R4y$Z$J6g=+or*7I6JRxAGf+q#^D)@$gq=IjX1Velh;k2BR@A|=g z3@d)xaLDkl4F?TBYq)TDG7a%}a)fcSGX5Vq#W|?p4+0J=_>+v>5d|-}bd*OG{6j|S zw1QXNmaDV2^KSv?G$#}|0BN7YxKzMgJ&%?uYt9L`mg1Z zT>x4>M!H(df0}fi(#JUwY}!3cmNxCa$}-2a%-2YtQ2G?hpH})bX|w-t%P%Zw`VVQ8 z=VYyG`4Q_L)*t_BIZLN~)WFX)WDqNPrBI)kX? zBKOO5O$zGekjYc9S_VjOcUsoCwCYlwKTVQz*et(U-W0vZP^*l}5ks4V;W0y3$ne=W zTwAufkD+DzPHW3mF2D0|wj3iwiRF1w2lDeyNRzD}psaKotsfL;E~;w%5C_;(`lDQD zOO<}818$~4>5o%|Iz+9X%bn`*SYi{|#_V!3W&Q@IA*B9CLpRa6*@u=GK!G zLACT0n=$%(Y{j(teKulRJ;OG1LbU#njKW&?8ET?h>1S!9HA?@6Wptvn{?7r92sBUK z$}e+q))v!vi%B7eL*aQV049732~@&)`ByRrT%4PkBOhF5QRg-!RDc4RWFaQA4_b(? z$B}c7pTi#Isux@KXOUXO4(75@>3giiHmT8^G{sypk^LJ#n>xPu|=c%F@aj!)%mG(OLs*=T%;>ywSfmr0wwKTL6Z zbp%e(_LE9~g-s7D{U{|ksPtnTvBOG#l`k8QK&ly(oP)!KOFD+cXP8Lt4%QMs@kJyS zaS`(qLZGG8947JuRTtuqjnD*;MO?J}ybD1~1ujwkPqQ_Hp3bJKyL8CFgPjj z3>q!foT>nSX{s_GgcVGdV%7PeM!iX8a9V)BETvgt;b3680BdMQ;L%(|GX;$GIV=hA zm!p(JZ9a#k`5cx7c=l!2dX>Qqfm7K^E%}vN^DAu(+{R}8mLh>yvz2xR?hhbOn~e%E zSvv&y7l^@k25PVK%iSTZTBUc%ZG`FT-2x`sm=*>f47?-i*Lq+6n7&^?p|<-085wK$ zsO0FX6#Sr^N!!SLSP#;*&O>^RuHfSV{t#7zf=>yzb_Jgopx<>1enIN&)SNF%POpN8 zC5GseI4Ago0DO}xsrX65Qq~JRN9*G`Q@ZA7!7tbkpD!>!H=O)MT zdwl;TO3}bI_){5-um-2WXT%5^4E;L5ii>2hiCTZMnh7C2Q%$8Q3kE@b1Lma7iFR=A4=xWsK5#F zwGn^VQ!tN*mI91?dQ-O6g}}yOO^&<_q~|fH!i!fdAy%R*S0a%kug{UUF%3l9|hFFUke`Lk?=t7Pw`oWiYF zPl!We{8yBm)@w)_*K6m3woTa%?&NG!b{#8MqVrRbKazW0Q^^eAvEkOYUWLE4UGbFD z`nJPpavVi(y@BE?IZQ$PN-Qirs%gFJVbCi1-Df}={hmL7HaXrq63Q_-j!Xq@o5TAq z1|8PA4_phnTGdE4#neKv{Khu7hY+0Yh?dD&_rh{a#h zv)Qy{BXJC9;YJy>PPQVlXZhI_OB<7HYw=Q~;;hDJ%p(NdMa!?`d0sCPMsj>t;QvlR z32mp~qe#54P7+4T18WD*=<$7|1#ZFDk+qV~eE~o^&MJO{mJ29&j=6ZO2+WyYZ+T3H z6o1B_3vR@R)>)}_s&`wRm3ehmx~y}t)UVfuM8M*!$*N!z>RghEJH=O%;x!#e=Af0I zR9geV7mKCv+t@%Rz1u+odm~a=rqjSmh2ervks~jF3&TS4$GHmS`b_jtID@}q0q&fB zB7U&AM7V#C+>;KVXsVI?+!-PZN&Gu1pGbZ11ATm|g@5i0nR}ov-R-!un7&rh=kj+S z3hq2{Lleg!|DU^{0j1V`9?9$d^!o=vHQ$<7a-?OsbN8Y22EU-6+;SvaHp}E8Fv)_? z<%37a-t%t3bZR9hcO?b&|NX=W_rVAH{cf$IU*SLPrTvFLe0Z_U59Dq{r&s&Dnm9iB z|J;p>z;N9?NM3gvJ}zVCrlV5oa?;z8t?IgrqcT#Q7c;Wmc#@K5(f9H@_0xRtoBs&@ zLJqBD>b7Tf1~i^Y_~$U1b$9x8rC(PJIL;Nq zyjOlaALQmY9o*jk+rT=_pBGhWWB$myeLn;Dbx$H|%hor^4~{BXw+HF#Vl2Tq>HjM< zBKT7Ax-~3OhmXzl1O7k1MDexjevagIXDlzPkkH<|(J0FYQ}O{v!`Vu%ZpP;=la(nC zK4?12_&VF>mkAs3E|gHa*hl>Z?(BVY_3e9u`mW@>aH;$AWHw>0_ZzA-!hP^*6Xtqf zm~1`v$P8yVPe=Gqoa#UK!5<}c@Q3}nZ$5)>xd`RnAZgwVZpt5LGIwuz1XW~=ugV`| z=KcRVzHb;(Q`{YFng7H?df7f~+w=t5zCbkn;sX5V?|eB6wc70WxTlaLEM`9<<1H*2 z#C=Ngyr?^VkqJ`!9KRPVC2F7Nw|s?MDo<*Zyq8~S6!J>>{)&-|KIOMIuY=DRIz_m^Od|Fn@W@$y;6{c_7EoC#Y?%O~Z?$yxTxFMWT#F$%gx{8o!JRew24 zg!uUUV$5foR9BZQ1qf}&2mi0#8-b=j+-yAR8w;D6i^|S542f07#-(!4DDt+94DczA z(7`J_9xq?R;`|qw=U%H6V#T>T29pl{SGW+{OZ}J4oXR^FOPiV{cX(Oyviq~-wY(tG zf5C83HhJm?bIB)i%})JruEgnFiEX)x*DcN^{}KN+)iQVX=!)Wk(N&|%-0~5n6VQ!W zPI2)iNJ5A?-YFQpvUpYTh6;4a(lOVANca5okn3)!a8Y2ybZ0}wl46YJ7;s>fk#mp& zzctRCJCP-dgMv#c+~Q(ZXWFPy**5A>cXWkYFglkzhOFQ`$2oH+l2sWA>=RMR1Yo6# z3h<~$`q&A1oX6!jBO)7xrdf6Zg;9aAZS%WVTs*3{q?q{=bF6cTlUN%+v0{P;DL7uK zi3~yIJH>Pbh{q4oi=f}fX}N~#g4iO?!GKQB77=dveF~AqxXsLCjv9ETn9T*8or5ML z66a(!Ck*FGhmnq-x1~t)CQz{yNwVkXSYR&5$f4{)@bGel7E!M<7|2^J46@_4q)-NG zLxtZ-{6(vgd$>#ab>b#yVKH zT(uz$Tx5lUb0=z%mBH+|U=x^1W-s%Gcy-1~8v4MHAV{vNk7r01IN%6t}iwv%76Vd+~PZ-@2evi@{od=tkEm zLmoD6EJFT%kqyO|wB;l4u4FmNvW3<+6XsqOW@D~(7QL((jUlRFRm4g}wB@#3&spk< zJShP;=Zk>2KM%q#w&u64im+!v4C>R-as!t+nHgjBrPF z{=cIJ{o1Z`g-_OI8D0BEM%l&0XZNHL-?hK4)8>;)vW&L)j5cMH+O`;(>+Kewr~h}@ zirkj1waw4+{~oohNdZlPX2V9V$tC$@Yc}Z(ZJjele(ivB=NpC*Kj|$0CTH2aK^<+D zb#=DLwy2TuT#_%n|M#$Ez5hQKIc`~x=Zg5`FS1E*=+#-vdL~=s4V`+yvI2G*0u7Ec zvO1UKOX~lvv8>B-MSN0z<^kngXG_d-hjOKS2L9h+%evz~7g>n1DkK7pynjcnN?wwX zAxnS{kbe@If$B2+`aeIngkRa;7wvDzhWqv9|5G_GL~r)*l%@OTbJp++|DpWr2knRWMTtdOLoUn1F^m(ix=~Mor(Vb#K4llOuR4c#0NV22D@TQ`r-qFL(bwQ z(Nt&e68uE<5v(zpdi_YU(;4{x9J%yQXQF8%tm)0(S_mm`;T9|jpS;l_Q4dicK=`|Hl*afL~8e* z!PuZN7=%7MWSk*-4xpKSUuAo{(j05#L)jD~vMb)*9hXW_U|&wi{$x5ClX2Jbm_x7> z={jm_uI6A8bt;waPbz^gjp4gupwV_#@N}>BAZzZ_u$aC-9I#I$m_fpp@kLNy%6WN?eqRbqf=dr*klp-akNvfS+F^H+r2tsl;H??=Onb zmC4is?K_2DI)!8kc523>{w|*piRNz2slP*n^zpjc(f10mmcsZF|4jX zXVKL-&C9$8I3IpE`$c@&>mT1`7^Nc%(2?@Qq#VNd3~=S}q?f z*yAnseo|0&xM#y)%XZYb_l8H1_j~8?r{lfDmu&ywx0!hR4X080w-XK{>qxu>EI#Ef z2K_ydzJa0d!*5%%kTW%`YTMwa1>hIiMdndop>bj}eu2^R#5=*5LDTfoU z6H7q6D*~sVc4QHVV2OaAam1P;X=oi~V95@hVOTz3Jx;W*FR?G8bIgejcEvL&h9z_; z_oW1>MGMb5W!FM=n z(Gh-EEz{Q#8SLo99H#8}3KQoUB+f+P#`pHa4bi`-jDrIdE7ldJoQYJtCz6U~(0CX4 z;M-5&7ZnE^g(5nmT=*jW@t#yP17W)doK#=DKf-V1CF9~IIbHT56U_I)=)f!;OYM!R z`038*KqS%KosMNN#~_nqCXWThS6n8V>VW|G{y=v+ii)XNUo49M9CAO4bdUl|6v{+8 zXt3yG2Uh$ZXCP&AVHrp}FzQ&!A%jRa)wn-02s!c=o=ErLKqpv5yL=@>4d^3k!&7D= z$^I?}AxjiWNJKlGWbgho1_w?FUyF&V>{!w>5sV&`LXCI#4W@e|g99pO28sRA-B1!3 zb@fHyf#QiSClawCg>G?MYV7l8vAK&x0+IjX4+=)OCFkFMAds_aL_+@cAkMllL$ zbZ~#VGvz=R&^pErhRBqC&Vbk>MqFKVq&wc1LH7syv9zJl*boemmJ>sX6kQV6JgN}y z9WrrPR&K>caoR!zTPD&Pf~fOd=~lt~mBT(KOZ#p#}bk4!m*&iL^ zS6-?6r4c99&nH4~elnfZTq5a2H+*|C4sDnd01tH`yL+f@KZuJ+ER=@RjB$zRG$ZKm z(H@H<8thUV5FI22;OsC%&?D)vxIl`sEOOoy>cAM%RveBH#sqear3#uuhq~iKoHXj4 zz@3uEJH>^Z?`HPFqr}9|KzrTMIF_6|9~+4xU>$%v?oeU(p$DCmN5WIMuD!k;cXpVw z>A?C!@6Z+7i$d^k&@BfD9%-N}(iP1_9c{Cx3#+c$d~^V^QB8?KtXNTWMS?~KM3H14 zHb-KcX@vEehzx(E5Bs{#fxVsSeHQn@D!U!*P~g7l=I|r#dt;r-OKQ+9V+0t8nN7(i zLAwP__F)nua(C1K;B-2BB8fzQB$4WZrPEk?Q;AH5D>9adE_fXbv2+=Jj1x94!;JZy zxE``;;2{0qwzY9fYh=rotxau_t(zO$+M3ovF2wQq5il%}s}Q3Ot}R6LVCdX{O#WTy zIhF{7sqlZ|i)E)sHDHpc|8ctE(K56%jDB`KmlZUk!J-14tGGzMr%eqG46xI-w+71;CzsfVXeiOa_zi1GD$+5S z-Y?5P?GNEgve*0odW1=lc0?Btc1V;9law)6Thcp?l^R=p)iu-lBQk*I+M%;0r#C?<0HT`>^z2zAh3i}T6i~hod|6V{6 z+CU5{3zd!?Y^gf|3&}*_17p~cz|sbwlmUz=3_*in#u+*sa3ok!v&SgTPy$P>_|tSR z)+C90B*H@x)3EpwT8At{d!s2?iex7b3Vxe23-&CL98x6Y!+h(F!3Bx4Ra4^Brg5PQ zqIAg;yG%NJ2D#{CqWEEmx}UTzW;)(f8y#0fmY#gOL=cPcDZ)r4orEXC`U?Bx#K(_J z#s_RRA$Ex;;5!gaLIIctG7bzsBk^Qh-4IqR@dq|o2zjv_?njh9uv-?I+6WGIU?ds! zmNY&(ofwqY*QF}~1B`Su9ljG!A>SjaRh6wdNm|>*J^&v8t#KJ&trvr`%(m#yDh{__U#>QQP zct36uY8-yn%I8wpM0B7B9mPb^NC{>FNzqUOnO5~DL_mZvb$>L~h2h+TG{__=&+;gvekz1uJ)H9zs4Ip1i)ei?Lu>L#EYDCZPCj5X89b)g%UC$lg~cuFq~JMT=f4o!QDzCXZL^AD z--pfIU=l{7QIAY=bOP}N&XFVjsSM`gZj2mefDSOvS+OoTcIp+;07H?eX*5fnCo!QpvFkw zA*K%h0+*}>uzy92p2C9dFv_FH)yPY>gV>)*9IIAIv*~5X&Qlibau_UiV_~t`) z=4GcGR~&z(fJtDg?S<~J#p2;Hw;g1RanX%uwA*$ih&-{>gEy^`JWRKo%MSMnl99ot zLWaG!-|53j+b62xA}#J1PRfstJN9QV%Giag0hxp8s)ZqotLa*rrIux>2>~=$9 zFB%8KCJ080;bo7%oiv?b#lo`Q2d9k!wnQZmeX4=#BlGm=ABeV>9+mx$x~SSnHD@UxbK$sXdUMt7lHNHb3J=B*npYuX&y z+_YtDE|9{b8Jiw5#yrV_ zciW2q9g#lv*FCz2aC-d1zRrQT?9*hKOuNf-n!tiT^TeP{Ef+ahb4BU`p_x>R>U87wN9Bsa4D z;BcYRvm#7YaF7sGW-9|Y1}PGrNIYzDyGhlRx=@0IH|&=E%?dY;X_<4;u3hlE15RR4 zPcmt+a{g$35KC*$nd)+>XN)}F)ni0zk`Wj#$f5%{#I+#94<~i2g0+BikcWd3pK_1G zl~gAzeKALqk%IWG>=C6*5sbzl&3UQ#DA|7SzoE3ZKPrd8i0z``kP zKX&tb^|S%27{j%EQ{r3)Qward!NUU@#Bu)Sma@gu2sCh7M8Bk-h~Wnu0QNq4C%A~P z;aBx+o(<|G&@RjFkSEjRrz1nZOK^kkFfQa8pb^d>4qJFeiZPcp8qov}f3Xb1WaAwON)aIXM|a5{ z+EsU2VuHvTo;KJT?FZL%ByvtC<{-zI+@9;QAdt%jCX7Uoj9;@WR~NUM*e9k_@XE8|8)B0$d@uG%5PXGSM9y%m$ z%P_tOx3E-jrGU4S87Dgry@AiW4&q^?XqCYttwLRdZpje=b>JBQCL-5NsjEvsoJ)W? zIJp(_-K|UMoyj|n zL5H|`^p`Pp1iVj>bx!9TA|*sraCeL!85$tmVNiktINjChB%wR&=}tmBIOWmf`sm=$ zUfEyCjOfI$A(qYtu8g_5WkX{}LGc6*7&Lr``$7al6XhM3P8f!Dw&>`wIe#pJOt_}w zd>Q+0Ozl1J1~_GdDs23AcS`|Y7fWe$A+3QwLITkpS0hYZo+HY=lul9yXZQmMx}p#{ z3g?VyRQKF*yfMJZl$@wz>nrY1-ciWtnA$6^>`t8#aP0G=nJGPz}Xh<*0qZcWEq z7Io-WRK>6cXH&SBMjU}DuWuM~F^;%cxG%Y2R$(Nc9j^yK>}QnbVC9vgrsQP zzYU@-4lso59Yo{2flM=s=*0zAG>vUG??w}uUfozB9E&Frc5;iM!+~>k4aIaw{p|w9 z$*xFP$uK2#yM|ay_O}*_iC^Qr08Z#|BHOW#_n~-%f(<#sP^^wL5-9|`Trp=Cv#$$ZofEybut8KPC_wq zqs99y-SqH;h@Q%if#m8i)9oK>a|$BfhvUVh!O1;cx@@&|!pW7W%qclt%^vB=Hk$8y zpjHWw-gJW`YmWp9I_r6VkNKB2zlXU7n}B@IlEHLp307l$7q@8n;tLlqb@s<&IK|_p zMGnsVb$5lV!uAeLqY&M+`12a4xY(iLtsOi77fS|2P_u=T5{f_{h`y79ee@46V}e^DTv!NjMthjz2GK#M1za+jJSr;N71;%6Qj> z;Yjz!vAfkkMz@wW+wAl}{G!;8-A^&p#MY6gjtna4X1E!U%?U3I>!4Pgbi!lvA%btS z_G*HQG+a9tY3{gn`y|u)JSUR#AldLwCz{-Oa4P5$!d<$U6AcVOmH0XA#%0CupFmJI z`<=l7yzOJla%~GUjpH!~qbr)N2KUeh-)`th3hx6jy>W)G*Hl!RK46oZWA2-{-SY|)!lgeZ(kIld5&yMc(U zFxe>y2bFRnyW_YPfbwiPq^%iaI4HS%vba@l?rFBLO75T;?aIL%qw)yeHb5=1a&+Q> z6PREjqszh)g+)VmIR4dE*7M6UDh?$X-LJ>Ra1B?k-EujukT+ev6{m%`NkgcQ8PSzM zz$>Sl%6cV-5m?$L=t4kT*O~8Lw+iS912qIf#Q+xCgi^3s@LPsguxlv+J<9KDBo& zY#1yCkWe|asG6`)y~AwyR6db z3GoU+*ID)nPP`kNvpw__nN(tbgpLt_!^Lwjo#NuzZGy9d@GO$V|EN2IE?IA#?3+nn zZ+3Z+#<$*Z^a3Zqy`8)YrPWb9r_+ybb5WayeiDS>O#!5{QJ^~M-f?WsAYR@nVF`QP z1xy+q5C<8&hk-(LuX3J)N6?~23=&9YulY5Ef)scQ0uL3(jKK=W3lCi+WR%Tc;yzSw zL~O6si%l|}?tUJ+Wxa8K5|aYY67)GrVo6?0@%Kk@s26@S$4^^xT zu2}L;40R>T8V~~tSP*=*-un}Cg~G;Oo7MdnXk3`_8rI^q+&u%d=VF5>iRB8Si`(wx=@`Q21=B(TcZ=X2kno-h-D^c;{MU6L8*+1&GM`tO|$$BvI zvf#@LG8|>f5+EtEXFxBp%)m=xN?~5=W-O~|d!ZENlh+8&{&Z%>2lfo&bRHusyHfJe zqnOU#K0GXgb#aQzr4_ZRTT8AKFT>2JK;A@h6%)-3NxIOei3Jm#%I(x+yn)7S(dZ`0fx})VLeC7}Lo?xVCS0ss zeDz1+dvPX(SPN!`Z1_C7NZkYpXB4#K4jfL25$ds~^en=49}%bS8xnZbhe(~*gPdw; zL*k>{qcyWI8Xd3Q^tA?7ckwp3*c6{hwIPW_9bSadRWoC#e%kwc_+9!FM1Lv1JUY9!$pKYR+Gd)dD!we71(2AEs}fKf@u29Eq4)mra7WdNCrb zw3tGA4gzsGg|G@@6RqwWaV@v<2>x+CXAV!!Vi<5?2`3MNi1>!F5^6j`2C)&`4 zJ(0yzi=pflw)#FupN8J@rXkms+)=%Muwz51gU=`%yF$FsEpa5kC`}Xc(L8ll{gN6cN(Z%?EB}O(Z$5p>0JF0n=F%B7ZtneWZ+_wA zx+fi+r>6lkzxcBtWU{Q#)T*hst4-{e_7Z!yIYk;LCjcUQIQ(K}yqn&n6wWHhp8HW2 zfbtuZy(N{J_W6?v5c8+IpZtW0)t1J%#5hWTI!m6CkVTWk~$W_GC-@h4EpVn}p% zxpaEJNY1%y@2$SOzigAME#4(C=^vO#O_QnE2P6;{7=9^q?hKpwDq`eq(vP!0++BJZ z)+yuNO?v-FQ}s5~Q_wXVzG*3@Lmnt`ebTjn@9USs7k+`Nk><&+65O&|?Eb_|DU-hq zK16pdVGoh7IyXnE!MbE2{1_B7VcW0Z+DX_Pc8j%(CB zu6bOmsF;k*tQfiFuYY7@OvxdQ^{*zwGqWb^pUIQlx6PaCS;RTCpOm(r1#1U+J0 zY~JnQj&b2v-P3??QF!P5j1U)2)VcVvo0+xoqGDp)_O^^DxB8zfOx&#)XO^W6W!7vb z)fgtnIUz;A-5UGQ{cVb|leEt}t1Uyw-wJWJa$KlgNbWy+r9gB-ILrSSsMAev?z89cmynMr=xhKeym?+ za(sS5S-yUqAF3{|cYj@3{2I(>!Yy&c7+Pr4n<8C4WsVR}3)^pOO(yGF5dR#RLNz)k>i%g4o^V>?) zO#8_|EiE}PvY*~f$GX2jZhOmu&dv3HagD8&mqLWLUUXa6#P7CeU|a;|k`p2~Puy-D z>7w2V6YD7Z{ajP4cZT$3Hg!&qbWy$8>!*JoInD6_y?^TNq{u@AvZfW^%Gp%JHV_GN z12Hru;7~|_TbfrMO7+16NyI+@8=B}ECdXOPKIzuQ5)!hfo#b(Vw2^)VCM(%&?DTV0 zp-*#S*D`z`aap8e>4RmLiY`^@R`IT*=R7Wx)A}w@ZoA$jWQ35QE0TMnUJSUq=j9*c zkq$30ShsH1CUYL4pH6Hh_U&MkjNUPkMVr$A3DMx(9vM|`%Yh38iU;cNL+jGSO)pY% zUG{ii#tj(>?)sV8HlMp^XuNyXy+^NZ2{%Xu`6ul3;X&V}eCKoHStnPwIZtX#{TtiY zq|O$4xlb#w#8iLYj{|qpSDrR=)#PtQOF&rKTsM44L1dkJX={xJ1*LVRToST$aSfgO z+{U5aiCsE%)V)J4LhEix#7PjqKZzkLKv`(G6~EuR<)3Slc9&f->C!=5CHMt~cS~Iu z1VIxQd2wbMvA2=ZTXQW!CG_S(ueMdnxv<`DXeh-m*VPMiZvv2>nKnso_DXZh?SJth zU1UVsPpb_+xL9Bx;gBNwaGHePB|_oX(;8oLn;s;;h(`KYt!=ZHM?$e9+ckz%j&~Yl za*%H2=7i*QzlxTAE7nzRc0|77gLL_HvQH5Uh~i4t36>Y_E{P?jF?f^N&U; zFPUoR)X4T+S)z$so&`H1cEI^R8cq~z;TB#}1~)+tNuMyxt$N%Vdy>s;_DG7FXeps= zulL>1mtOm;ZXpm8pbs&+iQcykf^BX{%Y||)O}wX^G3=HNGJ(4t7?KD7oM9ueKe9D( zytn}V=|728jS>r>QCt@=O!b2@MK{B{pr~{Y*+1qz1h=2TZ>aZ=s<GEu9<6bg48>dAd-)0iQ;Ak?4aMQ;X1KTE?{!J^Cr$uz;%+rA#n%yShy>KJ)iFSyleAID-{<^(Z}Y* zmv)ZXWx;X@&t<1J&KWm;%;bbHyoL9hgMGQ=&XcSPT}KNBH=SLA|0>4GJ-Q^d;I^Wx z_b+2oHcdL8!qtITgiEnqKlS;^(Ayt1XEK=Z7@0lvAiYp-!T9B`+o|AM-EUTs`QB}X zlCC3jsvmD|M9D5Cy)WRFv65A{Ny*)aa$Q$^8<%_8@#kj)c{Wd$WqyRq+Q;_^*Gr@c zkaaAxbKc3~Z`qGe^IcMIeo04@z>01`a5unm_L(|6>FX{>llbpGrgF*W4Ysqh3E~sG2LWZrv)eN7@8EMB&kYUt zd3%H{#T`_xUsJ|v)fSyINw;i07z*_djqNzPwQbN*_Xv*%gd4D5QAKIoi} zj4^Hxi+>zOTo1R<@itj*HpuN8oglD!mc(VdyY}szpqca4Lavf0iP1}w*Z8^#z<1jr zSt(LxQ7E>@S#bZSJ!N$%(5rKYk7anXhqa0H%bbBEH;CQyUEc3-yOq`35##Qbk_+7I^~Gxt-2p!h!UemtHO=-Orlv3A{rp<#s(ICt94drQEfg`b~Z}R_@0F zw52ZFIVahXCrh;+fyi>De1nt%Ox-N zv=Mrb7&yN-VyZ0LoV)0jP?D%LHI`g{Ba~Ega8Ii5v>9>}NeyX8Djj>7d~gsiG)R+8 zztVQn)|Wq4JxV-5Uq{0r$nG@`-i`1cpCsWH z^J3FnXLp<0a&5Pngu$g%>_n!Fm2kIPHOP-8s=$?lJ@51yRyxCN^r0TPm{b za(>|mSWw?VW%9t3>h5az_cG}abG!I-SF5aaWMoO&-nn!S%4&Vf$W!}|eHWMJKEL+X zO*>LVH+=oBtH9eayouE9`sOeBhp*zWi9@Z8j8ci1`_UoBb%<=VO&148`eQJHC>e9Z zdH8tQiX|D7n=Q^#jhZagFJ=MLfUo*X16Vd-;q79&Dv?gCF-rGjtW=rI4LUoy1(IlY z{mV~k;#`k(j+egKL5!D-uaM@;4?&;T+z%_{IB|AQPECktb)Ch{jhQ25mUo%<-B=wy zv2gC^=52-JoO8EIl|X>^ZN1MT7wbz7BuhhNgHZn=-Fppj&VFy%kRDjpr|8BHu?qgV z8-0>P8dKklB3r^Qy^YFVo+MFQwoYjk^~=CN^2V;k3_ zh^)N1sf_%8QI0&JJX1;(DNt~sy!*)=?gfd#V<}EL7b|gh-Y!M+C(Mq>dvD?Q6Sm1U z3G!CNwn1U}`-`A_V$u9b^CRxhH!pH_{=72^zu)1L4m&&S%DL8w%FDiU9c6Lm(@QFv zzl%#qSkqimq0p+JoTSs~{)l<`W=G~t*Hm)SVEvX~)1L|bEGI9M^@o?czG(i=kmLHv zd1I@qAIXQ*Pm0!#UeEH^2K9C>n!kTxt;w6i=(isn@c9sV(LW+k{g>5WiJ*STkL8=o z7fueBU-sd;N50U>izYJYn_ce(9%O8WAdNf9Cp(2-#~tb74uhNN#|$2>q3(%f5>U6~Bx*5D_XFhRZvR zuW&^8QG59p5us9-L3y#V&`a&I6cV-N)7l=$e>4iiUH`t4e4j8pH4Jw@yK^Ny?mhTd z;?sn?{4bSHcbHw7FMnT2epwj4J`CR#hVKo-e-Q5SGZR&6cIr$RdH2FspMS`ky{aVV zSIU2>Fg!X8Z!6sC?}-=jnO(aHd?C2mu?gU-!Od>X2R{LB_Gy{$E9G+)7X2rSCs!vewl-E zI3CRByPhhqEPtE4voG#&`3%mE$30aZob3vrBAosz^1tb+0PgezXOXG_`Kkf=YXkDZ zS++Cr{&I~wt`F#`Cg+y!0Fw8@^3O2h3-QIsFnY2AJW6Cu|EvHH)~B;y?r`-`L;g2; zXTRLR_5TUDtDj&$`A*3=759;|3IOpeNKt8CyIPAUq zy1x8x^;rd+>+>4sXpedUJ;C~H6yU*hy9c=Z1X51A_S=XqKS4V%I3OPtkk0_;d}cF8 zKBors1oJs7z=Qd`H^3VP(p?nbLHWl6-1&A^pVlXx#~bu|&7*b9d8?(H$UkzJhid#o zENE=(81EJ3#l3BGf4O3!sr?uA{J)x}{Ps`I5f|Vt-GACBXh!^5I1U|%U#OwrI^uu1 zN|K|ye)zIF{YN?}7(hJLHG&*N{lA(|Cx0$pf&3nsKdiiElk|KB@vdDI+)W(C3f)h< zG90mQiQBpJFWq73E^eXc5$H$8Dg&8I0${lJjelALopU9EXWFiB^7`csumZv&0L+ zS%^S>E!{Kn{%>~_BYwEE@(RSuI>RN$HN;z@pEo2vzq-n|CjJ5HrxWo(kt*Mlc;k5G z1Be$vf6F9Z3x>qzJ1cK{H~GjhKaBhn#9x5JxPo{O=wD0xfO8V%uzAqZt%&}%o8)hT z9k3r%G5L?tAC8gyHZ0)I5Vv&gCsj<(UC3u8*m>iTFywWJo1P}b--eSof%u&XTHgDJ zC&Vj%l=$tKD3%ky2z&J^@%*UI9mGc^s{Vb%*P?w76F-cJ=r`hzw^BXli66t{Qvl<} z>TM(XLuuyDsh6WR@$wj7t%%n_f9OPfesk4xBk_LD8JA-aam!B{bL3|d@tv60?je2v z_5Tp@hB$wk_!(Cra;zf$2<*;L;_=Y`1je`3XEB_=O*|pqs}Duy*H4qbA9krE@i&U9 zocl={cbNQJ;0=h+uBCFriO+%m@B;BI(DMoL=Q^sMZ;4OEc=?6+ZuFnOi04Q7-A}5y z!}9-%bJpajPTcZ;1MzN{H~SNxP+Rp3C;l4rk0bubwJJZI`0r85=MsMm_Ua+x<6-}o z5l_bXOT;7GVpop!#EW2DY$5(^2bJGRd>-uEapF5r-m}C9byht#4_o~kFNyLQf4+vw zHzNLZCFQ+|w~A6eiTHPLVDBJ)9{G8Q_ye#5ONrZf*-AXyWmt~g#Is=Ez9w#V{uuGS zDAyU{vs8U3FYKJvPn>g#p^Ia3-FQGqQOS~86qw9&c!#M3v zJRipOaN?8U=Zqyj-34{zSVDXY#`}xJ&%u9tgLo0x!!5+`fc@D;ygU5xuZTZ@^8P^l z=4j35AH>t3=K}H7&{G)w#oBQ;%!}vN(d>iWRH{!=jss3}s&!Ye5M}K!;JJmm;T}ly8#k#&K@ouog(ZnCa zdZz{PG~~Y{@xNgYZzR6j1ux|oOgtU=97B9M>{V^d16HmV;FmNdUIPBuc;aW!E;ER~ z7VonYvU$ezkH&a^jN}J2RQVOed&3T|BR(lglrfA>4b?kGllR5|5e5{x`(0s;BAx zLVOn1m1l|D{1}OTXX&0ny_F)~tAXmTM*KajBN`BI0=wOc_;&M}2-x{2+Q0%pzXUWmt{{#BF`LiufX& zZzTRO?8Aq|rz73H#Mi+7A0fUM%f2JtxsMUX7^q)$^A3?jdC!ylvKFeR5Y_=EzXtuk9Pz_AuSI+l z%GHGUyeQS5Ks-OzK|P3XLH!RRULNz~7~+i@s(y=GSpIKCdFPP)IF$ck;yuw%Ruk`n z`gwg#$Dn?)iI<7i3+^CZ4SwuG;#HyNDdMFt?p`APCB~8U zN2|96uvgnjejEDvKH?8!ydNcA5B2{C@o!)!?WVh>`w;XOLwg!Og?v^fUK0L8H1UT~ zKP`#(ETHw-nfOq&Zy(}cqW*^wAC7h(OFR<()$PQO!Jf|}UIKpeHDXc?(BmOhyyMKtkhITBB^@_FE1mveY@p|xAYZEU4 z`_`2BdE~PL@nP^=dJaz^|FXOdg&ub8$r_~vX zBi^@-e$k%zNR;;m;@@K4xrO)!=$}M9_(e;J|Bi9`3h|F4HQ~32 z??V0WAYP)e%I_zBJ@WGd@isM8{xtDo(4QCWX7!&3cCQ5SiLmokiGNl|^*11%hH=}P zcwx-rU5JlFJN6@91^s+D@vAYPjwfCVc3>uP+Xpb8_|j<2|C7YcA9|7aV)y|Yh^Jqp zdbSZSQCIl^;yYl+ek8sb^WZ7sGh$WGMdCvulwXDZZtZw3PI)=v)sUZ>#2;*-@(qb^ zf}Xa-Z$fA%H*WP<8XCO#DM8N^pWek$>gF#p~~{4tEXMa1(%{}SRwp#KHp zi(tQAC;n?I&HsDEPh-7iabm0gUa;F=l6()0i|>iA2R}(XtE8s;FY(F9XCe46mhM`N z->Zo?cLH)$CteZbF@|^^%$u!s{ilF@JqRdJcMr-+Y6{zF**S^fWl@)jkY ziTHL!;``C=b%^(ArC&59{sqQq0`cRp^WBMWhy58q{QYLCe-!Z!!g8Hh{x+C+)7Dz9(ZoAM zE1yK%@_7gGcCaV&i4QEVdfq3#7IvT}{6Wj7>2FAUb_>jmqGs@ zO}sel!zAL<(Le7Xep?sK&vV3YhM&KN_^+`l|2FaM7{4D8KaKwL1Mz$qcc+LiXsh}! z5+8u}ErNBG)pKj~+j_(!ao&RX?RivxB5_;C_8>kS^W6aAccT7B61V-V4-$VnO4D6R zyd>h(FB4yad1@1J+kgHcaof+Zm-wHkx8uY^7hZ2Zitf=+YjrhZuuWu&)pH3>DO8jc9E5{N4CZEdRM%?bx+(Wz_ z+UsHBcNbSZ%ZSHxQ2sLUO_1M6{6>tg4~V}2zj`_npGJHI^uJ1cHTXxwH-YaX zz7_lk@m=62h_6Hcsf&JR^-~WWw;6G}zu%kq(so*|Wa6nw%3ma&g!4~`?|}W>Py9p7 zqeqF`I_(7Ugm_K&AL2G&m%%(>du%-U0RYAo1_7)p9*W`~t@N3&fA3-d-ne_4yw0rkHnj5;s5aOX3$$ zt{;eJp&lw>99z3YBL8)WufjZH&vlu+>5nJ*>)=mbPka>m)lI}(!H%R5xAlmvvkOc0 zI+NEE>w@VdZ~2@{{5q8XA>wN~YI`jsz83YigZQVYpS{Fw|L7s&tKo;(zP7^1|3TR8 zyjY(ZH$BCPTe+$bUxa$7NBr*sTCQfq&Hqmzz65@FH{vHy-dl*TEvWiO5dQ@8^?2fg z5I4JxcrE1f9^$=gs{V(Ge*=GM8S&`}D*qbsQ<#@G6Ss8t61VmEAH>f?&%eZPggq~W z@>x69ME@^K+~N*3h+F@RC2sw*HSs0+wY;_u)Y7$h%MgRVd9~q;cRu5(mOA#N4d87()dBvtbY<+Kf z>^b&kBtI7RJc0OI)l^S+;`?FW1{1%4`08-t1u(B!oWSxkx4r5gOY+GWk28pugWq)@ z@s`lDl=!3Q-!BpW0`>d}@r{^g_Y=2u#4+MqFka3OzvU_|S6=w7R^A_BCyNnZ3cFN^ zc(-WPQ=51l=xaee#O3{s{&+kL z-$=Y8;$t5Ww|QhY@d=ohzb0G=)$Y)A5^G4EVQd^+;em-sA<(`4dLU_53Je-iW2RN~ta&$^5FZ1_uyh_`^>wS;(8 ztY=>*UIgpn?Zkhg!1%Lzvwa@LiQkFxUPIjck~rddVYhn{w|y%{j`$wf z=Tc|~tGC7lRlX|m7MLHSi7&vsChvgshv|6+cBTXIiO}DjxZO9IM%dGwH`|l zFN6LNLwp$4Ypsayf#2APxIKSj@c>KL{FOl@|1s=L8u4e)-zE~@4Er{VcvtkF`-z`M zef~}S2h>+2+Q;%)6#cCv@hFVbD#W)I*ZOQmJPGzHfp{wHc{k#H(I0Lmeor~oKZ1Bs z@bSctMydSm#9xQMeIN1vK>ktU4`cp%miW#2RsU+@uVcOZ7V(ORQ*0+5Q$Y3XCEft- zb%^-CXy4z6SBKwnj`#p-2 zRS)71p}ZrBH^uxif%t*anx7fO3&HL!CT{-mv&0YOQ9Y}PA47cL3*zlj|3`_x2fL9M zcF5{^CwNifl`-Bc5x4ynb&1!hp!sY@d}%%99f%Kb8IYp~ar2u85^sa`UK;T_@Si6U ze;et}CjMp(O?M&jYjD1V_-NGQi^NkfZ>}e9`xLhl--Y(tP5k8wnjd>k%i1Ls?f47H z|5aV(&k}zP`pvI2J>6gjO2Hl*pAA2!8u8xfw+)D|M|-s*J__y9nfPYJA9@p?3p+5B z_>b_jGl*xvKHo~*;zVi-p9$ z!o2we@p$x;mBgn&{x#xTQJ)r1vi#@6eEJE=pMm}Pl6VW0_XpyU=%1&EKN_X=5P}`D zbl7FazzUtZ;3CHW=ruXYp9g1>!`c&x2AiT`+w>OadI{#69*oaHA9>6Rhh z4ec65{5_PnKJnq5HQg4(OTpfDB_0u_^8JXnK^$)k@e#2qKbiRT81J)*kA>Y>K)fgB zwI_(DqyM~1-17M`am(iy#7+ON#7)mx;-)8Gyq3?}rENhyFG2h){M5?CLseD25%J?F zZ#&{Q!$0grd=~oKAmVi~?~fy19QnMBcq01GV&XlK&yBDhkf{nxV=ARAMtERXuOb}U|6>!&sGVbGIA{LgACKbW}1c%?*5$Li-4@{>UP9LBZzk0!qi z^Z3mq{}SRMBZ%)Spy`b#{!_H_+lh}ryWdOvB>fe1O3GAg}zPt*TA;&>H^TmP>^{DaPVeKX?S zV1E*c7eqh2k$5!5;}GIas;mAC;&)@5P9we_v{P7?Zp3t zpR~{%F{t)a; zXOe#i`RhYG349pwSs4FgiFdhH%X>TVZ!zxd`3%d?Q;k*ragzTI>-y)37ePOHgZLxp zw_AxfK>hC_z5w&Zcf^<0*8KcN{KW#w8>0VO{v#pRmblHo*AYJg|H^*%!1O$fdPpVt z@3G#0miS(@;~L_NQQmimTRi0x;?>Zf_Y?1i_B~3x0oFk$iNBXu>*pWhAJ9p>4=#O*%sIO6smv022oCTKb5 z5dRE*+I-@tYpVR?#I0N_h_}eE@@t7_!asS3crwP_4&t_davyPfuh3!Q>q}_5zY*V3 zNBKG8_o1KE=&IjayLW}2SmLdsRjxI0+b7nUxc&Y`FXFcUYB2Ga5tklK-1h(6M*L(4 z&Ck8W&Hs6Z_|t_{eiQKzYbylAZFfUgpz8&LzB=NEs?-Phy{mdY~5$$y!@#|tW zACD40hPc^s;u8^9-%H%yLwkt0pGZ=bI6K1@)Xj z{PSX(k8Z@jNB!SSd@aUrD)A1*RnIu$JjW7iLZd2Sw`IML%mEq zHdgg)Bp!u&`+)citmAeQw{h_`aT`ZJ6EB2u_a|}dpT&A=zO0{DFQVslh<}=>yfJax zcio=&8q8DI6Sv>Lxrw;_ZeJF0i$AO&J{9Bl9pW!zyze7!{?cLMMc^;}MtmgZ{qw}D z!LKNAWA1v}4n3ubTfKE5eirpSfcO*0|77CtVcj>IxYf@B;$OsQ{+=LyC+yWq;#a{> zUPruaN!7EL_y+LriO=bv^1l!-j`-?H;`@;9S>mr?J(#ao?s{Gaf2IWS{?JpIcs|&N zy2O)EpG}FEtE=h76MqKlnr_7B!9JuCzZ2{Cal}_6pSKbJET5)(4{`e)kw=I(#&~>% z_=A`SHxajfvW>W{Q}z(I_ve2@+~Uch-nrZ5Uc|df5q}NsUX^%4yj~wo+}8UYh!0os zP+#Kh8|W9w#J@)WnL@lqyvpB6+{(L*z0t zn_WFZyh1J2bAq^)_g~^aV%{m#N3SzGZ~2TOZuiR?5Z@N1*C!HBa|-3?K|BiMWgzi` zu&Zgr)8kanB;su_U(Y6PzqhoI_^ap-ONiULW)<;_I-2fA;zwc6KP0}OlgjTUehll= zBgB(n2Tl?%9X60Z!qU8b*oZ|(ID{G#f_55WG!67P!f*oJr`$af)b&o}lZ-Uj~U zFyiOnpJx%@2>U;s_%X!O?jb%M=s|pF zTjc|YcS64%MSL;r(nR7mkGw#9Ajau>;!hwyTZy;De7Bo;U)Z;Ah>w7u{0s3z&9z*A z6MwFe@&f(!)7mAvq@G_*+~%*E#9vnNP$S|guqW3NxAB!id?E64D{)KrZsH;M)ejK= zDM2&z6!BNkUM~{gUtZ;R5l=#W9w2V{|B1Lg-})!Ct6W{; zc3+?w@i#GFbRb?kQuXv8UKI9oAn_?kH;wqYXw@@`cr51Y*~ACLtNcRZF{PC+A^r!( z*Nen$|Mmvr%Ui0Rt;8+=pAonGA0%%1|B3hji@3#|9wc6% zf~LEaxaohHxar?Synlk~*-m^6)_r@4oBqSZP51{Rtvxxr(e&BrKE#W6T zL3}FwsOO1iw^9AC6Sw!pZz29Y#_6ZTF%58sZ%> zk2fa1ppxp1C*B8kuRHNKQO^U3zZI`~MicLY`kX@iD&+G~;yatEo@a>LIC`6SYE6~j zPTcbUIdS_P;qQp=ggpbyC5Z5i3lDi!fy6E}U#Mcy8UW2&(j#@+Fk6^xQ zOT24M)zg*u)vhDSaTD>y?UfHFehl;MIO4OLtNiW6SK|KQeZ-d*Rr$rlJEH!dBOV7m zYl(k`c7K=nH01LW;-Lgh_eqq$2Sa z$bTK;Lp!RTro>BOK20D#7yYw4@d(5r2M|v~J&Yn=th}Z>k@#%H2kszV2L?q4u9`g;@`q=`J4DGtmE>hsy=I9 zTSt^8-Us$JinzVUGluv}c~oy};yX}pNyP2_nSF`d{k|09rE01Eam3HVK0id<Pq3@0#QUjuXe{xyN&3Y!;-_G5?Od;ynwf{*}b- z{f`@ne^^`P-zVM`^|p(68>}yWC!P=Tr-|F|?Or545dF5qC{5qmWgzC4dc<$Q_=+cP z?}5L8xcx3_f8txw4~G*!2|Ii@@zU@I77;Iw`DF?5GZ9*z7l_;bhu4YQ{l_iD$06Na z#Is?~4-hZkQPVv|ydd~R;`W}*tI~4U{|eM|P2y#+jz}Or5_aqc;-`@R{=}byd%CMf_}($DwJ&i^Ff6L;P#_8xIn%nP2rhP5dL+`BlV+U#0SMN9(8c&zVtr{uuEp zkY7RkIu#FXCjKw%^FiV*abMsx@$zVw5@T}b$K)#$k55v$dc=RJqdbxLMEF;IiQm#m z<;N2@`5DBg!agh`eiQ8NI^yN(tNu@k{|Wvjxa;H6wpx@=w`pFcM$7$#;;65+IyW=hmrq~RMi?GTd?@s^2ymBA>$i#EF5P^Pbsskb zxa*%+A)mJpe;?P3BwhpZ*~EK*&muksd_M6B;7@{EyC9_apRS0mWr#Os34REK{ zp%0;GIam7kDq? zw}1~JJ`6ma_-){~f?GakxIg5WN%Auxzce84@;L|mIg+0bzAhl|`m_BW-bRvN2>H*5 zKL!3X=^5=ZDaUEzvkNG{YP^10xjJGUSDAQ~hAP*N_*s`(Il2%(2|c}uZ*HaXnZ)A} zXS>P<#cy`h^Q(zJgZwuq-Ze($lZfAk@!N~|A8?ch5x)cL zi&4ZsYOMMv5Wf@ao!f~oLO$;yo*(hIhl$(o9xfxkyNIUyGV!0$pEnR6hWU3t@pko8 z&r#wlF|JP#Ul*If5xi0Y&XvZeRdzRAl+7o}G zv+^OtFI=sB8u3#ll;2IfHuxgqRZ*@diLWfCdR7vD6#aHB@q!rdZxio|xXpIrO_2Z3 ziC4xr`kr`yjK>qi-+(r~=ZtoRICq5VBbTaY1HC6v?;)h^Q77)KTR^^`{{sYF#(_#2Z;;ZYco>gJ^o5bHj z{Ndd&d@J#o3aWp582%~o?y%dRhv8olFWp7;e-nm(PyBi4|2YglLA(+CnbTqTdE#Hd zu3iko3ry1dTL0{i`nf6$FGYMV>~PsIyejeMA~n4lVR${_JrKu>3B#Kb--Q0(G7OI= zUJ-VqV;Fut@sUxQ{~lpDhEvGZCzcTY0+_#?b%AOLg`#nR8zz`a{Z|;?UJs@O&!ham zm)3VU4c&l0T)IK|o+Q5%=kxH%@(W3RCdTh;VdOWE{8GsO8buU&p@9q~yR`Oiqd`SYj4$e$&7^Up)E z6Q*WlCl8a)?D6_J%KjRknw}h+ojN5u6gxaQJ2@0POuQ%$Vkc&%r;SNXpBjoCpXI)D zS2v1nnftVnoH`Z5Q-@6)IV3G}M3yM>eNdouy}`cTuO;PBY)V!}Mrx*HG&3tZH8!bx-J*x>m1`YPVL;eQEtkPH-OI#U+W+7uxI7u)TL7p-@^?J)dr_zLfLRW!;HgpAz^x zM@arChU;&F9k%c6Iy)aMe_W~k&K_2Yp|9wtYd@EF%fGc>mN3@ou1KBc{tbnGfZZq|Y7pY-c_Wm%}|212$kJFEwfBE{k^39dX-+z%x+V!sdMdW`j|C7R4 zr=U=sJKevbklAxRyIl5F`Ql2~m%B@^s81b$WnUDrE9HMK@^9_r^6%EQoc}k4Ih|Hc z`O_aAFagf#VnjbJef!)d_)6D*^dFUPmizLYvfA~Z;(8JbUBLCs?Kzc{ zH;&cJoX_mmJ@tInD@4vXOj4uU`BKe-Ez`Dd2f}5XedRBwCB>5BI@x(12(S`U-I8i-` ITYTaF0Li)90RR91 literal 0 HcmV?d00001 diff --git a/common/utils/utime.o b/common/utils/utime.o new file mode 100644 index 0000000000000000000000000000000000000000..5cce5d2203ff691cf286c4aa5142a8bcb4714b79 GIT binary patch literal 106072 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 literal 0 HcmV?d00001 diff --git a/devices/common/.dev_main.o.cmd b/devices/common/.dev_main.o.cmd index d1f542b..bc442e1 100644 --- a/devices/common/.dev_main.o.cmd +++ b/devices/common/.dev_main.o.cmd @@ -1,8 +1,8 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/.dev_main.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(dev_main)" -D"KBUILD_MODNAME=KBUILD_STR(risa_dev_ramdrive_timing)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/.tmp_dev_main.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.c +cmd_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_main.o := gcc -Wp,-MD,/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/.dev_main.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -DCC_HAVE_ASM_GOTO -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/3rd -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -DKBUILD_BASENAME='"dev_main"' -DKBUILD_MODNAME='"risa_dev_ramdrive_timing"' -c -o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/.tmp_dev_main.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_main.c -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.c +source_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_main.o := /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_main.c -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.o := \ +deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_main.o := \ include/linux/kernel.h \ $(wildcard include/config/lbdaf.h) \ $(wildcard include/config/preempt/voluntary.h) \ @@ -48,6 +48,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/have/underscore/symbol/prefix.h) \ $(wildcard include/config/modules.h) \ $(wildcard include/config/modversions.h) \ + $(wildcard include/config/trim/unused/ksyms.h) \ $(wildcard include/config/unused/symbols.h) \ arch/x86/include/asm/linkage.h \ $(wildcard include/config/x86/64.h) \ @@ -62,52 +63,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/x86/cmov.h) \ arch/x86/include/asm/alternative.h \ $(wildcard include/config/smp.h) \ - $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - include/uapi/linux/const.h \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ arch/x86/include/asm/rmwcc.h \ arch/x86/include/asm/barrier.h \ $(wildcard include/config/x86/ppro/fence.h) \ @@ -123,11 +79,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d arch/x86/include/asm/required-features.h \ $(wildcard include/config/x86/minimum/cpu/family.h) \ $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/pae.h) \ $(wildcard include/config/x86/cmpxchg64.h) \ $(wildcard include/config/x86/use/3dnow.h) \ $(wildcard include/config/matom.h) \ + $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/disabled-features.h \ $(wildcard include/config/x86/intel/mpx.h) \ + $(wildcard include/config/x86/intel/memory/protection/keys.h) \ include/asm-generic/bitops/const_hweight.h \ include/asm-generic/bitops/le.h \ arch/x86/include/uapi/asm/byteorder.h \ @@ -145,26 +104,32 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/linux/printk.h \ $(wildcard include/config/message/loglevel/default.h) \ $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk/nmi.h) \ $(wildcard include/config/printk.h) \ $(wildcard include/config/dynamic/debug.h) \ include/linux/init.h \ $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/debug/rodata.h) \ $(wildcard include/config/lto.h) \ include/linux/kern_levels.h \ include/linux/cache.h \ $(wildcard include/config/arch/has/cache/line/size.h) \ include/uapi/linux/kernel.h \ include/uapi/linux/sysinfo.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ include/linux/dynamic_debug.h \ include/linux/module.h \ $(wildcard include/config/sysfs.h) \ - $(wildcard include/config/module/sig.h) \ $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/sig.h) \ $(wildcard include/config/generic/bug.h) \ $(wildcard include/config/kallsyms.h) \ $(wildcard include/config/tracepoints.h) \ $(wildcard include/config/event/tracing.h) \ - $(wildcard include/config/livepatch.h) \ $(wildcard include/config/module/unload.h) \ $(wildcard include/config/constructors.h) \ $(wildcard include/config/debug/set/module/ronx.h) \ @@ -172,6 +137,8 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/debug/list.h) \ include/linux/poison.h \ $(wildcard include/config/illegal/pointer/value.h) \ + $(wildcard include/config/page/poisoning/zero.h) \ + include/uapi/linux/const.h \ include/linux/stat.h \ arch/x86/include/uapi/asm/stat.h \ include/uapi/linux/stat.h \ @@ -194,6 +161,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/asm-generic/percpu.h \ $(wildcard include/config/have/setup/per/cpu/area.h) \ include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ $(wildcard include/config/base/small.h) \ include/linux/percpu-defs.h \ $(wildcard include/config/debug/force/weak/per/cpu.h) \ @@ -207,8 +175,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/bug.h) \ $(wildcard include/config/generic/bug/relative/pointers.h) \ arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/vm86.h) \ $(wildcard include/config/ia32/emulation.h) \ arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ arch/x86/include/asm/page_64.h \ $(wildcard include/config/debug/virtual.h) \ $(wildcard include/config/flatmem.h) \ @@ -217,14 +191,44 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/asm-generic/memory_model.h \ $(wildcard include/config/discontigmem.h) \ $(wildcard include/config/sparsemem/vmemmap.h) \ + $(wildcard include/config/sparsemem.h) \ + include/linux/pfn.h \ include/asm-generic/getorder.h \ arch/x86/include/asm/cpufeature.h \ $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ + $(wildcard include/config/x86/fast/feature/tests.h) \ arch/x86/include/asm/processor.h \ + $(wildcard include/config/cc/stackprotector.h) \ $(wildcard include/config/m486.h) \ + $(wildcard include/config/x86/debugctlmsr.h) \ $(wildcard include/config/xen.h) \ + arch/x86/include/asm/processor-flags.h \ + arch/x86/include/uapi/asm/processor-flags.h \ arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/ptrace.h \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ arch/x86/include/uapi/asm/sigcontext.h \ arch/x86/include/asm/current.h \ arch/x86/include/asm/msr.h \ @@ -233,8 +237,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/tdp/level/1.h) \ $(wildcard include/config/tdp/level/2.h) \ $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ arch/x86/include/uapi/asm/errno.h \ include/uapi/asm-generic/errno.h \ include/uapi/asm-generic/errno-base.h \ @@ -254,7 +256,21 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d arch/x86/include/uapi/asm/ioctl.h \ include/asm-generic/ioctl.h \ include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/linux/tracepoint-defs.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + include/asm-generic/atomic-long.h \ + include/linux/static_key.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/frame.h \ + $(wildcard include/config/frame/pointer.h) \ arch/x86/include/asm/special_insns.h \ arch/x86/include/asm/fpu/types.h \ include/linux/personality.h \ @@ -269,13 +285,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/irqsoff/tracer.h) \ $(wildcard include/config/trace/irqflags/support.h) \ arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ include/linux/bottom_half.h \ include/linux/spinlock_types.h \ include/linux/lockdep.h \ @@ -283,9 +292,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/lock/stat.h) \ include/linux/rwlock_types.h \ arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/qspinlock.h \ include/asm-generic/qspinlock.h \ arch/x86/include/asm/qrwlock.h \ @@ -334,21 +340,23 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/zone/dma32.h) \ $(wildcard include/config/zone/device.h) \ $(wildcard include/config/numa.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/compaction.h) \ $(wildcard include/config/cma.h) \ include/linux/mmdebug.h \ $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/vm/pgflags.h) \ include/linux/mmzone.h \ $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ $(wildcard include/config/memcg.h) \ $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ $(wildcard include/config/flat/node/mem/map.h) \ $(wildcard include/config/page/extension.h) \ $(wildcard include/config/no/bootmem.h) \ $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/have/memory/present.h) \ $(wildcard include/config/have/memoryless/nodes.h) \ $(wildcard include/config/need/node/memmap/size.h) \ @@ -422,6 +430,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/linux/workqueue.h \ $(wildcard include/config/debug/objects/work.h) \ $(wildcard include/config/freezer.h) \ + $(wildcard include/config/wq/watchdog.h) \ include/linux/timer.h \ $(wildcard include/config/timer/stats.h) \ $(wildcard include/config/debug/objects/timers.h) \ @@ -433,6 +442,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d arch/x86/include/asm/mmzone.h \ arch/x86/include/asm/mmzone_64.h \ arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/local/apic.h) \ $(wildcard include/config/x86/io/apic.h) \ $(wildcard include/config/x86/32/smp.h) \ $(wildcard include/config/debug/nmi/selftest.h) \ @@ -469,7 +479,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/pm/clk.h) \ $(wildcard include/config/pm/generic/domains.h) \ arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ $(wildcard include/config/provide/ohci1394/dma/init.h) \ $(wildcard include/config/pci/mmconfig.h) \ $(wildcard include/config/x86/intel/mid.h) \ @@ -508,12 +517,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d arch/x86/include/asm/xen/hypervisor.h \ include/xen/features.h \ include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ arch/x86/include/uapi/asm/vsyscall.h \ include/asm-generic/fixmap.h \ arch/x86/include/asm/idle.h \ @@ -531,7 +534,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/linux/percpu.h \ $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ include/linux/elf.h \ arch/x86/include/asm/elf.h \ $(wildcard include/config/x86/x32/abi.h) \ @@ -545,7 +547,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ $(wildcard include/config/have/cmpxchg/double.h) \ $(wildcard include/config/have/aligned/struct/page.h) \ - $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/userfaultfd.h) \ $(wildcard include/config/aio.h) \ $(wildcard include/config/mmu/notifier.h) \ @@ -596,17 +597,17 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/have/mod/arch/specific.h) \ $(wildcard include/config/modules/use/elf/rel.h) \ $(wildcard include/config/modules/use/elf/rela.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/bdbm_drv.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/utime.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/usync.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_stub.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/bdbm_drv.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/utime.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/usync.h \ include/generated/uapi/linux/version.h \ include/linux/semaphore.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/debug.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/debug.h \ $(wildcard include/config/enable/msg.h) \ $(wildcard include/config/enable/debug.h) \ -/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.o) +/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_main.o: $(deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_main.o) -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_main.o): +$(deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_main.o): diff --git a/devices/common/.dev_main.o.d b/devices/common/.dev_main.o.d new file mode 100644 index 0000000..1f198bc --- /dev/null +++ b/devices/common/.dev_main.o.d @@ -0,0 +1,151 @@ +dev_main.o: \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_main.c \ + include/linux/kconfig.h include/generated/autoconf.h \ + include/linux/kernel.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \ + include/linux/linkage.h include/linux/compiler.h \ + include/linux/compiler-gcc.h include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h include/linux/stddef.h \ + include/uapi/linux/stddef.h arch/x86/include/asm/posix_types.h \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h include/linux/stringify.h \ + include/linux/export.h arch/x86/include/asm/linkage.h \ + include/linux/types.h include/linux/bitops.h \ + arch/x86/include/asm/bitops.h arch/x86/include/asm/alternative.h \ + arch/x86/include/asm/asm.h arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h arch/x86/include/asm/nops.h \ + include/asm-generic/barrier.h include/asm-generic/bitops/find.h \ + include/asm-generic/bitops/sched.h arch/x86/include/asm/arch_hweight.h \ + arch/x86/include/asm/cpufeatures.h \ + arch/x86/include/asm/required-features.h \ + arch/x86/include/asm/disabled-features.h \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h include/linux/swab.h \ + include/uapi/linux/swab.h arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h include/linux/log2.h \ + include/linux/typecheck.h include/linux/printk.h include/linux/init.h \ + include/linux/kern_levels.h include/linux/cache.h \ + include/uapi/linux/kernel.h include/uapi/linux/sysinfo.h \ + arch/x86/include/asm/cache.h include/linux/dynamic_debug.h \ + include/linux/module.h include/linux/list.h include/linux/poison.h \ + include/uapi/linux/const.h include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h include/uapi/linux/stat.h \ + include/linux/time.h include/linux/seqlock.h include/linux/spinlock.h \ + include/linux/preempt.h arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h include/asm-generic/percpu.h \ + include/linux/threads.h include/linux/percpu-defs.h \ + include/linux/thread_info.h include/linux/bug.h \ + arch/x86/include/asm/bug.h include/asm-generic/bug.h \ + arch/x86/include/asm/thread_info.h arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_types.h arch/x86/include/asm/page_64_types.h \ + arch/x86/include/asm/page_64.h include/linux/range.h \ + include/asm-generic/memory_model.h include/linux/pfn.h \ + include/asm-generic/getorder.h arch/x86/include/asm/cpufeature.h \ + arch/x86/include/asm/processor.h arch/x86/include/asm/processor-flags.h \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/math_emu.h arch/x86/include/asm/ptrace.h \ + arch/x86/include/asm/segment.h arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/paravirt_types.h arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + arch/x86/include/asm/pgtable_64_types.h arch/x86/include/asm/sparsemem.h \ + arch/x86/include/asm/spinlock_types.h \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h include/asm-generic/ptrace.h \ + arch/x86/include/uapi/asm/sigcontext.h arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h arch/x86/include/asm/msr-index.h \ + arch/x86/include/uapi/asm/errno.h include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h include/linux/bitmap.h include/linux/string.h \ + include/uapi/linux/string.h arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/atomic.h arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h arch/x86/include/asm/atomic64_64.h \ + include/linux/tracepoint-defs.h include/linux/atomic.h \ + include/asm-generic/atomic-long.h include/linux/static_key.h \ + include/linux/jump_label.h arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/paravirt.h arch/x86/include/asm/frame.h \ + arch/x86/include/asm/special_insns.h arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h include/uapi/linux/personality.h \ + include/linux/math64.h arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h include/linux/err.h include/linux/irqflags.h \ + arch/x86/include/asm/irqflags.h include/linux/bottom_half.h \ + include/linux/spinlock_types.h include/linux/lockdep.h \ + include/linux/rwlock_types.h arch/x86/include/asm/spinlock.h \ + arch/x86/include/asm/qspinlock.h include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h include/asm-generic/qrwlock.h \ + include/linux/rwlock.h include/linux/spinlock_api_smp.h \ + include/linux/rwlock_api_smp.h include/linux/time64.h \ + include/uapi/linux/time.h include/linux/uidgid.h include/linux/highuid.h \ + include/linux/kmod.h include/linux/gfp.h include/linux/mmdebug.h \ + include/linux/mmzone.h include/linux/wait.h include/uapi/linux/wait.h \ + include/linux/numa.h include/linux/nodemask.h \ + include/linux/pageblock-flags.h include/linux/page-flags-layout.h \ + include/generated/bounds.h include/linux/memory_hotplug.h \ + include/linux/notifier.h include/linux/errno.h \ + include/uapi/linux/errno.h include/linux/mutex.h \ + include/linux/osq_lock.h include/linux/rwsem.h \ + arch/x86/include/asm/rwsem.h include/linux/srcu.h \ + include/linux/rcupdate.h include/linux/completion.h \ + include/linux/debugobjects.h include/linux/ktime.h \ + include/linux/jiffies.h include/linux/timex.h include/uapi/linux/timex.h \ + include/uapi/linux/param.h arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h arch/x86/include/asm/tsc.h \ + include/generated/timeconst.h include/linux/timekeeping.h \ + include/linux/rcutree.h include/linux/workqueue.h include/linux/timer.h \ + include/linux/sysctl.h include/linux/rbtree.h \ + include/uapi/linux/sysctl.h arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h arch/x86/include/asm/smp.h \ + arch/x86/include/asm/mpspec.h arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h include/uapi/linux/apm_bios.h \ + include/linux/edd.h include/uapi/linux/edd.h arch/x86/include/asm/e820.h \ + arch/x86/include/uapi/asm/e820.h include/linux/ioport.h \ + arch/x86/include/asm/ist.h arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h arch/x86/include/asm/apic.h \ + include/linux/pm.h arch/x86/include/asm/fixmap.h \ + arch/x86/include/asm/acpi.h include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h arch/x86/include/asm/mmu.h \ + arch/x86/include/asm/realmode.h arch/x86/include/asm/io.h \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h include/asm-generic/iomap.h \ + include/asm-generic/pci_iomap.h include/xen/xen.h \ + include/xen/interface/xen.h arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h include/xen/interface/features.h \ + arch/x86/include/uapi/asm/vsyscall.h include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h include/linux/topology.h \ + include/linux/smp.h include/linux/llist.h include/linux/percpu.h \ + include/linux/elf.h arch/x86/include/asm/elf.h \ + arch/x86/include/asm/user.h arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h arch/x86/include/asm/vdso.h \ + include/linux/mm_types.h include/linux/auxvec.h \ + include/uapi/linux/auxvec.h include/linux/uprobes.h \ + arch/x86/include/asm/uprobes.h include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h include/linux/kobject.h \ + include/linux/sysfs.h include/linux/kernfs.h include/linux/idr.h \ + include/linux/kobject_ns.h include/linux/kref.h \ + include/linux/moduleparam.h include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h include/asm-generic/module.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_stub.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/bdbm_drv.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/utime.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/usync.h \ + include/generated/uapi/linux/version.h include/linux/semaphore.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/debug.h diff --git a/devices/common/.dev_params.o.cmd b/devices/common/.dev_params.o.cmd index cabfe96..64b5fa1 100644 --- a/devices/common/.dev_params.o.cmd +++ b/devices/common/.dev_params.o.cmd @@ -1,8 +1,8 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/.dev_params.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../ftl -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(dev_params)" -D"KBUILD_MODNAME=KBUILD_STR(robusta_drv)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/.tmp_dev_params.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.c +cmd_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common/dev_params.o := gcc -Wp,-MD,/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common/.dev_params.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -DCC_HAVE_ASM_GOTO -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/3rd -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../ftl -I/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common -D HASH_BLOOM=20 -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D USE_PMU -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -DKBUILD_BASENAME='"dev_params"' -DKBUILD_MODNAME='"robusta_drv"' -c -o /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common/.tmp_dev_params.o /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common/dev_params.c -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.c +source_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common/dev_params.o := /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common/dev_params.c -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.o := \ +deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common/dev_params.o := \ $(wildcard include/config/device/type/ramdrive.h) \ $(wildcard include/config/device/type/ramdrive/intr.h) \ $(wildcard include/config/device/type/ramdrive/timing.h) \ @@ -12,9 +12,10 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo include/linux/module.h \ $(wildcard include/config/modules.h) \ $(wildcard include/config/sysfs.h) \ - $(wildcard include/config/module/sig.h) \ $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/livepatch.h) \ $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/module/sig.h) \ $(wildcard include/config/generic/bug.h) \ $(wildcard include/config/kallsyms.h) \ $(wildcard include/config/smp.h) \ @@ -22,7 +23,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo $(wildcard include/config/tracing.h) \ $(wildcard include/config/event/tracing.h) \ $(wildcard include/config/ftrace/mcount/record.h) \ - $(wildcard include/config/livepatch.h) \ $(wildcard include/config/module/unload.h) \ $(wildcard include/config/constructors.h) \ $(wildcard include/config/debug/set/module/ronx.h) \ @@ -65,6 +65,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo include/uapi/asm-generic/posix_types.h \ include/linux/poison.h \ $(wildcard include/config/illegal/pointer/value.h) \ + $(wildcard include/config/page/poisoning/zero.h) \ include/uapi/linux/const.h \ include/linux/kernel.h \ $(wildcard include/config/preempt/voluntary.h) \ @@ -78,6 +79,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo include/linux/export.h \ $(wildcard include/config/have/underscore/symbol/prefix.h) \ $(wildcard include/config/modversions.h) \ + $(wildcard include/config/trim/unused/ksyms.h) \ arch/x86/include/asm/linkage.h \ $(wildcard include/config/x86/64.h) \ $(wildcard include/config/x86/alignment/16.h) \ @@ -85,51 +87,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo arch/x86/include/asm/bitops.h \ $(wildcard include/config/x86/cmov.h) \ arch/x86/include/asm/alternative.h \ - $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ arch/x86/include/asm/rmwcc.h \ arch/x86/include/asm/barrier.h \ $(wildcard include/config/x86/ppro/fence.h) \ @@ -145,11 +103,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo arch/x86/include/asm/required-features.h \ $(wildcard include/config/x86/minimum/cpu/family.h) \ $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/pae.h) \ $(wildcard include/config/x86/cmpxchg64.h) \ $(wildcard include/config/x86/use/3dnow.h) \ $(wildcard include/config/matom.h) \ + $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/disabled-features.h \ $(wildcard include/config/x86/intel/mpx.h) \ + $(wildcard include/config/x86/intel/memory/protection/keys.h) \ include/asm-generic/bitops/const_hweight.h \ include/asm-generic/bitops/le.h \ arch/x86/include/uapi/asm/byteorder.h \ @@ -167,16 +128,22 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo include/linux/printk.h \ $(wildcard include/config/message/loglevel/default.h) \ $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk/nmi.h) \ $(wildcard include/config/printk.h) \ $(wildcard include/config/dynamic/debug.h) \ include/linux/init.h \ $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/debug/rodata.h) \ $(wildcard include/config/lto.h) \ include/linux/kern_levels.h \ include/linux/cache.h \ $(wildcard include/config/arch/has/cache/line/size.h) \ include/uapi/linux/kernel.h \ include/uapi/linux/sysinfo.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ include/linux/dynamic_debug.h \ include/linux/stat.h \ arch/x86/include/uapi/asm/stat.h \ @@ -200,6 +167,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo include/asm-generic/percpu.h \ $(wildcard include/config/have/setup/per/cpu/area.h) \ include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ $(wildcard include/config/base/small.h) \ include/linux/percpu-defs.h \ $(wildcard include/config/debug/force/weak/per/cpu.h) \ @@ -213,8 +181,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo $(wildcard include/config/bug.h) \ $(wildcard include/config/generic/bug/relative/pointers.h) \ arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/vm86.h) \ $(wildcard include/config/ia32/emulation.h) \ arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ arch/x86/include/asm/page_64.h \ $(wildcard include/config/debug/virtual.h) \ $(wildcard include/config/flatmem.h) \ @@ -223,14 +197,44 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo include/asm-generic/memory_model.h \ $(wildcard include/config/discontigmem.h) \ $(wildcard include/config/sparsemem/vmemmap.h) \ + $(wildcard include/config/sparsemem.h) \ + include/linux/pfn.h \ include/asm-generic/getorder.h \ arch/x86/include/asm/cpufeature.h \ $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ + $(wildcard include/config/x86/fast/feature/tests.h) \ arch/x86/include/asm/processor.h \ + $(wildcard include/config/cc/stackprotector.h) \ $(wildcard include/config/m486.h) \ + $(wildcard include/config/x86/debugctlmsr.h) \ $(wildcard include/config/xen.h) \ + arch/x86/include/asm/processor-flags.h \ + arch/x86/include/uapi/asm/processor-flags.h \ arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/ptrace.h \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ arch/x86/include/uapi/asm/sigcontext.h \ arch/x86/include/asm/current.h \ arch/x86/include/asm/msr.h \ @@ -239,8 +243,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo $(wildcard include/config/tdp/level/1.h) \ $(wildcard include/config/tdp/level/2.h) \ $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ arch/x86/include/uapi/asm/errno.h \ include/uapi/asm-generic/errno.h \ include/uapi/asm-generic/errno-base.h \ @@ -260,7 +262,21 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo arch/x86/include/uapi/asm/ioctl.h \ include/asm-generic/ioctl.h \ include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/linux/tracepoint-defs.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + include/asm-generic/atomic-long.h \ + include/linux/static_key.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/frame.h \ + $(wildcard include/config/frame/pointer.h) \ arch/x86/include/asm/special_insns.h \ arch/x86/include/asm/fpu/types.h \ include/linux/personality.h \ @@ -275,13 +291,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo $(wildcard include/config/irqsoff/tracer.h) \ $(wildcard include/config/trace/irqflags/support.h) \ arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ include/linux/bottom_half.h \ include/linux/spinlock_types.h \ include/linux/lockdep.h \ @@ -289,9 +298,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo $(wildcard include/config/lock/stat.h) \ include/linux/rwlock_types.h \ arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/qspinlock.h \ include/asm-generic/qspinlock.h \ arch/x86/include/asm/qrwlock.h \ @@ -340,21 +346,23 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo $(wildcard include/config/zone/dma32.h) \ $(wildcard include/config/zone/device.h) \ $(wildcard include/config/numa.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/compaction.h) \ $(wildcard include/config/cma.h) \ include/linux/mmdebug.h \ $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/vm/pgflags.h) \ include/linux/mmzone.h \ $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ $(wildcard include/config/memcg.h) \ $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ $(wildcard include/config/flat/node/mem/map.h) \ $(wildcard include/config/page/extension.h) \ $(wildcard include/config/no/bootmem.h) \ $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/have/memory/present.h) \ $(wildcard include/config/have/memoryless/nodes.h) \ $(wildcard include/config/need/node/memmap/size.h) \ @@ -428,6 +436,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo include/linux/workqueue.h \ $(wildcard include/config/debug/objects/work.h) \ $(wildcard include/config/freezer.h) \ + $(wildcard include/config/wq/watchdog.h) \ include/linux/timer.h \ $(wildcard include/config/timer/stats.h) \ $(wildcard include/config/debug/objects/timers.h) \ @@ -439,6 +448,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo arch/x86/include/asm/mmzone.h \ arch/x86/include/asm/mmzone_64.h \ arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/local/apic.h) \ $(wildcard include/config/x86/io/apic.h) \ $(wildcard include/config/x86/32/smp.h) \ $(wildcard include/config/debug/nmi/selftest.h) \ @@ -475,7 +485,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo $(wildcard include/config/pm/clk.h) \ $(wildcard include/config/pm/generic/domains.h) \ arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ $(wildcard include/config/provide/ohci1394/dma/init.h) \ $(wildcard include/config/pci/mmconfig.h) \ $(wildcard include/config/x86/intel/mid.h) \ @@ -514,12 +523,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo arch/x86/include/asm/xen/hypervisor.h \ include/xen/features.h \ include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ arch/x86/include/uapi/asm/vsyscall.h \ include/asm-generic/fixmap.h \ arch/x86/include/asm/idle.h \ @@ -537,7 +540,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo include/linux/percpu.h \ $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ include/linux/elf.h \ arch/x86/include/asm/elf.h \ $(wildcard include/config/x86/x32/abi.h) \ @@ -551,7 +553,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ $(wildcard include/config/have/cmpxchg/double.h) \ $(wildcard include/config/have/aligned/struct/page.h) \ - $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/userfaultfd.h) \ $(wildcard include/config/aio.h) \ $(wildcard include/config/mmu/notifier.h) \ @@ -605,24 +606,165 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/commo include/linux/slab.h \ $(wildcard include/config/debug/slab.h) \ $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slob.h) \ $(wildcard include/config/slab.h) \ $(wildcard include/config/slub.h) \ - $(wildcard include/config/slob.h) \ include/linux/kmemleak.h \ $(wildcard include/config/debug/kmemleak.h) \ include/linux/kasan.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/bdbm_drv.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/utime.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/usync.h \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/ubsan.h) \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/kcov.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + $(wildcard include/config/have/exit/thread.h) \ + $(wildcard include/config/cpu/freq.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + include/linux/capability.h \ + include/uapi/linux/capability.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/pid.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rculist.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/kcov.h \ + include/uapi/linux/kcov.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + $(wildcard include/config/security.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + $(wildcard include/config/sock/cgroup/data.h) \ + include/uapi/linux/limits.h \ + include/linux/percpu-refcount.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/bdbm_drv.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/utime.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/usync.h \ include/generated/uapi/linux/version.h \ include/linux/semaphore.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../common/utils/umemory.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../include/debug.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../common/utils/umemory.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../include/debug.h \ $(wildcard include/config/enable/msg.h) \ $(wildcard include/config/enable/debug.h) \ -/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.o) +/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common/dev_params.o: $(deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common/dev_params.o) -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/frontend/kernel/../../devices/common/dev_params.o): +$(deps_/home/minseong/github/bdbm_drv/bdbm_drv/frontend/kernel/../../devices/common/dev_params.o): diff --git a/devices/common/.dev_stub.o.cmd b/devices/common/.dev_stub.o.cmd index 639373a..34bce3c 100644 --- a/devices/common/.dev_stub.o.cmd +++ b/devices/common/.dev_stub.o.cmd @@ -1,8 +1,8 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/.dev_stub.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(dev_stub)" -D"KBUILD_MODNAME=KBUILD_STR(risa_dev_ramdrive_timing)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/.tmp_dev_stub.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.c +cmd_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_stub.o := gcc -Wp,-MD,/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/.dev_stub.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -DCC_HAVE_ASM_GOTO -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/3rd -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -DKBUILD_BASENAME='"dev_stub"' -DKBUILD_MODNAME='"risa_dev_ramdrive_timing"' -c -o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/.tmp_dev_stub.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_stub.c -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.c +source_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_stub.o := /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_stub.c -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.o := \ +deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_stub.o := \ include/linux/kernel.h \ $(wildcard include/config/lbdaf.h) \ $(wildcard include/config/preempt/voluntary.h) \ @@ -48,6 +48,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/have/underscore/symbol/prefix.h) \ $(wildcard include/config/modules.h) \ $(wildcard include/config/modversions.h) \ + $(wildcard include/config/trim/unused/ksyms.h) \ $(wildcard include/config/unused/symbols.h) \ arch/x86/include/asm/linkage.h \ $(wildcard include/config/x86/64.h) \ @@ -62,52 +63,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/x86/cmov.h) \ arch/x86/include/asm/alternative.h \ $(wildcard include/config/smp.h) \ - $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - include/uapi/linux/const.h \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ arch/x86/include/asm/rmwcc.h \ arch/x86/include/asm/barrier.h \ $(wildcard include/config/x86/ppro/fence.h) \ @@ -123,11 +79,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d arch/x86/include/asm/required-features.h \ $(wildcard include/config/x86/minimum/cpu/family.h) \ $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/pae.h) \ $(wildcard include/config/x86/cmpxchg64.h) \ $(wildcard include/config/x86/use/3dnow.h) \ $(wildcard include/config/matom.h) \ + $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/disabled-features.h \ $(wildcard include/config/x86/intel/mpx.h) \ + $(wildcard include/config/x86/intel/memory/protection/keys.h) \ include/asm-generic/bitops/const_hweight.h \ include/asm-generic/bitops/le.h \ arch/x86/include/uapi/asm/byteorder.h \ @@ -145,26 +104,32 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/linux/printk.h \ $(wildcard include/config/message/loglevel/default.h) \ $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk/nmi.h) \ $(wildcard include/config/printk.h) \ $(wildcard include/config/dynamic/debug.h) \ include/linux/init.h \ $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/debug/rodata.h) \ $(wildcard include/config/lto.h) \ include/linux/kern_levels.h \ include/linux/cache.h \ $(wildcard include/config/arch/has/cache/line/size.h) \ include/uapi/linux/kernel.h \ include/uapi/linux/sysinfo.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ include/linux/dynamic_debug.h \ include/linux/module.h \ $(wildcard include/config/sysfs.h) \ - $(wildcard include/config/module/sig.h) \ $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/sig.h) \ $(wildcard include/config/generic/bug.h) \ $(wildcard include/config/kallsyms.h) \ $(wildcard include/config/tracepoints.h) \ $(wildcard include/config/event/tracing.h) \ - $(wildcard include/config/livepatch.h) \ $(wildcard include/config/module/unload.h) \ $(wildcard include/config/constructors.h) \ $(wildcard include/config/debug/set/module/ronx.h) \ @@ -172,6 +137,8 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/debug/list.h) \ include/linux/poison.h \ $(wildcard include/config/illegal/pointer/value.h) \ + $(wildcard include/config/page/poisoning/zero.h) \ + include/uapi/linux/const.h \ include/linux/stat.h \ arch/x86/include/uapi/asm/stat.h \ include/uapi/linux/stat.h \ @@ -194,6 +161,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/asm-generic/percpu.h \ $(wildcard include/config/have/setup/per/cpu/area.h) \ include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ $(wildcard include/config/base/small.h) \ include/linux/percpu-defs.h \ $(wildcard include/config/debug/force/weak/per/cpu.h) \ @@ -207,8 +175,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/bug.h) \ $(wildcard include/config/generic/bug/relative/pointers.h) \ arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/vm86.h) \ $(wildcard include/config/ia32/emulation.h) \ arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ arch/x86/include/asm/page_64.h \ $(wildcard include/config/debug/virtual.h) \ $(wildcard include/config/flatmem.h) \ @@ -217,14 +191,44 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/asm-generic/memory_model.h \ $(wildcard include/config/discontigmem.h) \ $(wildcard include/config/sparsemem/vmemmap.h) \ + $(wildcard include/config/sparsemem.h) \ + include/linux/pfn.h \ include/asm-generic/getorder.h \ arch/x86/include/asm/cpufeature.h \ $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ + $(wildcard include/config/x86/fast/feature/tests.h) \ arch/x86/include/asm/processor.h \ + $(wildcard include/config/cc/stackprotector.h) \ $(wildcard include/config/m486.h) \ + $(wildcard include/config/x86/debugctlmsr.h) \ $(wildcard include/config/xen.h) \ + arch/x86/include/asm/processor-flags.h \ + arch/x86/include/uapi/asm/processor-flags.h \ arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/ptrace.h \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ arch/x86/include/uapi/asm/sigcontext.h \ arch/x86/include/asm/current.h \ arch/x86/include/asm/msr.h \ @@ -233,8 +237,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/tdp/level/1.h) \ $(wildcard include/config/tdp/level/2.h) \ $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ arch/x86/include/uapi/asm/errno.h \ include/uapi/asm-generic/errno.h \ include/uapi/asm-generic/errno-base.h \ @@ -254,7 +256,21 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d arch/x86/include/uapi/asm/ioctl.h \ include/asm-generic/ioctl.h \ include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/linux/tracepoint-defs.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + include/asm-generic/atomic-long.h \ + include/linux/static_key.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/frame.h \ + $(wildcard include/config/frame/pointer.h) \ arch/x86/include/asm/special_insns.h \ arch/x86/include/asm/fpu/types.h \ include/linux/personality.h \ @@ -269,13 +285,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/irqsoff/tracer.h) \ $(wildcard include/config/trace/irqflags/support.h) \ arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ include/linux/bottom_half.h \ include/linux/spinlock_types.h \ include/linux/lockdep.h \ @@ -283,9 +292,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/lock/stat.h) \ include/linux/rwlock_types.h \ arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/qspinlock.h \ include/asm-generic/qspinlock.h \ arch/x86/include/asm/qrwlock.h \ @@ -334,21 +340,23 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/zone/dma32.h) \ $(wildcard include/config/zone/device.h) \ $(wildcard include/config/numa.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/compaction.h) \ $(wildcard include/config/cma.h) \ include/linux/mmdebug.h \ $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/vm/pgflags.h) \ include/linux/mmzone.h \ $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ $(wildcard include/config/memcg.h) \ $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ $(wildcard include/config/flat/node/mem/map.h) \ $(wildcard include/config/page/extension.h) \ $(wildcard include/config/no/bootmem.h) \ $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/have/memory/present.h) \ $(wildcard include/config/have/memoryless/nodes.h) \ $(wildcard include/config/need/node/memmap/size.h) \ @@ -422,6 +430,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/linux/workqueue.h \ $(wildcard include/config/debug/objects/work.h) \ $(wildcard include/config/freezer.h) \ + $(wildcard include/config/wq/watchdog.h) \ include/linux/timer.h \ $(wildcard include/config/timer/stats.h) \ $(wildcard include/config/debug/objects/timers.h) \ @@ -433,6 +442,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d arch/x86/include/asm/mmzone.h \ arch/x86/include/asm/mmzone_64.h \ arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/local/apic.h) \ $(wildcard include/config/x86/io/apic.h) \ $(wildcard include/config/x86/32/smp.h) \ $(wildcard include/config/debug/nmi/selftest.h) \ @@ -469,7 +479,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/pm/clk.h) \ $(wildcard include/config/pm/generic/domains.h) \ arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ $(wildcard include/config/provide/ohci1394/dma/init.h) \ $(wildcard include/config/pci/mmconfig.h) \ $(wildcard include/config/x86/intel/mid.h) \ @@ -508,12 +517,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d arch/x86/include/asm/xen/hypervisor.h \ include/xen/features.h \ include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ arch/x86/include/uapi/asm/vsyscall.h \ include/asm-generic/fixmap.h \ arch/x86/include/asm/idle.h \ @@ -531,7 +534,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/linux/percpu.h \ $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ include/linux/elf.h \ arch/x86/include/asm/elf.h \ $(wildcard include/config/x86/x32/abi.h) \ @@ -545,7 +547,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ $(wildcard include/config/have/cmpxchg/double.h) \ $(wildcard include/config/have/aligned/struct/page.h) \ - $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/userfaultfd.h) \ $(wildcard include/config/aio.h) \ $(wildcard include/config/mmu/notifier.h) \ @@ -602,11 +603,12 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/cgroup/writeback.h) \ $(wildcard include/config/ima.h) \ $(wildcard include/config/fsnotify.h) \ + $(wildcard include/config/fs/encryption.h) \ $(wildcard include/config/epoll.h) \ $(wildcard include/config/file/locking.h) \ $(wildcard include/config/quota.h) \ - $(wildcard include/config/blk/dev/loop.h) \ $(wildcard include/config/fs/dax.h) \ + $(wildcard include/config/mandatory/file/locking.h) \ $(wildcard include/config/block.h) \ $(wildcard include/config/migration.h) \ include/linux/kdev_t.h \ @@ -618,11 +620,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/linux/bit_spinlock.h \ include/linux/lockref.h \ $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ + include/linux/stringhash.h \ + $(wildcard include/config/dcache/word/access.h) \ include/linux/path.h \ include/linux/list_lru.h \ - $(wildcard include/config/memcg/kmem.h) \ + $(wildcard include/config/slob.h) \ include/linux/shrinker.h \ include/linux/radix-tree.h \ + $(wildcard include/config/radix/tree/multiorder.h) \ include/linux/pid.h \ include/linux/capability.h \ include/uapi/linux/capability.h \ @@ -634,6 +639,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/linux/blk_types.h \ $(wildcard include/config/blk/cgroup.h) \ $(wildcard include/config/blk/dev/integrity.h) \ + include/linux/delayed_call.h \ include/uapi/linux/fs.h \ include/uapi/linux/limits.h \ include/linux/quota.h \ @@ -653,6 +659,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d arch/x86/include/asm/uaccess.h \ $(wildcard include/config/x86/intel/usercopy.h) \ $(wildcard include/config/debug/strict/user/copy/checks.h) \ + include/linux/kasan-checks.h \ arch/x86/include/asm/smap.h \ $(wildcard include/config/x86/smap.h) \ arch/x86/include/asm/uaccess_64.h \ @@ -674,24 +681,38 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/linux/pinctrl/devinfo.h \ include/linux/pinctrl/consumer.h \ include/linux/seq_file.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + $(wildcard include/config/keys.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ include/linux/pinctrl/pinctrl-state.h \ include/linux/ratelimit.h \ arch/x86/include/asm/device.h \ $(wildcard include/config/x86/dev/dma/ops.h) \ $(wildcard include/config/intel/iommu.h) \ $(wildcard include/config/amd/iommu.h) \ + $(wildcard include/config/pci/domains.h) \ include/linux/pm_wakeup.h \ include/linux/mm.h \ + $(wildcard include/config/have/arch/mmap/rnd/bits.h) \ + $(wildcard include/config/have/arch/mmap/rnd/compat/bits.h) \ + $(wildcard include/config/arch/uses/high/vma/flags.h) \ $(wildcard include/config/ppc.h) \ $(wildcard include/config/parisc.h) \ $(wildcard include/config/metag.h) \ $(wildcard include/config/stack/growsup.h) \ $(wildcard include/config/shmem.h) \ $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/page/poisoning.h) \ $(wildcard include/config/debug/pagealloc.h) \ $(wildcard include/config/hugetlbfs.h) \ include/linux/debug_locks.h \ $(wildcard include/config/debug/locking/api/selftests.h) \ + include/linux/percpu-refcount.h \ include/linux/resource.h \ include/uapi/linux/resource.h \ arch/x86/include/uapi/asm/resource.h \ @@ -703,17 +724,19 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/linux/stacktrace.h \ $(wildcard include/config/stacktrace.h) \ $(wildcard include/config/user/stacktrace/support.h) \ + include/linux/page_ref.h \ + $(wildcard include/config/debug/page/ref.h) \ + include/linux/page-flags.h \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + $(wildcard include/config/ksm.h) \ arch/x86/include/asm/pgtable.h \ $(wildcard include/config/debug/wx.h) \ $(wildcard include/config/have/arch/soft/dirty.h) \ arch/x86/include/asm/pgtable_64.h \ include/asm-generic/pgtable.h \ $(wildcard include/config/have/arch/huge/vmap.h) \ - include/linux/page-flags.h \ - $(wildcard include/config/arch/uses/pg/uncached.h) \ - $(wildcard include/config/memory/failure.h) \ - $(wildcard include/config/swap.h) \ - $(wildcard include/config/ksm.h) \ include/linux/huge_mm.h \ include/linux/vmstat.h \ $(wildcard include/config/vm/event/counters.h) \ @@ -722,16 +745,16 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d include/linux/vm_event_item.h \ $(wildcard include/config/memory/balloon.h) \ $(wildcard include/config/balloon/compaction.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/bdbm_drv.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/utime.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/usync.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/bdbm_drv.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/utime.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/usync.h \ include/generated/uapi/linux/version.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/debug.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/debug.h \ $(wildcard include/config/enable/msg.h) \ $(wildcard include/config/enable/debug.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/uthread.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/uthread.h \ include/linux/delay.h \ arch/x86/include/asm/delay.h \ include/asm-generic/delay.h \ @@ -749,7 +772,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/inotify/user.h) \ $(wildcard include/config/fanotify.h) \ $(wildcard include/config/posix/mqueue.h) \ - $(wildcard include/config/keys.h) \ $(wildcard include/config/perf/events.h) \ $(wildcard include/config/bpf/syscall.h) \ $(wildcard include/config/sched/info.h) \ @@ -765,6 +787,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/sysvipc.h) \ $(wildcard include/config/auditsyscall.h) \ $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/ubsan.h) \ $(wildcard include/config/task/xacct.h) \ $(wildcard include/config/cpusets.h) \ $(wildcard include/config/cgroups.h) \ @@ -773,11 +796,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/fault/injection.h) \ $(wildcard include/config/latencytop.h) \ $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/kcov.h) \ $(wildcard include/config/bcache.h) \ $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ $(wildcard include/config/have/unstable/sched/clock.h) \ $(wildcard include/config/irq/time/accounting.h) \ $(wildcard include/config/have/copy/thread/tls.h) \ + $(wildcard include/config/have/exit/thread.h) \ + $(wildcard include/config/cpu/freq.h) \ include/uapi/linux/sched.h \ include/linux/sched/prio.h \ include/linux/plist.h \ @@ -808,7 +834,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d arch/x86/include/uapi/asm/siginfo.h \ include/asm-generic/siginfo.h \ include/uapi/asm-generic/siginfo.h \ - include/linux/proportions.h \ include/linux/seccomp.h \ $(wildcard include/config/seccomp.h) \ $(wildcard include/config/have/arch/seccomp/filter.h) \ @@ -831,19 +856,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/time/low/res.h) \ $(wildcard include/config/timerfd.h) \ include/linux/timerqueue.h \ + include/linux/kcov.h \ + include/uapi/linux/kcov.h \ include/linux/task_io_accounting.h \ $(wildcard include/config/task/io/accounting.h) \ include/linux/latencytop.h \ - include/linux/cred.h \ - $(wildcard include/config/debug/credentials.h) \ - include/linux/key.h \ - include/linux/assoc_array.h \ - $(wildcard include/config/associative/array.h) \ - include/linux/selinux.h \ - $(wildcard include/config/security/selinux.h) \ include/uapi/linux/magic.h \ include/linux/cgroup-defs.h \ - include/linux/percpu-refcount.h \ + $(wildcard include/config/sock/cgroup/data.h) \ include/linux/cgroup_subsys.h \ $(wildcard include/config/cgroup/cpuacct.h) \ $(wildcard include/config/cgroup/device.h) \ @@ -854,10 +874,10 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/d $(wildcard include/config/cgroup/hugetlb.h) \ $(wildcard include/config/cgroup/pids.h) \ $(wildcard include/config/cgroup/debug.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/umemory.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_stub.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/umemory.h \ -/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.o) +/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_stub.o: $(deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_stub.o) -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_stub.o): +$(deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_stub.o): diff --git a/devices/common/dev_main.o b/devices/common/dev_main.o new file mode 100644 index 0000000000000000000000000000000000000000..419899ba5fa95e38d840f954594fb6c5e6af2ffc GIT binary patch literal 70984 zcmd4)d3==B^#_hWPZGjF5(t4nfB?fDkZf!Q6-a;p5fUPsV70>}nIt1gW|)~kaK)vH zRxPz^-P+<(rCP16OVwJXTB~iXQnjtM)ncnHwVPFIt=js1pXE*_M|}N$ukY*g$9G=v z%sKCSpSzrU?z!il`^=Mb>({Q#@_o;Jd~b=@&pFidI*0V5wG7vK72YiG2+^BXKQ)Lk zTvlK5#%WKqR}7zYAtRdpxsQRTidSE-n9<(Z)dyE!!t`lRJiL@{d+JA&vihl~=!@@q zkZMHo3dTPzdH5uxoBCWesle)|4&rX_iA@i0{X{8f5!X|F@U$m39hEul39qs<)*Y$r zj`k!Yv7U~~j%cd0x23YBt))BEme|=(v_*DCTO-NJM7X;x5#1RHrJ}g0qq3r+vNhJ- z9qXw?j!<_v+EdX=E%N748Rfgei5_G-F4)o*4Mvl}rcG3#dUo`WNVYrF5lMxjJ?)<3 zBYn|SnxWPn{r3OY=-VqjFNg0Au%h>CyD2g&Fqn|69RA7Cj~LLNB}MOa_S@Ni`1boj2FZ9!&)g?OizE%N|R` z!EpUf>O$!2$q1-y1xW=m6+>-rzE#3qjBI2G1h8q^KqC4W3P8u&AZa z8+;6rWyn$O4K63T3Urk>xPs`KqQoL^a3ztoMTr`3a21iOi^90En#ks&R*-Xv+)~sA zavqV}ijq-p@O&aWi`qagATrLf7;@By{{;V97~D3 zwkU}lwM6cRU;`yR)bFqt7)yHP6}5N)R^1#*ES-(%#^nSiyi3VKPb4~PBmsd*bX!iK zBqx*28I?0C>C*g>IiuR*U5?Efkuxgp7{5^O3vw|z`8lJ)JCRjbKQCugKQk1?q*I3E zjOs`;fdPdCU?YkHfia8G_R%z|qp6FcB!R%_X24^pUruiV^M0T1<@}6ZF5q5{iY76o z7jpBmCul{&4sxAV*7Z|Z?WZv4r-<%YDl}K(WGg5hQdhJNsU(A?~yAMEbWGxUR7!3+-!{pb~Z z7sWf;yrCcUWTb!eG?;OLp~L)-L5z?0BEvAhm2;F*Rp5?DmZ|;}81C`$Ze*G2Z^_6q z)z3qUv?TBNRiL>gc_$o8B}hU^UhReHggTO-W?DwJK}IXDo<>VXC~tK$=t6h%*89^p zf2JvIYw}JdT5mXwXuY8@Z`;f18^XT>skODd3p(HxJ_{r_KzSw*NvK%!+`t>4Cj#@T z{Jh97F;>!C-g-xfxcGgy*YU>Swder4)g(`KTq^MLSG&N{h-iapfV2%{Y7f?(?VZK^dX_I z{v7hZB=mLHgFY$+<*@$=FyP2w0r`}2%rlx zSKw>#-(W>@0~0811*OpifWV6g-bOHAcmm`G+5rS}1I?6pHYM^!6E6TT8AV{x%-`wL z@J%5mzt7)HQ*(SWUghQQ_NhB1V7&Y@m=2DQB)$A|e6n6;;r&#;|QP&3JKzCDkzY{ zL9+3$$@}hQpk?mBor<2>t}og+l+3=n|oSL=!hC^ixEa3H=kItHdJL`gzap z1S~1fk#$r05KT|5;d#Qfh8GCe8h(A_h;$9VAzEvAoQf0+V$o8bSf0o^I|+eF8OeuwBjq2Hx4_XzzjqW22@9?|=R{?A6_ zzgFlEQlR$>{n0+q2Za9bJ)rLq`s1I1esBs6OkS4%CYXc5wlD_$ya6fU8mNL4OxUuvWQ8{i)#Y$zpvgIOtyn?vQei z`=c=iFDdt=zj_WF2<4vQ+E-`GeLwcE#C^@m{gek~i*nESUqRY7<$mpx&FfU|6@PLy zrn7Rt^A8|rpK^cW8ulpn7IS-*dxv#kpK>4i6actNx&Qj_!_;4^oR>v@^M2*Bvq-BB zD3_b{4QTm2*_ah%2=mBv@mv9LGw8gZ5x^IoLF61bujQ{uVmloiHk@d-7{i9=qIfKJ zF9696+>0x(4P@6`!T$!BM^iv%B~i#qJBr*uKA1c*YLZ6v0WBl6iBP`K1_mg79~K z&TyAEJV=HECWZe3yFP!EI8dQh0hVIHCL38oOvrYz6n zC?3r!j^br|I1hbnziJV^+UisA|t)wg~c=9phh4_?G=}iY(Texo<($k zG8{8;G(c{_9J(DewV<5n9BDxX(P$;Lppxi(w6J(aHEtYDwT-4ayyB|j#m#_bg7%7+ z^pi`8l(uaH#cj(IpU%rFo_qwDNNLKubgM{dD$!XYrD;S{ThQ?7MCXp7M$3>C&!rZr zOy&`-GFeCk%TN_BdLQ)uNl5gHkEiDB_sgjHhkR)lC3Cwb2_G1v{8Aary~S%@1SHK| zOO)|BnVQujr#$(4N*nA{(Ucc~zrF&`5ie@ZT$bm+JDeg!vccsm+o`^nji< zi!#loi&t3e`wsy-hM3|k|9I$?(Aho}D0Gfb!z1({pV}dGF5fF9)9!H&mHhE=ubg(2 zwS~pQ{BdK|xE7E1c`G-CE1Kq~@SP*f@yrYoW)(BJ!gTu7UYzoA3~>C=OHo=S6+pp3 zC2|}Qa73Xaf{v(l#2!a@zTWO-IU>gqfsD9g{)*dCC;s8XS6>G2NdC!%*i{zw)hzV# zw?rwK2P}Up(Z0~95S=CTXNb-gI`TEp5`)X{AYA5EekajGBo7}r3>BJ>8S;hhp?eF3 zj!_dv2^|lD-X`>pD$t^z`ANzzyOsPD(f3K7okTw<^e&(0hn}N$B&5ep%=XiTFK07&>KgOIg{O@^^GjuU-;AsUJ&aRD#`J3-Tb=E<`?3yd!7G~m3J=8PV-A25%{=wfoJprv#f9lRKLan9(v z$MDT7&*)_Yx%+BqyEW!cLiCQclv7F_Q~4ffE_F;5+XFNH3^JSlI=7I`KhOfabTu@2ja$04D9)TS#s^v^2V`s))rm7VZ1= zh+yn7RM7CixbQxgS4fDGq_H0;OGHLGEd`^^=3(F@oxhoA(hfjE^V8n>|~}>m|e`og*lU%K4ETSW{)tp zGqYEi1I+9b<_^CZ4ZT(viIwaZ=DTbc4hZwS|4lUK9${YK0v;6RMP?2n6*BmxPm1qJ z?4tA~|2qUL_Z!aGH%M~6%Eo1na)s2n0MLpW1+|aDYQSqK!*lp5=j7j_E zX%Gi1v0Mk7kcx)Zmj3H{WD+HN?`vqP(*Gt}Jd)D)i58Ef^h3%H_md3D9UxixvZSzh z>HppYR1|NGd!-*!NVKdl># z>p`#BXVPnJRSs>bn;q|_$hy*G7HPG#AeFUhI_j3O>&-eD%)uGL?aZQ%A8r!v^I5cD zysq5kSu~lBD0c;OZz=Z$=H6HCi(HDgPD;5li&mh3a$jODsN7Xq6z8f@?i#+YR=F={ zk#trlcO9p#R_=OETdUj+TxPR!H*%Ss%I)Vq#Fe{++u5hwZOrXa?mL`wuX6WhabQ%r z`#9(Rbv_k|@Tz4wIX>%cV4oaQ@z@GW*JO>u zILH94&En%RVH&yP0Wo%kqe?%UwJ@DA#5CGKWz(Rt!&8gxCCv*OSZ-8~mqUejI9~nt zoC(AB0OFZ2VWdQg*l8%6IF~}ioG@{Ie+Xsb0@4SWA`=&~10i{8XcS9|V#yue#N(-& zpiGalNu@;yIB}*)6Z)e)lP31xJZTa+S#tBF$#k>qq$kawLbae^aO|Ew$;VurzHJUAtD7@r z%bGg<4WueP<8qK9^rTpvr+`z%o;M*LZCk-Aob@|{j*T@wq+^7w%Ct9|DQ&$o#+rO!+ zh?ec&)YVjxcB+ABZTyK;WWKmyV?c5PR9^#A8&{_*Y|5x`T}Fk?lm#9>L0en_>i*SE z8~vm!VA>cu-IW$kE1{U0v|!rUmyt!pH*MTMK})P;+W5dMC%$Q=6G4};$fix8d#i+= zNM+VYH2X!|nok!f42do`Ky~N+gAQi|B940sm1?JNQ0QEaJ@Na^t9)|OqVAp{T z1Hh_RGHuo-&{FSgYJ<|pWb|duDacaj71GU!toGl#@QdktkIlHZCga{kM7w8Orqw-= zzF}F$4a@lkX;ENW<8$duO`OR!bqj6Tq^Vmo?mmU@7Mvfk(dq)zTE?btXkAWylahkd zx;Lj2dN@JujuEW`7^hNo0Cx~wA~!!ht?!BS&AX?esoJD7NKbT>&)f!l3s0(PXOWQN zQo-5O|2;yVL*3jf^tsft{aF8_-n2c`=mSz&;j}*-NmuszML|m z&nTj)E~1%HO!i(xGh_6zz-uJWn8kD8tOz}p?EPwIuBc4bx6YaQl!^1qETDUpmIuj- z!d)qECO^C)GvR4p)jNT3&4~JQ_R_d!i@1hrdx$6VMd;EDI4csfqSYXrIh{L8et|fbAm9F{JW7& z+{CiU{&QefOUhKA6s1|1>HZr?*&@tLPT3|*8Mm!dm|6aZ$QBo7HmCFnbBte%$le}d z%Kh13_6k$sF9owtm`Zl!uN9`+|147W3$xHqfjJ<|vHqoC?h&SjnFobAj?ah=3UfR& zPYWZbM~8%2>fee2UJ|B`vmF*@h5ryzjtEolKL_S5VH%l{)8Miu|7E0jKHMJ2e;p_3 z`F~k6%STUx%TDs&K+Y08gGHV#jVhZ`XHQ8PIE9ATJ$aG>T}TI-xq(Y4o#x#EO6Loe zgA|&Gxq+(y=lz({2+n7U?nIKDZr(>3X!PV}DgkM~Ae076Zd3Fx0Jt$USdyZZQKXhl z292CMTpdp!wT(v5JxWtWAl*fSC#SM}G)qtWpyGOdmSo zl~=lomePRW)kKR~nKh3OAqAgLw3wAy3-_UzGQp3fnJi{yRt+!7g7cClW@Xm#HzEIO z!B3!anx(H)jM!vyKhacbULIv;*#Ni(G7XRx*mzKbNEZ-ByS~cht|^H5|4!$Q^CLT&dxuZCRH6x=_D3bUNi68)$4ov= zNf^(O<^&5a@|VnW&AFIqcnGuwX#%Vp3$_mQBvL*-K*DyzT+nFB&$@fDyRqC!gOJ?7 z<7lsn=UM1{(XA|8l__;)je==te z(c1(+kLXUJ&nG%A^aVus34I~adxZWR(R+oynCN{%?&k&4Zo;$<Rqb!9m29WK?R7fFi^l}0~ zTk+rRn#L7YX89Kb7|+9%?Q?PCyCOYaWezg|Z@yPK*k8aE|L1mO9X*mRRLW?&)0?}E z+Vt*6pr!Huq8X#~dnC+4JW%3Q{+s4w$(YNKuM84E!}562G~@PTS=#wNb$bi7l;)yW zS>RKJxdCeSxT?ya-wyjK6Jc`Zgqz}@i3FW+Q~k@p6iT*f{>@-YgqiL?3MMGbOlHcw z3Dm+~;Q4exWn>cY(*Q7eRFH$uBY+BHAfFTf*{&q?!8A$~P?AM%-~bru$1Ij zbNpe)xgL~f_MjrO2bGyUsPd=amJ)9Q4Gob}zt%*>Nga#)LsUmqsXpu zM{Q;ub^d;;Lj<$Te*lb1X$7aKlql1H+Nq*E$}MO>dVd=LY12x7KIm~Zl?{IR@vh(S zy-0Ra*_zBYt<7vxqhE(xv`tOi3~kdo&Q>M`G;?dKWEkm=0ZpM=r70)*Pg7HxD>wST zOE+axW>Yr%|3QK((aGE{RiZ6ip*CeJw@aIHiik&=@)>E0FsJ$>Prw=}%xTQj3KR0n zk+ND^{7$;XL_uk2vB(Wj6In5-5b04f2@Q`#QVLlxDnwGqpdw`~fKtj-8TL0I*SLL^ z=lSy%J4v6P+1Cp)#eQL?*gxm5$1U2|i~OBnw67QYH-J&G@AV%BqpR8_{)=F=ub29N z2cvzxoaDoYJUotPD#1OKNd_}m@l({`-HjHKM5&& zgt?AW_KM8bqW*r#W$g{=exjLPPDJ_UhJhnnE6UiZ? zAU2@6fty@1Nv1y;Hy)%EvU4P+0Vyw23f)h_kQ6QLU3U*jWE6jbo)a@7Mer65`^8hpV2=iTL9u($5W)2GT5Hn8;^Dr}qg!vvb zFA4JqGlzxwJ~Kyzd6b#Agn5h^3GY-M7~Kc7z9%xNeF zXcJxOGg`hp|HcPuJ?{iAq=_>6o4myv0J%?C3IE2zI(TQTwZboT=@XR5LTW9g;#)p1 zuEh61ZZWmkeRvH463FBF3%t@d#Cv>(`!KbGYx(OtlZu* z@OA|Y(Ve4aZylJOYda2^xwhe2X6w3vx6cO4Ion*$*_t!5dtlCuF6R|4=OoS9e#^j| z=eV2?x}15Mv*Tw2a~`0aB>q=Gtn^lql&UJ82eX>U>K||{nA`U;=MdP>%EQnNem9*j zKdaOMyi>0R$KC!|%A8v?83-3Y?|9N_Cg%?&GUq1W^IF^ugQe!7-Trz&Ib@U1v1vVi z4v;;8D16IScFQ@p~ax_LHm9EGS9-}0_V@lZn-3;`Y9@ZFv386Z3e10w%E@#>iIsp^% zuXLWpC?YVk!eOxn3qORm`A_IDPLXQhR*`e`7>Iw4}@%%&XsZ& zPdwLEzohWxF?z?+vUKT7XZMqH`boAt+>)~S6kQPVSjxb?E$i^#MZvj&t#Cp(aTY&x zFXR~d0f>;}`pM;gLFhQ=*p*oQ@n4!b7)9KU3b@eHx||tE;Tvn0ryJv!(He0gs`mU@ zWVZWl3}^MjWL+gaeD?smCh0Bx=`BY~Z|zTS9hkm`Dy2`=^=YzhRX@4f^GEp8hmFk3 z9yWg1rZFS@LWmeYAj`{J0tiRu!$G3czTYs?$BY^@*=rbC2_%;i8h{L*0R(Q#XdJH} zmv=m4L$rVZUZ?;(;PAX+f96;!CVvp$R4~%d9+sC!$%GCoNS9HADu$2r`_l@Gy_sXF zq7g(OUVyw>F6ABBe`{V|L0*0yfus8K^n=A?GD;m?!0i}AUvx)F4mYS_q-)aHGBl|a zDdV&;gQ%h7wctT=SE=?LEWAVNqX=svcW;m@Yf^t3YX-s1$7J&+r?YUuQ#6YfJar^$ zKLNd+mVx8e=^6EdoskwJ7c#TI9_$~uYsfT=Y4E2!O#CebDFBlrlgNwZ7C@|2U zsUim=>z7F-%On>%l_4!Itva2N*}0HeuIv50{#MoC-uWY;Khz4(TYwQsXIt3cAj)ZONCHu>zjZpDnAz^A=b5 z)guRFSTe|~9+`#7urv=dq-Zb=do5w`TrN4^_eS6bJW7}6Z$h5s6%Zx+0@ED$$nUQW^Q{hpDo?%iZ&3E(hy-f!3 zjspGvk!3CNWN|)B?u^e<88ng3*>f|i1b7f(bjZACRS1T|1*16w5PYvtEdboT01N8lb7@zDCbk) zO8N=VfP$rv|AS8AeRf*#|HZ5E`rnS%n~HWN({1iUOcbx1OTRD=BZSwVm3MV5oL|vN zDwx4#BV-XvM*Bjk-SJ2g$vK`E>5In_DbN^d2ZM~K65-YeU|17+nO&$Y(oT1Pjd!HN zEnSh&!ujcPGEi3rLE%JrXEc!-kS!6zyZ@50gp}3YolZoht?}OOaB{meW=Ap}?dgiO zZcpbx^Si^T&QPSgSMCm{V%^c!@-Dn?5CD=-@9mCMyLjHx=oVgv737q+3Y512Ntep*II=QcEfk(ffDB65Dt5MtYU)jwj<09vWmt z_n`846Ck$>oTN%hw-edUwq#5o%(+&flHGA3&~^*~Xf(Aqo`|)ul7OL+?55!#f&`Vp zP!dgdIF9!iYIEGH9wlEq0WquCwnq{@ZcNgZkT!-p@cKtpM%EbcthiuWdlLz~pHZ6D zom7pX9^>_k=x4IWDJ1069oLMfN88(@uHDpBx({8DVMrIAip67Hu?`v|RMi8$6RJHD zPW2}EewgBLYdk7=Mt&4V^Nrpui8Qi`-VibMpt7I!{Ej=9WN&}C^SCARZkw|!J6Vxk z5O_GduOiSJ%FYWEZM`M?jPs`i<}BHrl?Ah!d2hMD_LQs~1J3u?ZsnXbx~&j)v@O&U zO(i{2`ygK+XfG6^mk~Ct53OuiTOVq!TUEcoBgI2I!+1Yr3Xh<+#(I)5Ok5cm4{!Af z(J#Z9ByZKh=&AYpYkF-G|k(*9-!!ND=GoS#kE1m9ww`-H5FsPQqJXH%AkT`_ci$*ntn%1pvtXmsutZ!Vmeyi7>45Pws%Fq%{Mm%Ce?Oho* zBh=p8)9TTiM4|bq5WVs&-nlyodB$2pQ80-JCQ1aaE{(TzZHLUFtu&2M=XP`!x!11W z6slXkv0-z4sIF;U6Nxj?LZ+66WG6%dW8EG@C;RObBoT(hk_ik)Tc|CZ3TGHO2)hjy z5APG@QR|7ZAX>s*;ht8!Dm5+W9#nvt29=>73ns$5Lj8u$izar2+M-DsYY&zHO_5%} z5+uEza5vBh_aj6DgT8rW@Ipzv0F`Z-mx`q@AE5^+*zOQl0r8)_zF}kiG7M>GV|`3O&d4J{dhMYt3UOh zS0x!0Dsx_Fz=*a$Ow@apMn)l>%Ll}aw-v(TfY_CQMGAGa zrO<#>VmI`+C)&zgjP+vt;#fXIywHW{%omG1rWo}PIIA(`gp$22JSn)-+<%yabxms~> z&vTV59qHtNX(}C}d5Xb<_9jAYm}<`OiFmh1<1i?_$xboM19Z;yfXx|xFF-X89G7HL z%ni&xc^h7P6b6ANEX;a)w8PWa6q6H0(n&(Fp;RoSn!aK6y7e1F4NdD-)XO~O?l{B1 zGN1~!$6??x18I~)%j=e}t`9ZhmQd5CMvML7>uw!RJlCwlnTT{nU_;sH zQ3IgJwA5e-l0D&gvXiE3A{6U^uN`3pN_s9E_pQkp<<96Xn8gHHm&S%w>tWAB8@D!N zX{%eYVtr`&y2j?ZjiI%5Ti0#cNXofkZQZia`ugQ->lzyCmaVN%&mJ@$%NtxdvHfYs zMeIFTFUd<&E6oGvhoZ>|wkGTVg2J+ocRXVm!)gZq4zdWf?8bb>tyl?p){3~@0H9j# z7bo$+#XV>GjuG3!|{yn2fu4k;TZhp^mODUT;FtcoZtk%Y)c|n%UJMxZ$)) z%XH#JnQSCP+XW$G$%oMCttif#>zdRRgZ=6wwG6fF^upb3p~(EIs!(fn1P*=*b{^|J zYZR9Xi-gc?+VHECl^UJPN5bEp(%uNJxrat(7KJQ>(|4| z>4u0#H-a^kJPz_PF$W+9RISs7`bYi^DTO#y?X+a7cpyVjV^|^fo;_>=L(X&cur`IT zM6t__Wx4~;u=FN+`U{607csaze-#dUGOJqbYTHD^JIcx`v;Po zQF7;CjQT=}ZcOb@`etqoZf4>=N0)bGJKVSe&Ha z%)?PgA2E2Q7hTNy9@c{89Y6NM9`&4#eb!cZe4?=(n2 z(m8helCgGitDDq=rF{nHBr%d>N=6!L8VO;Fh0$+#&onYL2b)&XykeKWZEl*Hm!{^Y zsRi6Nk~%p*5GO6$@m6+Q$X(K9BE1kp*kpLfY_s9%ppAvNiBMlwuaFwyC|-Js#x!Ey zukqNG$Bi^#WU$C&!rxUVE4B-9C=WUmNzgJz^SV7wSe_lx4;si?~>k~W_ z^=frT!ZPI>peh|b?4QDWf)_&D`%nkmEHZoK6UlN)E)2VCYW3}sylJ_2MkEod;%l|| zHoM>p!!vPne|L8aydW}~q}{sQz-DyDwBm}Oi!NTS}VIr~< z>rGpThBv(sXRfm})8lxu@)K*t$;*y{Ek6p@OunR(Mpqcl(Ft2V{ zwYqNOy2gg(kS;`y-HiC)G$Cmp%KAZuCPcseOyLhYz=rg~RHUMaP9#Fz-Pq4T=J39G z>WQyQy9*vF_LWH6=<&yXHxvemw=8U?*r!B^a56DjWW}S+YFrFp{}vK8Y>)JkIe@3w z7KYV@oMc&QY}l~D>p`Qv?dqzskIBY1nP}zd0OP(Zw1W&7kG|WQwI_L(99l+>Hd{;D zkg*vODYA-aG5u5C=`V4@*$D)`QMd z2ucP*LYo|4;R4zCFeuYAis?z)_=W*y&@Es+2|a)TOO z@@_h!Z~)*VO4xus-d(Wu++P_zav0UoheGskE>Jvl2KvaB5lhle+Nq&R_NgfDow>Cq zk+y}xy?s03-Xb{C5^j^7h|D9mQ-SQTTC^i7f^uau5sl#oE3%PfZ!|WbXOx|cCObzg zJ5qIu%BghYUE$praf~DxRMsFoYRj7yL={497#yOxmcMQM{jy zw2R}&JS=WcMbWHiTZG&>o@lHgU2WK?u{Xh?67rw0qlI=*Y{FY#U$-LE(Ad1Tp?*WC zeoOswEIas{EttUwVUX)P&{5#M7!|t{ivf96J846}#e1opA^1wI8S@)0-qCteybrFeFQVoQ4J%-U+lDz91JscMWjuu+sN? zckOV1;JE4Pq>ck_<@uM~6^_G1xjiOLA6hpv{5csCGIlT%yxk!WjZ6kdu;T6Dq);+f zUIGy$7yHG=xTA-Iro5&5F%?LsuIPY(}?$yRm39G1Ual)?KXPO zJHXcajNKCJOAoX}4cWCI*9KBXpd~Z>;yQ%gPa+i@5PBqub;fCRA~`2_!Cr_P;<@!% zoOrhdsBc_`um*V?P>ookExp?5K7zgdw9TP-ym}ivz2S;QsEef0mA%PCC5&h#A1Ia2 zuQ;}1E)0@b!G)|V1A|De7qs}Xi6*^g)kYJ^?8)?IkC~5TC`JGyv$>I?F%od|C^*40 zlJ}FHto!U&q;O{BB#N^SXjrl{3YU&2DC{War_&EvTS=J*HjtGWGm2I%8dRL)&@85f zjjTb2Z_cY!4NYr41n|hSWFy8#);oFK`ZWzrt2WecL=1LCy*d(7e|w5z`xHk`FG*Mk z!pS5X8`2=LF}mKTciQkbTgd~3Qb!Txrp1#+mTifLcfa(8+FMxwa<;-Q5cxLbthynL zchI6G{+4X7(Tv7M4%TwqEA1IY5a{8BTh@!taI!Omnkkrt!w2{nDGpqvRS|nr+Vj9k z?%yf8oik*RjtxeWA&f;&Bmx@`6@g1c5oK7YR-9HOICLm3N*segIuXJe({R$J`cT6P z1XE$ml99P=CN{6wunwWkrgaFJG}diclip8DbW!(H6tdBvDr7+(E?HtZ7Lc$PX{Ag( zxFXQF&<;LJNSi~RS1VUEH!KgWM9`pl<9fseG*sg@j@!uqwecncesso8mWBoUKQ5ns z6;Epcn;9>C(&d`hubi+ytl_#V6wiy-H<&Kb=UvbatZKY;p*#tsBq1-Heo#Dx7a%!3 z#0aP7SvOqR1R@^dvWGZq%z>t+b)ofjO)KE=ol?)M%|IW3Lks8^DilM5{X~BV6W#|x zSUd;FaEK{%ZWOO=XeS1jB$=Te8#Xp9U$Zr|v7xaZ(Jh2mFl6XKwd9M%;4M=`lD$6~ zI655ZclttjnQM0|=M@!|$s6wKMZ}>e)`O`MCgZ`UMU8dM&9HjuFbB>)uqW)K_XTWf zs%xyDyAWGs9IYc9+SA^R6CP(|U_;w+&VdfXOC^s%JSC`7yaPg{3Nm+#q)WX$*h|OB zErBrDljDWkZT8fqaaOt-(%#XF4K&PgcMNlyGK&PHTfDxBD=d38wr8|-(jgDT{>jyX zmvw4lW>Af{5G+Q$mCs5-9PjUAoM{v&5eZ0uqc60@M0gktOGzZBJB%p>ryp^21O?%D zB&gTCn)BjJh6&z(h|F06XX3awbLKiljVbBcy#`T05J}0`seR* zJj2X8Vzvxv?*g);I8l4Jw=30-rr@W|68B%b?qn*F{NrVH8|vBN6__eXVNnKHT0Y0gagk;IN!9Fd@)jK_BTO$UE9FumLzHAG3VI@GsFOih+ zAKOS00mqa{HqP*%7t|BlGt%Nn+i})aXc1N?wk|a0FnBo1ipyaS9gFVf{WC-*J19Ex zB&Qwg5E)VYX~s|zk5q60bY!L5YM50IksoKC`_kb@n)5i^Teqv>ASao=DRe=urkwQc`wj)6yE0 zq}>9x-*gJ*9%7OGPq^)LY(NoyX^rsTi^OV6hps$c*djtJX*6KbB8fx{`vN)!oV zL(b?)k*O6F;Q}dpUtQkl0Rhx0M-)&GoJ@PsFgycx26gchd9oMBwb7QJ20tAf;yH!6 z5~of_+jrCEm7J1p3VLd1VSYL=zj;SCFrG*j7e){Ii9@R>lu_D&;lXkUec@x9O--2r zB|0aN!(PO)`5ZTbouEc|*+rmJlOF6_*p8+5#bT;?ZBaW}3NEOaUr`mDTUEWVYGKu)V0m{>tUQ^F2+`f$ zmqz9aHLtBFwoAzHPD))kU$~m8c{Rrh*&Z)PP`^CdQ!Wtf2DSm%KbNBwt=r36C;))) z(BgT>pTuEhc_Q3b&Sn@us<$VySf9_6^5{;I7PwZL3SEoET7nO^w)S@Sk`rEzkWB|3 zxaug!I+R3GJ5PMdgJ8vCtXAdJ)DHY>!(VvC3krhe>(HrWs%>#cPw%3tV0k=P-cH?z z&1_ATBYGMpPfkG6z*rAxz#Tp1WQ>!GtJ6FiI_7EDSsuo}a#C=)Ih@?x)7qJc^~8FU z<-I)=NH1rv0_~(4(IuRTmG|^^b(Ql&W06ET&m&3~nb9=h@F6viRETfHQ)#Jkp2qGz z#WBIV;k1<}qb+c#I?CxBNGn5Vp`6^e?JTP#ZK^3otf|`h80=&_7E2UI;SYL5Mg}if zUe1T?_)E7)28LKzIfXzlhIrm?F~s;OElzI=S#?A02vuUiA@@GMQvyYe^DetjAO)eSx zca3nmCBl75{rYum!R5gV?5QC;G>Ahq6xrrbR$s;ug#5Q z_lg6K)IIEHFbe+{&+&@Is-zPa{S()+P;*QlQAG+W_WNoqC-t65vf?tRkA#^{3I{!j zg)mjzlPA1)mMt$0kUKCZ8A1}gB*ECQ^Vx2g^$khUcdh8$zqVkU-J*AW0?Tdo1y4ELQj{qPoK`-PEn z@h#mbY5;CU-NrgO9H*Iqmg8s?%O4&@q{rQ=7ov!PZdm$3#r`Ks(}62;i8utZwxO|M zV`$#0Wf^fVk5|x8yceg?h=jt4qVp>lFPu4ZNmFzzs!_p&%!x;+-z1oomm9|CwZW|rni$8`@pgk!)hPMGFBJ13= zHn1kpMv(Rb8P9?Z@Zmf@R_1Qmoi9x*UCzm^r5z6Z2AF0Fz)Jj8A7n;w1Y3A#oiPd- zkAw1II)|&EpdOnYQV{BYe|%5=XgnTzkths$g;}*6kLuuLVFSjr56Z~encj7%^Phf{ z9{VW`QDc;-fwab;2W(X7ycq*V0VO=tl3t_LX72D#=BF+;)GuGxw1UK##5Sql=8|0K z5ggicvtxn<$u09(p8A7BBru$HA^eQRoStRF!FPlngu!(0inxe04j6XP#N)$BjhQB@ z^dyY_tf<50rK$O8s)o0UkfJ`nhbD>Zjsj!w+0#jVy$Q< ze6+}bDKK{#PGY2bJntuwh4f>eBv5`1R(CJEFqviTkyQ-8zaVX)$7Y}m5F(yZz}g}X zkUNARBT1bn!$hOR^M;oK;u4}&kyun?>M(FxM>17Ruqo)I5Ll%8ozvDoyWnGZP4|^7DYuP!az$`fo z?4d|KU`R7vZTz9N7I~_ohs+zE;Dv@Fs~);FG&a_+XrOijqiHM8 zG<2gzJc=lbN;;~Eb=e!Ru+oU(L=$bLh&au7M21}uN+M(-3VV2~mM=dpShlGJA?;p? z4U{kJWv=?1>V*|m^DE}gGBE@EtQS8=`4}JH^ZN?(2M6}?PgV4f3ec}s^yA)|v2s}9 zMOjS+xphB6W~8OxGNJjx`px-P7UXUoN*U|&KI^{qKKw3zz=wWxO`k1P{^o+*)t{2j z{S>l}@-6@LeC{WbF5gNmPii^(HCukC^NGZ4`qkJ`KH2osxTAdVcZiOH;%7hdHndNq zWz#RFj`GR&@bjsoe6sOk^`m|C1@xat%JznT0wW;X!%G>C^2w$@V|kQMwpV-yOL-jONE1HTdK5|AFy-{c-s}0A2|B zoWJqs|CT%CS_r|7$k0Pq|4iVNzvk5b7u?Vt#{neXh-?2gt#{t5-`|!_1d#+jB4d8Jc3#SO|NM3Mtz1rK2|_=>`TOUKlh31{ zlK;t1!5>3$)L-{;cKdIN2Q?wA-_L(aIdG-Yv4?>H{xru&q?ucf^rHot-~jI`Gr?_C z;0C~BLr6949+Q_xF7hWGgp3q(k2c176b?4I)zPrI6+YT8w5XLwdC&!}Wya6BxVBbo zRC;K~j~^6aQ-Gj92eU&Vi87|)%o|;MOcm+Y53JcqK|C6YJGdV-xu5sw6E$gxk~9b8 z=8{PToTkukQ^`hrM9u&{&e9NGjsNcp{PASa^s)IV4}Dzz4>dp8C;B+tmA^({kLD?U zE1UkTSIXgAls{R&sT{nD#$`T{+I4xv~f^b4H8H0-R&;Et3Sez~H~fTbSsxPrlOS zOwmqXZSX6!owpnOaTVNm4E}-+rqgpL2d6(jH2Ehg|8s-4%oc#wfBLv`W@~%q8~ilY zheZazPvx+};0aa4O$MKh_cqZdZ1CmesNvIX@Dxp0e9ka;xdE(UFG>@ zgMX6-8K0XCzD(tFm%%sa*5yHi=W4xA7<`-R)w2d)t**&y2Cq<;{qF{E)`{h-JluG> z{KE|XlFrky29Ig^(+$2w+h1+)QEJRK8~hsG0u`t{Tzlp!Uup1v93yhxW$-0BE*BVl zm@b%KF!(6NziM##8={`~OM{=H@*l4*sB7mqEoX_r|5qXHJjvjAs}+AvGx$(7(ouuY z)^=QI@FLa!FB#mm|51bgQ774LVv;Qv$k(>u8`%YRGDsWbR9imx*G zc3l9Q4E}`nf2+Y?DU$ly4F1wI!D9yhwc6)13_e`@b-lrBw4Gl!_-vgQ-~JT*QG@sB zI`yi-f2Hkr3%?teZ|Hh7RpsIEhqYgo27g@V%kc(p)NxsD@aMGNjRtrA=Qe|{p$6d7 zW$v(sG_Q z_#(A$FB&|ge%)b%-=O3ASA##J_T+topQn12qk81V{b`-=g$93F{e)73cWZmf44$Rs z%s2RHI=^ZSew)f|t-;^P7rAXQc!%17HiLhl@{AjNzWRY@8T@k9hrI?rt4!*>+Td;4 z{+kW{g4(NZ8T>ffeBkql!EexZ{@CEV)Lvbv{d42;k@`JX8hq#sDgThckLb9(V(=9@ z@7^@{6*}MlZSZ$>-Otf}yY}3s`9>K0hicC!8vF$H(`pQUMzyrR-r!zP@bw1Yq3cS> z;EPqiyA1xm)_bhlCrYNNb*1*J-r!fMzO6U-4>kW}O?TydL-l8l!HZ`~`)dpy^95gF z@Q{|@Z19tH+)p)lVNlBHH28MizoZO)Q0?{}ga1nRO_v+|YPCPt8+?)4)!Pi7qjLC; z!Ix?NM-4tq^Z&%)KhS-_FAaXxEa~s>4gRpo;qL~&YL4Xpz~F7F54i=B?#3~wy;lTL%jw4BQg{x_A|4FNTLe16;6o?_KC=zJUfX}H!PlvN zt}uALw*Mr94^{pDtidOe6-@72ESU%*=g|Sv_BUbe6IRqR~me3g|uhC z!H4L&bGN~lsvbUK@XJ(BeqwMJr+UfYqjf(1(coR$&UX#|Rn4EJ{-zt3?P?zj4Su)k z&qRYirt+C%@UJRZJWV=tMe;i@cY$Hx_y}I*Uwbnt}yw( zG+V~&MT2kA@j7hqH&vgPXnC&u<23)t2A`txZ!!2-m2=GCKUV!b%izCL`+14MpHzSB z8iU7mo&BxBf2@Ap5rh9bC~|n$;6GLSGe+g=`g^+Cy?F+&)N+;>e726)i3X2Lwccif z-=XuO#o#Uu95eVeY9G!t_*9)o7aM%M=D*G0-&g$G1`ntl9x?bX)#s-T?&3}_8vG=+ z4~Gq&t>gYTgIDOh{g1(2dl`HVDSH{{@iHrv8vAp z41SvG^Kq(=u00>?yskI+a=kxn@Xl&!=dA{BQ$PG3gTJrq(IWq`{x52-nexS3vP7Vz!x8Z7!9sY{y&m4pQPvx-4;ODFVS#R)iop)K5Q->LGy%iw=jJMe3RA5ne&qru(&>K%hmP`SBB zN;L!@SVypGWZSJj%5aaR?A;w@B+2-8x6ip*NM{% zewNywc7rcg|2AguJ-Tl88T=p0pJ(vhv!(x^H~7;!k8UvdWvXvC8T`9C?gtEBtmA&r z;J;A*8H3-Tdi9dQXY0Is-QZ8^di0jT|D$&GBZHr=b}yjg?8aTBfM*yCo}=Xi4Srbp zIR<}0{oWdbzpeX-6$T%wa&9*GIgn5gLkU_>@oNgn*TC`pQ!fg zT7!41oxIiHE7hO7$KW@r+#WIb3|*I>HuyHx+ZPRfmD(RCZ#P~~YrTIp`TwMP_`bov zruHO9?X)Y$orBgH{H!XGXOqEQedineF|GGTga26ZZy5Xq#UC*ED~dm1@Tl684-I~= zt|RU|$MtKT&KDzV_5UV=uU0#MpTY0b z`F_ygWje24F!+yjzwoNTm#JNS)8Kciz4CNDbp3Vt3k<$M*AeH>y8L}w{!EiUNBMaM z|AX3@r3SxT?fhDU|4YYZi@{xc+6;b^%5#Uof2I4x3k~k}SvMJclG>kd8vHcXGv~iM zIdo{gCrtj9L84bbHuyT7zt0)`IhFG-4E`5g*M4L0Z>zuen!&%ScJ*C@FV%g)2L``G z*K7CayX)89VbcCwwSNx3QSEKM!7orb7a9C?)xQ#h?^OFU(cm9zf2SM#R<#4w2ERk+ z%VL9{qxdNXe_GeSJqDjE-Szevyj|zrH3na!^1spGw`qTGHuz~e?+zF|rRCpk@C&rR z_Zj?NwLcFV{Bvp#4;p-hj@OS2e!KF|7<|2!|GdFft-O~E{(YTyuNwS5?eFUbcjxzS z8vIv58GyG8{#CWZ?-~3TI$j?c{2pBgvvgnO^tRKj3kEONecCXCU#j(vGWea^-*E;_3MHh5yTRc{{ywFD-7PG^WsE7o}=ab&EQX{eEwtbQ*|926qIpu`sU7=Mi~6-+OLXF!A~%FSnW)M!GErL zzS-b!c=BmAxU=tZgFmPK$=L?)Q$OTVgFmh7-fH@Nfn`V9WE>gPoUf0#Om&s7F@`hT;*Pp^{v_Za*w zwTF)y{9(!NJ!9~}Iv-y)_%gL)M+|VEB(|Nwc;HMQzzt$SOTi2IU4E~YoZKuJfsr+{ue5RIjp~3Ic zb>vEeznLTLIc)F;vIYO6!4Iik{ng-C>O6YK;J2up-4CLioSpwrp!(wQ@4NVe!P`}y zvkd+-wI`hh4=SHB_`|x+o@ekMs2_g0!JWOj&fwE>L_S|P_)xWz-!`~A2mgt|Kd=4$ zrNLdjzc;um|L+EO?a9@7?Bwa{9cl38I*yYJ?&9^w7~Gu;*BJaNmBR{y|5M9vwz%4{ zQw@H2j>t1+@G+`~XBynqyVu~ewEQ~^{v}~9SIH?>Re z8GNVO+bs1%-MCz<<37ybBh{XdGx*oFUo#B;&}@<05`)tpwWrUC27goW%?3ZBcCW?Y zU(tEdWAN=-&KU-G=XbXo{6Fds-)nI9JD|r5?&9h{HTX{TyMATxTXjCTxTBNv@j4#= zF!`U-etl?g*ZvZfw=3rsEoYj+UHhvH-Zo6+e}cics6K2p_*S*g5rc16z1?B(c^c2X#HDHu%k|Z;K6n zK%RDq!QWH6_gjPiL&x!m!Kdgx`dx#+qWb2~7CE_bnWp&)48BLlcbvgT zsQ)v=;G12ESA7)hPzwQZDs&8r;Q&dJX<7wQuJe{3i9EzhLn1svh2G z@auw7?>7woqWVh@7<{j;M^701ey#VA!7tSDeZ}ApsvO=l_(sM5ZSZW}FSy@}xN#h( zdNM-g=kWV7<{J6r^es`ZGXMNuh;U|8~jbR^C5$~=K#74?iYyscN_dw zZO=sp_f`I1GWb%}=lurn(fM$f!S7IcK5X!R==%GV!9S<^@S?#hbUl5|;EPnwe>eDh zx;}nraA#Koy8gIve6v90Q*7|z%1<%)W4caN8T@;?zArKOH&y@F8vNvZsrRoszg>GS z)p*hS24A52rkpCd&*g8`eSM+9f1u@*8vGBc&t(QL*Y?ae_zODjwFY0K`PUl!psp`l z41TA!r_JC;RL}8JOa8ciRjZs27~DN~d%wYVs~p^WL0mZ_W=pw;O#b6_-W@jhDMKW` z`yGrc=QOqde>M4kuX^^j!Oz$A?mq^1&y5eN9@t+O?ydCy1{p8z27l7y&sG|k6B#j=`#j@ zP5ECNyj6@J3zlnhd^3*Zt2J+>Lw8;I5r#7<{?5^HPJm^NFhsUQ#ISyxHK3)t-FI;O;s3 zCk*a>CvwQ(Wh(zy3|_4B`b~phrheC;c>~9#PW3;};JZ|xM;JU;?dlkVe_!{j6AWIc z`aI3xAL@LsHn@w+?KSw>st?y0{9!HsR)f3Wx%|N3V|88mnZfVZ@%^>I-S5iYF!<-y zANZ%ipV5B(*Wj0G`-jXQDF5kd2Z{}Tik36k;7@A36$byk?!W2`{)+Ag8x8(b9j~nh z|6`G~FJkb|s6E_a@HcgSoo#UU{OctK|Gm!Bs||j>u4^|L{O@W{?lSmWy52uz@NruH zlLp_adi!&O|5NvyuNeF_oiBej_y(2#zYM-s%kdWs9N&9Y-wF)=eYIm_4W82c(+&Qf z>gQa8->v6(?B?doD$M-~opRaP;Z1CZ_zO)#;RPBGv;A?eWUuN(>sQtgv;QL2Q zJFhkPL)xCN8azk!`BsBZo-O6vY4C29+n)^nFA@|!9~it%=UwixlJ4Z`erHl-@Yhv7 zOAS6x_f6{!?&2gNgTJkIHDT}~ZRe#1zfkSKH3q*x_XRf_+?@yAZSX?%=N~rsWR=^G z4Bnyrecs@=YkOWbc$1F%n+EUI@qN$Wf1V+7A5t?={uisgon-LyR6fTT{3O-?V-5bj zfRwx3;7&gG8hp9x`C|rmw)4gQA8^JRm(cK*rW?~Igk-Zl6Sr!7 zxT|-K!Ck#u4DRZU7~IvHFu0S?xfUNL?f$;OuM^mN-r%mCzcaXN=U)x(+W8-YyLRRt zKTvMVbbgIAxO?AM(BQ6Ls|}trT*^Jo;I93r8{EYkcNyI2=Yy zy}H!k({#P~vcdnX<8`aSi`5VLw!vQ?BlSLN@Wr|=|J2}4o-Y~P$@2|^zp8fWZG$fk zO1&Q&{3f+;`HLmpt*2{d3qRK23v_&E82pD?{+1;J%Xw|I@I3~@^3cyMa6=D%i!0l9ec#!BXt~qZ15fG2maFFBUNwzVDNJFf8H|qO1JJ9 z{0FKJLzfPeTWgu{V+{VP`oq%MmQor|HgD;;c`7bm05zT*{!Si(<-DdC^I_~!x{C=HB2MwN7zvyQMZx2d)UN-n< zmD`^TK2QC?cMX2}L@CFwm2WqXqI&Ky+~9qRPc!&l-Ir}N`2W;i#SLDke$-_Ke?`}$ zD;1|{u2UV9=Y6l1zZfGtD6IF(S|O!YSIz-b&Ye}#p8GQLtBK)+pPBqO>%9JTMt(BEIxW0EnfwdKOZo3)bvA2KS7k;n>!hBERYP$C~fOdkprBm$F&LMG@T327dr zGQnEwU*C7!^UeN2s9xf1IJ5Wu_FC)Pw|`&G%=}C6MOe>Y6P)kSeOvHB?C&24&iBe5 z5S;HtJS;fhH+WodzCY)*;GdzMX9b^Jjea;M_|aK`Ul4rH)WH7|d?Mz_*!fY;@w$k8 z`A)&_g8c^sKZoaKk>CSZZ&wOFZBp>96@2fsz&8p$jQQ}4;QKItUKD&8@K*)r-wEvz zd?m*BeZg-;{f`LF|Ia-sINwKnM(~$rM!SXte-QmPEcmu5A%98mhw%VUSPvw z-Jpe!1pgN6`6r5F(LEygFwS)+1fOtw*gq}!A+-0b;G41EofDjY4|7TIhpr9#O$#Gt z|LnnYJzntRSkR{k&fnwD6P&-lUMl#c>w<5U;Cu1>whBJADdanW`?SPTTNLz({QVfO ze!+WiKHQbq!O~pVc}wKiVP6;&{1x=u$B7*bVPWTx$PYsPnBZSwUp|%C!ID?lIV19) zqW<5N;6s8>zP>P1`Kbi|MesG#L;lwiJWAtC>SIs^faR%vE?o^A-B-ukf#dP0<9)#I zL+rNw!*eFCUv>GzkZVHh^Ok2HhnS`vh}G-sIEJJsYKDO0n3_N$qMiLfwY{v5@_r6^ z9AE17{}Oo0>l_Soks$AJqtgLT2=8s-(vT)~afsF#by!jDxz5wso7+ z@DW%B>fF@bL95m&mD)Pd6lDz$ENxLsSceATS*K%7=(LvLGG2L}8fMpe`IIm7je z=30>8^G$pl6Nr7i^!e6;JfnkeMCu(kZs895c#`WA*PR)_mH!6lS@DRVuz#KISeZW8 z8yZpld#xZ>|HXJfSx>LO%W3_W8kXaq2qLauCRPOHUtnmCzcs_}ZB+hMhPlnV?URNo zi5R1h`h?dT?&)h%WlL89tPz}ggnKQK)9;7A&KJ#hnSQSQ+tL1J5PAQPwGZphae3Xa z9RC3LT`vt<|9w`N(?14%^3jIo-?M^T{r98(tf$w*=OXoqe_>dTpYOfU{?h!>68>Z0 zZ?Mp&jo+lem_#v9`QNgPxpAYJw^c#dR^1te(v0+ic_C_ z)Y1GS;Ac5w>i@QoNW{uN&wyO}SFry#gr1MTpP$Ij_WOIb)TV1(UgAHm_(_Z0Xxa7> z{co0q#^Y2(tXyji$ko69_fWtzE}kDhJ8J!VOZaCk5B(M3Wu*LFCH&+52#r=KdjI*= zTKRXD@V@~5EzoDA{5wkcw}5{biq2oPkMh4;!hat8Z{i#dGo!}Z-;OX+t^6N?zZr6j`X7zdpR=e6U3Sxt$^B=Yup*kFooEU^?zkh8r!#>LIUpwXaPwWbPzRx&vnZ9b=Zwe>T^_$cG=YE4rTGzUszV5A0 z`u*x(2vxJ;bGS)twIJWP??gxVdg1GeKCep+%k^L5z7zd6E~5HR%{T5lF@JQ=Xxw+M zZvObTp4;ym_nqiJu2*~jHQ%`JN_S z{f3T(5|sDo3w4KgovG7!^@m??=$It|hc}c!R&;@YK4)O-|k6?Y{cFN1?aBu;K8vCF>6FFKsv+u5LKo zUDt4Udt1Zdrk;kw8zP8OS$A9Q8R!kwJ%7tEtgr|g4&QP}4K^e6B(z%bdAjcKEk`K6 ztrmuFIZAlLv;MlnZ|$tPyk=L;6*Ylf&wT9>il2WDSA0Cr4=KL9?5;(5Q*R_smS;=d z;eVtmy)V9P>4>1)V$OTG?>)S5B!6re$&M7o{O{o5SSPbB zs}tz2C^vpq<3GcO`3V`-9Af+}?g{sY7WelK#6sbL?#11`@t(o<#qFK#{ejNtz9i_1 zh6m!IfzHKyLeYUx-{M7!_^&gxueT!|us^n_L(N0i?~7+SYx^8){}mHxio_Rhin{sRmA6+*-ytjsmF2S?e*TxZwS zURuAl*56#SrDk*O*4iyCS&1N1A5sgkL~*zgvn({9{)@B`1vD=K=4E9{zDDRs1q4FT zU@R1X_o2XGY^7ETWrNX>pVARgSmc3dDA<{ZAeBJL`zS}E;qH;jl%NpK*Jo1;v=7Dt z@n~=WSL0G+P2)O0#C{QXp(UQ@R!=wdYKj~FVG+E46Rh`C-!%RquK&c zVdobF+Ejo|Z>1E1+rrM*V;fCTOf=aMngdZ(9r{K9eJvo>uu>{qgwg>;_}(}o)JQBp zjiW--YkMQ_jU#q4sU)0i%#Djp_U!TV|?>;FP37pVC6QG0J)zmMAa)%(7Rral?|zx#Xl ze;1e%_W$dp6h;dCzpGr%pCVFR1vKFo=%%V?!q4lTu9ejA)QUMhWQtGAno1RCDlBe`ZR8&|>PZX9V z;f9rnt54{9wPI|__ z9f4!AyUlo%S#$Gp;ws2wImIklg>zOQRN>;|OhpR6 z)EQF^?SifW%Ne_kTh(TjD;n9K^G^z=Yq3>oF#+mP+m0iSsZxys#*)r;d7VMF0nq1T6 znju$5lgi1V9rP;p$0W>6!sN`ETBF~Ir-Z-r9gr!`=v+Hvlw}o12BDB^_lm|;CI$9K zRheOzh)O?HX4qGxsLZhQ5u)l3+10>~vmRIRtvYw%4Zz}CuJlH0{D~T;6LOtp^7{LL{VESrUZOZctR*#5t3L+ZqxhO9fOYiCyOuVGR6hJOd=4wV z{xy6aQheiR)Xx#cH!lP}s`$_j;A4t!4Fexnd>ioz#dmxW_@v?w(&j0}AEM8v72ipG zM)8M#3jMQ+@B0(*ImP#9<>8cD@v(WpuPc729{8qm>bB7>Ii)AsV&Xi+G^r&&B~UfHH({u?+e6YVEkF1ry)iWRz?)Ewt8RA6I% zkAhp}V-S>8$8fobfkse7|M#2uH{k&GdXrRx4@c!v%(bc0waU?(8f6_{|g!HT9Uc^$1*;B zB@~o=F@rOJqvT5&+$H&xd^v-88>{3iLJF09E#sbx(P@=Do0wEBU6RvsKA+8UK#_v=+xgR{rxD8-`GE zv!Zb;|8&OU1LzVSG*R@=7c!oLR>U)_v(L(ZG2^2M8Ztp=GJcJ0m!zrU55;z=VLujD zZrE9IuhOueWDH@ft2XSn87l@c+#B{<26uzQhW#;P!cGj~hW#ny4@)s9r_Ji`xAOmz z@hVn8XH1Z?vxfaO<2kr~&al5_JdYf_YS^0@zpX{ZrK{6#i(``w`-d?92sYEOcO=zZ2kF`KYS!frHds>C~F*laHw;1R>-2s>)n zd@n2Om|+WqoiJ>nXr3~xT*6KpwoKSr!z#T$X8jnpLc&Tjw0>3!t2V64yB4Pz&4yj% zW#4Z#>|$YUhE;p(&~SQ2u*e8DG=dEqRwMBa8MemzYy^2XtVPP@_y~5wu&rJWD<=)x zChU}9+a=!V5$ud%JG_5K3TF+w%)77@D+I%Kd4Gd)@q4u-0>VlR3wrOss9S1Sm-kI* zRvXsqZ9(4a4BPG9c{$3=umSO<%{!|rX65hodagntnV^_=G+4y2L2o^ZddRT--Z2Op zHf+dS1a`=yK`s9{%0*fGNndYf=Ab=_zWRux7))j~n(QVJ8gx zPif>Q4f~0A>3l3k4Ew3K19?Af*w4JXQDiR~_L8tOhMn`i-G^E+?3dC}&l&bB?|yjp zx?#WZUJv$`VZRkk%h7uHo%are`3(Dm_b#wP!~WX2bsG-HKtn&9MLR zu7{sJhP^3lw_$IK*L{ZlLt040uy=&T4g05P4jJ|@DeGaw-jxzOWSEu7?ta8DTi8*< zJefRNJZ4yWCWpuqhGk?vhWwo}Y+NQ+i>D16pUG+ejA6x@&tNDxYnWfcUN>xJW)$81 zEoWA=W6;W?8n!6&-`Aqm8CI70EW+vxTbaqaZ8mI`u&stwNqVh@ zt(W|@8MZ-Kk711xFJf48=68|8kYQUgxd9zEY(30q%5lR6B=tuO+nae1>76hvp7|sAa?-H<5_Zb4Az{xNcC}bJZP>M$obb*V zc6}!IDmbKdoKA?b{zQ4^edUi>6=ETd&D&EvQ84&vVn^lA5c?EAOI)bcXD7K~;)vomh=&yal{SYJ z|Bd*N;{PE&qWJG$hW=5-Z~rIoF~#rv1^Bq)e-@x{PAGnNA@E6A$L4wL29Q%q(rv~* ztt8WC!Jkp$2sx`HOUOAT*+O1bGT!ciwbzvtO2}K%wepIDShljs!W_e<2=f^>)xHKc z3JsfK^LWT_*j)QQgjL#B7T2%Yi3=LoA0e1w;qOdZ?rk<}PQ1vy-Cl&T&X7B7PC$-^ ze87GV0X`*1?C^S|s^o6jeEOB>zP3ckJrYu?L^rvW#XOD6J!)Trva8mR`)qdCIwkiD z(H%wZ1NO(Td~eo}j|gd1@-dr3N}H00Y|g2jNfaJon3@X=>cC60Lv3N=L9t!%o_RsKIK(p0uZdozTrz?kW3L zurr1|ZQp=8IBVE9?QttHAsF_&q+X}{o!oEPM-Z>suy0GHv>NuJ{Q$zu)+_fXHV3{Q z6ZT*BZ`Pta8}my&-MDY}s=EVgD5SjJr+PKkeIV(9I3A zJX|0hGc3)+R(0GkuV)`x`H3|23J!!>9J-{hK#&fcwU`3ANDt!F=^kMZZ=Q&5p*M@Qqt*Trk(_r zo0enz95~F4ficrQ26+j&Kd-{hKpjXw%d4~}u|AZn(6Lm>DtkFXd`hb92{y(wD{CBN z*>ZV~#!$$9UTH9^jA3$lSi|_?IMW~&?|fsk+JU7VjFsD$2Io-BTbVntHJ0Tb4<_Wv zgER|m6FJIbdtu311rK;Wh)^#DY^tJWvN>+T3FKK4D;&S$X9$(V#$P5yq4@Hg=}1iR z6%&BnI{*{bGeiO=Y?uOQa2>HzuqSlDnov*dgQv7ThVI~r2#CbV2{l}eYU+g(c0eq~ z3Jc{Xh2kPPu2MXaqqIrAvT(}B6A_AeW5SXY3#Wb-DXF`Key$Mw8hILViQ?&uS_)T6 z@G0p>in6E8fQgR%omNqfR8>KYcrh5xh~XtYSWKK_jrA4H{wN|&WNH(chBdad=%TL!j03icE>6PLgzDRW z0EutemY-^tr)b(Xv~Mk?>5o&Sr8I-sqop*Hn7+XAS;XG)bXu#VXbC+sWwMmmlt~2* zYgHAk2mv2MHNvx1bmy2om+qgj)h`B%UsIJ2x_q@(=AoiZHM3kd8<>c3b2G82%tm5U znN7r|GMkA_WnMyTDsv05aeQk^Wo~;I@;e z8CsRqo}$0Jn6U5$YueHR|0~n7JWBpXoobId@iX9g|3aXJeK-DmMYcVAwq-3KDe~CI z(U}yd*)*s)-DdSD&aml+Vz0zi%e*0o9C;(?N?)FDHy7(uzampE|`k+?I5 z7^pYqechC6zw-4Ek5V0ZbSg`+JTR4`ctFNa#bLTIR&j)9a&3zDegs(Cr!Pi*-MIMT z#9vgMeZ(gf?}!FF5SdRx2BZ(Hrv-HoNW}WJ;c`}3)>RSe#uwt^#%Q3XTAj3*CwyXck~{@z zbS9N=gnWuK>2CW@04dZ-AGRqpfx#r2$C)a$r7RYssT*u0FoLtAtb%I z+BD8SAw5d=3yCPXO309shlLC)`LvKjN{$OTqU5tS_XkIn=;6vSC0~&tiDz!E`F|y0 zF8j63dNsG&{CZ4L=hgK7EH;}Bd&6c`w;J}2lx>e;{}k3|*uSI_B8H`Tc%TtC%qwir zFvr6j4I7r_*@heqdojARHKcUf-@T58AdOhBwqTE3)3k+F`~SvUf!fIaXE$6m_)TJ6 zxA@;8)^&^jA5_O8l>_EQfYSIpYAoXa*VPaeL^>jt|6L|-X?@uCgTU2F(uLG0$*>t? zjpe1n9j?9EDZ{BhTiUQVeSvIq8?U^4B==>PyIrKoAM>zPs|RtB&hJ8TT>xO+$*jt8uNUT^*YUNH3XCTM0 zyM*}-yW1nrU>J6f#H%*!UJpxWoniM$Se;?_OIU+p4~WfX!yXiyJ%$~VJVXrpg!nmR z*u%nx4f}#<9y07PkDR0$_C?V=)`S+v!o|KvuFRO1a~RvB)IgTy<+v4c`D|;6PA988 zH$irOo$9*I=ilV{Ji@ht8ay1&4B0FhcXY7xjrCvQ`Bp+PAQ(Q-HY-(@Mb+4ZvR|-b z%}D8`@wZ)WR{81Ea(Nd}dcw3ZdbA{qhLY(^c&01?)60_wEz_5=J!lu1ULgwz)v07H z78ZnKd#&lKn2cY$N6C!IpK=Y&m?B?dkO(u1laXgk~vu6DgKvr$DW`B>OG+t)SWn9Tw;p~~btt?K=p2hZT@N9~; z!_S^W%o8C#6C=@_+4C<-L|edMwgC@UP!2QbI8Bg^p;%I!GbRA;I3ZlKBDiGp0s)U+ z#iD;s=cj?ikvSnY8H2l$B{QdcD^wCs?o(ej2~Pt^y_ykiLCMUPWhQ>ftS=x`ZI#UC z(|lT8C3CpF&_|?8N{BNH!l8bvWG#!KdP0Qq#C7TyC z7#5x5Fzu|96!QWBn}Fkdp5pIP%nJm}x8poZG1C!o_G74QNPh-__JO%`r!RN?pGO}| zUgoFdWx*V%_$(hI<9i(-CT_(QiMY#C;#Q`_T|w+VQ$4rlhD3xlDG}C61hwkS-TYue zsZo^N@rk4D3`)5?T86A)SjU6U76&Rsa zQ-OPl3pMiTxkE=1kq`WtWv!8~WIHjneAPlE+$x=F?m-q(M0Kua{)ZJ`!)zW>d@XZ! z3@e9TYwj?eKCX%R=Dz%;L}IUe3(zF?E6KApfo+~*y=g#(8e$Ybq2-%*`ET9$^L7!U z-*cpU8&J2+wvJNs+P(`>PV@ZiOIKhG)7Kfd=8xV9s0q%O@7HP3%pb>@LW^epcpi9H zN-pM4$inThYQ;sIDeBzKHf>6q=~<9NCDBN`Z3|e}3W#L$RBS@i!j1x7#k_q;6 zh+m?lP>4RAx^SYs4RJ~}WU{P{E0q)rsZui49)w!8l4m;qMBR~; zjX^?K#qP7ttAKsHYw9@73}=rEGh8mTgAjH>+!BL0>j=Xr&KAU&2+~`qS5bkrr;%v^ zVGmNu%F<{?`UMEY8CI5tn8Z#q zqXWvKwvPTigubcuQa2hF_)}xmF{IxS;_{2UBEcX zg-8Ag>3mdO+NXbJx)hF*Iq7_6&CxtMi)$W*n)tAI4I%9^CcgiHYu0nPWXoWh-2Rr< z{|VB`)Ya<+w!g>A_LWo{!)5zrZC@~m=a$Q^?X=};aGMvzhbl(W+<__D*qTJUAJ66;7_b{nx4 zeA(^9TJU8b;QFjt{W%iua!2yA4-vPi{7&K?#di@$6yL)F8&Z69+vV=OTy|f2w>vMF z-Jb<~q<{|qmOa4d4Ud|6dC96BZow^)?}BRWELqKrX<;p?CeBGYkyyI=dPJHG=>@AK zr*P@!Pe4IjTH06wXmAr-hR=e+mS+a<~2{bz0~9vX>-@}dy(qMM*1`{X>Jdb!L9V% z)n8!rUm+9Lcv|B9_1x=z0VE}qdp*B|Y4D9qQwu-$CgL0_AIVwkDtw5k8080;f>C~u zSd>4>FKMdfPo*e-rW~m_xI>@2uL}z0ebGTHcR#nO>i)q!kWQql%5P^Qok%YyGIh88 zFfQ`_=mYpv#S=`VJQDA-av$fxf=Zt}mJ*4|rY;`_lt$vq{p~M-)zROj6v1n}qh@mT z2jUzzF7;*jb#kZJ&N|B~?uZXrxyANq;6w@xnBvc^w=1X-ZMSka+B^c#!8&)7EOZLh z(5c+{^6219#?M_OK}Js(M2?0m6)j&XDO9pdZ2Og5BnB##)YyFRs#?h!n@a5$mS#9 zCzN#Ce?ak_L_cM@nA#{uxPco1N3BlsCP1C*a(CO;gQ%H3@(i3IeGKA6JdvlXJ7aT)?fmtwJJ-pQ+9Ytj z1f*N?l=?L2nBx`6hClaayDAay7Qt9Q@ywL&%FM)_Wi@@F74{4mwNTt+*=mZBD>~q;xFXy()~ORC-Kd`8O&zm>yGp>OWvj zdr$dOoJ;jArTl5)4Cz(n&wK?sdRSEc>?6S1tIEH57T9O(Kld_~7^?-wrNr_yz3TFp zoH{p+|5}Sslits1*QaUxg1A8OIr^k)iSqwudOBN_|MF>Izv{e9T%!0D>gz03{wvxk zSNX4rD-{2RSl1HeuM)3R`EQA<6#tI+Vw0cWGaFLl)#WSgPap%*aLZTOQesM~gy^Fk zJ8!YT6+xK z8S7s*<2(42adO!#K6R;Zwk!+$C}ykFSynu@-jw&Usk0cbvJ8!m`h?yfYER|5BmvB7{jU>+OtMCCldBmM}e^I#xkE9I=)yAl4?bY$470 z3OWX(*0M#!TCK|#bA;DwT~3Y08OONQq1KAoz{L(v2pT76I`*0##FUpvpo1Md! zid1}ztYFW8Rq;^iriA{-lk;cAr|6Kj>57NfY_RA{|3NT$&9N=tKSTGQ?Dz4%e#p!1+xZ%xar5$blCJII3ArhnE9kO0Pphjq#TaV)#n(0`B7eu*n8??6X91hYXI24g z&^uKIBy4a0L|INL0=RwMr}Qyd7B6zUxzf2H*Vxu&JASehX~!aP(im zCJ*;bL7q(>9;gB?(Tya{WV6L(%eS!Qq{(rZj_j$w!C<*i2U+?i1SU71bCsB6HVZqO z4I`U13e7WaFujmq2>;{?>5j%pL_}~pq>?T@)O01-Bt8RD$5{>=QXt1F{_QLz(pOGU z&y>f%b3QcX@ddU!QyyR9iJ~cwFB4afMjWf+E4y(u?eQf0P(|0x=tzhVZ5i^6(cogiS6PC))()K$^uCm<&Rs`4CJf zgdYKh$b}we)3t0ieCX7{u;bKFleuC`R89HTiR0{n082fL%j}}dCmjcuCCiAVjA?Mo zOa6)A(NteP_a;Dt=Xsjk0$x6UG_V%%@&yZlwSbo|tOWLJ+(lo)Awh}dW4SpFZTeU$ z4sK$>PmUYY0kV04umm5biH!mDG2C&M0_M^aU*(hzV6j}O4>>EI%7(`UUazZKy<+v) zW}~{InvGMVt*BuwYYSPihSt>S6>EPEb#;2hx`mg(>4I3NwW5}dt5i~1vHlQLDrN7s zVk66t-wju~Nold64N9jNx>@ODLmQP&s)EB8!vn{mt0srvt99M3{QebyCbvJh9vCmd zVjG}1o33Xwo_kQpcoIy_lwj$YY$r&k6G4(r`pO9p0ZYDC7Rtb{0c|Uevmi9XGOHN; zSx%{1*(*NBVm9UW$OBt+wxK<-U9uw1@>3Io7Xuo+Zym5H`u!83Zp;n!LT=0*xCYn{ zS6@MR79&emAXv)C&PH5E`4KkZ3LyS>!#f$mHjSnQC~b?z-0(24AHG=rQ7aC94@4cj zn$X~D{u{V(8kJUD%RW?yH!BZzSu2MBjDX3uhFr&x$)hYUdmv-T0s;5($f+nC&tmh& zrw65@_dznXbP8A8xD+x?{HD!-2H)HVY)a>rdw_k~k2e5jvrgQMF#0G;C$MU}-W$Ay z!Ia7C6_^ZQwW>0VPe#eVRHr|;oTWkm)a~CS)*5Nx0mmL zRLNzs0oT1i)h_$5EG7+Uv(vG}YE}}ozX_r{>#BBn>g%M2bO<@6q|@eLa#~5Zz4J0W zovftC?gBZhq*orNI;W)H<}CW^tUVE{Ds1nCmbsr%6%jS_6}qaJu*vppW~nMJ#{Gs3 ziuDr14oFz3VOL6+`9fXQRbr*ugk2+SonhBXygI{%C0?^(H_6x5S`9lSY=>dDNxU}0 zZkKpHhTS14L<~D3EN<9`?1RYdkYRVr-L_%F?zIo2l1>?RRG3e{&R6w-{TiyN&9IM% zO_x0+tkZ;jTxz$+uus_6Gd;tO+lRo04f~9J7U>-_>=FAegdH>NQTwA{#|`_U+(|TF zLaaI|=PxHs*jFX>Q-*zA*t3Q`X@3${P8;@=oijc0<;AL}MbmtFvFe+`UNV}`*xO;X{vN{2mmaHLlrT%bK3Mf#Vd;jQk+(8AX|wk9q1F9RYSU-J zek3g4u(S4m!DgXh|0U(=H|!U}N)7v^+>5I=>=pg8ET80_kIv{gUqzLTdKg2?sK?QM zrLUJ>H2Wn;WjwfO4xwdvxff#f%Fu6H%PF+FM#&Vw4k_~GYM`xZZUaPOplTkcQVbjz z2CL??w^yrt0lQ>fK|eCO@DlcD6))n8Q(E0M63vKDl~rYrBup;hn!=c0`aOtsG_6|p zH((u2tCnY@-T2jJr60IN@rp9wQe8)I?8uhOw~09Np+vR=W3?_Ko4J#T0rCIAn4CwMwuC^K51d5@T)}MMGAQYawQ7bPgkUlSBbKZpNy91=f0b1W zq}LToi7u1@)C`)7>}TMCqk7F%Wzu(aG+QeD!RRfMMrQ`sR<71-1F~f*I0I`AhiN*=J z?m#ae^;v+ik6#Fk?Q2Quu2NsVs0^KHtEtu;8E!yMUJnw?!ko3 z`jkXBN}}q(Cb47X_-mW~JE7d1qI^k;@)jm!5^cE?PU^r~yOp>Qcfe}fJXg3`lU1F` zX1i>8aZ{`IifK^LV(MUm3PbE3bfUE`5r2o2qI$Ut$GdpBDUIVMt*>@>Z$fR)QWjQ0 zpsUlW?Gyi~5VwCPCY05YiX^OhJ5jf_ti197-YHkxzyem? zZ7f}d-N{__GY2Y-(@VX}kr^;uf0DM<;o8!55NYnp=#{}sh)sPjP4RY+88Y_*YWLBc zwE4pI6XUL(^^>H{i_P_u+3J1T`Th8%urEVPdd~WE`(p?)Btz~{X@6gzZ9mRPsy5oD z1v9$)*Zb@^>0{G(uRr}h*}%UCBr;9-LPyS zgxaJwRIs!A+_9C~%lMAB<_#+j0!zL&tV*8IZm2qFxn;HCVyfUB*Byh_hSfZv_p5&O z?U0vRUcTUuP{vr%H>JATH2ULF?VK6XcEM_XxQ}U!{DiPqaL+3bb8uN+=dY2sGWu`Cgzuf8@eYz zr9^QL&b-Y*P(v^GpOq@#O}s*}bU?k^)6ma;SFQ2^e)F;p=YdEjA7-+7fva>4Pj-Vy zDOERofQe|F4|aDXd^(cs2@N0O```5mnT9)AUOEUh+!cks@%wJ(p#-Lgu@Gg>u zuhF2|ew+`%b4$P1YIvdpSbJQ<*Xfs2(1C9pH$2JKWo&0hL1)aryrtZTWGkKDw7fALj6?axGT#t;~UtdtC)x0D>r8scAC=L zocj_Dh+~`e!7;@JlxvA?9!spHw0SbI*39PV#G1j)^NCAM2Wgymk()r{q&0w=K%@L> zL83!ZCkilm=ATbm<3OD^1()PFQJb%|PYoFw?YyXMu@fhWaQfIM{Ug z*MVi|Zra7htMCd+EqMpte*l?M8C%$N`)djHJ2>*H`Uj-nj&+*u$_}}*yJsYVKTL=j zs_F3s2$phddLqTquj}~=%zw2u5&vsfAf<`4XXW^tp6^P;{8n>5o4$E# zBIa}VGiK7#i!$;qArRMQ0hgOx`%j~tuBW_Jcxm@d!N8Fn3`vI`t-fFtP1^N-ye*oJcE3WuK;(dxg z%~j;kc$U%dc;@%0%71bjQa|Yquk>FwQCvS}%LRv(R`xJ1X#6Y&$GHk*6l>XWZYE@j z;C<16(qxX5`F{#5=F6rfi=j;J)atlUHiN~c&8KW8)y)%nvwjDB#PTwCgwi;0@cDOO z{@0b5<1l;-Od#QRA$FV(;VSL8dHJMnZ2D&7lFbXk7T`l%t88w$5m;Pn-kSW@O0zsd zrtUOfMiuRJ%{z$;Wz1>5oWqfAXZmGMY~IB=kt3oHD#;Pyk}01DpG?fluuMDe) zPRpfF&_mpZZfTW!Ybrn4(!Radc-zuB$h`80C|bHl_qna3WjAY2tD~iV4CI=LmI!-l zvt+JiFL4`gp<6BcX+-nZa^N7a_Jx+~UIHFc^;?+#Va2zy8V@PHjbCp%YWbmw^RSkm z(;*ExNB0f>0hvPsS<871!| zcvVT3kl!i63KH6{DajG?M_LurmGI~nbGC|Ixnho>Y7Q)&Ln=N7H z1hHj~oVoh-+^l7u&Bjn?*g~7d(Pmhw{Wz=)d(hxnWhG4Z^_DN%tSNQqOZJv9gi5|_ zcZ29MxaBMM5Qr{=TTTioRJE@P@hkb7kP;{-ZYRyWXviW}QRwYjhX;boykRBz^3W+HBrg$(^DP{V+od2Q24=dNxLEH8k{!0^{ zVff32rwT(v{pE#rBcdNi)V!$*$AnUs+5DX zmeo>0dKlBP#%8PbX>Y2PkRzt$*U1U)-G*(FS~+T1qZl+N;w_g*^_dg#maX;+aLt@$ zw`{lhZj`eHaGf5@lX?u-2~AFQe+H^I_VToUood1D7F4@B-z^pl(eLtCYsi4j1(@js zd-WVoLkV9r#psg9m3+*;2;_v4<2E01;bWP6rey+$XEyO{)^s)z zLRcb>^KFm`--Cd@j0pcdL(sk~CXx)vrZGg!fK-B+Y)UX~A$TT(nHJ&SP6rI9wKM%t7bsloGMChMjY@N^_1 zwRujU;}{D;A;#BsA?|Tc{_UQliAZ-yswUD0KH4>!-R7Wd*eBz_=;qU)CYpGal+b#0RWk~D&9!+z=Ei!02X*8Eq*-XRnA8*$=@ zJu4nRVCDbT;~B*8W5QnZj0QVq*k3(-WzliN{w59M#0YkB1Uof?oi^-$B;Far-V}D$ zu(zb~pEK<5(oNnP!7QCE@-@sE!OTi5|80p^Xu_14b(sk(84*@$*gqs*PP zzG^m`uy-V0>j-AndinqK@U)`Ggk_|${~R;Smo^5ad)%-wX&iOTt6B5Mr1pec!rO+;5cZB?v(xxgfQ3^Oj%EKuf0D`Gc1K!D z%%JNa0q>h=bu$1&E6)w0#Aq!7l+~+0e=zMT5N)sfNg+a~~FB%-tiz3?KKVaeVZvKlcflspLUXD^c{nuLc6sFYQcMvj@v9GK^S$!hGn&)P zRNIaaV|$bkQ=(ZyjJa$frbKgum_p1IVhS-&NTsIZ%i!{$T1kO~)F~Mwq*=*WA+1Wr z329R@K}e61LLm_)MM8#@OcXM#WRj3WN~Q=oqNG^JQ6*D_98=;Ka$LzYAt#hf7jja` z3?ZkK%oK83$t)pfbhBJ+s+{@>j{P>QtM7v`T!dGwkAwx$x9%aPzB$ zwc4|S`?{_CjTvmW!!}y;hM`2Sp9y_w*roZ68AlV@Y?92FY&J_vG}*i)wOMYFZ2Hy9 zmW)=GjFPQFW-GZ=Eb~l=Ka(WMoyc#?sJqfF$eekKkhX6M$YmP0Szqkuf_B zZC@YCZTf`hcGVG@D33yt&PT1hz*>Vgv*k!Ite!= z;iX9!1autUUNm;1$*`-F@DQN)6S(ldnWY@(Gp>S(`)@ACqd8?#rud074IkZD;^>) zQG9?m1xgiPNqME>tB9)=A0)0*d^NG26l}egxK-uD#BGYNBkoarJ#j?w4a7r=ZzLX8 zd=v2@#kUY2QGAH_sD;A<15BgCa$oCng({BjWvEMl3IXf&D04mPTJ-)kwDXeIAlgQYGZ0m?sm$XLgez z68*<+^r^1WYa^pS4=S4WwI-oSMsxpoNRsA8{W+1){tF~j?M5$gqi-7-y%bau+U;r< z8O@<F`5U{t{ai}pF=?tI(UJE7D8DHWS*`pA<05H{G*W}2@ihs-z2UCkv%^8@#e)Qq~CkGPsM zjOGWQ8majp=onM-?uFVlM;AWZEi2{Ln4W`uHwn3z#UnH-gO?!3c3+8HRaL$_9YN`S0L=__l6DF z{Sb*Oc}+Hd1zhnZHh;TY@fN!&fm`f5id^|to4*yNI@|1L{Kl2bJ zY=t|L@UkS_N$BOXx^r(fS+16hr)e4m$@evuu!JpoTX2%z_Du2nn1;%nUG+kG2m znHU`1`PaHk27Iy;9^sn{+jesgop>7YZJ+?>b3cW1u5`+JFBG4;D#k~ zXG!EOqdcA-SLYJvDd>3l5|q!vo)p_?jUV#b_d`?*uPu8klSnSwRJiRzLV0-my_(xE zq}h5Q;f@OlFT0R%=Y@oqUr4y?Lc%L9By78oFnA%MJV~3(=6aSA|F+$4+4=UY+%ef{ zxs!79?Sf3-1nfO#TG`nbLxiVZ##?E*E3;Q+*JFo?6GxFdcozobjw|=tcKsL|3YpWa z`Z0^M(US6@$ta^{LxS5?!(KqTV;BaImY8&!~xoseRAT+%Y$5;Ph~Q+EQLQHQZBb+eb9Jvuulo8d)C z(@7z|%E#0vrHga*V_fGam%zeg#F}EVl))?&8xt9t;#5S!X5j0^ zvr#QG5-MVCrcp80W~CTMjM*unpmUPccn@JoqD;l$Tqz33=dr@@M#l-v6Nqmt#>A}T^ zueYsyy9|Z0IyKIS7}Xhx7#?(&8W=Er#8Ze-E=gAxu}QAQ@M*0xQuwRV+Eg{hTffL+ z$Uv?dLmWQK&%aLdXLj#?Q_k^MYp}xh7 z7V%$aXkTwfD7LsG+}|G_uzCkN`UX2giwA>|-o?RK|HAIjKq%VVkqAhYEn574RPXB@ z7#vDO7ON^+v^W^;=vj>4=SdiWY3st`#r(aZ|9AN`o+exw3gO8CWIhlHMuYvaMI9{5 z-hueSzP^g`MLn#X6qbf_sc@`!C=fpo3B?ecj>pOjM9U2gMZ(cI#K7%?-2jLX?}>(j zoq^tguCRv0d;3E`sKZD+8tfoOt#*cD9f8hJ7p;Ouy5qt2zEGf|Jdsw4)J+qj{{Dml zQe`go^+w|f86!o*sM%OJs+MCNJ)urOXyak*{$Om6lD)A=??7L;V^1P3obM0Ddjg^U zL5&)Whx>aw7WSciL4e@hgZ+^}U$8yYr#41#BrW-igjs?nYe>~~9xeX7BoT}!$LWO{ z#J7|19!JIdgT1C~2g049q~noLG!`BR_VvaOKoP~--+yIzfW-=Hc$0e|X|8`T9vaes z=zctZs}OBI(ie*Nh6j}IF*Stf(e`*WWK8W3NB8U<3=JCEABjamQe}vRyrK!ClEp<< zi-c-OzgvF$I%8}D2u8Q+P!#KrDCq0MFBt(MRpba&qqrmL*47{@vRzso3?vEkLw#LP zM$Yl-AdSVoElmlbd&2FzLmlzJ0Gk$g>_F^2K_*T#L^II9_ZtWMLee8r1&XyuQ0wuI z9+h+iBf<7wQ~rn^N#+FEU||M!_jYylitlJOiGq*ym>R%W$WVc>hMXyO+Y34v1g7(# zGbS{dj@vR~p$^ue@h=n$4@RY1p+uN^G^N&rt71A~DhetE*4fdgN#-s@_78-Sb z#3&}~2L5Q@!LXx7@K&sFU$~oDMl`%?AgHJ-6pRl>r9!h%NF9;h^YmdXhM@s+nw1s> zj4WWGnV8+u?zC-Z*WguY`{P5geS>ME;uoduuR54^<;I4q()LwdwP|_N`l0n{qc-l{ zoHqKSp4b@6gC$GU@u%f`X4>D1?|A(2U%m0h8_wc4-uU(7o;1vd(U3IuP&68jN}ucq zM?<}xf%e{b%#yJ$fFi0W5*w$k0!{mU09Yqzzn?(Y6?z}P3 z*tBJHO+#RF?dGN}JIsjE)fw2ox5w&=1>t@))E5fILMTuq*G`0t!9qOH&bb6p+EMr2 z)79JbVMzbAKD8V zBRU@?`&kx!0U3p@0cq!G%{rC`x_bNKC_PLd0aM%o} zYXmPqi}#`zCD$TQk70@ogoZF*qdYsYYGF+=VQGQw!M@-?2Wm9Y2VjRID=L*eDqu<- zZ*_4Y6r?SCzT)rI0^En#wKhxY@)fpDxZ6pFADv+oAh)o~fqTz7dau==A8oT@9 zo{r1GAu|(6PwGJ~*eyC`_K5{y95YlD1sg`%s1mM6Wj>0A`y|2k-f&E^$TcO>9mI%l zx^PEd5W_foiM3w_8fgro)7cZms33i&FC5+z?2%DvKWq$`*)Z8o+yQ(rf;Nl?$YU7u zxtu_r65S2Oh|$iS*>rGb`R)$4ci_Fqmo;Gusc+dDSYOl7z~;lsbyw|}7h^rL+rfZj z=CmG}HnFJh9zcV}z=25y6IEZI$gK{%4T;}!V(l#nSkZpI_E6@5=9&$)fu^Q4ftGr_ zYZud%&PCdfW8p5$6j1r-is%oW zEb9>?j*j_srmJ^|6=rH*&<@kHI-4 zLpGA@3ie_-k}|~wf>_04&4VT_EeC@t_NSP&Qi{HLOVftL?7JTo*1?R*&dA!nxn|3z zz~=f!vmOkXt%~s5cN4pv6^)N$DDzwni6|HuxemHb<6E9r| zO@-|fbHqSrpfeZ`TAHiw&bT|U1P4$)9R9;sMz_ z1p07J&@r&DBevhH>d`T~EbN9cM|0xAptLX4p|&K3v=3con-0Z6k9%L;A884ql+mYU zs*!d>WT6H0VNk@j(bCp_eoH%l^2cn^(H#hf`vc)-i%dfm}_!0Tw$`fiJ-V=;m4 zQ1^R#Sq~RC?SrWJXpkc@Hz)h_any~*x?}tTthqM3IThEF1$-c@)YaCah#Mn$6VA(Adbzcj_@+y@e#-9 z;J^UOsHLuH%ho`BW7E1?Yje}OZRkW;t#7RjtZhPP+u)vA!O18GIce)sKAb^eTd>q` zC$=uqMgxIujrEsos}0nzb6cORLu6_)rM_f|rAG@`&zSX+G-76uSssjWJ$Rm-k)^?w zTvjftWcFfgK_Wfq+?-5M#2DUUmQ)VPYRHnIE3md^ZCz~u8LbU8ZrhCM2#cGzb{HLJ z^qdM+8N_O04?C(hRT&tu>_e;8ApyS>WrhT^mMY41S?WRnYe9*+xqibIR=AFx*t7RpHS5-GVFPHc*&1l5+0nFZ zE64tphMF~jEwyVKYU(%FtijGIWs%hpABvzDu`88Dmo`Lh1+djeM;bu!4WLn?b?bha zYjBN^!J0)P>k`=~b2Ph~Sc4D!%A2o}egzT&M^>?innIYKLnH4BUWr-xG zfJD&_cN3?F)K~^!*@#U9Tne-w;0!M3EF6(#i-kxRZg$CWR+?1VGTpObZ0iYOj*^9d z_A##3Wy6Zy7%N?Zq{Bw6y@OmKW0Y}M_u7_XI4!_>O&c96kP}lt)>UXu(UkSBERQ*? z;;lEm17@hfCIHhlPMWYmTUUE&{aUTez?PcL>$Y&ug~dMmGQ2`Lvwd(k8R(7l>ZF6^ znvBGz5n%_5mEQrJ2n_6zRZ>|1XUb@@ah)646*xhJP%C}tu4s^5vU3yLG1OfwvBBWB z0^O~#X=_ts{aR!a8xS;n>0Q#LI?UGZysm!X(YkDfHN=54(7w+K_ICzC<)x*8jo^G8XGhVl`g6S%(N&{BdLCE<9VT$UdDd z*sXBNC+jNo+cK-Ot1r;eC8yF>cTD&D7p#H$#;sfA5QYVffd!QybEq7JVnV{4Aj_f- zln(YKay&GI^LgFnB$k%g7$S1$K+HYFHLIIiSxq&W4UJR@r|GUip0w#~EtOy2TpwWb z8jN#Si<=0T0V7!FgskTJbsPY&^j(J{bbF22UTL4@Aqarc~wMn-`JW4RFl!>G5;T?u>7rV2L z5err9sIa#_5R7(Wr-%-)rx&L-0lw-?j_YJ7?GHwAcqY4D_H`UvVQ}J>U+>BU+GY5K z53-()>Gm1JEru=3IyHf&t#!3qusJt3T-YVi0Ob6LjT`yzG)plQNJLAYOLE=2UZ7+z z+*#NzE98U~jSEc&B_W4XvLiyU_6Uyp$Z*D%d!x zFXo653sFoxdR~RG6sLcBa)yD{-4q|_4niaX2n_<*N)xHEx8Fh&{1j)eDP(TvIsN0D93c##V=eqD)# zqUbwr^Jo2(m0J6FLJ;W0VQ^x8#5DAtsZ)*{FcomAg#iM|u=Vc8aoiw|^33K6wTXi= z*;H_QlsIp|oyvfF?2aAe9yB%#F=(W?L4hMli6s?m8bUxfUUGbiEu^edFsor$=)hV= z7fLAOeVm6oc>IhbU(DxR`RG9hw+q1z)IEm_oQ7BG`34G@N9ssdlEhMn8y3{45u+Eo z!!Y*DT;KPFaN=}82Ugu;v7fnTZQLlCNf%38-B)6fWd;P@t2X19YYmUM(456f>G3$^ zJ#Wsyy1h$~Kw}86T+sNIxH5swu?0d}Y1A!M z5GkRA4gv|q5ITeonw}6Kg%pa4qGG`YcCjETg1!5qzMv=;)Yo3nSL}*iv3I>QYrb=` z^CjGSpXYa<``5c4@#K8YoVC|pWoFi_+52cHRdyaEd>vLJLGQ#Bj*c{UQ=~COb1adT zmw=X9D{1&@5e&Fj!T*=pt>=!<{H**u8K~mg%8FNdM@}2&oD`2vQza)uF~7ps_R_Yx zx>ge~5n4H+xtkM7z!ej~i4N_*%H&P_5klG7b zGwZw-2fZk3fhZE0_(jqR*x)ExD%l=#3U!m9`^|?fkL8!@*QNQx3fV@1?jPBL+t(pt zyKN~V12?#(A#$r4OP6Fti-X@@qkkb;7?Q4{+Etf>8cppzuqIWk>&ATp0ZF|gH44$g z5Xq5%m4{9XWSE8pw1k7CRdwqCfp~F$OJ!rlmWDy6g@y|eqTVCFURteV8Cwr^_f85;h+s zD6D%EP#R&JVn*wRkIa=N5>AldghV;QHoGa>(gF*L#0q?WE~mIKM9V@wV?HjTD^F1| zIuo=P7HcFwMAkguA7T`~?HZzB8QBs9HJc;;Rgt@C>KH7S*(?#iV4bB0%48o#jM_eZ zHgiM`Y-CKdp-hliX|C*P&)4k{NkxcF9XUN?#F&iq*%L?B@TJKf_$e!@kd2?J(WOpJ z4f50E0je4*oh3OWVit5uM%1R9HLQ4p=G0}KdiKGm59@El7T}KNmJJB5?mjVD4+3fE zuRN%)tlR}+T#I8Rm7zs^{DdW8n1|*Q%5HRg#V|QlmJC&v(fl#nIn-Te+Z@!+HRDjK z!RK7~%QdZ)bXPUZdsvvTYADJQ3mR;!t^38ysbbXKK;1AB3$iReP{yRCj!Bs&;j59N zpq6DIToXcjs(m!dB6Ck7KVjsGO@o?>yQe|B)f@>3l?h=T6_W6wUeusirA8@|g8m3W z90}gZkk1N!r3}0>36M(YtZsVJ0;7TEwUk~s5{5TUnL((r`WCfYR9)5VDy zHGRT_*}>R_AsQ^I1(;R;OLf(ymFtqNrQjb+;)!myM1rN-NVxEFoQ%QL@m@w+@s-Sz}5V zPA<hoGxfq$Nx$={2VJe07(S)@0^jO&KTNt9GITgABkN}cw;n?Q1 zc-s=P*43hn-4N?kPaxtEi!BV<63fG~L9R+Z(?N>0gJ{99r7JT)J5s|yvX?C;T-OTO zVPimSnCGNR2yKZ)NWzF~9-jGj2E%HZc}L{TDy65rC;p{Nlx{o+Ih z%c_H1M~66d1*T$kSY@l5X}vGuLs|S;ELRjsXaL=zpFUB8N7KUk$ee8ni%AE|bS)M& zFP=)aIDY1Xg^5s7BI-+13#^R%Wnl@cdQb;mD8lkn)HRWzsnfMW)vbl?EImaWOWkyk z?KZ8nx)s4;iIv-qqIufp!vqgTvY<4_D(->G^m1pERD}!@3mGhxsUEgM#q^m9Rd-pV z!wY30YiE!u>M{HH$XDoKjB%?_dH{$%L?-K^BxJ)VI5lfViM$ihj zRcBixkqjcuYzZBtD>ogLrm$=BQ>tH%Y8r9obVoNfV$_HU8KXuYmok0)v<&QBO0-WF zP2yjMQ<|evD2|HuY;`xMw~p z)BVPf{bZ^uCb<*EvhK;!CKLlM3rvgFO0BK3VShzk-&mpKtjd0W$WD+5W-wbJ^EV7r zXk68W;@stFMM5w^xuv>FwIycuo4$YekS7s}fMUpmVBQChZ(ruv^_r(%bO*x>rWw{^*+eQ?wmjll=vpk8hj>nsPQqec zat2i-k>=4;$B#~tu>Y8}X|eg0Qb$exD_2*3zNA`Zl}iLwGZ#xL=378XN-Qi@$4H&a zsOu#ST&$kEeAR<{wrY?Z3S0SwQ|ftaOiRvQnV8gYEpc~Bd^NEM2>9j8GC(49nAz|q z#Zw3dOjW+D@nruwd#PqGO8iGmrx*lr8g;$|A(`dsGlVpx(tLSmg{bk+4QI9Hku7C- z^s+OkdQ<9A9I{VUo#_f96sD{ATpa>pRb3^qRf+n1FV}cdNwDs#gEV=%210%`#n|Ms!9+iC^2n+*eZC}@i>%?6>+ZR z4{1enk~H(ebfyJ8M3skZst^#v##vY-h3OU?5LrE6(CGKxJ;S}Hl&A@@o%uPnr)R$I*p zMtNvQnFJa`&M%K|B#fRgLedg!)P`uJL?Xo0iuTY|nRo*loq$FR`GrB<_|g>{86GUi z7mFgzs5b>jzlEGJt$=A&P4o@wUFSC<*W!^|TvZ|wG7zQ4v7VLXWj)3J>nSs&a#>>E z9s_zLsRNiR?_~*|XFgv4uoYA-3NByH&zQe7xVpOEs%O?-7Qf3ine1^$R7T#5UQ};Q z9ewE&ED6KnLcS$y`O-?+zfx-~&Z>I6wt<}`>Zl-Q9&?C>hx=1BnL&LY8B-b3u+k}_ z5kg#EhUbh4no?vLf-!8tSFPJ5;TZWI=G9azl5JNcAj?`t`mcO`p+paZM{hI2{P3_l z6%>gEAjDY5bpB}`nix}Eim5r)5JCuz)G+mHjueHZ(m?4YwTqJLsEcRKg7*0$TQ!o5 zAACg7rs5-N;4@rK@CjoxCruqEnm>KC_->MkfWSsgHmBzEtN9rai!Y7Do0ef6pS9*o zAV?73j1FxhVbS0>c)GUsz;em!k-L(#q9F@XI;K$4&~*`^v&X^!zG4gmMY9`Zds=*( zQXM?`IWbFa@-0N!I}P0fXF(%LzReyM3(^%Dm-V49OF@m9%P7!1?DPx`*pD2e31;F^ z7wE#sGO>cj3c0L77n^Dmbs=%=U=MU@D1+E`s-<&6SV(f;<#rQIu9kE>-9|JW=pm{+ z@hNLC^^s_HQs1Z_Z<&wcvtwdr$tqeap8;nhu9`&Q2aB!?f4P8QYGWA-3uQrJt0Spk zm{zvHj;AbP85!be>O|@!QQa=9JKv6$F%!>(^dT!1m#qDv%GG*_nvq7K4!=Be-E!Ec$JC5vQ%CppH& zCG$^oMBXsMtXVkP5309h zD8TKG216upA*<@jVk{1IO(E^7rUEN<_-etx*z6atMVeCAxUxYn4QmYo=P(2_bQxY) zEKXOUEzyn}H92i$#&MFQFnQWkSz%$(5KMCXMRL@C_zWPAo z@CGkKjFMWSup5}69vC)+q;=vQsJ@9LKATUbts}NKU&23&#ezt)l`PLtBPDON>vi)d zm&2IMDHggZPF`hGm7LRWL2mB^x!zm#|d}EL*4rcUxj>(mWVY zIw;ia%T~QcEImImtY-8kn6M+N3q-kA%eW~Q!zkKH6K{eU4om;ITO}Q4aTFP85+c!s zS3C#VRufVu$&(k8RVXu7{3J~fG5;a#9>Z`-a=2xXgz>Og_8Dc@S>jic^d#vqlH5~e ztBXoS0Z6)>h4V8)26;&Snm9?ahbE4aAgW|ShrnOHrn&~*qUq|@f(ju$L&lKqr3D?N z9(z3hRTjy*I}pO%k*f~#NFquSED3W8=}sZYWGS^a9@Td0Y0WM5n4EeW5~Il#t)&f> zQBbJ~8`i0+)La=>>-_X-X(PwY4jIOh(w6Q4zTP2+c;e`p<7Z3C;&{nxi;go(@X`&X zVEjxqTGcFkB!5dXmZlqGwNiBhMfE#ca!ciRf3$3i358Y_MI_tAq9ioh5$so3Ya?x5 zw2-(L(rdoB*LfFQ`3aUME8B*eXc0Fbp)NAlWgbg^gxx!>wM-^!6B#Z3XU!=iv4!S~ z$J1QwdgJ*@VP8*Gr`rMqh&2;TMy4#+r9-l-mx(J^ zoL?05lx^u{mz6A({n7X^jm!<}^f0xxbu6fC;Tcn*x;ib8(W?y;-6_^UXSi=kHZ_B{ z5kj9Kekjc;9*-KiNDQe4ofUBcv;w_*SE)_hx}xefWP#vrm`d53S9MufytqoH7ZB_(%* zT8^j$A;KC+W|_8!-B)K$Q&`f6(W*vW^QwYF6?Tl51s?iJzNso&V@;}3(Z!D1u%TPNl=0Qih?l_7)74K`ljH_Zki6m`@c+5TnIMP2Mwx{|>0<#vV_uJ9s^kIhR z9MZ~JK6&)3;@So+t{Wg~4ArF#fvlosIpwlPqhTYvV>%|2REDkQKj~Hr`a_JP?WWlD z6|XtmShO%dEG|r8mi3k7F8RGAUn5B^3&L_lLCzxcu7Yo@AB0J){;JM&^H=reQO(^g z)nGs7vUHd#6T6Gd+yk*xRrvxsB_yX&-Num8ogsH$Nrc#4h>;UgLbi*wzn-)r9+r_& zqgqPGy3+7J;nXK_j$|N|W1F}T=K{jfG zri|DC-EPq}D7^Tn8r19-jTiO`V?`W~P(c~Pa^I&R||@q0~HI)OC)KuM|+8XT`T#mOyxr5T!e9Hz3lc42{~V_rUz>gx~*uCGi9t(IJ@=7mR7 zuB7wD=&BnV61T*B!O^!NE~+5}^7AE|CM2!79S^aCVB5pA2rFt$Et8#`czXsuwF2)h#}4 z7jaZ%At(Qf*U=L?Cr+)(>65$sEYu()QtvICHhQ8&=A`NpT|r}n$t+45IlhwYD&3-e zCNaru(bS>$LJG1@XVGsqkAm&gb$zuxLRECy1aifyYb5J4H*^D1$#6%L{#>@ zLnMB^gr5bKg8tYEaxQi0%1={BS8VQYG=HFxxGFj->BEi&ToOLvFP z(uGGbmhy+DNXhW2y1CXAXqEB^mm0YTwQ6TqU|308W>Va_u#LJ9y0UhXI}B9{_+7A=H9FX~nTm7>f<4D-vjU8V0NY$}-wJHk zSjR(lFg9vo^r{iJ(eQD6eWtxC^CIF++qRSf-MN>reQdt1NS8+PdBZ-A-o>SHy|_XP zt3qwexMPF{4N+B1Mhv!M)Pxjy8lDXF8uAZ=k78FSZhN>o34O?b#VsnqT2|Le+R4}i zkzNP_8aZ`WY@tTru~#CqR^sy|<{d~7Qryx>S`=;yR}YB zd7y;c5`$QKxKlW2e`$*F^oTGpr0Uu%qM)%JI=*53tn(MwKEtn%_aMg{52Aruj8wQRI% zqEXd0v)Tu7a>am}5zQ&<<$q{us3@_VGR+JPf5;O*)cG`LF?i;o4a6Z52j7JTiq4cr zh3IV45f!?qDv}!lIF@|9RJ%(mtadV*2r^>)^wF~W@6iU0hJ{`B%3|r0khPg%H#Oi6 zg1EX2dPc6*Z~nlNLEJPkbn&2?Oh@GCrB0llFmm9agnm8x_UM(6)T?*@Uj2IwN=Pg! zE=iPpRr{l;Xjz;j*-KRu+YQibUCsE070D6(ow6T`nKx2i>hQ(r-h>7f;lx7RZ0OOS8)I6Xne$xv27r z+@S@lo+zF^2!p!`bs~y zHq*%(^7FNNI>y2mCCj}cF=$Bt9=P1OTO_I=5l_fS)F>5BCY#WSI&<~j=tSKyD=5}f zSbU0$SG|=lPPP=MnF8t#S?47rCI(j{LFd&{VG>JDRMRMZDDK@*X~zB3*t~nm8xFT2 z;~w%5QZ8L$lR{^-%%reougMR(<0@BQruSS(j=d%p${vU47~NN~8(Af;Dt1Sofun)n z$Uc>LBOwb__PJy%#%#}c>hy^d!)>pXNT0Ce%hBr9MIQa2N;Uor6}>Z{Djucw2fIv2 zOVQ10tlD*55wyuZS~grotR(b`E+_1sfv~L676`$Du)U_MZ!r+Q*Cf|^+|yRPg- z+gdT`V_WMl49+0jO-pUXMtE_)c-Yl_$$Y%>tO~?}$Vy4Kbma_ThYU`HuD+$N!6g-q7&gg5k5=>d1>bxHhdd zekG2wKLJP5I0_3w@Ih8&60r=CQtcvpau{y8g}S*DYbcwI-G?f!B~rq}QvDv6Lv94M5!+3dY-=w$R*e(k(kcViX#p zhlJ=Jb)Q8=X^N-ruZS-n(&ubZt)oZUz}E7?PgbQOyKiA>=QnZdlS@P&XtYi3c4X0J z-n%`ZN?I^H1j?SU73NKtVyZKPryO>Tqz1MDhsTHyQQ)`4~tJ}3JL5~rHb43h{jnmWZy2tGVOK&&8Sb8 z8}~<9QoZTql#ogznI1Am2KJK3UU&e6j9f|9)X-hH86!MGNrsc;TQ8Dvr!5*5*ua1jF;%#&PlShPr%m97Rg^d#*i@o5eCN~N(uV<{uy=50w4De-%E zMNrIMSX=2W@G`s9WXm3}MwevRi{X=0MNMgyAZK_DC$%*j9@-SfNSJdnW<$J5>aMxf zvLFtZV2h-x_>|@P>V~-AR~tNtaQAnZ)ghW1Tw~q$s3E`}bRs>7EJWJ%%2l06?Zwh9 z*RE4LuUUd&l1KnSZs5ty%aLqJxg_=C^!`pAH)`Xh>-5<>dRw3A1L!|f$`+=r>D=LQ zOCbls*1_RU`j|Z1%Ys7Mrg^yuVP`**EE}p7V#}pDg;nW_afe!moEh%$R2GeDNn?Z+ zuX?IU8bz zSx%}=8g>ZG*C-U%TbH|H*5&4ONr()Ag0OUxp$Z2AZ5Gsc_(+x`5@MD|Imij(5A=#Y zB}D97Fb?KK6c*UFhKA*WTGuU*7!Jv<=Ot1RWa(kpE?NnBjKaLsf64=q=h?(hJHYb{`%}BK!05 z#1si1X`Y1cisS_?gg)HQeq4^-c`d_63e#QX;Kr)%4R>*e2Vtyv_98X}tUhc?vUF$FiRS`4QK6%vHvYPNTO zcU-Lhs>cr03>Owu$^y$Art+#BxGEDA5_NQfhD(en`>>1=-#)T{kohjLNqz98Zo&E! zICVa2EVpV=uL0b!qLFr!hj+^JM0vwg=8|ry=u^(p<=j$4Qd~g<<>2juu~PlAgNm0y zTYV=8LDFEV!~LM4CnS?YB1XKqgJPrGV$qO8xc$f42oG$Lu&@+8$ZT|xCh&0n)Gfm?6=S3cv7Sh@MaiwB3LubcNB@6cuJ+4~l&KxsI?&e4zJ#x~- zQ997dCD3bA#Y{rgJP4N=s3rIK4@^-ghd zWNG_E#s(Hhe*3-}+(mhkxEXGrQ-3c6I4$v0Lv8+7Qv9zz@xLT5FJ%1YlnspE^(xLU z?t7Ivr=D`rLQO~r53_(F2=-O>vL)ppcna!7FAVui$T>_G6XbC;vwoNzHR%+oa@9tk zSc#C!s|yn!&sw~;iT0r6mx&2BCp1j&jFKE_I5AIoo`9rb2A}Ivn*UkTscX=NH90lC z``FD{;WRZyNoy!PNq){s9{~l!kTgOP{55eXID*#f@$E!g57~1ngJnf4NM+*6Q9`cz zq@du&hr43Yq>)P$ah;G+9cCM9)+9R2V->qB&=leO5`p%9rotLAQqyERSoKn3T9!gsxGff|%Z4D<&PPOP-j%u7D$ttmhXG{hJ?jTTi z94Y!TEW#j@itPI&%lYy|*3fX$Ox07bWk`jw5S9bTF_vcri-vdI5ZsDj3~fQ}9TCo^ zEhdX&xfMrDMmbV0^i~T=%9M4EC+kV2T#<&SX$0MEE^2)2VifHsfMX9a(50wa7xm=z z>6+rEiO*JE+RGB@b)4#RiGu^L`LN>sh!3w*Mr?sbb!GDDkk^}BWEE8Pc%LQibcbG5 zk!7Vdsvfx#n)GUe`&d4n47!kwXAXilAYxB4EYyt-D~(V=iK)omjzno>D1`?t=@X#B z_vP|*4P_7ao}4mORy!GErl%saro2+3XEIVWlqMl!$$84pjoXuu#4uvgq-h~BL|1a+ z=HT}Vq$MiF;S6^}h_wvHBp>!V=t1$2;0#L`-L@oy?g?5#oY45rP5AW&Q(1c7PzaM~ z@~=os-NLd~pR8wUPjrrXDDWqOiIPVXhy33vPg7$AA&ENZ6w8U1#gS^va3e`|-tD19fckGW?WY7!Zpfij>Y6$!4YJQ*?cfS4N%MutU`U2srsL2v8rY3kRT zHjS?rJ>|zDC$JCdI2IR(4~`kC-!Yry<3gJ_r~_MciWQTMuyD7LMvyefpm9ZsK!EQzuQIoRL0#MEdM>^Q~q6Xb4}kO>{|H zB#k1^n?s9>&Co}0`3hV$lul&mGg)j_TMmaPXGmVp7(F#5Jv<#TJn!G)7GZg=6GfPciX)RwViBGl5fTNFVH1K+%fo(jEOq3_!3oDq&z3C9O4~I}>|Yt)^**I{{~o>i z_DJeNyQ$%andE;h<=;PY)QZ(w)~xXX4c6k9pu%rLyO6vd2Yy`BW@ptN*`)r2HFYkm zdqKVP>z{EzoyN5e+%e)mBc31e!iX1Bo{~aR8pZTCqN2xRc;nwsIipVP2X+MMsMtP# z>uKx8zWZmN4+PZFpFOJKsAE6avCk)U^p}rnIO@dY$3AK}bX?W=f4eBKk>-}eEZ1unm47>-1|o+__e&MLgek9)^9f!_}Zlj|n{d{CfC?{2W{Ss1vK=4hwMJ zD{)>g=TemK@BMWP%1=N6ZSeXo%Gr)`;@2g=F;h$GKN)gfPM5%&#FD|~*WSW0G4KOp zd#IdcC}$buyqt9?CllPuc?9J&mRCKx*-Pwel(PZvy_^;@g=$IrtOP$2uR{YrFgAe7 zSrmAq*iI_vVwAIi%Gru?vQf@a`20hZvzN;G2jy%BZ-v(cnbKiipqviisew0&9g1=2 z*OeD|li2%^I|Q$1qnynsr!)AyC?}c9c@5>r$-{9tv;s^_n@33rTz3s2>+Mg(G=CD^?8u$(<$&K zaXnCdzNj|a_ox$Vwl5S?C)RvF{NVj?wNm>Ybz=D>?N}+}Oy&LBoEM`${@!1kLB27a z_jJeu$IHKBKkc?&xVE$ZLgi!l;{E%Pe|$e&=ZV(eN08UELjGtjwea`;DyzGQH(5id zD-x=fJ9KLhs5z=tgWx_6xICJEe`3+?2zhpK4PrGfxaHA;HOSVy<0DVFu0d9u-~U&S zHVju2NqMZHs31~p&t%^xHSfDHmj|BLP?pGrhPJSsUVQHwdqd>(Ll+BqD-xNkxx~nw zqBRIadOmCxYd2Jj(?$g1A4LL<)j!_n8Pzq6n{XQK!D^?eK`<^7IbF?S`Ta^^BxN2P(EJ%Iq#=X4&@W%pL36^D4!VNBjs;Bluwd>F0XaaL-}O+ z=iK7}%BMtlzWl9+@~QIAc>hv_N6UXR!lUJX7U6U7x4!I+a4mm3-v1im(eizMbNe?_ zAcwxFp7+D!QQki9g0f9WyGICJ>6gO@)HJ{yw6kTi-#J&gvwa}BetISKkZEZ7UIYBHvTa2 z_fY>QiC>NDeTjG)l_>6e}ql|w|{2w?XzY<@Laa#wI&D)_^ok2O868|1s zN{10&fbras__%|toSwuJGK~)=-USPh(Zt80eI^sHCGk={<`VxqA>dd(@onmi%dwdF zqv)?y#Q%+PauMiJ#TX&O4O2my<@ku^J^gN{HWu!2e0a%ln)B*~B-& zA>Ks%G|cyViC<{N#B`rf55L|s`q=wti7zx9dxLmAl>a61<-+!olJf` z@nVd_dx+=Zdbbh(a*UPp4DqpDjlWLZ>+=C|ug^EcYr~G$f}ZpK`eUq>-kDnF98$#c%CVor{tN&%hdw_2wz76AlH}S#n zm)b+WdOiE19NTZKnnyF|*?DJ@{4>}%)_p}iyqtv?KPAMye&-Uu5&B^raj*Xq#Ahal z)5TsQ{yX&cZsNC~{LhKMrNJaQek49C(YPy*mF0@`n+3f1(TV12Io~ z50un(<2F{h&WjBi?qD$zMSHY+Ua;;^~7;{wCrBQO-TYZ$dfSh#wF6XNcbg z`PYe$Pq*`aK)fU7-PgpQ?`ZPB5kCU@vmW%Kemp|{ojt+in-hNr{nD2BjnJQ6h<`rM z%IQbEGvP-btJ%c&V*ch49|pU*n0V}XJKqZ8mqRbDCjM{Cugi#c zpKj$`PdpX&^bX>?V3!{veq|>s=Skvk9&7w%;zvUdze7BIlF5HT{BhL(7vjG{AJ&E6 z=k0%57b~YZ@y{@RjwGH0ef1XcLG`ViPl-<)XS@^am7g~S?Vm*aBKY&eiTA{OA5T0l z*~*_yd<67xKJjO}n|wL(mtkiwApTjV$zMhM?G)piiQj^Dzn^$A^xk8{-$<}>&d2=l z_IY$T&P)8R!*E{WZIg{J!Fjx#6pWu$#G61*UPSy7tbf-N{{`#Q+lae;e31B9tbd;* z{v^ivE5wt~{_hdrbBJBnSHy3eWc)Yc%f}n9k9DxO!wyw)a`0p4e zZxdgL@%%aQudMjkFT@+5zv{tH^!C^MIz1AI9|wKWgLq5C{f;F*F(DKa8%z9Ath;9s z{}kt`U*7&r(9Q=FzYTG%4#fMy-{?!cF7(a_;=aBWR*L;qh+JY#~DvypgiZR7V6FYRD_JMjq^KQ9pf9P?;5@!ZK)&KJagg`WA9`0*HT z_2CzIzbwUkX-Pb}wUvJq@lWAD^ddeO*ENiI*Sc2Dc;dTe8J|PE@(APeiMN4Yv4r^Z z{Y`!q@j*R}UrhW^=+zCxe?dFkNqp5e|B?7P zm`AnYM|gjo2YuU&_=QufoFj=3NjBb{cq00DF!3$0?_-GHg7(iL{xa?h%$6Nc)CH@lHxsZ4!{1eyT zUjMJUSUG2s{7Bf%ONd{B_3ZV;Up~spxr_KP^y4<-zremcN4#kRE9WiZ7xy*(De+$L zr+*^;Ts@Po1HI+fo88ZNbK-SJ8*fK^J^J1CpO>=)`gsV+H$gqqh~Ex9?0E!U&UBQM zNAiu)kLAQa?qT&jjreZp^EJei^h9!8OZ*e~QMVEAfa`sTcwP8`PZQq&ef~P}yX>^F zkBI*az4smQNx0sBh+l{IP2iV#ySRzYh?9AAZ0N;>TiMzf61!*7NTXUkm&A zHSrYa!9R#Mm}K>A2>b8-vK{)lHSu3D4m%OQ5_+Hy@ke1_Qiwk`*v>nN_(g{sKc4t! z;0uW#o@DaNiT52~{6gZ>pvSHvz7qO;6Y)%}kM1SD8g}*(;&n0ao+UmB^?8GM!C0&3 zhr~Cf82^^|mx;#zB!2WL;|&_>>1oPrb;$@g$8;R#(p4?5mBkH-8 zxciYii4TDNeT{fI=HvUsUxi-!ig-7)|F6V1VcgbjW9{Mn{wU^kGveRD4>^MP!ZG&! zF2w7hANv!RXIzJ4Byr!roJ@TAFq1!?_|{D03y5dKe^^RoTKoNtNW1OMSK;_aaS4?M!k^Zr_tZ0}nW_jr`=x48Us z&?mh~emus*Fya@sw(`dj?*Kb8i}h1ps`fCL7XOgX) z4GH$@@(UsV5b-B4U!EYo4R-Wp;{P6E<-SXND*S;jiRWPc{z|-6ODks>#c ziQfP_JA?Qm&_BzG|DIvxtRnsp^x+2LiSSE3?(X#|X>R3gA^CqBj_n}61%Abg#68b* zH}OqFt)S0{pM<#0kHmXooU}N~zUTG)9_1WKydnJXF2p@gw;yrOhe;uxHrLKKfw=F- z%^}_q_0A{mc`v6BKVX)Xe=hND@WU@B-leO_-$MLrjH`wns<+P;=)+dTJ3yaoCcd|y zeg9tKU%=0Kf%t2gCf~ec_47Uh|GX{nrqJ_Uhlc{Ta&FGZxHwL zKO{bItjT{vd@$DCzY|Y_A6_5r>f`WE*o(Hr--CbEg?MQlJ8wVYeY1_vBK|G(VJ`6( zhnsvU@lBY&Cll|Feq2X<1m@i);@=>Caxd|{=-)?)Hyma4*-iY{B;#KYA6DD=&%~24 z&T7L>dONRxy=zK55&GwF;yvqI`Nt7II?;GK@l4E%Oyap%4;B&keEt)Odp^UZ#An04 zUrW3`=AGvi`t_Eg-R>g!N{rhFi8q9ve~kEt@avu>-gvgP!>h!9Y;1ft@eg26KOz1; z>i-S#AEsJ4zY@>Hyl#Mc`St#a@z#`hZP?{j#MfZnB@(|4^%+Eb9Q4L$;%8-AJ*N;~ z3xDZ&;(k4a#6QHms3hLRijSQ}{05Bs3y6P*<`3}U70q;e;dz#f}KJj6gr$J_g+#80eiygl)UG2au3uY|ozCO&Sul{1cbHuUOD;vEt9$R&O{ z`f(X?FXv3+C*%4rA^tSZdq45=G^^)p#OtCx-y?n?;&NXS_w)Wjd}=)_zb^cR1Lf@q z`FBTx@z%tjNjBb>_&VsH;ly8sKQo#5bolc#h@acY%AZHPJ?3vV@ni6QKJgctS~I@H`w{W&u0g#hZFx0f)dpC*rVg zbBX^5Ked4PX6XM4;!Cw*eIBJoDhW4noW z9%kqLocI#V_n(Q6fF7%Z@#5p>u4YzFGvak88gEOy8{+?6iTA{K9zgu#WGiPB@hecD zDa5xPYVs!#zZH6BA@SUHCcljMP>jzriF>^6V&e6BS~=GdUkCkgJMr4s4|<4r>t0sQ zQ^Y4>z4I#Zme98!5O+KNEpgwE_=~vvdyQ}%-oM{qd>%%;J^a|t#C`ntBR&CoX(aL0 z@EfKO?}l-hLA*ZZV-fM&F)G4F8bvr;&(Q%ez}kMyS2z>d62{0QiWkBP6reEEX-FW}!1{~7K17xDMtS2x7?^8S4ket0Y5Kc?ArwI}X+ zY#8x_P|ghEf5QIe5bum}E5CUY4zJG+dmFou_$AO|*AZ`*ZC|*Fc&!xUw-JAIyzzU8 zzt_t67UB&j8{bC!$xP!P6TcYk{yp(Mh+Fi8ngf$~lYpO=$m1h`ax=f%pN?8+Q^fL3?f`e%2s6?;pfZhktlL zAN$twR_(#NFI@b6%#B*VfekcA7##?>V z%lpwE`gkz$#WSt^PQ)*QU67}fhr`S9^G+u2_k&C)e#1oj{!-#4-Ho3?-1leK5bu|4 z@>di0ecqdim!VyD5Z?iR>_y@qVqCpVJU`RU`zi5GSU3GZJSW}c8$o|~yR|~Uw1`~&RMWfQ+9)7qz)_#Dim6N%r8@pBgOO0?(q#6N*w{WtNa=Gu7=gumwP z(+c|G5aL4*G5H?E*BxwpF!8pnjUPw+5{!qb#1Dtv&mf+XVC5_%J^|~9rNsY0JY*H| zp^#roJQwY9E%9NnU$+o%2mSm2@e9BoV-CIj0`cjS?YjO;{I@2?KP7(jG~+)IpNM|^ zhxnnG4~?*%@c!K}#>#0;eB=z{9f@C!`QD58F32BC{5t5dF~ons^=1;k2XVYb#Jje! z`Ya>9Q!hl0i-_mK55Jc9^|ej@7UBz=8GniRCd{vQh|feE^$+4X;D^J{@^+qu`W#K% z*Y8QhXTaYWM!Yff*jVCehzrdm{%UW#u5997PBC$}zb6vk0{e0?arvQ^aI7bO3dYH; z#Jj@p{1@?Ox>-4o6Tck#>ILE>ab5o4)+UBc233@B36P{|@wNACkZEa4R>N_?_sl3B=2iO@0pX0*vPZ;?F_PR}g<4 z>$}s4zXSVwA@NPa?YvhL-*Tk!n~9ge{ysq5_4wn&U9Y}Ke8dq}{%+zo%rX8s@ylSR zejz@)hsoE2UG;wHk8$PCJ8?eaFq6Lz_QZL{(Z(Mo{s8*@IpUYqHThk{*P@({h<^dS z_bu^v54CdsAl?z{lmno@y`D``{}#kOAF&vo#NWp_A3%I6{M!=Zo1iC8CjL0u zVKwpkQ|-F0Ainej<2Mrb{NbmG_lCXOMckji@D6d`pZKcKPP@Q+I=r^f8N5M z#Qk|h379wDFPFhT>`wg6nRecR#Ft`Tk0QPc?KYYCdGMp=5kC-iZ9egZD5rvWW|Gxs zCGo3K&iTYI#(M2a;%^;ggBxl#Ez7 zJ|^z@v_BIcf^k?Iev0?k+Jmf|ro=Be#Q5RFKZ4zKf5*!?Y_Q2Ek^EGYKa9A`k0tJL zry0ck`DWR~Th_Ak785_VtML25Xt* zMdE+Le))6hy!ADz;+fDVO)!tWoY5F>M-VT@`nMbLT#VWswp0+2x3GJLh-0!QILfoJCUO@aLj0b;Sg4d_Gmeq4D$&Z0wbPe$ewC85x z{`}i}iN6AU`v~zXyV`l5C4M#9{|(~4p8bgU9@OU>;tk=C`uz}oy`MwRbisIWUVfz2 zX8`d6_&KA9e=^zRrx5r2j}wTW3V&lE@wsiS9N$m#`Yfnp{7jN>1v_;y@x!uB{yO5n zU|oDW@r@^#{6oZVhM({h@on%|UnPDO{Dk+3{}+DU*TnC`y#AedtJYSZ14i4cx5JKs z_P!xu4h&g_xn;WCq4r0 ze-XISE#eJBZ(marGeakKo_#ApY>d zR?Z8=+ruwV=OMEZlHh&VoH_7B1p#Qx+XQG}hi64aaPavKKyU?9@ zJ;Y}Q5%>MeX~frHzGo7D0`qziasPdwWyCw;ysL;ez`R&Xd`CTNhiizB!uY?L_?M8s zpZGOcUu-8n5bg6H;;+`W^S(*^$>zpCCY}htXfJV(3;apEKh{SL;jelBw#0jXbv_L9 zr9H_HhkfZm-0v^)`xn~+jQb}lkIxlZ}oCoL2s0h{2OS`lZmfE`>!Vc z)B#rh<;4Gm>)lBFB_YglVY$Qu<)1dOw`b#VcHPeZ!940nd^h@c0Pz;>?E905--~kQ5_dnpfcP}%p9pu4{_mzHKZqfFwyPFzIX$Nw_oo-enGxaWJV zB|aMUyoUHB_`~j3dOas%T-{IdK7O_n{{#L0AL72wIt%mI%m2?I)-IP5-w3;T4e`Ag zKc4^PIDSz5xCE9r5Qde!4)< zdHugfI}9i8`6A-1Xi9;s;De;dEGyXI2Ght8bA^zd*oQ`?jp7;MzFKD5^sa{ zd4hNa=5-y|0k3B})bk+X17Vlj5cm1gnfS+;=bMS2g7N0|$It72i|^Mt{|Elb-&D>W zC!l@PtGBb)rw8#g*v-MjAH{q*j=0z7X5!aF{(j<1FfXyAz*=ei=;M_kB`{`#hRP+}kaS_|cdb#l+VSwECPx{2c+CGMXb&%^ z7~`-F@!@@~oG!#iH!?necoEipqlsVL+vL-Uw?jEu#P2};ONb9f{Bs5IZkS)^5$}rY zT}S*c==sgWpE=m-`2g|rV5eNadb?dU$K+oodC#AGkNAOThp&nI^AY|azH*+G-w^(q zpLcgJ!1|k3(yXeh_}KxKc4tZ*du@5p4W4Ef2-$ml79o& zc{cH6^vh+$=Rz;tNc=AN<@XT(8-C`a#9wJ;^?9E7Yv|v%iBE(b|D5<8uwTCrKN;6m z5A)L7;h=_g-WJ4<>|(q<@sHtW_9WiFxycVDJ`j3lHt|OjOum5lS7?Vy;tQaM&mi6! z*Xz%X_Ul>*eRv(o--LE}f_OQ`)l0Znw?4}1Uk`CLKkp{AXLI82FLfb)ImUT1 z@x!36CJ=W&br$gy=$~BTzRoQr?tbRU#NE$4hxj=i?0PRHo&bMr19A5&2EyKY`@A{U z%1I-B8phQm;;|+sKb?5aF~;W-{{-b{6aNBw=49gDzvmJ^{V*&43gWLM8sA9V<1_aV zKX9nYKSF#K`u#29_rt#LAwC&;^#|fpVUJ?a_ukGk6YRV#iFZYR^&nn|@jQgMKVNtZ z@tdLFmJ#m>ySawA-?!{`$?Lfse#KUjuM2(qJn``uXCD(k3D?^M?ds+C!+bxK_>C$c zM@QoR{LEg&uWf1a#}c1`@;%?&&$}9WZyL#OOt5l1e(dt8{f!rqd~Ns-%ZM*M*5uD5 zJ{aTVV&avDoBVaey9_XXJMkFC`9s9}W8TH@vyrds)H)dB;Z>4vGRVq*pZLZ$#=j<> zg>rr;{tMQd2f**}b~_XATM|De+sbcG-1GN(5buO_(-`8jv3{6Gd?n_~eBxV=xAUG$ z{8ren%ZTs9I&K5;|0Y>E_Yf~U*7#Q99dX|0iSNKV=q=*@yXGGge;@w#UgG%}S9Ne6 zZ~q1GPYxn}IOdDj%jHvtTm5^He1#4oIgTaX0&%c0#8Y99rV)S6^%8Nf=PKe}&$Yz8 z{F{h-Irk9va<&nl0)6-l@&4oNdS560IQ*_Ji2sG_{h9a&L#>=f=r?cY*V-CCg!n0q zjdvyff__ns{=^@`_?bd{R9BNPBmOq#(J91VMLFjZf25g}a~*N-_gjf)VjMm|{N2e` z&U3^wao#tGuSWZSK>X<}E9WcX-^1=UfWPVOe0DpNZ%O>r6ypiRKQbKaPW%?EX9p60 z6LIa)#M{F@PA2a9d>(O+OUx(kzjIefJPrMLI`QWYwF_87dyzi+tJ=TqW6+8O_v_@D6ee;_^_>o|W-x%ck`*v%s{tvu&5Q2#E( zZ$kZ(iTgh0c;X%(n??Mqm>s3Wug5sKmiU5!CVvZY_iuL+_uuJzjkw42-zV&wyxoqgW%A94=eIZBmiQ9*4_%1+b@e0uEA;;e;_YB(Clb$}YUiCp z-1F0lh+lGq$*&;(5Y~rh5Z?j$bBX^3`*=BVzpfjIAJM?hdna+%cMlWyb;?u3J#P65 z@dMgh`R@{6(AxMH#2<&h`ZMu&VRw#%|KDB<}eD zbBMQVVe2O>g6S zh_}bQ_=))WolL%Nj=g&OFM=Q2g7}rtSM7+Om}cMaM!Xz$X8`d-;x}*M~m;fcW?5$DfGzh94EntKN^F!;Z8h?(L93+}oiabDVb~@l#vb z`Q{Mc48N#^_z>uyQ;AzCvDg*F{eHt6i6_DiK1ST{YkQu!-v{>|@xGXMb@HpXo9{m! zL_8aQX&d4xX#dW{eP41o@f)y?7*G5h%=e3l`~7$8iF^CpO8i0e*T0B&9d6h8IPpPk zjK4s<+tKKmg6i#aDcYeq@gEN|xkTdGs#xS0MBM$@(ZuIteoZ0n`}@ZeZw)`8koX?> z3Fi^N6a95H@yyv)&+Cb=!@6lR@zf(t{!Zcz;Ws`^{2}Pir-+}5`oBVa3+Bta#9zg} zz!$_*2UvZ6CO)s7@jCPEHLmB!*!wob+x9cwnRp#sZy(~t^-X>_@on9Vk0+j*VtgL) zOUD||CcX{w^NII^zgCldb!{j!qy`y;JBXAxh7^~m|e_Z(~T7ZdM+ z@pC2d3*jfMCw>mi$$ zMtnh2tIrnVPh!42K|K8!lYg1`ER6GaiNA&U^(FBSao%5v55>5ux1f4|xj)u|__0`j zwI}{u6Z?Ko;v0`QK9u+|_zr;HI zM&f6{Ke?OuTNo$Xh`-y(uIpLi4`bc5i};JMBOepLw!M|}9r0agx4((kh8=IT(7tz| zyo`{4f5Cq^l=#Fnlj}tMwG)gd5%+!V;lzEvbv*G)aNgO(kIA(13yFUQ|6w_Ce;(Ot z;-1fR6LHUXx|jGFz3jY?68CZbAL6@GP5v$7SIslNhjF9))QZdxYKRK%dwt%khtHsa%oBR z_PibQ@k!#Thnd`~#C@IhKJm*Dm-w3aROtCXi1)5->%3^4k-ifH+c5 z;^W~j9ZTHHPb2Q-&mivQ=MtZsY4u)A{5I&%Q;2)~{5;}^pq^O1S^OSo?`r5;&;G)T|vAZ#^FZd z&0xQ_5x;S)mH!;^p=i&yi2LsneM`D=+EI??!T#OG>*$ng;I zb71$MCO!h|uh)t9hTZvycwN|w?}&GWKl~5zTEnb9O)Biw`>PTBmNvv&Vg7a@-WKC+ z0P*LbKSvYabAX*Mo%mz5jb{<>54%=E{Cf1)3gR6Q4?K_fwXpl^h)>6QZ8LGG$=CzL zd-k<@?jXJn1>^i=;-5kftS0Vu{Bq*1Z*L^t3wG^p;@`o4*hc(9@Mno% z+tup7i}QP*@#oQD9f+?6??U{yepYTz z;tw=5-kV6YJ=XYQ;yZEPQ;E-mA9z0Tjzg`Sb;MuFGQNp; z*F%ioNBj?zzn%C;jZOY};;;5H{xFkXA9y?XyXHOAf_MBJZ~ zegyG@TbO(o;`gEb`xC#hnaPhN{s6|?Wa7WT4>_LrPcy8X1;k&)_*_c7A;#e<;uj3J zaxNl10po2w@i7=Dw-MhBJ^3K{4tEH z`pfKd@85UF+4~m6?>fYI0`b>jcM^&3LR@Gt@y)p2F~r+i@v#}ipE%e)$RYmxbmOJO zd%_=HLA>oqlRuaEcG&kTi2M3wBk^aU=kFoj5dOv^#23NtKS#VT_IKVS?)ORVA@2J) zKN7Fk$F8gPa(nfDJOblx?~ZlK`^3+I|M@lXW*Gm! z6MqcrsRK@|-e2wyv?SgD{!Dw~YX{l)dl0__>%<|%Ur09jG~!z^@#YXOJ;>xUiGPCn z=M(=Nc4QIp2cfUZi8n=it|a~l^!5eBkA^>d74a7*SUv9`?$1fzM*Q|UCjSHRA<4%7 zChor%)$k5GNKJg0@j5j9U7OW^f&oJ;-5orR1)8f`Fz`tk)3;jB)4*F0UkjcqX z6WC}IgW|QYkj=G zQb>Lt^!bE{yw>L@_&Eznej4hzG$OC{NkDzhB>COLZeuxb!P{A-({t}YBjVz@7vqhfR*-#_wQA(k0ZfVUh8ux>OT+M0812r7GnB>PE zVg;>_$ZLJBtZn>ulD`^$>4On@t&bm1k$m^V?2}g_@>(B1-X{4!2G}Q`M&z|V%W50{ ziR4o;9%`LopKE`q{8Y%d1NZ*A1MSm|{QGa>&N$=`v_d7k8tf&7;weVKoHp!=={qsm3ZgT7llK%+(yN2XDqCR(!{Lk>i zA0l~($DStnUGPudAr5mH`;2%;Z74bZA^ssIWV18vb8pYi$@acC@%5Oe#}Yp<+vHP; zkDXvVn|L7<(<#Kyf?YnB_|MjN>~rszBT)aY#9tX|azlupTF3Zt#Cz-H zkYft*Dex2K5r2A=$rlhGbA<6S;-8K;zJmBe?TxP{ehA`qml3}UdfCI0F_ zD}N{P%dnsI8u1nId*37e2K3Um#D5-a<^N9ndl-}EXWQrAUoVWc_eT)VLOGp@`|tB6 z5&xx=l{1w1Y4G#M5HEziODEnT!^){3e&dnG*Al-E>+Y+GzXd(8iTJy)%l8m}1ODMw z;%OM?PZJ*u{qPF$rpZ>%cZjF9HU1fM=;7aqe_h|?>z!k--d`_bzBD7=7mB_O@ydGk z{iBKd?`e)9?!O~BjrjQutegzu*JK%ANPH#6^HSm`BVKU^@h_og)(~Gf+{(X=_?EfG zw-7({XyZG;b(&zRhY$Wk^6$Z)c{3uPW<`Yme?ap0qTj!c$YTlx`JYLCGv-n4)mEt1 zXQKTX{@)1P`*%${`>=IH9x63_kU;XCI+%R-h&-0=;e&o8zXW{hQ_+T~3@4$zbMdVS%AitjE5A0&) z-x`re6NC@$Bl$DY7>`EeVe*6gPLlr(AHEim#}Enf?~weM9#)?Z_QNslL!1XDGkl?$ zeJ!lhF=PYTi7)85igK8}P!3FEkWUEzw=hUl9%^nM`Am|ZtS8c=NBQ!iimYsTtthkC z`Tkc~-lD7?6?w}lVm)%RDzaidvL$=3M_Gx!QSshA2FAkYJt~VA6)wzMv|K)w?_^|T zR~BSQVTs)FOPcs3fPF zq!dwHAo+&j+%8jCEax_PscEc7PDxQwUa?$BaY;p9kJO3N6U!^Iau!zmQohtB&sydG z`2Pt~f;O>_11~Tce>9JFnlK+1E~jo~UHO;n0I!F(vW|Nb_Cv>qk_P@cUR8Z6hZtxq zHVxmuFXJ*R6kZ`#r-a zLb?7uKb=lzWptXDf4{K{;+4Ozy0@nG-;2PVx1YBE0rJo55BDsVDNM`c>wg{fA1R+j z4?n-ZmdJy4 z;rg!^#%1a^uD)FVFRwH)SoU_2VW!{ff0h1UUhO6Rf0o@UpDDrT>TV^FO~toiB4>%rAj!Rg_awSzM8!PSF1sM}ichJ;HW2 zS(qOG^HZ!H{Qo}AeZC~i2Q{^y`x*W{fA#PA`~UeV)_$yO{^zIINco?iVl(A`eu}k& z>kohZpP#bt8cAE~|1UqKwRD8`1?#WvwTv{gZj1ll?T5b}EMHbXkB^t|efNKL{A=jk Uzvuolf6w1@o&0;wJ^u550i)n$1poj5 literal 0 HcmV?d00001 diff --git a/devices/common/dev_stub.o b/devices/common/dev_stub.o new file mode 100644 index 0000000000000000000000000000000000000000..308075da39daa55465ec0a6e4fa83e940fdfa3cf GIT binary patch literal 229200 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š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 literal 0 HcmV?d00001 diff --git a/devices/ramdrive/.dev_ramssd.o.cmd b/devices/ramdrive/.dev_ramssd.o.cmd index 1d14c8e..819eb68 100644 --- a/devices/ramdrive/.dev_ramssd.o.cmd +++ b/devices/ramdrive/.dev_ramssd.o.cmd @@ -1,16 +1,18 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/.dev_ramssd.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(dev_ramssd)" -D"KBUILD_MODNAME=KBUILD_STR(risa_dev_ramdrive_timing)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/.tmp_dev_ramssd.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.c +cmd_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dev_ramssd.o := gcc -Wp,-MD,/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/.dev_ramssd.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -DCC_HAVE_ASM_GOTO -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/3rd -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -DKBUILD_BASENAME='"dev_ramssd"' -DKBUILD_MODNAME='"risa_dev_ramdrive_timing"' -c -o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/.tmp_dev_ramssd.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dev_ramssd.c -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.c +source_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dev_ramssd.o := /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dev_ramssd.c -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o := \ +deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dev_ramssd.o := \ include/linux/slab.h \ $(wildcard include/config/debug/slab.h) \ $(wildcard include/config/debug/objects.h) \ $(wildcard include/config/kmemcheck.h) \ $(wildcard include/config/failslab.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/slob.h) \ + $(wildcard include/config/kasan.h) \ $(wildcard include/config/slab.h) \ $(wildcard include/config/slub.h) \ - $(wildcard include/config/slob.h) \ $(wildcard include/config/zone/dma.h) \ $(wildcard include/config/numa.h) \ $(wildcard include/config/tracing.h) \ @@ -18,12 +20,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/highmem.h) \ $(wildcard include/config/zone/dma32.h) \ $(wildcard include/config/zone/device.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/compaction.h) \ $(wildcard include/config/cma.h) \ include/linux/mmdebug.h \ $(wildcard include/config/debug/vm.h) \ $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/debug/vm/pgflags.h) \ include/linux/bug.h \ $(wildcard include/config/generic/bug.h) \ arch/x86/include/asm/bug.h \ @@ -37,7 +41,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/sparse/rcu/pointer.h) \ $(wildcard include/config/trace/branch/profiling.h) \ $(wildcard include/config/profile/all/branches.h) \ - $(wildcard include/config/kasan.h) \ $(wildcard include/config/enable/must/check.h) \ $(wildcard include/config/enable/warn/deprecated.h) \ $(wildcard include/config/kprobes.h) \ @@ -76,6 +79,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/have/underscore/symbol/prefix.h) \ $(wildcard include/config/modules.h) \ $(wildcard include/config/modversions.h) \ + $(wildcard include/config/trim/unused/ksyms.h) \ $(wildcard include/config/unused/symbols.h) \ arch/x86/include/asm/linkage.h \ $(wildcard include/config/x86/64.h) \ @@ -89,51 +93,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive arch/x86/include/asm/bitops.h \ $(wildcard include/config/x86/cmov.h) \ arch/x86/include/asm/alternative.h \ - $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - include/uapi/linux/const.h \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ arch/x86/include/asm/rmwcc.h \ arch/x86/include/asm/barrier.h \ $(wildcard include/config/x86/ppro/fence.h) \ @@ -149,11 +109,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive arch/x86/include/asm/required-features.h \ $(wildcard include/config/x86/minimum/cpu/family.h) \ $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/pae.h) \ $(wildcard include/config/x86/cmpxchg64.h) \ $(wildcard include/config/x86/use/3dnow.h) \ $(wildcard include/config/matom.h) \ + $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/disabled-features.h \ $(wildcard include/config/x86/intel/mpx.h) \ + $(wildcard include/config/x86/intel/memory/protection/keys.h) \ include/asm-generic/bitops/const_hweight.h \ include/asm-generic/bitops/le.h \ arch/x86/include/uapi/asm/byteorder.h \ @@ -171,28 +134,34 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive include/linux/printk.h \ $(wildcard include/config/message/loglevel/default.h) \ $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk/nmi.h) \ $(wildcard include/config/printk.h) \ $(wildcard include/config/dynamic/debug.h) \ include/linux/init.h \ $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/debug/rodata.h) \ $(wildcard include/config/lto.h) \ include/linux/kern_levels.h \ include/linux/cache.h \ $(wildcard include/config/arch/has/cache/line/size.h) \ include/uapi/linux/kernel.h \ include/uapi/linux/sysinfo.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ include/linux/dynamic_debug.h \ include/linux/mmzone.h \ $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ - $(wildcard include/config/memcg.h) \ + $(wildcard include/config/sparsemem.h) \ $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ $(wildcard include/config/discontigmem.h) \ $(wildcard include/config/flat/node/mem/map.h) \ $(wildcard include/config/page/extension.h) \ $(wildcard include/config/no/bootmem.h) \ $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/have/memory/present.h) \ $(wildcard include/config/have/memoryless/nodes.h) \ $(wildcard include/config/need/node/memmap/size.h) \ @@ -218,12 +187,15 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/debug/list.h) \ include/linux/poison.h \ $(wildcard include/config/illegal/pointer/value.h) \ + $(wildcard include/config/page/poisoning/zero.h) \ + include/uapi/linux/const.h \ arch/x86/include/asm/preempt.h \ arch/x86/include/asm/percpu.h \ $(wildcard include/config/x86/64/smp.h) \ include/asm-generic/percpu.h \ $(wildcard include/config/have/setup/per/cpu/area.h) \ include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ $(wildcard include/config/base/small.h) \ include/linux/percpu-defs.h \ $(wildcard include/config/debug/force/weak/per/cpu.h) \ @@ -231,31 +203,64 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/compat.h) \ $(wildcard include/config/debug/stack/usage.h) \ arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/vm86.h) \ $(wildcard include/config/ia32/emulation.h) \ arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ arch/x86/include/asm/page_64.h \ $(wildcard include/config/x86/vsyscall/emulation.h) \ include/linux/range.h \ include/asm-generic/memory_model.h \ $(wildcard include/config/sparsemem/vmemmap.h) \ + include/linux/pfn.h \ include/asm-generic/getorder.h \ arch/x86/include/asm/cpufeature.h \ $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ + $(wildcard include/config/x86/fast/feature/tests.h) \ arch/x86/include/asm/processor.h \ + $(wildcard include/config/cc/stackprotector.h) \ $(wildcard include/config/m486.h) \ + $(wildcard include/config/x86/debugctlmsr.h) \ $(wildcard include/config/xen.h) \ + arch/x86/include/asm/processor-flags.h \ + arch/x86/include/uapi/asm/processor-flags.h \ arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/ptrace.h \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ arch/x86/include/uapi/asm/sigcontext.h \ arch/x86/include/asm/current.h \ arch/x86/include/asm/msr.h \ + $(wildcard include/config/tracepoints.h) \ arch/x86/include/asm/msr-index.h \ $(wildcard include/config/tdp/nominal.h) \ $(wildcard include/config/tdp/level/1.h) \ $(wildcard include/config/tdp/level/2.h) \ $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ arch/x86/include/uapi/asm/errno.h \ include/uapi/asm-generic/errno.h \ include/uapi/asm-generic/errno-base.h \ @@ -275,7 +280,21 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive arch/x86/include/uapi/asm/ioctl.h \ include/asm-generic/ioctl.h \ include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/linux/tracepoint-defs.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + include/asm-generic/atomic-long.h \ + include/linux/static_key.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/frame.h \ + $(wildcard include/config/frame/pointer.h) \ arch/x86/include/asm/special_insns.h \ arch/x86/include/asm/fpu/types.h \ include/linux/personality.h \ @@ -290,13 +309,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/irqsoff/tracer.h) \ $(wildcard include/config/trace/irqflags/support.h) \ arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ include/linux/bottom_half.h \ include/linux/spinlock_types.h \ include/linux/lockdep.h \ @@ -304,9 +316,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/lock/stat.h) \ include/linux/rwlock_types.h \ arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/qspinlock.h \ include/asm-generic/qspinlock.h \ arch/x86/include/asm/qrwlock.h \ @@ -410,6 +419,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/debug/objects/work.h) \ $(wildcard include/config/freezer.h) \ $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/wq/watchdog.h) \ include/linux/timer.h \ $(wildcard include/config/timer/stats.h) \ $(wildcard include/config/debug/objects/timers.h) \ @@ -421,6 +431,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive arch/x86/include/asm/mmzone.h \ arch/x86/include/asm/mmzone_64.h \ arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/local/apic.h) \ $(wildcard include/config/x86/io/apic.h) \ $(wildcard include/config/x86/32/smp.h) \ $(wildcard include/config/debug/nmi/selftest.h) \ @@ -457,7 +468,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/pm/clk.h) \ $(wildcard include/config/pm/generic/domains.h) \ arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ $(wildcard include/config/provide/ohci1394/dma/init.h) \ $(wildcard include/config/pci/mmconfig.h) \ $(wildcard include/config/x86/intel/mid.h) \ @@ -496,12 +506,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive arch/x86/include/asm/xen/hypervisor.h \ include/xen/features.h \ include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ arch/x86/include/uapi/asm/vsyscall.h \ include/asm-generic/fixmap.h \ arch/x86/include/asm/idle.h \ @@ -519,10 +523,170 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive include/linux/percpu.h \ $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ include/linux/kmemleak.h \ $(wildcard include/config/debug/kmemleak.h) \ include/linux/kasan.h \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/ubsan.h) \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/kcov.h) \ + $(wildcard include/config/uprobes.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + $(wildcard include/config/have/exit/thread.h) \ + $(wildcard include/config/cpu/freq.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + include/linux/capability.h \ + $(wildcard include/config/multiuser.h) \ + include/uapi/linux/capability.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/userfaultfd.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + arch/x86/include/uapi/asm/auxvec.h \ + include/linux/uprobes.h \ + arch/x86/include/asm/uprobes.h \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/linux/uidgid.h \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/pid.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rculist.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/kcov.h \ + include/uapi/linux/kcov.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + $(wildcard include/config/security.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + $(wildcard include/config/sock/cgroup/data.h) \ + include/uapi/linux/limits.h \ + include/linux/idr.h \ + include/linux/percpu-refcount.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ include/linux/interrupt.h \ $(wildcard include/config/irq/forced/threading.h) \ $(wildcard include/config/generic/irq/probe.h) \ @@ -533,19 +697,15 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive include/linux/ftrace_irq.h \ $(wildcard include/config/ftrace/nmi/enter.h) \ include/linux/vtime.h \ - $(wildcard include/config/virt/cpu/accounting/native.h) \ - $(wildcard include/config/virt/cpu/accounting/gen.h) \ - $(wildcard include/config/virt/cpu/accounting.h) \ - $(wildcard include/config/irq/time/accounting.h) \ include/linux/context_tracking_state.h \ $(wildcard include/config/context/tracking.h) \ - include/linux/static_key.h \ arch/x86/include/asm/hardirq.h \ $(wildcard include/config/x86/thermal/vector.h) \ $(wildcard include/config/x86/mce/threshold.h) \ $(wildcard include/config/x86/mce/amd.h) \ $(wildcard include/config/hyperv.h) \ include/linux/irq.h \ + $(wildcard include/config/generic/irq/ipi.h) \ $(wildcard include/config/irq/domain/hierarchy.h) \ $(wildcard include/config/generic/pending/irq.h) \ $(wildcard include/config/hardirqs/sw/resend.h) \ @@ -565,80 +725,65 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/dmar/table.h) \ $(wildcard include/config/ht/irq.h) \ $(wildcard include/config/x86/uv.h) \ + $(wildcard include/config/vmd.h) \ include/linux/profile.h \ $(wildcard include/config/profiling.h) \ arch/x86/include/asm/sections.h \ - $(wildcard include/config/debug/rodata.h) \ include/asm-generic/sections.h \ arch/x86/include/asm/uaccess.h \ $(wildcard include/config/x86/intel/usercopy.h) \ $(wildcard include/config/debug/strict/user/copy/checks.h) \ + include/linux/kasan-checks.h \ arch/x86/include/asm/smap.h \ $(wildcard include/config/x86/smap.h) \ arch/x86/include/asm/uaccess_64.h \ - include/linux/hrtimer.h \ - $(wildcard include/config/high/res/timers.h) \ - $(wildcard include/config/time/low/res.h) \ - $(wildcard include/config/timerfd.h) \ - include/linux/timerqueue.h \ include/linux/kref.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/debug.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/debug.h \ $(wildcard include/config/enable/msg.h) \ $(wildcard include/config/enable/debug.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/umemory.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/bdbm_drv.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/utime.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/usync.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/umemory.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/bdbm_drv.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/utime.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/usync.h \ include/generated/uapi/linux/version.h \ include/linux/semaphore.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/ufile.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/ufile.h \ include/linux/fs.h \ $(wildcard include/config/fs/posix/acl.h) \ - $(wildcard include/config/security.h) \ $(wildcard include/config/cgroup/writeback.h) \ $(wildcard include/config/ima.h) \ $(wildcard include/config/fsnotify.h) \ - $(wildcard include/config/epoll.h) \ + $(wildcard include/config/fs/encryption.h) \ $(wildcard include/config/file/locking.h) \ $(wildcard include/config/quota.h) \ - $(wildcard include/config/blk/dev/loop.h) \ $(wildcard include/config/fs/dax.h) \ - $(wildcard include/config/block.h) \ + $(wildcard include/config/mandatory/file/locking.h) \ $(wildcard include/config/migration.h) \ include/linux/kdev_t.h \ include/uapi/linux/kdev_t.h \ include/linux/dcache.h \ - include/linux/rculist.h \ include/linux/rculist_bl.h \ include/linux/list_bl.h \ include/linux/bit_spinlock.h \ include/linux/lockref.h \ $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ + include/linux/stringhash.h \ + $(wildcard include/config/dcache/word/access.h) \ include/linux/path.h \ include/linux/stat.h \ arch/x86/include/uapi/asm/stat.h \ include/uapi/linux/stat.h \ - include/linux/uidgid.h \ - $(wildcard include/config/multiuser.h) \ - $(wildcard include/config/user/ns.h) \ - include/linux/highuid.h \ include/linux/list_lru.h \ - $(wildcard include/config/memcg/kmem.h) \ include/linux/shrinker.h \ include/linux/radix-tree.h \ - include/linux/pid.h \ - include/linux/capability.h \ - include/uapi/linux/capability.h \ + $(wildcard include/config/radix/tree/multiorder.h) \ include/uapi/linux/fiemap.h \ include/linux/migrate_mode.h \ - include/linux/percpu-rwsem.h \ - include/linux/rcu_sync.h \ include/linux/blk_types.h \ - $(wildcard include/config/blk/cgroup.h) \ $(wildcard include/config/blk/dev/integrity.h) \ + include/linux/delayed_call.h \ include/uapi/linux/fs.h \ - include/uapi/linux/limits.h \ include/linux/quota.h \ $(wildcard include/config/quota/netlink/interface.h) \ include/linux/percpu_counter.h \ @@ -656,53 +801,38 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive include/linux/buffer_head.h \ include/linux/pagemap.h \ include/linux/mm.h \ + $(wildcard include/config/have/arch/mmap/rnd/bits.h) \ + $(wildcard include/config/have/arch/mmap/rnd/compat/bits.h) \ + $(wildcard include/config/arch/uses/high/vma/flags.h) \ $(wildcard include/config/ppc.h) \ $(wildcard include/config/parisc.h) \ $(wildcard include/config/metag.h) \ $(wildcard include/config/ia64.h) \ - $(wildcard include/config/stack/growsup.h) \ - $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/shmem.h) \ $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/page/poisoning.h) \ $(wildcard include/config/debug/pagealloc.h) \ $(wildcard include/config/hugetlbfs.h) \ include/linux/debug_locks.h \ $(wildcard include/config/debug/locking/api/selftests.h) \ - include/linux/mm_types.h \ - $(wildcard include/config/split/ptlock/cpus.h) \ - $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ - $(wildcard include/config/have/cmpxchg/double.h) \ - $(wildcard include/config/have/aligned/struct/page.h) \ - $(wildcard include/config/userfaultfd.h) \ - $(wildcard include/config/aio.h) \ - $(wildcard include/config/mmu/notifier.h) \ - include/linux/auxvec.h \ - include/uapi/linux/auxvec.h \ - arch/x86/include/uapi/asm/auxvec.h \ - include/linux/uprobes.h \ - $(wildcard include/config/uprobes.h) \ - arch/x86/include/asm/uprobes.h \ - include/linux/resource.h \ - include/uapi/linux/resource.h \ - arch/x86/include/uapi/asm/resource.h \ - include/asm-generic/resource.h \ - include/uapi/asm-generic/resource.h \ include/linux/page_ext.h \ $(wildcard include/config/idle/page/tracking.h) \ $(wildcard include/config/page/owner.h) \ include/linux/stacktrace.h \ $(wildcard include/config/stacktrace.h) \ $(wildcard include/config/user/stacktrace/support.h) \ - arch/x86/include/asm/pgtable.h \ - $(wildcard include/config/debug/wx.h) \ - $(wildcard include/config/have/arch/soft/dirty.h) \ - arch/x86/include/asm/pgtable_64.h \ - include/asm-generic/pgtable.h \ + include/linux/page_ref.h \ + $(wildcard include/config/debug/page/ref.h) \ include/linux/page-flags.h \ $(wildcard include/config/arch/uses/pg/uncached.h) \ $(wildcard include/config/memory/failure.h) \ $(wildcard include/config/swap.h) \ $(wildcard include/config/ksm.h) \ + arch/x86/include/asm/pgtable.h \ + $(wildcard include/config/debug/wx.h) \ + $(wildcard include/config/have/arch/soft/dirty.h) \ + arch/x86/include/asm/pgtable_64.h \ + include/asm-generic/pgtable.h \ include/linux/huge_mm.h \ include/linux/vmstat.h \ $(wildcard include/config/vm/event/counters.h) \ @@ -713,129 +843,17 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/balloon/compaction.h) \ include/linux/highmem.h \ include/linux/uaccess.h \ - include/linux/sched.h \ - $(wildcard include/config/sched/debug.h) \ - $(wildcard include/config/lockup/detector.h) \ - $(wildcard include/config/detect/hung/task.h) \ - $(wildcard include/config/core/dump/default/elf/headers.h) \ - $(wildcard include/config/sched/autogroup.h) \ - $(wildcard include/config/bsd/process/acct.h) \ - $(wildcard include/config/taskstats.h) \ - $(wildcard include/config/audit.h) \ - $(wildcard include/config/inotify/user.h) \ - $(wildcard include/config/fanotify.h) \ - $(wildcard include/config/posix/mqueue.h) \ - $(wildcard include/config/keys.h) \ - $(wildcard include/config/perf/events.h) \ - $(wildcard include/config/bpf/syscall.h) \ - $(wildcard include/config/sched/info.h) \ - $(wildcard include/config/task/delay/acct.h) \ - $(wildcard include/config/schedstats.h) \ - $(wildcard include/config/sched/mc.h) \ - $(wildcard include/config/fair/group/sched.h) \ - $(wildcard include/config/rt/group/sched.h) \ - $(wildcard include/config/cgroup/sched.h) \ - $(wildcard include/config/blk/dev/io/trace.h) \ - $(wildcard include/config/compat/brk.h) \ - $(wildcard include/config/sysvipc.h) \ - $(wildcard include/config/auditsyscall.h) \ - $(wildcard include/config/rt/mutexes.h) \ - $(wildcard include/config/task/xacct.h) \ - $(wildcard include/config/cpusets.h) \ - $(wildcard include/config/cgroups.h) \ - $(wildcard include/config/futex.h) \ - $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ - $(wildcard include/config/fault/injection.h) \ - $(wildcard include/config/latencytop.h) \ - $(wildcard include/config/function/graph/tracer.h) \ - $(wildcard include/config/bcache.h) \ - $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ - $(wildcard include/config/have/unstable/sched/clock.h) \ - $(wildcard include/config/have/copy/thread/tls.h) \ - include/uapi/linux/sched.h \ - include/linux/sched/prio.h \ - include/linux/plist.h \ - $(wildcard include/config/debug/pi/list.h) \ - include/linux/cputime.h \ - arch/x86/include/generated/asm/cputime.h \ - include/asm-generic/cputime.h \ - include/asm-generic/cputime_jiffies.h \ - include/linux/sem.h \ - include/uapi/linux/sem.h \ - include/linux/ipc.h \ - include/uapi/linux/ipc.h \ - arch/x86/include/uapi/asm/ipcbuf.h \ - include/uapi/asm-generic/ipcbuf.h \ - arch/x86/include/uapi/asm/sembuf.h \ - include/linux/shm.h \ - include/uapi/linux/shm.h \ - arch/x86/include/uapi/asm/shmbuf.h \ - include/uapi/asm-generic/shmbuf.h \ - arch/x86/include/asm/shmparam.h \ - include/linux/signal.h \ - $(wildcard include/config/old/sigaction.h) \ - include/uapi/linux/signal.h \ - arch/x86/include/asm/signal.h \ - arch/x86/include/uapi/asm/signal.h \ - include/uapi/asm-generic/signal-defs.h \ - arch/x86/include/uapi/asm/siginfo.h \ - include/asm-generic/siginfo.h \ - include/uapi/asm-generic/siginfo.h \ - include/linux/proportions.h \ - include/linux/seccomp.h \ - $(wildcard include/config/seccomp.h) \ - $(wildcard include/config/have/arch/seccomp/filter.h) \ - $(wildcard include/config/seccomp/filter.h) \ - $(wildcard include/config/checkpoint/restore.h) \ - include/uapi/linux/seccomp.h \ - arch/x86/include/asm/seccomp.h \ - arch/x86/include/asm/unistd.h \ - $(wildcard include/config/x86/x32/abi.h) \ - arch/x86/include/uapi/asm/unistd.h \ - arch/x86/include/generated/uapi/asm/unistd_64.h \ - arch/x86/include/generated/asm/unistd_64_x32.h \ - arch/x86/include/asm/ia32_unistd.h \ - arch/x86/include/generated/asm/unistd_32_ia32.h \ - include/asm-generic/seccomp.h \ - include/uapi/linux/unistd.h \ - include/linux/rtmutex.h \ - $(wildcard include/config/debug/rt/mutexes.h) \ - include/linux/task_io_accounting.h \ - $(wildcard include/config/task/io/accounting.h) \ - include/linux/latencytop.h \ - include/linux/cred.h \ - $(wildcard include/config/debug/credentials.h) \ - include/linux/key.h \ - include/linux/assoc_array.h \ - $(wildcard include/config/associative/array.h) \ - include/linux/selinux.h \ - $(wildcard include/config/security/selinux.h) \ - include/uapi/linux/magic.h \ - include/linux/cgroup-defs.h \ - include/linux/idr.h \ - include/linux/percpu-refcount.h \ - include/linux/cgroup_subsys.h \ - $(wildcard include/config/cgroup/cpuacct.h) \ - $(wildcard include/config/cgroup/device.h) \ - $(wildcard include/config/cgroup/freezer.h) \ - $(wildcard include/config/cgroup/net/classid.h) \ - $(wildcard include/config/cgroup/perf.h) \ - $(wildcard include/config/cgroup/net/prio.h) \ - $(wildcard include/config/cgroup/hugetlb.h) \ - $(wildcard include/config/cgroup/pids.h) \ - $(wildcard include/config/cgroup/debug.h) \ arch/x86/include/asm/cacheflush.h \ $(wildcard include/config/debug/rodata/test.h) \ include/asm-generic/cacheflush.h \ include/linux/hugetlb_inline.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dev_ramssd.h \ include/linux/module.h \ - $(wildcard include/config/module/sig.h) \ $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/sig.h) \ $(wildcard include/config/kallsyms.h) \ - $(wildcard include/config/tracepoints.h) \ $(wildcard include/config/event/tracing.h) \ - $(wildcard include/config/livepatch.h) \ $(wildcard include/config/module/unload.h) \ $(wildcard include/config/constructors.h) \ $(wildcard include/config/debug/set/module/ronx.h) \ @@ -885,8 +903,8 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/have/mod/arch/specific.h) \ $(wildcard include/config/modules/use/elf/rel.h) \ $(wildcard include/config/modules/use/elf/rela.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/params.h \ -/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o) +/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dev_ramssd.o: $(deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dev_ramssd.o) -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.o): +$(deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dev_ramssd.o): diff --git a/devices/ramdrive/.dm_ramdrive.o.cmd b/devices/ramdrive/.dm_ramdrive.o.cmd index f2a6809..d0dd163 100644 --- a/devices/ramdrive/.dm_ramdrive.o.cmd +++ b/devices/ramdrive/.dm_ramdrive.o.cmd @@ -1,14 +1,15 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/.dm_ramdrive.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(dm_ramdrive)" -D"KBUILD_MODNAME=KBUILD_STR(risa_dev_ramdrive_timing)" -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/.tmp_dm_ramdrive.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.c +cmd_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o := gcc -Wp,-MD,/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/.dm_ramdrive.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -DCC_HAVE_ASM_GOTO -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/3rd -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE_TIMING -D KERNEL_MODE -D USE_NEW_RMW -DMODULE -DKBUILD_BASENAME='"dm_ramdrive"' -DKBUILD_MODNAME='"risa_dev_ramdrive_timing"' -c -o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/.tmp_dm_ramdrive.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dm_ramdrive.c -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.c +source_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o := /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dm_ramdrive.c -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o := \ +deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o := \ include/linux/module.h \ $(wildcard include/config/modules.h) \ $(wildcard include/config/sysfs.h) \ - $(wildcard include/config/module/sig.h) \ $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/livepatch.h) \ $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/module/sig.h) \ $(wildcard include/config/generic/bug.h) \ $(wildcard include/config/kallsyms.h) \ $(wildcard include/config/smp.h) \ @@ -16,7 +17,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/tracing.h) \ $(wildcard include/config/event/tracing.h) \ $(wildcard include/config/ftrace/mcount/record.h) \ - $(wildcard include/config/livepatch.h) \ $(wildcard include/config/module/unload.h) \ $(wildcard include/config/constructors.h) \ $(wildcard include/config/debug/set/module/ronx.h) \ @@ -59,6 +59,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive include/uapi/asm-generic/posix_types.h \ include/linux/poison.h \ $(wildcard include/config/illegal/pointer/value.h) \ + $(wildcard include/config/page/poisoning/zero.h) \ include/uapi/linux/const.h \ include/linux/kernel.h \ $(wildcard include/config/preempt/voluntary.h) \ @@ -72,6 +73,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive include/linux/export.h \ $(wildcard include/config/have/underscore/symbol/prefix.h) \ $(wildcard include/config/modversions.h) \ + $(wildcard include/config/trim/unused/ksyms.h) \ arch/x86/include/asm/linkage.h \ $(wildcard include/config/x86/64.h) \ $(wildcard include/config/x86/alignment/16.h) \ @@ -79,51 +81,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive arch/x86/include/asm/bitops.h \ $(wildcard include/config/x86/cmov.h) \ arch/x86/include/asm/alternative.h \ - $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ arch/x86/include/asm/rmwcc.h \ arch/x86/include/asm/barrier.h \ $(wildcard include/config/x86/ppro/fence.h) \ @@ -139,11 +97,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive arch/x86/include/asm/required-features.h \ $(wildcard include/config/x86/minimum/cpu/family.h) \ $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/pae.h) \ $(wildcard include/config/x86/cmpxchg64.h) \ $(wildcard include/config/x86/use/3dnow.h) \ $(wildcard include/config/matom.h) \ + $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/disabled-features.h \ $(wildcard include/config/x86/intel/mpx.h) \ + $(wildcard include/config/x86/intel/memory/protection/keys.h) \ include/asm-generic/bitops/const_hweight.h \ include/asm-generic/bitops/le.h \ arch/x86/include/uapi/asm/byteorder.h \ @@ -161,16 +122,22 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive include/linux/printk.h \ $(wildcard include/config/message/loglevel/default.h) \ $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk/nmi.h) \ $(wildcard include/config/printk.h) \ $(wildcard include/config/dynamic/debug.h) \ include/linux/init.h \ $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/debug/rodata.h) \ $(wildcard include/config/lto.h) \ include/linux/kern_levels.h \ include/linux/cache.h \ $(wildcard include/config/arch/has/cache/line/size.h) \ include/uapi/linux/kernel.h \ include/uapi/linux/sysinfo.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ include/linux/dynamic_debug.h \ include/linux/stat.h \ arch/x86/include/uapi/asm/stat.h \ @@ -194,6 +161,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive include/asm-generic/percpu.h \ $(wildcard include/config/have/setup/per/cpu/area.h) \ include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ $(wildcard include/config/base/small.h) \ include/linux/percpu-defs.h \ $(wildcard include/config/debug/force/weak/per/cpu.h) \ @@ -207,8 +175,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/bug.h) \ $(wildcard include/config/generic/bug/relative/pointers.h) \ arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/vm86.h) \ $(wildcard include/config/ia32/emulation.h) \ arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ arch/x86/include/asm/page_64.h \ $(wildcard include/config/debug/virtual.h) \ $(wildcard include/config/flatmem.h) \ @@ -217,14 +191,44 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive include/asm-generic/memory_model.h \ $(wildcard include/config/discontigmem.h) \ $(wildcard include/config/sparsemem/vmemmap.h) \ + $(wildcard include/config/sparsemem.h) \ + include/linux/pfn.h \ include/asm-generic/getorder.h \ arch/x86/include/asm/cpufeature.h \ $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ + $(wildcard include/config/x86/fast/feature/tests.h) \ arch/x86/include/asm/processor.h \ + $(wildcard include/config/cc/stackprotector.h) \ $(wildcard include/config/m486.h) \ + $(wildcard include/config/x86/debugctlmsr.h) \ $(wildcard include/config/xen.h) \ + arch/x86/include/asm/processor-flags.h \ + arch/x86/include/uapi/asm/processor-flags.h \ arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/ptrace.h \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ arch/x86/include/uapi/asm/sigcontext.h \ arch/x86/include/asm/current.h \ arch/x86/include/asm/msr.h \ @@ -233,8 +237,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/tdp/level/1.h) \ $(wildcard include/config/tdp/level/2.h) \ $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ arch/x86/include/uapi/asm/errno.h \ include/uapi/asm-generic/errno.h \ include/uapi/asm-generic/errno-base.h \ @@ -254,7 +256,21 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive arch/x86/include/uapi/asm/ioctl.h \ include/asm-generic/ioctl.h \ include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/linux/tracepoint-defs.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + include/asm-generic/atomic-long.h \ + include/linux/static_key.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/frame.h \ + $(wildcard include/config/frame/pointer.h) \ arch/x86/include/asm/special_insns.h \ arch/x86/include/asm/fpu/types.h \ include/linux/personality.h \ @@ -269,13 +285,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/irqsoff/tracer.h) \ $(wildcard include/config/trace/irqflags/support.h) \ arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ include/linux/bottom_half.h \ include/linux/spinlock_types.h \ include/linux/lockdep.h \ @@ -283,9 +292,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/lock/stat.h) \ include/linux/rwlock_types.h \ arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/qspinlock.h \ include/asm-generic/qspinlock.h \ arch/x86/include/asm/qrwlock.h \ @@ -334,21 +340,23 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/zone/dma32.h) \ $(wildcard include/config/zone/device.h) \ $(wildcard include/config/numa.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/compaction.h) \ $(wildcard include/config/cma.h) \ include/linux/mmdebug.h \ $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/vm/pgflags.h) \ include/linux/mmzone.h \ $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ $(wildcard include/config/memcg.h) \ $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ $(wildcard include/config/flat/node/mem/map.h) \ $(wildcard include/config/page/extension.h) \ $(wildcard include/config/no/bootmem.h) \ $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/have/memory/present.h) \ $(wildcard include/config/have/memoryless/nodes.h) \ $(wildcard include/config/need/node/memmap/size.h) \ @@ -422,6 +430,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive include/linux/workqueue.h \ $(wildcard include/config/debug/objects/work.h) \ $(wildcard include/config/freezer.h) \ + $(wildcard include/config/wq/watchdog.h) \ include/linux/timer.h \ $(wildcard include/config/timer/stats.h) \ $(wildcard include/config/debug/objects/timers.h) \ @@ -433,6 +442,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive arch/x86/include/asm/mmzone.h \ arch/x86/include/asm/mmzone_64.h \ arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/local/apic.h) \ $(wildcard include/config/x86/io/apic.h) \ $(wildcard include/config/x86/32/smp.h) \ $(wildcard include/config/debug/nmi/selftest.h) \ @@ -469,7 +479,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/pm/clk.h) \ $(wildcard include/config/pm/generic/domains.h) \ arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ $(wildcard include/config/provide/ohci1394/dma/init.h) \ $(wildcard include/config/pci/mmconfig.h) \ $(wildcard include/config/x86/intel/mid.h) \ @@ -508,12 +517,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive arch/x86/include/asm/xen/hypervisor.h \ include/xen/features.h \ include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ arch/x86/include/uapi/asm/vsyscall.h \ include/asm-generic/fixmap.h \ arch/x86/include/asm/idle.h \ @@ -531,7 +534,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive include/linux/percpu.h \ $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ include/linux/elf.h \ arch/x86/include/asm/elf.h \ $(wildcard include/config/x86/x32/abi.h) \ @@ -545,7 +547,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ $(wildcard include/config/have/cmpxchg/double.h) \ $(wildcard include/config/have/aligned/struct/page.h) \ - $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/userfaultfd.h) \ $(wildcard include/config/aio.h) \ $(wildcard include/config/mmu/notifier.h) \ @@ -596,36 +597,172 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive $(wildcard include/config/have/mod/arch/specific.h) \ $(wildcard include/config/modules/use/elf/rel.h) \ $(wildcard include/config/modules/use/elf/rela.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/debug.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/debug.h \ $(wildcard include/config/enable/msg.h) \ $(wildcard include/config/enable/debug.h) \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/bdbm_drv.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/utime.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/usync.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dm_ramdrive.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/bdbm_drv.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/utime.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/usync.h \ include/generated/uapi/linux/version.h \ include/linux/semaphore.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../include/params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../common/dev_params.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dev_ramssd.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../include/params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../common/dev_params.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dev_ramssd.h \ include/linux/slab.h \ $(wildcard include/config/debug/slab.h) \ $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slob.h) \ $(wildcard include/config/slab.h) \ $(wildcard include/config/slub.h) \ - $(wildcard include/config/slob.h) \ include/linux/kmemleak.h \ $(wildcard include/config/debug/kmemleak.h) \ include/linux/kasan.h \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/bpf/syscall.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/ubsan.h) \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/kcov.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + $(wildcard include/config/have/exit/thread.h) \ + $(wildcard include/config/cpu/freq.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + include/linux/capability.h \ + include/uapi/linux/capability.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/pid.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + $(wildcard include/config/checkpoint/restore.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rculist.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ include/linux/hrtimer.h \ $(wildcard include/config/high/res/timers.h) \ $(wildcard include/config/time/low/res.h) \ $(wildcard include/config/timerfd.h) \ include/linux/timerqueue.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../../common/utils/umemory.h \ - /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/../../ftl/hlm_reqs_pool.h \ + include/linux/kcov.h \ + include/uapi/linux/kcov.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + $(wildcard include/config/security.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + $(wildcard include/config/sock/cgroup/data.h) \ + include/uapi/linux/limits.h \ + include/linux/percpu-refcount.h \ + include/linux/percpu-rwsem.h \ + include/linux/rcu_sync.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/pids.h) \ + $(wildcard include/config/cgroup/debug.h) \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../../common/utils/umemory.h \ + /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/../../ftl/hlm_reqs_pool.h \ -/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o) +/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o: $(deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o) -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o): +$(deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive_timing/../ramdrive/dm_ramdrive.o): diff --git a/devices/ramdrive/.risa_dev_ramdrive.ko.cmd b/devices/ramdrive/.risa_dev_ramdrive.ko.cmd index e0892fa..ae72847 100644 --- a/devices/ramdrive/.risa_dev_ramdrive.ko.cmd +++ b/devices/ramdrive/.risa_dev_ramdrive.ko.cmd @@ -1 +1 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.ko := ld -r -m elf_x86_64 -T ./scripts/module-common.lds --build-id -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.ko /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o +cmd_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.ko := ld -r -m elf_x86_64 -T ./scripts/module-common.lds --build-id -o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.ko /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.mod.o diff --git a/devices/ramdrive/.risa_dev_ramdrive.mod.o.cmd b/devices/ramdrive/.risa_dev_ramdrive.mod.o.cmd index 11809e3..2eb70ec 100644 --- a/devices/ramdrive/.risa_dev_ramdrive.mod.o.cmd +++ b/devices/ramdrive/.risa_dev_ramdrive.mod.o.cmd @@ -1,15 +1,16 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o := gcc -Wp,-MD,/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/.risa_dev_ramdrive.mod.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../include -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/3rd -I/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE -D KERNEL_MODE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(risa_dev_ramdrive.mod)" -D"KBUILD_MODNAME=KBUILD_STR(risa_dev_ramdrive)" -DMODULE -c -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.c +cmd_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.mod.o := gcc -Wp,-MD,/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/.risa_dev_ramdrive.mod.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -DCC_HAVE_ASM_GOTO -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../../include -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../../common/utils -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../../common/3rd -I/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../common -D CONFIG_ENABLE_MSG -D CONFIG_ENABLE_DEBUG -D CONFIG_DEVICE_TYPE_RAMDRIVE -D KERNEL_MODE -DKBUILD_BASENAME='"risa_dev_ramdrive.mod"' -DKBUILD_MODNAME='"risa_dev_ramdrive"' -DMODULE -c -o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.mod.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.mod.c -source_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o := /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.c +source_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.mod.o := /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.mod.c -deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o := \ +deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.mod.o := \ $(wildcard include/config/module/unload.h) \ include/linux/module.h \ $(wildcard include/config/modules.h) \ $(wildcard include/config/sysfs.h) \ - $(wildcard include/config/module/sig.h) \ $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/livepatch.h) \ $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/module/sig.h) \ $(wildcard include/config/generic/bug.h) \ $(wildcard include/config/kallsyms.h) \ $(wildcard include/config/smp.h) \ @@ -17,7 +18,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. $(wildcard include/config/tracing.h) \ $(wildcard include/config/event/tracing.h) \ $(wildcard include/config/ftrace/mcount/record.h) \ - $(wildcard include/config/livepatch.h) \ $(wildcard include/config/constructors.h) \ $(wildcard include/config/debug/set/module/ronx.h) \ include/linux/list.h \ @@ -59,6 +59,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. include/uapi/asm-generic/posix_types.h \ include/linux/poison.h \ $(wildcard include/config/illegal/pointer/value.h) \ + $(wildcard include/config/page/poisoning/zero.h) \ include/uapi/linux/const.h \ include/linux/kernel.h \ $(wildcard include/config/preempt/voluntary.h) \ @@ -72,6 +73,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. include/linux/export.h \ $(wildcard include/config/have/underscore/symbol/prefix.h) \ $(wildcard include/config/modversions.h) \ + $(wildcard include/config/trim/unused/ksyms.h) \ arch/x86/include/asm/linkage.h \ $(wildcard include/config/x86/64.h) \ $(wildcard include/config/x86/alignment/16.h) \ @@ -79,51 +81,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. arch/x86/include/asm/bitops.h \ $(wildcard include/config/x86/cmov.h) \ arch/x86/include/asm/alternative.h \ - $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/asm.h \ - arch/x86/include/asm/ptrace.h \ - $(wildcard include/config/x86/debugctlmsr.h) \ - arch/x86/include/asm/segment.h \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/x86/32/lazy/gs.h) \ - arch/x86/include/asm/cache.h \ - $(wildcard include/config/x86/l1/cache/shift.h) \ - $(wildcard include/config/x86/internode/cache/shift.h) \ - $(wildcard include/config/x86/vsmp.h) \ - arch/x86/include/asm/page_types.h \ - $(wildcard include/config/physical/start.h) \ - $(wildcard include/config/physical/align.h) \ - arch/x86/include/asm/page_64_types.h \ - $(wildcard include/config/randomize/base.h) \ - $(wildcard include/config/randomize/base/max/offset.h) \ - arch/x86/include/uapi/asm/ptrace.h \ - arch/x86/include/uapi/asm/ptrace-abi.h \ - arch/x86/include/asm/processor-flags.h \ - $(wildcard include/config/vm86.h) \ - arch/x86/include/uapi/asm/processor-flags.h \ - arch/x86/include/asm/paravirt_types.h \ - $(wildcard include/config/x86/local/apic.h) \ - $(wildcard include/config/pgtable/levels.h) \ - $(wildcard include/config/x86/pae.h) \ - $(wildcard include/config/queued/spinlocks.h) \ - $(wildcard include/config/paravirt/debug.h) \ - arch/x86/include/asm/desc_defs.h \ - arch/x86/include/asm/kmap_types.h \ - $(wildcard include/config/debug/highmem.h) \ - include/asm-generic/kmap_types.h \ - arch/x86/include/asm/pgtable_types.h \ - $(wildcard include/config/kmemcheck.h) \ - $(wildcard include/config/mem/soft/dirty.h) \ - $(wildcard include/config/proc/fs.h) \ - arch/x86/include/asm/pgtable_64_types.h \ - arch/x86/include/asm/sparsemem.h \ - $(wildcard include/config/sparsemem.h) \ - arch/x86/include/asm/spinlock_types.h \ - $(wildcard include/config/paravirt/spinlocks.h) \ - $(wildcard include/config/nr/cpus.h) \ - include/asm-generic/qspinlock_types.h \ - include/asm-generic/qrwlock_types.h \ - include/asm-generic/ptrace.h \ arch/x86/include/asm/rmwcc.h \ arch/x86/include/asm/barrier.h \ $(wildcard include/config/x86/ppro/fence.h) \ @@ -139,11 +97,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. arch/x86/include/asm/required-features.h \ $(wildcard include/config/x86/minimum/cpu/family.h) \ $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/pae.h) \ $(wildcard include/config/x86/cmpxchg64.h) \ $(wildcard include/config/x86/use/3dnow.h) \ $(wildcard include/config/matom.h) \ + $(wildcard include/config/paravirt.h) \ arch/x86/include/asm/disabled-features.h \ $(wildcard include/config/x86/intel/mpx.h) \ + $(wildcard include/config/x86/intel/memory/protection/keys.h) \ include/asm-generic/bitops/const_hweight.h \ include/asm-generic/bitops/le.h \ arch/x86/include/uapi/asm/byteorder.h \ @@ -161,16 +122,22 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. include/linux/printk.h \ $(wildcard include/config/message/loglevel/default.h) \ $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk/nmi.h) \ $(wildcard include/config/printk.h) \ $(wildcard include/config/dynamic/debug.h) \ include/linux/init.h \ $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/debug/rodata.h) \ $(wildcard include/config/lto.h) \ include/linux/kern_levels.h \ include/linux/cache.h \ $(wildcard include/config/arch/has/cache/line/size.h) \ include/uapi/linux/kernel.h \ include/uapi/linux/sysinfo.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ include/linux/dynamic_debug.h \ include/linux/stat.h \ arch/x86/include/uapi/asm/stat.h \ @@ -194,6 +161,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. include/asm-generic/percpu.h \ $(wildcard include/config/have/setup/per/cpu/area.h) \ include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ $(wildcard include/config/base/small.h) \ include/linux/percpu-defs.h \ $(wildcard include/config/debug/force/weak/per/cpu.h) \ @@ -207,8 +175,14 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. $(wildcard include/config/bug.h) \ $(wildcard include/config/generic/bug/relative/pointers.h) \ arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/vm86.h) \ $(wildcard include/config/ia32/emulation.h) \ arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ arch/x86/include/asm/page_64.h \ $(wildcard include/config/debug/virtual.h) \ $(wildcard include/config/flatmem.h) \ @@ -217,14 +191,44 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. include/asm-generic/memory_model.h \ $(wildcard include/config/discontigmem.h) \ $(wildcard include/config/sparsemem/vmemmap.h) \ + $(wildcard include/config/sparsemem.h) \ + include/linux/pfn.h \ include/asm-generic/getorder.h \ arch/x86/include/asm/cpufeature.h \ $(wildcard include/config/x86/feature/names.h) \ - $(wildcard include/config/x86/debug/static/cpu/has.h) \ + $(wildcard include/config/x86/fast/feature/tests.h) \ arch/x86/include/asm/processor.h \ + $(wildcard include/config/cc/stackprotector.h) \ $(wildcard include/config/m486.h) \ + $(wildcard include/config/x86/debugctlmsr.h) \ $(wildcard include/config/xen.h) \ + arch/x86/include/asm/processor-flags.h \ + arch/x86/include/uapi/asm/processor-flags.h \ arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/ptrace.h \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ arch/x86/include/uapi/asm/sigcontext.h \ arch/x86/include/asm/current.h \ arch/x86/include/asm/msr.h \ @@ -233,8 +237,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. $(wildcard include/config/tdp/level/1.h) \ $(wildcard include/config/tdp/level/2.h) \ $(wildcard include/config/tdp/control.h) \ - $(wildcard include/config/tdp/level1.h) \ - $(wildcard include/config/tdp/level2.h) \ arch/x86/include/uapi/asm/errno.h \ include/uapi/asm-generic/errno.h \ include/uapi/asm-generic/errno-base.h \ @@ -254,7 +256,21 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. arch/x86/include/uapi/asm/ioctl.h \ include/asm-generic/ioctl.h \ include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/linux/tracepoint-defs.h \ + include/linux/atomic.h \ + $(wildcard include/config/generic/atomic64.h) \ + include/asm-generic/atomic-long.h \ + include/linux/static_key.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/frame.h \ + $(wildcard include/config/frame/pointer.h) \ arch/x86/include/asm/special_insns.h \ arch/x86/include/asm/fpu/types.h \ include/linux/personality.h \ @@ -269,13 +285,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. $(wildcard include/config/irqsoff/tracer.h) \ $(wildcard include/config/trace/irqflags/support.h) \ arch/x86/include/asm/irqflags.h \ - include/linux/atomic.h \ - $(wildcard include/config/generic/atomic64.h) \ - arch/x86/include/asm/atomic.h \ - arch/x86/include/asm/cmpxchg.h \ - arch/x86/include/asm/cmpxchg_64.h \ - arch/x86/include/asm/atomic64_64.h \ - include/asm-generic/atomic-long.h \ include/linux/bottom_half.h \ include/linux/spinlock_types.h \ include/linux/lockdep.h \ @@ -283,9 +292,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. $(wildcard include/config/lock/stat.h) \ include/linux/rwlock_types.h \ arch/x86/include/asm/spinlock.h \ - include/linux/jump_label.h \ - $(wildcard include/config/jump/label.h) \ - arch/x86/include/asm/jump_label.h \ arch/x86/include/asm/qspinlock.h \ include/asm-generic/qspinlock.h \ arch/x86/include/asm/qrwlock.h \ @@ -334,21 +340,23 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. $(wildcard include/config/zone/dma32.h) \ $(wildcard include/config/zone/device.h) \ $(wildcard include/config/numa.h) \ - $(wildcard include/config/deferred/struct/page/init.h) \ $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/compaction.h) \ $(wildcard include/config/cma.h) \ include/linux/mmdebug.h \ $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/vm/pgflags.h) \ include/linux/mmzone.h \ $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/memory/isolation.h) \ $(wildcard include/config/memcg.h) \ $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/compaction.h) \ $(wildcard include/config/flat/node/mem/map.h) \ $(wildcard include/config/page/extension.h) \ $(wildcard include/config/no/bootmem.h) \ $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/have/memory/present.h) \ $(wildcard include/config/have/memoryless/nodes.h) \ $(wildcard include/config/need/node/memmap/size.h) \ @@ -422,6 +430,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. include/linux/workqueue.h \ $(wildcard include/config/debug/objects/work.h) \ $(wildcard include/config/freezer.h) \ + $(wildcard include/config/wq/watchdog.h) \ include/linux/timer.h \ $(wildcard include/config/timer/stats.h) \ $(wildcard include/config/debug/objects/timers.h) \ @@ -433,6 +442,7 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. arch/x86/include/asm/mmzone.h \ arch/x86/include/asm/mmzone_64.h \ arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/local/apic.h) \ $(wildcard include/config/x86/io/apic.h) \ $(wildcard include/config/x86/32/smp.h) \ $(wildcard include/config/debug/nmi/selftest.h) \ @@ -469,7 +479,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. $(wildcard include/config/pm/clk.h) \ $(wildcard include/config/pm/generic/domains.h) \ arch/x86/include/asm/fixmap.h \ - $(wildcard include/config/paravirt/clock.h) \ $(wildcard include/config/provide/ohci1394/dma/init.h) \ $(wildcard include/config/pci/mmconfig.h) \ $(wildcard include/config/x86/intel/mid.h) \ @@ -508,12 +517,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. arch/x86/include/asm/xen/hypervisor.h \ include/xen/features.h \ include/xen/interface/features.h \ - arch/x86/include/asm/pvclock.h \ - include/linux/clocksource.h \ - $(wildcard include/config/arch/clocksource/data.h) \ - $(wildcard include/config/clocksource/watchdog.h) \ - $(wildcard include/config/clksrc/probe.h) \ - arch/x86/include/asm/clocksource.h \ arch/x86/include/uapi/asm/vsyscall.h \ include/asm-generic/fixmap.h \ arch/x86/include/asm/idle.h \ @@ -531,7 +534,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. include/linux/percpu.h \ $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ - include/linux/pfn.h \ include/linux/elf.h \ arch/x86/include/asm/elf.h \ $(wildcard include/config/x86/x32/abi.h) \ @@ -545,7 +547,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ $(wildcard include/config/have/cmpxchg/double.h) \ $(wildcard include/config/have/aligned/struct/page.h) \ - $(wildcard include/config/transparent/hugepage.h) \ $(wildcard include/config/userfaultfd.h) \ $(wildcard include/config/aio.h) \ $(wildcard include/config/mmu/notifier.h) \ @@ -599,6 +600,6 @@ deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive. include/linux/vermagic.h \ include/generated/utsrelease.h \ -/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o: $(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o) +/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.mod.o: $(deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.mod.o) -$(deps_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.mod.o): +$(deps_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.mod.o): diff --git a/devices/ramdrive/.risa_dev_ramdrive.o.cmd b/devices/ramdrive/.risa_dev_ramdrive.o.cmd index 44fd1fb..8f52ac2 100644 --- a/devices/ramdrive/.risa_dev_ramdrive.o.cmd +++ b/devices/ramdrive/.risa_dev_ramdrive.o.cmd @@ -1 +1 @@ -cmd_/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.o := ld -m elf_x86_64 -r -o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/ufile.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/utime.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/uthread.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/umemory.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common/dev_main.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common/dev_params.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common/dev_stub.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/dev_ramssd.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/dm_ramdrive.o +cmd_/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.o := ld -m elf_x86_64 -r -o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../../common/utils/ufile.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../../common/utils/utime.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../../common/utils/uthread.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../../common/utils/umemory.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../common/dev_main.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../common/dev_params.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../common/dev_stub.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/dev_ramssd.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/dm_ramdrive.o diff --git a/devices/ramdrive/.tmp_versions/risa_dev_ramdrive.mod b/devices/ramdrive/.tmp_versions/risa_dev_ramdrive.mod index 2265c15..55699d6 100644 --- a/devices/ramdrive/.tmp_versions/risa_dev_ramdrive.mod +++ b/devices/ramdrive/.tmp_versions/risa_dev_ramdrive.mod @@ -1,2 +1,3 @@ -/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.ko -/home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/ufile.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/utime.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/uthread.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../../common/utils/umemory.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common/dev_main.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common/dev_params.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/../common/dev_stub.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/dev_ramssd.o /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/dm_ramdrive.o +/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.ko +/home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../../common/utils/ufile.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../../common/utils/utime.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../../common/utils/uthread.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../../common/utils/umemory.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../common/dev_main.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../common/dev_params.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/../common/dev_stub.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/dev_ramssd.o /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/dm_ramdrive.o + diff --git a/devices/ramdrive/Module.symvers b/devices/ramdrive/Module.symvers index a721a42..9aea1fa 100644 --- a/devices/ramdrive/Module.symvers +++ b/devices/ramdrive/Module.symvers @@ -1,3 +1,3 @@ -0x80143265 bdbm_dm_get_inf /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive EXPORT_SYMBOL -0xdf2f9a5e bdbm_dm_exit /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive EXPORT_SYMBOL -0xcaa5608a bdbm_dm_init /home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive EXPORT_SYMBOL +0xf7d15482 bdbm_dm_get_inf /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive EXPORT_SYMBOL +0x34015c38 bdbm_dm_exit /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive EXPORT_SYMBOL +0x60bdde33 bdbm_dm_init /home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive EXPORT_SYMBOL diff --git a/devices/ramdrive/dev_ramssd.c b/devices/ramdrive/dev_ramssd.c index 38dd965..0563556 100644 --- a/devices/ramdrive/dev_ramssd.c +++ b/devices/ramdrive/dev_ramssd.c @@ -42,7 +42,7 @@ THE SOFTWARE. #include "ufile.h" #include "dev_ramssd.h" -#define DATA_CHECK +//#define DATA_CHECK #if defined (DATA_CHECK) @@ -814,6 +814,7 @@ uint32_t dev_ramssd_store (dev_ramssd_info_t* ri, const char* fn) } +#if defined (DATA_CHECK) #ifdef NVM_CACHE_DEBUG uint8_t* dev_ramssd_get_data (dev_ramssd_info_t* ri, int64_t lpa) { @@ -825,3 +826,4 @@ uint8_t* dev_ramssd_get_data (dev_ramssd_info_t* ri, int64_t lpa) return ((uint8_t*)__ptr_ramssd_data) + ramssd_addr; } #endif +#endif diff --git a/devices/ramdrive/dev_ramssd.h b/devices/ramdrive/dev_ramssd.h index 976096c..3b139f8 100644 --- a/devices/ramdrive/dev_ramssd.h +++ b/devices/ramdrive/dev_ramssd.h @@ -171,8 +171,10 @@ uint8_t dev_ramssd_is_init (dev_ramssd_info_t* ptr_ramssd_info) { return 1; } +#if defined (DATA_CHECK) #ifdef NVM_CACHE_DEBUG uint8_t* dev_ramssd_get_data (dev_ramssd_info_t* ptr_ramssd_info, int64_t lpa); #endif +#endif #endif /* _BLUEDBM_DEV_RAMSSD_H */ diff --git a/devices/ramdrive/dev_ramssd.o b/devices/ramdrive/dev_ramssd.o new file mode 100644 index 0000000000000000000000000000000000000000..897e4a470e83f97db93620d84015f7f80646f875 GIT binary patch literal 187008 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 literal 0 HcmV?d00001 diff --git a/devices/ramdrive/dm_ramdrive.c b/devices/ramdrive/dm_ramdrive.c index e8e0132..950beb4 100644 --- a/devices/ramdrive/dm_ramdrive.c +++ b/devices/ramdrive/dm_ramdrive.c @@ -53,9 +53,11 @@ bdbm_dm_inf_t _bdbm_dm_inf = { .end_req = dm_ramdrive_end_req, .load = dm_ramdrive_load, .store = dm_ramdrive_store, +#if defined (DATA_CHECK) #ifdef NVM_CACHE_DEBUG .get_data = dm_ramdrive_get_data, #endif +#endif }; /* private data structure for dm */ @@ -189,6 +191,7 @@ uint32_t dm_ramdrive_store (bdbm_drv_info_t* bdi, const char* fn) return dev_ramssd_store (p->ramssd, fn); } +#if defined (DATA_CHECK) #ifdef NVM_CACHE_DEBUG uint8_t* dm_ramdrive_get_data (bdbm_drv_info_t* bdi, int64_t lpa) { @@ -197,3 +200,4 @@ uint8_t* dm_ramdrive_get_data (bdbm_drv_info_t* bdi, int64_t lpa) return dev_ramssd_get_data(ri, lpa); } #endif +#endif diff --git a/devices/ramdrive/dm_ramdrive.h b/devices/ramdrive/dm_ramdrive.h index e4593aa..ea2ed9e 100644 --- a/devices/ramdrive/dm_ramdrive.h +++ b/devices/ramdrive/dm_ramdrive.h @@ -41,10 +41,12 @@ uint32_t dm_ramdrive_load (bdbm_drv_info_t* bdi, const char* fn); uint32_t dm_ramdrive_store (bdbm_drv_info_t* bdi, const char* fn); +#if defined (DATA_CHECK) #ifdef NVM_CACHE_DEBUG uint8_t* dm_ramdrive_get_data (bdbm_drv_info_t* bdi, int64_t lpa); void* __ptr_ramssd_data_to_nvm = NULL; #endif +#endif #endif diff --git a/devices/ramdrive/dm_ramdrive.o b/devices/ramdrive/dm_ramdrive.o new file mode 100644 index 0000000000000000000000000000000000000000..22932a1eaacfb1f2e78aa832cba650b1403f7fbb GIT binary patch literal 124592 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�O#CUO~J*^x7@NS7vzo?8;-#7C1A42?g=(V22 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 literal 0 HcmV?d00001 diff --git a/devices/ramdrive/modules.order b/devices/ramdrive/modules.order index 91eb05b..4dc3257 100644 --- a/devices/ramdrive/modules.order +++ b/devices/ramdrive/modules.order @@ -1 +1 @@ -kernel//home/ejlee/cooperate/bdbm_drv_dummy_gc/devices/ramdrive/risa_dev_ramdrive.ko +kernel//home/minseong/github/bdbm_drv/bdbm_drv/devices/ramdrive/risa_dev_ramdrive.ko diff --git a/devices/ramdrive/risa_dev_ramdrive.ko b/devices/ramdrive/risa_dev_ramdrive.ko index 38f8a4df1431dc18fba3159141fb755e1c6e759d..60cf1baa107d37d488652d04fe5aafe5d7ff0a22 100755 GIT binary patch literal 1268664 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 X+C9x^21)I&>Z?ZK@ev4lJW?^hlVC=B(Jf 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