Patch "lightnvm: ensure that nvm_dev_ops can be used without CONFIG_NVM" has been added to the 4.4-stable tree
This is a note to let you know that I've just added the patch titled
lightnvm: ensure that nvm_dev_ops can be used without CONFIG_NVM
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
lightnvm-ensure-that-nvm_dev_ops-can-be-used-without-config_nvm.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
a7fd9a4f3e8179bab31e4637236ebb0e0b7867c6Mon Sep 17 00:00:00 2001
From: Jens Axboe <[email protected]>
Date: Wed, 13 Jan 2016 13:04:11 -0700
Subject: lightnvm: ensure that nvm_dev_ops can be used without CONFIG_NVM
From: Jens Axboe <[email protected]>
commit a7fd9a4f3e8179bab31e4637236ebb0e0b7867c6 upstream.
null_blk defines an empty version of this ops structure if CONFIG_NVM isn't set, but it doesn't know the type. Move those bits out of the protection of CONFIG_NVM in the main lightnvm include.
--- include/linux/lightnvm.h | 121 ++++++++++++++++++++++++----------------------- 1 file changed, 64 insertions(+), 57 deletions(-)
include/linux/lightnvm.h +64 -57
@@ -1,6 +1,8 @@#ifndef NVM_H #define NVM_H +#include <linux/types.h> +enum {NVM_IO_OK =0 , NVM_IO_REQUEUE = 1,
@@ -11,10 +13,71 @@ enum { NVM_IOTYPE_GC = 1, }; +#define NVM_BLK_BITS (16) +#define NVM_PG_BITS (16) +#define NVM_SEC_BITS (8) +#define NVM_PL_BITS (8) +#define NVM_LUN_BITS (8) +#define NVM_CH_BITS (8) + +struct ppa_addr { +/* Generic structure for all addresses */ +union { +struct { +u64 blk :NVM_BLK_BITS ; +u64 pg :NVM_PG_BITS ; +u64 sec :NVM_SEC_BITS ; +u64 pl :NVM_PL_BITS ; +u64 lun :NVM_LUN_BITS ; +u64 ch :NVM_CH_BITS ; + } g; + +u64 ppa; + }; +}; + +struct nvm_rq ; +struct nvm_id ; +struct nvm_dev ; + +typedef int (nvm_l2p_update_fn )(u64 ,u32 ,__le64 *,void *); +typedef int (nvm_bb_update_fn )(struct ppa_addr ,int ,u8 *,void *); +typedef int (nvm_id_fn )(struct nvm_dev *,struct nvm_id *); +typedef int (nvm_get_l2p_tbl_fn )(struct nvm_dev *,u64 ,u32 , +nvm_l2p_update_fn *,void *); +typedef int (nvm_op_bb_tbl_fn )(struct nvm_dev *,struct ppa_addr ,int , +nvm_bb_update_fn *,void *); +typedef int (nvm_op_set_bb_fn )(struct nvm_dev *,struct nvm_rq *,int ); +typedef int (nvm_submit_io_fn )(struct nvm_dev *,struct nvm_rq *); +typedef int (nvm_erase_blk_fn )(struct nvm_dev *,struct nvm_rq *); +typedef void *(nvm_create_dma_pool_fn )(struct nvm_dev *,char *); +typedef void (nvm_destroy_dma_pool_fn )(void *); +typedef void *(nvm_dev_dma_alloc_fn )(struct nvm_dev *,void *,gfp_t , +dma_addr_t *); +typedef void (nvm_dev_dma_free_fn )(void *,void *,dma_addr_t ); + +struct nvm_dev_ops { +nvm_id_fn *identity; +nvm_get_l2p_tbl_fn *get_l2p_tbl; +nvm_op_bb_tbl_fn *get_bb_tbl; +nvm_op_set_bb_fn *set_bb_tbl; + +nvm_submit_io_fn *submit_io; +nvm_erase_blk_fn *erase_block; + +nvm_create_dma_pool_fn *create_dma_pool; +nvm_destroy_dma_pool_fn *destroy_dma_pool; +nvm_dev_dma_alloc_fn *dev_dma_alloc; +nvm_dev_dma_free_fn *dev_dma_free; + +unsigned int max_phys_sect; +}; + + +#ifdef CONFIG_NVM #include <linux/blkdev.h> -#include <linux/types.h> #include <linux/file.h> #include <linux/dmapool.h>
@@ -126,29 +189,6 @@ struct nvm_tgt_instance {#define NVM_VERSION_MINOR 0#define NVM_VERSION_PATCH 0 -#define NVM_BLK_BITS (16) -#define NVM_PG_BITS (16) -#define NVM_SEC_BITS (8) -#define NVM_PL_BITS (8) -#define NVM_LUN_BITS (8) -#define NVM_CH_BITS (8) - -struct ppa_addr { -/* Generic structure for all addresses */ -union { -struct { -u64 blk :NVM_BLK_BITS ; -u64 pg :NVM_PG_BITS ; -u64 sec :NVM_SEC_BITS ; -u64 pl :NVM_PL_BITS ; -u64 lun :NVM_LUN_BITS ; -u64 ch :NVM_CH_BITS ; - } g; - -u64 ppa; - }; -}; -struct nvm_rq {struct nvm_tgt_instance *ins;struct nvm_dev *dev;
@@ -182,39 +222,6 @@ static inline void *nvm_rq_to_pdu(structstruct nvm_block ; -typedef int (nvm_l2p_update_fn )(u64 ,u32 ,__le64 *,void *); -typedef int (nvm_bb_update_fn )(struct ppa_addr ,int ,u8 *,void *); -typedef int (nvm_id_fn )(struct nvm_dev *,struct nvm_id *); -typedef int (nvm_get_l2p_tbl_fn )(struct nvm_dev *,u64 ,u32 , -nvm_l2p_update_fn *,void *); -typedef int (nvm_op_bb_tbl_fn )(struct nvm_dev *,struct ppa_addr ,int , -nvm_bb_update_fn *,void *); -typedef int (nvm_op_set_bb_fn )(struct nvm_dev *,struct nvm_rq *,int ); -typedef int (nvm_submit_io_fn )(struct nvm_dev *,struct nvm_rq *); -typedef int (nvm_erase_blk_fn )(struct nvm_dev *,struct nvm_rq *); -typedef void *(nvm_create_dma_pool_fn )(struct nvm_dev *,char *); -typedef void (nvm_destroy_dma_pool_fn )(void *); -typedef void *(nvm_dev_dma_alloc_fn )(struct nvm_dev *,void *,gfp_t , -dma_addr_t *); -typedef void (nvm_dev_dma_free_fn )(void *,void *,dma_addr_t ); - -struct nvm_dev_ops { -nvm_id_fn *identity; -nvm_get_l2p_tbl_fn *get_l2p_tbl; -nvm_op_bb_tbl_fn *get_bb_tbl; -nvm_op_set_bb_fn *set_bb_tbl; - -nvm_submit_io_fn *submit_io; -nvm_erase_blk_fn *erase_block; - -nvm_create_dma_pool_fn *create_dma_pool; -nvm_destroy_dma_pool_fn *destroy_dma_pool; -nvm_dev_dma_alloc_fn *dev_dma_alloc; -nvm_dev_dma_free_fn *dev_dma_free; - -unsigned int max_phys_sect; -}; -struct nvm_lun {int id;
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/lightnvm-ensure-that-nvm_dev_ops-can-be-used-without-config_nvm.patch