iser: Make struct iscsit_transport a little bit more CPU cache friendly by combining fast path callbacks in a single cache line.

git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/iser@5245 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2014-01-29 00:18:04 +00:00
parent f7915d582b
commit 91e6f7d26a

View File

@@ -24,12 +24,21 @@ enum iscsit_transport_type {
struct iscsit_transport {
struct iscsi_cmnd* (*iscsit_alloc_cmd)(struct iscsi_conn *conn,
struct iscsi_cmnd *parent);
void (*iscsit_free_cmd)(struct iscsi_cmnd *cmnd);
void (*iscsit_preprocessing_done)(struct iscsi_cmnd *cmnd);
void (*iscsit_send_data_rsp)(struct iscsi_cmnd *req, u8 *sense,
int sense_len, u8 status,
int send_status);
int (*iscsit_send_locally)(struct iscsi_cmnd *cmnd,
unsigned int cmd_count);
void (*iscsit_set_sense_data)(struct iscsi_cmnd *rsp,
const u8 *sense_buf, int sense_len);
int (*iscsit_receive_cmnd_data)(struct iscsi_cmnd *cmnd);
void (*iscsit_make_conn_wr_active)(struct iscsi_conn *conn);
void (*iscsit_free_cmd)(struct iscsi_cmnd *cmnd);
void (*iscsit_set_req_data)(struct iscsi_cmnd *req,
struct iscsi_cmnd *rsp);
int (*iscsit_conn_alloc)(struct iscsi_session *session,
struct iscsi_kern_conn_info *info,
struct iscsi_conn **new_conn,
@@ -38,15 +47,10 @@ struct iscsit_transport {
void (*iscsit_conn_free)(struct iscsi_conn *conn);
void (*iscsit_conn_close)(struct iscsi_conn *conn, int flags);
void (*iscsit_mark_conn_closed)(struct iscsi_conn *conn, int flags);
ssize_t (*iscsit_get_initiator_ip)(struct iscsi_conn *conn, char *buf,
int size);
int (*iscsit_send_locally)(struct iscsi_cmnd *cmnd,
unsigned int cmd_count);
void (*iscsit_set_sense_data)(struct iscsi_cmnd *rsp,
const u8 *sense_buf, int sense_len);
void (*iscsit_set_req_data)(struct iscsi_cmnd *req,
struct iscsi_cmnd *rsp);
int (*iscsit_receive_cmnd_data)(struct iscsi_cmnd *cmnd);
void (*iscsit_close_all_portals)(void);
#if !defined(CONFIG_TCP_ZERO_COPY_TRANSFER_COMPLETION_NOTIFICATION)
@@ -57,7 +61,7 @@ struct iscsit_transport {
const char name[SCST_MAX_NAME];
enum iscsit_transport_type transport_type;
struct list_head transport_list_entry;
};
} ____cacheline_aligned;
extern int iscsit_register_transport(struct iscsit_transport *t);
extern void iscsit_unregister_transport(struct iscsit_transport *t);