Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1273880 > unrolled thread
| Started by | Javier Gonzalez <javier@javigon.com> |
|---|---|
| First post | 2015-11-20 10:10 +0100 |
| Last post | 2015-11-20 13:50 +0100 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH 2/2] lightnvm: add lun information to show debug interf. Javier Gonzalez <javier@javigon.com> - 2015-11-20 10:10 +0100
Re: [PATCH 2/2] lightnvm: add lun information to show debug interf. Matias Bjørling <m@bjorling.me> - 2015-11-20 13:50 +0100
| From | Javier Gonzalez <javier@javigon.com> |
|---|---|
| Date | 2015-11-20 10:10 +0100 |
| Subject | [PATCH 2/2] lightnvm: add lun information to show debug interf. |
| Message-ID | <qwPRE-5cO-23@gated-at.bofh.it> |
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>
---
drivers/lightnvm/core.c | 2 +-
drivers/lightnvm/gennvm.c | 19 ++++++++++++++-----
include/linux/lightnvm.h | 4 ++--
3 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c
index 51e0008..e0072b5 100644
--- a/drivers/lightnvm/core.c
+++ b/drivers/lightnvm/core.c
@@ -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;
}
diff --git a/drivers/lightnvm/gennvm.c b/drivers/lightnvm/gennvm.c
index 43c01e0..e20e74e 100644
--- a/drivers/lightnvm/gennvm.c
+++ b/drivers/lightnvm/gennvm.c
@@ -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 = {
@@ -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)
diff --git a/include/linux/lightnvm.h b/include/linux/lightnvm.h
index 76acd15..e527d67 100644
--- a/include/linux/lightnvm.h
+++ b/include/linux/lightnvm.h
@@ -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;
@@ -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;
};
--
2.1.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Matias Bjørling <m@bjorling.me> |
|---|---|
| Date | 2015-11-20 13:50 +0100 |
| Message-ID | <qwTix-7gN-1@gated-at.bofh.it> |
| In reply to | #1273880 |
On 11/20/2015 10:01 AM, Javier Gonzalez wrote:
> 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>
> ---
> drivers/lightnvm/core.c | 2 +-
> drivers/lightnvm/gennvm.c | 19 ++++++++++++++-----
> include/linux/lightnvm.h | 4 ++--
> 3 files changed, 17 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c
> index 51e0008..e0072b5 100644
> --- a/drivers/lightnvm/core.c
> +++ b/drivers/lightnvm/core.c
> @@ -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;
> }
> diff --git a/drivers/lightnvm/gennvm.c b/drivers/lightnvm/gennvm.c
> index 43c01e0..e20e74e 100644
> --- a/drivers/lightnvm/gennvm.c
> +++ b/drivers/lightnvm/gennvm.c
> @@ -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 = {
> @@ -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)
> diff --git a/include/linux/lightnvm.h b/include/linux/lightnvm.h
> index 76acd15..e527d67 100644
> --- a/include/linux/lightnvm.h
> +++ b/include/linux/lightnvm.h
> @@ -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;
> @@ -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;
> };
>
>
Thanks, applied.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web