From nobody Tue Dec 2 02:37:43 2025 Received: from mail-io1-f99.google.com (mail-io1-f99.google.com [209.85.166.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5CA3D78F4F for ; Wed, 19 Nov 2025 02:17:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.99 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763518629; cv=none; b=XL5X4HOfjPHn27YddKf6YxAByRLSYQiWXGLufNUMeGUfepHH0J++2zvzMWdRtSo260h2/JCf+2QQU9Lw691mTlEgmB9hJtu2idnHChCkl1pNuihhRv5Jp9w6IikeTSL/AFYRmraPsqCdiwE7bR8azCmZ6Zd9qo/Wj1qTkTCWGn4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763518629; c=relaxed/simple; bh=b1CuqaCY6vwXXhaxRt+fba3xvB+nBLpJTYLVGFTsaoM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=V4uzEkRlZld2R7Tnc1msYCgkQ33k77aX+72deNZHVK2zp8y4jm/Goo8odNpsRcb0RXpIEkBXw3wSr6yRL7Udf8X0XbIYI6WH+eemFRZkTxyOEmVYbDPwoCZ4nEqD2jvzZJrJsR6nWLlpSd0GOPC+zQ7hXNHuNkCieKcjwXMUX08= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=Iju7tbBU; arc=none smtp.client-ip=209.85.166.99 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="Iju7tbBU" Received: by mail-io1-f99.google.com with SMTP id ca18e2360f4ac-9486e50ed3aso26546039f.1 for ; Tue, 18 Nov 2025 18:17:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1763518624; x=1764123424; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=gifhH+ouh+mmQPCG7Mlt+a64mECIBHFCW6GZClRn09k=; b=Iju7tbBUxc3dNAI1TsdDiY5liGfvDv7xID51mH6lGao9dOsrR0UleHmzZ4Mdfw6jy0 11KggMe4X5xXLtyKP7UJeFHZUpf07Z4m8Ae20vDc7kFLxH7Daz+F4TFxpRMvAWlaShY3 1UXQlGKdI02Z+TLEkWDguOeHF3so3JJG7E1cOZaz9UTO2dueJHKB8ponyA2U+LlRlUMl iQqS4A8ijf4VfGz0IFIPKtYyGYqriGb1BYst/+3sEDE9j+SmfSlIh1mILuIx1kCzhFa3 6KKHFYrIE93i2j4TqhCb/q6L9xuwNAKOQ2Vp9mRQ9Ti+IjTY8G8V9Y30y8LK4/i3j2Ra 2ruw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763518624; x=1764123424; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=gifhH+ouh+mmQPCG7Mlt+a64mECIBHFCW6GZClRn09k=; b=ZN/ombF6w4oUR6MDYelY7F62oVFlQhY3mcI06EsHjy7pSUegf9P3yCEWewJEy0FYR4 M221h/Ovm+3SQ3Th7ZJjkybJePDQoER3v0vU/N0BChn9tAe6IoNUEnwpuw+U7RiEzRuo WdvlAWfuFjFdIx54HWCaXylZEwM9NNxOmYtwfqOtasN+d9ELtPnYvEUSto9RIWkmj7y0 ivTQzmuCt4w5qUfXaBBBsOs4WYlCxpp18Odn99lw3Sa1LueQM+iZaWCQZUT0dy2q7jGw PUzBnVQNrHiBvK2rk0LV9k9A9Ll0quMu6VmCChN/LiB4SpFn5MsHrH+qBPXTqmcVWghV L3iw== X-Forwarded-Encrypted: i=1; AJvYcCWXe3KdNkVM7Bldd8XABlO+W6I608z8gG6rmc22ixp8cKSvLmBeZ4Sn5LVF461eowpu31/juoCHMH0VwI4=@vger.kernel.org X-Gm-Message-State: AOJu0YwXQpTFEN/4vPJWlw98RZ9CIlDh3DTsA21SJAsrcYSeqMKdrA3m wlXZQLkSMmTLKnV/ew1/LIM4kJ3KU/swPeURG3XS9gAAMwmsFOvCvSOirPivsC9jZ3rkVPGhTOF lfLTtEDF7i/QwUO+0d0/7a3Hyy/T5WTde6nG6+H5yuxfQyS67i3y0 X-Gm-Gg: ASbGncsZs/6JHXQYa8+Re5HXCdN8WPfPdbNMTvMwevYgmnwQv1bZOv+0jm5DeedjJCa MArenZNsBrh1yZl7PeEMGgpKJUYaSm1lFIqR2Ir4bOriCTZmks4f7CEw9C/QwQ0hH9jixdg8GUM AY5baI56XVO4S4JmMP4noqKXGE4r3LfwKMz1gc8zntlrth2sbSrQlSy+VNWYikXQSECHu1d0Gm4 aj3mkg7ePtrRvvubdxAMluygP/Xh2c1DKjDcyyqcs4PSh7OMeLi61ih93rtGAjKfMSHTt42gdX0 1/U8Sm+6coiYVcyY6YdSE509K+iZvcIKCorLakhDxNNx4gfNVkDGRHWIP+ABjcXJeroPBx1u/+C QtbMtinM8bMMZNXWfJ2QhcqOnIEY= X-Google-Smtp-Source: AGHT+IGOR0ugmF8HlYOxXeeCF+7YKOfSX53SMdxQqW18SDQIzOnLaPZwyGP25uViKl+PqgVOUp+UmXSnNmS7 X-Received: by 2002:a05:6638:378f:b0:5b7:c10b:230d with SMTP id 8926c6da1cb9f-5b7fc7053a1mr2425426173.2.1763518624246; Tue, 18 Nov 2025 18:17:04 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id 8926c6da1cb9f-5b7bd246865sm1242893173.1.2025.11.18.18.17.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Nov 2025 18:17:04 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (unknown [IPv6:2620:125:9007:640:ffff::1199]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id DB3A53400EA; Tue, 18 Nov 2025 19:17:03 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id CE3A2E41A05; Tue, 18 Nov 2025 19:17:03 -0700 (MST) From: Caleb Sander Mateos To: Keith Busch , Jens Axboe , Christoph Hellwig , Sagi Grimberg Cc: Caleb Sander Mateos , linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] nvme-pci: deduplicate empty request list checks in nvme_queue_rqs() Date: Tue, 18 Nov 2025 19:17:00 -0700 Message-ID: <20251119021701.3165123-1-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" nvme_queue_rqs() checks that nvmeq is non-NULL before calling nvme_submit_cmds() and nvme_submit_cmds() checks that submit_list is non-empty before doing anything. A NULL nvmeq means no requests were processed from the rqlist in nvme_queue_rqs() since the last call to nvme_submit_cmds(), which implies submit_list is empty. So just check that submit_list is non-empty before calling nvme_submit_cmds() and drop the check for NULL nvmeq. Signed-off-by: Caleb Sander Mateos --- drivers/nvme/host/pci.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 15c12e6cba88..8b562563ef89 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -1199,13 +1199,10 @@ static blk_status_t nvme_queue_rq(struct blk_mq_hw_= ctx *hctx, =20 static void nvme_submit_cmds(struct nvme_queue *nvmeq, struct rq_list *rql= ist) { struct request *req; =20 - if (rq_list_empty(rqlist)) - return; - spin_lock(&nvmeq->sq_lock); while ((req =3D rq_list_pop(rqlist))) { struct nvme_iod *iod =3D blk_mq_rq_to_pdu(req); =20 nvme_sq_copy_cmd(nvmeq, &iod->cmd); @@ -1230,25 +1227,26 @@ static bool nvme_prep_rq_batch(struct nvme_queue *n= vmeq, struct request *req) =20 static void nvme_queue_rqs(struct rq_list *rqlist) { struct rq_list submit_list =3D { }; struct rq_list requeue_list =3D { }; - struct nvme_queue *nvmeq =3D NULL; + struct nvme_queue *nvmeq; struct request *req; =20 while ((req =3D rq_list_pop(rqlist))) { - if (nvmeq && nvmeq !=3D req->mq_hctx->driver_data) + if (!rq_list_empty(&submit_list) && + nvmeq !=3D req->mq_hctx->driver_data) nvme_submit_cmds(nvmeq, &submit_list); nvmeq =3D req->mq_hctx->driver_data; =20 if (nvme_prep_rq_batch(nvmeq, req)) rq_list_add_tail(&submit_list, req); else rq_list_add_tail(&requeue_list, req); } =20 - if (nvmeq) + if (!rq_list_empty(&submit_list)) nvme_submit_cmds(nvmeq, &submit_list); *rqlist =3D requeue_list; } =20 static __always_inline void nvme_pci_unmap_rq(struct request *req) --=20 2.45.2