Skip to content

Commit 83c2b54

Browse files
Matthew Wilcoxmartinkpetersen
authored andcommitted
scsi: target: Abstract tag freeing
Introduce target_free_tag() and convert all drivers to use it. Signed-off-by: Matthew Wilcox <[email protected]> Reviewed-by: Jens Axboe <[email protected]> Signed-off-by: Martin K. Petersen <[email protected]>
1 parent ba80917 commit 83c2b54

File tree

8 files changed

+14
-11
lines changed

8 files changed

+14
-11
lines changed

drivers/scsi/qla2xxx/qla_target.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3783,7 +3783,7 @@ void qlt_free_cmd(struct qla_tgt_cmd *cmd)
37833783
return;
37843784
}
37853785
cmd->jiffies_at_free = get_jiffies_64();
3786-
percpu_ida_free(&sess->se_sess->sess_tag_pool, cmd->se_cmd.map_tag);
3786+
target_free_tag(sess->se_sess, &cmd->se_cmd);
37873787
}
37883788
EXPORT_SYMBOL(qlt_free_cmd);
37893789

@@ -4146,7 +4146,7 @@ static void __qlt_do_work(struct qla_tgt_cmd *cmd)
41464146
qlt_send_term_exchange(qpair, NULL, &cmd->atio, 1, 0);
41474147

41484148
qlt_decr_num_pend_cmds(vha);
4149-
percpu_ida_free(&sess->se_sess->sess_tag_pool, cmd->se_cmd.map_tag);
4149+
target_free_tag(sess->se_sess, &cmd->se_cmd);
41504150
spin_unlock_irqrestore(qpair->qp_lock_ptr, flags);
41514151

41524152
spin_lock_irqsave(&ha->tgt.sess_lock, flags);

drivers/target/iscsi/iscsi_target_util.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,7 @@ void iscsit_release_cmd(struct iscsi_cmd *cmd)
711711
kfree(cmd->iov_data);
712712
kfree(cmd->text_in_ptr);
713713

714-
percpu_ida_free(&sess->se_sess->sess_tag_pool, se_cmd->map_tag);
714+
target_free_tag(sess->se_sess, se_cmd);
715715
}
716716
EXPORT_SYMBOL(iscsit_release_cmd);
717717

drivers/target/sbp/sbp_target.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1460,7 +1460,7 @@ static void sbp_free_request(struct sbp_target_request *req)
14601460
kfree(req->pg_tbl);
14611461
kfree(req->cmd_buf);
14621462

1463-
percpu_ida_free(&se_sess->sess_tag_pool, se_cmd->map_tag);
1463+
target_free_tag(se_sess, se_cmd);
14641464
}
14651465

14661466
static void sbp_mgt_agent_process(struct work_struct *work)

drivers/target/tcm_fc/tfc_cmd.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ static void ft_free_cmd(struct ft_cmd *cmd)
9292
if (fr_seq(fp))
9393
fc_seq_release(fr_seq(fp));
9494
fc_frame_free(fp);
95-
percpu_ida_free(&sess->se_sess->sess_tag_pool, cmd->se_cmd.map_tag);
95+
target_free_tag(sess->se_sess, &cmd->se_cmd);
9696
ft_sess_put(sess); /* undo get from lookup at recv */
9797
}
9898

@@ -461,7 +461,7 @@ static void ft_recv_cmd(struct ft_sess *sess, struct fc_frame *fp)
461461
cmd->sess = sess;
462462
cmd->seq = fc_seq_assign(lport, fp);
463463
if (!cmd->seq) {
464-
percpu_ida_free(&se_sess->sess_tag_pool, tag);
464+
target_free_tag(se_sess, &cmd->se_cmd);
465465
goto busy;
466466
}
467467
cmd->req_frame = fp; /* hold frame during cmd */

drivers/usb/gadget/function/f_tcm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1288,7 +1288,7 @@ static void usbg_release_cmd(struct se_cmd *se_cmd)
12881288
struct se_session *se_sess = se_cmd->se_sess;
12891289

12901290
kfree(cmd->data_buf);
1291-
percpu_ida_free(&se_sess->sess_tag_pool, se_cmd->map_tag);
1291+
target_free_tag(se_sess, se_cmd);
12921292
}
12931293

12941294
static u32 usbg_sess_get_index(struct se_session *se_sess)

drivers/vhost/scsi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ static void vhost_scsi_release_cmd(struct se_cmd *se_cmd)
324324
}
325325

326326
vhost_scsi_put_inflight(tv_cmd->inflight);
327-
percpu_ida_free(&se_sess->sess_tag_pool, se_cmd->map_tag);
327+
target_free_tag(se_sess, se_cmd);
328328
}
329329

330330
static u32 vhost_scsi_sess_get_index(struct se_session *se_sess)

drivers/xen/xen-scsiback.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1377,9 +1377,7 @@ static int scsiback_check_stop_free(struct se_cmd *se_cmd)
13771377

13781378
static void scsiback_release_cmd(struct se_cmd *se_cmd)
13791379
{
1380-
struct se_session *se_sess = se_cmd->se_sess;
1381-
1382-
percpu_ida_free(&se_sess->sess_tag_pool, se_cmd->map_tag);
1380+
target_free_tag(se_cmd->se_sess, se_cmd);
13831381
}
13841382

13851383
static u32 scsiback_sess_get_index(struct se_session *se_sess)

include/target/target_core_base.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -934,4 +934,9 @@ static inline void atomic_dec_mb(atomic_t *v)
934934
smp_mb__after_atomic();
935935
}
936936

937+
static inline void target_free_tag(struct se_session *sess, struct se_cmd *cmd)
938+
{
939+
percpu_ida_free(&sess->sess_tag_pool, cmd->map_tag);
940+
}
941+
937942
#endif /* TARGET_CORE_BASE_H */

0 commit comments

Comments
 (0)