mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-06 09:29:41 +00:00
scsi: target: Abstract tag freeing
Introduce target_free_tag() and convert all drivers to use it. Signed-off-by: Matthew Wilcox <willy@infradead.org> Reviewed-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
ba80917d99
commit
83c2b54b92
@ -3783,7 +3783,7 @@ void qlt_free_cmd(struct qla_tgt_cmd *cmd)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cmd->jiffies_at_free = get_jiffies_64();
|
cmd->jiffies_at_free = get_jiffies_64();
|
||||||
percpu_ida_free(&sess->se_sess->sess_tag_pool, cmd->se_cmd.map_tag);
|
target_free_tag(sess->se_sess, &cmd->se_cmd);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(qlt_free_cmd);
|
EXPORT_SYMBOL(qlt_free_cmd);
|
||||||
|
|
||||||
@ -4146,7 +4146,7 @@ out_term:
|
|||||||
qlt_send_term_exchange(qpair, NULL, &cmd->atio, 1, 0);
|
qlt_send_term_exchange(qpair, NULL, &cmd->atio, 1, 0);
|
||||||
|
|
||||||
qlt_decr_num_pend_cmds(vha);
|
qlt_decr_num_pend_cmds(vha);
|
||||||
percpu_ida_free(&sess->se_sess->sess_tag_pool, cmd->se_cmd.map_tag);
|
target_free_tag(sess->se_sess, &cmd->se_cmd);
|
||||||
spin_unlock_irqrestore(qpair->qp_lock_ptr, flags);
|
spin_unlock_irqrestore(qpair->qp_lock_ptr, flags);
|
||||||
|
|
||||||
spin_lock_irqsave(&ha->tgt.sess_lock, flags);
|
spin_lock_irqsave(&ha->tgt.sess_lock, flags);
|
||||||
|
@ -711,7 +711,7 @@ void iscsit_release_cmd(struct iscsi_cmd *cmd)
|
|||||||
kfree(cmd->iov_data);
|
kfree(cmd->iov_data);
|
||||||
kfree(cmd->text_in_ptr);
|
kfree(cmd->text_in_ptr);
|
||||||
|
|
||||||
percpu_ida_free(&sess->se_sess->sess_tag_pool, se_cmd->map_tag);
|
target_free_tag(sess->se_sess, se_cmd);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(iscsit_release_cmd);
|
EXPORT_SYMBOL(iscsit_release_cmd);
|
||||||
|
|
||||||
|
@ -1460,7 +1460,7 @@ static void sbp_free_request(struct sbp_target_request *req)
|
|||||||
kfree(req->pg_tbl);
|
kfree(req->pg_tbl);
|
||||||
kfree(req->cmd_buf);
|
kfree(req->cmd_buf);
|
||||||
|
|
||||||
percpu_ida_free(&se_sess->sess_tag_pool, se_cmd->map_tag);
|
target_free_tag(se_sess, se_cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sbp_mgt_agent_process(struct work_struct *work)
|
static void sbp_mgt_agent_process(struct work_struct *work)
|
||||||
|
@ -92,7 +92,7 @@ static void ft_free_cmd(struct ft_cmd *cmd)
|
|||||||
if (fr_seq(fp))
|
if (fr_seq(fp))
|
||||||
fc_seq_release(fr_seq(fp));
|
fc_seq_release(fr_seq(fp));
|
||||||
fc_frame_free(fp);
|
fc_frame_free(fp);
|
||||||
percpu_ida_free(&sess->se_sess->sess_tag_pool, cmd->se_cmd.map_tag);
|
target_free_tag(sess->se_sess, &cmd->se_cmd);
|
||||||
ft_sess_put(sess); /* undo get from lookup at recv */
|
ft_sess_put(sess); /* undo get from lookup at recv */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -461,7 +461,7 @@ static void ft_recv_cmd(struct ft_sess *sess, struct fc_frame *fp)
|
|||||||
cmd->sess = sess;
|
cmd->sess = sess;
|
||||||
cmd->seq = fc_seq_assign(lport, fp);
|
cmd->seq = fc_seq_assign(lport, fp);
|
||||||
if (!cmd->seq) {
|
if (!cmd->seq) {
|
||||||
percpu_ida_free(&se_sess->sess_tag_pool, tag);
|
target_free_tag(se_sess, &cmd->se_cmd);
|
||||||
goto busy;
|
goto busy;
|
||||||
}
|
}
|
||||||
cmd->req_frame = fp; /* hold frame during cmd */
|
cmd->req_frame = fp; /* hold frame during cmd */
|
||||||
|
@ -1288,7 +1288,7 @@ static void usbg_release_cmd(struct se_cmd *se_cmd)
|
|||||||
struct se_session *se_sess = se_cmd->se_sess;
|
struct se_session *se_sess = se_cmd->se_sess;
|
||||||
|
|
||||||
kfree(cmd->data_buf);
|
kfree(cmd->data_buf);
|
||||||
percpu_ida_free(&se_sess->sess_tag_pool, se_cmd->map_tag);
|
target_free_tag(se_sess, se_cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 usbg_sess_get_index(struct se_session *se_sess)
|
static u32 usbg_sess_get_index(struct se_session *se_sess)
|
||||||
|
@ -324,7 +324,7 @@ static void vhost_scsi_release_cmd(struct se_cmd *se_cmd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
vhost_scsi_put_inflight(tv_cmd->inflight);
|
vhost_scsi_put_inflight(tv_cmd->inflight);
|
||||||
percpu_ida_free(&se_sess->sess_tag_pool, se_cmd->map_tag);
|
target_free_tag(se_sess, se_cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 vhost_scsi_sess_get_index(struct se_session *se_sess)
|
static u32 vhost_scsi_sess_get_index(struct se_session *se_sess)
|
||||||
|
@ -1377,9 +1377,7 @@ static int scsiback_check_stop_free(struct se_cmd *se_cmd)
|
|||||||
|
|
||||||
static void scsiback_release_cmd(struct se_cmd *se_cmd)
|
static void scsiback_release_cmd(struct se_cmd *se_cmd)
|
||||||
{
|
{
|
||||||
struct se_session *se_sess = se_cmd->se_sess;
|
target_free_tag(se_cmd->se_sess, se_cmd);
|
||||||
|
|
||||||
percpu_ida_free(&se_sess->sess_tag_pool, se_cmd->map_tag);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 scsiback_sess_get_index(struct se_session *se_sess)
|
static u32 scsiback_sess_get_index(struct se_session *se_sess)
|
||||||
|
@ -934,4 +934,9 @@ static inline void atomic_dec_mb(atomic_t *v)
|
|||||||
smp_mb__after_atomic();
|
smp_mb__after_atomic();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void target_free_tag(struct se_session *sess, struct se_cmd *cmd)
|
||||||
|
{
|
||||||
|
percpu_ida_free(&sess->sess_tag_pool, cmd->map_tag);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* TARGET_CORE_BASE_H */
|
#endif /* TARGET_CORE_BASE_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user