From nobody Fri May 3 15:03:47 2024 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 4VWDb73sNVz5K9QN; Fri, 3 May 2024 15:03:47 +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 4VWDb73G54z506J; Fri, 3 May 2024 15:03:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1714748627; 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=4sKYGYSxqrKeH8bVcZRQgBfomNsLIWv1R4aC6uuaVWQ=; b=pzCWLom1Ym5KEbApyw4cK4wpyhClXVBnKeoWnSIoVLNFHu9YpbeoKxw5n4QVUo9aWL1DsF 38dZhA5sv2XLq9YexNVn7kSA7+z/df25wf3a0tXmW2AhLra7gnzjy08Y5fFmBiJJB3iADz 6BNItxGiWjygJ0FWFyWieOKPkmknbPbu+x7wGIfJ1cTOzBCexq2GX74Ni8O5qJW0HEtXd2 /uwcvCVHe39SHYsZh1m96NFUoYWBtxYCUk82uwoN0o+ItVUZSnKcpa5C36Wmeg0LzhMSZj v0UZ2z13+Uq0NJj/4Bic56VmH6I30D7Zl3LDBo8rrvJNcYJJb/HsX4Irbu61+A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1714748627; a=rsa-sha256; cv=none; b=KyLp3/qQCPDDtDhQe7DO+YTYP2VYx5X2BF+2ahqbVVw12bP4E+0p8glw4nvikbgh9ZIzHO wGtBPhJhck2Uw77UUxakCPunNAcgMr7UMNi+LvvkwFpsYv7C9zpIBiR8I0HfpgXb3tvEJt J0v4N+rV/EEPABwsOxiEPViTwPtTx2FpOPzX9OPJJzcTqGPibe4Y+k67e2RcNVnGKrg70F TrQtX2xpmid7DX627tnY2kM7MBr86Xx6A1Wo/yGMFcVRJxNoRjV8wzmu3uewXeJ4FpT7bv EijcgJZYx2xgbzLPb8zC8bxofT0HwttiJp78U73fODui12R0oTutRHxKq1B4kw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1714748627; 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=4sKYGYSxqrKeH8bVcZRQgBfomNsLIWv1R4aC6uuaVWQ=; b=iw03WXu6WbjbDESeDuv2AHJ8CFvEaoH2//T4WJ0m02yEsNpo6Bn9/+MsqPrPhiVEexh7AI uEAWI1y90xGEEXBvaMVyiUT1cl11Aqms1fM1Gf6TcdqDh7hEHNrXk6FNNfQyyMCz4UwULy y2QIBexquuE+h16BKafwsTWj0qZ+mOymGQyP0onf92ADIFqu8T4zadfMzf5GO0CLjx3wmh uDthJX/zEo5pzc+NFqI0FW4jJL7kfFvBGCEK5MP6KG55SYeVC9BJ+1pZB7CRYG0fQzpqMD ezsYSoL8/cLX+Zqs8ZMuk38P5R2tO139aL/dYfI2pseHNCbjSEZzdKssuRFquA== 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 4VWDb72pT7zqfg; Fri, 3 May 2024 15:03:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 443F3lGh085947; Fri, 3 May 2024 15:03:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 443F3lKQ085944; Fri, 3 May 2024 15:03:47 GMT (envelope-from git) Date: Fri, 3 May 2024 15:03:47 GMT Message-Id: <202405031503.443F3lKQ085944@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: ea2d874cca7c - main - geom_stripe: Cascade cantrim just like we do for gmirror 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: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ea2d874cca7cdfe6133c1835dadd8f0672723fa6 Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=ea2d874cca7cdfe6133c1835dadd8f0672723fa6 commit ea2d874cca7cdfe6133c1835dadd8f0672723fa6 Author: Matthew Grooms AuthorDate: 2024-05-03 15:01:21 +0000 Commit: Warner Losh CommitDate: 2024-05-03 15:03:31 +0000 geom_stripe: Cascade cantrim just like we do for gmirror If any of the disks can support trim, cascade that up the stack. Otherwise, trims won't pass through striped raid setups. PR: 277673 Reviewed by: imp (minor style tweaks from bug report) --- sys/geom/stripe/g_stripe.c | 21 ++++++++++++++++++++- sys/geom/stripe/g_stripe.h | 3 +++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/sys/geom/stripe/g_stripe.c b/sys/geom/stripe/g_stripe.c index 2acffcff1449..6f336c18c8e6 100644 --- a/sys/geom/stripe/g_stripe.c +++ b/sys/geom/stripe/g_stripe.c @@ -591,7 +591,12 @@ g_stripe_start(struct bio *bp) g_stripe_pushdown(sc, bp); return; case BIO_GETATTR: - /* To which provider it should be delivered? */ + if (!strcmp(bp->bio_attribute, "GEOM::candelete")) { + int val = (sc->sc_flags & G_STRIPE_FLAG_CANDELETE) != 0; + g_handleattr(bp, "GEOM::candelete", &val, sizeof(val)); + return; + } + /* otherwise: To which provider it should be delivered? */ default: g_io_deliver(bp, EOPNOTSUPP); return; @@ -794,6 +799,20 @@ g_stripe_add_disk(struct g_stripe_softc *sc, struct g_provider *pp, u_int no) } sc->sc_disks[no] = cp; + + /* cascade candelete */ + error = g_access(cp, 1, 0, 0); + if (error == 0) { + int can_delete; + + error = g_getattr("GEOM::candelete", cp, &can_delete); + if (error == 0 && can_delete != 0) + sc->sc_flags |= G_STRIPE_FLAG_CANDELETE; + G_STRIPE_DEBUG(1, "Provider %s candelete %i.", pp->name, + can_delete); + g_access(cp, -1, 0, 0); + } + G_STRIPE_DEBUG(0, "Disk %s attached to %s.", pp->name, sc->sc_name); g_stripe_check_and_run(sc); diff --git a/sys/geom/stripe/g_stripe.h b/sys/geom/stripe/g_stripe.h index 4c5430275350..1075a176b9b3 100644 --- a/sys/geom/stripe/g_stripe.h +++ b/sys/geom/stripe/g_stripe.h @@ -47,6 +47,8 @@ #define G_STRIPE_TYPE_MANUAL 0 #define G_STRIPE_TYPE_AUTOMATIC 1 +#define G_STRIPE_FLAG_CANDELETE 0x00000001UL + #define G_STRIPE_DEBUG(lvl, ...) \ _GEOM_DEBUG("GEOM_STRIPE", g_stripe_debug, (lvl), NULL, __VA_ARGS__) #define G_STRIPE_LOGREQ(bp, ...) \ @@ -62,6 +64,7 @@ struct g_stripe_softc { off_t sc_stripesize; uint32_t sc_stripebits; struct mtx sc_lock; + int sc_flags; }; #define sc_name sc_geom->name #endif /* _KERNEL */