From nobody Tue Apr 4 11:45:59 2023 X-Original-To: dev-commits-src-main@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 4PrQvD1hJ2z43S9n; Tue, 4 Apr 2023 11:46:00 +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 4PrQvD163zz4HT7; Tue, 4 Apr 2023 11:46:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680608760; 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=eG7A1kwAlCcbGpLSUeNifWoKpk8fO+LrulKVl8VxpCs=; b=s7vp+MA1GD2S+d7aIbQF9/x+oqTYi+BCkTODbxnC4eh0b0RKzAW15d/oE/X5FfWH5xvgId FRHYZeOI8jU5Plt8WbpAqtkWwt7Ch95H4PiIGfrk5u2y8plk3wEtJ0xIbjJ+EkkPyYyS5i fUikU/tH1dyrTbs5RarHlXQ3+OnaSMq90bDydQPv8kSLZtq3FuzniCzFhhUsNUjjdWQLGl omP5GCg9cDcv8Y4/zNSffDNdCbjrA8yU6LtsNciniUzEy5Ns6cMUemfYJcPZGqABgR6+t3 F9JDJW9J9mboMbKUaFDzLvIPMsiWp8wdi9+L4Mldk7GZsD1yZZP6maiKJ+B0Tg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680608760; 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=eG7A1kwAlCcbGpLSUeNifWoKpk8fO+LrulKVl8VxpCs=; b=Rk9ZcriTwn26lmZAQ466cLUTXOPavVpMiRos1Js15jz2wo1qDzhAj6eqS55JYd3DLjRuo/ k+PnPzQ7jWihf+ZFnYKkgEKEkmW8P64UjMhI59jXYHC8PjSWafbw7H8bHOCrvQD+tPibHn 13xmCLsMPupe0zhYZaV4DtGaERyjiOpqcJyEw+4RVQ75ZOSC3XjjSWSFxI+BKqluPGDuG0 ahiokG5NBwpCnZcfH+WdST1tiw/OS8G5zwyqjNiRxlJrDrWscjQyoamshm3+f2W2dRWGDF +uPb9ZT+DS9Etz4Rk8D5XbOF9MPgGv5h2+iF1niRFpGRlQfk6Nw0BbYoUyyFoQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680608760; a=rsa-sha256; cv=none; b=mR4m9zkTXrfGoALXbw/NRn09RQqW87fMDza9BbybTbUOOkKOJ4BuWdbOLmybRxrGFoXqNa iPR8hnXzKE10NIRGZ4bYkEFXT0s/M1vaJBk8Dys24bedVFm3cplS/CTHQ/n2+4jS5aHBQx AnPaDM3lTeVLUn/feBlIE/KP21uGJIZ/8cPQCNRaANZz+BgvUo5/LRBRChdL/0nTzHfLFU wluvD4CT3uT7m39h4j+uo5iGYODunQeh8IXJfjaMI/O9W1SO5CFYOq5Sj740PYCnt/AfDx gq7hj4j+QRAoYAV0o1PtfomW/ip96puR1kbNYy18lhE+Dzs9s3f+bWqkzsyDIA== 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 4PrQvD073rzf9f; Tue, 4 Apr 2023 11:46:00 +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 334BjxB7035873; Tue, 4 Apr 2023 11:45:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 334Bjx6l035872; Tue, 4 Apr 2023 11:45:59 GMT (envelope-from git) Date: Tue, 4 Apr 2023 11:45:59 GMT Message-Id: <202304041145.334Bjx6l035872@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Martin Matuska Subject: git: 8ee579abe09e - main - zfs: fall back if block_cloning feature is disabled List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mm X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8ee579abe09ec1fe15c588fc9a08370b83b81cd6 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mm: URL: https://cgit.FreeBSD.org/src/commit/?id=8ee579abe09ec1fe15c588fc9a08370b83b81cd6 commit 8ee579abe09ec1fe15c588fc9a08370b83b81cd6 Author: Martin Matuska AuthorDate: 2023-04-04 11:40:41 +0000 Commit: Martin Matuska CommitDate: 2023-04-04 11:43:34 +0000 zfs: fall back if block_cloning feature is disabled If block_cloning is disabled, or other errors from zfs_clone_range() return an EXDEV we should fall back to vn_generic_copy_file_range(). This fixes issues when copying files on the same dataset with block_cloning disabled. Upstreamed as pull request to OpenZFS. Reviewed by: Mateusz Guzik OpenZFS pull request: 14713 --- .../openzfs/module/os/freebsd/zfs/zfs_vnops_os.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c b/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c index 97429b360a36..2cd1d27e37bc 100644 --- a/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c +++ b/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c @@ -6243,13 +6243,6 @@ zfs_freebsd_copy_file_range(struct vop_copy_file_range_args *ap) int error; uint64_t len = *ap->a_lenp; - /* - * TODO: If offset/length is not aligned to recordsize, use - * vn_generic_copy_file_range() on this fragment. - * It would be better to do this after we lock the vnodes, but then we - * need something else than vn_generic_copy_file_range(). - */ - /* Lock both vnodes, avoiding risk of deadlock. */ do { mp = NULL; @@ -6300,6 +6293,16 @@ unlock: if (mp != NULL) vn_finished_write(mp); + /* + * Fall back if block_cloning feature is disabled + * or other EXDEV failures from zfs_vnops.c + */ + if (error == EXDEV) { + error = vn_generic_copy_file_range(ap->a_invp, ap->a_inoffp, + ap->a_outvp, ap->a_outoffp, ap->a_lenp, ap->a_flags, + ap->a_incred, ap->a_outcred, ap->a_fsizetd); + } + return (error); }