Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 10 Nov 2023 23:47:23 +0100
From:      Martin Matuska <mm@FreeBSD.org>
To:        Xin LI <delphij@gmail.com>
Cc:        d@delphij.net, FreeBSD-STABLE Mailing List <freebsd-stable@freebsd.org>, pjd@freebsd.org
Subject:   Re: Is 14.0 to released based on 0 for sysctl vfs.zfs.bclone_enabled ?
Message-ID:  <77ad9593-34a8-48dc-8533-aafb852f1d19@FreeBSD.org>
In-Reply-To: <CAGMYy3tqwa_JQ01BKLVfSKt9N%2BWyK=M13j_i3kT=LJ_-MQyrQQ@mail.gmail.com>
References:  <2F81D978-7DBD-42CE-8ECF-C020B0CB5C29.ref@yahoo.com> <2F81D978-7DBD-42CE-8ECF-C020B0CB5C29@yahoo.com> <7a906956-6836-421e-b25e-ff701369e3ed@FreeBSD.org> <BBFDD30F-FB5D-44C8-ADA7-5B5AF859D86A@karels.net> <830CD3A8-DB62-418D-A7F7-8DA6CB46B1F5@yahoo.com> <05b493bc-94a5-4c78-bebf-5581addc5b7b@FreeBSD.org> <47c5b902-eea6-4194-b84a-99a6343f6bd0@delphij.net> <ba2e7bdc-68ba-4093-816a-2f0ea5bb6a07@FreeBSD.org> <CAGMYy3tqwa_JQ01BKLVfSKt9N%2BWyK=M13j_i3kT=LJ_-MQyrQQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------hcDCO5UsWNX1hkTPj6uApmeT
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

The issues I had to deal with went away by deleting the problematic 
files (for good, no snapshot copies left). Deleting a dataset should be 
even better.

