From patchwork Wed Feb 8 22:24:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 9563613 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 1239A6020F for ; Wed, 8 Feb 2017 22:27:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D05FD2840B for ; Wed, 8 Feb 2017 22:27:27 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C43352852B; Wed, 8 Feb 2017 22:27:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 56EC62840B for ; Wed, 8 Feb 2017 22:27:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751149AbdBHW10 (ORCPT ); Wed, 8 Feb 2017 17:27:26 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:63863 "EHLO esa2.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751537AbdBHW1Z (ORCPT ); Wed, 8 Feb 2017 17:27:25 -0500 X-IronPort-AV: E=Sophos;i="5.35,348,1483977600"; d="scan'208";a="76618150" Received: from unknown (HELO milsmgep15.sandisk.com) ([63.163.107.21]) by ob1.hgst.iphmx.com with ESMTP; 09 Feb 2017 06:28:19 +0800 Received: from MILHUBIP03.sdcorp.global.sandisk.com (Unknown_Domain [10.201.67.162]) (using TLS with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by (Symantec Messaging Gateway) with SMTP id 84.54.57638.ACA9B985; Wed, 8 Feb 2017 14:25:14 -0800 (PST) Received: from milsmgip12.sandisk.com (10.177.8.100) by MILHUBIP03.sdcorp.global.sandisk.com (10.177.9.96) with Microsoft SMTP Server id 14.3.319.2; Wed, 8 Feb 2017 14:25:11 -0800 X-AuditID: 0ac94369-26dee9800001e126-f5-589b9acae5a8 Received: from exp-402881.sdcorp.global.sandisk.com ( [10.177.9.6]) by (Symantec Messaging Gateway) with SMTP id C2.42.18148.7CA9B985; Wed, 8 Feb 2017 14:25:11 -0800 (PST) From: Bart Van Assche To: Bart Van Assche CC: , Hannes Reinecke , Christoph Hellwig , David Disseldorp Subject: [PATCH v4 16/37] target: Move session check from target_put_sess_cmd() into target_release_cmd_kref() Date: Wed, 8 Feb 2017 14:24:46 -0800 Message-ID: <20170208222507.25715-17-bart.vanassche@sandisk.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170208222507.25715-1-bart.vanassche@sandisk.com> References: <20170208222507.25715-1-bart.vanassche@sandisk.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrOLMWRmVeSWpSXmKPExsXCddJ5ke6pWbMjDLrO8Vp8/T+dxWLBm71s FitXH2WyaF36lsmBxWP3zQY2j/VbrrJ4bD5d7fF5k1wASxSXTUpqTmZZapG+XQJXxvberewF 60Qq5l9vYGtgXCbYxcjJISFgItHZ95C1i5GLQ0hgKZPEoVVX2SCc7YwSyydtY4aranzDDJHY yCix6Ms2VpAEm4CRxLf3M1lAbBEBA4nfvRcYQYqYBdoZJTrPzQLrFhbIk/g+r5cJxGYRUJE4 sOwtWJxXwEHi3ZVudogN8hK72i6CDeUEik94+YwRxBYSsJd4deAL2FAJgTZWib/fv7NBNAtK nJz5BGwzs4CExMEXL5ghGtQlTi6ZzzSBUWgWkrJZSMoWMDKtYhTLzcwpzk1PLTA01StOzEvJ LM7WS87P3cQICe7MHYx3n3gfYhTgYFTi4a2wnB0hxJpYVlyZe4hRgoNZSYQ3ZRpQiDclsbIq tSg/vqg0J7X4EKM0B4uSOO85makRQgLpiSWp2ampBalFMFkmDk6pBsa8hO587ct/7Zu21L0J bVPaOPHOVDOWl/ON2LhqGSrNQv0/VJdpFEZ41n4P2Sr80MbJ6/C0Z3rZjE9Xf97XLrnndt67 0HajwzPm3P61Zs3FfY/3ObCylLltMv/2+z3/H+luxo/qryS85/w89TYtau3auMUFuy+vd11d 6yVZ+/r5+jrtyCajhFYlluKMREMt5qLiRAAd40VOagIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrGJMWRmVeSWpSXmKPExsXCtZGTTff4rNkRBvteaFgc/NnGaPH1/3QW iwVv9rJZrFx9lMmidelbJgdWj903G9g8pq05z+SxfstVFo/Np6s9Pm+SC2CN4rJJSc3JLEst 0rdL4MrY3ruVvWCdSMX86w1sDYzLBLsYOTkkBEwkOhvfMHcxcnEICaxnlNjU380OkmATMJL4 9n4mC4gtImAg8bv3AiNIEbNAJ6PEg9UPGEESwgJ5Et/n9TKB2CwCqhLX/18Aa+AVcJA4f/4E G8QGeYldbRdZQWxOoPiEl8/AeoUE7CVeHfjCOIGRewEjwypGsdzMnOLc9MwCQyO94sS8lMzi bL3k/NxNjJCQiNrBeH2i+SFGJg5OqQZGl6LMpJttv+eEfZ1jvt3CPHcph99raePqY7tjdcQF V20xPdGn8rl+yQyXl+Z7L4U87nRS2FFje97NPkcwJuWP3bU/2Xe4HqX/nJR+Z/8nlj8yG83P MPRYML5Web3a68USlrNbPcx7LCIPaga+09Lzqrv7uVvV+sp+j2PNwtZ7O6aH9K8w+ymoxFKc kWioxVxUnAgAWxH6nbkBAAA= MIME-Version: 1.0 Sender: target-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: target-devel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch does not change any functionality. Signed-off-by: Bart Van Assche Cc: Hannes Reinecke Cc: Christoph Hellwig Cc: David Disseldorp Reviewed-by: Hannes Reinecke --- drivers/target/target_core_transport.c | 39 +++++++++++++++++----------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index fc3022ec39d3..8f2169e92771 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -2590,39 +2590,38 @@ static void target_release_cmd_kref(struct kref *kref) unsigned long flags; bool fabric_stop; - spin_lock_irqsave(&se_sess->sess_cmd_lock, flags); + if (se_sess) { + spin_lock_irqsave(&se_sess->sess_cmd_lock, flags); - spin_lock(&se_cmd->t_state_lock); - fabric_stop = (se_cmd->transport_state & CMD_T_FABRIC_STOP) && - (se_cmd->transport_state & CMD_T_ABORTED); - spin_unlock(&se_cmd->t_state_lock); + spin_lock(&se_cmd->t_state_lock); + fabric_stop = (se_cmd->transport_state & CMD_T_FABRIC_STOP) && + (se_cmd->transport_state & CMD_T_ABORTED); + spin_unlock(&se_cmd->t_state_lock); - if (se_cmd->cmd_wait_set || fabric_stop) { + if (se_cmd->cmd_wait_set || fabric_stop) { + list_del_init(&se_cmd->se_cmd_list); + spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); + target_free_cmd_mem(se_cmd); + complete(&se_cmd->cmd_wait_comp); + return; + } list_del_init(&se_cmd->se_cmd_list); spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); - target_free_cmd_mem(se_cmd); - complete(&se_cmd->cmd_wait_comp); - return; } - list_del_init(&se_cmd->se_cmd_list); - spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); target_free_cmd_mem(se_cmd); se_cmd->se_tfo->release_cmd(se_cmd); } -/* target_put_sess_cmd - Check for active I/O shutdown via kref_put - * @se_cmd: command descriptor to drop +/** + * target_put_sess_cmd - decrease the command reference count + * @se_cmd: command to drop a reference from + * + * Returns 1 if and only if this target_put_sess_cmd() call caused the + * refcount to drop to zero. Returns zero otherwise. */ int target_put_sess_cmd(struct se_cmd *se_cmd) { - struct se_session *se_sess = se_cmd->se_sess; - - if (!se_sess) { - target_free_cmd_mem(se_cmd); - se_cmd->se_tfo->release_cmd(se_cmd); - return 1; - } return kref_put(&se_cmd->cmd_kref, target_release_cmd_kref); } EXPORT_SYMBOL(target_put_sess_cmd);