Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp368455imm; Thu, 28 Jun 2018 22:22:52 -0700 (PDT) X-Google-Smtp-Source: ADUXVKI7uI+fBk7Nq/xAmA1+OZ2zVUjmUTy25fUTrpxyvXyZ508c9/FbSHwu7ANiDJVwMgpn6EUP X-Received: by 2002:a17:902:8d98:: with SMTP id v24-v6mr13431950plo.250.1530249772690; Thu, 28 Jun 2018 22:22:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530249772; cv=none; d=google.com; s=arc-20160816; b=oLI+KenfjjYgTNU13jLUw4+8bexo73pfB1LpgCBFUbRdXP3rSk4sDrprXDuzpIVHlU 5wtRAgHxcnZR8d4K1/USjwHOLsWH4PRBrsPzwOb15bwntuS+h7YEM6RXW4lRP7Sahea+ oD1soNMqT/KL7TT3gl5X9P2nrCEJR1dWiW3kRiojlb2rc5AUXNB7PdGk3juvN085iX60 9fBx09g+psDqnCPaB1hhq4Ues0wAtEsONtQ/KShSP5ztwz36x091LJb7prxwMxwlLCwG PiBJxydBacXjt69Dyx/13i5ymI/QaOJzAouZQMIs9UygM5984eXJaXTVVE7WG1BRC4yn VPwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=6n9oDr86zajRNtGy7Gbqsauz52xG1QNHF8kju5AjaUM=; b=GlZyff0NigpiKuDSyNAhowJwkG4uj9CCANAqGP1IF0a+OsqitBOHqTnYdDKgQQIHEy pPfe4T6df8fvyszo/3BEhFp2FZrFQW6ppXTr8PsWFDJ2Fbv2H2Sz2P4trXVFIueVyTH6 DW7gmTUh67OY/k1T6lXSNqTGztrGJ6n1IAAOlb5/tdmTi+orwDo2PJ/2od2HHOGToUVi sgkd0FFbHUH6VXbVZX65IFxDH1qVyYeEufxmWTIEccEzCUIYGw7onsKnAppFgTeQmltr yCG2bUYY4gLsCBS5dGfed3MLuQxcN4kPdD4kL2ZZmJChCDalOBzKsQhZZZ2gPmmXuJtR AdMg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l1-v6si7892168plt.389.2018.06.28.22.22.37; Thu, 28 Jun 2018 22:22:52 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965175AbeF1U5Q (ORCPT + 99 others); Thu, 28 Jun 2018 16:57:16 -0400 Received: from mga09.intel.com ([134.134.136.24]:31844 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935810AbeF1U5M (ORCPT ); Thu, 28 Jun 2018 16:57:12 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Jun 2018 13:57:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,284,1526367600"; d="scan'208";a="50702324" Received: from unknown (HELO localhost.lm.intel.com) ([10.232.112.44]) by fmsmga007.fm.intel.com with ESMTP; 28 Jun 2018 13:56:57 -0700 From: Keith Busch To: Johannes Thumshirn , Christoph Hellwig , Sagi Grimberg , linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, Jens Axboe Cc: Keith Busch Subject: [PATCH 2/5] nvme: trace nvme queue identifiers Date: Thu, 28 Jun 2018 14:55:58 -0600 Message-Id: <20180628205601.13742-2-keith.busch@intel.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20180628205601.13742-1-keith.busch@intel.com> References: <20180628205601.13742-1-keith.busch@intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We can not match up a command to its completion based on the command id alone. We need to pair this up with the submitting queue identifier, so this patch adds that to the trace buffer. This patch is also collapsing the admin and io submission traces into a single one since we don't need to duplicate this and creating unnecessary code branches. Signed-off-by: Keith Busch --- drivers/nvme/host/core.c | 7 +++---- drivers/nvme/host/trace.h | 41 ++++++++++------------------------------- 2 files changed, 13 insertions(+), 35 deletions(-) diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index 46df030b2c3f..398a5fb26603 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -97,6 +97,8 @@ static dev_t nvme_chr_devt; static struct class *nvme_class; static struct class *nvme_subsys_class; +static void nvme_remove_invalid_namespaces(struct nvme_ctrl *ctrl, + unsigned nsid); static void nvme_ns_remove(struct nvme_ns *ns); static int nvme_revalidate_disk(struct gendisk *disk); static void nvme_put_subsystem(struct nvme_subsystem *subsys); @@ -652,10 +654,7 @@ blk_status_t nvme_setup_cmd(struct nvme_ns *ns, struct request *req, } cmd->common.command_id = req->tag; - if (ns) - trace_nvme_setup_nvm_cmd(req->q->id, cmd); - else - trace_nvme_setup_admin_cmd(cmd); + trace_nvme_setup_nvm_cmd(req, cmd); return ret; } EXPORT_SYMBOL_GPL(nvme_setup_cmd); diff --git a/drivers/nvme/host/trace.h b/drivers/nvme/host/trace.h index 01390f0e1671..bca3451caa37 100644 --- a/drivers/nvme/host/trace.h +++ b/drivers/nvme/host/trace.h @@ -75,34 +75,9 @@ const char *nvme_trace_parse_nvm_cmd(struct trace_seq *p, u8 opcode, #define __parse_nvme_cmd(opcode, cdw10) \ nvme_trace_parse_nvm_cmd(p, opcode, cdw10) -TRACE_EVENT(nvme_setup_admin_cmd, - TP_PROTO(struct nvme_command *cmd), - TP_ARGS(cmd), - TP_STRUCT__entry( - __field(u8, opcode) - __field(u8, flags) - __field(u16, cid) - __field(u64, metadata) - __array(u8, cdw10, 24) - ), - TP_fast_assign( - __entry->opcode = cmd->common.opcode; - __entry->flags = cmd->common.flags; - __entry->cid = cmd->common.command_id; - __entry->metadata = le64_to_cpu(cmd->common.metadata); - memcpy(__entry->cdw10, cmd->common.cdw10, - sizeof(__entry->cdw10)); - ), - TP_printk(" cmdid=%u, flags=0x%x, meta=0x%llx, cmd=(%s %s)", - __entry->cid, __entry->flags, __entry->metadata, - show_admin_opcode_name(__entry->opcode), - __parse_nvme_admin_cmd(__entry->opcode, __entry->cdw10)) -); - - TRACE_EVENT(nvme_setup_nvm_cmd, - TP_PROTO(int qid, struct nvme_command *cmd), - TP_ARGS(qid, cmd), + TP_PROTO(struct request *req, struct nvme_command *cmd), + TP_ARGS(req, cmd), TP_STRUCT__entry( __field(int, qid) __field(u8, opcode) @@ -113,7 +88,7 @@ TRACE_EVENT(nvme_setup_nvm_cmd, __array(u8, cdw10, 24) ), TP_fast_assign( - __entry->qid = qid; + __entry->qid = blk_mq_request_hctx_idx(req) + !!req->rq_disk; __entry->opcode = cmd->common.opcode; __entry->flags = cmd->common.flags; __entry->cid = cmd->common.command_id; @@ -125,8 +100,12 @@ TRACE_EVENT(nvme_setup_nvm_cmd, TP_printk("qid=%d, nsid=%u, cmdid=%u, flags=0x%x, meta=0x%llx, cmd=(%s %s)", __entry->qid, __entry->nsid, __entry->cid, __entry->flags, __entry->metadata, - show_opcode_name(__entry->opcode), - __parse_nvme_cmd(__entry->opcode, __entry->cdw10)) + __entry->qid ? + show_opcode_name(__entry->opcode) : + show_admin_opcode_name(__entry->opcode), + __entry->qid ? + __parse_nvme_cmd(__entry->opcode, __entry->cdw10) : + __parse_nvme_admin_cmd(__entry->opcode, __entry->cdw10)) ); TRACE_EVENT(nvme_complete_rq, @@ -141,7 +120,7 @@ TRACE_EVENT(nvme_complete_rq, __field(u16, status) ), TP_fast_assign( - __entry->qid = req->q->id; + __entry->qid = blk_mq_request_hctx_idx(req) + !!req->rq_disk; __entry->cid = req->tag; __entry->result = le64_to_cpu(nvme_req(req)->result.u64); __entry->retries = nvme_req(req)->retries; -- 2.14.3