From nobody Tue Apr 4 05:07:40 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 4PrG3h55hHz43vrK; Tue, 4 Apr 2023 05:07:44 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from omta001.cacentral1.a.cloudfilter.net (omta001.cacentral1.a.cloudfilter.net [3.97.99.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "Client", Issuer "CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4PrG3g3vwkz4M4Y; Tue, 4 Apr 2023 05:07:43 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Authentication-Results: mx1.freebsd.org; dkim=none; spf=none (mx1.freebsd.org: domain of cy.schubert@cschubert.com has no SPF policy when checking 3.97.99.32) smtp.mailfrom=cy.schubert@cschubert.com; dmarc=none Received: from shw-obgw-4002a.ext.cloudfilter.net ([10.228.9.250]) by cmsmtp with ESMTP id jPiippEsguZMSjYtSpwBcb; Tue, 04 Apr 2023 05:07:42 +0000 Received: from spqr.komquats.com ([70.66.148.124]) by cmsmtp with ESMTPA id jYtQplIK8yAOejYtRpIqGP; Tue, 04 Apr 2023 05:07:42 +0000 X-Authority-Analysis: v=2.4 cv=e5oV9Il/ c=1 sm=1 tr=0 ts=642bb09e a=Cwc3rblV8FOMdVN/wOAqyQ==:117 a=Cwc3rblV8FOMdVN/wOAqyQ==:17 a=kj9zAlcOel0A:10 a=dKHAf1wccvYA:10 a=6I5d2MoRAAAA:8 a=YxBL1-UpAAAA:8 a=EkcXrb_YAAAA:8 a=bpi3X3VP2ki-OHGM3xAA:9 a=CjuIK1q_8ugA:10 a=IjZwj45LgO3ly-622nXo:22 a=Ia-lj3WSrqcvXOmTRaiG:22 a=LK5xJRSDVpKd5WXXoEvA:22 Received: from slippy.cwsent.com (slippy [10.1.1.91]) by spqr.komquats.com (Postfix) with ESMTP id 89155A82; Mon, 3 Apr 2023 22:07:40 -0700 (PDT) Received: by slippy.cwsent.com (Postfix, from userid 1000) id 6C25E2AA; Mon, 3 Apr 2023 22:07:40 -0700 (PDT) X-Mailer: exmh version 2.9.0 11/07/2018 with nmh-1.8+dev Reply-to: Cy Schubert From: Cy Schubert X-os: FreeBSD X-Sender: cy@cwsent.com X-URL: http://www.cschubert.com/ To: Rick Macklem cc: Cy Schubert , Martin Matuska , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 2a58b312b62f - main - zfs: merge openzfs/zfs@431083f75 In-reply-to: References: <202304031513.333FD6qw014903@gitrepo.freebsd.org> <20230404040010.5D073224@slippy.cwsent.com> Comments: In-reply-to Rick Macklem message dated "Mon, 03 Apr 2023 21:59:25 -0700." 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=us-ascii Date: Mon, 03 Apr 2023 22:07:40 -0700 Message-Id: <20230404050740.6C25E2AA@slippy.cwsent.com> X-CMAE-Envelope: MS4xfFnjOjUL/0ckj1dEMIM/3JNPvvyQdDcKNHnOWWwmFwNh6pSSb2sUFN+MUPcZYpxe/4X9EGrG8DnvoHxcVgEe0v3z8570zCy+fDaO/il8MnxQ+9nImiDb DfszkjqojWES7mdK9C+GbIUC0sE4G8RN292UZuGehwY9OppHfsttMsXDWAxL/LsHLjvgLn3334YHpmXGt0pShksTbdDKWG656CRCsPouy4M3h5W9cvklLJfj COPrGxBvGzPil6ccUE7lzl23GFd3+Yq2gvCCram9M5pzdT+I8o7N1sISs31iyqmZKF0lUDsa7+EcPvi43y+KbUtfu4ro+0nnFxrF/Htpr1CP7m4l/lTtlTt5 3nvd0fTk X-Spamd-Result: default: False [-0.29 / 15.00]; SUSPICIOUS_RECIPS(1.50)[]; AUTH_NA(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-0.99)[-0.992]; MV_CASE(0.50)[]; RCVD_IN_DNSWL_MED(-0.20)[3.97.99.32:from]; MIME_GOOD(-0.10)[text/plain]; FROM_HAS_DN(0.00)[]; REPLYTO_EQ_FROM(0.00)[]; TAGGED_RCPT(0.00)[]; DMARC_NA(0.00)[cschubert.com: no valid DMARC record]; R_SPF_NA(0.00)[no SPF record]; TO_MATCH_ENVRCPT_SOME(0.00)[]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org,dev-commits-src-main@freebsd.org]; RCVD_COUNT_FIVE(0.00)[5]; ARC_NA(0.00)[]; RCVD_TLS_LAST(0.00)[]; RCPT_COUNT_FIVE(0.00)[6]; TO_DN_SOME(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; RWL_MAILSPIKE_POSSIBLE(0.00)[3.97.99.32:from]; FREEMAIL_TO(0.00)[gmail.com]; R_DKIM_NA(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; ASN(0.00)[asn:16509, ipnet:3.96.0.0/15, country:US]; MIME_TRACE(0.00)[0:+]; HAS_REPLYTO(0.00)[Cy.Schubert@cschubert.com] X-Rspamd-Queue-Id: 4PrG3g3vwkz4M4Y X-Spamd-Bar: / X-ThisMailContainsUnwantedMimeParts: N In message , Rick Macklem writes: > On Mon, Apr 3, 2023 at 9:00=E2=80=AFPM Cy Schubert om> wrote: > > > > In message <202304031513.333FD6qw014903@gitrepo.freebsd.org>, Martin > > Matuska wr > > ites: > > > The branch main has been updated by mm: > > > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=3D2a58b312b62f908ec92311d1= > bd8536db > > > aeb8e55b > > > > > > commit 2a58b312b62f908ec92311d1bd8536dbaeb8e55b > > > Merge: b98fbf3781df 431083f75bdd > > > Author: Martin Matuska > > > AuthorDate: 2023-04-03 14:49:30 +0000 > > > Commit: Martin Matuska > > > CommitDate: 2023-04-03 14:49:30 +0000 > > > > > > zfs: merge openzfs/zfs@431083f75 > > > > > > Notable upstream pull request merges: > > > #12194 Fix short-lived txg caused by autotrim > > > #13368 ZFS_IOC_COUNT_FILLED does unnecessary txg_wait_synced() > > > #13392 Implementation of block cloning for ZFS > > > #13741 SHA2 reworking and API for iterating over multiple impleme= > ntatio > > > ns > > > #14282 Sync thread should avoid holding the spa config write lock > > > when possible > > > #14283 txg_sync should handle write errors in ZIL > > > #14359 More adaptive ARC eviction > > > #14469 Fix NULL pointer dereference in zio_ready() > > > #14479 zfs redact fails when dnodesize=3Dauto > > > #14496 improve error message of zfs redact > > > #14500 Skip memory allocation when compressing holes > > > #14501 FreeBSD: don't verify recycled vnode for zfs control direc= > tory > > > #14502 partially revert PR 14304 (eee9362a7) > > > #14509 Fix per-jail zfs.mount_snapshot setting > > > #14514 Fix data race between zil_commit() and zil_suspend() > > > #14516 System-wide speculative prefetch limit > > > #14517 Use rw_tryupgrade() in dmu_bonus_hold_by_dnode() > > > #14519 Do not hold spa_config in ZIL while blocked on IO > > > #14523 Move dmu_buf_rele() after dsl_dataset_sync_done() > > > #14524 Ignore too large stack in case of dsl_deadlist_merge > > > #14526 Use .section .rodata instead of .rodata on FreeBSD > > > #14528 ICP: AES-GCM: Refactor gcm_clear_ctx() > > > #14529 ICP: AES-GCM: Unify gcm_init_ctx() and gmac_init_ctx() > > > #14532 Handle unexpected errors in zil_lwb_commit() without ASSER= > T() > > > #14544 icp: Prevent compilers from optimizing away memset() > > > in gcm_clear_ctx() > > > #14546 Revert zfeature_active() to static > > > #14556 Remove bad kmem_free() oversight from previous zfsdev_stat= > e_list > > > patch > > > #14563 Optimize the is_l2cacheable functions > > > #14565 FreeBSD: zfs_znode_alloc: lock the vnode earlier > > > #14566 FreeBSD: fix false assert in cache_vop_rmdir when replayin= > g ZIL > > > #14567 spl: Add cmn_err_once() to log a message only on the first= > call > > > #14568 Fix incremental receive silently failing for recursive sen= > ds > > > #14569 Restore ASMABI and other Unify work > > > #14576 Fix detection of IBM Power8 machines (ISA 2.07) > > > #14577 Better handling for future crypto parameters > > > #14600 zcommon: Refactor FPU state handling in fletcher4 > > > #14603 Fix prefetching of indirect blocks while destroying > > > #14633 Fixes in persistent error log > > > #14639 FreeBSD: Remove extra arc_reduce_target_size() call > > > #14641 Additional limits on hole reporting > > > #14649 Drop lying to the compiler in the fletcher4 code > > > #14652 panic loop when removing slog device > > > #14653 Update vdev state for spare vdev > > > #14655 Fix cloning into already dirty dbufs > > > #14678 Revert "Do not hold spa_config in ZIL while blocked on IO" > > > > > > Obtained from: OpenZFS > > > OpenZFS commit: 431083f75bdd3efaee992bdd672625ec7240d252 > > > > Another problem related to copy_file_range() is the following example. > > > > slippy$ df -h build/make/Makefile . > > Filesystem Size Used Avail Capacity Mounted on > > t/wrkdir/amd64 52G 53M 52G 0% /export/wrkdir/amd64 > > t/wrkdir/amd64 52G 53M 52G 0% /export/wrkdir/amd64 > > slippy$ cp build/make/Makefile . > > cp: build/make/Makefile: Cross-device link > > slippy$ > > > > And, > > > > slippy$ cp y4menc.h foobar > > cp: y4menc.h: Cross-device link > > slippy$ > > > > But the following works because /tmp is mfs and /var/tmp is ufs. > > > > slippy$ cp y4menc.h /tmp > > slippy$ > > slippy$ cp y4menc.h /var/tmp > > slippy$ > > > > Copying files from one zpool to a dataset in another zpool also works as > > does copying files from different datasets on the same zpool. Only copyin= > g > > files from/to the same dataset results in cross device link. > > > zfs_copy_file_range() will only be called if the source and destination > both exist on the same mount point. (I'm guessing that's what you mean > by "same dataset".) Correct. The long term solution to the problem (for users) would be to enable block_cloning. One can test this by testing, checkpoint the pool, enable block_cloning, problem goes away, export and import the pool with --rewind-to-checkpoint to look at the regression again. As to why we see a Cross-device link, dtrace: script './dtrace.d' matched 1 probe CPU ID FUNCTION:NAME 3 26104 vn_copy_file_range:return int64_t 0x12 0x12 == EXDEV. As to why, zfs_clone_range() is called unconditionally at zfs/zfs_vnops_os.c:6292. If the feature is not enabled zfs_clone_range() sets the return code to EXDEV at line 1083 of zfs_vnops.c. Therefore block_cloning MUST be enabled. To reiterate, the long term solution would be to enable block_cloning. For those who either wish or need to defer enabling of block_cloning, because the zpool is occasionally imported by older versions of freebsd requiring write acess, or other reason. -- Cheers, Cy Schubert FreeBSD UNIX: Web: https://FreeBSD.org NTP: Web: https://nwtime.org e^(i*pi)+1=0