From nobody Tue Oct 18 06:03:06 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Ms3F66BqRz4g8Dw; Tue, 18 Oct 2022 06:03:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Ms3F65XCfz3bhQ; Tue, 18 Oct 2022 06:03:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1666072986; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Rq1sA740Gu6UgWBdFlbL4kc03sURLGXWp/GfsNbDI8Q=; b=xceyorSBJKOFzFnWOYCZuUGcBj6hNw1ph16Xpn7PgH3I/DT1rSMfqSX8TDi9sPb/9DhCXo NRdml+IJZly8AoC2Sa+gowoQY93ECaDdNKU9F0iMgfhF7CIrOX3x1hr1KB+71HXSQ3DC+r O9U1lz8xW40wdNo7OCm9ge0p5Ood9KSTO8eZUfKyMESXPbmwhpHne2tga42uP2+9m03LW6 LRbjZdDYRhSkwDmc5gzzigVGQijTJ67HHkaYzlrWv1Cy5ajGRRYNWktonIXLjCV1z6onLx NhYf4XFmcs6tNdX0S5tCRjvEw4aZ7lGSvc0gVDFeNx37KIV/EJtx7AJa1EC7zA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Ms3F64dFTz15BL; Tue, 18 Oct 2022 06:03:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 29I636uF097310; Tue, 18 Oct 2022 06:03:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 29I636Um097309; Tue, 18 Oct 2022 06:03:06 GMT (envelope-from git) Date: Tue, 18 Oct 2022 06:03:06 GMT Message-Id: <202210180603.29I636Um097309@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Colin Percival Subject: git: 86f8f5ccb798 - main - vtblk: Make vtblk_request_execute return void. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 86f8f5ccb798f336c23cb191f43f578ec9f44c8b Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1666072986; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Rq1sA740Gu6UgWBdFlbL4kc03sURLGXWp/GfsNbDI8Q=; b=RL0AeETwlGAruoodfFlYZ4/UgAY3LrIk1r8tEaWuOT2TMNNr5fL890tRdAKYHo2qm5mwZT G9Db7qFE1n9Ik921DM1gxisHXudRXzggriwFC2ivHm4rntj6NAVSdN/y5CWwxxrHqWbcpA x6rvEHdQIzqKNbZGA2PyiOTGTEsrmJj73161wv2sqU+/vVlVJpaz9vlajj/COyttyhcX4L vAb7pYdzhfECgXQHHh1bcgdVbDPRYy2UpFvy8cU1nLQZ6W5SmHmiYHA1ZDbJC7j/DA7gmW 0kwqA9OcsVjcvQil/ZjESkEqXyhUHSMtkdJzVdnxUBIaqjtt34GigAWI4dvzgA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1666072986; a=rsa-sha256; cv=none; b=tdJhzvr0v5aI9uTXffJ7xrU87jDSxbxuzSrGrhZUyq0jpP0Qt0bAxSYIUe/DXOym4ukYOO 0SWIJZLmOtcj/1rjKuqA37vqahopLxYfO3/Gd0yYZzhn2wzmF59VrKQyqpj2EeHbHf7dew P7NizIEfeGk7F72frPFm6v59zJ/2uYRF0WpKzoSF2a9hd0GGk359hVsg1JeXIRfvQULEj3 7wdamZJdNo5nLjOI2X76DxzfCSjODY/QcwOkXqWRBs9x3b6BjgmPwv+kGpD9iAF4HSwwfo LGxm85N/+UYObwXm8E41PcSEF2fjnmtve53HyLxRzM1mVGTA/eGrexKTZjhLXA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=86f8f5ccb798f336c23cb191f43f578ec9f44c8b commit 86f8f5ccb798f336c23cb191f43f578ec9f44c8b Author: Colin Percival AuthorDate: 2022-09-18 01:02:54 +0000 Commit: Colin Percival CommitDate: 2022-10-18 06:02:21 +0000 vtblk: Make vtblk_request_execute return void. The error, if any, now gets stashed in the request structure. (Step 1 of reworking this driver to use busdma.) No functional change intended. Reviewed by: bryanv, imp Sponsored by: https://www.patreon.com/cperciva Differential Revision: https://reviews.freebsd.org/D36664 --- sys/dev/virtio/block/virtio_blk.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/sys/dev/virtio/block/virtio_blk.c b/sys/dev/virtio/block/virtio_blk.c index c26447496732..8d39d80a8c91 100644 --- a/sys/dev/virtio/block/virtio_blk.c +++ b/sys/dev/virtio/block/virtio_blk.c @@ -62,6 +62,7 @@ struct vtblk_request { struct virtio_blk_outhdr vbr_hdr; struct bio *vbr_bp; uint8_t vbr_ack; + int vbr_error; TAILQ_ENTRY(vtblk_request) vbr_link; }; @@ -161,7 +162,7 @@ static struct vtblk_request * vtblk_request_next(struct vtblk_softc *); static struct vtblk_request * vtblk_request_bio(struct vtblk_softc *); -static int vtblk_request_execute(struct vtblk_softc *, +static void vtblk_request_execute(struct vtblk_softc *, struct vtblk_request *); static int vtblk_request_error(struct vtblk_request *); @@ -931,7 +932,7 @@ vtblk_request_bio(struct vtblk_softc *sc) return (req); } -static int +static void vtblk_request_execute(struct vtblk_softc *sc, struct vtblk_request *req) { struct virtqueue *vq; @@ -951,11 +952,15 @@ vtblk_request_execute(struct vtblk_softc *sc, struct vtblk_request *req) * to be the only one in flight. */ if ((sc->vtblk_flags & VTBLK_FLAG_BARRIER) == 0) { - if (sc->vtblk_req_ordered != NULL) - return (EBUSY); + if (sc->vtblk_req_ordered != NULL) { + error = EBUSY; + goto out; + } if (bp->bio_flags & BIO_ORDERED) { - if (!virtqueue_empty(vq)) - return (EBUSY); + if (!virtqueue_empty(vq)) { + error = EBUSY; + goto out; + } ordered = 1; req->vbr_hdr.type &= vtblk_gtoh32(sc, ~VIRTIO_BLK_T_BARRIER); @@ -979,8 +984,10 @@ vtblk_request_execute(struct vtblk_softc *sc, struct vtblk_request *req) struct virtio_blk_discard_write_zeroes *discard; discard = malloc(sizeof(*discard), M_DEVBUF, M_NOWAIT | M_ZERO); - if (discard == NULL) - return (ENOMEM); + if (discard == NULL) { + error = ENOMEM; + goto out; + } bp->bio_driver1 = discard; discard->sector = vtblk_gtoh64(sc, bp->bio_offset / VTBLK_BSIZE); @@ -1000,7 +1007,8 @@ vtblk_request_execute(struct vtblk_softc *sc, struct vtblk_request *req) if (error == 0 && ordered) sc->vtblk_req_ordered = req; - return (error); +out: + req->vbr_error = error; } static int @@ -1125,7 +1133,8 @@ vtblk_startio(struct vtblk_softc *sc) if (req == NULL) break; - if (vtblk_request_execute(sc, req) != 0) { + vtblk_request_execute(sc, req); + if (req->vbr_error != 0) { vtblk_request_requeue_ready(sc, req); break; } @@ -1262,7 +1271,8 @@ vtblk_poll_request(struct vtblk_softc *sc, struct vtblk_request *req) if (!virtqueue_empty(vq)) return (EBUSY); - error = vtblk_request_execute(sc, req); + vtblk_request_execute(sc, req); + error = req->vbr_error; if (error) return (error);