mirror of
https://github.com/SCST-project/scst.git
synced 2026-10-01 12:15:42 +00:00
iscsi-scst: Fix multiple checkpatch warnings
This patch does not change any functionality.
This commit is contained in:
+49
-63
@@ -100,7 +100,6 @@ struct iscsi_thread_pool {
|
||||
struct list_head threads_list; /* protected by tp_mutex */
|
||||
};
|
||||
|
||||
|
||||
struct iscsi_target;
|
||||
struct iscsi_cmnd;
|
||||
|
||||
@@ -180,7 +179,7 @@ struct iscsi_session {
|
||||
u64 sid;
|
||||
};
|
||||
|
||||
#define ISCSI_CONN_IOV_MAX (PAGE_SIZE/sizeof(struct kvec))
|
||||
#define ISCSI_CONN_IOV_MAX (PAGE_SIZE / sizeof(struct kvec))
|
||||
|
||||
#define ISCSI_CONN_RD_STATE_IDLE 0
|
||||
#define ISCSI_CONN_RD_STATE_IN_LIST 1
|
||||
@@ -250,13 +249,13 @@ struct iscsi_conn {
|
||||
struct file *file;
|
||||
struct socket *sock;
|
||||
|
||||
void (*old_state_change)(struct sock *);
|
||||
void (*old_state_change)(struct sock *sk);
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0))
|
||||
void (*old_data_ready)(struct sock *);
|
||||
void (*old_data_ready)(struct sock *sk);
|
||||
#else
|
||||
void (*old_data_ready)(struct sock *, int);
|
||||
void (*old_data_ready)(struct sock *sk, int len);
|
||||
#endif
|
||||
void (*old_write_space)(struct sock *);
|
||||
void (*old_write_space)(struct sock *sk);
|
||||
|
||||
/* Both read only. Stay here for better CPU cache locality. */
|
||||
int hdigest_type;
|
||||
@@ -545,22 +544,20 @@ extern void conn_abort(struct iscsi_conn *conn);
|
||||
extern void iscsi_restart_cmnd(struct iscsi_cmnd *cmnd);
|
||||
extern void iscsi_fail_data_waiting_cmnd(struct iscsi_cmnd *cmnd);
|
||||
extern void iscsi_send_nop_in(struct iscsi_conn *conn);
|
||||
extern int iscsi_preliminary_complete(struct iscsi_cmnd *req,
|
||||
struct iscsi_cmnd *orig_req, bool get_data);
|
||||
extern int set_scst_preliminary_status_rsp(struct iscsi_cmnd *req,
|
||||
bool get_data, int key, int asc, int ascq);
|
||||
extern int iscsi_preliminary_complete(struct iscsi_cmnd *req, struct iscsi_cmnd *orig_req,
|
||||
bool get_data);
|
||||
extern int set_scst_preliminary_status_rsp(struct iscsi_cmnd *req, bool get_data, int key, int asc,
|
||||
int ascq);
|
||||
extern int iscsi_threads_pool_get(bool dedicated, const cpumask_t *cpu_mask,
|
||||
struct iscsi_thread_pool **out_pool);
|
||||
struct iscsi_thread_pool **out_pool);
|
||||
extern void iscsi_threads_pool_put(struct iscsi_thread_pool *p);
|
||||
|
||||
/* conn.c */
|
||||
extern struct kobj_type iscsi_conn_ktype;
|
||||
extern struct iscsi_conn *conn_lookup(struct iscsi_session *session, u16 cid);
|
||||
extern void conn_reinst_finished(struct iscsi_conn *conn);
|
||||
extern int __add_conn(struct iscsi_session *session,
|
||||
struct iscsi_kern_conn_info *info);
|
||||
extern int __del_conn(struct iscsi_session *session,
|
||||
struct iscsi_kern_conn_info *info);
|
||||
extern int __add_conn(struct iscsi_session *session, struct iscsi_kern_conn_info *info);
|
||||
extern int __del_conn(struct iscsi_session *session, struct iscsi_kern_conn_info *info);
|
||||
extern void conn_free(struct iscsi_conn *conn);
|
||||
extern void iscsi_make_conn_rd_active(struct iscsi_conn *conn);
|
||||
#define ISCSI_CONN_ACTIVE_CLOSE 1
|
||||
@@ -568,8 +565,7 @@ extern void iscsi_make_conn_rd_active(struct iscsi_conn *conn);
|
||||
extern void __mark_conn_closed(struct iscsi_conn *conn, int flags);
|
||||
extern void mark_conn_closed(struct iscsi_conn *conn);
|
||||
extern void iscsi_make_conn_wr_active(struct iscsi_conn *conn);
|
||||
extern void iscsi_check_tm_data_wait_timeouts(struct iscsi_conn *conn,
|
||||
bool force);
|
||||
extern void iscsi_check_tm_data_wait_timeouts(struct iscsi_conn *conn, bool force);
|
||||
extern void __iscsi_write_space_ready(struct iscsi_conn *conn);
|
||||
|
||||
/* nthread.c */
|
||||
@@ -583,27 +579,24 @@ extern void req_add_to_write_timeout_list(struct iscsi_cmnd *req);
|
||||
extern const struct attribute *iscsi_tgt_attrs[];
|
||||
extern int iscsi_enable_target(struct scst_tgt *scst_tgt, bool enable);
|
||||
extern bool iscsi_is_target_enabled(struct scst_tgt *scst_tgt);
|
||||
extern ssize_t iscsi_sysfs_send_event(uint32_t tid,
|
||||
enum iscsi_kern_event_code code,
|
||||
const char *param1, const char *param2, void **data);
|
||||
extern ssize_t iscsi_sysfs_send_event(uint32_t tid, enum iscsi_kern_event_code code,
|
||||
const char *param1, const char *param2, void **data);
|
||||
extern struct iscsi_target *target_lookup_by_id(u32 id);
|
||||
extern int __add_target(struct iscsi_kern_target_info *info);
|
||||
extern int __del_target(u32 id);
|
||||
extern ssize_t iscsi_sysfs_add_target(const char *target_name, char *params);
|
||||
extern ssize_t iscsi_sysfs_del_target(const char *target_name);
|
||||
extern ssize_t iscsi_sysfs_mgmt_cmd(char *cmd);
|
||||
extern void target_del_session(struct iscsi_target *target,
|
||||
struct iscsi_session *session, int flags);
|
||||
extern void target_del_session(struct iscsi_target *target, struct iscsi_session *session,
|
||||
int flags);
|
||||
extern void target_del_all_sess(struct iscsi_target *target, int flags);
|
||||
extern void target_del_all(void);
|
||||
|
||||
/* config.c */
|
||||
extern int conn_sysfs_add(struct iscsi_conn *conn);
|
||||
extern const struct attribute *iscsi_attrs[];
|
||||
extern int iscsi_add_attr(struct iscsi_target *target,
|
||||
const struct iscsi_kern_attr *user_info);
|
||||
extern void __iscsi_del_attr(struct iscsi_target *target,
|
||||
struct iscsi_attr *tgt_attr);
|
||||
extern int iscsi_add_attr(struct iscsi_target *target, const struct iscsi_kern_attr *user_info);
|
||||
extern void __iscsi_del_attr(struct iscsi_target *target, struct iscsi_attr *tgt_attr);
|
||||
|
||||
/* session.c */
|
||||
extern const struct attribute *iscsi_sess_attrs[];
|
||||
@@ -612,8 +605,7 @@ extern const struct file_operations session_seq_fops;
|
||||
extern struct iscsi_session *session_lookup(struct iscsi_target *target,
|
||||
u64 sid);
|
||||
extern void sess_reinst_finished(struct iscsi_session *session);
|
||||
extern int __add_session(struct iscsi_target *target,
|
||||
struct iscsi_kern_session_info *info);
|
||||
extern int __add_session(struct iscsi_target *target, struct iscsi_kern_session_info *info);
|
||||
extern int __del_session(struct iscsi_target *target, u64 sid);
|
||||
extern int session_free(struct iscsi_session *session, bool del);
|
||||
extern void iscsi_sess_force_close(struct iscsi_session *sess);
|
||||
@@ -621,12 +613,11 @@ extern void iscsi_sess_force_close(struct iscsi_session *sess);
|
||||
/* params.c */
|
||||
extern const char *iscsi_get_digest_name(int val, char *res);
|
||||
extern const char *iscsi_get_bool_value(int val);
|
||||
extern int iscsi_params_set(struct iscsi_target *target,
|
||||
struct iscsi_kern_params_info *info, int set);
|
||||
extern int iscsi_params_set(struct iscsi_target *target, struct iscsi_kern_params_info *info,
|
||||
int set);
|
||||
|
||||
/* event.c */
|
||||
extern int event_send(u32 tid, u64 sid, u32 cid, u32 cookie,
|
||||
enum iscsi_kern_event_code code,
|
||||
extern int event_send(u32 tid, u64 sid, u32 cid, u32 cookie, enum iscsi_kern_event_code code,
|
||||
const char *param1, const char *param2);
|
||||
extern int event_init(void);
|
||||
extern void event_exit(void);
|
||||
@@ -677,8 +668,8 @@ static inline bool cmnd_get_check(struct iscsi_cmnd *cmnd)
|
||||
res = 1;
|
||||
/* Necessary code is serialized by locks in cmnd_done() */
|
||||
} else {
|
||||
TRACE_DBG("cmnd %p, new ref_cnt %d", cmnd,
|
||||
atomic_read(&cmnd->ref_cnt));
|
||||
TRACE_DBG("cmnd %p, new ref_cnt %d",
|
||||
cmnd, atomic_read(&cmnd->ref_cnt));
|
||||
res = 0;
|
||||
}
|
||||
return res;
|
||||
@@ -687,8 +678,8 @@ static inline bool cmnd_get_check(struct iscsi_cmnd *cmnd)
|
||||
static inline void cmnd_get(struct iscsi_cmnd *cmnd)
|
||||
{
|
||||
atomic_inc(&cmnd->ref_cnt);
|
||||
TRACE_DBG("cmnd %p, new cmnd->ref_cnt %d", cmnd,
|
||||
atomic_read(&cmnd->ref_cnt));
|
||||
TRACE_DBG("cmnd %p, new cmnd->ref_cnt %d",
|
||||
cmnd, atomic_read(&cmnd->ref_cnt));
|
||||
/*
|
||||
* For the same reason as in kref_get(). Let's be safe and
|
||||
* always do it.
|
||||
@@ -698,8 +689,8 @@ static inline void cmnd_get(struct iscsi_cmnd *cmnd)
|
||||
|
||||
static inline void cmnd_put(struct iscsi_cmnd *cmnd)
|
||||
{
|
||||
TRACE_DBG("cmnd %p, new ref_cnt %d", cmnd,
|
||||
atomic_read(&cmnd->ref_cnt)-1);
|
||||
TRACE_DBG("cmnd %p, new ref_cnt %d",
|
||||
cmnd, atomic_read(&cmnd->ref_cnt) - 1);
|
||||
|
||||
EXTRACHECKS_BUG_ON(atomic_read(&cmnd->ref_cnt) == 0);
|
||||
|
||||
@@ -708,21 +699,19 @@ static inline void cmnd_put(struct iscsi_cmnd *cmnd)
|
||||
}
|
||||
|
||||
/* conn->write_list_lock supposed to be locked and BHs off */
|
||||
static inline void cmd_add_on_write_list(struct iscsi_conn *conn,
|
||||
struct iscsi_cmnd *cmnd)
|
||||
static inline void cmd_add_on_write_list(struct iscsi_conn *conn, struct iscsi_cmnd *cmnd)
|
||||
{
|
||||
struct iscsi_cmnd *parent = cmnd->parent_req;
|
||||
|
||||
TRACE_DBG("cmnd %p", cmnd);
|
||||
/* See comment in iscsi_restart_cmnd() */
|
||||
EXTRACHECKS_BUG_ON(cmnd->parent_req->hashed &&
|
||||
(cmnd_opcode(cmnd) != ISCSI_OP_R2T));
|
||||
EXTRACHECKS_BUG_ON(cmnd->parent_req->hashed && (cmnd_opcode(cmnd) != ISCSI_OP_R2T));
|
||||
list_add_tail(&cmnd->write_list_entry, &conn->write_list);
|
||||
cmnd->on_write_list = 1;
|
||||
|
||||
parent->not_processed_rsp_cnt++;
|
||||
TRACE_DBG("not processed rsp cnt %d (parent %p)",
|
||||
parent->not_processed_rsp_cnt, parent);
|
||||
parent->not_processed_rsp_cnt, parent);
|
||||
}
|
||||
|
||||
/* conn->write_list_lock supposed to be locked and BHs off */
|
||||
@@ -736,17 +725,15 @@ static inline void cmd_del_from_write_list(struct iscsi_cmnd *cmnd)
|
||||
|
||||
parent->not_processed_rsp_cnt--;
|
||||
TRACE_DBG("not processed rsp cnt %d (parent %p)",
|
||||
parent->not_processed_rsp_cnt, parent);
|
||||
parent->not_processed_rsp_cnt, parent);
|
||||
EXTRACHECKS_BUG_ON(parent->not_processed_rsp_cnt < 0);
|
||||
}
|
||||
|
||||
static inline void cmd_add_on_rx_ddigest_list(struct iscsi_cmnd *req,
|
||||
struct iscsi_cmnd *cmnd)
|
||||
static inline void cmd_add_on_rx_ddigest_list(struct iscsi_cmnd *req, struct iscsi_cmnd *cmnd)
|
||||
{
|
||||
TRACE_DBG("Adding RX ddigest cmd %p to digest list of req %p", cmnd,
|
||||
req);
|
||||
list_add_tail(&cmnd->rx_ddigest_cmd_list_entry,
|
||||
&req->rx_ddigest_cmd_list);
|
||||
TRACE_DBG("Adding RX ddigest cmd %p to digest list of req %p",
|
||||
cmnd, req);
|
||||
list_add_tail(&cmnd->rx_ddigest_cmd_list_entry, &req->rx_ddigest_cmd_list);
|
||||
#ifdef CONFIG_SCST_EXTRACHECKS
|
||||
cmnd->on_rx_digest_list = 1;
|
||||
#endif
|
||||
@@ -765,7 +752,7 @@ static inline unsigned long iscsi_get_timeout(struct iscsi_cmnd *req)
|
||||
{
|
||||
unsigned long res;
|
||||
|
||||
res = (cmnd_opcode(req) == ISCSI_OP_NOP_OUT) ?
|
||||
res = cmnd_opcode(req) == ISCSI_OP_NOP_OUT ?
|
||||
req->conn->nop_in_timeout : req->conn->data_rsp_timeout;
|
||||
|
||||
if (unlikely(test_bit(ISCSI_CMD_ABORTED, &req->prelim_compl_flags)))
|
||||
@@ -791,8 +778,8 @@ static inline int test_write_ready(struct iscsi_conn *conn)
|
||||
static inline void conn_get(struct iscsi_conn *conn)
|
||||
{
|
||||
atomic_inc(&conn->conn_ref_cnt);
|
||||
TRACE_DBG("conn %p, new conn_ref_cnt %d", conn,
|
||||
atomic_read(&conn->conn_ref_cnt));
|
||||
TRACE_DBG("conn %p, new conn_ref_cnt %d",
|
||||
conn, atomic_read(&conn->conn_ref_cnt));
|
||||
/*
|
||||
* For the same reason as in kref_get(). Let's be safe and
|
||||
* always do it.
|
||||
@@ -802,8 +789,8 @@ static inline void conn_get(struct iscsi_conn *conn)
|
||||
|
||||
static inline void conn_put(struct iscsi_conn *conn)
|
||||
{
|
||||
TRACE_DBG("conn %p, new conn_ref_cnt %d", conn,
|
||||
atomic_read(&conn->conn_ref_cnt)-1);
|
||||
TRACE_DBG("conn %p, new conn_ref_cnt %d",
|
||||
conn, atomic_read(&conn->conn_ref_cnt) - 1);
|
||||
sBUG_ON(atomic_read(&conn->conn_ref_cnt) == 0);
|
||||
|
||||
/*
|
||||
@@ -823,23 +810,22 @@ static inline void iscsi_extracheck_is_rd_thread(struct iscsi_conn *conn) {}
|
||||
static inline void iscsi_extracheck_is_wr_thread(struct iscsi_conn *conn) {}
|
||||
#endif
|
||||
|
||||
extern int iscsi_conn_alloc(struct iscsi_session *session,
|
||||
struct iscsi_kern_conn_info *info, struct iscsi_conn **new_conn,
|
||||
struct iscsit_transport *t);
|
||||
extern int iscsi_conn_alloc(struct iscsi_session *session, struct iscsi_kern_conn_info *info,
|
||||
struct iscsi_conn **new_conn, struct iscsit_transport *t);
|
||||
|
||||
extern int conn_activate(struct iscsi_conn *conn);
|
||||
extern void iscsi_tcp_mark_conn_closed(struct iscsi_conn *conn, int flags);
|
||||
extern void iscsi_tcp_conn_free(struct iscsi_conn *conn);
|
||||
extern void iscsi_cmnd_init(struct iscsi_conn *conn, struct iscsi_cmnd *cmnd,
|
||||
struct iscsi_cmnd *parent);
|
||||
struct iscsi_cmnd *parent);
|
||||
extern struct iscsi_cmnd *iscsi_get_send_cmnd(struct iscsi_conn *conn);
|
||||
extern void start_close_conn(struct iscsi_conn *conn);
|
||||
extern __be32 cmnd_set_sn(struct iscsi_cmnd *cmnd, int set_stat_sn);
|
||||
extern void iscsi_set_resid(struct iscsi_cmnd *rsp);
|
||||
extern int iscsi_init_conn(struct iscsi_session *session,
|
||||
struct iscsi_kern_conn_info *info, struct iscsi_conn *conn);
|
||||
extern int iscsi_init_conn(struct iscsi_session *session, struct iscsi_kern_conn_info *info,
|
||||
struct iscsi_conn *conn);
|
||||
extern void req_cmnd_pre_release(struct iscsi_cmnd *req);
|
||||
extern struct iscsi_cmnd *create_status_rsp(struct iscsi_cmnd *req,
|
||||
int status, const u8 *sense_buf, int sense_len);
|
||||
extern struct iscsi_cmnd *create_status_rsp(struct iscsi_cmnd *req, int status,
|
||||
const u8 *sense_buf, int sense_len);
|
||||
extern int iscsi_cmnd_set_write_buf(struct iscsi_cmnd *req);
|
||||
#endif /* __ISCSI_H__ */
|
||||
|
||||
@@ -48,16 +48,15 @@
|
||||
struct iscsi_pdu;
|
||||
struct iscsi_cmnd;
|
||||
extern void iscsi_dump_pdu(struct iscsi_pdu *pdu);
|
||||
extern unsigned long iscsi_get_flow_ctrl_or_mgmt_dbg_log_flag(
|
||||
struct iscsi_cmnd *cmnd);
|
||||
extern unsigned long iscsi_get_flow_ctrl_or_mgmt_dbg_log_flag(struct iscsi_cmnd *cmnd);
|
||||
#else
|
||||
#define iscsi_dump_pdu(x) do {} while (0)
|
||||
#define iscsi_get_flow_ctrl_or_mgmt_dbg_log_flag(x) 0
|
||||
#endif
|
||||
|
||||
#define TRACE_CONN_CLOSE(args...) TRACE_DBG_FLAG(TRACE_DEBUG|TRACE_CONN_OC, args)
|
||||
#define TRACE_CONN_CLOSE(args...) TRACE_DBG_FLAG(TRACE_DEBUG | TRACE_CONN_OC, args)
|
||||
#define TRACE_CONN_CLOSE_DBG(args...) TRACE(TRACE_CONN_OC_DBG, args)
|
||||
#define TRACE_NET_PAGE(args...) TRACE_DBG_FLAG(TRACE_NET_PG, args)
|
||||
#define TRACE_WRITE(args...) TRACE_DBG_FLAG(TRACE_DEBUG|TRACE_D_WRITE, args)
|
||||
#define TRACE_WRITE(args...) TRACE_DBG_FLAG(TRACE_DEBUG | TRACE_D_WRITE, args)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -125,7 +125,7 @@ struct iscsi_cdb_ahdr {
|
||||
__be16 ahslength;
|
||||
u8 ahstype;
|
||||
u8 reserved;
|
||||
u8 cdb[0];
|
||||
u8 cdb[];
|
||||
} __packed;
|
||||
|
||||
struct iscsi_rlength_ahdr {
|
||||
@@ -163,7 +163,7 @@ struct iscsi_scsi_rsp_hdr {
|
||||
|
||||
struct iscsi_sense_data {
|
||||
__be16 length;
|
||||
u8 data[0];
|
||||
u8 data[];
|
||||
} __packed;
|
||||
|
||||
struct iscsi_task_mgt_hdr {
|
||||
@@ -518,7 +518,7 @@ struct iscsi_nop_in_hdr {
|
||||
#define ISCSI_RESERVED_TAG_CPU32 (0xffffffffU)
|
||||
#define ISCSI_RESERVED_TAG (cpu_to_be32(ISCSI_RESERVED_TAG_CPU32))
|
||||
|
||||
#define cmnd_hdr(cmnd) ((struct iscsi_scsi_cmd_hdr *) (&((cmnd)->pdu.bhs)))
|
||||
#define cmnd_hdr(cmnd) ((struct iscsi_scsi_cmd_hdr *)(&((cmnd)->pdu.bhs)))
|
||||
#define cmnd_opcode(cmnd) ((cmnd)->pdu.bhs.opcode & ISCSI_OPCODE_MASK)
|
||||
#define cmnd_scsicode(cmnd) (cmnd_hdr((cmnd))->scb[0])
|
||||
|
||||
|
||||
+39
-53
@@ -83,25 +83,25 @@ static void log_params(struct iscsi_sess_params *params)
|
||||
char hdigest_name[64], ddigest_name[64];
|
||||
|
||||
PRINT_INFO("Negotiated parameters: InitialR2T %s, ImmediateData %s, MaxConnections %d, MaxRecvDataSegmentLength %d, MaxXmitDataSegmentLength %d, ",
|
||||
iscsi_get_bool_value(params->initial_r2t),
|
||||
iscsi_get_bool_value(params->immediate_data),
|
||||
params->max_connections,
|
||||
params->max_recv_data_length, params->max_xmit_data_length);
|
||||
iscsi_get_bool_value(params->initial_r2t),
|
||||
iscsi_get_bool_value(params->immediate_data),
|
||||
params->max_connections,
|
||||
params->max_recv_data_length, params->max_xmit_data_length);
|
||||
PRINT_INFO(" MaxBurstLength %d, FirstBurstLength %d, DefaultTime2Wait %d, DefaultTime2Retain %d, ",
|
||||
params->max_burst_length, params->first_burst_length,
|
||||
params->default_wait_time, params->default_retain_time);
|
||||
params->max_burst_length, params->first_burst_length,
|
||||
params->default_wait_time, params->default_retain_time);
|
||||
PRINT_INFO(" MaxOutstandingR2T %d, DataPDUInOrder %s, DataSequenceInOrder %s, ErrorRecoveryLevel %d, ",
|
||||
params->max_outstanding_r2t,
|
||||
iscsi_get_bool_value(params->data_pdu_inorder),
|
||||
iscsi_get_bool_value(params->data_sequence_inorder),
|
||||
params->error_recovery_level);
|
||||
params->max_outstanding_r2t,
|
||||
iscsi_get_bool_value(params->data_pdu_inorder),
|
||||
iscsi_get_bool_value(params->data_sequence_inorder),
|
||||
params->error_recovery_level);
|
||||
PRINT_INFO(" HeaderDigest %s, DataDigest %s, OFMarker %s, IFMarker %s, OFMarkInt %d, IFMarkInt %d, RDMAExtensions %s",
|
||||
iscsi_get_digest_name(params->header_digest, hdigest_name),
|
||||
iscsi_get_digest_name(params->data_digest, ddigest_name),
|
||||
iscsi_get_bool_value(params->ofmarker),
|
||||
iscsi_get_bool_value(params->ifmarker),
|
||||
params->ofmarkint, params->ifmarkint,
|
||||
iscsi_get_bool_value(params->rdma_extensions));
|
||||
iscsi_get_digest_name(params->header_digest, hdigest_name),
|
||||
iscsi_get_digest_name(params->data_digest, ddigest_name),
|
||||
iscsi_get_bool_value(params->ofmarker),
|
||||
iscsi_get_bool_value(params->ifmarker),
|
||||
params->ofmarkint, params->ifmarkint,
|
||||
iscsi_get_bool_value(params->rdma_extensions));
|
||||
}
|
||||
|
||||
/* target_mutex supposed to be locked */
|
||||
@@ -137,13 +137,10 @@ static void sess_params_check(struct iscsi_kern_params_info *info)
|
||||
CHECK_PARAM(info, iparams, rdma_extensions, 0, 1);
|
||||
CHECK_PARAM(info, iparams, target_recv_data_length, 512, max_len);
|
||||
CHECK_PARAM(info, iparams, initiator_recv_data_length, 512, max_len);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* target_mutex supposed to be locked */
|
||||
static void sess_params_set(struct iscsi_sess_params *params,
|
||||
struct iscsi_kern_params_info *info)
|
||||
static void sess_params_set(struct iscsi_sess_params *params, struct iscsi_kern_params_info *info)
|
||||
{
|
||||
int32_t *iparams = info->session_params;
|
||||
|
||||
@@ -171,11 +168,9 @@ static void sess_params_set(struct iscsi_sess_params *params,
|
||||
SET_PARAM(params, info, iparams, rdma_extensions);
|
||||
SET_PARAM(params, info, iparams, target_recv_data_length);
|
||||
SET_PARAM(params, info, iparams, initiator_recv_data_length);
|
||||
return;
|
||||
}
|
||||
|
||||
static void sess_params_get(struct iscsi_sess_params *params,
|
||||
struct iscsi_kern_params_info *info)
|
||||
static void sess_params_get(struct iscsi_sess_params *params, struct iscsi_kern_params_info *info)
|
||||
{
|
||||
int32_t *iparams = info->session_params;
|
||||
|
||||
@@ -203,12 +198,10 @@ static void sess_params_get(struct iscsi_sess_params *params,
|
||||
GET_PARAM(params, info, iparams, rdma_extensions);
|
||||
GET_PARAM(params, info, iparams, target_recv_data_length);
|
||||
GET_PARAM(params, info, iparams, initiator_recv_data_length);
|
||||
return;
|
||||
}
|
||||
|
||||
/* target_mutex supposed to be locked */
|
||||
static void tgt_params_check(struct iscsi_session *session,
|
||||
struct iscsi_kern_params_info *info)
|
||||
static void tgt_params_check(struct iscsi_session *session, struct iscsi_kern_params_info *info)
|
||||
{
|
||||
int32_t *iparams = info->target_params;
|
||||
unsigned int rsp_timeout, nop_in_timeout;
|
||||
@@ -218,14 +211,10 @@ static void tgt_params_check(struct iscsi_session *session,
|
||||
* performed in the user space.
|
||||
*/
|
||||
|
||||
CHECK_PARAM(info, iparams, queued_cmnds, MIN_NR_QUEUED_CMNDS,
|
||||
MAX_NR_QUEUED_CMNDS);
|
||||
CHECK_PARAM(info, iparams, rsp_timeout, MIN_RSP_TIMEOUT,
|
||||
MAX_RSP_TIMEOUT);
|
||||
CHECK_PARAM(info, iparams, nop_in_interval, MIN_NOP_IN_INTERVAL,
|
||||
MAX_NOP_IN_INTERVAL);
|
||||
CHECK_PARAM(info, iparams, nop_in_timeout, MIN_NOP_IN_TIMEOUT,
|
||||
MAX_NOP_IN_TIMEOUT);
|
||||
CHECK_PARAM(info, iparams, queued_cmnds, MIN_NR_QUEUED_CMNDS, MAX_NR_QUEUED_CMNDS);
|
||||
CHECK_PARAM(info, iparams, rsp_timeout, MIN_RSP_TIMEOUT, MAX_RSP_TIMEOUT);
|
||||
CHECK_PARAM(info, iparams, nop_in_interval, MIN_NOP_IN_INTERVAL, MAX_NOP_IN_INTERVAL);
|
||||
CHECK_PARAM(info, iparams, nop_in_timeout, MIN_NOP_IN_TIMEOUT, MAX_NOP_IN_TIMEOUT);
|
||||
|
||||
/*
|
||||
* We adjust too long timeout in req_add_to_write_timeout_list()
|
||||
@@ -240,14 +229,12 @@ static void tgt_params_check(struct iscsi_session *session,
|
||||
else
|
||||
nop_in_timeout = session->tgt_params.nop_in_timeout;
|
||||
if (nop_in_timeout > rsp_timeout)
|
||||
PRINT_WARNING("%s", "RspTimeout should be >= NopInTimeout, otherwise data transfer failure could take up to NopInTimeout long to detect");
|
||||
|
||||
return;
|
||||
PRINT_WARNING("RspTimeout should be >= NopInTimeout, otherwise data transfer failure could take up to NopInTimeout long to detect");
|
||||
}
|
||||
|
||||
/* target_mutex supposed to be locked */
|
||||
static int iscsi_tgt_params_set(struct iscsi_session *session,
|
||||
struct iscsi_kern_params_info *info, int set)
|
||||
static int iscsi_tgt_params_set(struct iscsi_session *session, struct iscsi_kern_params_info *info,
|
||||
int set)
|
||||
{
|
||||
struct iscsi_tgt_params *params = &session->tgt_params;
|
||||
int32_t *iparams = info->target_params;
|
||||
@@ -264,12 +251,12 @@ static int iscsi_tgt_params_set(struct iscsi_session *session,
|
||||
SET_PARAM(params, info, iparams, nop_in_interval);
|
||||
SET_PARAM(params, info, iparams, nop_in_timeout);
|
||||
|
||||
PRINT_INFO("Target parameters set for session %llx: QueuedCommands %d, Response timeout %d, Nop-In interval %d, Nop-In timeout %d", session->sid,
|
||||
params->queued_cmnds, params->rsp_timeout,
|
||||
params->nop_in_interval, params->nop_in_timeout);
|
||||
PRINT_INFO("Target parameters set for session %llx: QueuedCommands %d, Response timeout %d, Nop-In interval %d, Nop-In timeout %d",
|
||||
session->sid,
|
||||
params->queued_cmnds, params->rsp_timeout,
|
||||
params->nop_in_interval, params->nop_in_timeout);
|
||||
|
||||
list_for_each_entry(conn, &session->conn_list,
|
||||
conn_list_entry) {
|
||||
list_for_each_entry(conn, &session->conn_list, conn_list_entry) {
|
||||
conn->data_rsp_timeout =
|
||||
session->tgt_params.rsp_timeout * HZ;
|
||||
conn->nop_in_interval =
|
||||
@@ -277,11 +264,11 @@ static int iscsi_tgt_params_set(struct iscsi_session *session,
|
||||
conn->nop_in_timeout =
|
||||
session->tgt_params.nop_in_timeout * HZ;
|
||||
spin_lock_bh(&conn->conn_thr_pool->rd_lock);
|
||||
if (!conn->closing && (conn->nop_in_interval > 0)) {
|
||||
if (!conn->closing && conn->nop_in_interval > 0) {
|
||||
TRACE_DBG("Schedule Nop-In work for conn %p",
|
||||
conn);
|
||||
schedule_delayed_work(&conn->nop_in_delayed_work,
|
||||
conn->nop_in_interval + ISCSI_ADD_SCHED_TIME);
|
||||
conn->nop_in_interval + ISCSI_ADD_SCHED_TIME);
|
||||
}
|
||||
spin_unlock_bh(&conn->conn_thr_pool->rd_lock);
|
||||
}
|
||||
@@ -297,7 +284,7 @@ static int iscsi_tgt_params_set(struct iscsi_session *session,
|
||||
|
||||
/* target_mutex supposed to be locked */
|
||||
static int iscsi_sess_params_set(struct iscsi_session *session,
|
||||
struct iscsi_kern_params_info *info, int set)
|
||||
struct iscsi_kern_params_info *info, int set)
|
||||
{
|
||||
struct iscsi_sess_params *params;
|
||||
|
||||
@@ -309,15 +296,15 @@ static int iscsi_sess_params_set(struct iscsi_session *session,
|
||||
if (set) {
|
||||
sess_params_set(params, info);
|
||||
log_params(params);
|
||||
} else
|
||||
} else {
|
||||
sess_params_get(params, info);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* target_mutex supposed to be locked */
|
||||
int iscsi_params_set(struct iscsi_target *target,
|
||||
struct iscsi_kern_params_info *info, int set)
|
||||
int iscsi_params_set(struct iscsi_target *target, struct iscsi_kern_params_info *info, int set)
|
||||
{
|
||||
int err;
|
||||
struct iscsi_session *session;
|
||||
@@ -331,14 +318,13 @@ int iscsi_params_set(struct iscsi_target *target,
|
||||
}
|
||||
|
||||
session = session_lookup(target, info->sid);
|
||||
if (session == NULL) {
|
||||
if (!session) {
|
||||
PRINT_ERROR("Session for sid %llx not found", info->sid);
|
||||
err = -ENOENT;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (set && !list_empty(&session->conn_list) &&
|
||||
(info->params_type != key_target)) {
|
||||
if (set && !list_empty(&session->conn_list) && info->params_type != key_target) {
|
||||
err = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
|
||||
+43
-57
@@ -29,8 +29,7 @@ struct iscsi_session *session_lookup(struct iscsi_target *target, u64 sid)
|
||||
|
||||
lockdep_assert_held(&target->target_mutex);
|
||||
|
||||
list_for_each_entry(session, &target->session_list,
|
||||
session_list_entry) {
|
||||
list_for_each_entry(session, &target->session_list, session_list_entry) {
|
||||
if (session->sid == sid)
|
||||
return session;
|
||||
}
|
||||
@@ -38,8 +37,8 @@ struct iscsi_session *session_lookup(struct iscsi_target *target, u64 sid)
|
||||
}
|
||||
|
||||
/* target_mgmt_mutex supposed to be locked */
|
||||
static int iscsi_session_alloc(struct iscsi_target *target,
|
||||
struct iscsi_kern_session_info *info, struct iscsi_session **result)
|
||||
static int iscsi_session_alloc(struct iscsi_target *target, struct iscsi_kern_session_info *info,
|
||||
struct iscsi_session **result)
|
||||
{
|
||||
int err;
|
||||
unsigned int i;
|
||||
@@ -76,27 +75,24 @@ static int iscsi_session_alloc(struct iscsi_target *target,
|
||||
|
||||
session->next_ttt = 1;
|
||||
|
||||
session->scst_sess = scst_register_session(target->scst_tgt, 0,
|
||||
name, session, NULL, NULL);
|
||||
if (session->scst_sess == NULL) {
|
||||
session->scst_sess = scst_register_session(target->scst_tgt, 0, name, session, NULL, NULL);
|
||||
if (!session->scst_sess) {
|
||||
PRINT_ERROR("%s", "scst_register_session() failed");
|
||||
err = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (!session->sess_params.rdma_extensions) {
|
||||
err = iscsi_threads_pool_get(
|
||||
scst_get_acg_tgt_priv(session->scst_sess->acg) != NULL,
|
||||
&session->scst_sess->acg->acg_cpu_mask,
|
||||
&session->sess_thr_pool);
|
||||
err = iscsi_threads_pool_get((bool)scst_get_acg_tgt_priv(session->scst_sess->acg),
|
||||
&session->scst_sess->acg->acg_cpu_mask,
|
||||
&session->sess_thr_pool);
|
||||
if (err != 0)
|
||||
goto err_unreg;
|
||||
}
|
||||
|
||||
|
||||
TRACE(TRACE_MGMT, "Session %p created: target %p, tid %u, sid %#Lx, initiator %s",
|
||||
session, target, target->tid, info->sid,
|
||||
session->scst_sess->initiator_name);
|
||||
session, target, target->tid, info->sid,
|
||||
session->scst_sess->initiator_name);
|
||||
|
||||
*result = session;
|
||||
return 0;
|
||||
@@ -131,12 +127,10 @@ void sess_reinst_finished(struct iscsi_session *sess)
|
||||
sess->sess_reinstating = 0;
|
||||
|
||||
TRACE_EXIT();
|
||||
return;
|
||||
}
|
||||
|
||||
/* target_mgmt_mutex supposed to be locked */
|
||||
int __add_session(struct iscsi_target *target,
|
||||
struct iscsi_kern_session_info *info)
|
||||
int __add_session(struct iscsi_target *target, struct iscsi_kern_session_info *info)
|
||||
{
|
||||
struct iscsi_session *new_sess = NULL, *sess, *old_sess;
|
||||
int err = 0, i;
|
||||
@@ -155,17 +149,17 @@ int __add_session(struct iscsi_target *target,
|
||||
mutex_lock(&target->target_mutex);
|
||||
|
||||
sess = session_lookup(target, info->sid);
|
||||
if (sess != NULL) {
|
||||
if (sess) {
|
||||
PRINT_ERROR("Attempt to add session with existing SID %llx",
|
||||
info->sid);
|
||||
info->sid);
|
||||
err = -EEXIST;
|
||||
goto out_err_unlock;
|
||||
}
|
||||
|
||||
params_info = kmalloc(sizeof(*params_info), GFP_KERNEL);
|
||||
if (params_info == NULL) {
|
||||
if (!params_info) {
|
||||
PRINT_ERROR("Unable to allocate params info (size %zd)",
|
||||
sizeof(*params_info));
|
||||
sizeof(*params_info));
|
||||
err = -ENOMEM;
|
||||
goto out_err_unlock;
|
||||
}
|
||||
@@ -178,13 +172,12 @@ int __add_session(struct iscsi_target *target,
|
||||
* We need to find the latest session to correctly handle
|
||||
* multi-reinstatements
|
||||
*/
|
||||
list_for_each_entry_reverse(sess, &target->session_list,
|
||||
session_list_entry) {
|
||||
list_for_each_entry_reverse(sess, &target->session_list, session_list_entry) {
|
||||
union iscsi_sid s = *(union iscsi_sid *)&sess->sid;
|
||||
|
||||
s.id.tsih = 0;
|
||||
if ((sid.id64 == s.id64) &&
|
||||
(strcmp(info->initiator_name, sess->initiator_name) == 0)) {
|
||||
if (sid.id64 == s.id64 &&
|
||||
strcmp(info->initiator_name, sess->initiator_name) == 0) {
|
||||
if (!sess->sess_shutting_down) {
|
||||
/* session reinstatement */
|
||||
old_sess = sess;
|
||||
@@ -221,11 +214,11 @@ int __add_session(struct iscsi_target *target,
|
||||
kfree(params_info);
|
||||
params_info = NULL;
|
||||
|
||||
if (old_sess != NULL) {
|
||||
if (old_sess) {
|
||||
reinstatement = true;
|
||||
|
||||
TRACE_MGMT_DBG("Reinstating sess %p with SID %llx (old %p, SID %llx)",
|
||||
new_sess, new_sess->sid, old_sess, old_sess->sid);
|
||||
new_sess, new_sess->sid, old_sess, old_sess->sid);
|
||||
|
||||
new_sess->sess_reinstating = 1;
|
||||
old_sess->sess_reinst_successor = new_sess;
|
||||
@@ -246,7 +239,7 @@ int __add_session(struct iscsi_target *target,
|
||||
* SCST core under scst_mutex).
|
||||
*/
|
||||
scst_set_initial_UA(new_sess->scst_sess,
|
||||
SCST_LOAD_SENSE(scst_sense_nexus_loss_UA));
|
||||
SCST_LOAD_SENSE(scst_sense_nexus_loss_UA));
|
||||
}
|
||||
|
||||
out:
|
||||
@@ -288,7 +281,6 @@ static void iscsi_unreg_sess_done(struct scst_session *scst_sess)
|
||||
__session_free(session);
|
||||
|
||||
TRACE_EXIT();
|
||||
return;
|
||||
}
|
||||
|
||||
/* target_mutex supposed to be locked */
|
||||
@@ -297,29 +289,28 @@ int session_free(struct iscsi_session *session, bool del)
|
||||
unsigned int i;
|
||||
|
||||
TRACE(TRACE_MGMT, "Freeing session %p (SID %llx)",
|
||||
session, session->sid);
|
||||
session, session->sid);
|
||||
|
||||
lockdep_assert_held(&session->target->target_mutex);
|
||||
|
||||
sBUG_ON(!list_empty(&session->conn_list));
|
||||
if (unlikely(atomic_read(&session->active_cmds) != 0)) {
|
||||
PRINT_CRIT_ERROR("active_cmds not 0 (%d)!!",
|
||||
atomic_read(&session->active_cmds));
|
||||
atomic_read(&session->active_cmds));
|
||||
sBUG();
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(session->cmnd_data_wait_hash); i++)
|
||||
sBUG_ON(!list_empty(&session->cmnd_data_wait_hash[i]));
|
||||
|
||||
if (session->sess_reinst_successor != NULL)
|
||||
if (session->sess_reinst_successor)
|
||||
sess_reinst_finished(session->sess_reinst_successor);
|
||||
|
||||
if (session->sess_reinstating) {
|
||||
struct iscsi_session *s;
|
||||
|
||||
TRACE_MGMT_DBG("Freeing being reinstated sess %p", session);
|
||||
list_for_each_entry(s, &session->target->session_list,
|
||||
session_list_entry) {
|
||||
list_for_each_entry(s, &session->target->session_list, session_list_entry) {
|
||||
if (s->sess_reinst_successor == session) {
|
||||
s->sess_reinst_successor = NULL;
|
||||
break;
|
||||
@@ -330,7 +321,7 @@ int session_free(struct iscsi_session *session, bool del)
|
||||
if (del)
|
||||
list_del(&session->session_list_entry);
|
||||
|
||||
if (session->scst_sess != NULL) {
|
||||
if (session->scst_sess) {
|
||||
/*
|
||||
* We must NOT call scst_unregister_session() in the waiting
|
||||
* mode, since we are under target_mutex. Otherwise we can
|
||||
@@ -338,10 +329,10 @@ int session_free(struct iscsi_session *session, bool del)
|
||||
* and scst_mutex in SCST core (iscsi_report_aen() called by
|
||||
* SCST core under scst_mutex).
|
||||
*/
|
||||
scst_unregister_session(session->scst_sess, 0,
|
||||
iscsi_unreg_sess_done);
|
||||
} else
|
||||
scst_unregister_session(session->scst_sess, 0, iscsi_unreg_sess_done);
|
||||
} else {
|
||||
__session_free(session);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -376,19 +367,17 @@ void iscsi_sess_force_close(struct iscsi_session *sess)
|
||||
lockdep_assert_held(&sess->target->target_mutex);
|
||||
|
||||
PRINT_INFO("Force closing session %llx with initiator %s (%p)",
|
||||
(unsigned long long)sess->sid, sess->initiator_name, sess);
|
||||
(unsigned long long)sess->sid, sess->initiator_name, sess);
|
||||
|
||||
list_for_each_entry(conn, &sess->conn_list, conn_list_entry) {
|
||||
TRACE(TRACE_MGMT, "Force closing connection %p", conn);
|
||||
__mark_conn_closed(conn,
|
||||
ISCSI_CONN_ACTIVE_CLOSE|ISCSI_CONN_DELETING);
|
||||
ISCSI_CONN_ACTIVE_CLOSE | ISCSI_CONN_DELETING);
|
||||
}
|
||||
|
||||
TRACE_EXIT();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
#define ISCSI_SESS_BOOL_PARAM_ATTR(name, exported_name) \
|
||||
static ssize_t iscsi_sess_show_##name(struct kobject *kobj, \
|
||||
struct kobj_attribute *attr, char *buf) \
|
||||
@@ -407,7 +396,7 @@ static ssize_t iscsi_sess_show_##name(struct kobject *kobj, \
|
||||
} \
|
||||
\
|
||||
static struct kobj_attribute iscsi_sess_attr_##name = \
|
||||
__ATTR(exported_name, S_IRUGO, iscsi_sess_show_##name, NULL)
|
||||
__ATTR(exported_name, 0444, iscsi_sess_show_##name, NULL)
|
||||
|
||||
#define ISCSI_SESS_INT_PARAM_ATTR(name, exported_name) \
|
||||
static ssize_t iscsi_sess_show_##name(struct kobject *kobj, \
|
||||
@@ -426,7 +415,7 @@ static ssize_t iscsi_sess_show_##name(struct kobject *kobj, \
|
||||
} \
|
||||
\
|
||||
static struct kobj_attribute iscsi_sess_attr_##name = \
|
||||
__ATTR(exported_name, S_IRUGO, iscsi_sess_show_##name, NULL)
|
||||
__ATTR(exported_name, 0444, iscsi_sess_show_##name, NULL)
|
||||
|
||||
#define ISCSI_SESS_DIGEST_PARAM_ATTR(name, exported_name) \
|
||||
static ssize_t iscsi_sess_show_##name(struct kobject *kobj, \
|
||||
@@ -447,7 +436,7 @@ static ssize_t iscsi_sess_show_##name(struct kobject *kobj, \
|
||||
} \
|
||||
\
|
||||
static struct kobj_attribute iscsi_sess_attr_##name = \
|
||||
__ATTR(exported_name, S_IRUGO, iscsi_sess_show_##name, NULL)
|
||||
__ATTR(exported_name, 0444, iscsi_sess_show_##name, NULL)
|
||||
|
||||
ISCSI_SESS_BOOL_PARAM_ATTR(initial_r2t, InitialR2T);
|
||||
ISCSI_SESS_BOOL_PARAM_ATTR(immediate_data, ImmediateData);
|
||||
@@ -459,8 +448,7 @@ ISCSI_SESS_INT_PARAM_ATTR(max_outstanding_r2t, MaxOutstandingR2T);
|
||||
ISCSI_SESS_DIGEST_PARAM_ATTR(header_digest, HeaderDigest);
|
||||
ISCSI_SESS_DIGEST_PARAM_ATTR(data_digest, DataDigest);
|
||||
|
||||
static ssize_t iscsi_sess_sid_show(struct kobject *kobj,
|
||||
struct kobj_attribute *attr, char *buf)
|
||||
static ssize_t iscsi_sess_sid_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
|
||||
{
|
||||
int pos;
|
||||
struct scst_session *scst_sess;
|
||||
@@ -478,10 +466,10 @@ static ssize_t iscsi_sess_sid_show(struct kobject *kobj,
|
||||
}
|
||||
|
||||
static struct kobj_attribute iscsi_attr_sess_sid =
|
||||
__ATTR(sid, S_IRUGO, iscsi_sess_sid_show, NULL);
|
||||
__ATTR(sid, 0444, iscsi_sess_sid_show, NULL);
|
||||
|
||||
static ssize_t iscsi_sess_reinstating_show(struct kobject *kobj,
|
||||
struct kobj_attribute *attr, char *buf)
|
||||
static ssize_t iscsi_sess_reinstating_show(struct kobject *kobj, struct kobj_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int pos;
|
||||
struct scst_session *scst_sess;
|
||||
@@ -499,13 +487,12 @@ static ssize_t iscsi_sess_reinstating_show(struct kobject *kobj,
|
||||
}
|
||||
|
||||
static struct kobj_attribute iscsi_sess_attr_reinstating =
|
||||
__ATTR(reinstating, S_IRUGO, iscsi_sess_reinstating_show, NULL);
|
||||
__ATTR(reinstating, 0444, iscsi_sess_reinstating_show, NULL);
|
||||
|
||||
static ssize_t iscsi_sess_thread_pid_show(struct kobject *kobj,
|
||||
struct kobj_attribute *attr, char *buf)
|
||||
static ssize_t iscsi_sess_thread_pid_show(struct kobject *kobj, struct kobj_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct scst_session *scst_sess = container_of(kobj, struct scst_session,
|
||||
sess_kobj);
|
||||
struct scst_session *scst_sess = container_of(kobj, struct scst_session, sess_kobj);
|
||||
struct iscsi_session *sess = scst_sess_get_tgt_priv(scst_sess);
|
||||
struct iscsi_thread_pool *thr_pool = sess->sess_thr_pool;
|
||||
struct iscsi_thread *t;
|
||||
@@ -530,7 +517,7 @@ out:
|
||||
}
|
||||
|
||||
static struct kobj_attribute iscsi_sess_thread_pid =
|
||||
__ATTR(thread_pid, S_IRUGO, iscsi_sess_thread_pid_show, NULL);
|
||||
__ATTR(thread_pid, 0444, iscsi_sess_thread_pid_show, NULL);
|
||||
|
||||
const struct attribute *iscsi_sess_attrs[] = {
|
||||
&iscsi_sess_attr_initial_r2t.attr,
|
||||
@@ -547,4 +534,3 @@ const struct attribute *iscsi_sess_attrs[] = {
|
||||
&iscsi_sess_thread_pid.attr,
|
||||
NULL,
|
||||
};
|
||||
|
||||
|
||||
+32
-43
@@ -60,7 +60,7 @@ static struct iscsi_target *target_lookup_by_name(const char *name)
|
||||
|
||||
/* target_mgmt_mutex supposed to be locked */
|
||||
static int iscsi_target_create(struct iscsi_kern_target_info *info, u32 tid,
|
||||
struct iscsi_target **out_target)
|
||||
struct iscsi_target **out_target)
|
||||
{
|
||||
int err = -EINVAL, len;
|
||||
char *name = info->name;
|
||||
@@ -87,7 +87,8 @@ static int iscsi_target_create(struct iscsi_kern_target_info *info, u32 tid,
|
||||
goto out_put;
|
||||
}
|
||||
|
||||
target->tid = info->tid = tid;
|
||||
info->tid = tid;
|
||||
target->tid = info->tid;
|
||||
|
||||
strscpy(target->name, name, sizeof(target->name));
|
||||
|
||||
@@ -154,9 +155,9 @@ int __add_target(struct iscsi_kern_target_info *info)
|
||||
}
|
||||
|
||||
add_info = kmalloc(sizeof(*add_info), GFP_KERNEL);
|
||||
if (add_info == NULL) {
|
||||
if (!add_info) {
|
||||
PRINT_ERROR("Unable to allocate additional info (size %zd)",
|
||||
sizeof(*add_info));
|
||||
sizeof(*add_info));
|
||||
err = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
@@ -194,7 +195,7 @@ int __add_target(struct iscsi_kern_target_info *info)
|
||||
goto out_del_unlock;
|
||||
}
|
||||
|
||||
attr_info->name[sizeof(attr_info->name)-1] = '\0';
|
||||
attr_info->name[sizeof(attr_info->name) - 1] = '\0';
|
||||
|
||||
err = iscsi_add_attr(target, attr_info);
|
||||
if (err != 0)
|
||||
@@ -226,17 +227,14 @@ static void target_destroy(struct iscsi_target *target)
|
||||
|
||||
TRACE_MGMT_DBG("Destroying target tid %u", target->tid);
|
||||
|
||||
list_for_each_entry_safe(attr, t, &target->attrs_list,
|
||||
attrs_list_entry) {
|
||||
list_for_each_entry_safe(attr, t, &target->attrs_list, attrs_list_entry)
|
||||
__iscsi_del_attr(target, attr);
|
||||
}
|
||||
|
||||
scst_unregister_target(target->scst_tgt);
|
||||
|
||||
kfree(target);
|
||||
|
||||
module_put(THIS_MODULE);
|
||||
return;
|
||||
}
|
||||
|
||||
/* target_mgmt_mutex supposed to be locked */
|
||||
@@ -276,13 +274,12 @@ out:
|
||||
}
|
||||
|
||||
/* target_mutex supposed to be locked */
|
||||
void target_del_session(struct iscsi_target *target,
|
||||
struct iscsi_session *session, int flags)
|
||||
void target_del_session(struct iscsi_target *target, struct iscsi_session *session, int flags)
|
||||
{
|
||||
TRACE_ENTRY();
|
||||
|
||||
TRACE(TRACE_MGMT, "Deleting session %p (initiator %s)", session,
|
||||
session->scst_sess->initiator_name);
|
||||
TRACE(TRACE_MGMT, "Deleting session %p (initiator %s)",
|
||||
session, session->scst_sess->initiator_name);
|
||||
|
||||
lockdep_assert_held(&target->target_mutex);
|
||||
|
||||
@@ -301,7 +298,6 @@ void target_del_session(struct iscsi_target *target,
|
||||
}
|
||||
|
||||
TRACE_EXIT();
|
||||
return;
|
||||
}
|
||||
|
||||
/* target_mutex supposed to be locked */
|
||||
@@ -315,14 +311,12 @@ void target_del_all_sess(struct iscsi_target *target, int flags)
|
||||
|
||||
if (!list_empty(&target->session_list)) {
|
||||
TRACE_MGMT_DBG("Deleting all sessions from target %p", target);
|
||||
list_for_each_entry_safe(session, ts, &target->session_list,
|
||||
session_list_entry) {
|
||||
|
||||
list_for_each_entry_safe(session, ts, &target->session_list, session_list_entry)
|
||||
target_del_session(target, session, flags);
|
||||
}
|
||||
}
|
||||
|
||||
TRACE_EXIT();
|
||||
return;
|
||||
}
|
||||
EXPORT_SYMBOL(target_del_all_sess);
|
||||
|
||||
@@ -363,14 +357,13 @@ void target_del_all(void)
|
||||
* theyself, but act in advance.
|
||||
*/
|
||||
|
||||
list_for_each_entry_safe(target, t, &target_list,
|
||||
target_list_entry) {
|
||||
list_for_each_entry_safe(target, t, &target_list, target_list_entry) {
|
||||
mutex_lock(&target->target_mutex);
|
||||
|
||||
if (!list_empty(&target->session_list)) {
|
||||
target_del_all_sess(target,
|
||||
ISCSI_CONN_ACTIVE_CLOSE |
|
||||
ISCSI_CONN_DELETING);
|
||||
ISCSI_CONN_ACTIVE_CLOSE |
|
||||
ISCSI_CONN_DELETING);
|
||||
} else if (!first) {
|
||||
TRACE_MGMT_DBG("Deleting target %p", target);
|
||||
list_del(&target->target_list_entry);
|
||||
@@ -393,12 +386,9 @@ void target_del_all(void)
|
||||
TRACE_MGMT_DBG("%s", "Deleting all targets finished");
|
||||
|
||||
TRACE_EXIT();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
static ssize_t iscsi_tgt_tid_show(struct kobject *kobj,
|
||||
struct kobj_attribute *attr, char *buf)
|
||||
static ssize_t iscsi_tgt_tid_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
|
||||
{
|
||||
int res = -E_TGT_PRIV_NOT_YET_SET;
|
||||
struct scst_tgt *scst_tgt;
|
||||
@@ -419,15 +409,15 @@ out:
|
||||
}
|
||||
|
||||
static struct kobj_attribute iscsi_tgt_attr_tid =
|
||||
__ATTR(tid, S_IRUGO, iscsi_tgt_tid_show, NULL);
|
||||
__ATTR(tid, 0444, iscsi_tgt_tid_show, NULL);
|
||||
|
||||
const struct attribute *iscsi_tgt_attrs[] = {
|
||||
&iscsi_tgt_attr_tid.attr,
|
||||
NULL,
|
||||
};
|
||||
|
||||
ssize_t iscsi_sysfs_send_event(uint32_t tid, enum iscsi_kern_event_code code,
|
||||
const char *param1, const char *param2, void **data)
|
||||
ssize_t iscsi_sysfs_send_event(uint32_t tid, enum iscsi_kern_event_code code, const char *param1,
|
||||
const char *param2, void **data)
|
||||
{
|
||||
int res;
|
||||
struct scst_sysfs_user_info *info;
|
||||
@@ -461,7 +451,7 @@ ssize_t iscsi_sysfs_send_event(uint32_t tid, enum iscsi_kern_event_code code,
|
||||
*/
|
||||
res = scst_wait_info_completion(info, 31 * HZ);
|
||||
|
||||
if (data != NULL)
|
||||
if (data)
|
||||
*data = info->data;
|
||||
|
||||
out_free:
|
||||
@@ -481,7 +471,7 @@ int iscsi_enable_target(struct scst_tgt *scst_tgt, bool enable)
|
||||
|
||||
TRACE_ENTRY();
|
||||
|
||||
if (tgt == NULL) {
|
||||
if (!tgt) {
|
||||
res = -E_TGT_PRIV_NOT_YET_SET;
|
||||
goto out;
|
||||
}
|
||||
@@ -505,7 +495,7 @@ bool iscsi_is_target_enabled(struct scst_tgt *scst_tgt)
|
||||
struct iscsi_target *tgt =
|
||||
(struct iscsi_target *)scst_tgt_get_tgt_priv(scst_tgt);
|
||||
|
||||
if (tgt != NULL)
|
||||
if (tgt)
|
||||
return tgt->tgt_enabled;
|
||||
else
|
||||
return false;
|
||||
@@ -517,8 +507,7 @@ ssize_t iscsi_sysfs_add_target(const char *target_name, char *params)
|
||||
|
||||
TRACE_ENTRY();
|
||||
|
||||
res = iscsi_sysfs_send_event(0, E_ADD_TARGET, target_name,
|
||||
params, NULL);
|
||||
res = iscsi_sysfs_send_event(0, E_ADD_TARGET, target_name, params, NULL);
|
||||
if (res > 0) {
|
||||
/* It's tid */
|
||||
res = 0;
|
||||
@@ -540,7 +529,7 @@ ssize_t iscsi_sysfs_del_target(const char *target_name)
|
||||
|
||||
mutex_lock(&target_mgmt_mutex);
|
||||
tgt = target_lookup_by_name(target_name);
|
||||
if (tgt == NULL) {
|
||||
if (!tgt) {
|
||||
PRINT_ERROR("Target %s not found", target_name);
|
||||
mutex_unlock(&target_mgmt_mutex);
|
||||
res = -ENOENT;
|
||||
@@ -574,7 +563,7 @@ ssize_t iscsi_sysfs_mgmt_cmd(char *cmd)
|
||||
}
|
||||
|
||||
static ssize_t iscsi_acg_sess_dedicated_threads_show(struct kobject *kobj,
|
||||
struct kobj_attribute *attr, char *buf)
|
||||
struct kobj_attribute *attr, char *buf)
|
||||
{
|
||||
int pos;
|
||||
struct scst_acg *acg;
|
||||
@@ -583,17 +572,17 @@ static ssize_t iscsi_acg_sess_dedicated_threads_show(struct kobject *kobj,
|
||||
TRACE_ENTRY();
|
||||
|
||||
acg = container_of(kobj, struct scst_acg, acg_kobj);
|
||||
dedicated = scst_get_acg_tgt_priv(acg) != NULL;
|
||||
dedicated = scst_get_acg_tgt_priv(acg);
|
||||
|
||||
pos = sprintf(buf, "%d\n%s", dedicated,
|
||||
dedicated ? SCST_SYSFS_KEY_MARK "\n" : "");
|
||||
pos = sprintf(buf, "%d\n%s", dedicated, dedicated ? SCST_SYSFS_KEY_MARK "\n" : "");
|
||||
|
||||
TRACE_EXIT_RES(pos);
|
||||
return pos;
|
||||
}
|
||||
|
||||
static ssize_t iscsi_acg_sess_dedicated_threads_store(struct kobject *kobj,
|
||||
struct kobj_attribute *attr, const char *buf, size_t count)
|
||||
struct kobj_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
int res;
|
||||
struct scst_acg *acg;
|
||||
@@ -619,9 +608,9 @@ out:
|
||||
}
|
||||
|
||||
static struct kobj_attribute iscsi_acg_attr_sess_dedicated_threads =
|
||||
__ATTR(per_sess_dedicated_tgt_threads, S_IRUGO | S_IWUSR,
|
||||
iscsi_acg_sess_dedicated_threads_show,
|
||||
iscsi_acg_sess_dedicated_threads_store);
|
||||
__ATTR(per_sess_dedicated_tgt_threads, 0644,
|
||||
iscsi_acg_sess_dedicated_threads_show,
|
||||
iscsi_acg_sess_dedicated_threads_store);
|
||||
|
||||
const struct attribute *iscsi_acg_attrs[] = {
|
||||
&iscsi_acg_attr_sess_dedicated_threads.attr,
|
||||
|
||||
Reference in New Issue
Block a user