From nobody Fri Jun 12 15:58:04 2026 Received: from mail-qt1-f225.google.com (mail-qt1-f225.google.com [209.85.160.225]) (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 B12A93AF676 for ; Wed, 13 May 2026 21:19:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.225 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778707142; cv=none; b=n644APsZL5lprseBW4aVHydaSxMH9mCZx/mypjI26uDmxeceYZz/EF7v3y3zBR3tIASAbMCrRUnk/GQT4hD5dZX5cW7b4JefeTcBIGHyss3Kin0yXeppBkIy55srCJ6IsPQbqCSNMbQH+ahDEdUbnyCL1mLmJcGk29g1LG41Znk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778707142; c=relaxed/simple; bh=kGs2WnbC6y0yqjyWpEWDsbi6xUYHXc/nXh53NKQFFBA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Rp9MLV80DU/oZOkJT9UUaBjHK1g6WKsT6mXWH0b526KDFWRlel9xkSR7ro2jTyu4nHurAemh7fj4OTcN/P4QP4mzFa01saLkD3Lqpb6Uhafh2y6XTvfbL7SopgVbpo44OFvx8OCdOaHuc3RPdPY938D/Q0Xp4r6cX2qa1jydwrg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine 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=YuoSDRPd; arc=none smtp.client-ip=209.85.160.225 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine 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="YuoSDRPd" Received: by mail-qt1-f225.google.com with SMTP id d75a77b69052e-50fef3d144cso8115801cf.1 for ; Wed, 13 May 2026 14:19:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1778707140; x=1779311940; 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=f3GgPB/qY/ZnxxAx67/XgeDITrY4cObzikz91xtmMpg=; b=YuoSDRPdYvGeqKWBWyipO0rriA1+FBwq0SUqsrX/w9zc+3K7dT7goIvwJ4BvKcd5Rz LrOvEkFeANs+RcFafvKKx9xpiJNon1jJrkCB6GV8eVGA5sxrF22WpJSsqbTA5opT4CD4 l0hH+Ku/e0eF/hf9xE8nke/JXtzfWHRbyGMWN5zpRy0baWJsLcAc6z4y8kts2iO+CNpM iPUfRnNkkoAX4MPC6BX8m8eafLpMl9sOkZkxETeKuPKzx7THqI8OJ1Lv3p9nTbSZAn9s ElJ6+/AVgOb8TmmvlS8IPeHjYSkrCvUB/OWU1F2lQ1FFRU1OTDzrc681h9TLqE+7WASN oEMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778707140; x=1779311940; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=f3GgPB/qY/ZnxxAx67/XgeDITrY4cObzikz91xtmMpg=; b=p9FxwXknhihQwxLvtdlmf+wy58LEKxd/TjjgPRhC6tC8kUTqHSNhGGCel9vFJqc7Bj +hhL97rqVApy0s8DdcnqgP/hOzyypBupBwr9iqRj/7yZc3AmxHJDPhURSqPR4Q2RqHlM 2ieGmX4efC72UOyjtO6HeC+Gl+FuMQzRJHHbpOW81aWZO/dqsHNxR0A5znoh+u5Ed1tK Nn7jRXCnna1wznb+/WJSKgKS9tWkuSIwgcw+gf9U/Nh7ubDVlT+O8086BgOv9qdLqtX+ 5OAqZ///HpA1kXcze0hNsw0pkEvtj7JE56ASEH8PeiMsr609xyxpaYfMdUG6C/O3uN76 1Wpw== X-Forwarded-Encrypted: i=1; AFNElJ/wntJxOHtXeh2QxZbBgHjN+SWqyqR0/w6eKfS3vsXBvfNGdWZVBEEjE/pMW2jFCx5QJSWRQZrWBpJjslA=@vger.kernel.org X-Gm-Message-State: AOJu0Yyp4IwGEum5Xa3e8PTatvr8SZJ1fqTgwjB6BsHKmS90CnrcYoyf RLoqJqEhPadoAUsWcT8tNFxWDPTjegSbBnjh23c1mpP4ORyrnbAQ7rQoQYQ5MKsQIk4u8hbKjbp QLFQClJeVEouJffPVykglDrAPULOpI4Z5YvNCzVn9WvOuIMdLEiCv X-Gm-Gg: Acq92OG4rX25iO+Cp7jb3FwLrkn3R0Su7JzqLKB7bNT4s0bHUfY73zU7Bk6W8hTjD3y 8jewPInu/Rqjf0PUq3XVEGnbqafJW7Hb2it0U3iMJFca4SYJImwLtpccANJurdnspxHMg5X2mwx vRptZM2LnMq0JR6VeC3XgUnGk0LBUkJHlHV4vJQiBobaazLAnR73Wx7cHQ32NZDsSJ/LrwFxnF/ J9FUTHG3PAqQxphwGRYuPmGHF2BXOk4gtNNesLPL+voBfmTsxslEl/VAfSD44P4HI/baIbkTdka BymCy2FBpEMQu4l5fP8lFKkwqeDmSuoTLSqexykXFQuTAs4+MVXrIlsPJ0sXEl4J72fszvMbwjO KQYHEgiUcp323N33Ir7pCDoEKv0G9Ey6dykYQ0ic= X-Received: by 2002:ac8:5a4f:0:b0:50b:3489:5495 with SMTP id d75a77b69052e-5162f6d5c6bmr46107531cf.8.1778707139566; Wed, 13 May 2026 14:18:59 -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 d75a77b69052e-51645861bb5sm3171cf.29.2026.05.13.14.18.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2026 14:18:59 -0700 (PDT) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.112.46.22]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id EDE32340C58; Wed, 13 May 2026 15:18:58 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id E8D62E41188; Wed, 13 May 2026 15:18:58 -0600 (MDT) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH 7.2 1/2] blk-mq: introduce blk_rq_has_data() Date: Wed, 13 May 2026 15:18:45 -0600 Message-ID: <20260513211846.1956810-2-csander@purestorage.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260513211846.1956810-1-csander@purestorage.com> References: <20260513211846.1956810-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" Add blk_rq_has_data(), an analogue of bio_has_data() for struct request. This skips one dereference relative to bio_has_data(rq->bio). Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- include/linux/blk-mq.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index 18a2388ba581..4349aefdbc87 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h @@ -1102,10 +1102,11 @@ struct req_iterator { bio_iter_last(bvec, _iter.iter)) =20 /* * blk_rq_pos() : the current sector * blk_rq_bytes() : bytes left in the entire request + * blk_rq_has_data() : whether the request carries data * blk_rq_cur_bytes() : bytes left in the current segment * blk_rq_sectors() : sectors left in the entire request * blk_rq_cur_sectors() : sectors left in the current segment * blk_rq_stats_sectors() : sectors of the entire request used for stats */ @@ -1117,10 +1118,18 @@ static inline sector_t blk_rq_pos(const struct requ= est *rq) static inline unsigned int blk_rq_bytes(const struct request *rq) { return rq->__data_len; } =20 +static inline bool blk_rq_has_data(const struct request *rq) +{ + return blk_rq_bytes(rq) && + req_op(rq) !=3D REQ_OP_DISCARD && + req_op(rq) !=3D REQ_OP_SECURE_ERASE && + req_op(rq) !=3D REQ_OP_WRITE_ZEROES; +} + static inline int blk_rq_cur_bytes(const struct request *rq) { if (!rq->bio) return 0; if (!bio_has_data(rq->bio)) /* dataless requests such as discard */ --=20 2.54.0 From nobody Fri Jun 12 15:58:04 2026 Received: from mail-ot1-f99.google.com (mail-ot1-f99.google.com [209.85.210.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 C4EAB3B1034 for ; Wed, 13 May 2026 21:19:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.99 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778707142; cv=none; b=EV5neNKdndjR7gAXvf7TqedfhCMB/1IKMTfPkyLm2uFKvJvj826IJb6squ9zNrqCkbh67BqFPlDIOd+I+gqFuHw1f9kvodfwl2yEMEFnYn1OxJ8HdEyyKcqVNglzrBFnxmQs3XiUlNIn2LOJBaYRwEF2d9NGQDEC10McoZaXHHk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778707142; c=relaxed/simple; bh=MGgdaCEh0VVf+4B/Ue9J9fNwUy2/6sWovfRR+7FIpYM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qAlw5pgh/0VCZo5ryezjOo9oVotOVI1YqEyFh4KFHomX2zceXKw+jKp3EHU2QWRe5DaXfVK9+fHMz0PVWlqeE+PTgNvOu9lMnGN8BW8hqcEN9hlr9sUiI6Z3F/QFQU54prtDSlEnHox16geI2CZSmwwR8CFAnoGYkSmfyKH7mHQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine 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=NYtcs8Rb; arc=none smtp.client-ip=209.85.210.99 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine 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="NYtcs8Rb" Received: by mail-ot1-f99.google.com with SMTP id 46e09a7af769-7dbd7a1e989so602386a34.1 for ; Wed, 13 May 2026 14:19:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1778707140; x=1779311940; 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=5RL+c9P8SmaEdh8EwEPUVpE5hpSk6rZenkEZDNdBL5U=; b=NYtcs8RbJxughkEl+3ls+6XzCSkauLxbQOhGgeZa7WlOuTtE6bMP907O3aEe4tMfnk JECQFpK2Z7bLbWfwwOVlgLI4nuC1KfIeG0KDEAKHhBWQIA7Vr7H81DfjmWIF1MUuypx5 8R5IxAMM7BvcU7xNtPH5fLkcuYcVp9EXKZqCqPIWQ1yk9Ls0AReTUqbXJEaGxL7hFlHG azewSEWhYb31Wh/PuYDxOz1A7bB4lUINd7Hyg1Vk9x2MWXpRn6HLGJVrTxSn5ZwT6fdx psUzjvHzmoBckJ1XV9Bxig5GBK3C7PiYaPuPI87ksr8eAIpUwX9yLAUwXuNj+qRJaQy5 jF5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778707140; x=1779311940; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=5RL+c9P8SmaEdh8EwEPUVpE5hpSk6rZenkEZDNdBL5U=; b=LGCQe3CRBqm7VTan1Y1rvPzAy7M5luMfbg0EQ/JnJiZv4KDg6XSPt1q9DkVIBQujqv IKBDxpqC+nSG88R4AyX/4w0M3wZBpRFImEBhy2lmCxQzgjFS87O9kj5kyEeUdImF03PV vr2GVlwF7sGOHmLboV3YVlx6/ShHt3P+tRsOV4XXnDlA7UKzCA57q2RyltgAhpji/q3x +qHFZcd25dorUTlzjuprnHQRBnSHHZSOmgB5ieyPGUE0ndTcqZ0FfV23VTxZbIsyDxgb olhH0z1yfb5atgLt4B6MP9ismtyZTR2mAS9dJDFko5VI0SDh35Say0m+xhYpXDs8wYD7 1XLA== X-Forwarded-Encrypted: i=1; AFNElJ9bChqpU4l6DYqv4dKfQz7fIsP1IH9Nss4wru1nXzpC08eNczxKBG03k1RJXYn1Cek2hVsZaMK/Vpm3xRw=@vger.kernel.org X-Gm-Message-State: AOJu0Yw0BSndW1vRaElJBwDVHz+aCtcQom5LOCvPUoQlPFoNrdhRLKoX ic4E/M/1YhvCbB5kZdaOsj5C7nxtyubnv4pNMLfjl8cE6hKO2glTuoFwKYU7gzy8akni2TzvElx 0rCncDfKgmpHvJKz3kjaWaLqFyCfWnJEnNWsb X-Gm-Gg: Acq92OFlXm5HCcz2zP9xoNVIRqsaID9jg43Ji5l+/WvmRlsJiXZyNsbnq5H9h/fIQRe D/aYtzxKsHMCLkwLlqlQNW1NMysaj0fFYzLK6UIEa6g9REs5XbNpa1mViCJDAmGJXxtban6z4gE gSHf4lRI1BU6OdyCYZcklp2Mql46W6mZawyoYR7D3F6l7JZ2bnG/sc874GS8OtYp1i0mcUIMhhp qUOWyeL+/+KnV8duLT5a4MDeJ9xO7q6GX84M9zd0rFg5YIHP6M+o3qvJowuPJEQwIhlGss0EU4d bhj5ZKdwqddtKcOCn59KhDeV61t1he44eSY6dS9T1mWWwG58XovwBH7QpQ5vQ/Ybyo4gPfV5IU5 krSa0VoMQhxDxZI7ZkNJp5QW6aVZmR0tzOVpUUyHRHIeSR/llx5+lfqeOMfTJ9ySC X-Received: by 2002:a05:6830:3105:b0:7de:427d:34a8 with SMTP id 46e09a7af769-7e3da48d68dmr2072852a34.3.1778707139768; Wed, 13 May 2026 14:18:59 -0700 (PDT) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.129]) by smtp-relay.gmail.com with ESMTPS id 46e09a7af769-7e3f3bc2ed7sm49525a34.5.2026.05.13.14.18.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2026 14:18:59 -0700 (PDT) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (bond0.slc5-n22m09-k8s.dev.purestorage.com [IPv6:2620:125:9025:20::a31:449]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 4EF74341BA7; Wed, 13 May 2026 15:18:59 -0600 (MDT) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 47DA6E41188; Wed, 13 May 2026 15:18:59 -0600 (MDT) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH 7.2 2/2] ublk: optimize ublk_rq_has_data() Date: Wed, 13 May 2026 15:18:46 -0600 Message-ID: <20260513211846.1956810-3-csander@purestorage.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260513211846.1956810-1-csander@purestorage.com> References: <20260513211846.1956810-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_rq_has_data() currently uses bio_has_data(), which involves 2 indirections and several branches. Use blk_rq_has_data() instead to save an indirection and NULL check. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- drivers/block/ublk_drv.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 8e5f3738c203..4d7efc12247c 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -1170,15 +1170,10 @@ static inline struct ublk_queue *ublk_get_queue(str= uct ublk_device *dev, int qid) { return dev->queues[qid]; } =20 -static inline bool ublk_rq_has_data(const struct request *rq) -{ - return bio_has_data(rq->bio); -} - 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; } @@ -1387,16 +1382,16 @@ static size_t ublk_copy_user_integrity(const struct= request *req, } #endif /* #ifdef CONFIG_BLK_DEV_INTEGRITY */ =20 static inline bool ublk_need_map_req(const struct request *req) { - return ublk_rq_has_data(req) && req_op(req) =3D=3D REQ_OP_WRITE; + return blk_rq_has_data(req) && req_op(req) =3D=3D REQ_OP_WRITE; } =20 static inline bool ublk_need_unmap_req(const struct request *req) { - return ublk_rq_has_data(req) && + return blk_rq_has_data(req) && (req_op(req) =3D=3D REQ_OP_READ || req_op(req) =3D=3D REQ_OP_DRV_I= N); } =20 static unsigned int ublk_map_io(const struct ublk_queue *ubq, const struct request *req, @@ -1506,11 +1501,11 @@ static blk_status_t ublk_setup_iod(struct ublk_queu= e *ubq, struct request *req) iod->op_flags =3D ublk_op | ublk_req_build_flags(req); iod->nr_sectors =3D blk_rq_sectors(req); iod->start_sector =3D blk_rq_pos(req); =20 /* Try shmem zero-copy match before setting addr */ - if (ublk_support_shmem_zc(ubq) && ublk_rq_has_data(req)) { + if (ublk_support_shmem_zc(ubq) && blk_rq_has_data(req)) { u32 buf_idx, buf_off; =20 if (ublk_try_buf_match(ubq->dev, req, &buf_idx, &buf_off)) { iod->op_flags |=3D UBLK_IO_F_SHMEM_ZC; @@ -1796,11 +1791,11 @@ static void ublk_dispatch_req(struct ublk_queue *ub= q, struct request *req) } =20 if (!ublk_start_io(ubq, req, io)) return; =20 - if (ublk_support_auto_buf_reg(ubq) && ublk_rq_has_data(req)) { + if (ublk_support_auto_buf_reg(ubq) && blk_rq_has_data(req)) { ublk_auto_buf_dispatch(ubq, req, io, io->cmd, issue_flags); } else { ublk_init_req_ref(ubq, io); ublk_complete_io_cmd(io, req, UBLK_IO_RES_OK, issue_flags); } @@ -1817,11 +1812,11 @@ static bool __ublk_batch_prep_dispatch(struct ublk_= queue *ubq, struct io_uring_cmd *cmd =3D data->cmd; =20 if (!ublk_start_io(ubq, req, io)) return false; =20 - if (ublk_support_auto_buf_reg(ubq) && ublk_rq_has_data(req)) { + if (ublk_support_auto_buf_reg(ubq) && blk_rq_has_data(req)) { res =3D ublk_auto_buf_register(ubq, req, io, cmd, data->issue_flags); =20 if (res =3D=3D AUTO_BUF_REG_FAIL) return false; @@ -3198,11 +3193,11 @@ ublk_daemon_register_io_buf(struct io_uring_cmd *cm= d, new_registered_buffers =3D io->task_registered_buffers + 1; if (unlikely(new_registered_buffers >=3D UBLK_REFCOUNT_INIT)) return ublk_register_io_buf(cmd, ub, q_id, tag, io, index, issue_flags); =20 - if (!ublk_dev_support_zero_copy(ub) || !ublk_rq_has_data(req)) + if (!ublk_dev_support_zero_copy(ub) || !blk_rq_has_data(req)) return -EINVAL; =20 ret =3D io_buffer_register_bvec(cmd, req, ublk_io_release, index, issue_flags); if (ret) @@ -3481,11 +3476,11 @@ static inline struct request *__ublk_check_and_get_= req(struct ublk_device *ub, return NULL; =20 if (unlikely(!blk_mq_request_started(req) || req->tag !=3D tag)) goto fail_put; =20 - if (!ublk_rq_has_data(req)) + if (!blk_rq_has_data(req)) goto fail_put; =20 return req; fail_put: ublk_put_req_ref(io, req); @@ -4054,11 +4049,11 @@ ublk_user_copy(struct kiocb *iocb, struct iov_iter = *iter, int dir) /* On daemon, io can't be completed concurrently, so skip ref */ if (!(io->flags & UBLK_IO_FLAG_OWNED_BY_SRV)) return -EINVAL; =20 req =3D io->req; - if (!ublk_rq_has_data(req)) + if (!blk_rq_has_data(req)) return -EINVAL; } else { req =3D __ublk_check_and_get_req(ub, q_id, tag, io); if (!req) return -EINVAL; --=20 2.54.0