From nobody Wed Feb 11 08:37:18 2026 Received: from mail-qt1-f227.google.com (mail-qt1-f227.google.com [209.85.160.227]) (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 86E95204F8B for ; Sun, 27 Apr 2025 04:58:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.227 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729897; cv=none; b=POjGrGdwUI1H5sb6uqQNIpZ9Psb5TKuugi3Ts9GyG9qLzI2woCXcu13zgWsezX1v7mKDujxzRq+IhG+VevZSDRF+CXipwprCYUsFL3fEekf6zFecNMTYfRV53VlGAtiCIxc6lenIQZO1f9VXa3UQJiLSzpZdU6aRbdQG3HX2R58= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729897; c=relaxed/simple; bh=yUtEHoQ4xRUN+TbTy6hSjbTUHM3GxPcNU0fnKHjGl9Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hJajTtIkr2z5VVMuUL7uG0NNaIKqXohXr2m9MdXqyAHEqXBgCLaALNg9h7kDEuKUKUNSfY/w0rNzmv7X+RwQn1Hay6+Oh+lgL7Xe58a4THemgDMRLH7+LRUNvrLrCAusZHLlaq8onLRI4HySCeK7SPQnrrkjUn2aIZ5TuLt4xWU= 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=QAw7ZRxM; arc=none smtp.client-ip=209.85.160.227 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="QAw7ZRxM" Received: by mail-qt1-f227.google.com with SMTP id d75a77b69052e-479009c951cso7958721cf.1 for ; Sat, 26 Apr 2025 21:58:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1745729893; x=1746334693; 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=QAw7ZRxMto8QLhZcy34XFfWuYE0tUK1EPD86J8xQfITnTMd+rs++Sx/PqnC1DASHJ9 ftQfwdisGpbT534WHmmnKAdaSr4n7jPOS9m5kk3rAKszdiZGV0ZO0/Ng/yAOb+y7JqOM BbC2eC7Ke2Cat/AXK8r2Hf/nSBGcq6tw1VfV10N2nx8YkyqPduY9dIRt70s6qAdnK/Ml a3XU5M1BpKXVFpmu59f9uQDIyvVdPm6/HhnssHTiJY+r2RVJBu+pFZ2Nt3ELZ7yeOzTb Bd8i9mRycho62iZxgmiyAKL7APPKdOmQC61dOMcPO8OlsFBMQRC9TMGKe9WwDNpIxszf krmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745729893; x=1746334693; 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=P3qkhgx5Tkmv272EURlQ+8AMfhzdWJiXfCs8p6YJc2WCc0UoX7xaIoGOKNxTaSQnAr 0JaE61XLFBkDgXurw/1wJkr36buf9w5yAgk0uwxbx/y1BMbs1qu1xabbKq3qIlronk8e +Wy1ArICz9WNbl/pPYdTAvVVtXOkzdvuzIOX6g/cdTr75evSnttxy2KbTrH/2PwOLJd9 ZjKJ5Pi6STJuCaHs/uM3NC0m51SVQ/sA3Vdf4EkyVS3z9isyWYA07gZ7a5/UjZQ2wey0 s3LsFCZK+if2lqlzlQMIQ6R3uND91ryS/oNQ+GZLKV3zSWhRf5yXEWoVLIx3ghcVRhF/ ZOag== X-Forwarded-Encrypted: i=1; AJvYcCXmOhwzsqOugGqARCwcW77+kpolgB4nOJa6ZREt/GwspvBAkBhftW+uWe+MrHtHQjlkVK5orrB4oC55qVw=@vger.kernel.org X-Gm-Message-State: AOJu0YxWkXou9ukNkkiLhygkCF91M65RVgb0/sBA3PGixowsU1Y73Egd ie2c9SbgvsK3NM9Qqm+XxxQSd3IbHpMkNBUeOwOKw1SXWIIFMIq6x61jheKteAbse6kNvPeHF5r XVwafUOBE7vsccZB/d3ipGYeP7WtlFHyj X-Gm-Gg: ASbGncu3LCPzjDUHJZ3Qyhgji0ja3MIHgI5zx6SLmMIwrG7jeyYpiBr4EyYyeA90x+6 eoz7/CQPWX/GNk33nUZMgAkb2Gj0TOrxosbAv4vGE8GuSNJmkkojUH/++gZI7hnVvlKU+iZgCq+ uoIewlX+bscYF2yD/lWcwZIhbKy5HR+3+t3YSciJeSCnI/Lrilg40iAmhTA/1s7ZON5WuQUJe0L VA+N0bNqjHD2ZBDD9PlHKCFGgMNk7oElJQXeTeLglSq5Q6miswu1GocHznHfJQm3Q1QYplNdplL vvoelGmjgiUnxdU/W54EGrMlzKsXLwU75nilaYEaDZaQ X-Google-Smtp-Source: AGHT+IFbmU0+uYKdB0O+dXgph6PFFwqJaJkTzK96k5Yeul7ne50UIQWiSXieMDTnqjHk7Y9MBlqrMkQ7h6G4 X-Received: by 2002:a05:622a:d6:b0:476:add4:d2b6 with SMTP id d75a77b69052e-4801c0d6e1dmr37890251cf.1.1745729893167; Sat, 26 Apr 2025 21:58:13 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.128]) by smtp-relay.gmail.com with ESMTPS id 6a1803df08f44-6f4c092c65csm6106396d6.24.2025.04.26.21.58.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Apr 2025 21:58:13 -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 7FE6334042F; Sat, 26 Apr 2025 22:58:12 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 7D4E1E40C3E; Sat, 26 Apr 2025 22:58:12 -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 1/8] ublk: factor out ublk_commit_and_fetch Date: Sat, 26 Apr 2025 22:57:56 -0600 Message-ID: <20250427045803.772972-2-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250427045803.772972-1-csander@purestorage.com> References: <20250427045803.772972-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 Wed Feb 11 08:37:18 2026 Received: from mail-qv1-f98.google.com (mail-qv1-f98.google.com [209.85.219.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 CA6BC2192F3 for ; Sun, 27 Apr 2025 04:58:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729896; cv=none; b=bj3rNZdXOkYOUF3xYMnboQ5ERH8CKZ6VgmH3O9K4/8InOrmL1jVg+Ltdydx9XaPSNIyjGCXthVFECtumjWniEntA5BAvb/afEuCwBSHqjiOyRZ877PnjX5JdtAAju1yWR9Rhin1XP31j6vy+gEIHvEhVPutjRuPhIQnYE+CWKtw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729896; c=relaxed/simple; bh=e0DW9foJVDShpIvls+GDptY3uu6gKpPgLM78CyCBh7k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=j6P1tmX74nN4VFD/4JABiZf4IKF3aEkCtJZ3dFUH0xXc/245tG2UUXOKC4bAdnVSwzgdFHhuF3skbHXGYG7pFuyac9PUDZC0/btUDvXjDccYDfJIdbFNXdeFHRGgroa4UGUe2uVINpRRsABssVzdrBC45jFPnW98cEEX3JzxiPU= 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=U7FClcDn; arc=none smtp.client-ip=209.85.219.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="U7FClcDn" Received: by mail-qv1-f98.google.com with SMTP id 6a1803df08f44-6e8fa2d467fso6659166d6.2 for ; Sat, 26 Apr 2025 21:58:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1745729893; x=1746334693; 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=Mls8bi9oXwbtGuyG/ERF8Q73E3QOMn+krLNxxr48tQY=; b=U7FClcDnb8B6o72+/92dMwHYikh4zKrozljZEkk5W6uN21OwEQ5WBzlvZ1V8BDgVH3 DNBnyVPB9klT5VLxYTT521ZaxK2Fr2AVnxCie83di6Y4UEW8GoVQaASw89k1Fz6WsnMP jNY6BcWwCH5dppfa4gENlYrhCX7/zFP31hU5pyjz+pxhF+xyxzA8N+z+gVfmOhUbq93Q f6eVX2fuWHui2Jsm4K71LsC8WRBbcfAdYrM2VEu9IOlrORdjGAs4lgO1OmoWyrxSuUPQ iKwf8OF3N4wyV6axinCRZy2m2EViAlVPgBB2btEShX29+zvLGGawn4cmf7DIXF3jrsQ0 568Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745729893; x=1746334693; 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=Mls8bi9oXwbtGuyG/ERF8Q73E3QOMn+krLNxxr48tQY=; b=Zee1xwt2vwwwo6bl/s18hA+pccUD/lxXK7TIvG7LxcAFFNnjm+d4BQAnFBlmVu3Gdf d0i/f45LD9vY6/O8XNb4MfXhPUB8D9BVFjd/efEOWZl8DYqlCpBW+CUyNhEHOIGg1JBS vqgCruW8wbKQ3p+OuG66BrL7IpJvSNFmxygSvtnJaKo+j/nLK/JNYNtF8RM/FvjcM0cl T9HZnUVzo4md+yWja9fZF+TCDwIv4plRsqRrMYOOMTg5XwdT63EYfdVkzdFjl0swWvSI ZVdXqhWluFXM4iiNqQVcycB844wOZjPf5azljZKmrB3oR1LLvMqGbZV4EiiGsj7h6GQO y/4g== X-Forwarded-Encrypted: i=1; AJvYcCXHA2Lw2osResRpZVZaDhxUE+IEwTKl20ZeYzwE7EYW4uLfbQOBI3mwdh+0kkj+OJfNus73CUtMriaf4eE=@vger.kernel.org X-Gm-Message-State: AOJu0Yztlk17W7d5ax/SioL/jB00L/9Iww2DXTXgPsqrpueq7WN65inx bsZ3gIe+B+3bZgFZcWVu0w51IsAN9Dw3uYoPFTD0t4Uw2FsQUVjFHZOeHSyChY9S7tiVQRLUZDF HzvMlPYsRFmXmmsEyEGQu/n0ry7+xdITtK+kHMYPnDJa8zusu X-Gm-Gg: ASbGncuCzkTONHD3siI8JwtCI4shBm5fT1FYvKWmuOqMQ2wTy3fcjELGuAZnvV2DLex IIkhGc7pSKvTTDJ86T0tTtrxR7cJ0cS7mtD1k3SqA1VttyApqzfXHIpGohcjI80HguBrx9y3gXr YlGvhBfu9bqsaEOvoS/5g0jqfDBp68b6gMaLjU7yqtul03PRegQ7XG9YRu0KjrARtTY3LxCs7wT JFJ8Nn5bWmsgNfWXNqZ35XIxWSJK+ipAGEgFfuDAY8IE2hGMJNfkQySrh52WcYQh8dGKfcInae1 OT5I1F8g1/UJoLSIYhS8ebmhVR75OQ== X-Google-Smtp-Source: AGHT+IHdNXBk1TNme4nkQxEWedva+R+7J2Qt1t7yuieBpvFMfs2uzzJQtHWXw+UwHKBEImovtWTlhJuV24zR X-Received: by 2002:a05:6214:301e:b0:6e8:9c91:227a with SMTP id 6a1803df08f44-6f4cb9217admr52468306d6.0.1745729893518; Sat, 26 Apr 2025 21:58:13 -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-6f4c0a84a54sm5828916d6.50.2025.04.26.21.58.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Apr 2025 21:58:13 -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 DBB8334031E; Sat, 26 Apr 2025 22:58:12 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id D965AE40C3E; Sat, 26 Apr 2025 22:58:12 -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 2/8] ublk: fix "immepdately" typo in comment Date: Sat, 26 Apr 2025 22:57:57 -0600 Message-ID: <20250427045803.772972-3-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250427045803.772972-1-csander@purestorage.com> References: <20250427045803.772972-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 Wed Feb 11 08:37:18 2026 Received: from mail-il1-f227.google.com (mail-il1-f227.google.com [209.85.166.227]) (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 CD3D022258B for ; Sun, 27 Apr 2025 04:58:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.227 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729896; cv=none; b=QdhMzUG59SGu1uKse0IvEa2dXcI5nWnmmQKymF4gqojXvqc33VPS/2sllf9le33q0yPiW1O3wQdAPTUBC16RZ+MkfnDPfLM7qDyDxakoYNDSd66lJBFXPa9E+MvXIljLP6c/uKhto+rAgkvh3p97bXV/11jLINFH/MoQnaYpZnY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729896; c=relaxed/simple; bh=gCtryARbd63GtwhGlpj7q+PNl0/S0Yitl78V0CxPUc4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UB3w+2Ko/27uUbYp4sJKDwJmQCf3C/i7mIacmn4g1JVJL/5qIgCNtN7pgFm3DpM5ngyJsVd854ns7Teq8ByPt0qeJRNMFY4zoEtJZXbEnLndwBrYSKYxPM5d9an/qaymYPPeVuyB6FvVOeUc6PoTy/xQXDYk3xS0Nz2yLCcG560= 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=QmbqHvan; arc=none smtp.client-ip=209.85.166.227 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="QmbqHvan" Received: by mail-il1-f227.google.com with SMTP id e9e14a558f8ab-3d8081a2f4cso1014445ab.3 for ; Sat, 26 Apr 2025 21:58:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1745729894; x=1746334694; 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=lKzTeZL1yXOr28Rks+lyXg8sYjXSH1fjcAG3Y1vo6AY=; b=QmbqHvanyxS3eTdHAxQP+FLCB7Izox/vkBNAmSefG4qs9qe0yapMFoUQAt11DuqwGf qkv0VObZ4nwRbeLeH7P6qAdJrHlOtk9Kpn612pgqWwXxgeL/eXRGhF8Q5KmtWFgcBiKJ ppBJr4AtuBDxysJca4i0CyPbLaauIXX2GCP1v+gT2l/AksZzfPJ8Cu4j4IXh1kmomTDZ 0BbRCuPNqEggIe5PtU022i5YLAhxGM6ucELjklcexOtBTGBDNpNTmtvsWALDN3aGAkZQ ciL913IDskM2USSMLdn4GUyTtr+LZUwdI/m4CxI9nkhqnMdbhYJYHXgxltMfU11172t0 0d9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745729894; x=1746334694; 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=lKzTeZL1yXOr28Rks+lyXg8sYjXSH1fjcAG3Y1vo6AY=; b=rBWWg5r8+r+toAezuB5fm9rtZBXH9MOnADZqvdbqCu9ZOC+KL2sdLL+kzMO91n0O8X XDIC5dxjNVsCpXcmjDj/kpepOgHUAAklx6IwLwENiCNmhXzT+ie1+Kn1Us5kv5zNg2zx atH0qk5F/tyPNUuquQ1mhbkXqf89dGh1HIed6M/8X/D7TndYcHWdJCn2x/IDPiZc8gM+ olwiNFsKtLEeEjkmLiFMg7KG35QRgV5PlD68IzGWHRJJnZ//xNpJHU+TDAC7a19EIwB1 pqIQYLI6I6GPZKgOPoG8UudbgnPWdIE/H4FrdDy4sBYZmyUGnMAqI+E3M0FYT1bIa3kp +iww== X-Forwarded-Encrypted: i=1; AJvYcCVkxhnn4ux2SpO7bNwiUI7YZnoJa4W8AZus3sUCRzgnzhtKBy+6i2QYgQnQltwuCnqEPHqybCvL4mz1W8I=@vger.kernel.org X-Gm-Message-State: AOJu0YysgrCkriB7fruODPYmZeJPenFD8N9WJasN7NAZ+K0hEM1mkUjI dmJ3NRD4zZq4PBdzs400SxIgJxkJqPa5gFsV7x4JJvZGlH6WWi7Ky8MiX52tt8Hz/Ef3mpp/EZu LkefLYkcF7KdtNv6IZo7OvadkfJqq4ux9QV/3t1EEw+u2zNSV X-Gm-Gg: ASbGncupO9w0vNPVFDcd83m9sj/0QtaDWHjIThu2xfs6DiA5rgMuIKbOkctskVeZhlb 5QKyIMOZ2j4KTwijgKKCAxBNcWLpQNNd74/pUgXgWoW5qXcL87443akqQDQZOyEnz/gC/7vT36B aYNhPC2wA4z7H28wHOwi2CKgQzxTCP8VhjYb44RijqrccU1ZNqGisSg5X6U8S/vvnsZdwjKGU5D PYrxoZrWzxNh7kqssbyG20F9vutpB1L1HMEBdCdCBXE16pGFXA0CkImX9U7S58QenbiX19PCoGB EW24/jtNJ9P2zFlVLxHC3SCF8M92Lg== X-Google-Smtp-Source: AGHT+IGlDXcQpM69Ulfyz4NaIIkNHSS1Fqz6L555JNy5K4KbBjL1kXGpZJ0lk5+vRmRUrzFQ0hIPo19D30F2 X-Received: by 2002:a05:6e02:1c24:b0:3d3:d13b:4de3 with SMTP id e9e14a558f8ab-3d93b634e9bmr18463165ab.5.1745729893840; Sat, 26 Apr 2025 21:58:13 -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 8926c6da1cb9f-4f824a850f3sm524480173.43.2025.04.26.21.58.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Apr 2025 21:58:13 -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 37DF93404B9; Sat, 26 Apr 2025 22:58:13 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 35AF9E40C3E; Sat, 26 Apr 2025 22:58:13 -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 3/8] ublk: remove misleading "ubq" in "ubq_complete_io_cmd()" Date: Sat, 26 Apr 2025 22:57:58 -0600 Message-ID: <20250427045803.772972-4-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250427045803.772972-1-csander@purestorage.com> References: <20250427045803.772972-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 Wed Feb 11 08:37:18 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 DB11C226CE5 for ; Sun, 27 Apr 2025 04:58:15 +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=1745729897; cv=none; b=XbrNwPl7BqBKZ5KAW8jc7xTJDe8e2fJfg8GhGqwcxsE/DSP3yk8TLgL/AdoC6MNjWjLDJO45c2vNLeBWIJQ/+xjASFJoFedwH3nTpfSoRpKxQ9RiTfVNi4hmMo5+X8G5K0vpeQNGX2HzgTYa00E43ISD4XhY1fXpPgpK9rU7kJ8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729897; c=relaxed/simple; bh=NUn9SVb+MfY5dmkHh3fBVg0g26DzHRJ0u156ZDbCEB0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ld/psgC1zDmVFsu1jfs2d5oIEC4idbcZd+Z3MdggL2wT5iv5rEe89TJ/+EwhMpDz1oDf8e1awmi6yxEKRclrrKremkuvVxIgCa3InLvUsjSaPkeh3+lTqdxP7NxnJ5il6amqHTsnEgThl3oIYrEB2Itzf+bnE8Os6KYGUEklzmg= 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=KRvV6mWF; 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="KRvV6mWF" Received: by mail-qv1-f100.google.com with SMTP id 6a1803df08f44-6e8fa1f99a6so5495486d6.3 for ; Sat, 26 Apr 2025 21:58:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1745729894; x=1746334694; 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=3+5Yd+HilBazEXqtS76hks4RkYeuhgaTEWRoHSLa00A=; b=KRvV6mWF/aMmDXo/Y0LPTVWAJnsPDoD4OZFAAUqEc/SJrjJPP7CQOkC9Ng1qObsgC1 IwV9mOeoml7qcjUX5G3TpjSeN/SxbjgKA0bSuJDrUN/oIB7/7UTTspkjiZUUPJo/ee5M 1pT1SB6bV3jDk5OTGPL81AETyS9BYIQ1z+NZuY+Bf5AR89qtcIiceS4kPQSPD8HUfTRq 9nZ+WuYNgNNqoTfHtKzHWYrX4sC4LrXslscJ3dQ2/JyKdXgabA+xgYZNef9XKKNefvyN rOxx4e8ArxkRAMwZYBt916dqt959GBbcKpSVxp/SrZoOAM9hZReQIiIp+MkuZ0C6WA2b Qoew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745729894; x=1746334694; 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=3+5Yd+HilBazEXqtS76hks4RkYeuhgaTEWRoHSLa00A=; b=vMWQbBtBpljZeoLLhriUPI3VvmPx/10AHZ4mlp5Mvo0i60buNRggZRDMC/whFb7Byq Vp64OXpYreG5/3j5Pi+qxv019yrCVMQKNQr/qJr7lKwYZrzxzZObDJD9jYBaXnKKWgqT wFaqbEIAhwR/FJ4+IZsacApeHJI4H2MQwuuG09iwHw0aASs9RntiyoPRyX/fRGC4RGuD CUljkU+j9CdGGxV4pncfTR6o4h9BE4qz6PbMDoTk4Ac1saZMYzwZnGtzMqKOSqLL5Ss2 g0BseZVhOE3dsBNiDarnNCZOpJOqItek/5WsR2gTxgHGMbB2+cpKaVr/NBBaSBDaEHMm nDxg== X-Forwarded-Encrypted: i=1; AJvYcCXs7d7yIV7uBLmn0iyDj6aoIeoHzNeWQebd/ia26MPmRMJYiY0BtHHFE3Pjx05oSU8HXcGcicnVagh/2qM=@vger.kernel.org X-Gm-Message-State: AOJu0Yx6PtI+7mGouKPJIZkYQCdj0ZUj/XVhWCm5BFPI5jJnJqhuWHiN t5gsxb8R8Oou88vh8L+FviFCA5ZtLQr4ozt+l8zOBbHV4f9kglr6JivQfLNGr4q6s98fD3FlnIf PCH7I8NNyO931B5RwubC5eFcMfFmTU/Ne X-Gm-Gg: ASbGncte+isXhnaOAI0PNtmDJmnmWs50lWmiV7Y2s9NLSa03bge+DANuUZj0qTnyDuY +9kRGFvteFtIEiYYmlYx2ZDZZswKvqPKLi0LQZe+xy5wDeXXK8xg+Bf3eyG8cqh31DJOu/gUcEp qdD1x3cMcMxYi6Udq/mHraVAhgw3+xwI9qmDMIKhMDZ7LccjvwJDE/LKZvdot60piKwDNI4fMm/ FIBfYV2PAMdT+gW1AlaL0EBU4wB1FD5GFsWouga5Z6n0n/FUjYYpfqfRLWM+trIOUlNJGtympaz Ha9EJRVavG6mn8JX7ycuyB01k120RQuHG17PJyohwCul X-Google-Smtp-Source: AGHT+IH0phaIAkFYXXMRFvPg6N27jqz6RX1/nP+p9VaX+8zHkdFDK5BtLmogDwAIYmOxVq8f5tI7lOYY1Vwq X-Received: by 2002:a05:6214:2424:b0:6f2:af37:d877 with SMTP id 6a1803df08f44-6f4cb9d0096mr54637936d6.3.1745729894113; Sat, 26 Apr 2025 21:58:14 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.129]) by smtp-relay.gmail.com with ESMTPS id 6a1803df08f44-6f4c092c65csm6106456d6.24.2025.04.26.21.58.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Apr 2025 21:58:14 -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 7D9F434042F; Sat, 26 Apr 2025 22:58:13 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 7B8B8E40C3E; Sat, 26 Apr 2025 22:58:13 -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 4/8] ublk: don't log uring_cmd cmd_op in ublk_dispatch_req() Date: Sat, 26 Apr 2025 22:57:59 -0600 Message-ID: <20250427045803.772972-5-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250427045803.772972-1-csander@purestorage.com> References: <20250427045803.772972-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 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 4967a5d72029..01fc92051754 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -1159,12 +1159,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: * @@ -1185,13 +1185,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; } /* @@ -1200,12 +1199,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 Wed Feb 11 08:37:18 2026 Received: from mail-yw1-f228.google.com (mail-yw1-f228.google.com [209.85.128.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 C0478224B0F for ; Sun, 27 Apr 2025 04:58:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.228 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729897; cv=none; b=mJBKlDkN0GBYUImtRKkQPnxM6k/SkUA9Mrp6fM/FQGLD2e3qPR80o7ppdu8k91HjyXnRgFPe6S+V8EI1M+nDdF+kIkpWQZ7X8hHx4ZQC3LEJ/Teh7uPA/1ADSfwlOgRdEymnSgZ24EByGeCnZzHLxZ4UyLYr0sHM4zpiJsPmvVU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729897; c=relaxed/simple; bh=fSrQ31TL4AzH+H4LIKFWmsSEyKGj0KbMd3Gx1whPjEE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lkB/VKM8ZY0EAiT/dU1SRT6iC2qw0wkkiJVyjX67H/vG4Hn3aneoGu9Nj60bhQL9+Y9HUvsDbjoNee7brVypmLmtoOGuAWvEYlyN5IlzP7wXRL3BzLbRvkFIW8+r6Av1oZmqYxx2jFme08uHs73eDixj880AnYXj3zYYQUcJo38= 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=cveZO39r; arc=none smtp.client-ip=209.85.128.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="cveZO39r" Received: by mail-yw1-f228.google.com with SMTP id 00721157ae682-6ef5ae6e7ddso1482337b3.2 for ; Sat, 26 Apr 2025 21:58:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1745729894; x=1746334694; 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=MPoBc+TiZg4nB9SBpZLnvMYWJGBPtb5HEuBhiraNEis=; b=cveZO39rcoLAyct0uM0Vs83cdLZJjkuZaO9crTlD1Uyts8c1YuWMZ8ObNkGd6XtcLe R7BHUEp1csNTeVl5WC4YZf1ITpN1M19RNcMNM/E4rXP0gZODkHO4rQAxYQE6MzZYHxzM 67Sc9ZgDll/ttl2ueHOj0bxzvB7kqIce/cNYhVHm8OU6XMXd4XeDUyztQC5UiqS3L78/ QPYOSfmqKJEqbED2oRJahqiFJEInXEE1G0o1DuPhDFp7DR1ZAfX2AT5RmrUvvIP0iRkh 2J1z4HFpRSX5NVyYWxalbLe9yIRXPn8ZrE8tS2kw9nOUrvHmZqOGV+0uPxh/uC9Z1fn2 XESQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745729894; x=1746334694; 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=MPoBc+TiZg4nB9SBpZLnvMYWJGBPtb5HEuBhiraNEis=; b=th7iAb0t0pCpawFXZgM+inRErYLNxdAYuiuYGUOTXqc9T5NhtPLxP20L9//DslYCWP dikbXZYhOw0OZOtXZbXbY5LXPtcNlFUb/H9lKYcMH6Bskdi5yFh5aOquvyhe0wZVPdLf FSanndfZlnOh5ss/N0gfUoRF36scLoU2OIzj1iASAr99R2UqemNzLCaE8WP/9NEyWXjf RU+Drt3O/Ee1QXAR8Mk/oaZbJGUtQShCaYt9CfYKV6EOYfnJ4+1lT2JxSEw3vSVC6pt+ OVC+K3mU6ZYU0u3dllFdqBgdk7Vh9mqsndk4nP6qe2SapKV+soFHWYYGslMD+Qpj0X1r lQFA== X-Forwarded-Encrypted: i=1; AJvYcCX61DwG1sPxrSI9XVTuNmW5huDeV3fPTPCredXEGyKcY44olyS4crcnXs7/7EUFYOu2Z4XyLWp6EhpyrEk=@vger.kernel.org X-Gm-Message-State: AOJu0YxLkNZe6rZwSziQOJiJGAVQxuZoXFHKzaJBuVOOUZW9m4E1m+WD snRaORdOI89g3IjwM3O9OcJORzC+rSy0+9ufIgCVP6Gnu29rKvGU/rjVp9b1AquT64kHugCMzl6 xz8K3yExJcOHpEZlEkD86BauQLW364ixN X-Gm-Gg: ASbGncvmCRzLT+4G1W+E57SMwSts+w/GQwaCawjFF1sezBj2zf5qTNDtwjVekH2ORbw tm8gc7LX9+xMPUE1+GPaksQklnzNQjWqg4q/Xd5NNLY6+c4su9uXfwYrJow7DFLoPcEkTEJH2/N riIhTF16sgxOC6Y3t+JzXwQqxblGjc6yGf0yPNol/FTUmjsxqXWqAiMAHRQh2vhLkatMaRR4e3H Dvql4Z8uMVz+9QjGbJuoWiCs9wc9muVj7C3vuL/ejeqissAaKXFOrZfp5IGq8x6hMdGNP0/Y4yY bIKrEo7a67WXm3H4AvxGyE7vcgrKnWhHRaPoykpVqL8D X-Google-Smtp-Source: AGHT+IHPx4oUP4OgdRQho0yiWF6/WSdZRd1uXdseJU2Ldj7lWavP3/uk4w2qTSfcD83l8uIyadV4gzE1i8+1 X-Received: by 2002:a05:690c:d90:b0:6f2:851e:7c82 with SMTP id 00721157ae682-70854225a19mr49563997b3.8.1745729894626; Sat, 26 Apr 2025 21:58:14 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.129]) by smtp-relay.gmail.com with ESMTPS id 00721157ae682-708417e4bf4sm4174637b3.0.2025.04.26.21.58.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Apr 2025 21:58:14 -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 CC8B534031E; Sat, 26 Apr 2025 22:58:13 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id CA77DE40C3E; Sat, 26 Apr 2025 22:58:13 -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 5/8] ublk: factor out ublk_start_io() helper Date: Sat, 26 Apr 2025 22:58:00 -0600 Message-ID: <20250427045803.772972-6-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250427045803.772972-1-csander@purestorage.com> References: <20250427045803.772972-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 --- drivers/block/ublk_drv.c | 53 ++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 01fc92051754..90a38a82f8cc 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -1151,17 +1151,44 @@ 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 void ublk_start_io(struct ublk_queue *ubq, struct request *req, + 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; + } + + ublk_get_iod(ubq, req->tag)->nr_sectors =3D + mapped_bytes >> 9; + } + + ublk_init_req_ref(ubq, req); +} + 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 @@ -1204,33 +1231,11 @@ 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; - } - - ublk_init_req_ref(ubq, req); + ublk_start_io(ubq, req, io); 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 Wed Feb 11 08:37:18 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 D943222687B for ; Sun, 27 Apr 2025 04:58:15 +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=1745729898; cv=none; b=p11SqWMBLO3wBv0puQZcuHXnN0C1uyE8lDgUgWeSPGC+6oHaxUJnjUkbzqXaQBqUu3eL5yZ6NA+jtd9qek/xJTIGZGsAfFSPRGpE4+PW5GTfWdVtvf0DQTDOY8Gq0AvhhoJuPEk2+klIIFNcMePfZcQIrRBqm9KvSE4j8yWPt7Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729898; c=relaxed/simple; bh=7L5+zOpF8ahe7cs/hC3e96qjy87KxJTWWpkYIDExmZU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OPs6m6llcvZsqS0kBwF1A0rkVdsX3vSrpGqAVirH7uxfANtUfEnFX5QtRpPe7Sz2zn395FyabcDt93n1Wt+yrIiY0VKQXm4PgLPdiCKYk7Mj2aptVauxGx3ar3DQ7lTVqHTbXF5HgtK6JAWcXdMk10vlwhofBqxuGad6i7Nfh/Q= 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=Q+19wonE; 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="Q+19wonE" Received: by mail-qv1-f100.google.com with SMTP id 6a1803df08f44-6eeceb05894so7669936d6.0 for ; Sat, 26 Apr 2025 21:58:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1745729895; x=1746334695; 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=ihW8bbWdzMKn2j2SpPS0FZj6fcM4rGVPgEUGPjWkNzs=; b=Q+19wonEfzStnXKykeU1kjFr5Rrzbb3p0eyAsdCPmizls1oQoVjMwlIisqp0JQ7wQl naGMgtxxx//vdrD/2lMBXLRA/sjD38Zo7qvjn+YPOBQiYBl5/eTIlhjiEVZzS3rxwXn1 pzhyiXMumM9DJ1Tv26BDC1v8Zqw3H9LbfVMk7CTME/HjG8r+smrJFJa1t+nI++fGI2zk 57xpqnELN9j05Uw2SIaKzyKkGzpdfV4Bsw9lGTnu+of4dPjQqG2wlTPg1ZLw97yTaezg PBC2Z6VqJQoGiX5t2CBMlZ06GogT7y1mRC4fUD9tJ96TtS7x81GQlww7K6k6i267j7xA 1h6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745729895; x=1746334695; 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=ihW8bbWdzMKn2j2SpPS0FZj6fcM4rGVPgEUGPjWkNzs=; b=CsLxQoKMf+f3W5gV5nfwKSa0wJ+rMHIeYcTmU5wzYJTZRYYNHiGMH7go8sON58Xmhu 0Oa6SEyyi2yV8+M3B0Jxp4uIIMF5aLA+mm4l+tDo5EuIYHMCuRly97UE4Kdboy/dVWZ8 y6OdhBN51dCV3/fyUu3rxa6a+1cUS40pALTXVhNCmP7KxyFOMv2XEpVFCSO3BST6ccrK 7ah5Vgh++XlKGAbyiadj3lo+Vay8EYS6Ff4CJZACQv2K46TXfadpEHF1etIv/9vzsHvi nRTHp4cBkHnPJTPG0n1wRkrI0X9N0iz2B5cjBIodFR7brisxSAMQJy2Gk0DbfeuMUG/E Z0rQ== X-Forwarded-Encrypted: i=1; AJvYcCX1i+kjumLUfEC4zR8v8lGAf0YybGwThKdC8WQK1TEKJtKY/icHfulrddxiQFGRMuIWVqTHlGhsfKAbDX0=@vger.kernel.org X-Gm-Message-State: AOJu0YygYcMozdGVSqWQt0NINqti7Qf2E6wKvcjnyOdQSSgIZgCBgZ+i na98o/g0QmtH2EevgVXCnrd3eK+ui3va8QGxKYE3cXAooSV0c+uuIRwqTg/09yROK06oWGcixN1 9CV3fQ+Z1jMgLsJb8zW0cZOt3oFuQMN81 X-Gm-Gg: ASbGnctIN63EvUPM2s1JxAbZ7H1nVO5toRgECFCN+bzmcRe6i0Y6DqKiV9NiZTt6bUc 70crI2yw0WkbkkjxNfnSaGPAmVAi9p5bgz0zXeLE8kUhu9ReuuXT+9f+1Xy22/+ilagPgPzMxaS xTSoqglVh8i6poesuanZKAB2hpHIIMknaZ4V847iOP7hTFVLeHXefpfcgF7KQ8uOtrBiDq3qodU tUhoC4wBp41khCQCmyPXqd2YVGzDzMJf9gVbk4+HeBbBrNOZcfD4I6SmMckAuXu6I9GsMvbJNc7 sCv/rSCKfkK/uW5hEEvdGubSCmfc3OyttD5GMxrpd1wk X-Google-Smtp-Source: AGHT+IEcHXZpNwQzJPScf/UiavXlm9oxOiVccKkhku6M+O9Mj2bwyHSSUuB0a+9hiBCymV60jlk0S7I8nWKA X-Received: by 2002:a05:6214:27ec:b0:6d8:ae2c:5053 with SMTP id 6a1803df08f44-6f4cba5f634mr44134706d6.9.1745729894678; Sat, 26 Apr 2025 21:58:14 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.128]) by smtp-relay.gmail.com with ESMTPS id 6a1803df08f44-6f4c0963980sm5971356d6.40.2025.04.26.21.58.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Apr 2025 21:58:14 -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 1353C3404B9; Sat, 26 Apr 2025 22:58:14 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 11418E40C3E; Sat, 26 Apr 2025 22:58:14 -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 6/8] ublk: don't call ublk_dispatch_req() for NEED_GET_DATA Date: Sat, 26 Apr 2025 22:58:01 -0600 Message-ID: <20250427045803.772972-7-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250427045803.772972-1-csander@purestorage.com> References: <20250427045803.772972-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. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- drivers/block/ublk_drv.c | 49 ++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 90a38a82f8cc..ea63cee1786e 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 ublk_start_io(ubq, req, io); ublk_complete_io_cmd(io, UBLK_IO_RES_OK, issue_flags); } @@ -2041,10 +2028,28 @@ static int ublk_commit_and_fetch(const struct ublk_= queue *ubq, ublk_put_req_ref(ubq, req); =20 return 0; } =20 +static void ublk_get_data(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); + + 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; @@ -2106,14 +2111,14 @@ 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; + ublk_get_data(ubq, io, req); + return UBLK_IO_RES_OK; default: goto out; } ublk_prep_cancel(cmd, issue_flags, ubq, tag); return -EIOCBQUEUED; --=20 2.45.2 From nobody Wed Feb 11 08:37:18 2026 Received: from mail-io1-f97.google.com (mail-io1-f97.google.com [209.85.166.97]) (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 CA13A2253BB for ; Sun, 27 Apr 2025 04:58:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.97 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729897; cv=none; b=R6TzTuon2GxnjR0qoG/h8g5l1xgHqCWV8ds3yjKyVFg3iMtxs0Hsup9qG3XSGC/BNeBGW4ewxJcCLZBq9xGt+RWpKcdtTxDSlJ5/mTpq7OGALq/Wz3cfMa9WbP5FRjZRsl2N2vCRSZ6f6tMaeYf/MrKU7OnumGFn1lRpP+d/Tv4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729897; c=relaxed/simple; bh=oIBkaOzmzRNKwMu0Zka0IvPrQeilzVPo9yAnvSXcDVo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qqbwkOrjYXuT4Vij0WwXnCDmUT1d4uJq9J7b+FcS4wR6FAfAkF96cvAfoy1zokyjUh2QMmHH6Y+jP6uuo9x3VU3pIfk13MV0ZCauqee44TNoqTocSfL3tceS2x7uBqxNJ7KdR7Kn8iKmo6TUpOey3XmHF1qz12e/r7VMl8NdtjU= 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=gaVFXBzz; arc=none smtp.client-ip=209.85.166.97 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="gaVFXBzz" Received: by mail-io1-f97.google.com with SMTP id ca18e2360f4ac-85eb6cd4dc6so7089939f.0 for ; Sat, 26 Apr 2025 21:58:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1745729895; x=1746334695; 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=ojx7jbcUbWv7jMLWA0u2cWOta66QExx1ehN488w0QZ0=; b=gaVFXBzzw6eRWHTeR4Pmg/F+63ka7z+xyHfZqT/bg5ia+c/4aDBqsaZ0G5PagkaC3k 6jgISxOnDQXTIcAAVZ85IxmC94YaRCfDqBnNWGS4u/1V16FvPuQlHJ13hmnC4upmZubH VBcvRkMv0AEh4uyym4bGA4xXlb/6e88b6+SU6OuQfm1GQN/YQkbXD3HoXWXHsZS7r2MO dYbkCAVlvqedhnbv+GJlg4aPrBCmQkzfImb3+hx0QMFA0zTOq401i2e02cAhzI8z6Bqp Iicfcp2CJg5Dze5OVghB4NpOigMCLqtzHPqUljVcBLNhhDnizxUr2oQeQQf4Ag1QtL+E WGKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745729895; x=1746334695; 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=ojx7jbcUbWv7jMLWA0u2cWOta66QExx1ehN488w0QZ0=; b=ebjREX0rTP0c45VjA4W0ovmUJXY9q9hS7pPm+gCa0LomezDlTGxZONbVf7z3+HGlcz W9Uo0V8biLKoR9I8lo7Ssbotw/DHUfouRmNR5b/x82AboRSprIZ7nJjp7ts6/+uXB04z j8xJ7yYlOSugrhONY6CIT7MzmExJOtpbu1Amcwrha8dm8rmDE0kQxfM+25A/+YB5nrVq tCrttfdAFE7Blc3jWvPHfkMmWl8+YPb/erxPj4VTI0hARuL/5dsAMl+hTBeGxLvCcoRO bgQZoT41RvPqZXjpqZmQZkFFEs8YwlhDo5IOPdev+k05j+BeKasXyfr/n9m2p5NaAzL+ B/XA== X-Forwarded-Encrypted: i=1; AJvYcCX7iKIv/tdxWDidCuu7Z7usNSxHg3nZDONMbh9Fdvqe+P2JszzdkAqqbwmcRAnqB/cdAnjzry40XyiUCd8=@vger.kernel.org X-Gm-Message-State: AOJu0YzOxOPRQHN0F4ET2rHntwpr7vchy5VdCWloU8WpRoVqkqDzSeOB jDrTMorPSufeC4ma+B4LU3dsuSdHbSnZP/DWIH5jIdmxdOAaCDU5vkNyNIxVfpf+q5dFiN7aBdU gzlwuehSKvFEr6+P62jZvXZ7PGJRpg2wX X-Gm-Gg: ASbGncslFDPgsrWCH/pWNf3kF8qTa6bkJZhCxip9/yxXbYwVwWU5UYffnUlLE8eM470 kk7/dc3zGZ2hY85uhFA1QbxJpZzAzW7QMWww/PZ9ULJSAdevpw0kYH47d2YLGfQNrE7zz5lJH+w gxwyXil0jcDoMll6crso1+p3HmwrfZhVtiFlAWGh3/UsuIdm/Srm174AzBZnjsKJS7LNmpAF89p JmT9OvQ7RRz/oiqCQTsY+EQVF2jiR/qVvICq9+VKCqjxz4TQNMIGmrnDhbCXGip0PTlbo1PD6qC KvADwEU8U1xMIxnjhywVQeByF+FV/5h1fEGDLqKTdBjX X-Google-Smtp-Source: AGHT+IHr4dhZ0gpkBaBAMcMjWm8ybAuIo3pPId6du74z65ESO+VJ5lRn6HigPxkY/wHyOmIw19BpuIFs0xJI X-Received: by 2002:a05:6602:29ce:b0:855:d60d:1104 with SMTP id ca18e2360f4ac-8645cca3116mr219773839f.2.1745729894985; Sat, 26 Apr 2025 21:58:14 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.128]) by smtp-relay.gmail.com with ESMTPS id ca18e2360f4ac-864518f02b4sm47300839f.11.2025.04.26.21.58.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Apr 2025 21:58:14 -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 5A1A534042F; Sat, 26 Apr 2025 22:58:14 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 57A97E40C3E; Sat, 26 Apr 2025 22:58:14 -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 7/8] ublk: check UBLK_IO_FLAG_OWNED_BY_SRV in ublk_abort_queue() Date: Sat, 26 Apr 2025 22:58:02 -0600 Message-ID: <20250427045803.772972-8-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250427045803.772972-1-csander@purestorage.com> References: <20250427045803.772972-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 ea63cee1786e..2296fa677d0d 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -1607,20 +1607,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 Wed Feb 11 08:37:18 2026 Received: from mail-vk1-f228.google.com (mail-vk1-f228.google.com [209.85.221.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 F420A228CB0 for ; Sun, 27 Apr 2025 04:58:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.228 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729899; cv=none; b=W0eko2g4V4j+OouYg6IxfXarb/st9GhMv2441cKpV0oeLaT/T2IsYiC03anblWhDSI5a4p0rR75p6w49T7rFhyA7AM0HYj9cMpz5nT0zDQF2TTnkizzwwdiOxo4au9jgjYD0yRYI9/kxxwaHd+iYFK3OcB4CZvoVCmYAxYj1X00= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745729899; c=relaxed/simple; bh=Yddx/b/XLifFgaO7M9pcSF5tFH4TSSpS5U9UUhl2Gro=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BKjzzWidUdfdWj6AnrQXOZ+drF8zmAADHaAkboDXVndykV29ntopiqMJHxN8S16+yi6jLgIpGiK+yD1+htfqElAP6LgYlUuBJ6UOc8D55kFyzRwKyJtBalTGQoC4V18fyH2ch+y1V4JhIZTfVvyV/kF7fIdTA+jMqy3mK4ohHR4= 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=JTy8hNJz; arc=none smtp.client-ip=209.85.221.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="JTy8hNJz" Received: by mail-vk1-f228.google.com with SMTP id 71dfb90a1353d-5245e9a0628so103813e0c.0 for ; Sat, 26 Apr 2025 21:58:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1745729896; x=1746334696; 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=ytSjcOrjW6yVMNgL4en3Ee4QjHFYgZn3+Z4PMl0t05Q=; b=JTy8hNJziupGwXHlgIimOajX+ysYZmC9dQVCo0/sR7Tj677WK2Ss9TQ9XsC8LxswAl axF7TweLvfVcknhmnTn6d2AtkRYK9lIGmZHN7qaf7v3RNkWAOo82Ja6z5dVrf5LaOoz1 gdxVNkC5BXwcBYwBVt6sQwj/curcz95DASrL2bgG+DhT+M+LUA3PDRdbhABimLiqx3di B0tYmDZ15jXFrMHNSMZMJAb4MRWk51anlb+IVKuXoVEqmjVpzDVUXAvIHEpbKAT+dbi6 7rxuEh/ivwD3SU/lXcZrqFow3xEC7dQPRCsp+Oeo3uywCAonl6kSPmRiUOUMYegiLTB6 nPeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745729896; x=1746334696; 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=ytSjcOrjW6yVMNgL4en3Ee4QjHFYgZn3+Z4PMl0t05Q=; b=ll9bhJa6HpmuPuQYGyEq7LV75fkwJNiAHHKGplmnMGODre3ljvGcvXRBCe/AyHMyif rtVwpA7MwitTIodjLN0PLgjWXmUZpnOu/gQLA1oiGk0xgguLlLHr9iF35YaXm2gneWY+ r1W00DYh+YRJV9LIHEOw43hkEmnttp0hKFW4BRy6B3G702/M1+ql+6VCnl30z7X/DH7d l/LjM0ZP0Cy9sJtGOY7JuZQNs/VKMovToMuhQ+K5pE+MJu17cmMxdsEV2ykH6Bjz9bqd nutTdaLfiM9nMoe1jsjoXRbJH4A0DNbzXOPypjnvZqKdbqII35BReQQVXbtzBFgYLKvG HO+Q== X-Forwarded-Encrypted: i=1; AJvYcCXpxyr1i5xjYJTd0tqG5TDl8JtjvAz2OYCr+cEjLqXIN2X+wWt443w8w2Br53jQShLDZjT35AvuJ2bZots=@vger.kernel.org X-Gm-Message-State: AOJu0Yx5RVVwLIm3Gty6guWQ3aLFOUIYrx+N5vNbq7GTQbGjg5MfmzBc 5QAu1d5G8Z4uDIsWA7MxD+WFItHizqHqE8umrWFRHyxTAF1usFy/2epVIbO0e8RUPXXEGqkV+Sr HjXfo6Ynv+RUO+6lETjx5PLGt7Y9T90m+UVTHEQSeYGxBgkz3 X-Gm-Gg: ASbGncvVu6FJkcgNfZfVmaEYrGbtKuIxr22f82MBxl4RBrZ5drTomgg+ksFzQJKXpKR 9YMYvnP9g1VTlg6w8E8rmH962E0/0WqXEFiDy9vh4Dey2Gz+7/gv9pd/4eml/JSrZhJ6qows6jS SOuaHHhWHKqQFGLUfKTNxJtwq96QfJ7jSaUEf22H8xsmJmdbhspIJMAG3yDvbxuYa0IhYZ6iZr8 YNmiaUgxQgWcExUiArlSZOsNkWGt56lmC6bpMTkOAiNmMTyyhl+qVFnyT+YKYMjj/5q8reGbswE pCWD2l4Ly7tQYP5K3StkKxN2aSN5iA== X-Google-Smtp-Source: AGHT+IHoLpNHmupUBvpZTdwrVhBb64jDbVe8o7JFOrNypTGplRppNwOstdfnmpLrihKVCgFjc8cg5G+8seE6 X-Received: by 2002:ac5:cde4:0:b0:523:e1cf:5aef with SMTP id 71dfb90a1353d-52a89eb065fmr1612097e0c.2.1745729895693; Sat, 26 Apr 2025 21:58:15 -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 71dfb90a1353d-52a9924306dsm341210e0c.5.2025.04.26.21.58.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Apr 2025 21:58:15 -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 9A18A340615; Sat, 26 Apr 2025 22:58:14 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 97946E40C3E; Sat, 26 Apr 2025 22:58:14 -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 8/8] ublk: store request pointer in ublk_io Date: Sat, 26 Apr 2025 22:58:03 -0600 Message-ID: <20250427045803.772972-9-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250427045803.772972-1-csander@purestorage.com> References: <20250427045803.772972-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 looking up the (qid, tag) on the ublk device's tagset. This involves a bunch of pointer dereferences and a bounds check of the tag. 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 2296fa677d0d..c69c234adb4e 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; @@ -1123,24 +1128,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,17 +1223,17 @@ 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 ublk_start_io(ubq, req, io); - 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) { @@ -1607,16 +1617,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) @@ -1986,16 +1992,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. */ @@ -2023,13 +2029,14 @@ static int ublk_commit_and_fetch(const struct ublk_= queue *ubq, ublk_put_req_ref(ubq, req); =20 return 0; } =20 -static void ublk_get_data(struct ublk_queue *ubq, struct ublk_io *io, - struct request *req) +static void ublk_get_data(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. */ @@ -2051,11 +2058,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 @@ -2107,12 +2113,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); - ublk_get_data(ubq, io, req); + ublk_get_data(ubq, io); return UBLK_IO_RES_OK; default: goto out; } ublk_prep_cancel(cmd, issue_flags, ubq, tag); --=20 2.45.2