Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b9da5826 authored by Nicholas Bellinger's avatar Nicholas Bellinger
Browse files

iscsi-target: Avoid unnecessary t_state_lock during unsolicited data-out check



In modern iscsi-target code, the setup and I/O submission is done within a
single process context, so there is no need to acquire se_cmd->t_state_lock while
checking SCF_SUPPORTED_SAM_OPCODE for determining when unsolicited data-out
should be dumped.

Cc: Christoph Hellwig <hch@lst.de>
Cc: Roland Dreier <roland@kernel.org>
Cc: Kent Overstreet <koverstreet@google.com>
Cc: Or Gerlitz <ogerlitz@mellanox.com>
Cc: Moussa Ba <moussaba@micron.com>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent b28e545c
Loading
Loading
Loading
Loading
+0 −6
Original line number Original line Diff line number Diff line
@@ -1277,7 +1277,6 @@ iscsit_check_dataout_hdr(struct iscsi_conn *conn, unsigned char *buf,
	struct iscsi_data *hdr = (struct iscsi_data *)buf;
	struct iscsi_data *hdr = (struct iscsi_data *)buf;
	struct iscsi_cmd *cmd = NULL;
	struct iscsi_cmd *cmd = NULL;
	struct se_cmd *se_cmd;
	struct se_cmd *se_cmd;
	unsigned long flags;
	u32 payload_length = ntoh24(hdr->dlength);
	u32 payload_length = ntoh24(hdr->dlength);
	int rc;
	int rc;


@@ -1356,14 +1355,9 @@ iscsit_check_dataout_hdr(struct iscsi_conn *conn, unsigned char *buf,
		 */
		 */


		/* Something's amiss if we're not in WRITE_PENDING state... */
		/* Something's amiss if we're not in WRITE_PENDING state... */
		spin_lock_irqsave(&se_cmd->t_state_lock, flags);
		WARN_ON(se_cmd->t_state != TRANSPORT_WRITE_PENDING);
		WARN_ON(se_cmd->t_state != TRANSPORT_WRITE_PENDING);
		spin_unlock_irqrestore(&se_cmd->t_state_lock, flags);

		spin_lock_irqsave(&se_cmd->t_state_lock, flags);
		if (!(se_cmd->se_cmd_flags & SCF_SUPPORTED_SAM_OPCODE))
		if (!(se_cmd->se_cmd_flags & SCF_SUPPORTED_SAM_OPCODE))
			dump_unsolicited_data = 1;
			dump_unsolicited_data = 1;
		spin_unlock_irqrestore(&se_cmd->t_state_lock, flags);


		if (dump_unsolicited_data) {
		if (dump_unsolicited_data) {
			/*
			/*