From nobody Sun Feb 8 07:15:01 2026 Received: from mail-pf1-f226.google.com (mail-pf1-f226.google.com [209.85.210.226]) (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 1519D221F09 for ; Wed, 30 Apr 2025 22:52:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.226 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053566; cv=none; b=ZF1genSqcLKgwuC7497jEV1DzE+xJT0EH1QxGuuuQ/mJ0DCYqVrH5blTcJjS9wHgxM5hwAR1OSG2IbEYMWMyYkD6fCDDvVyS+uOzB0UmhfwlmunheibVHQFb3qo7FtIru1Vrx43283JeB7ZH08nBF5dW29nnBnzEF99Yn2wQeHM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053566; c=relaxed/simple; bh=yUtEHoQ4xRUN+TbTy6hSjbTUHM3GxPcNU0fnKHjGl9Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=A3Ns6zTWMre76d3kyfty03vCYJNHhKE+Rjlpz6GUDMsH6MRCOLiCjEZfSXQVauiKtqcYj3JjVajd7PHDoKQPFHYGe4VCGJwKNehQaCKayoxF2iSMvjAqPI9R0m3Qxp2VH1PfUwlVYiCTBvCPcI9qcf5dJ1oo5Hzzk8JFRY4x/K0= 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=JTFJ8X9e; arc=none smtp.client-ip=209.85.210.226 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="JTFJ8X9e" Received: by mail-pf1-f226.google.com with SMTP id d2e1a72fcca58-73de140046eso74947b3a.1 for ; Wed, 30 Apr 2025 15:52:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1746053563; x=1746658363; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jXNvXWhGudyXXPiWCUtWfoACEHHbGSETRpmhgFO97Ds=; b=JTFJ8X9eDxJF0bj1buhicyDAD4ljV7Qe3IoaATuUSmYYWc3o7hvYQQW2cQHjt/xusz Vzve7iog+ACRH/o1guUMxuYMO6VVeRvStS/AVtuXH0x5D/8iVHsHDjFWWAfEuAcwvSw+ 3/DKycoM5ntIowFxhAgpsiXylxEkQqes39t0mW/OKJRGrvN4Nvi/UEicpyaxghEfQpR8 g56OvhKlqNu/wdRPCdTuzSMA4GuDNz09okJvfcTofvHqXdM4l52J1aczDz+0UVUDE7w2 lxmcHYlcPv7Yg1g6OQNjHQbZ0HGfO8XBPLJuzyG7fkjVm4lswhYE4u1j2jOBzEbISfcn zbdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746053563; x=1746658363; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jXNvXWhGudyXXPiWCUtWfoACEHHbGSETRpmhgFO97Ds=; b=En5y9imx78FFgY0Yr5eyP9Zql5AEo5QYtrQknEw5Tnj7FTKdlmhTu4aVQcg46sXVDg 0jcfGm1hn/NG0YYYEbm68KwGQx/qdCauY4uLEfhr+G8FzpZFalvpDYv3jvjqglQFi23L 66wwXGCibpMQGgEoVgMmMeCDwkmzSxZ8D6Cc4SzcT8xg2LhLMi/abfd+bFKzwDi0TCAi lQHAg7ekZkALPzEm9jsUM92i9qD54mzhCaiLsci9Tux7iE/So16b2l8ATpv0XYY04azE VqVs9wkk0BuNqrYIxR5wsVGn6W4H2VewHQMQOTgCdQfDlvIWrBwjqmyx2wPoJ2bp+51K 6MUg== X-Forwarded-Encrypted: i=1; AJvYcCWBxYXlF/TR7ci9ZDma7xgXBRSSsPBIFWLg/IM/QZH5yWQlnT9hKehgsdmycwstwDiQgTZey4e67o6OByM=@vger.kernel.org X-Gm-Message-State: AOJu0Yy1TrVtuttl8sJVu3s+NAP7X3W278oV0PnCGs0XyDMvhj7TSNlB W7/9GpzBOifVSFHaQr1EaXazcAb93a0+T2NGCvKVN+VuYvOq+0XZJNKIRvVipSXvxjgKcoPSqzz EVEivaj/vU89+YPypvqz9eZ+gxTSU+EZeTeJ36jFi9IxRGqab X-Gm-Gg: ASbGncuRvVsy3jIYur2jfEn/tLYn75wBB6u1N28vBqYuHiZz+RTMkX8qYTWgy06B44N cCqV0nd8uxCR0qvxtoC6SWo6wK2OYgri9oP5KT1BOCauLr/tDagtQi8MX98WKcV/WQx7WTxoiso TduDwzSJVPurYgdE1hsIwdF5nkMmjGsWn5uy4hwla25Sd4bMTNER+AWI/Xgi7+yz8emqsKWNJY9 6iYqf1X4W/eWCEKQA1LvfBN38g7S8VUB6LXr2CI2MFnFvvfLjWcXqol70iolAQ8QQBTZqupsaRn dT8LkqnhQ63KVN//yG0dCrLyAVizHQ== X-Google-Smtp-Source: AGHT+IFRgsolljz1XF8/Gy7pXyOvrGsDYWSmtyIVq1MRhWiFE/8/w5kqKRXbM01ufqUkz3FSfQVkK8mKIiHO X-Received: by 2002:a05:6a00:369b:b0:730:8526:5db2 with SMTP id d2e1a72fcca58-7403aa56808mr2087247b3a.5.1746053563341; Wed, 30 Apr 2025 15:52:43 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id d2e1a72fcca58-7403979d657sm158609b3a.0.2025.04.30.15.52.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Apr 2025 15:52:43 -0700 (PDT) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.7.70.37]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 9B5DB34022D; Wed, 30 Apr 2025 16:52:42 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 99374E41CC0; Wed, 30 Apr 2025 16:52:42 -0600 (MDT) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: Uday Shankar , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 1/9] ublk: factor out ublk_commit_and_fetch Date: Wed, 30 Apr 2025 16:52:26 -0600 Message-ID: <20250430225234.2676781-2-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250430225234.2676781-1-csander@purestorage.com> References: <20250430225234.2676781-1-csander@purestorage.com> 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" From: Uday Shankar Move the logic for the UBLK_IO_COMMIT_AND_FETCH_REQ opcode into its own function. This also allows us to mark ublk_queue pointers as const for that operation, which can help prevent data races since we may allow concurrent operation on one ublk_queue in the future. Also open code ublk_commit_completion in ublk_commit_and_fetch to reduce the number of parameters/avoid a redundant lookup. Suggested-by: Ming Lei Signed-off-by: Uday Shankar Reviewed-by: Caleb Sander Mateos Reviewed-by: Ming Lei Signed-off-by: Caleb Sander Mateos [Restore __ublk_ch_uring_cmd() req variable used in commit d6aa0c178bf8 ("ublk: call ublk_dispatch_req() for handling UBLK_U_IO_NEED_GET_DATA")] --- drivers/block/ublk_drv.c | 90 +++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 47 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index a183aa7648c3..7809ed585e1c 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -1587,34 +1587,10 @@ static int ublk_ch_mmap(struct file *filp, struct v= m_area_struct *vma) =20 pfn =3D virt_to_phys(ublk_queue_cmd_buf(ub, q_id)) >> PAGE_SHIFT; return remap_pfn_range(vma, vma->vm_start, pfn, sz, vma->vm_page_prot); } =20 -static void ublk_commit_completion(struct ublk_device *ub, - const struct ublksrv_io_cmd *ub_cmd) -{ - u32 qid =3D ub_cmd->q_id, tag =3D ub_cmd->tag; - struct ublk_queue *ubq =3D ublk_get_queue(ub, qid); - struct ublk_io *io =3D &ubq->ios[tag]; - struct request *req; - - /* now this cmd slot is owned by nbd driver */ - io->flags &=3D ~UBLK_IO_FLAG_OWNED_BY_SRV; - io->res =3D ub_cmd->result; - - /* find the io request and complete */ - req =3D blk_mq_tag_to_rq(ub->tag_set.tags[qid], tag); - if (WARN_ON_ONCE(unlikely(!req))) - return; - - if (req_op(req) =3D=3D REQ_OP_ZONE_APPEND) - req->__sector =3D ub_cmd->zone_append_lba; - - if (likely(!blk_should_fake_timeout(req->q))) - ublk_put_req_ref(ubq, req); -} - static void __ublk_fail_req(struct ublk_queue *ubq, struct ublk_io *io, struct request *req) { WARN_ON_ONCE(io->flags & UBLK_IO_FLAG_ACTIVE); =20 @@ -2019,10 +1995,51 @@ static int ublk_fetch(struct io_uring_cmd *cmd, str= uct ublk_queue *ubq, out: mutex_unlock(&ub->mutex); return ret; } =20 +static int ublk_commit_and_fetch(const struct ublk_queue *ubq, + struct ublk_io *io, struct io_uring_cmd *cmd, + const struct ublksrv_io_cmd *ub_cmd) +{ + struct blk_mq_tags *tags =3D ubq->dev->tag_set.tags[ub_cmd->q_id]; + struct request *req =3D blk_mq_tag_to_rq(tags, ub_cmd->tag); + + if (!(io->flags & UBLK_IO_FLAG_OWNED_BY_SRV)) + return -EINVAL; + + if (ublk_need_map_io(ubq)) { + /* + * COMMIT_AND_FETCH_REQ has to provide IO buffer if + * NEED GET DATA is not enabled or it is Read IO. + */ + if (!ub_cmd->addr && (!ublk_need_get_data(ubq) || + req_op(req) =3D=3D REQ_OP_READ)) + return -EINVAL; + } else if (req_op(req) !=3D REQ_OP_ZONE_APPEND && ub_cmd->addr) { + /* + * User copy requires addr to be unset when command is + * not zone append + */ + return -EINVAL; + } + + ublk_fill_io_cmd(io, cmd, ub_cmd->addr); + + /* now this cmd slot is owned by ublk driver */ + io->flags &=3D ~UBLK_IO_FLAG_OWNED_BY_SRV; + io->res =3D ub_cmd->result; + + if (req_op(req) =3D=3D REQ_OP_ZONE_APPEND) + req->__sector =3D ub_cmd->zone_append_lba; + + if (likely(!blk_should_fake_timeout(req->q))) + ublk_put_req_ref(ubq, req); + + return 0; +} + static int __ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags, const struct ublksrv_io_cmd *ub_cmd) { struct ublk_device *ub =3D cmd->file->private_data; @@ -2077,34 +2094,13 @@ static int __ublk_ch_uring_cmd(struct io_uring_cmd = *cmd, ret =3D ublk_fetch(cmd, ubq, io, ub_cmd->addr); if (ret) goto out; break; case UBLK_IO_COMMIT_AND_FETCH_REQ: - req =3D blk_mq_tag_to_rq(ub->tag_set.tags[ub_cmd->q_id], tag); - - if (!(io->flags & UBLK_IO_FLAG_OWNED_BY_SRV)) - goto out; - - if (ublk_need_map_io(ubq)) { - /* - * COMMIT_AND_FETCH_REQ has to provide IO buffer if - * NEED GET DATA is not enabled or it is Read IO. - */ - if (!ub_cmd->addr && (!ublk_need_get_data(ubq) || - req_op(req) =3D=3D REQ_OP_READ)) - goto out; - } else if (req_op(req) !=3D REQ_OP_ZONE_APPEND && ub_cmd->addr) { - /* - * User copy requires addr to be unset when command is - * not zone append - */ - ret =3D -EINVAL; + ret =3D ublk_commit_and_fetch(ubq, io, cmd, ub_cmd); + if (ret) goto out; - } - - ublk_fill_io_cmd(io, cmd, ub_cmd->addr); - ublk_commit_completion(ub, ub_cmd); break; case UBLK_IO_NEED_GET_DATA: if (!(io->flags & UBLK_IO_FLAG_OWNED_BY_SRV)) goto out; ublk_fill_io_cmd(io, cmd, ub_cmd->addr); --=20 2.45.2 From nobody Sun Feb 8 07:15:01 2026 Received: from mail-yb1-f228.google.com (mail-yb1-f228.google.com [209.85.219.228]) (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 DDFFF226D14 for ; Wed, 30 Apr 2025 22:52:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.228 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053566; cv=none; b=EHwTOY1artsnJ2/7ffWbth6eWLCc0o/9Jhviurxzqvu/o4tbY94JIV1D0XA9A+fHgR8w86nmb/8Fc8djyvUKh6aR2D9HA/0E+ct2uh3HFTqbiC0IR9xXv+SpkoMZQ6icJi2vLTJRssuZ/nYwhfSyVNwMnUD3z5OeKZeTMgJAjyM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053566; c=relaxed/simple; bh=cKuSj07UNIbFR1xRrPWEFTmA04qMg5m4ZTKpCK+46sY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ceDVNHTNtkaXqHUoh9dapOVSXiAXPawqRTBTTSbAnnIQnJodyho2gd9v8i4DEGmof6NAAV3GTOtvKtfeUD9xe0nI7GyfKg9iY/SB6LKq9Lu4JX1+26x42vp6lTIhS8O3xanwuXrf2IdHub0zuu2D3Jc0Tm53R0o7bUkjlMzOXrA= 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=GRM9m0PI; arc=none smtp.client-ip=209.85.219.228 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="GRM9m0PI" Received: by mail-yb1-f228.google.com with SMTP id 3f1490d57ef6-e634949074eso38402276.1 for ; Wed, 30 Apr 2025 15:52:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1746053564; x=1746658364; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zX3d6Es1jqYsyf58SuUf5JPCb512PPSOHmR2awR6dbQ=; b=GRM9m0PI3tT1o2mH2Hw54ioWkMbII0CYyKdJG8OXwSDgCc+jUvWB3XqKFn1CtWowpx pQJBAurxYkqUoRS1pvCKBXTnLs/eFwUvo9XOjBPNqMznHfVwUsjVbEh+LcQGbZusUOvf K1LahCgZBykVi2Ev1aTTgXpBA9ttC0oPZqxy9XA2vdwv1QgVUO7KDm2AJTOdTkT0AxP2 Dh56/4DG7ClIIbTyxd7IzBDZpM4pM6P51e5/gklEMt5UI6fWkhdcvjx9yJpKOG0KCLhX 3lpMrfWo2m9LpqDra8nKLHSC9uCITkCVD7Eto+bTIuuiP2iyeqGG4N4gXctljytUxCur nXbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746053564; x=1746658364; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zX3d6Es1jqYsyf58SuUf5JPCb512PPSOHmR2awR6dbQ=; b=KjBsvqtPFGi2zvoNOpQUar2nlbpKY+zX16h8SLXh3XF2Xs7UlrmcjUEhc95pB92YEE t0P48AVk0TDTTg6/7pdAh7JOafCO7t+1Mp09UiUjzri3swT7PzmfQPqdCWvKfAPTJ2zQ /TaGcs9ZfBWDQBWg02gXejSP8UeeKNvl2rVlzs3TsDzfdhW9yqnhFTSt8GzT64kpDmxr MczyPQwxvzurtTI90BIPQYT4cNF9xAbUgLLk7k7ZRptVpet5uvg92AxXJnORThsaxooz H0m9pW3HE7NWzkMab66R7qVwWBbHXN0OV2umozDYYhU/i+n9Gb5Ua/H3VwtkwkiTZTQM znqg== X-Forwarded-Encrypted: i=1; AJvYcCWINNq1aBI4Q0sMu/76whWsJpd4yuN8JLpmGrbYKHJQkdoMKED+IBOX+68FEe6BrzAtK3rkPaWX64QbKtU=@vger.kernel.org X-Gm-Message-State: AOJu0YyQFrJFGiFZjL0vR+ZRRfVZuRiASSTscI4iwVBfmYY2CkeMQvXO WobHXdyd19A5IJm/FnrW/D1GBy99Tn3cw3xxsLUVqxJDaoaYl+JcC/Om9uhgt5uzSk6r8UCS/OX MG42pCeWodnFfqd7aQC1ZE2AWdHZ95Ub8FqZCO6RaBUTeTuio X-Gm-Gg: ASbGncsFDOoxRtGnhenDp51mLBCsOTMXETwzySBbXok7I27h/RyTbHoCMuMYGW1b5VB L0lIQOen53uCYEBbbGnETnbK4kMpdmNFJJRl80RSkOUkjI0LEI2fh0hZ0fKmuB4wYSK4OjTT/fZ tBbqe+VSLhm0PZUi2T9sYyCwLID4+v5bp68fz2Gxrd5CvDdU7avKZIPlAGAshphnFLcccNyv0Vh oqJTSbUSw4iKaLjQPq5A2THK94GjN+2aCBDqY/kMS6nQErJNTbszjSI3VcMhxy30xwp4KrOHZde FjXCESSYH/dv55ZKuGT+I2WnRSUmpg== X-Google-Smtp-Source: AGHT+IFnJsuKlmbBF0hmSnvalU7hKImH2yDVj+qrhAdYzIaphRu5c+jNpubN5obJYJRBoIoqINxkaWU+M6mO X-Received: by 2002:a05:690c:4:b0:6fb:b18e:147c with SMTP id 00721157ae682-708aee70293mr26628307b3.1.1746053563707; Wed, 30 Apr 2025 15:52:43 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id 00721157ae682-708adfb9e1asm1748467b3.1.2025.04.30.15.52.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Apr 2025 15:52:43 -0700 (PDT) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.7.70.37]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 2AD4A340199; Wed, 30 Apr 2025 16:52:43 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 2948FE41CC0; Wed, 30 Apr 2025 16:52:43 -0600 (MDT) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: Uday Shankar , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 2/9] ublk: fix "immepdately" typo in comment Date: Wed, 30 Apr 2025 16:52:27 -0600 Message-ID: <20250430225234.2676781-3-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250430225234.2676781-1-csander@purestorage.com> References: <20250430225234.2676781-1-csander@purestorage.com> 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" Looks like "immediately" was intended. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- drivers/block/ublk_drv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 7809ed585e1c..44ba6c9d8929 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -1180,11 +1180,11 @@ static void ublk_dispatch_req(struct ublk_queue *ub= q, } =20 if (ublk_need_get_data(ubq) && ublk_need_map_req(req)) { /* * We have not handled UBLK_IO_NEED_GET_DATA command yet, - * so immepdately pass UBLK_IO_RES_NEED_GET_DATA to ublksrv + * so immediately pass UBLK_IO_RES_NEED_GET_DATA to ublksrv * and notify it. */ if (!(io->flags & UBLK_IO_FLAG_NEED_GET_DATA)) { io->flags |=3D UBLK_IO_FLAG_NEED_GET_DATA; pr_devel("%s: need get data. op %d, qid %d tag %d io_flags %x\n", --=20 2.45.2 From nobody Sun Feb 8 07:15:01 2026 Received: from mail-qv1-f99.google.com (mail-qv1-f99.google.com [209.85.219.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 A6EE822A4EE for ; Wed, 30 Apr 2025 22:52:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.99 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053568; cv=none; b=ZLtcrGY5cvgxiyL59kLq/F9XjvCRSW37v/ItpsD4/TdZbVmAxYOftmsHcnv5pmagvMag2Fk7BT33dS3Rufydn7O4GN+cGhOMseHgrA7dGEjX37YID7jCbyfiKoJe1DgMTuLz+77mBrTJZ8dcm6ItjY7Zq6s2lRpya4EhRmNi7S0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053568; c=relaxed/simple; bh=nXCg+pXbRoR81xflleG9ocvd7Z1Tja2d5kz5BHY9Lik=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jC6Nemvk1XBotfS4zHldmpL0dwh8my8gHhWvKBKeBRhxbJmvEl9lRkwJBWrK+0YR8XiYUyN1fgSS8T6Gq+lM8SdipeBV87yoyjdCjmhQYXpDP1q8bZeHWV16yML2mgsNy4qyTRWDkPl66S0lacWTT7UiWByShioc9IZZKZwOB3c= 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=KAyJdyeZ; arc=none smtp.client-ip=209.85.219.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="KAyJdyeZ" Received: by mail-qv1-f99.google.com with SMTP id 6a1803df08f44-6f0eb824f51so914086d6.0 for ; Wed, 30 Apr 2025 15:52:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1746053564; x=1746658364; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=w2c2dCDfSwBPxUeqKnIelTKrQEoECHUUK99fQC7EIqE=; b=KAyJdyeZ9JgtstAAPiaiMP2xQqfoVvDeguNGkjrVMaGnE2cdj7OJSvWCmh+Fh+woNz yYYBn6ox6DoLpGgktf1dafxOw+3+4ymQnEr5ykD33AJnsihF7C/bbyuZ9QdOCZmZ9g0B GlhKT6z2KkbaSqSA0Z+nurOscadT2udI4whoOmKMHzW8tyPWQsRYPeE+LqnVduw6k9yw JaBCelbK8/hosIhDx06Ow5DzfMLjzpOGw16G7WzScWXT93E4WrLleLEI0tgeodJZJ257 ZRY/vu0va/nQWkU1oCo7AXJR0s+maCLLTtCYic7lpPNWld2/DddeGxmC7hygQ0dW+fPR lBkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746053564; x=1746658364; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=w2c2dCDfSwBPxUeqKnIelTKrQEoECHUUK99fQC7EIqE=; b=RuYa9aKzm3TuBP7CEoOsmTYixOQX3DeKySOSu3vPsVof7kOnbB5uNl9b+MFbW3maJT 3Ild0DdeXoT8o4/1j9j7hcWi4VX92ymalkuy4R5IqUzVtSSQHbFngOQm1xHWDBC5Uu5A AOwcu7a4zoyYed2jnyYINqatVOTfmn6DbGt9uWSrRSyjW5OZxSFhvg6D44ubgFEl0GcT elkzFfDl07d184EAbmJ70CwoNORWL8OxAfFPlGUKrmPbMWzGC1g08j0+u2JbdsJNic0p alpkn/yxYE+egNBbX3JXT8uSgyfRqME7wj18elQ0zEk1zE6QNSE/PPAxHIytYkbzRBlz vL4g== X-Forwarded-Encrypted: i=1; AJvYcCWllkP5ZIFruLJv0XTc1+X5NPSfaWn40E9vGMrsT0GngX829xgHOFHdJTFOaRHj/2DEGxncrC0V4Nv+OUQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyQA8neov2hUYRKrh2oqXpOQasoAP2jOeMI+QLi0K4daP4e2fZt b2Dh8sKu0qkny7PGbsNNdmK5Vb6C21xkxQpL24DUtnsVo3Q6CQHpXNAisHIy9rShHrh+nDmuuu4 0C2mrUsEarrO8tl53RguDAd1RlGfjjOOfONkp6paoIJlMUbId X-Gm-Gg: ASbGncuxuRDeu4eDoT4T4TCRoin4i+1DGtLe/EYWe7QvIbWTWV4jV/e1UhdTuO7aoHG 2VZ3G+ksEA+cy7bFGaYPDttmlgIBfOAT4zLjDZJXHPLQOhqIPaLf6UwQzp0k+dMk+ll9gWz49lR aqg/pWZ7Ae8iqMY/mWLVgkhvo/JT1+r+00rbfmzPEQxykUw48yxZFmqjGErdDw6/4JdHVOxmkMZ Z0rANurEgC/EYL8saQFgI1yc/VsTxlUAXKeez3+MBeptghTF/aOuVkvvBnpSxvn1zsq2eJ7qY/9 pjL13i0PDpLvoetB3RlHdhP6fqwzWg== X-Google-Smtp-Source: AGHT+IESWiXXlmdqbgJMpyGebdlLbXn8F07CDFuUX/F5hmqRKqmz+YwqsOelqF64p4S+Y6KzAphRZ8TJYC+G X-Received: by 2002:ad4:4eef:0:b0:6d8:99b2:63c7 with SMTP id 6a1803df08f44-6f4ff62b7a2mr21508726d6.9.1746053564282; Wed, 30 Apr 2025 15:52:44 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id 6a1803df08f44-6f4fe822198sm1264146d6.65.2025.04.30.15.52.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Apr 2025 15:52:44 -0700 (PDT) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.7.70.37]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id A3CFB34022D; Wed, 30 Apr 2025 16:52:43 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id A2634E41CC0; Wed, 30 Apr 2025 16:52:43 -0600 (MDT) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: Uday Shankar , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 3/9] ublk: remove misleading "ubq" in "ubq_complete_io_cmd()" Date: Wed, 30 Apr 2025 16:52:28 -0600 Message-ID: <20250430225234.2676781-4-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250430225234.2676781-1-csander@purestorage.com> References: <20250430225234.2676781-1-csander@purestorage.com> 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" ubq_complete_io_cmd() doesn't interact with a ublk queue, so "ubq" in the name is confusing. Most likely "ubq" was meant to be "ublk". Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- drivers/block/ublk_drv.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 44ba6c9d8929..4967a5d72029 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -1123,12 +1123,12 @@ static void ublk_complete_rq(struct kref *ref) struct request *req =3D blk_mq_rq_from_pdu(data); =20 __ublk_complete_rq(req); } =20 -static void ubq_complete_io_cmd(struct ublk_io *io, int res, - unsigned issue_flags) +static void ublk_complete_io_cmd(struct ublk_io *io, int res, + unsigned issue_flags) { /* mark this cmd owned by ublksrv */ io->flags |=3D UBLK_IO_FLAG_OWNED_BY_SRV; =20 /* @@ -1188,11 +1188,12 @@ static void ublk_dispatch_req(struct ublk_queue *ub= q, if (!(io->flags & UBLK_IO_FLAG_NEED_GET_DATA)) { io->flags |=3D UBLK_IO_FLAG_NEED_GET_DATA; pr_devel("%s: need get data. op %d, qid %d tag %d io_flags %x\n", __func__, io->cmd->cmd_op, ubq->q_id, req->tag, io->flags); - ubq_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA, issue_flags); + ublk_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA, + issue_flags); return; } /* * We have handled UBLK_IO_NEED_GET_DATA command, * so clear UBLK_IO_FLAG_NEED_GET_DATA now and just @@ -1227,11 +1228,11 @@ static void ublk_dispatch_req(struct ublk_queue *ub= q, ublk_get_iod(ubq, req->tag)->nr_sectors =3D mapped_bytes >> 9; } =20 ublk_init_req_ref(ubq, req); - ubq_complete_io_cmd(io, UBLK_IO_RES_OK, issue_flags); + ublk_complete_io_cmd(io, UBLK_IO_RES_OK, issue_flags); } =20 static void ublk_cmd_tw_cb(struct io_uring_cmd *cmd, unsigned int issue_flags) { --=20 2.45.2 From nobody Sun Feb 8 07:15:01 2026 Received: from mail-qk1-f228.google.com (mail-qk1-f228.google.com [209.85.222.228]) (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 025E222A4D2 for ; Wed, 30 Apr 2025 22:52:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.228 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053568; cv=none; b=Q7qCrXbDRWduvCDQdtcOZB6QmzuCvbgBjkBB8Ee6t/0rArmU4DOi6F955fypSfFZYiubnN+Msmkw4LJ4+rlKk+yPBP7beMUxUj8Utpn3IDi/9cM8PdJvnfV0nEReJZ9ASrxPiu+P4ai3LRjCWuUfVypt/ioPQraIRkp8irigIQ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053568; c=relaxed/simple; bh=F6TrVYt+JwOsXBAgbGtX1BWO86E1YJzrFqpSLPyvwJo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fuiYFfPZM0BWkmNWEx7eUtLbOPKgrtEcU4QgCGlvAUQxJRGResdu7ACdGqUaFjnwBK5E17FaAuMeqWil//ztvYbvXpUSKwh/xqftBhKpkY1eLTjeDlhgtBUlHI6imlpO8ANd0qmsYwYtdFR+D0dgfB2ei90I5UDN7cbBU2iYw/o= 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=OTDFzYU1; arc=none smtp.client-ip=209.85.222.228 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="OTDFzYU1" Received: by mail-qk1-f228.google.com with SMTP id af79cd13be357-7c7a5ee85dcso5020785a.2 for ; Wed, 30 Apr 2025 15:52:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1746053565; x=1746658365; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=z8PACZ6LLP08wO4kGq3k+wfqco1Md1ULnOwjRouABJg=; b=OTDFzYU1ejV2oaShYfccBzFH4HLqt2QgXpv/uoIa2bvS3V6fhL/Hkzxquv7B35DzEX dyzQG6A6AlDf2Tp0Wkf1za/6xbvWzU9d596UkcVCgBh1vwxUqXkwTCJC1Ccx8Uu+awwY kcXxyYjea9PMcywZ2+voMK8oC7OEHPsW3r6x1M+piblMSKJbwowAr0dl19b9j8q9WO0p +17vtpaHqBsihqQ0Ba8OVsLC9e8jEaYcbv+vwg+WCWURuWix7mUJ67/mEZMJU303VO3U 4EH3D8HMblSlAHB8MQMSrZJJleDjvRLmtflh3DAPSi2welHl12wi3jyCDlp0sL97E5c3 s1Og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746053565; x=1746658365; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=z8PACZ6LLP08wO4kGq3k+wfqco1Md1ULnOwjRouABJg=; b=nN1t00Om8DntN23eAY3w0FOm5iML78LSmkhlfjVWtEZGr8Hiwjm2uwfMCBXY/w7qLm Fq12fiuUAzREI2BY1ScH6oSMQm7JWB0VVe6+xAU03qsWN9bT8VLXJebSvkDMbdjfrxYi xhykOiWgC9HR0+aCFdp1NEfXMLUQtJjBoetEhSnYEUHC3W8Fty95yhPnSsE0rf6HYSUO SAVS9C0mhP6GUyqrfdiZuvk8NpPmpM6eHEM+K4HoeriY624XWxDyFdV4eQxF3x9cTpBO bkfGXjK+zGCDRJXj/MhZFJbWLmMYUE7FhDQtBliFxk+aOws7z5u9bbZRGA4GpKjLsSo9 9B1w== X-Forwarded-Encrypted: i=1; AJvYcCXeWXCBOT+hq53TUiUzEzytPcsgaf6QWoAnDDJR/Pkv90KimLcHQCNKPFG9jCdiH606vICdjs97cIvcPIs=@vger.kernel.org X-Gm-Message-State: AOJu0YxdsH3Xkh/AAQ9SuJFgRMVjbl1eJQDlsnCspFyIYc1Iy+Mnm35j p6GiHW+5d5ZCdDXCGX7M2BDdsEF3VTxDoT7wpEtNCjoqWzgv8KarPCiXjmazyt93Xlc/wX06cJJ iHB0Iwd03i9Z/xWFHsnleXPp+ilH2nzC2 X-Gm-Gg: ASbGnctMAwyFFIKgEWKUOCN1Ocu2Cv9QK9fL9Qv7DvnLnPh9Z4uXBKlEWEx+up7AunF WIIl0Y/t2pSxrdWxjLlaxixum+ug8fF9fCay94hzpGaf71pFddlzjEypwE7OZpTZNC2MlW2W5UF NsoxQRSthZ0HLGugPo04SwRHlq6pB3IFj2Vu7s8eF9rJ8zIiwjsZvQt9y8PCGQsUNmVPENoc5Rq nJVVT3/gKLhpc4zyXjngMVq9QHepxFRZUxIim7o42VRoM45CDeUm1KrwYg2LeIGIcnkMujS+Px8 3+y1hxw9/k+beHuFWCZJH3BEYTO3nv1gByPWOcYwLKHC X-Google-Smtp-Source: AGHT+IH7rEYnM3RyaHx0cZHBylp50xHUVBApawghs582YsWIGA4OsSEDMnx3ZL4L0oNlsK/S/bXrrAAeAoZR X-Received: by 2002:a05:622a:188b:b0:471:f5a4:546 with SMTP id d75a77b69052e-489e43b3bf9mr27214501cf.3.1746053564787; Wed, 30 Apr 2025 15:52:44 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.128]) by smtp-relay.gmail.com with ESMTPS id d75a77b69052e-48b06518ffesm126911cf.7.2025.04.30.15.52.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Apr 2025 15:52:44 -0700 (PDT) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.7.70.37]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 20A1B340199; Wed, 30 Apr 2025 16:52:44 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 1EC37E41CC0; Wed, 30 Apr 2025 16:52:44 -0600 (MDT) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: Uday Shankar , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 4/9] ublk: take const ubq pointer in ublk_get_iod() Date: Wed, 30 Apr 2025 16:52:29 -0600 Message-ID: <20250430225234.2676781-5-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250430225234.2676781-1-csander@purestorage.com> References: <20250430225234.2676781-1-csander@purestorage.com> 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" ublk_get_iod() doesn't modify the struct ublk_queue it is passed. Clarify that by making the argument a const pointer. Move the function definition earlier in the file so it doesn't need a forward declaration. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- drivers/block/ublk_drv.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 4967a5d72029..f4c1db2e7f54 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -203,12 +203,17 @@ struct ublk_params_header { static void ublk_stop_dev_unlocked(struct ublk_device *ub); static void ublk_abort_queue(struct ublk_device *ub, struct ublk_queue *ub= q); static inline struct request *__ublk_check_and_get_req(struct ublk_device = *ub, struct ublk_queue *ubq, int tag, size_t offset); static inline unsigned int ublk_req_build_flags(struct request *req); -static inline struct ublksrv_io_desc *ublk_get_iod(struct ublk_queue *ubq, - int tag); + +static inline struct ublksrv_io_desc * +ublk_get_iod(const struct ublk_queue *ubq, unsigned tag) +{ + return &ubq->io_cmd_buf[tag]; +} + static inline bool ublk_dev_is_user_copy(const struct ublk_device *ub) { return ub->dev_info.flags & (UBLK_F_USER_COPY | UBLK_F_SUPPORT_ZERO_COPY); } =20 @@ -692,16 +697,10 @@ static inline struct ublk_queue *ublk_get_queue(struc= t ublk_device *dev, static inline bool ublk_rq_has_data(const struct request *rq) { return bio_has_data(rq->bio); } =20 -static inline struct ublksrv_io_desc *ublk_get_iod(struct ublk_queue *ubq, - int tag) -{ - return &ubq->io_cmd_buf[tag]; -} - static inline struct ublksrv_io_desc * ublk_queue_cmd_buf(struct ublk_device *ub, int q_id) { return ublk_get_queue(ub, q_id)->io_cmd_buf; } --=20 2.45.2 From nobody Sun Feb 8 07:15:01 2026 Received: from mail-oo1-f98.google.com (mail-oo1-f98.google.com [209.85.161.98]) (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 04C2522A4DA for ; Wed, 30 Apr 2025 22:52:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053567; cv=none; b=lcNn1yDHYloTibqJACHKd5iionyo+ZQoP+pWQCle2W0Nw4O8Mj0a350ZtLpfI950OJS0+vfWefSSGQeyymsaruH6DIUKPg44gag4kb0mD3DyzsizHNu2q+A8jjPGsCJJYPeJFmyICDKSXEhCVLKGoW6vw9z3Ltwk3YtY9R06fzg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053567; c=relaxed/simple; bh=9fU1rtCDfsVqZXi5FSilsw1eDf7t0GGmJ7NnZka2gTU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SzaSQgAA1LlT8iSRaAY5sgjKYYOGUE6/DVBlFv6Skl+jOpWCXVt1386+VROY78X4KwQPuBl4BiJ9WXC6oI5oBOoYa2Gt1vFDU10A90LGu75kGw75VIfu6qdERJqUJA9ITUyKY+Qs4qES8CQeO1lboDUzRH+2JaOIoBBp0pm7pO4= 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=cmXgbfgP; arc=none smtp.client-ip=209.85.161.98 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="cmXgbfgP" Received: by mail-oo1-f98.google.com with SMTP id 006d021491bc7-6026be5e965so8083eaf.1 for ; Wed, 30 Apr 2025 15:52:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1746053565; x=1746658365; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WQ1ZXK7XatesI0CcgEIc6/EJN0etVspsXi6q9o6GnHQ=; b=cmXgbfgP/YKee+lXLMl7iwuGl56Vv9MeY46VG3DU7FDWVDfnSoNIUCGrqxoyVkfLDy 1HSNmZ6gnAGsSjlOgnnOj/PkhRO7S+xinjyQ5W0H/Z5B1k6EE2k/XrcQBSi9kMNrDu/w XUCo7OJmnJgdxcNHiBhzkvjdhvIEowGlzo9nNUJkJwQ0ZLqQDMue7ShhU7tIT1LWMIbE 0AtUStIx+b0fmA7zaf/0nSk211MkGkt1IF3mswKvN091pQFL0ei3vIq32KJ0R11ZbcYQ Fuy8h+28BBriFd6PBQ/g7nKlmyoSwOs06Y9TEFNsuBYJMrrEgOHq9yZp66oNuz0a3zht RKcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746053565; x=1746658365; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WQ1ZXK7XatesI0CcgEIc6/EJN0etVspsXi6q9o6GnHQ=; b=nIsBqdLJ4QBUU/yrHY1FcKFCXKcc0CbQ6+hhQeihtiKLHbwEKWBaaybFw6ZlQIlSB9 Z8g3GBpPopYaeQO+RBNQix0MOv2jYNSsLZ0CZ4QXxP6GB5Q/8CThPfu1bfYOE+C0cfNR rcfipAPxwwhMgSq3k8eyRFqB8dLMwss+N//ibqkGvz+M6Jo4pXtoYSFZxJ3TI0TW4mgJ KrO8C246ak0WFakel3IIgnlNCk9f1OZUDZJ5MMOk5mtLukFchwQkv2tp7QgBTIz+mwc2 Qh0KJtntZZ3OknBbFHnN4VUOEZOE+5SoaBAbgvZDiiT8WjO30UDFcHX+4m1QRH6zJ9XQ w1Wg== X-Forwarded-Encrypted: i=1; AJvYcCU3o3Wo95/oWHgrDXSmiiOhT4De3MXcy+J0cz4YzopscvR7OP4CjxZyqQKJNWd/BLBv22Qpu6XCkwAJljw=@vger.kernel.org X-Gm-Message-State: AOJu0YyuWkzijn4sroa2We0i4wfbq91vTbsyR0w3EidCsWdorE5htImx u9ZOnLknHsnoObWIfj0iPmdA+BNzoC8tYez6GDjRUMtRJmKUe2g/djMiTQldaYVtteKlvJZTMNg uPV88Qe5mfyF/kYOAjfaO+PMGkAlR9aa6s96+Yng/jI9uKI56 X-Gm-Gg: ASbGncsIQDK1ProQRKdUeZx9fFaetDpe43dIGi72EMr4/euAsM++GH7u8ZhrRBsK/P2 NLsY97xsvWRvWUdNQ2elZUiJCfJLTOQO9VWViqWIJbfwflhoGqH3b+KPWBnU6/lzwii0MCFTCVe wWGhU+uMkcbZW4tJ8zSDXgIy3HA+LtxlWvlC2rQdcjALhqOtmzbQrk1VtWGy2QseUKVXSy8gVns N42Cx8qFAzuLdFK80Fz3LmLMoiqt3YwMoyFPdVnbSpqlMNIBZh7BpiLtE4io5TCPuWKPtFYeSnA +ep31ANS7VY2KjVHFPRChDwcKnBCMA== X-Google-Smtp-Source: AGHT+IHZ2g+eTcTVTYrG1MAIf5e1XqBmlyvRecn0/BClSdShvHmVPo8kX6qxwPRQchH9u4jTLqE69oDVHD7u X-Received: by 2002:a05:6871:a506:b0:29a:ec04:aa18 with SMTP id 586e51a60fabf-2da70c68dc2mr835625fac.5.1746053564977; Wed, 30 Apr 2025 15:52:44 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id 586e51a60fabf-2da6e0fb455sm115729fac.14.2025.04.30.15.52.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Apr 2025 15:52:44 -0700 (PDT) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (unknown [IPv6:2620:125:9007:640:ffff::418a]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 8F47B34022D; Wed, 30 Apr 2025 16:52:44 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 8D7A6E41CC0; Wed, 30 Apr 2025 16:52:44 -0600 (MDT) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: Uday Shankar , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 5/9] ublk: don't log uring_cmd cmd_op in ublk_dispatch_req() Date: Wed, 30 Apr 2025 16:52:30 -0600 Message-ID: <20250430225234.2676781-6-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250430225234.2676781-1-csander@purestorage.com> References: <20250430225234.2676781-1-csander@purestorage.com> 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" cmd_op is either UBLK_U_IO_FETCH_REQ, UBLK_U_IO_COMMIT_AND_FETCH_REQ, or UBLK_U_IO_NEED_GET_DATA. Which one isn't particularly interesting and is already recorded by the log line in __ublk_ch_uring_cmd(). Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- drivers/block/ublk_drv.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index f4c1db2e7f54..dcde38b39a82 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -1158,12 +1158,12 @@ static void ublk_dispatch_req(struct ublk_queue *ub= q, { int tag =3D req->tag; struct ublk_io *io =3D &ubq->ios[tag]; unsigned int mapped_bytes; =20 - pr_devel("%s: complete: op %d, qid %d tag %d io_flags %x addr %llx\n", - __func__, io->cmd->cmd_op, ubq->q_id, req->tag, io->flags, + pr_devel("%s: complete: qid %d tag %d io_flags %x addr %llx\n", + __func__, ubq->q_id, req->tag, io->flags, ublk_get_iod(ubq, req->tag)->addr); =20 /* * Task is exiting if either: * @@ -1184,13 +1184,12 @@ static void ublk_dispatch_req(struct ublk_queue *ub= q, * so immediately pass UBLK_IO_RES_NEED_GET_DATA to ublksrv * and notify it. */ if (!(io->flags & UBLK_IO_FLAG_NEED_GET_DATA)) { io->flags |=3D UBLK_IO_FLAG_NEED_GET_DATA; - pr_devel("%s: need get data. op %d, qid %d tag %d io_flags %x\n", - __func__, io->cmd->cmd_op, ubq->q_id, - req->tag, io->flags); + pr_devel("%s: need get data. qid %d tag %d io_flags %x\n", + __func__, ubq->q_id, req->tag, io->flags); ublk_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA, issue_flags); return; } /* @@ -1199,12 +1198,12 @@ static void ublk_dispatch_req(struct ublk_queue *ub= q, * do the copy work. */ io->flags &=3D ~UBLK_IO_FLAG_NEED_GET_DATA; /* update iod->addr because ublksrv may have passed a new io buffer */ ublk_get_iod(ubq, req->tag)->addr =3D io->addr; - pr_devel("%s: update iod->addr: op %d, qid %d tag %d io_flags %x addr %l= lx\n", - __func__, io->cmd->cmd_op, ubq->q_id, req->tag, io->flags, + pr_devel("%s: update iod->addr: qid %d tag %d io_flags %x addr %llx\n", + __func__, ubq->q_id, req->tag, io->flags, ublk_get_iod(ubq, req->tag)->addr); } =20 mapped_bytes =3D ublk_map_io(ubq, req, io); =20 --=20 2.45.2 From nobody Sun Feb 8 07:15:01 2026 Received: from mail-qv1-f100.google.com (mail-qv1-f100.google.com [209.85.219.100]) (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 BDB3122A813 for ; Wed, 30 Apr 2025 22:52:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.100 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053570; cv=none; b=Wr5R4lBMpGU5RZ57VQ4dCRR7CYPktRsGWFW6b3eQA52oFIXGTeRuuFsiImXWxlga4DAxs5JelgnF/mekAEgE8Ke+ie5MUudZZWGx7DS8vle0ONtKYPqBqrzwv4s81ML9VEZ3+eFZSzeeDxGxQsOhzk9SAWQJSixi/Ne45nPasl4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053570; c=relaxed/simple; bh=feVv8f7d0KgVnnhw1uFkQnOAw5OAMYzup6QnL1O24ec=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Qr5Ap+DN1G0eXlOR/7S4YGYE4Th2HB4CvZBs+YIFhSU03nWooRfE8cWhW6Yv0ZiBQR+n1EkXm7zuRWduhQV1UGqgmwJ1NyjDkEOLVxcJ7Iahp9yE8shCSvgoW9tiFvscCpAdWb+WcgQXXrZZQrKFm6N0tQa0UXplraWOlpiGiCY= 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=L8gfYkoF; arc=none smtp.client-ip=209.85.219.100 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="L8gfYkoF" Received: by mail-qv1-f100.google.com with SMTP id 6a1803df08f44-6e8fa1f99a6so544276d6.3 for ; Wed, 30 Apr 2025 15:52:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1746053565; x=1746658365; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Kb0AiFPk4f9Yg8x1AOb62HbUM9uzpcieXEg0cQHgsk4=; b=L8gfYkoFGZ+FQVFn8J62bfM27dr7Su+Ia22XDJmwQ51/OHwMTRypiezTPPPwToh2au KZyC7C3uUrh/gGs58IRoT6krnxhmlh2bVFzcGABXZDrBQw2TNPvngF41kINpjKinuWiV fZy+d8NnGkKB2idTHtMhqDvynUney2o7pgA360QaJAYDmwl7EPOoz3WD4YuhAcL9E29Q wbEIcKLE19novtqRZ7WF/59OD830VoJiZku/wacWxh4Q++DzjtSEr99Ghu0ce5QBiHYZ y6p2AGh5iG0K0DTnjbRTTbo/4Ck+ucjkef9Y666raxA/ZYquirgi6eW4kSooW2tCWl4X Mvfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746053565; x=1746658365; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Kb0AiFPk4f9Yg8x1AOb62HbUM9uzpcieXEg0cQHgsk4=; b=tRjYIGO2i9HjaoEvxbPKnbo8YzmDAVeXP8J5tz/V13+SK4RWPxL4uhxI6NgnetqWzE mb/3MtCI/y62IlAc5tUwmusHJkJ/97PIncBd3GtqLuNY9MFhMYw5qn3EQ2gRMAqhJYRd 4hFH50CuUIhYHv7u7iZsGvaEoLddY3u630zh+Tn1mo3tDD92FzcBPUY3ul92xPvSrQLi 4gE7rC6Ip8pRcS5OEcNjlASP+sA77XsLU+ZR7XPTM2U5wd3jA5/e78Ll6MAjrtBI6BcU 5D+5IjY5O7hNugASaMe8yCx61rTNheEdoO8e85MXBlzm2O6PLyDDz11S07GLhqtHoget pxcw== X-Forwarded-Encrypted: i=1; AJvYcCUYp2aeiz0MLxR/NqnoznUN7fMIYD+6GwX15wPSMTfRSSDSyPxeHzAHcEUPG9mi4LjVT3X0k+OPQda9VlY=@vger.kernel.org X-Gm-Message-State: AOJu0YzSBxfcrSkQzsePJttn6wcB3cJNWW7mzgctqDmTL+0ghCFbGwQL /40F6GnkZSTVewGBc17fKGCNETT0p48qdiLB0p3qX8WJ0bWLrPbxsqkFdr4PyuYXff7t8/EgmZV o3nHzxjVJxDn9ddJf8vIZVh4zEXw1smAs1kYytltriRLx8UeK X-Gm-Gg: ASbGncthlErVL6Xc1bVUOI9uH1en2gjSGpXfVaGk+TejD6qRkv3bggudJ03+I4jw55+ qmkQ0ktk/UnHkzQcdPBU2dSZAdAFFyHBS4EI1Vm1lFjDbY8B/cXbMNyPGbOk0k5sqp4c6I+4zXt /f3qdvAXLgilvtRlMZAVC6epBfHIko1IYYHhAQgf/IQQW1jqK8uwytcvvlHo5DNrGMnb3tA1oJt 7tLSJ5wb6ANkLKwzMcagU0EIcuKs/pSfJxDIrthqHVMbedI+bQxx0rEoiu98F035WLYHup1A8eh 314DJQafwTgWsvGo4Me6atcxkQ2QDg== X-Google-Smtp-Source: AGHT+IGj4pUNY527LNbrQYpNEH5IuUSjm8Ld9l2T6zD8Q/PzI+Wm7Jp3b1JOVJB4XF+D8vVf9wlO/OuBOs7f X-Received: by 2002:a05:6214:400d:b0:6f4:c603:588c with SMTP id 6a1803df08f44-6f4ff5f60cfmr21770926d6.7.1746053565642; Wed, 30 Apr 2025 15:52:45 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id 6a1803df08f44-6f4fe82291bsm1233686d6.69.2025.04.30.15.52.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Apr 2025 15:52:45 -0700 (PDT) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.7.70.37]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 06CE8340199; Wed, 30 Apr 2025 16:52:45 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 05136E41CC0; Wed, 30 Apr 2025 16:52:45 -0600 (MDT) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: Uday Shankar , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 6/9] ublk: factor out ublk_start_io() helper Date: Wed, 30 Apr 2025 16:52:31 -0600 Message-ID: <20250430225234.2676781-7-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250430225234.2676781-1-csander@purestorage.com> References: <20250430225234.2676781-1-csander@purestorage.com> 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" In preparation for calling it from outside ublk_dispatch_req(), factor out the code responsible for setting up an incoming ublk I/O request. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- drivers/block/ublk_drv.c | 54 +++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index dcde38b39a82..b4c64779c4fd 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -1150,17 +1150,45 @@ static inline void __ublk_abort_rq(struct ublk_queu= e *ubq, blk_mq_requeue_request(rq, false); else blk_mq_end_request(rq, BLK_STS_IOERR); } =20 +static bool ublk_start_io(const struct ublk_queue *ubq, struct request *re= q, + struct ublk_io *io) +{ + unsigned mapped_bytes =3D ublk_map_io(ubq, req, io); + + /* partially mapped, update io descriptor */ + if (unlikely(mapped_bytes !=3D blk_rq_bytes(req))) { + /* + * Nothing mapped, retry until we succeed. + * + * We may never succeed in mapping any bytes here because + * of OOM. TODO: reserve one buffer with single page pinned + * for providing forward progress guarantee. + */ + if (unlikely(!mapped_bytes)) { + blk_mq_requeue_request(req, false); + blk_mq_delay_kick_requeue_list(req->q, + UBLK_REQUEUE_DELAY_MS); + return false; + } + + ublk_get_iod(ubq, req->tag)->nr_sectors =3D + mapped_bytes >> 9; + } + + ublk_init_req_ref(ubq, req); + return true; +} + static void ublk_dispatch_req(struct ublk_queue *ubq, struct request *req, unsigned int issue_flags) { int tag =3D req->tag; struct ublk_io *io =3D &ubq->ios[tag]; - unsigned int mapped_bytes; =20 pr_devel("%s: complete: qid %d tag %d io_flags %x addr %llx\n", __func__, ubq->q_id, req->tag, io->flags, ublk_get_iod(ubq, req->tag)->addr); =20 @@ -1203,33 +1231,13 @@ static void ublk_dispatch_req(struct ublk_queue *ub= q, pr_devel("%s: update iod->addr: qid %d tag %d io_flags %x addr %llx\n", __func__, ubq->q_id, req->tag, io->flags, ublk_get_iod(ubq, req->tag)->addr); } =20 - mapped_bytes =3D ublk_map_io(ubq, req, io); - - /* partially mapped, update io descriptor */ - if (unlikely(mapped_bytes !=3D blk_rq_bytes(req))) { - /* - * Nothing mapped, retry until we succeed. - * - * We may never succeed in mapping any bytes here because - * of OOM. TODO: reserve one buffer with single page pinned - * for providing forward progress guarantee. - */ - if (unlikely(!mapped_bytes)) { - blk_mq_requeue_request(req, false); - blk_mq_delay_kick_requeue_list(req->q, - UBLK_REQUEUE_DELAY_MS); - return; - } - - ublk_get_iod(ubq, req->tag)->nr_sectors =3D - mapped_bytes >> 9; - } + if (!ublk_start_io(ubq, req, io)) + return; =20 - ublk_init_req_ref(ubq, req); ublk_complete_io_cmd(io, UBLK_IO_RES_OK, issue_flags); } =20 static void ublk_cmd_tw_cb(struct io_uring_cmd *cmd, unsigned int issue_flags) --=20 2.45.2 From nobody Sun Feb 8 07:15:01 2026 Received: from mail-yb1-f226.google.com (mail-yb1-f226.google.com [209.85.219.226]) (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 38A0A22A7ED for ; Wed, 30 Apr 2025 22:52:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.226 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053569; cv=none; b=vBk5Yx6LHF6LPDTlt9MIi141knlCbiP7fT+bIr6TzJr/nqwYHhiRZCbmEjW835S2XS9Xzl4YMCgsFuaOiFIDKMoxqYpsWLyDsBOUQ5lMiiK6AA5Gy/q1I0KuzjkYELvvvTY2/cZwvfyoZiXTcJTKp5IRIyJGj1l/6i6h48H560s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053569; c=relaxed/simple; bh=ChKMqf1RvETVsEvT5sJjmD/ZOdGzQDcoe+otqADHBU8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aTncpNMOOTknq/lXzFjeyMt6x4J0qEXvkRfePBCBSs+Cexpl7RL8MxWBhZGMc/6SYpuyc5kv8hnETdciA4oJ0Pqfss9c01cYo9SeTV4sy6DAV3R8PuKagcSfavjiLi/4hysIm7H4w9vOsj0Pv7HXu7SzAPjlyxjWlvD9cpZ2FoM= 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=C0LJ8Ecc; arc=none smtp.client-ip=209.85.219.226 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="C0LJ8Ecc" Received: by mail-yb1-f226.google.com with SMTP id 3f1490d57ef6-e7456415f1bso52067276.2 for ; Wed, 30 Apr 2025 15:52:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1746053566; x=1746658366; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QbYmq7hwdo4gr4HQcys5STyhEhXZt+ulzS0YWq0QdIk=; b=C0LJ8EccD2Poq25tpXS6PVYqgsVN+DezhiZRWuYoDe5vTFIYPAGNFuf248im1Ymipw UqsR//CKpDwAb0S3ZGbJHmBFp/pd/1iNKAY3obKrICwwBqyByDn7m1xcf8gVdUOrg9Mz VxfDWm3cuYFT99uV+1XLPpIadKntT6kaRxAhhSBeXSsRUKL76wKZbK9QK3hxNWbBb0iv Y+L20vmWQcNVwdZimIWypYwgPRf6X3hGf/h+dx3TU8jfOVNNeYnkODvrBkjgw5YmeuM2 AxdI4f5Hx4k9Gu3Kkv0C2S6eMrNDkeiYhj9cbPy7F4awI8PDUgGBeLPOX6R0bTkHVh03 BGzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746053566; x=1746658366; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QbYmq7hwdo4gr4HQcys5STyhEhXZt+ulzS0YWq0QdIk=; b=g8tm6KYzHmSHMOqVCooNN1dE/YofBuEjgVkrLnqNswg9115Woby980uY5yha/Y43gA fuk7s6fjlzBYWmugjIZmjA95qDjE3kOFDtZ9oYR659x77I/LzAkev4sDp3hcEMHhw8B6 aqs3BUXWumgEzIbNdSH2enLPDUBTkUF8xZnlIKllzx+iBw5club4VZfNsN94CFIWkn1s vCiqG4JFGBWPNSxhnMh6c3xrE7TaL/pvZ6q0eUnu/nmBd756jieNu686mcdQ2Sp4GTpm aQeYlsSxRUTmBqnVrUdIwCkewUMiiWvECWARNK2+4SstXbpKBTY1qrIRLRnUuyRK5bgh s2pw== X-Forwarded-Encrypted: i=1; AJvYcCXl9dPPGJaPQ2YKCeR11ncyeqchhs9K/OKGPtkyv8bchqVJGnxmQH0D+NfjJWpPMjfDNn0Ql9eAfT+xNyc=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+t2zgUml9/VK9IA+G/RRruRxEWMW+b+JCR8vNPn6imZHEM7yi l4+KXfxFp4NRMTECBve+Hao8VJW0l1BZdM1sSB/kAGzNZM+xZGQxld8Bs8wjm5duy0nCBkjBIv0 Upvr8CuPRPurDmnwLs4tYOJsImkWPZajk/1gOs/894BmOLf05 X-Gm-Gg: ASbGncsnxJRAtb+XJd2zPy2UgxuSxlpLDC8w5U0rHu23ahL2avoatPnXNfqlB3d79oT ukP6wbS+j4OXaaEOVfju5T5D0fkmf1QzIhz4tFzgo0DN3qXpexZQbRji+mS3R9sLGFDvLyuwDhO okGHxCw4YRqiwnLrosE66gmD1evQrlfRnJiB6O8nMqrPvxD5J6oHPvLSCyXOhz9d0o0TY/J96Va K+9U+cU+6DapBxK3b9ciIbWyk508Yvnk47LONIUMGoOMAYU4DMZyE2kZcFSF2JgPXjmrJBdk24/ uMFi3wKEkCqU1eQiyLtvZRfUZ/Wqpg== X-Google-Smtp-Source: AGHT+IHMBKUP30X+fnZBNuVVqGAC4YwFzK3I2dcrRyVeqHF4tNVp7j3CQOEw8CeZwATubLEilqG1IPN1+Z8g X-Received: by 2002:a05:690c:8:b0:6f2:9533:8fb6 with SMTP id 00721157ae682-708aee5bbc5mr24377497b3.1.1746053566013; Wed, 30 Apr 2025 15:52:46 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id 00721157ae682-708ae081eb2sm981707b3.42.2025.04.30.15.52.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Apr 2025 15:52:46 -0700 (PDT) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (unknown [IPv6:2620:125:9007:640:ffff::418a]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 7433634022D; Wed, 30 Apr 2025 16:52:45 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 727DCE41CC0; Wed, 30 Apr 2025 16:52:45 -0600 (MDT) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: Uday Shankar , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 7/9] ublk: don't call ublk_dispatch_req() for NEED_GET_DATA Date: Wed, 30 Apr 2025 16:52:32 -0600 Message-ID: <20250430225234.2676781-8-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250430225234.2676781-1-csander@purestorage.com> References: <20250430225234.2676781-1-csander@purestorage.com> 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" ublk_dispatch_req() currently handles 3 different cases: incoming ublk requests that don't need to wait for a data buffer, incoming requests that do need to wait for a buffer, and resuming those requests once the buffer is provided. But the call site that provides a data buffer (UBLK_IO_NEED_GET_DATA) is separate from those for incoming requests. So simplify the function by splitting the UBLK_IO_NEED_GET_DATA case into its own function ublk_get_data(). This avoids several redundant checks in the UBLK_IO_NEED_GET_DATA case, and streamlines the incoming request cases. Don't call ublk_fill_io_cmd() for UBLK_IO_NEED_GET_DATA, as it's no longer necessary to set io->cmd or the UBLK_IO_FLAG_ACTIVE flag for ublk_dispatch_req(). Since UBLK_IO_NEED_GET_DATA no longer relies on ublk_dispatch_req() calling io_uring_cmd_done(), return the UBLK_IO_RES_OK status directly from the ->uring_cmd() handler. If ublk_start_io() fails, don't complete the UBLK_IO_NEED_GET_DATA command, matching the existing behavior. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- drivers/block/ublk_drv.c | 51 +++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index b4c64779c4fd..483205a0dfe8 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -1210,29 +1210,16 @@ static void ublk_dispatch_req(struct ublk_queue *ub= q, /* * We have not handled UBLK_IO_NEED_GET_DATA command yet, * so immediately pass UBLK_IO_RES_NEED_GET_DATA to ublksrv * and notify it. */ - if (!(io->flags & UBLK_IO_FLAG_NEED_GET_DATA)) { - io->flags |=3D UBLK_IO_FLAG_NEED_GET_DATA; - pr_devel("%s: need get data. qid %d tag %d io_flags %x\n", - __func__, ubq->q_id, req->tag, io->flags); - ublk_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA, - issue_flags); - return; - } - /* - * We have handled UBLK_IO_NEED_GET_DATA command, - * so clear UBLK_IO_FLAG_NEED_GET_DATA now and just - * do the copy work. - */ - io->flags &=3D ~UBLK_IO_FLAG_NEED_GET_DATA; - /* update iod->addr because ublksrv may have passed a new io buffer */ - ublk_get_iod(ubq, req->tag)->addr =3D io->addr; - pr_devel("%s: update iod->addr: qid %d tag %d io_flags %x addr %llx\n", - __func__, ubq->q_id, req->tag, io->flags, - ublk_get_iod(ubq, req->tag)->addr); + io->flags |=3D UBLK_IO_FLAG_NEED_GET_DATA; + pr_devel("%s: need get data. qid %d tag %d io_flags %x\n", + __func__, ubq->q_id, req->tag, io->flags); + ublk_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA, + issue_flags); + return; } =20 if (!ublk_start_io(ubq, req, io)) return; =20 @@ -2043,10 +2030,28 @@ static int ublk_commit_and_fetch(const struct ublk_= queue *ubq, ublk_put_req_ref(ubq, req); =20 return 0; } =20 +static bool ublk_get_data(const struct ublk_queue *ubq, struct ublk_io *io, + struct request *req) +{ + /* + * We have handled UBLK_IO_NEED_GET_DATA command, + * so clear UBLK_IO_FLAG_NEED_GET_DATA now and just + * do the copy work. + */ + io->flags &=3D ~UBLK_IO_FLAG_NEED_GET_DATA; + /* update iod->addr because ublksrv may have passed a new io buffer */ + ublk_get_iod(ubq, req->tag)->addr =3D io->addr; + pr_devel("%s: update iod->addr: qid %d tag %d io_flags %x addr %llx\n", + __func__, ubq->q_id, req->tag, io->flags, + ublk_get_iod(ubq, req->tag)->addr); + + return ublk_start_io(ubq, req, io); +} + static int __ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags, const struct ublksrv_io_cmd *ub_cmd) { struct ublk_device *ub =3D cmd->file->private_data; @@ -2108,14 +2113,16 @@ static int __ublk_ch_uring_cmd(struct io_uring_cmd = *cmd, goto out; break; case UBLK_IO_NEED_GET_DATA: if (!(io->flags & UBLK_IO_FLAG_OWNED_BY_SRV)) goto out; - ublk_fill_io_cmd(io, cmd, ub_cmd->addr); + io->addr =3D ub_cmd->addr; req =3D blk_mq_tag_to_rq(ub->tag_set.tags[ub_cmd->q_id], tag); - ublk_dispatch_req(ubq, req, issue_flags); - return -EIOCBQUEUED; + if (!ublk_get_data(ubq, io, req)) + return -EIOCBQUEUED; + + return UBLK_IO_RES_OK; default: goto out; } ublk_prep_cancel(cmd, issue_flags, ubq, tag); return -EIOCBQUEUED; --=20 2.45.2 From nobody Sun Feb 8 07:15:01 2026 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 2CF1122A7E3 for ; Wed, 30 Apr 2025 22:52:46 +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=1746053569; cv=none; b=c382JyixVZgnoyrKqSFZSQMZk0jVn+aRKCujQPDiurkUWRCeWRujgdgrMjSg6HCv82HPdRNKG79Y6qy0YECnRkZiRm0vyesJDFk/45v79t8oSBmm+GQ66vesKOpZZiuXnzd75Je+hDcIOZyIhKYv5G+McOkVpaAUkDiOWqXClc0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053569; c=relaxed/simple; bh=1hyN+kc3XNgmfNwghwmkyi4ejxAW3PAW3imq8XmVVTo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Zip7qtvd4K978mAuHfTNc4TtuqTbm13mmEzY8C9O0PP5/OG4GvidAhMP4K9JbdWcIgQ2lbegqsdyDQC1GG4YZs4zL3Rm8M/hA/M64CKHYCqSOdyc2XcUermyC3xkapdXMFVCrCYgos07oXliIunDZGtMi9IVRBJ5RMvfbNxGCoU= 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=T7CcPZ/2; 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="T7CcPZ/2" Received: by mail-io1-f99.google.com with SMTP id ca18e2360f4ac-85b52d6e034so1904839f.1 for ; Wed, 30 Apr 2025 15:52:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1746053566; x=1746658366; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=R4iRqRYOY3v92ahJdyDMU1UlrSYDHa45zvlKwr5Fr/I=; b=T7CcPZ/2ts228nRdFvDdkZO36s4I8UonmMAw2w6StfAzbViM70cj7rkcNnemkZlvYr 0pFnP/bvy0bRzJFvz61DT5B7Gvp95281fEQd4NbOkdEJH+a/ELLc5qq03067UgqQG1U4 UDsFP8xUZ73Dj0zsaAQdVMIsihlv/6e1wndS0uSBU2IgadWo2DeEUc6M9ih2TdT66RDV 4VtbVAx/WAz4cpiB2noWGA83i7Utqn8cIn6oFuJouwoMTGFoKojLy4cYxcg34Fqq4v6W ODSvFMXRZ2lFmelxsbfOM6kxIqzl/D7g7oOYE3FtgSoKz4433rYDopq/Oh+EWdxQhHLW qhEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746053566; x=1746658366; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R4iRqRYOY3v92ahJdyDMU1UlrSYDHa45zvlKwr5Fr/I=; b=b8377YXpODbkUYtjVQ0vYWInAdhQqpxg/06C/H0nlJ/36XuMHZHEV7EaZt0JR55Ssy wJjJmlI+upEjC+1dLxzk8lzsfuNtkvWw5sJla5Dos3Z1XWhKEijmmmrAn32OcMehkFoh gJT6LWycUqi6IlLwlTAVT6IjwQ9xw/2pnPd1t2SK6zwR2T1TByABKD0vvdtHK6RhBill 4N/JMW6tzyh1uVNWRqGrTpFKQ0HXLlwI7xWqXrAiC7WsDRsyXawMZTwU46vwAEhKvIKU /vAMz45AgM//kLjXMAM3NPExf+Eale3es13h037PABmqLMNKray/vNIM/8jRm1AzbEL6 fjPQ== X-Forwarded-Encrypted: i=1; AJvYcCXnQsuraOXTXxaioERDPuec2QR5VrJ6BmsrNh3JXwOlGmmEzIovab3qB06kiuAfhAtSoT0QhDP3/SFfnZk=@vger.kernel.org X-Gm-Message-State: AOJu0Yz837u6atEHCeoVD2Lz9q8nXkuolUWjiYwzHhIBi9GbDrgVJ0Ab fRwIL3ON/MV2A4EsuXxdXPqzDmethZdwQSMSoAeP4efuzpVkk0cSfzmWYzQGJsr9XG6tMMHdXfQ 37Fhfo3oUrg/42ia4r3KjFm9k0W8q7j31 X-Gm-Gg: ASbGncs7BqnlQ69cxqdK5DtbC9irwqNU2swnkgXg0A3Q8ZSvIV2Y9SLTjNNEI572UKM byrQfrKsaC2RKV4Oe9t+LgK6JGxH4ENqhpW8UfThCmQ4quoSy/cJHkyGW/jyobH7FMydf2nvNSq qlZP+hQmmt9JYKGbrz80xSfMCG3iirecKm960hxxgmF7uQ6UJ/HptPNXr7LpGRyrqSuBbDmS54z xc5gTSgo8Kv7IHK0JNutyhCgHQTHVaGiYG0ycd220Dq8SmlAEJpJrsIScyvKd/zNHKcoFwktJ7Q gyKgWQgXIDDkbSIgy6Gs8CJqUXEfNeT5DUUAGWxHPy8G X-Google-Smtp-Source: AGHT+IH51L+NKmfS1JUzYUlNoJGB0g+pMOtYBRXXIJ6Yp8zTD3wqPafStBmoG8THnE72BpR1jjI2GQmmQL0b X-Received: by 2002:a05:6e02:1fcb:b0:3d9:2961:fa01 with SMTP id e9e14a558f8ab-3d9682a4f0dmr15322105ab.3.1746053566230; Wed, 30 Apr 2025 15:52:46 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.129]) by smtp-relay.gmail.com with ESMTPS id 8926c6da1cb9f-4f8630943besm318541173.57.2025.04.30.15.52.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Apr 2025 15:52:46 -0700 (PDT) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (unknown [IPv6:2620:125:9007:640:ffff::418a]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id DF96D340199; Wed, 30 Apr 2025 16:52:45 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id DDDF1E41CC0; Wed, 30 Apr 2025 16:52:45 -0600 (MDT) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: Uday Shankar , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 8/9] ublk: check UBLK_IO_FLAG_OWNED_BY_SRV in ublk_abort_queue() Date: Wed, 30 Apr 2025 16:52:33 -0600 Message-ID: <20250430225234.2676781-9-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250430225234.2676781-1-csander@purestorage.com> References: <20250430225234.2676781-1-csander@purestorage.com> 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" ublk_abort_queue() currently checks whether the UBLK_IO_FLAG_ACTIVE flag is cleared to tell whether to abort each ublk_io in the queue. But it's possible for a ublk_io to not be ACTIVE but also not have a request in flight, such as when no fetch request has yet been submitted for a tag or when a fetch request is cancelled. So ublk_abort_queue() must additionally check for an inflight request. Simplify this code by checking for UBLK_IO_FLAG_OWNED_BY_SRV instead, which indicates precisely whether a request is currently inflight. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- drivers/block/ublk_drv.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 483205a0dfe8..97c61c0bf964 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -1609,20 +1609,15 @@ static void ublk_abort_queue(struct ublk_device *ub= , struct ublk_queue *ubq) int i; =20 for (i =3D 0; i < ubq->q_depth; i++) { struct ublk_io *io =3D &ubq->ios[i]; =20 - if (!(io->flags & UBLK_IO_FLAG_ACTIVE)) { + if (io->flags & UBLK_IO_FLAG_OWNED_BY_SRV) { struct request *rq; =20 - /* - * Either we fail the request or ublk_rq_task_work_cb - * will do it - */ rq =3D blk_mq_tag_to_rq(ub->tag_set.tags[ubq->q_id], i); - if (rq && blk_mq_request_started(rq)) - __ublk_fail_req(ubq, io, rq); + __ublk_fail_req(ubq, io, rq); } } } =20 /* Must be called when queue is frozen */ --=20 2.45.2 From nobody Sun Feb 8 07:15:01 2026 Received: from mail-pl1-f228.google.com (mail-pl1-f228.google.com [209.85.214.228]) (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 CB3D022ACC6 for ; Wed, 30 Apr 2025 22:52:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.228 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053571; cv=none; b=ec6Oe6tE0JsLKuTLz4IXNvAzq58G+AYrfnMLeAJyYzK6nW7t4/jF0YlubNxfKoqjANeEN0UQWTcP7XIkDU73SuQlUH7ZOU3GmPa4OV5EoypRjhI4WXwsRGKzaXJdKnfTccAzZzcN2+KByBQp9qltt5bQC3JcX4Ugy6Ump4mlozU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746053571; c=relaxed/simple; bh=89WlQm8CBY5xlCR2ru9sVqkwi6VOCLX59mKkm7v5axI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PlVqCKnrWe+CUP/x2N+VsmKbJSVM+EuaKCKh3dU6H9pMtnWVvKPvHWb+3jrlvX5FQialPUgc8eWsJyvlwVtIO3ncwBfjuCnifZP299jyFnDADH9PQygA73ZzEiDL0yf+Nbjd1qlLS7e5ZlYNOvZ5joQ+gFFLsVxGEgXQT8VuzgM= 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=J7mWmOvK; arc=none smtp.client-ip=209.85.214.228 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="J7mWmOvK" Received: by mail-pl1-f228.google.com with SMTP id d9443c01a7336-2264aefc3b5so680215ad.0 for ; Wed, 30 Apr 2025 15:52:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1746053567; x=1746658367; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZsYRyiMQyE+zkojGTj1LMa02/pZHUAhJh8dpMcIQRlI=; b=J7mWmOvKkNDb0kPcuNh5jhrMnWG1erYhSWEy91k3gt/1UXfy6XVayCKikTA9rzCdRY G3uuaxeZ9O/dFOOt4HfX3jlRpHAYnhS52a9krhTDVlCz0sVTwHUv3l7AV1f30ny7l5L/ mZwaK54G7hmzfLjyZtV1egM+DRJoaGjq90mIZvuq/4PUhkqmiyKyhmGedegfwToSYRst ZWEK7uCi7oxBPBk8cXnGlCrzRs1+iC3pP40vWa/E2LRWYTJzAwIgmGq0fYNNFkadQiWS OeCFyUYsIYmXnwYH6VYizQ3vOxWOIWDf2aGngm/B50DzAgFNRLBKSs8c5z5dGsFy9rSt Zk/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746053567; x=1746658367; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZsYRyiMQyE+zkojGTj1LMa02/pZHUAhJh8dpMcIQRlI=; b=qLGXxHt8BP+BqwuJ3lZuvoqIekd9mcMUR9ArtzW0piohrZPUffzwH6MIW+KT3UExFC 1vCK0WUN1/uzuOxCAiuIZE0oWOSWFNTJKEaciF4dooJB2DF/miuOZ4QehynmulgEClFn eUQLy4gUdPQb69tBfcBgml3p+t3apKnOLKd7K7aZ7PfbKFgQVgogAabWJGb3+pv4LjSm ZZR9qnnJWZgw7p8UkaSobyNFxOUGLaOlSpVexibnBOI4Ch/puDJ2Pc5efS1aAPTwjEhm 87WMrgyH9K3kCLx/X4nhjgMaxFTeIWvo3YftDOw3rqdn5pSWsZGja235ko9qEnE85LBA P04g== X-Forwarded-Encrypted: i=1; AJvYcCUOupdpo4TyfPIuzd0jNpxRe0fCJfKtoT6hGp+6+ImOx89gKODKI4lnJyHh1eeQ36cIpEgr8L8xD1xxDSI=@vger.kernel.org X-Gm-Message-State: AOJu0Ywbp3nXyffA6I6di5jsRJ2XSnC5EcgH7VnPfiuz9jUsSDZxzMss XCCHe6n3lP7au+CGamZ7cguldcr5czxtDkKBYEdRKMBLcbS5FQOd2E5TYz81fm0qFUq5s96jN7E wgBeiNxroas24k3w8XW1RBx0I9l6D6LpL X-Gm-Gg: ASbGncv4q7a6owXcWCU44BRkM5REtstyLtO0DBGj3A/2ZfySedScqwc/XkDgj/XljS2 Lc1N4w7kYwmuNaZ45i1oKGnT/ayxHVWQqPdcZTQZtsKmXo3fqdIxF/WOJ0RT7v4yxRJenOuGW3y bd6uGxH7NBf6aZ3INUdGF1FMKTSl+vvHv8PXvTLpWH8jUXOcZ08FI6F3wz7dw07droxpJnkv2it /2L5xlVijgnPhg8JmPEn7RKnkexSLEkkXN4JxXTEP1aV/SQw+FksubFLw49iDyYjAZ+VXME4sXL IXOubTLu/g2FMYTQchCPBr3C6D8YyuwpwJ5pIZwyKW03 X-Google-Smtp-Source: AGHT+IH6mXEsIKFrxSQZ9fMY0JedlzXNtlt4kDzO3Sr7mcYc121+09EUGSS0UhV936K/s6EW8s7EP3aQ3K0h X-Received: by 2002:a17:90b:1b12:b0:2ff:7b41:c3cf with SMTP id 98e67ed59e1d1-30a34a77d45mr2329658a91.4.1746053567026; Wed, 30 Apr 2025 15:52:47 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.129]) by smtp-relay.gmail.com with ESMTPS id 98e67ed59e1d1-30a347b8603sm137430a91.13.2025.04.30.15.52.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Apr 2025 15:52:47 -0700 (PDT) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (unknown [IPv6:2620:125:9007:640:ffff::418a]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 560E53404FD; Wed, 30 Apr 2025 16:52:46 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 543F2E41CC0; Wed, 30 Apr 2025 16:52:46 -0600 (MDT) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: Uday Shankar , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 9/9] ublk: store request pointer in ublk_io Date: Wed, 30 Apr 2025 16:52:34 -0600 Message-ID: <20250430225234.2676781-10-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250430225234.2676781-1-csander@purestorage.com> References: <20250430225234.2676781-1-csander@purestorage.com> 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" A ublk_io is converted to a request in several places in the I/O path by using blk_mq_tag_to_rq() to look up the (qid, tag) on the ublk device's tagset. This involves a bunch of dereferences and a tag bounds check. To make this conversion cheaper, store the request pointer in ublk_io. Overlap this storage with the io_uring_cmd pointer. This is safe because the io_uring_cmd pointer is only valid if UBLK_IO_FLAG_ACTIVE is set on the ublk_io, the request pointer is valid if UBLK_IO_FLAG_OWNED_BY_SRV, and these flags are mutually exclusive. Suggested-by: Ming Lei Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- drivers/block/ublk_drv.c | 43 ++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 97c61c0bf964..02e52b066318 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -140,11 +140,16 @@ struct ublk_io { /* userspace buffer address from io cmd */ __u64 addr; unsigned int flags; int res; =20 - struct io_uring_cmd *cmd; + union { + /* valid if UBLK_IO_FLAG_ACTIVE is set */ + struct io_uring_cmd *cmd; + /* valid if UBLK_IO_FLAG_OWNED_BY_SRV is set */ + struct request *req; + }; }; =20 struct ublk_queue { int q_id; int q_depth; @@ -1122,24 +1127,29 @@ static void ublk_complete_rq(struct kref *ref) struct request *req =3D blk_mq_rq_from_pdu(data); =20 __ublk_complete_rq(req); } =20 -static void ublk_complete_io_cmd(struct ublk_io *io, int res, - unsigned issue_flags) +static void ublk_complete_io_cmd(struct ublk_io *io, struct request *req, + int res, unsigned issue_flags) { + /* read cmd first because req will overwrite it */ + struct io_uring_cmd *cmd =3D io->cmd; + /* mark this cmd owned by ublksrv */ io->flags |=3D UBLK_IO_FLAG_OWNED_BY_SRV; =20 /* * clear ACTIVE since we are done with this sqe/cmd slot * We can only accept io cmd in case of being not active. */ io->flags &=3D ~UBLK_IO_FLAG_ACTIVE; =20 + io->req =3D req; + /* tell ublksrv one io request is coming */ - io_uring_cmd_done(io->cmd, res, 0, issue_flags); + io_uring_cmd_done(cmd, res, 0, issue_flags); } =20 #define UBLK_REQUEUE_DELAY_MS 3 =20 static inline void __ublk_abort_rq(struct ublk_queue *ubq, @@ -1213,19 +1223,19 @@ static void ublk_dispatch_req(struct ublk_queue *ub= q, * and notify it. */ io->flags |=3D UBLK_IO_FLAG_NEED_GET_DATA; pr_devel("%s: need get data. qid %d tag %d io_flags %x\n", __func__, ubq->q_id, req->tag, io->flags); - ublk_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA, + ublk_complete_io_cmd(io, req, UBLK_IO_RES_NEED_GET_DATA, issue_flags); return; } =20 if (!ublk_start_io(ubq, req, io)) return; =20 - ublk_complete_io_cmd(io, UBLK_IO_RES_OK, issue_flags); + ublk_complete_io_cmd(io, req, UBLK_IO_RES_OK, issue_flags); } =20 static void ublk_cmd_tw_cb(struct io_uring_cmd *cmd, unsigned int issue_flags) { @@ -1609,16 +1619,12 @@ static void ublk_abort_queue(struct ublk_device *ub= , struct ublk_queue *ubq) int i; =20 for (i =3D 0; i < ubq->q_depth; i++) { struct ublk_io *io =3D &ubq->ios[i]; =20 - if (io->flags & UBLK_IO_FLAG_OWNED_BY_SRV) { - struct request *rq; - - rq =3D blk_mq_tag_to_rq(ub->tag_set.tags[ubq->q_id], i); - __ublk_fail_req(ubq, io, rq); - } + if (io->flags & UBLK_IO_FLAG_OWNED_BY_SRV) + __ublk_fail_req(ubq, io, io->req); } } =20 /* Must be called when queue is frozen */ static void ublk_mark_queue_canceling(struct ublk_queue *ubq) @@ -1988,16 +1994,16 @@ static int ublk_fetch(struct io_uring_cmd *cmd, str= uct ublk_queue *ubq, =20 static int ublk_commit_and_fetch(const struct ublk_queue *ubq, struct ublk_io *io, struct io_uring_cmd *cmd, const struct ublksrv_io_cmd *ub_cmd) { - struct blk_mq_tags *tags =3D ubq->dev->tag_set.tags[ub_cmd->q_id]; - struct request *req =3D blk_mq_tag_to_rq(tags, ub_cmd->tag); + struct request *req; =20 if (!(io->flags & UBLK_IO_FLAG_OWNED_BY_SRV)) return -EINVAL; =20 + req =3D io->req; if (ublk_need_map_io(ubq)) { /* * COMMIT_AND_FETCH_REQ has to provide IO buffer if * NEED GET DATA is not enabled or it is Read IO. */ @@ -2025,13 +2031,14 @@ static int ublk_commit_and_fetch(const struct ublk_= queue *ubq, ublk_put_req_ref(ubq, req); =20 return 0; } =20 -static bool ublk_get_data(const struct ublk_queue *ubq, struct ublk_io *io, - struct request *req) +static bool ublk_get_data(const struct ublk_queue *ubq, struct ublk_io *io) { + struct request *req =3D io->req; + /* * We have handled UBLK_IO_NEED_GET_DATA command, * so clear UBLK_IO_FLAG_NEED_GET_DATA now and just * do the copy work. */ @@ -2053,11 +2060,10 @@ static int __ublk_ch_uring_cmd(struct io_uring_cmd = *cmd, struct ublk_queue *ubq; struct ublk_io *io; u32 cmd_op =3D cmd->cmd_op; unsigned tag =3D ub_cmd->tag; int ret =3D -EINVAL; - struct request *req; =20 pr_devel("%s: received: cmd op %d queue %d tag %d result %d\n", __func__, cmd->cmd_op, ub_cmd->q_id, tag, ub_cmd->result); =20 @@ -2109,12 +2115,11 @@ static int __ublk_ch_uring_cmd(struct io_uring_cmd = *cmd, break; case UBLK_IO_NEED_GET_DATA: if (!(io->flags & UBLK_IO_FLAG_OWNED_BY_SRV)) goto out; io->addr =3D ub_cmd->addr; - req =3D blk_mq_tag_to_rq(ub->tag_set.tags[ub_cmd->q_id], tag); - if (!ublk_get_data(ubq, io, req)) + if (!ublk_get_data(ubq, io)) return -EIOCBQUEUED; =20 return UBLK_IO_RES_OK; default: goto out; --=20 2.45.2