|
@@ -148,6 +148,9 @@ struct ppa_addr {
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+struct nvm_rq;
|
|
|
|
+typedef void (nvm_end_io_fn)(struct nvm_rq *, int);
|
|
|
|
+
|
|
struct nvm_rq {
|
|
struct nvm_rq {
|
|
struct nvm_tgt_instance *ins;
|
|
struct nvm_tgt_instance *ins;
|
|
struct nvm_dev *dev;
|
|
struct nvm_dev *dev;
|
|
@@ -164,6 +167,9 @@ struct nvm_rq {
|
|
void *metadata;
|
|
void *metadata;
|
|
dma_addr_t dma_metadata;
|
|
dma_addr_t dma_metadata;
|
|
|
|
|
|
|
|
+ struct completion *wait;
|
|
|
|
+ nvm_end_io_fn *end_io;
|
|
|
|
+
|
|
uint8_t opcode;
|
|
uint8_t opcode;
|
|
uint16_t nr_pages;
|
|
uint16_t nr_pages;
|
|
uint16_t flags;
|
|
uint16_t flags;
|
|
@@ -347,7 +353,6 @@ static inline struct ppa_addr block_to_ppa(struct nvm_dev *dev,
|
|
|
|
|
|
typedef blk_qc_t (nvm_tgt_make_rq_fn)(struct request_queue *, struct bio *);
|
|
typedef blk_qc_t (nvm_tgt_make_rq_fn)(struct request_queue *, struct bio *);
|
|
typedef sector_t (nvm_tgt_capacity_fn)(void *);
|
|
typedef sector_t (nvm_tgt_capacity_fn)(void *);
|
|
-typedef int (nvm_tgt_end_io_fn)(struct nvm_rq *, int);
|
|
|
|
typedef void *(nvm_tgt_init_fn)(struct nvm_dev *, struct gendisk *, int, int);
|
|
typedef void *(nvm_tgt_init_fn)(struct nvm_dev *, struct gendisk *, int, int);
|
|
typedef void (nvm_tgt_exit_fn)(void *);
|
|
typedef void (nvm_tgt_exit_fn)(void *);
|
|
|
|
|
|
@@ -358,7 +363,7 @@ struct nvm_tgt_type {
|
|
/* target entry points */
|
|
/* target entry points */
|
|
nvm_tgt_make_rq_fn *make_rq;
|
|
nvm_tgt_make_rq_fn *make_rq;
|
|
nvm_tgt_capacity_fn *capacity;
|
|
nvm_tgt_capacity_fn *capacity;
|
|
- nvm_tgt_end_io_fn *end_io;
|
|
|
|
|
|
+ nvm_end_io_fn *end_io;
|
|
|
|
|
|
/* module-specific init/teardown */
|
|
/* module-specific init/teardown */
|
|
nvm_tgt_init_fn *init;
|
|
nvm_tgt_init_fn *init;
|
|
@@ -383,7 +388,6 @@ typedef int (nvmm_open_blk_fn)(struct nvm_dev *, struct nvm_block *);
|
|
typedef int (nvmm_close_blk_fn)(struct nvm_dev *, struct nvm_block *);
|
|
typedef int (nvmm_close_blk_fn)(struct nvm_dev *, struct nvm_block *);
|
|
typedef void (nvmm_flush_blk_fn)(struct nvm_dev *, struct nvm_block *);
|
|
typedef void (nvmm_flush_blk_fn)(struct nvm_dev *, struct nvm_block *);
|
|
typedef int (nvmm_submit_io_fn)(struct nvm_dev *, struct nvm_rq *);
|
|
typedef int (nvmm_submit_io_fn)(struct nvm_dev *, struct nvm_rq *);
|
|
-typedef int (nvmm_end_io_fn)(struct nvm_rq *, int);
|
|
|
|
typedef int (nvmm_erase_blk_fn)(struct nvm_dev *, struct nvm_block *,
|
|
typedef int (nvmm_erase_blk_fn)(struct nvm_dev *, struct nvm_block *,
|
|
unsigned long);
|
|
unsigned long);
|
|
typedef struct nvm_lun *(nvmm_get_lun_fn)(struct nvm_dev *, int);
|
|
typedef struct nvm_lun *(nvmm_get_lun_fn)(struct nvm_dev *, int);
|
|
@@ -404,7 +408,6 @@ struct nvmm_type {
|
|
nvmm_flush_blk_fn *flush_blk;
|
|
nvmm_flush_blk_fn *flush_blk;
|
|
|
|
|
|
nvmm_submit_io_fn *submit_io;
|
|
nvmm_submit_io_fn *submit_io;
|
|
- nvmm_end_io_fn *end_io;
|
|
|
|
nvmm_erase_blk_fn *erase_blk;
|
|
nvmm_erase_blk_fn *erase_blk;
|
|
|
|
|
|
/* Configuration management */
|
|
/* Configuration management */
|
|
@@ -434,6 +437,7 @@ extern int nvm_set_rqd_ppalist(struct nvm_dev *, struct nvm_rq *,
|
|
extern void nvm_free_rqd_ppalist(struct nvm_dev *, struct nvm_rq *);
|
|
extern void nvm_free_rqd_ppalist(struct nvm_dev *, struct nvm_rq *);
|
|
extern int nvm_erase_ppa(struct nvm_dev *, struct ppa_addr);
|
|
extern int nvm_erase_ppa(struct nvm_dev *, struct ppa_addr);
|
|
extern int nvm_erase_blk(struct nvm_dev *, struct nvm_block *);
|
|
extern int nvm_erase_blk(struct nvm_dev *, struct nvm_block *);
|
|
|
|
+extern void nvm_end_io(struct nvm_rq *, int);
|
|
#else /* CONFIG_NVM */
|
|
#else /* CONFIG_NVM */
|
|
struct nvm_dev_ops;
|
|
struct nvm_dev_ops;
|
|
|
|
|