From d6f1f292c3963c4f10fe0bf6de5fa79ff3e1ef30 Mon Sep 17 00:00:00 2001 From: John Dulaney jdulaney@fedoraproject.org Date: Sat, 9 Apr 2016 03:44:35 -0400 Subject: [PATCH] Patch to fix compile issue with drivers/block/null_blk.c
There is a line of invalid C in drivers/block/null_blk.c: static struct nvm_dev_ops null_lnvm_dev_ops;
Its at line 568 in my checkout.
This patch fixes this issue.
Sourced from:
http://comments.gmane.org/gmane.comp.emulators.kvm.devel/145455
I have done a test build that boots and runs normally.
Signed-off-by: John Dulaney jdulaney@fedoraproject.org --- include/linux/lightnvm.h | 115 ++++++++++++++++++++++++----------------------- 1 file changed, 59 insertions(+), 56 deletions(-)
diff --git a/include/linux/lightnvm.h b/include/linux/lightnvm.h index 034117b..4a22df5 100644 --- a/include/linux/lightnvm.h +++ b/include/linux/lightnvm.h @@ -11,6 +11,65 @@ enum { NVM_IOTYPE_GC = 1, };
+struct nvm_id; +struct nvm_rq; + +#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; + }; +}; + +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 request_queue *, struct nvm_id *); +typedef int (nvm_get_l2p_tbl_fn)(struct request_queue *, u64, u32, + nvm_l2p_update_fn *, void *); +typedef int (nvm_op_bb_tbl_fn)(struct request_queue *, struct ppa_addr, int, + nvm_bb_update_fn *, void *); +typedef int (nvm_op_set_bb_fn)(struct request_queue *, struct nvm_rq *, int); +typedef int (nvm_submit_io_fn)(struct request_queue *, struct nvm_rq *); +typedef int (nvm_erase_blk_fn)(struct request_queue *, struct nvm_rq *); +typedef void *(nvm_create_dma_pool_fn)(struct request_queue *, char *); +typedef void (nvm_destroy_dma_pool_fn)(void *); +typedef void *(nvm_dev_dma_alloc_fn)(struct request_queue *, 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> @@ -125,29 +184,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; @@ -181,39 +217,6 @@ static inline void *nvm_rq_to_pdu(struct nvm_rq *rqdata)
struct 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;
On Wed, Apr 13, 2016 at 4:00 PM, John Dulaney jdulaney@fedoraproject.org wrote:
From d6f1f292c3963c4f10fe0bf6de5fa79ff3e1ef30 Mon Sep 17 00:00:00 2001 From: John Dulaney jdulaney@fedoraproject.org Date: Sat, 9 Apr 2016 03:44:35 -0400 Subject: [PATCH] Patch to fix compile issue with drivers/block/null_blk.c
There is a line of invalid C in drivers/block/null_blk.c: static struct nvm_dev_ops null_lnvm_dev_ops;
Its at line 568 in my checkout.
This patch fixes this issue.
Sourced from:
http://comments.gmane.org/gmane.comp.emulators.kvm.devel/145455
We don't set CONFIG_NVM in any of the Fedora kernel configs.
I have done a test build that boots and runs normally.
Signed-off-by: John Dulaney jdulaney@fedoraproject.org
This patch isn't authored by you. It was written by Jens and you didn't preserve authorship. Also, it isn't even the final version of the patch that went into his tree. That can be found here:
https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=...
We'll just let things run their course here and pick up the fix with the normal kernel workflow. I don't see a need to carry this as a separate patch.
josh
kernel@lists.fedoraproject.org