SCSI-LOWLEVEL revert changes to scsi-lowlevel
The memory tracking code reports memory allocated by iscsi_allocate_pdu_with_itt_flags_size() as lost. This memory is allocated by the iscsi part of libiscsi, but later freed by the lowlevel scsi part. We will fix this later by introducing an iscsi_task object.
This commit is contained in:
@@ -955,8 +955,8 @@ EXTERN int scsi_task_add_data_in_buffer(struct scsi_task *task, int len, unsigne
|
||||
* To cancel the task also a the target you need to call the task management functions.
|
||||
*/
|
||||
EXTERN int
|
||||
iscsi_scsi_task_cancel(struct iscsi_context *iscsi,
|
||||
struct scsi_task *task);
|
||||
iscsi_scsi_cancel_task(struct iscsi_context *iscsi,
|
||||
struct scsi_task *task);
|
||||
|
||||
/*
|
||||
* This function is used when you want to cancel all scsi tasks.
|
||||
|
||||
@@ -17,6 +17,12 @@
|
||||
#ifndef __scsi_lowlevel_h__
|
||||
#define __scsi_lowlevel_h__
|
||||
|
||||
#if defined(WIN32)
|
||||
#define EXTERN __declspec( dllexport )
|
||||
#else
|
||||
#define EXTERN
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -123,7 +129,7 @@ enum scsi_xfer_dir {
|
||||
/*
|
||||
* READTOC
|
||||
*/
|
||||
EXTERN struct scsi_task *scsi_cdb_readtoc(struct iscsi_context *iscsi, int msf, int format, int track_session, uint16_t alloc_len);
|
||||
EXTERN struct scsi_task *scsi_cdb_readtoc(int msf, int format, int track_session, uint16_t alloc_len);
|
||||
|
||||
enum scsi_readtoc_fmt {
|
||||
SCSI_READ_TOC = 0,
|
||||
@@ -299,11 +305,6 @@ struct scsi_data {
|
||||
unsigned char *data;
|
||||
};
|
||||
|
||||
struct scsi_allocated_memory {
|
||||
struct scsi_allocated_memory *next;
|
||||
void *ptr;
|
||||
};
|
||||
|
||||
enum scsi_residual {
|
||||
SCSI_RESIDUAL_NO_RESIDUAL = 0,
|
||||
SCSI_RESIDUAL_UNDERFLOW,
|
||||
@@ -312,10 +313,10 @@ enum scsi_residual {
|
||||
|
||||
struct scsi_task {
|
||||
int status;
|
||||
|
||||
int cdb_size;
|
||||
int xfer_dir;
|
||||
int expxferlen;
|
||||
struct iscsi_context * iscsi;
|
||||
unsigned char cdb[SCSI_CDB_MAX_SIZE];
|
||||
union {
|
||||
struct scsi_read6_params read6;
|
||||
@@ -361,7 +362,7 @@ struct scsi_task {
|
||||
|
||||
/* This function will free a scsi task structure.
|
||||
You may NOT cancel a task until the callback has been invoked
|
||||
and the command has completed on the iscsi layer.
|
||||
and the command has completed on the transport layer.
|
||||
*/
|
||||
EXTERN void scsi_free_scsi_task(struct scsi_task *task);
|
||||
|
||||
@@ -371,7 +372,8 @@ EXTERN void *scsi_get_task_private_ptr(struct scsi_task *task);
|
||||
/*
|
||||
* TESTUNITREADY
|
||||
*/
|
||||
EXTERN struct scsi_task *scsi_cdb_testunitready(struct iscsi_context *iscsi);
|
||||
EXTERN struct scsi_task *scsi_cdb_testunitready(void);
|
||||
|
||||
|
||||
/*
|
||||
* REPORTLUNS
|
||||
@@ -385,16 +387,16 @@ struct scsi_reportluns_list {
|
||||
uint16_t luns[0];
|
||||
};
|
||||
|
||||
EXTERN struct scsi_task *scsi_reportluns_cdb(struct iscsi_context *iscsi, int report_type, int alloc_len);
|
||||
EXTERN struct scsi_task *scsi_reportluns_cdb(int report_type, int alloc_len);
|
||||
|
||||
/*
|
||||
* RESERVE6
|
||||
*/
|
||||
EXTERN struct scsi_task *scsi_cdb_reserve6(struct iscsi_context *iscsi);
|
||||
EXTERN struct scsi_task *scsi_cdb_reserve6(void);
|
||||
/*
|
||||
* RELEASE6
|
||||
*/
|
||||
EXTERN struct scsi_task *scsi_cdb_release6(struct iscsi_context *iscsi);
|
||||
EXTERN struct scsi_task *scsi_cdb_release6(void);
|
||||
|
||||
/*
|
||||
* READCAPACITY10
|
||||
@@ -403,7 +405,7 @@ struct scsi_readcapacity10 {
|
||||
uint32_t lba;
|
||||
uint32_t block_size;
|
||||
};
|
||||
EXTERN struct scsi_task *scsi_cdb_readcapacity10(struct iscsi_context *iscsi, int lba, int pmi);
|
||||
EXTERN struct scsi_task *scsi_cdb_readcapacity10(int lba, int pmi);
|
||||
|
||||
|
||||
/*
|
||||
@@ -563,7 +565,7 @@ struct scsi_inquiry_logical_block_provisioning {
|
||||
enum scsi_inquiry_provisioning_type provisioning_type;
|
||||
};
|
||||
|
||||
EXTERN struct scsi_task *scsi_cdb_inquiry(struct iscsi_context *iscsi, int evpd, int page_code, int alloc_len);
|
||||
EXTERN struct scsi_task *scsi_cdb_inquiry(int evpd, int page_code, int alloc_len);
|
||||
|
||||
struct scsi_inquiry_unit_serial_number {
|
||||
enum scsi_inquiry_peripheral_qualifier qualifier;
|
||||
@@ -733,8 +735,7 @@ struct scsi_mode_sense {
|
||||
struct scsi_mode_page *pages;
|
||||
};
|
||||
|
||||
EXTERN struct scsi_task *scsi_cdb_modesense6(struct iscsi_context *iscsi,
|
||||
int dbd,
|
||||
EXTERN struct scsi_task *scsi_cdb_modesense6(int dbd,
|
||||
enum scsi_modesense_page_control pc,
|
||||
enum scsi_modesense_page_code page_code,
|
||||
int sub_page_code,
|
||||
@@ -799,37 +800,37 @@ struct scsi_report_supported_op_codes {
|
||||
EXTERN int scsi_datain_getfullsize(struct scsi_task *task);
|
||||
EXTERN void *scsi_datain_unmarshall(struct scsi_task *task);
|
||||
|
||||
EXTERN struct scsi_task *scsi_cdb_read6(struct iscsi_context *iscsi, uint32_t lba, uint32_t xferlen, int blocksize);
|
||||
EXTERN struct scsi_task *scsi_cdb_read10(struct iscsi_context *iscsi, uint32_t lba, uint32_t xferlen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_read12(struct iscsi_context *iscsi, uint32_t lba, uint32_t xferlen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_read16(struct iscsi_context *iscsi, uint64_t lba, uint32_t xferlen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_write10(struct iscsi_context *iscsi, uint32_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_write12(struct iscsi_context *iscsi, uint32_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_write16(struct iscsi_context *iscsi, uint64_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_startstopunit(struct iscsi_context *iscsi, int immed, int pcm, int pc, int no_flush, int loej, int start);
|
||||
EXTERN struct scsi_task *scsi_cdb_preventallow(struct iscsi_context *iscsi, int prevent);
|
||||
EXTERN struct scsi_task *scsi_cdb_orwrite(struct iscsi_context *iscsi, uint64_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_compareandwrite(struct iscsi_context *iscsi, uint64_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_writeverify10(struct iscsi_context *iscsi, uint32_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int bytchk, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_writeverify12(struct iscsi_context *iscsi, uint32_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int bytchk, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_writeverify16(struct iscsi_context *iscsi, uint64_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int bytchk, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_verify10(struct iscsi_context *iscsi, uint32_t lba, uint32_t xferlen, int vprotect, int dpo, int bytchk, int blocksize);
|
||||
EXTERN struct scsi_task *scsi_cdb_verify12(struct iscsi_context *iscsi, uint32_t lba, uint32_t xferlen, int vprotect, int dpo, int bytchk, int blocksize);
|
||||
EXTERN struct scsi_task *scsi_cdb_verify16(struct iscsi_context *iscsi, uint64_t lba, uint32_t xferlen, int vprotect, int dpo, int bytchk, int blocksize);
|
||||
EXTERN struct scsi_task *scsi_cdb_read6(uint32_t lba, uint32_t xferlen, int blocksize);
|
||||
EXTERN struct scsi_task *scsi_cdb_read10(uint32_t lba, uint32_t xferlen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_read12(uint32_t lba, uint32_t xferlen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_read16(uint64_t lba, uint32_t xferlen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_write10(uint32_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_write12(uint32_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_write16(uint64_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_startstopunit(int immed, int pcm, int pc, int no_flush, int loej, int start);
|
||||
EXTERN struct scsi_task *scsi_cdb_preventallow(int prevent);
|
||||
EXTERN struct scsi_task *scsi_cdb_orwrite(uint64_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_compareandwrite(uint64_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_writeverify10(uint32_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int bytchk, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_writeverify12(uint32_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int bytchk, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_writeverify16(uint64_t lba, uint32_t xferlen, int blocksize, int wrprotect, int dpo, int bytchk, int group_number);
|
||||
EXTERN struct scsi_task *scsi_cdb_verify10(uint32_t lba, uint32_t xferlen, int vprotect, int dpo, int bytchk, int blocksize);
|
||||
EXTERN struct scsi_task *scsi_cdb_verify12(uint32_t lba, uint32_t xferlen, int vprotect, int dpo, int bytchk, int blocksize);
|
||||
EXTERN struct scsi_task *scsi_cdb_verify16(uint64_t lba, uint32_t xferlen, int vprotect, int dpo, int bytchk, int blocksize);
|
||||
|
||||
EXTERN struct scsi_task *scsi_cdb_synchronizecache10(struct iscsi_context *iscsi, int lba, int num_blocks,
|
||||
EXTERN struct scsi_task *scsi_cdb_synchronizecache10(int lba, int num_blocks,
|
||||
int syncnv, int immed);
|
||||
EXTERN struct scsi_task *scsi_cdb_synchronizecache16(struct iscsi_context *iscsi, uint64_t lba, uint32_t num_blocks,
|
||||
EXTERN struct scsi_task *scsi_cdb_synchronizecache16(uint64_t lba, uint32_t num_blocks,
|
||||
int syncnv, int immed);
|
||||
EXTERN struct scsi_task *scsi_cdb_serviceactionin16(struct iscsi_context *iscsi, enum scsi_service_action_in sa, uint32_t xferlen);
|
||||
EXTERN struct scsi_task *scsi_cdb_readcapacity16(struct iscsi_context *iscsi);
|
||||
EXTERN struct scsi_task *scsi_cdb_get_lba_status(struct iscsi_context *iscsi, uint64_t starting_lba, uint32_t alloc_len);
|
||||
EXTERN struct scsi_task *scsi_cdb_unmap(struct iscsi_context *iscsi, int anchor, int group, uint16_t xferlen);
|
||||
EXTERN struct scsi_task *scsi_cdb_writesame10(struct iscsi_context *iscsi, int wrprotect, int anchor, int unmap, int pbdata, int lbdata, uint32_t lba, int group, uint16_t num_blocks);
|
||||
EXTERN struct scsi_task *scsi_cdb_writesame16(struct iscsi_context *iscsi, int wrprotect, int anchor, int unmap, int pbdata, int lbdata, uint64_t lba, int group, uint32_t num_blocks);
|
||||
EXTERN struct scsi_task *scsi_cdb_prefetch10(struct iscsi_context *iscsi, uint32_t lba, int num_blocks, int immed, int group);
|
||||
EXTERN struct scsi_task *scsi_cdb_prefetch16(struct iscsi_context *iscsi, uint64_t lba, int num_blocks, int immed, int group);
|
||||
EXTERN struct scsi_task *scsi_cdb_report_supported_opcodes(struct iscsi_context *iscsi, int report_timeouts, uint32_t alloc_len);
|
||||
EXTERN struct scsi_task *scsi_cdb_serviceactionin16(enum scsi_service_action_in sa, uint32_t xferlen);
|
||||
EXTERN struct scsi_task *scsi_cdb_readcapacity16(void);
|
||||
EXTERN struct scsi_task *scsi_cdb_get_lba_status(uint64_t starting_lba, uint32_t alloc_len);
|
||||
EXTERN struct scsi_task *scsi_cdb_unmap(int anchor, int group, uint16_t xferlen);
|
||||
EXTERN struct scsi_task *scsi_cdb_writesame10(int wrprotect, int anchor, int unmap, int pbdata, int lbdata, uint32_t lba, int group, uint16_t num_blocks);
|
||||
EXTERN struct scsi_task *scsi_cdb_writesame16(int wrprotect, int anchor, int unmap, int pbdata, int lbdata, uint64_t lba, int group, uint32_t num_blocks);
|
||||
EXTERN struct scsi_task *scsi_cdb_prefetch10(uint32_t lba, int num_blocks, int immed, int group);
|
||||
EXTERN struct scsi_task *scsi_cdb_prefetch16(uint64_t lba, int num_blocks, int immed, int group);
|
||||
EXTERN struct scsi_task *scsi_cdb_report_supported_opcodes(int report_timeouts, uint32_t alloc_len);
|
||||
|
||||
void *scsi_malloc(struct scsi_task *task, size_t size);
|
||||
|
||||
@@ -838,4 +839,3 @@ void *scsi_malloc(struct scsi_task *task, size_t size);
|
||||
#endif
|
||||
|
||||
#endif /* __scsi_lowlevel_h__ */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user