On 10. 11. 2023 17:58, Xin LI wrote:
>
>
> On Fri, Nov 10, 2023 at 7:50 AM Martin Matuska <mm@freebsd.org> wrote:
>
>     Hi Xin,
>
>     since when have you been using block cloning on the system? Is it
>     possible that there is already corrupted block-cloned data from the
>
>
> That's a good question, I can't 100% rule out this possibility.  I was 
> following -CURRENT in ~weekly to ~monthly on that system, and the pool 
> was created in March 2014.
>
> Do you think I should try rebuilding the pool from scratch?  I do have 
> remote backup on a different server but was avoiding it because it's 
> time consuming.
>
>     past? Is everything on one dataset or are you using multiple datasets
>     for /usr/src and /usr/obj?
>
>
> /usr/src and /usr/obj are separate datasets, and the system runs 
> Poudriere so it have multiple copies of slightly different /usr/src 
> and /usr/obj's.
>
> Is there a way to identify datasets with block cloning, by the way?  
> Maybe I should try recreating these datasets first?
>
>
>
>     Best regards,
>     mm
>
>     On 10. 11. 2023 8:04, Xin Li wrote:
>     > On 2023-11-05 16:34, Martin Matuska wrote:
>     >> OpenZFS 2.2.0 in FreeBSD 14 fully supports block cloning. You can
>     >> work with pools that have feature@block_cloning enabled.
>     >> The sysctl variable vfs.zfs.bclone_enabled affects the behavior of
>     >> zfs_clone_range() which is called by copy_file_range(). When it is
>     >> set to 0, zfs_clone_range() does not do block cloning.
>     >> If it is set to anything else than 0, zfs_clone_range() does block
>     >> cloning (if all conditions are met - same ZFS pool, correct data
>     >> alignment, etc.).
>     >>
>     >> In FreeBSD-main, this tunable is enabled and I plan to enable
>     it in
>     >> stable/14 somewhere around December 11, 2023.
>     >>
>     >> As of today I personally use block cloning on all my systems.
>     >
>     > I'd like to share a different data point.  It still panics on my
>     > storage (running -CURRENT about a week ago) when enabled and can be
>     > triggered by "make buildworld buildkernel".  I wasn't able to
>     capture
>     > earlier coredump until the most recent one, which panicked with:
>     >
>     >
>     > cpuid = 2
>     > time = 1699593456
>     > KDB: stack backtrace:
>     > db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame
>     > 0xfffffe022f2bd7e0
>     > vpanic() at vpanic+0x132/frame 0xfffffe022f2bd910
>     > spl_panic() at spl_panic+0x3a/frame 0xfffffe022f2bd970
>     > dmu_brt_clone() at dmu_brt_clone+0x555/frame 0xfffffe022f2bd9e0
>     > zfs_clone_range() at zfs_clone_range+0xa4c/frame 0xfffffe022f2bdbb0
>     > zfs_freebsd_copy_file_range() at
>     > zfs_freebsd_copy_file_range+0x18a/frame 0xfffffe022f2bdc30
>     > vn_copy_file_range() at vn_copy_file_range+0x163/frame
>     0xfffffe022f2bdce0
>     > kern_copy_file_range() at kern_copy_file_range+0x380/frame
>     > 0xfffffe022f2bddb0
>     > sys_copy_file_range() at sys_copy_file_range+0x78/frame
>     > 0xfffffe022f2bde00
>     > amd64_syscall() at amd64_syscall+0x153/frame 0xfffffe022f2bdf30
>     > fast_syscall_common() at fast_syscall_common+0xf8/frame
>     > 0xfffffe022f2bdf30
>     > --- syscall (569, FreeBSD ELF64, copy_file_range), rip =
>     > 0x7fbb2da4ada, rsp = 0x7fbb02c5d48, rbp = 0x7fbb02c61e0 ---
>     > Uptime: 2h32m27s
>     > Dumping 7800 out of 32696
>     > MB:..1%..11%..21%..31%..41%..51%..61%..71%..81%..91%
>     >
>     > #0  __curthread () at /usr/src/sys/amd64/include/pcpu_aux.h:57
>     > #1  doadump (textdump=textdump@entry=1) at
>     > /usr/src/sys/kern/kern_shutdown.c:405
>     > #2  0xffffffff80694480 in kern_reboot (howto=260) at
>     > /usr/src/sys/kern/kern_shutdown.c:526
>     > #3  0xffffffff8069497f in vpanic (fmt=0xffffffff82603415
>     "VERIFY3(nbps
>     > == numbufs) failed (%llu == %llu)\n",
>     ap=ap@entry=0xfffffe022f2bd950)
>     > at /usr/src/sys/kern/kern_shutdown.c:970
>     > #4  0xffffffff8232999a in spl_panic (file=<optimized out>,
>     > func=<optimized out>, line=<unavailable>, fmt=<unavailable>) at
>     > /usr/src/sys/contrib/openzfs/module/os/freebsd/spl/spl_misc.c:103
>     > #5  0xffffffff823a6605 in dmu_brt_clone
>     > (os=os@entry=0xfffff800c5ce4000, object=<optimized out>,
>     > offset=offset@entry=0, length=length@entry=207477,
>     > tx=tx@entry=0xfffff8071a108d00, bps=bps@entry=0xfffffe01e218c000,
>     > nbps=2, replay=0)
>     >     at /usr/src/sys/contrib/openzfs/module/zfs/dmu.c:2303
>     > #6  0xffffffff8250f67c in zfs_clone_range (inzp=0xfffff804416ac000,
>     > inoffp=0xfffff800b81cb048, outzp=0xfffff806f58f03a0,
>     > outoffp=0xfffff800b8063048, lenp=lenp@entry=0xfffffe022f2bdbf0,
>     > cr=0xfffff8000a6fe600)
>     >     at /usr/src/sys/contrib/openzfs/module/zfs/zfs_vnops.c:1326
>     > #7  0xffffffff8234b3ba in zfs_freebsd_copy_file_range
>     > (ap=0xfffffe022f2bdc48) at
>     >
>     /usr/src/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c:6294
>     > #8  0xffffffff8079f443 in VOP_COPY_FILE_RANGE
>     > (invp=0xfffff804416cb1c0, inoffp=0xfffff800b81cb048,
>     > outvp=0xfffff806f51d3380, outoffp=0xfffff800b8063048,
>     > lenp=0xfffffe022f2bdd48, incred=0xfffff8000a6fe600,
>     flags=<optimized
>     > out>,
>     >     outcred=<optimized out>, fsizetd=<optimized out>) at
>     > ./vnode_if.h:2385
>     > #9  vn_copy_file_range (invp=invp@entry=0xfffff804416cb1c0,
>     > inoffp=inoffp@entry=0xfffff800b81cb048,
>     > outvp=outvp@entry=0xfffff806f51d3380,
>     > outoffp=outoffp@entry=0xfffff800b8063048,
>     > lenp=lenp@entry=0xfffffe022f2bdd48, flags=flags@entry=0,
>     >     incred=0xfffff8000a6fe600, outcred=0xfffff8000a6fe600,
>     > fsize_td=0xfffffe022925b3a0) at /usr/src/sys/kern/vfs_vnops.c:3087
>     > #10 0xffffffff8079a070 in kern_copy_file_range
>     > (td=td@entry=0xfffffe022925b3a0, infd=<optimized out>,
>     > inoffp=0xfffff800b81cb048, inoffp@entry=0x0, outfd=<optimized out>,
>     > outoffp=0xfffff800b8063048, outoffp@entry=0x0,
>     len=9223372036854775807,
>     >     flags=0) at /usr/src/sys/kern/vfs_syscalls.c:4973
>     > #11 0xffffffff8079a178 in sys_copy_file_range
>     (td=0xfffffe022925b3a0,
>     > uap=0xfffffe022925b7a0) at /usr/src/sys/kern/vfs_syscalls.c:5011
>     > #12 0xffffffff80a97aa3 in syscallenter (td=0xfffffe022925b3a0) at
>     > /usr/src/sys/amd64/amd64/../../kern/subr_syscall.c:188
>     > #13 amd64_syscall (td=0xfffffe022925b3a0, traced=0) at
>     > /usr/src/sys/amd64/amd64/trap.c:1194
>     > #14 <signal handler called>
>     > #15 0x000007fbb2da4ada in ?? ()
>     >
>     >
>     > and disabling bclone does appear to allow me to finish buildworld /
>     > buildkernel.
>     >
>     > The pool didn't have redaction_list_spill enabled.
>     >
>     > The ASSERT3U(nbps, ==, numbufs); in dmu_brt_clone was added when
>     block
>     > clone is first implemented.
>     >
>     > It seems that I am the only person who is seeing this as of
>     today.  It
>     > seems that block clone was indeed being used for some data:
>     >
>     > saturn  bcloneused 1.18M                          -
>     > saturn  bclonesaved 1.21M                          -
>     > saturn  bcloneratio 2.02x                          -
>     >
>     > The pool have dedup enabled for some datasets.
>     >
>     > Any suggestions?  (In extreme cases I can recreate the storage pool
>     > from backup or copy the data somewhere else, then recreate the
>     pool,
>     > then copy data back, but I'd like to avoid that if possible)
>     >
>     > Cheers,
>     >
>     >
>     >>
>     >> mm
>     >>
>     >> On 04/11/2023 13:35, Mark Millard wrote:
>     >>> On Nov 4, 2023, at 04:38, Mike Karels <mike@karels.net> wrote:
>     >>>
>     >>>> On 4 Nov 2023, at 4:01, Ronald Klop wrote:
>     >>>>
>     >>>>> On 11/4/23 02:39, Mark Millard wrote:
>     >>>>>> It looks to me like releng/14.0 (as of 14.0-RC4) still has:
>     >>>>>>
>     >>>>>> int zfs_bclone_enabled;
>     >>>>>> SYSCTL_INT(_vfs_zfs, OID_AUTO, bclone_enabled, CTLFLAG_RWTUN,
>     >>>>>> &zfs_bclone_enabled, 0, "Enable block cloning");
>     >>>>>>
>     >>>>>> leaving block cloning effectively disabled by default, no
>     >>>>>> matter what the pool has enabled.
>     >>>>>>
>     >>>>>> https://www.freebsd.org/releases/14.0R/relnotes/ also reports:
>     >>>>>>
>     >>>>>> QUOTE
>     >>>>>> OpenZFS has been upgraded to version 2.2. New features include:
>     >>>>>> •
>     >>>>>> block cloning, which allows shallow copies of blocks in file
>     >>>>>> copies. This is optional, and disabled by default; it can be
>     >>>>>> enabled with sysctl vfs.zfs.bclone_enabled=1.
>     >>>>>> END QUOTE
>     >>>>>>
>     >>>>>
>     >>>>> I think this answers your question in the subject.
>     >>>> I think so too (and I wrote that text).
>     >>> Thanks for the confirmation of the final intent.
>     >>>
>     >>> I believe this makes:
>     >>>
>     >>> QUOTE
>     >>> author Brian Behlendorf <behlendorf1@llnl.gov> 2023-05-25
>     20:53:08
>     >>> +0000
>     >>> committer GitHub <noreply@github.com> 2023-05-25 20:53:08 +0000
>     >>> commit 91a2325c4a0fbe01d0bf212e44fa9d85017837ce (patch)
>     >>> tree dd01dfce6aeef357ade1775acf18aade535c6271
>     >>> . . .
>     >>> Update compatibility.d files
>     >>>
>     >>> Add an openzfs-2.2 compatibility file for the next release.
>     Edon-R
>     >>> support has been enabled for FreeBSD removing the need for
>     different
>     >>> FreeBSD and Linux files. Symlinks for the -linux and -freebsd
>     names
>     >>> are created for any scripts expecting that convention.
>     Additionally,
>     >>> a symlink for ubunutu-22.04 was added. Signed-off-by: Brian
>     >>> Behlendorf <behlendorf1@llnl.gov> Closes #14833
>     >>> END QUOTE
>     >>>
>     >>> technically incorrect in that compatibility.d/openzfs-2.2-freebsd
>     >>> should be distinct in content from compatibility.d/openzfs-2.2 so
>     >>> that block cloning would not be enabled.
>     >>>
>     >>>
>     >>>>>> Just curiousity on my part about the default completeness of
>     >>>>>> openzfs-2.2 support, not an objection either way.
>     >>>>>>
>     >>>>>
>     >>>>> I haven't seen new issues with block cloning in the last few
>     weeks
>     >>>>> mentioned on the mailing lists. All known issues are fixed
>     AFAIK.
>     >>>>> But I can imagine that the risk+effect ratio of data
>     corruption is
>     >>>>> seen as a bit too high for a 14.0 release for this particular
>     >>>>> feature. That does not diminish the rest of the completeness of
>     >>>>> openzfs-2.2.
>     >>>>>
>     >>>>> NB: I'm not involved in developing openzfs or the decision
>     making
>     >>>>> in the release. Just repeating what I read on the lists.
>     >>>> There was another block cloning fix in 14.0-RC4; see the
>     commit log.
>     >>>> Maybe there will be no more issues, but it seems that corner
>     cases
>     >>>> were
>     >>>> still being found recently.
>     >>> Looks like I'll stay at openzfs-2.1 pool features until there is
>     >>> a release that no longer has the default status:
>     >>>
>     >>> 0 for sysctl vfs.zfs.bclone_enabled
>     >>>
>     >>> I use main [so: 15 now] but only enable openzfs-2.* pool features
>     >>> supported by default on some FreeBSD release, that has an accurate
>     >>> compatibility.d/openzfs-2.*-freebsd file.
>     >>>
>     >>> ===
>     >>> Mark Millard
>     >>> marklmi at yahoo.com <http://yahoo.com>;
>     >>>
>     >>>
>     >>
>     >
>
--------------hcDCO5UsWNX1hkTPj6uApmeT
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>The issues I had to deal with went away by deleting the
      problematic files (for good, no snapshot copies left). Deleting a
      dataset should be even better.<br>
    </p>
    <div class="moz-cite-prefix">On 10. 11. 2023 17:58, Xin LI wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAGMYy3tqwa_JQ01BKLVfSKt9N+WyK=M13j_i3kT=LJ_-MQyrQQ@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div dir="ltr">
          <div class="gmail_default"
            style="font-family:monospace,monospace"><br>
          </div>
        </div>
        <br>
        <div class="gmail_quote">
          <div dir="ltr" class="gmail_attr">On Fri, Nov 10, 2023 at
            7:50 AM Martin Matuska &lt;<a href="mailto:mm@freebsd.org"
              moz-do-not-send="true" class="moz-txt-link-freetext">mm@freebsd.org</a>&gt;
            wrote:<br>
          </div>
          <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi
            Xin,<br>
            <br>
            since when have you been using block cloning on the system?
            Is it <br>
            possible that there is already corrupted block-cloned data
            from the</blockquote>
          <div><br>
          </div>
          <div>
            <div class="gmail_default"
              style="font-family:monospace,monospace">That's a good
              question, I can't 100% rule out this possibility.  I was
              following -CURRENT in ~weekly to ~monthly on that system,
              and the pool was created in March 2014.</div>
          </div>
          <div class="gmail_default"
            style="font-family:monospace,monospace"><br>
          </div>
          <div class="gmail_default"
            style="font-family:monospace,monospace">Do you think I
            should try rebuilding the pool from scratch?  I do have
            remote backup on a different server but was avoiding it
            because it's time consuming.</div>
          <div> </div>
          <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">past?
            Is everything on one dataset or are you using multiple
            datasets <br>
            for /usr/src and /usr/obj?<br>
          </blockquote>
          <div><br>
          </div>
          <div>
            <div class="gmail_default"
              style="font-family:monospace,monospace">/usr/src and
              /usr/obj are separate datasets, and the system runs
              Poudriere so it have multiple copies of slightly different
              /usr/src and /usr/obj's.</div>
            <div class="gmail_default"
              style="font-family:monospace,monospace"><br>
            </div>
            <div class="gmail_default"
              style="font-family:monospace,monospace">Is there a way to
              identify datasets with block cloning, by the way?  Maybe I
              should try recreating these datasets first?</div>
            <br>
          </div>
          <div>
            <div class="gmail_default"
              style="font-family:monospace,monospace"><span
                style="font-family:Arial,Helvetica,sans-serif"> </span><br>
            </div>
          </div>
          <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
            <br>
            Best regards,<br>
            mm<br>
            <br>
            On 10. 11. 2023 8:04, Xin Li wrote:<br>
            &gt; On 2023-11-05 16:34, Martin Matuska wrote:<br>
            &gt;&gt; OpenZFS 2.2.0 in FreeBSD 14 fully supports block
            cloning. You can <br>
            &gt;&gt; work with pools that have feature@block_cloning
            enabled.<br>
            &gt;&gt; The sysctl variable vfs.zfs.bclone_enabled affects
            the behavior of <br>
            &gt;&gt; zfs_clone_range() which is called by
            copy_file_range(). When it is <br>
            &gt;&gt; set to 0, zfs_clone_range() does not do block
            cloning.<br>
            &gt;&gt; If it is set to anything else than 0,
            zfs_clone_range() does block <br>
            &gt;&gt; cloning (if all conditions are met - same ZFS pool,
            correct data <br>
            &gt;&gt; alignment, etc.).<br>
            &gt;&gt;<br>
            &gt;&gt; In FreeBSD-main, this tunable is enabled and I plan
            to enable it in <br>
            &gt;&gt; stable/14 somewhere around December 11, 2023.<br>
            &gt;&gt;<br>
            &gt;&gt; As of today I personally use block cloning on all
            my systems.<br>
            &gt;<br>
            &gt; I'd like to share a different data point.  It still
            panics on my <br>
            &gt; storage (running -CURRENT about a week ago) when
            enabled and can be <br>
            &gt; triggered by "make buildworld buildkernel".  I wasn't
            able to capture <br>
            &gt; earlier coredump until the most recent one, which
            panicked with:<br>
            &gt;<br>
            &gt;<br>
            &gt; cpuid = 2<br>
            &gt; time = 1699593456<br>
            &gt; KDB: stack backtrace:<br>
            &gt; db_trace_self_wrapper() at
            db_trace_self_wrapper+0x2b/frame <br>
            &gt; 0xfffffe022f2bd7e0<br>
            &gt; vpanic() at vpanic+0x132/frame 0xfffffe022f2bd910<br>
            &gt; spl_panic() at spl_panic+0x3a/frame 0xfffffe022f2bd970<br>
            &gt; dmu_brt_clone() at dmu_brt_clone+0x555/frame
            0xfffffe022f2bd9e0<br>
            &gt; zfs_clone_range() at zfs_clone_range+0xa4c/frame
            0xfffffe022f2bdbb0<br>
            &gt; zfs_freebsd_copy_file_range() at <br>
            &gt; zfs_freebsd_copy_file_range+0x18a/frame
            0xfffffe022f2bdc30<br>
            &gt; vn_copy_file_range() at vn_copy_file_range+0x163/frame
            0xfffffe022f2bdce0<br>
            &gt; kern_copy_file_range() at
            kern_copy_file_range+0x380/frame <br>
            &gt; 0xfffffe022f2bddb0<br>
            &gt; sys_copy_file_range() at sys_copy_file_range+0x78/frame
            <br>
            &gt; 0xfffffe022f2bde00<br>
            &gt; amd64_syscall() at amd64_syscall+0x153/frame
            0xfffffe022f2bdf30<br>
            &gt; fast_syscall_common() at fast_syscall_common+0xf8/frame
            <br>
            &gt; 0xfffffe022f2bdf30<br>
            &gt; --- syscall (569, FreeBSD ELF64, copy_file_range), rip
            = <br>
            &gt; 0x7fbb2da4ada, rsp = 0x7fbb02c5d48, rbp = 0x7fbb02c61e0
            ---<br>
            &gt; Uptime: 2h32m27s<br>
            &gt; Dumping 7800 out of 32696 <br>
            &gt; MB:..1%..11%..21%..31%..41%..51%..61%..71%..81%..91%<br>
            &gt;<br>
            &gt; #0  __curthread () at
            /usr/src/sys/amd64/include/pcpu_aux.h:57<br>
            &gt; #1  doadump (textdump=textdump@entry=1) at <br>
            &gt; /usr/src/sys/kern/kern_shutdown.c:405<br>
            &gt; #2  0xffffffff80694480 in kern_reboot (howto=260) at <br>
            &gt; /usr/src/sys/kern/kern_shutdown.c:526<br>
            &gt; #3  0xffffffff8069497f in vpanic
            (fmt=0xffffffff82603415 "VERIFY3(nbps <br>
            &gt; == numbufs) failed (%llu == %llu)\n",
            ap=ap@entry=0xfffffe022f2bd950) <br>
            &gt; at /usr/src/sys/kern/kern_shutdown.c:970<br>
            &gt; #4  0xffffffff8232999a in spl_panic (file=&lt;optimized
            out&gt;, <br>
            &gt; func=&lt;optimized out&gt;, line=&lt;unavailable&gt;,
            fmt=&lt;unavailable&gt;) at <br>
            &gt;
            /usr/src/sys/contrib/openzfs/module/os/freebsd/spl/spl_misc.c:103<br>
            &gt; #5  0xffffffff823a6605 in dmu_brt_clone <br>
            &gt; (os=os@entry=0xfffff800c5ce4000, object=&lt;optimized
            out&gt;, <br>
            &gt; offset=offset@entry=0, length=length@entry=207477, <br>
            &gt; tx=tx@entry=0xfffff8071a108d00,
            bps=bps@entry=0xfffffe01e218c000, <br>
            &gt; nbps=2, replay=0)<br>
            &gt;     at
            /usr/src/sys/contrib/openzfs/module/zfs/dmu.c:2303<br>
            &gt; #6  0xffffffff8250f67c in zfs_clone_range
            (inzp=0xfffff804416ac000, <br>
            &gt; inoffp=0xfffff800b81cb048, outzp=0xfffff806f58f03a0, <br>
            &gt; outoffp=0xfffff800b8063048,
            lenp=lenp@entry=0xfffffe022f2bdbf0, <br>
            &gt; cr=0xfffff8000a6fe600)<br>
            &gt;     at
            /usr/src/sys/contrib/openzfs/module/zfs/zfs_vnops.c:1326<br>
            &gt; #7  0xffffffff8234b3ba in zfs_freebsd_copy_file_range <br>
            &gt; (ap=0xfffffe022f2bdc48) at <br>
            &gt;
            /usr/src/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c:6294<br>
            &gt; #8  0xffffffff8079f443 in VOP_COPY_FILE_RANGE <br>
            &gt; (invp=0xfffff804416cb1c0, inoffp=0xfffff800b81cb048, <br>
            &gt; outvp=0xfffff806f51d3380, outoffp=0xfffff800b8063048, <br>
            &gt; lenp=0xfffffe022f2bdd48, incred=0xfffff8000a6fe600,
            flags=&lt;optimized <br>
            &gt; out&gt;,<br>
            &gt;     outcred=&lt;optimized out&gt;,
            fsizetd=&lt;optimized out&gt;) at <br>
            &gt; ./vnode_if.h:2385<br>
            &gt; #9  vn_copy_file_range
            (invp=invp@entry=0xfffff804416cb1c0, <br>
            &gt; inoffp=inoffp@entry=0xfffff800b81cb048, <br>
            &gt; outvp=outvp@entry=0xfffff806f51d3380, <br>
            &gt; outoffp=outoffp@entry=0xfffff800b8063048, <br>
            &gt; lenp=lenp@entry=0xfffffe022f2bdd48,
            flags=flags@entry=0,<br>
            &gt;     incred=0xfffff8000a6fe600,
            outcred=0xfffff8000a6fe600, <br>
            &gt; fsize_td=0xfffffe022925b3a0) at
            /usr/src/sys/kern/vfs_vnops.c:3087<br>
            &gt; #10 0xffffffff8079a070 in kern_copy_file_range <br>
            &gt; (td=td@entry=0xfffffe022925b3a0, infd=&lt;optimized
            out&gt;, <br>
            &gt; inoffp=0xfffff800b81cb048, inoffp@entry=0x0,
            outfd=&lt;optimized out&gt;, <br>
            &gt; outoffp=0xfffff800b8063048, outoffp@entry=0x0,
            len=9223372036854775807,<br>
            &gt;     flags=0) at /usr/src/sys/kern/vfs_syscalls.c:4973<br>
            &gt; #11 0xffffffff8079a178 in sys_copy_file_range
            (td=0xfffffe022925b3a0, <br>
            &gt; uap=0xfffffe022925b7a0) at
            /usr/src/sys/kern/vfs_syscalls.c:5011<br>
            &gt; #12 0xffffffff80a97aa3 in syscallenter
            (td=0xfffffe022925b3a0) at <br>
            &gt; /usr/src/sys/amd64/amd64/../../kern/subr_syscall.c:188<br>
            &gt; #13 amd64_syscall (td=0xfffffe022925b3a0, traced=0) at
            <br>
            &gt; /usr/src/sys/amd64/amd64/trap.c:1194<br>
            &gt; #14 &lt;signal handler called&gt;<br>
            &gt; #15 0x000007fbb2da4ada in ?? ()<br>
            &gt;<br>
            &gt;<br>
            &gt; and disabling bclone does appear to allow me to finish
            buildworld / <br>
            &gt; buildkernel.<br>
            &gt;<br>
            &gt; The pool didn't have redaction_list_spill enabled.<br>
            &gt;<br>
            &gt; The ASSERT3U(nbps, ==, numbufs); in dmu_brt_clone was
            added when block <br>
            &gt; clone is first implemented.<br>
            &gt;<br>
            &gt; It seems that I am the only person who is seeing this
            as of today.  It <br>
            &gt; seems that block clone was indeed being used for some
            data:<br>
            &gt;<br>
            &gt; saturn  bcloneused 1.18M                          -<br>
            &gt; saturn  bclonesaved 1.21M                          -<br>
            &gt; saturn  bcloneratio 2.02x                          -<br>
            &gt;<br>
            &gt; The pool have dedup enabled for some datasets.<br>
            &gt;<br>
            &gt; Any suggestions?  (In extreme cases I can recreate the
            storage pool <br>
            &gt; from backup or copy the data somewhere else, then
            recreate the pool, <br>
            &gt; then copy data back, but I'd like to avoid that if
            possible)<br>
            &gt;<br>
            &gt; Cheers,<br>
            &gt;<br>
            &gt;<br>
            &gt;&gt;<br>
            &gt;&gt; mm<br>
            &gt;&gt;<br>
            &gt;&gt; On 04/11/2023 13:35, Mark Millard wrote:<br>
            &gt;&gt;&gt; On Nov 4, 2023, at 04:38, Mike Karels &lt;<a
              href="mailto:mike@karels.net" target="_blank"
              moz-do-not-send="true" class="moz-txt-link-freetext">mike@karels.net</a>&gt;
            wrote:<br>
            &gt;&gt;&gt;<br>
            &gt;&gt;&gt;&gt; On 4 Nov 2023, at 4:01, Ronald Klop wrote:<br>
            &gt;&gt;&gt;&gt;<br>
            &gt;&gt;&gt;&gt;&gt; On 11/4/23 02:39, Mark Millard wrote:<br>
            &gt;&gt;&gt;&gt;&gt;&gt; It looks to me like releng/14.0 (as
            of 14.0-RC4) still has:<br>
            &gt;&gt;&gt;&gt;&gt;&gt;<br>
            &gt;&gt;&gt;&gt;&gt;&gt; int zfs_bclone_enabled;<br>
            &gt;&gt;&gt;&gt;&gt;&gt; SYSCTL_INT(_vfs_zfs, OID_AUTO,
            bclone_enabled, CTLFLAG_RWTUN,<br>
            &gt;&gt;&gt;&gt;&gt;&gt; &amp;zfs_bclone_enabled, 0, "Enable
            block cloning");<br>
            &gt;&gt;&gt;&gt;&gt;&gt;<br>
            &gt;&gt;&gt;&gt;&gt;&gt; leaving block cloning effectively
            disabled by default, no<br>
            &gt;&gt;&gt;&gt;&gt;&gt; matter what the pool has enabled.<br>
            &gt;&gt;&gt;&gt;&gt;&gt;<br>
            &gt;&gt;&gt;&gt;&gt;&gt; <a
              href="https://www.freebsd.org/releases/14.0R/relnotes/"
              rel="noreferrer" target="_blank" moz-do-not-send="true"
              class="moz-txt-link-freetext">https://www.freebsd.org/releases/14.0R/relnotes/</a>;
            also reports:<br>
            &gt;&gt;&gt;&gt;&gt;&gt;<br>
            &gt;&gt;&gt;&gt;&gt;&gt; QUOTE<br>
            &gt;&gt;&gt;&gt;&gt;&gt; OpenZFS has been upgraded to
            version 2.2. New features include:<br>
            &gt;&gt;&gt;&gt;&gt;&gt; •<br>
            &gt;&gt;&gt;&gt;&gt;&gt; block cloning, which allows shallow
            copies of blocks in file <br>
            &gt;&gt;&gt;&gt;&gt;&gt; copies. This is optional, and
            disabled by default; it can be <br>
            &gt;&gt;&gt;&gt;&gt;&gt; enabled with sysctl
            vfs.zfs.bclone_enabled=1.<br>
            &gt;&gt;&gt;&gt;&gt;&gt; END QUOTE<br>
            &gt;&gt;&gt;&gt;&gt;&gt;<br>
            &gt;&gt;&gt;&gt;&gt;<br>
            &gt;&gt;&gt;&gt;&gt; I think this answers your question in
            the subject.<br>
            &gt;&gt;&gt;&gt; I think so too (and I wrote that text).<br>
            &gt;&gt;&gt; Thanks for the confirmation of the final
            intent.<br>
            &gt;&gt;&gt;<br>
            &gt;&gt;&gt; I believe this makes:<br>
            &gt;&gt;&gt;<br>
            &gt;&gt;&gt; QUOTE<br>
            &gt;&gt;&gt; author Brian Behlendorf &lt;<a
              href="mailto:behlendorf1@llnl.gov" target="_blank"
              moz-do-not-send="true" class="moz-txt-link-freetext">behlendorf1@llnl.gov</a>&gt;
            2023-05-25 20:53:08 <br>
            &gt;&gt;&gt; +0000<br>
            &gt;&gt;&gt; committer GitHub &lt;<a
              href="mailto:noreply@github.com" target="_blank"
              moz-do-not-send="true" class="moz-txt-link-freetext">noreply@github.com</a>&gt;
            2023-05-25 20:53:08 +0000<br>
            &gt;&gt;&gt; commit 91a2325c4a0fbe01d0bf212e44fa9d85017837ce
            (patch)<br>
            &gt;&gt;&gt; tree dd01dfce6aeef357ade1775acf18aade535c6271<br>
            &gt;&gt;&gt; . . .<br>
            &gt;&gt;&gt; Update compatibility.d files<br>
            &gt;&gt;&gt;<br>
            &gt;&gt;&gt; Add an openzfs-2.2 compatibility file for the
            next release. Edon-R <br>
            &gt;&gt;&gt; support has been enabled for FreeBSD removing
            the need for different <br>
            &gt;&gt;&gt; FreeBSD and Linux files. Symlinks for the
            -linux and -freebsd names <br>
            &gt;&gt;&gt; are created for any scripts expecting that
            convention. Additionally, <br>
            &gt;&gt;&gt; a symlink for ubunutu-22.04 was added.
            Signed-off-by: Brian <br>
            &gt;&gt;&gt; Behlendorf &lt;<a
              href="mailto:behlendorf1@llnl.gov" target="_blank"
              moz-do-not-send="true" class="moz-txt-link-freetext">behlendorf1@llnl.gov</a>&gt;
            Closes #14833<br>
            &gt;&gt;&gt; END QUOTE<br>
            &gt;&gt;&gt;<br>
            &gt;&gt;&gt; technically incorrect in that
            compatibility.d/openzfs-2.2-freebsd<br>
            &gt;&gt;&gt; should be distinct in content from
            compatibility.d/openzfs-2.2 so<br>
            &gt;&gt;&gt; that block cloning would not be enabled.<br>
            &gt;&gt;&gt;<br>
            &gt;&gt;&gt;<br>
            &gt;&gt;&gt;&gt;&gt;&gt; Just curiousity on my part about
            the default completeness of<br>
            &gt;&gt;&gt;&gt;&gt;&gt; openzfs-2.2 support, not an
            objection either way.<br>
            &gt;&gt;&gt;&gt;&gt;&gt;<br>
            &gt;&gt;&gt;&gt;&gt;<br>
            &gt;&gt;&gt;&gt;&gt; I haven't seen new issues with block
            cloning in the last few weeks <br>
            &gt;&gt;&gt;&gt;&gt; mentioned on the mailing lists. All
            known issues are fixed AFAIK.<br>
            &gt;&gt;&gt;&gt;&gt; But I can imagine that the risk+effect
            ratio of data corruption is <br>
            &gt;&gt;&gt;&gt;&gt; seen as a bit too high for a 14.0
            release for this particular <br>
            &gt;&gt;&gt;&gt;&gt; feature. That does not diminish the
            rest of the completeness of <br>
            &gt;&gt;&gt;&gt;&gt; openzfs-2.2.<br>
            &gt;&gt;&gt;&gt;&gt;<br>
            &gt;&gt;&gt;&gt;&gt; NB: I'm not involved in developing
            openzfs or the decision making <br>
            &gt;&gt;&gt;&gt;&gt; in the release. Just repeating what I
            read on the lists.<br>
            &gt;&gt;&gt;&gt; There was another block cloning fix in
            14.0-RC4; see the commit log.<br>
            &gt;&gt;&gt;&gt; Maybe there will be no more issues, but it
            seems that corner cases <br>
            &gt;&gt;&gt;&gt; were<br>
            &gt;&gt;&gt;&gt; still being found recently.<br>
            &gt;&gt;&gt; Looks like I'll stay at openzfs-2.1 pool
            features until there is<br>
            &gt;&gt;&gt; a release that no longer has the default
            status:<br>
            &gt;&gt;&gt;<br>
            &gt;&gt;&gt; 0 for sysctl vfs.zfs.bclone_enabled<br>
            &gt;&gt;&gt;<br>
            &gt;&gt;&gt; I use main [so: 15 now] but only enable
            openzfs-2.* pool features<br>
            &gt;&gt;&gt; supported by default on some FreeBSD release,
            that has an accurate<br>
            &gt;&gt;&gt; compatibility.d/openzfs-2.*-freebsd file.<br>
            &gt;&gt;&gt;<br>
            &gt;&gt;&gt; ===<br>
            &gt;&gt;&gt; Mark Millard<br>
            &gt;&gt;&gt; marklmi at <a href="http://yahoo.com"
              rel="noreferrer" target="_blank" moz-do-not-send="true">yahoo.com</a><br>
            &gt;&gt;&gt;<br>
            &gt;&gt;&gt;<br>
            &gt;&gt;<br>
            &gt;<br>
            <br>
          </blockquote>
        </div>
      </div>
    </blockquote>
  </body>
</html>

--------------hcDCO5UsWNX1hkTPj6uApmeT--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?77ad9593-34a8-48dc-8533-aafb852f1d19>