Skip to content

Commit

Permalink
lightnvm: add free and bad lun info to show luns
Browse files Browse the repository at this point in the history
Add free block, used block, and bad block information to the show debug
interface. This information is used to debug how targets track blocks.

Also, change debug function name to make it more generic.

Signed-off-by: Javier Gonzalez <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
  • Loading branch information
Javier Gonzalez authored and Jens Axboe committed Nov 20, 2015
1 parent 0b59733 commit 2fde0e4
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 8 deletions.
2 changes: 1 addition & 1 deletion drivers/lightnvm/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -544,7 +544,7 @@ static int nvm_configure_show(const char *val)
if (!dev->mt)
return 0;

dev->mt->free_blocks_print(dev);
dev->mt->lun_info_print(dev);

return 0;
}
Expand Down
19 changes: 14 additions & 5 deletions drivers/lightnvm/gennvm.c
Original file line number Diff line number Diff line change
Expand Up @@ -464,15 +464,24 @@ static struct nvm_lun *gennvm_get_lun(struct nvm_dev *dev, int lunid)
return &gn->luns[lunid].vlun;
}

static void gennvm_free_blocks_print(struct nvm_dev *dev)
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)
pr_info("%s: lun%8u\t%u\n",
dev->name, i, lun->vlun.nr_free_blocks);

gennvm_for_each_lun(gn, lun, i) {
spin_lock(&lun->vlun.lock);

pr_info("%s: lun%8u\t%u\t%u\t%u\n",
dev->name, i,
lun->vlun.nr_free_blocks,
lun->vlun.nr_inuse_blocks,
lun->vlun.nr_bad_blocks);

spin_unlock(&lun->vlun.lock);
}
}

static struct nvmm_type gennvm = {
Expand All @@ -490,7 +499,7 @@ static struct nvmm_type gennvm = {
.erase_blk = gennvm_erase_blk,

.get_lun = gennvm_get_lun,
.free_blocks_print = gennvm_free_blocks_print,
.lun_info_print = gennvm_lun_info_print,
};

static int __init gennvm_module_init(void)
Expand Down
4 changes: 2 additions & 2 deletions include/linux/lightnvm.h
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@ typedef int (nvmm_end_io_fn)(struct nvm_rq *, int);
typedef int (nvmm_erase_blk_fn)(struct nvm_dev *, struct nvm_block *,
unsigned long);
typedef struct nvm_lun *(nvmm_get_lun_fn)(struct nvm_dev *, int);
typedef void (nvmm_free_blocks_print_fn)(struct nvm_dev *);
typedef void (nvmm_lun_info_print_fn)(struct nvm_dev *);

struct nvmm_type {
const char *name;
Expand All @@ -404,7 +404,7 @@ struct nvmm_type {
nvmm_get_lun_fn *get_lun;

/* Statistics */
nvmm_free_blocks_print_fn *free_blocks_print;
nvmm_lun_info_print_fn *lun_info_print;
struct list_head list;
};

Expand Down

0 comments on commit 2fde0e4

Please sign in to comment.