From nobody Tue Apr 4 14:59:07 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 4PrWBG3JmBz43hkH; Tue, 4 Apr 2023 14:59:18 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1D4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4PrWBG2jHQz3R4l; Tue, 4 Apr 2023 14:59:18 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-pl1-x630.google.com with SMTP id iw3so31532293plb.6; Tue, 04 Apr 2023 07:59:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680620357; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=uL2uDINCXciyoQCXjs8UEiiAKGI8ZTmlf47BoTzb1Bs=; b=SLO/crZHs8gkPVlrrAL80x8fre37FH8kMxA9FpXUCp0SLyM8uGg4MnL+Y4KUlGBOtK X3LLYq88679u8ox144nhLte1IocgUXLwbzTNmkDFijNykBiil08DsTYkLfP5hwlBt2yI OoxxMB5EUlt0nYOlcnuQxH0gB/P8+VCkq4dCTL4IizpDES7sFX6CVN0Y79DkmD4XtiIX MCrJHg4GNJYRlv4Ci3lf6VBiAEapbGmy7QKoGvSaVMjZfHux1tnY8C+eOjfZBsgyyqkx npcLts7jIMgNnqv3Ub6Q1xy5FWwn0lShRrARtavG6fFAO3nwBA6pKInsBMh8TPcKbY/X Hd/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680620357; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=uL2uDINCXciyoQCXjs8UEiiAKGI8ZTmlf47BoTzb1Bs=; b=deaUydmzLZy0tSy9BmUW7a8HjqmOrCqsD+oiCn5QTJqlXMDBoaMHZba4WcFSs4a1nk N9wE+BQSdKmSdGGd/YlFl1DrJP0hZK8XnVENu3lYNkI8HL1bvvrxl8SUV8CFrRppSZ8O vcDaFoq08Wq5yLIOdWc+XUgsMF5FeYPIyf3efjeRPPK4Z48DgMp9gWTdvUh47eBJQTQo L2Sfzsed8C2LXso1P6LR/ndCYY2hRztyuajhYzGZ+ULXb31oHgyzkgdRYmp6ktTi6+u1 klUKXzdfRQA8l50I4ZV2sD4Pamc7t1cYAwSg7Nwk7B+71TPivL5DnvmxiAnTaXaepVyo cwQg== X-Gm-Message-State: AAQBX9dwxS1/VePnmFLqV8ZUT6RCbwpI8zgW41nDNO0+Y6Wf0ExmSMRY bLvIoTA2oLAHa5ABFguNfVLCWFSmhVWhjlZAvcgGQINgsw== X-Google-Smtp-Source: AKy350aDwOgJKTsvgL5+G7Cr2yf6mDWgYL/RhKEPcUcD9Vqr6b6NOLsRovUpupaiIH2QZ2g6vn2rHBsSGCMT6hKyLrk= X-Received: by 2002:a17:90a:4d41:b0:240:18c9:66ba with SMTP id l1-20020a17090a4d4100b0024018c966bamr1036889pjh.6.1680620357287; Tue, 04 Apr 2023 07:59:17 -0700 (PDT) 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 References: <202304041145.334Bjx6l035872@gitrepo.freebsd.org> <20230404141717.B976D31C@slippy.cwsent.com> In-Reply-To: <20230404141717.B976D31C@slippy.cwsent.com> From: Rick Macklem Date: Tue, 4 Apr 2023 07:59:07 -0700 Message-ID: Subject: Re: git: 8ee579abe09e - main - zfs: fall back if block_cloning feature is disabled To: Cy Schubert Cc: Martin Matuska , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org, Pawel Dawidek , mjg@freebsd.org Content-Type: multipart/mixed; boundary="00000000000066693605f883eb13" X-Rspamd-Queue-Id: 4PrWBG2jHQz3R4l X-Spamd-Bar: ---- X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; TAGGED_FROM(0.00)[] X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-ThisMailContainsUnwantedMimeParts: N --00000000000066693605f883eb13 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Apr 4, 2023 at 7:17=E2=80=AFAM Cy Schubert wrote: > > CAUTION: This email originated from outside of the University of Guelph. = Do not click links or open attachments unless you recognize the sender and = know the content is safe. If in doubt, forward suspicious emails to IThelp@= uoguelph.ca > > > In message <202304041145.334Bjx6l035872@gitrepo.freebsd.org>, Martin > Matuska wr > ites: > > The branch main has been updated by mm: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=3D8ee579abe09ec1fe15c588fc= 9a08370b > > 83b81cd6 > > > > 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/c > > ontrib/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 =3D *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 th= en we > > - * need something else than vn_generic_copy_file_range(). > > - */ > > - > > /* Lock both vnodes, avoiding risk of deadlock. */ > > do { > > mp =3D NULL; > > @@ -6300,6 +6293,16 @@ unlock: > > if (mp !=3D NULL) > > vn_finished_write(mp); > > > > + /* > > + * Fall back if block_cloning feature is disabled > > + * or other EXDEV failures from zfs_vnops.c > > + */ > > + if (error =3D=3D EXDEV) { > > + error =3D vn_generic_copy_file_range(ap->a_invp, ap->a_in= offp, > > + ap->a_outvp, ap->a_outoffp, ap->a_lenp, ap->a= _flags > > , > > + ap->a_incred, ap->a_outcred, ap->a_fsizetd); > > + } > > + > > return (error); > > } > > > > > > This is too late to fall back. On Rick's suggestion the following makes t= he > determination at > zfs_freebsd_copy_file_range() entry much earlier. > > 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 d41821ff67f1..e18dcca58192 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,6 +6243,18 @@ zfs_freebsd_copy_file_range(struct > vop_copy_file_range_args *ap) > int error; > uint64_t len =3D *ap->a_lenp; > > + znode_t *outzp =3D VTOZ(ap->a_outvp); > + zfsvfs_t *outzfsvfs =3D ZTOZSB(outzp); > + objset_t *outos =3D outzfsvfs->z_os; > + > + if (!spa_feature_is_enabled(dmu_objset_spa(outos), > + SPA_FEATURE_BLOCK_CLONING)) { > + error =3D vn_generic_copy_file_range(ap->a_invp, ap->a_in= offp, > + ap->a_outvp, ap->a_outoffp, ap->a_lenp, ap->a_fla= gs, > + ap->a_incred, ap->a_outcred, ap->a_fsizetd); > + return (error); > + } > + Can this test be done safely when the vnode is not locked? (I don't know if ZFS ever does "forced dismount", but an unlocked vnode could be doomed if it does?) If so, adding this patch would be nice. I'd leave Martin's patch in the code so that other EXDEV failures get handled. If you cannot do the above check with an unlocked vnode, the attached patch at least avoids some of the locking.(Not yet even compile tested.) rick > /* > * TODO: If offset/length is not aligned to recordsize, use > * vn_generic_copy_file_range() on this fragment. > > > Can you revert your commit and commit this, please. > > > -- > Cheers, > Cy Schubert > FreeBSD UNIX: Web: https://FreeBSD.org > NTP: Web: https://nwtime.org > > e^(i*pi)+1=3D0 > > > > --00000000000066693605f883eb13 Content-Type: application/octet-stream; name="zfscopynew.patch" Content-Disposition: attachment; filename="zfscopynew.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lg2dydw30 LS0tIHN5cy9jb250cmliL29wZW56ZnMvbW9kdWxlL29zL2ZyZWVic2QvemZzL3pmc192bm9wc19v cy5jCTIwMjMtMDQtMDQgMDc6MDk6MTYuNDA0NDk5MDAwIC0wNzAwCisrKyBzeXMvY29udHJpYi9v cGVuemZzL21vZHVsZS9vcy9mcmVlYnNkL3pmcy96ZnNfdm5vcHNfb3MuYy5uZXcJMjAyMy0wNC0w NCAwNzo1NjowNS4yMjgyODYwMDAgLTA3MDAKQEAgLTYyNDIsNyArNjI0MiwzMSBAQCB6ZnNfZnJl ZWJzZF9jb3B5X2ZpbGVfcmFuZ2Uoc3RydWN0IHZvcF9jb3B5X2ZpbGVfcmFuZ2UKIAlzdHJ1Y3Qg dWlvIGlvOwogCWludCBlcnJvcjsKIAl1aW50NjRfdCBsZW4gPSAqYXAtPmFfbGVucDsKKwl6ZnN2 ZnNfdCAqb3V0emZzdmZzOworCW9qc2V0X3QgKm91dG9zOworCWJvb2wgZG9uZV9vdXR2cDsKIAor CW1wID0gTlVMTDsKKwllcnJvciA9IHZuX3N0YXJ0X3dyaXRlKG91dHZwLCAmbXAsIFZfV0FJVCk7 CisJaWYgKGVycm9yID09IDApCisJCWVycm9yID0gdm5fbG9jayhvdXR2cCwgTEtfRVhDTFVTSVZF KTsKKwlkb25lX291dHZwID0gdHJ1ZTsKKwlpZiAoZXJyb3IgPT0gMCkgeworCQlvdXR6ZnN2ZnMg PSBaVE9aU0IoVlRPWihvdXR2cCkpOworCQlvdXRvcyA9IG91dHpmc3Zmcy0+el9vczsKKwkJaWYg KCFzcGFfZmVhdHVyZV9pc19lbmFibGVkKGRtdV9vanNldF9zcGEob3V0b3MpLAorCQkgICAgU1BB X0ZFQVRVUkVfQkxPQ0tfQ0xPTklORykpIHsKKwkJCVZPUF9VTkxPQ0sob3V0dnApOworCQkJaWYg KG1wICE9IE5VTEwpCisJCQkJdm5fZmluaXNoZWRfd3JpdGUobXApOworCQkJZXJyb3IgPSB2bl9n ZW5lcmljX2NvcHlfZmlsZV9yYW5nZShhcC0+YV9pbnZwLAorCQkJICAgIGFwLT5hX2lub2ZmcCwg YXAtPmFfb3V0dnAsIGFwLT5hX291dG9mZnAsCisJCQkgICAgYXAtPmFfbGVucCwgYXAtPmFfZmxh Z3MsIGFwLT5hX2luY3JlZCwKKwkJCSAgICBhcC0+YV9vdXRjcmVkLCBhcC0+YV9mc2l6ZXRkKTsK KwkJCXJldHVybiAoZXJyb3IpOworCQl9CisJfQorCiAJLyoKIAkgKiBUT0RPOiBJZiBvZmZzZXQv bGVuZ3RoIGlzIG5vdCBhbGlnbmVkIHRvIHJlY29yZHNpemUsIHVzZQogCSAqIHZuX2dlbmVyaWNf Y29weV9maWxlX3JhbmdlKCkgb24gdGhpcyBmcmFnbWVudC4KQEAgLTYyNTIsMjcgKzYyNzYsMjkg QEAgemZzX2ZyZWVic2RfY29weV9maWxlX3JhbmdlKHN0cnVjdCB2b3BfY29weV9maWxlX3Jhbmdl CiAKIAkvKiBMb2NrIGJvdGggdm5vZGVzLCBhdm9pZGluZyByaXNrIG9mIGRlYWRsb2NrLiAqLwog CWRvIHsKLQkJbXAgPSBOVUxMOwotCQllcnJvciA9IHZuX3N0YXJ0X3dyaXRlKG91dHZwLCAmbXAs IFZfV0FJVCk7CisJCWlmICghZG9uZV9vdXR2cCkgeworCQkJbXAgPSBOVUxMOworCQkJZXJyb3Ig PSB2bl9zdGFydF93cml0ZShvdXR2cCwgJm1wLCBWX1dBSVQpOworCQkJaWYgKGVycm9yID09IDAp CisJCQkJZXJyb3IgPSB2bl9sb2NrKG91dHZwLCBMS19FWENMVVNJVkUpOworCQl9CiAJCWlmIChl cnJvciA9PSAwKSB7Ci0JCQllcnJvciA9IHZuX2xvY2sob3V0dnAsIExLX0VYQ0xVU0lWRSk7Ci0J CQlpZiAoZXJyb3IgPT0gMCkgewotCQkJCWlmIChpbnZwID09IG91dHZwKQotCQkJCQlicmVhazsK LQkJCQllcnJvciA9IHZuX2xvY2soaW52cCwgTEtfU0hBUkVEIHwgTEtfTk9XQUlUKTsKLQkJCQlp ZiAoZXJyb3IgPT0gMCkKLQkJCQkJYnJlYWs7Ci0JCQkJVk9QX1VOTE9DSyhvdXR2cCk7Ci0JCQkJ aWYgKG1wICE9IE5VTEwpCi0JCQkJCXZuX2ZpbmlzaGVkX3dyaXRlKG1wKTsKLQkJCQltcCA9IE5V TEw7Ci0JCQkJZXJyb3IgPSB2bl9sb2NrKGludnAsIExLX1NIQVJFRCk7Ci0JCQkJaWYgKGVycm9y ID09IDApCi0JCQkJCVZPUF9VTkxPQ0soaW52cCk7Ci0JCQl9CisJCQlpZiAoaW52cCA9PSBvdXR2 cCkKKwkJCQlicmVhazsKKwkJCWVycm9yID0gdm5fbG9jayhpbnZwLCBMS19TSEFSRUQgfCBMS19O T1dBSVQpOworCQkJaWYgKGVycm9yID09IDApCisJCQkJYnJlYWs7CisJCQlWT1BfVU5MT0NLKG91 dHZwKTsKKwkJCWlmIChtcCAhPSBOVUxMKQorCQkJCXZuX2ZpbmlzaGVkX3dyaXRlKG1wKTsKKwkJ CW1wID0gTlVMTDsKKwkJCWVycm9yID0gdm5fbG9jayhpbnZwLCBMS19TSEFSRUQpOworCQkJaWYg KGVycm9yID09IDApCisJCQkJVk9QX1VOTE9DSyhpbnZwKTsKIAkJfQogCQlpZiAobXAgIT0gTlVM TCkKIAkJCXZuX2ZpbmlzaGVkX3dyaXRlKG1wKTsKKwkJZG9uZV9vdXR2cCA9IGZhbHNlOwogCX0g d2hpbGUgKGVycm9yID09IDApOwogCWlmIChlcnJvciAhPSAwKQogCQlyZXR1cm4gKGVycm9yKTsK --00000000000066693605f883eb13--