]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
lightnvm: add shorten OCSSD version in geo
authorJavier González <javier@cnexlabs.com>
Thu, 29 Mar 2018 22:05:12 +0000 (00:05 +0200)
committerJens Axboe <axboe@kernel.dk>
Thu, 29 Mar 2018 23:29:09 +0000 (17:29 -0600)
Create a shorten version to use in the generic geometry.

Signed-off-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <mb@lightnvm.io>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvme/host/lightnvm.c
include/linux/lightnvm.h

index de4105544956a0ccab11d892ffa30ee4d3cd0479..f7f7769e7588a984657b643c5c372aed9334d153 100644 (file)
@@ -299,6 +299,9 @@ static int nvme_nvm_setup_12(struct nvme_nvm_id12 *id,
        geo->major_ver_id = id->ver_id;
        geo->minor_ver_id = 2;
 
+       /* Set compacted version for upper layers */
+       geo->version = NVM_OCSSD_SPEC_12;
+
        geo->nr_chnls = src->num_ch;
        geo->nr_luns = src->num_lun;
        geo->all_luns = geo->nr_chnls * geo->nr_luns;
@@ -384,6 +387,9 @@ static int nvme_nvm_setup_20(struct nvme_nvm_id20 *id,
        geo->major_ver_id = id->mjr;
        geo->minor_ver_id = id->mnr;
 
+       /* Set compacted version for upper layers */
+       geo->version = NVM_OCSSD_SPEC_20;
+
        if (!(geo->major_ver_id == 2 && geo->minor_ver_id == 0)) {
                pr_err("nvm: OCSSD version not supported (v%d.%d)\n",
                                geo->major_ver_id, geo->minor_ver_id);
index 7ed8b92d674497da35f0306847e9ad1f6f351d8d..a073c0c762604b62f1a0f44d720747ff4ae47666 100644 (file)
@@ -23,6 +23,11 @@ enum {
 #define NVM_LUN_BITS (8)
 #define NVM_CH_BITS  (7)
 
+enum {
+       NVM_OCSSD_SPEC_12 = 12,
+       NVM_OCSSD_SPEC_20 = 20,
+};
+
 struct ppa_addr {
        /* Generic structure for all addresses */
        union {
@@ -266,6 +271,9 @@ struct nvm_geo {
        u8      major_ver_id;
        u8      minor_ver_id;
 
+       /* kernel short version */
+       u8      version;
+
        /* instance specific geometry */
        int nr_chnls;
        int nr_luns;            /* per channel */