From nobody Tue Apr 04 10:35:51 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 4PrPnR0bHlz43Nqc; Tue, 4 Apr 2023 10:55:55 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from www541.your-server.de (www541.your-server.de [213.133.107.7]) (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 mx1.freebsd.org (Postfix) with ESMTPS id 4PrPnQ3BRxz48Vc; Tue, 4 Apr 2023 10:55:54 +0000 (UTC) (envelope-from mm@FreeBSD.org) Authentication-Results: mx1.freebsd.org; dkim=none; spf=softfail (mx1.freebsd.org: 213.133.107.7 is neither permitted nor denied by domain of mm@FreeBSD.org) smtp.mailfrom=mm@FreeBSD.org; dmarc=none Received: from sslproxy04.your-server.de ([78.46.152.42]) by www541.your-server.de with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1pje12-000Ljn-5k; Tue, 04 Apr 2023 12:35:52 +0200 Received: from [188.167.171.2] (helo=[10.0.9.128]) by sslproxy04.your-server.de with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pje11-000Tb4-Sz; Tue, 04 Apr 2023 12:35:51 +0200 Message-ID: Date: Tue, 4 Apr 2023 12:35:51 +0200 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 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: git: 2a58b312b62f - main - zfs: merge openzfs/zfs@431083f75 Content-Language: en-US To: Rick Macklem , Cy Schubert Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org, Pawel Dawidek References: <202304031513.333FD6qw014903@gitrepo.freebsd.org> <20230404040010.5D073224@slippy.cwsent.com> <20230404050740.6C25E2AA@slippy.cwsent.com> From: Martin Matuska In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Authenticated-Sender: martin@matuska.de X-Virus-Scanned: Clear (ClamAV 0.103.8/26865/Tue Apr 4 09:24:56 2023) X-Spamd-Result: default: False [-1.59 / 15.00]; SUSPICIOUS_RECIPS(1.50)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-0.99)[-0.990]; MIME_GOOD(-0.10)[text/plain]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org,dev-commits-src-main@freebsd.org]; FREEMAIL_TO(0.00)[gmail.com,cschubert.com]; FROM_EQ_ENVFROM(0.00)[]; FREEFALL_USER(0.00)[mm]; R_DKIM_NA(0.00)[]; ASN(0.00)[asn:24940, ipnet:213.133.96.0/19, country:DE]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_COUNT_THREE(0.00)[3]; HAS_X_AS(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; TO_DN_SOME(0.00)[]; FROM_HAS_DN(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; TAGGED_RCPT(0.00)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; DMARC_NA(0.00)[freebsd.org]; RCPT_COUNT_FIVE(0.00)[6]; ARC_NA(0.00)[] X-Rspamd-Queue-Id: 4PrPnQ3BRxz48Vc X-Spamd-Bar: - X-ThisMailContainsUnwantedMimeParts: N I have opened a PR for this (includes patch): https://github.com/openzfs/zfs/pull/14713 We still need to address the a_fsizetd problem. Maybe On 4. 4. 2023 7:22, Rick Macklem wrote: > On Mon, Apr 3, 2023 at 10:07 PM Cy Schubert wrote: >> In message > om> >> , 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. >> > If there is a way to test to see if block cloning is enabled at the beginning > of zfs_copy_file_range(), it should just call vn_generic_copy_file_range() > if it is not enabled (or something like that). > > rick > >> -- >> Cheers, >> Cy Schubert >> FreeBSD UNIX: Web: https://FreeBSD.org >> NTP: Web: https://nwtime.org >> >> e^(i*pi)+1=0 >> >> >>