Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package btrfsprogs for openSUSE:Factory checked in at 2023-09-14 16:25:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/btrfsprogs (Old) and /work/SRC/openSUSE:Factory/.btrfsprogs.new.1766 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "btrfsprogs" Thu Sep 14 16:25:03 2023 rev:151 rq:1110944 version:6.5.1 Changes: -------- --- /work/SRC/openSUSE:Factory/btrfsprogs/btrfsprogs.changes 2023-09-10 13:10:05.118243702 +0200 +++ /work/SRC/openSUSE:Factory/.btrfsprogs.new.1766/btrfsprogs.changes 2023-09-14 16:26:54.465244477 +0200 @@ -1,0 +2,12 @@ +Wed Sep 13 00:00:00 CEST 2023 - [email protected] + +- update to 6.5.1: + * build fixes: + * crc32c if PIE or relro is enabled + * detect if PCLMUL feature is recognized by compiler and also detect that + at runtime + * check: verify metadata item level when skinny-metadata is enabled + * other: minor build and docs updates + * spec: remove xmlto dependency, docs built by sphinx + +------------------------------------------------------------------- Old: ---- btrfs-progs-v6.5.tar.gz btrfs-progs-v6.5.tar.sign New: ---- btrfs-progs-v6.5.1.tar.gz btrfs-progs-v6.5.1.tar.sign ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ btrfsprogs.spec ++++++ --- /var/tmp/diff_new_pack.QOx0TA/_old 2023-09-14 16:26:55.985298779 +0200 +++ /var/tmp/diff_new_pack.QOx0TA/_new 2023-09-14 16:26:55.985298779 +0200 @@ -34,7 +34,7 @@ %define _dracutmodulesdir %(pkg-config --variable dracutmodulesdir dracut) Name: btrfsprogs -Version: 6.5 +Version: 6.5.1 Release: 0 Summary: Utilities for the Btrfs filesystem License: GPL-2.0-only @@ -79,12 +79,9 @@ BuildRequires: suse-module-tools %endif BuildRequires: libudev-devel -BuildRequires: pkgconfig(udev) -%if %build_docs -BuildRequires: xmlto -%endif BuildRequires: python-rpm-macros BuildRequires: zlib-devel +BuildRequires: pkgconfig(udev) %if 0%{?suse_version} >= 1310 Requires(post): coreutils Requires(postun):coreutils ++++++ btrfs-progs-v6.5.tar.gz -> btrfs-progs-v6.5.1.tar.gz ++++++ ++++ 1620 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/.github/workflows/artifacts-static-build.yml new/btrfs-progs-v6.5.1/.github/workflows/artifacts-static-build.yml --- old/btrfs-progs-v6.5/.github/workflows/artifacts-static-build.yml 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/.github/workflows/artifacts-static-build.yml 2023-09-13 19:47:53.000000000 +0200 @@ -7,7 +7,6 @@ on: push: branches: - - release-test - master jobs: build: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/.github/workflows/devel.yml new/btrfs-progs-v6.5.1/.github/workflows/devel.yml --- old/btrfs-progs-v6.5/.github/workflows/devel.yml 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/.github/workflows/devel.yml 2023-09-13 19:47:53.000000000 +0200 @@ -22,6 +22,10 @@ run: make V=1 - name: Musl build run: sudo docker run kdave/ci-musl-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-backtrace --disable-libudev + - name: Make static + run: make V=1 EXTRA_CFLAGS='-march=x86-64' static + - name: Make box.static + run: make V=1 EXTRA_CFLAGS='-march=x86-64' btrfs.box.static - name: Tests cli run: sudo make TEST_LOG=dump test-cli - name: Tests mkfs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/.github/workflows/pull-request.yml new/btrfs-progs-v6.5.1/.github/workflows/pull-request.yml --- old/btrfs-progs-v6.5/.github/workflows/pull-request.yml 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/.github/workflows/pull-request.yml 2023-09-13 19:47:53.000000000 +0200 @@ -25,6 +25,10 @@ run: make V=1 # - name: Musl build # run: sudo docker run kdave/ci-musl-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-backtrace --disable-libudev + - name: Make static + run: make V=1 EXTRA_CFLAGS='-march=x86-64' static + - name: Make box.static + run: make V=1 EXTRA_CFLAGS='-march=x86-64' btrfs.box.static - name: Tests cli run: sudo make TEST_LOG=dump test-cli - name: Tests mkfs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/CHANGES new/btrfs-progs-v6.5.1/CHANGES --- old/btrfs-progs-v6.5/CHANGES 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/CHANGES 2023-09-13 19:47:53.000000000 +0200 @@ -17,6 +17,15 @@ * code refactoring * remove btrfs-fragments +btrfs-progs-6.5.1 (2023-09-13) +"""""""""""""""""""""""""""""" + * build fixes: + * crc32c if PIE or relro is enabled + * detect if PCLMUL feature is recognized by compiler and also detect that + at runtime + * check: verify metadata item level when skinny-metadata is enabled + * other: minor build and docs updates + btrfs-progs-6.4 (skipped) ------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/Status.rst new/btrfs-progs-v6.5.1/Documentation/Status.rst --- old/btrfs-progs-v6.5/Documentation/Status.rst 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/Status.rst 2023-09-13 19:47:53.000000000 +0200 @@ -13,7 +13,7 @@ Combination of features can vary in performance, the table does not cover all possibilities. -**The table is based on the latest released linux kernel: 6.4** +**The table is based on the latest released linux kernel: 6.5** The columns for each feature reflect the status of the implementation in following ways: @@ -43,26 +43,34 @@ - Stability - Performance - Notes - * - :doc:`discard (synchronous)<Trim>` + * - :doc:`Subvolumes, snapshots<Subvolumes>` - :statusok:`OK` + - OK - - - mounted with `-o discard` (has performance implications), also see `fstrim` - * - :doc:`discard (asynchronous)<Trim>` + * - :doc:`Compression<Compression>` - :statusok:`OK` - - - mounted with `-o discard=async` (improved performance) - * - Autodefrag - - :statusok:`OK` - + * - :doc:`Checksumming algorithms<Checksumming>` + - :statusok:`OK` + - OK - - * - :doc:`Defrag<Defragmentation>` + * - :doc:`Defragmentation<Defragmentation>` - :statusmok:`mostly OK` - - extents get unshared (see below) - * - :doc:`Compression<Compression>` + * - :ref:`Autodefrag<mount-option-autodefrag>` + - :statusok:`OK` + - + - + * - :doc:`Discard (synchronous)<Trim>` - :statusok:`OK` - + - mounted with `-o discard` (has performance implications), also see `fstrim` + * - :doc:`Discard (asynchronous)<Trim>` + - :statusok:`OK` - + - mounted with `-o discard=async` (improved performance) * - :doc:`Out-of-band dedupe<Deduplication>` - :statusok:`OK` - :statusmok:`mostly OK` @@ -71,10 +79,14 @@ - :statusok:`OK` - :statusmok:`mostly OK` - (reflink), heavily referenced extents have a noticeable performance hit (see below) - * - :doc:`More checksumming algorithms<Checksumming>` + * - :doc:`Filesystem resize<Resize>` - :statusok:`OK` - OK - - + - shrink, grow + * - :doc:`Device replace<Volume-management>` + - :statusmok:`mostly OK` + - mostly OK + - (see below) * - :doc:`Auto-repair<Auto-repair>` - :statusok:`OK` - OK @@ -87,18 +99,66 @@ - :statusmok:`mostly OK` - mostly OK - - * - nodatacow + * - :ref:`Degraded mount<mount-option-degraded>` + - :statusok:`OK` + - n/a + - + * - :doc:`Balance<Balance>` + - :statusok:`OK` + - OK + - balance + qgroups can be slow when there are many snapshots + * - :doc:`Send<Send-receive>` - :statusok:`OK` - OK - - * - :doc:`Device replace<Volume-management>` + * - :doc:`Receive<Send-receive>` + - :statusok:`OK` + - OK + - + * - Offline UUID change + - :statusok:`OK` + - OK + - + * - Metadata UUID change + - :statusok:`OK` + - OK + - + * - :doc:`Seeding<Seeding-device>` + - :statusok:`OK` + - OK + - + * - :doc:`Quotas, qgroups<Qgroups>` - :statusmok:`mostly OK` - mostly OK - - (see below) - * - Degraded mount + - qgroups with many snapshots slows down balance + * - :doc:`Swapfile<Swapfile>` - :statusok:`OK` - n/a + - with some limitations + * - nodatacow + - :statusok:`OK` + - OK - + * - :doc:`Subpage block size<Subpage>` + - :statusmok:`mostly OK` + - mostly OK + - Also see table below for more detailed compatibility. + * - :doc:`Zoned mode<Zoned-mode>` + - :statusmok:`mostly OK` + - mostly OK + - Not yet feature complete but moderately stable, also see table below + for more detailed compatibility. + +Block group profiles +^^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :header-rows: 1 + + * - Feature + - Stability + - Performance + - Notes * - :ref:`Single (block group profile)<mkfs-section-profiles>` - :statusok:`OK` - OK @@ -131,50 +191,59 @@ - :statusunstable:`unstable` - n/a - (see below) - * - Mixed block groups + * - :ref:`Mixed block groups<mkfs-feature-mixed-bg>` - :statusok:`OK` - OK - - * - :doc:`Filesystem resize<Resize>` - - :statusok:`OK` - - OK - - shrink, grow - * - :doc:`Balance<Balance>` - - :statusok:`OK` - - OK - - balance + qgroups can be slow when there are many snapshots - * - Offline UUID change - - :statusok:`OK` - - OK - - - * - Metadata UUID change + + +On-disk format +^^^^^^^^^^^^^^ + +Features that are typically set at *mkfs* time (sometimes can be changed or +converted later). + +.. list-table:: + :header-rows: 1 + + * - Feature + - Stability + - Performance + - Notes + * - :ref:`extended-refs<mkfs-feature-extended-refs>` - :statusok:`OK` - OK - - * - :doc:`Subvolumes, snapshots<Subvolumes>` + * - :ref:`skinny-metadata<mkfs-feature-skinny-metadata>` - :statusok:`OK` - OK - - * - :doc:`Send<Send-receive>` + * - :ref:`no-holes<mkfs-feature-no-holes>` - :statusok:`OK` - OK - - * - :doc:`Receive<Send-receive>` + * - :ref:`Free space tree<mkfs-feature-free-space-tree>` - :statusok:`OK` - OK - - * - :doc:`Seeding<Seeding-device>` + * - :ref:`Block group tree`<mkfs-feature-block-group-tree>` - :statusok:`OK` - OK - - * - :doc:`Quotas, qgroups<Qgroups>` - - :statusmok:`mostly OK` - - mostly OK - - qgroups with many snapshots slows down balance - * - :doc:`Swapfile<Swapfile>` - - :statusok:`OK` - - n/a - - with some limitations + +Interoperability +^^^^^^^^^^^^^^^^ + +Integration with other Linux features or external systems. +:doc:`See also<Interoperability>`. + +.. list-table:: + :header-rows: 1 + + * - Feature + - Stability + - Performance + - Notes * - :ref:`NFS<interop-nfs>` - :statusok:`OK` - OK @@ -183,10 +252,6 @@ - :statusok:`OK` - OK - IO controller - * - :ref:`Samba<interop-samba>` - - :statusok:`OK` - - OK - - compression, server-side copies, snapshots * - :ref:`io_uring<interop-io-uring>` - :statusok:`OK` - OK @@ -199,35 +264,10 @@ - :statusok:`OK` - OK - - * - :ref:`Free space tree<mkfs-feature-free-space-tree>` - - :statusok:`OK` - - - - - * - Block group tree - - :statusok:`OK` - - - - - * - :ref:`no-holes<mkfs-feature-no-holes>` - - :statusok:`OK` - - OK - - - * - :ref:`skinny-metadata<mkfs-feature-skinny-metadata>` - - :statusok:`OK` - - OK - - - * - :ref:`extended-refs<mkfs-feature-extended-refs>` + * - :ref:`Samba<interop-samba>` - :statusok:`OK` - OK - - - * - :doc:`Subpage block size<Subpage>` - - :statusmok:`mostly OK` - - mostly OK - - Also see table below for more detailed compatibility. - * - :doc:`Zoned mode<Zoned-mode>` - - :statusmok:`mostly OK` - - mostly OK - - Not yet feature complete but moderately stable, also see table below - for more detailed compatibility. + - compression, server-side copies, snapshots Please open an issue if: @@ -256,7 +296,7 @@ - The max_inline mount option value is ignored, as if mounted with max_inline=0 * - Free space cache v1 - :statusunsupp:`unsupported` - - Free space tree is mandatory, v1 has some assumptions about page size + - Free space tree is mandatory, v1 makes some assumptions about page size * - Compression - :statusok:`partial support` - Only page-aligned ranges can be compressed @@ -303,12 +343,6 @@ * - Free space tree - :statusok:`supported` - - * - single profile - - :statusok:`supported` - - Both data and metadata - * - DUP profile - - :statusok:`partial support` - - Only for metadata * - Filesystem resize - :statusok:`supported` - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-balance.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-balance.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-balance.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-balance.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-BALANCE" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-BALANCE" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-balance \- balance block groups on a btrfs filesystem .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-check.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-check.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-check.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-check.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-CHECK" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-CHECK" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-check \- check or repair a btrfs filesystem .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-convert.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-convert.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-convert.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-convert.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-CONVERT" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-CONVERT" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-convert \- convert from ext2/3/4 or reiserfs filesystem to btrfs in-place .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-device.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-device.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-device.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-device.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-DEVICE" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-DEVICE" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-device \- manage devices of btrfs filesystems .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-filesystem.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-filesystem.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-filesystem.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-filesystem.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-FILESYSTEM" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-FILESYSTEM" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-filesystem \- command group that primarily does work on the whole filesystems .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-find-root.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-find-root.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-find-root.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-find-root.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-FIND-ROOT" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-FIND-ROOT" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-find-root \- filter to find btrfs root .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-image.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-image.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-image.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-image.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-IMAGE" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-IMAGE" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-image \- create/restore an image of the filesystem .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-inspect-internal.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-inspect-internal.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-inspect-internal.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-inspect-internal.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-INSPECT-INTERNAL" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-INSPECT-INTERNAL" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-inspect-internal \- query various internal information .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-ioctl.rst new/btrfs-progs-v6.5.1/Documentation/btrfs-ioctl.rst --- old/btrfs-progs-v6.5/Documentation/btrfs-ioctl.rst 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-ioctl.rst 2023-09-13 19:47:53.000000000 +0200 @@ -150,6 +150,33 @@ __u64 rsv_excl; }; +.. _struct_btrfs_ioctl_fs_info_args: + +.. code-block:: c + + /* Request information about checksum type and size */ + #define BTRFS_FS_INFO_FLAG_CSUM_INFO (1 << 0) + /* Request information about filesystem generation */ + #define BTRFS_FS_INFO_FLAG_GENERATION (1 << 1) + /* Request information about filesystem metadata UUID */ + #define BTRFS_FS_INFO_FLAG_METADATA_UUID (1 << 2) + + struct btrfs_ioctl_fs_info_args { + __u64 max_id; /* out */ + __u64 num_devices; /* out */ + __u8 fsid[BTRFS_FSID_SIZE]; /* out */ + __u32 nodesize; /* out */ + __u32 sectorsize; /* out */ + __u32 clone_alignment; /* out */ + /* See BTRFS_FS_INFO_FLAG_* */ + __u16 csum_type; /* out */ + __u16 csum_size; /* out */ + __u64 flags; /* in/out */ + __u64 generation; /* out */ + __u8 metadata_uuid[BTRFS_FSID_SIZE]; /* out */ + __u8 reserved[944]; /* pad to 1k */ + }; + .. list-table:: :header-rows: 1 @@ -157,10 +184,14 @@ - Value * - BTRFS_UUID_SIZE - 16 + * - BTRFS_FSID_SIZE + - 16 * - BTRFS_SUBVOL_NAME_MAX - 4039 * - BTRFS_PATH_NAME_MAX - 4087 + * - BTRFS_VOL_NAME_MAX + - 255 OVERVIEW -------- @@ -296,9 +327,9 @@ * - BTRFS_IOC_DEV_INFO - - - * - BTRFS_IOC_FS_INFO - - - - + * - :ref:`BTRFS_IOC_FS_INFO<BTRFS_IOC_FS_INFO>` + - get information about filesystem (device count, fsid, ...) + - :ref:`struct btrfs_ioctl_fs_info_args<struct_btrfs_ioctl_fs_info_args>` * - BTRFS_IOC_BALANCE_V2 - - @@ -555,6 +586,26 @@ * - ioctl args - uint64_t, either 0 or `BTRFS_SUBVOL_RDONLY` +.. _BTRFS_IOC_FS_INFO: + +BTRFS_IOC_FS_INFO +~~~~~~~~~~~~~~~~~ + +Read internal information about the filesystem. The data can be exchanged +both ways and part of the structure could be optionally filled. The reserved +bytes can be used to get new kind of information in the future, always +depending on the flags set. + +.. list-table:: + :header-rows: 1 + + * - Field + - Description + * - ioctl fd + - file descriptor of any file/directory in the filesystem + * - ioctl args + - :ref:`struct btrfs_ioctl_fs_info_args<struct_btrfs_ioctl_fs_info_args>` + .. _BTRFS_IOC_GET_SUBVOL_INFO: BTRFS_IOC_GET_SUBVOL_INFO diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-map-logical.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-map-logical.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-map-logical.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-map-logical.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-MAP-LOGICAL" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-MAP-LOGICAL" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-map-logical \- map btrfs logical extent to physical extent .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-property.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-property.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-property.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-property.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-PROPERTY" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-PROPERTY" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-property \- get/set/list properties for given filesystem object .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-qgroup.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-qgroup.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-qgroup.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-qgroup.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-QGROUP" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-QGROUP" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-qgroup \- control the quota group of a btrfs filesystem .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-quota.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-quota.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-quota.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-quota.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-QUOTA" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-QUOTA" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-quota \- control the global quota status of a btrfs filesystem .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-receive.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-receive.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-receive.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-receive.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-RECEIVE" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-RECEIVE" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-receive \- receive subvolumes from send stream .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-replace.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-replace.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-replace.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-replace.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-REPLACE" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-REPLACE" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-replace \- replace devices managed by btrfs with other device .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-rescue.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-rescue.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-rescue.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-rescue.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-RESCUE" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-RESCUE" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-rescue \- recover a damaged btrfs filesystem .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-restore.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-restore.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-restore.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-restore.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-RESTORE" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-RESTORE" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-restore \- try to restore files from a damaged filesystem image .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-scrub.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-scrub.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-scrub.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-scrub.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-SCRUB" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-SCRUB" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-scrub \- scrub btrfs filesystem, verify block checksums .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-select-super.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-select-super.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-select-super.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-select-super.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-SELECT-SUPER" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-SELECT-SUPER" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-select-super \- overwrite primary superblock with a backup copy .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-send.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-send.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-send.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-send.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-SEND" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-SEND" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-send \- generate a stream of changes between two subvolume snapshots .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs-subvolume.8 new/btrfs-progs-v6.5.1/Documentation/btrfs-subvolume.8 --- old/btrfs-progs-v6.5/Documentation/btrfs-subvolume.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs-subvolume.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS-SUBVOLUME" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS-SUBVOLUME" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs-subvolume \- manage btrfs subvolumes .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs.5 new/btrfs-progs-v6.5.1/Documentation/btrfs.5 --- old/btrfs-progs-v6.5/Documentation/btrfs.5 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs.5 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS" "5" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS" "5" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs \- topics about the BTRFS filesystem (mount options, supported file attributes and other) .SH DESCRIPTION @@ -99,6 +99,8 @@ .sp The support for ACL is build\-time configurable (BTRFS_FS_POSIX_ACL) and mount fails if \fIacl\fP is requested but the feature is not compiled in. +.UNINDENT +.INDENT 0.0 .TP .B autodefrag, noautodefrag (since: 3.0, default: off) @@ -106,7 +108,7 @@ Enable automatic file defragmentation. When enabled, small random writes into files (in a range of tens of kilobytes, currently it\(aqs 64KiB) are detected and queued up for the defragmentation process. -Not well suited for large database workloads. +May not be well suited for large database workloads. .sp The read latency may increase due to reading the adjacent blocks that make up the range for defragmentation, successive write will merge the blocks in the new @@ -258,11 +260,13 @@ corresponding metadata blocks holding the checksums do not need to updated. The cost of checksumming of the blocks in memory is much lower than the IO, modern CPUs feature hardware support of the checksumming algorithm. +.UNINDENT +.INDENT 0.0 .TP .B degraded (default: off) .sp -Allow mounts with less devices than the RAID profile constraints +Allow mounts with fewer devices than the RAID profile constraints require. A read\-write mount (or remount) may fail when there are too many devices missing, for example if a stripe member is completely missing from RAID0. .sp @@ -357,12 +361,12 @@ one transaction commit. .TP .B fragment=<type> -(depends on compile\-time option BTRFS_DEBUG, since: 4.4, default: off) +(depends on compile\-time option CONFIG_BTRFS_DEBUG, since: 4.4, default: off) .sp A debugging helper to intentionally fragment given \fItype\fP of block groups. The type can be \fIdata\fP, \fImetadata\fP or \fIall\fP\&. This mount option should not be used outside of debugging environments and is not recognized if the kernel config -option \fIBTRFS_DEBUG\fP is not enabled. +option \fICONFIG_BTRFS_DEBUG\fP is not enabled. .TP .B nologreplay (default: off, even read\-only) @@ -387,8 +391,8 @@ with a K suffix (case insensitive). In practice, this value is limited by the filesystem block size (named \fIsectorsize\fP at mkfs time), and memory page size of the system. In case of sectorsize limit, there\(aqs -some space unavailable due to leaf headers. For example, a 4KiB sectorsize, -maximum size of inline data is about 3900 bytes. +some space unavailable due to b\-tree leaf headers. For example, a 4KiB +sectorsize, maximum size of inline data is about 3900 bytes. .sp Inlining can be completely turned off by specifying 0. This will increase data block slack if file sizes are much smaller than block size but will reduce @@ -1939,7 +1943,7 @@ \fBchattr(1)\fP manual page. .SS XFLAGS .sp -There\(aqs overlap of letters assigned to the bits with the attributes, this list +There\(aqs an overlap of letters assigned to the bits with the attributes, this list refers to what \fBxfs_io(8)\fP provides: .INDENT 0.0 .TP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfs.8 new/btrfs-progs-v6.5.1/Documentation/btrfs.8 --- old/btrfs-progs-v6.5/Documentation/btrfs.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfs.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFS" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFS" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfs \- a toolbox to manage btrfs filesystems .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfstune.8 new/btrfs-progs-v6.5.1/Documentation/btrfstune.8 --- old/btrfs-progs-v6.5/Documentation/btrfstune.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfstune.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "BTRFSTUNE" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "BTRFSTUNE" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME btrfstune \- tune various filesystem parameters .SH SYNOPSIS @@ -76,6 +76,8 @@ .sp change fsid stored as \fImetadata_uuid\fP to a randomly generated UUID, see also \fI\-U\fP +.UNINDENT +.INDENT 0.0 .TP .BI \-M \ <UUID> (since kernel: 5.0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/btrfstune.rst new/btrfs-progs-v6.5.1/Documentation/btrfstune.rst --- old/btrfs-progs-v6.5/Documentation/btrfstune.rst 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/btrfstune.rst 2023-09-13 19:47:53.000000000 +0200 @@ -52,6 +52,8 @@ change fsid stored as *metadata_uuid* to a randomly generated UUID, see also *-U* +.. _btrfstune-feature-metadata-uuid: + -M <UUID> (since kernel: 5.0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/ch-file-attributes.rst new/btrfs-progs-v6.5.1/Documentation/ch-file-attributes.rst --- old/btrfs-progs-v6.5/Documentation/ch-file-attributes.rst 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/ch-file-attributes.rst 2023-09-13 19:47:53.000000000 +0200 @@ -68,7 +68,7 @@ XFLAGS ^^^^^^ -There's overlap of letters assigned to the bits with the attributes, this list +There's an overlap of letters assigned to the bits with the attributes, this list refers to what ``xfs_io(8)`` provides: i diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/ch-mount-options.rst new/btrfs-progs-v6.5.1/Documentation/ch-mount-options.rst --- old/btrfs-progs-v6.5/Documentation/ch-mount-options.rst 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/ch-mount-options.rst 2023-09-13 19:47:53.000000000 +0200 @@ -27,13 +27,15 @@ The support for ACL is build-time configurable (BTRFS_FS_POSIX_ACL) and mount fails if *acl* is requested but the feature is not compiled in. +.. _mount-option-autodefrag: + autodefrag, noautodefrag (since: 3.0, default: off) Enable automatic file defragmentation. When enabled, small random writes into files (in a range of tens of kilobytes, currently it's 64KiB) are detected and queued up for the defragmentation process. - Not well suited for large database workloads. + May not be well suited for large database workloads. The read latency may increase due to reading the adjacent blocks that make up the range for defragmentation, successive write will merge the blocks in the new @@ -170,10 +172,12 @@ The cost of checksumming of the blocks in memory is much lower than the IO, modern CPUs feature hardware support of the checksumming algorithm. +.. _mount-option-degraded: + degraded (default: off) - Allow mounts with less devices than the RAID profile constraints + Allow mounts with fewer devices than the RAID profile constraints require. A read-write mount (or remount) may fail when there are too many devices missing, for example if a stripe member is completely missing from RAID0. @@ -261,12 +265,12 @@ one transaction commit. fragment=<type> - (depends on compile-time option BTRFS_DEBUG, since: 4.4, default: off) + (depends on compile-time option CONFIG_BTRFS_DEBUG, since: 4.4, default: off) A debugging helper to intentionally fragment given *type* of block groups. The type can be *data*, *metadata* or *all*. This mount option should not be used outside of debugging environments and is not recognized if the kernel config - option *BTRFS_DEBUG* is not enabled. + option *CONFIG_BTRFS_DEBUG* is not enabled. nologreplay (default: off, even read-only) @@ -287,8 +291,8 @@ with a K suffix (case insensitive). In practice, this value is limited by the filesystem block size (named *sectorsize* at mkfs time), and memory page size of the system. In case of sectorsize limit, there's - some space unavailable due to leaf headers. For example, a 4KiB sectorsize, - maximum size of inline data is about 3900 bytes. + some space unavailable due to b-tree leaf headers. For example, a 4KiB + sectorsize, maximum size of inline data is about 3900 bytes. Inlining can be completely turned off by specifying 0. This will increase data block slack if file sizes are much smaller than block size but will reduce diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/dev/On-disk-format.rst new/btrfs-progs-v6.5.1/Documentation/dev/On-disk-format.rst --- old/btrfs-progs-v6.5/Documentation/dev/On-disk-format.rst 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/dev/On-disk-format.rst 2023-09-13 19:47:53.000000000 +0200 @@ -3,6 +3,11 @@ This document describes the Btrfs onâdisk format. +.. note:: + + This document contains outdated and incomplete information and has been + copied from the original btrfs.wiki.kernel.org with little review. + Overview ~~~~~~~~ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/dev/dev-internal-apis.rst new/btrfs-progs-v6.5.1/Documentation/dev/dev-internal-apis.rst --- old/btrfs-progs-v6.5/Documentation/dev/dev-internal-apis.rst 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/dev/dev-internal-apis.rst 2023-09-13 19:47:53.000000000 +0200 @@ -5,12 +5,13 @@ values, sorting, extensible arrays, etc. Not all places are unified and use old code implementing it manually. Below is list of usable APIs that should be spread and updated where it's still not. A need for new API might emerge from -cleanups, then it should appear here. +cleanups, then it should appear here. The text below gives pointers and is not +extensive, search the definitions and actual use in other code too. Option parsing -------------- -Files: common/help.h, common/parse-utils.h +Files: :file:`common/help.h`, :file:`common/parse-utils.h` Global options need to be processed and consumed by `clean_args_no_options`, argument count by `check_argc_*`, `usage_*` for handling usage. @@ -18,6 +19,21 @@ Options are parsed by `getopt` or `getopt_long`. Individual values from options are recognized by `parse_*`, basic types and custom types are supported. +Size unit pretty printing +------------------------- + +Files: :file:`common/units.h` + +Many commands print byte sizes with suffixes and the output format can be +affected by command line options. In the help text the options are specified by +either `HELPINFO_UNITS_SHORT_LONG` (both long and short options) or just +`HELPINFO_UNITS_LONG` in case the short option letters would conflict. + +Automatic parsing of the options from *argv* is done by `get_unit_mode_from_arg`. +Printing options is done by `pretty_size_mode` which takes the value and option +mode. Default mode is human readable, the macros defining the modes are from +`UNITS_*` namespace. + TODO ---- @@ -33,4 +49,3 @@ * common/string-table.h * common/string-table.h * common/task-utils.h -* common/units.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/dev/dev-send-stream.rst new/btrfs-progs-v6.5.1/Documentation/dev/dev-send-stream.rst --- old/btrfs-progs-v6.5/Documentation/dev/dev-send-stream.rst 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/dev/dev-send-stream.rst 2023-09-13 19:47:53.000000000 +0200 @@ -19,14 +19,36 @@ Raw data types. Integer values are stored in little endian byte order. -- unsigned int 8bit (u8) -- unsigned int 16bit (u16) -- unsigned int 32bit (u32) -- unsigned int 64bit (u64) -- variable length binary data (data) -- variable length string (string) -- UUID, 16 bytes (uuid) -- time specification, 64bit seconds, 32bit nanoseconds (timespec) +.. list-table:: + :header-rows: 1 + + * - Meaning + - Size + - Name + * - unsigned int + - 8 bit + - u8 + * - unsigned int + - 16 bit + - u16 + * - unsigned int + - 32 bit + - u32 + * - unsigned int + - 64 bit + - u64 + * - variable length binary data + - variable + - data + * - variable length string + - variable + - string + * - UUID + - 16 bytes + - uuid + * - time specification + - 64bit seconds, 32bit nanoseconds + - timespec Stream structure ---------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/fsck.btrfs.8 new/btrfs-progs-v6.5.1/Documentation/fsck.btrfs.8 --- old/btrfs-progs-v6.5/Documentation/fsck.btrfs.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/fsck.btrfs.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "FSCK.BTRFS" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "FSCK.BTRFS" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME fsck.btrfs \- do nothing, successfully .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/mkfs.btrfs.8 new/btrfs-progs-v6.5.1/Documentation/mkfs.btrfs.8 --- old/btrfs-progs-v6.5/Documentation/mkfs.btrfs.8 2023-09-01 14:42:18.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/mkfs.btrfs.8 2023-09-13 19:48:29.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "MKFS.BTRFS" "8" "Sep 01, 2023" "6.5" "BTRFS" +.TH "MKFS.BTRFS" "8" "Sep 13, 2023" "6.5.1" "BTRFS" .SH NAME mkfs.btrfs \- create a btrfs filesystem .SH SYNOPSIS @@ -111,6 +111,8 @@ .UNINDENT .sp On multiple devices the default is \fIraid1\fP\&. +.UNINDENT +.INDENT 0.0 .TP .B \-M|\-\-mixed Normally the data and metadata block groups are isolated. The \fImixed\fP mode @@ -369,12 +371,29 @@ (default since btrfs\-progs 5.15, kernel support since 4.5) .sp Enable the free space tree (mount option \fIspace_cache=v2\fP) for persisting the -free space cache. +free space cache in a b\-tree. This is built on top of the COW mechanism +and has better performance than v1. +.sp +Offline conversion from filesystems that don\(aqt have this feature +enabled at \fImkfs\fP time is possible, see \fI\%btrfstune(8)\fP\&. +.sp +Online conversion can be done by mounting with \fBspace_cache=v2\fP, this +is sufficient to be done one time. +.UNINDENT +.INDENT 0.0 .TP .B block\-group\-tree (kernel support since 6.1) .sp -Enable the block group tree to greatly reduce mount time for large filesystems. +Enable a dedicated b\-tree for block group items, this greatly reduces +mount time for large filesystems due to better data locality that +avoids seeking. On rotational devices the \fIlarge\fP size is considered +starting from the 2\-4TiB. Can be used on other types of devices (SSD, +NVMe, ...) as well. +.sp +Offline conversion from filesystems that don\(aqt have this feature +enabled at \fImkfs\fP time is possible, see \fI\%btrfstune(8)\fP\&. Online +conversion is not possible. .UNINDENT .SH BLOCK GROUPS, CHUNKS, RAID .sp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/Documentation/mkfs.btrfs.rst new/btrfs-progs-v6.5.1/Documentation/mkfs.btrfs.rst --- old/btrfs-progs-v6.5/Documentation/mkfs.btrfs.rst 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/Documentation/mkfs.btrfs.rst 2023-09-13 19:47:53.000000000 +0200 @@ -79,6 +79,8 @@ On multiple devices the default is *raid1*. +.. _mkfs-feature-mixed-bg: + -M|--mixed Normally the data and metadata block groups are isolated. The *mixed* mode will remove the isolation and store both types in the same block group type. @@ -300,12 +302,29 @@ (default since btrfs-progs 5.15, kernel support since 4.5) Enable the free space tree (mount option *space_cache=v2*) for persisting the - free space cache. + free space cache in a b-tree. This is built on top of the COW mechanism + and has better performance than v1. + + Offline conversion from filesystems that don't have this feature + enabled at *mkfs* time is possible, see :doc:`btrfstune`. + + Online conversion can be done by mounting with ``space_cache=v2``, this + is sufficient to be done one time. + +.. _mkfs-feature-block-group-tree: block-group-tree (kernel support since 6.1) - Enable the block group tree to greatly reduce mount time for large filesystems. + Enable a dedicated b-tree for block group items, this greatly reduces + mount time for large filesystems due to better data locality that + avoids seeking. On rotational devices the *large* size is considered + starting from the 2-4TiB. Can be used on other types of devices (SSD, + NVMe, ...) as well. + + Offline conversion from filesystems that don't have this feature + enabled at *mkfs* time is possible, see :doc:`btrfstune`. Online + conversion is not possible. .. _mkfs-section-profiles: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/VERSION new/btrfs-progs-v6.5.1/VERSION --- old/btrfs-progs-v6.5/VERSION 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/VERSION 2023-09-13 19:47:53.000000000 +0200 @@ -1 +1 @@ -v6.5 +v6.5.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/check/main.c new/btrfs-progs-v6.5.1/check/main.c --- old/btrfs-progs-v6.5/check/main.c 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/check/main.c 2023-09-13 19:47:53.000000000 +0200 @@ -4195,7 +4195,8 @@ rec->num_duplicates == 0 && !all_backpointers_checked(rec, 0) && !rec->bad_full_backref && !rec->crossing_stripes && rec->generation <= super_gen + 1 && - !rec->wrong_chunk_type) { + !rec->wrong_chunk_type && + (!rec->metadata || rec->info_level == rec->level)) { remove_cache_extent(extent_cache, &rec->cache); free_all_extent_backrefs(rec); list_del_init(&rec->list); @@ -4767,6 +4768,7 @@ rec->extent_item_refs = tmpl->extent_item_refs; rec->parent_generation = tmpl->parent_generation; rec->generation = tmpl->generation; + rec->level = tmpl->level; INIT_LIST_HEAD(&rec->backrefs); INIT_LIST_HEAD(&rec->dups); INIT_LIST_HEAD(&rec->list); @@ -4848,6 +4850,7 @@ rec->num_duplicates++; } else { rec->nr = tmpl->nr; + rec->level = tmpl->level; rec->found_rec = 1; } } @@ -5592,6 +5595,8 @@ if (metadata) btrfs_check_subpage_eb_alignment(gfs_info, key.objectid, num_bytes); + memset(&tmpl, 0, sizeof(tmpl)); + ptr = (unsigned long)(ei + 1); if (metadata) { u64 level; @@ -5610,8 +5615,10 @@ key.objectid, level, BTRFS_MAX_LEVEL - 1); return -EUCLEAN; } + + tmpl.level = (u8)level; } - memset(&tmpl, 0, sizeof(tmpl)); + tmpl.start = key.objectid; tmpl.nr = num_bytes; tmpl.extent_item_refs = refs; @@ -8144,6 +8151,14 @@ cur_err = 1; } } + + if (rec->metadata && rec->level != rec->info_level) { + fprintf(stderr, + "metadata level mismatch on [%llu, %llu]\n", + rec->start, rec->nr); + cur_err = 1; + } + if (rec->refs != rec->extent_item_refs) { fprintf(stderr, "ref mismatch on [%llu %llu] ", (unsigned long long)rec->start, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/check/mode-original.h new/btrfs-progs-v6.5.1/check/mode-original.h --- old/btrfs-progs-v6.5/check/mode-original.h 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/check/mode-original.h 2023-09-13 19:47:53.000000000 +0200 @@ -90,6 +90,7 @@ u64 info_objectid; u32 num_duplicates; u8 info_level; + u8 level; unsigned int flag_block_full_backref:2; unsigned int found_rec:1; unsigned int content_checked:1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/common/cpu-utils.c new/btrfs-progs-v6.5.1/common/cpu-utils.c --- old/btrfs-progs-v6.5/common/cpu-utils.c 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/common/cpu-utils.c 2023-09-13 19:47:53.000000000 +0200 @@ -54,6 +54,7 @@ FLAG(SSE2); FLAG(SSSE3); FLAG(SSE41); + FLAG(PCLMUL); FLAG(SSE42); FLAG(SHA); FLAG(AVX); @@ -76,6 +77,10 @@ __cpu_flags |= CPU_FLAG_SSSE3; if (__builtin_cpu_supports("sse4.1")) __cpu_flags |= CPU_FLAG_SSE41; +#if HAVE___BUILTIN_CPU_SUPPORTS__PCLMUL + if (__builtin_cpu_supports("pclmul")) + __cpu_flags |= CPU_FLAG_PCLMUL; +#endif if (__builtin_cpu_supports("sse4.2")) __cpu_flags |= CPU_FLAG_SSE42; if (__builtin_cpu_supports("avx")) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/common/cpu-utils.h new/btrfs-progs-v6.5.1/common/cpu-utils.h --- old/btrfs-progs-v6.5/common/cpu-utils.h 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/common/cpu-utils.h 2023-09-13 19:47:53.000000000 +0200 @@ -33,6 +33,7 @@ ENUM_CPU_BIT(CPU_FLAG_SSE2), ENUM_CPU_BIT(CPU_FLAG_SSSE3), ENUM_CPU_BIT(CPU_FLAG_SSE41), + ENUM_CPU_BIT(CPU_FLAG_PCLMUL), ENUM_CPU_BIT(CPU_FLAG_SSE42), ENUM_CPU_BIT(CPU_FLAG_SHA), ENUM_CPU_BIT(CPU_FLAG_AVX), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/config/ax_gcc_builtin.m4 new/btrfs-progs-v6.5.1/config/ax_gcc_builtin.m4 --- old/btrfs-progs-v6.5/config/ax_gcc_builtin.m4 2023-07-13 16:27:16.000000000 +0200 +++ new/btrfs-progs-v6.5.1/config/ax_gcc_builtin.m4 2023-09-13 00:52:42.000000000 +0200 @@ -124,6 +124,7 @@ [__builtin_cpu_init], [$1()], [__builtin_cpu_is], [$1("intel")], [__builtin_cpu_supports], [$1("sse")], + [__builtin_cpu_supports__pclmul], [__builtin_cpu_supports("pclmul")], [__builtin_ctz], [$1(0)], [__builtin_ctzl], [$1(0)], [__builtin_ctzll], [$1(0)], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/configure.ac new/btrfs-progs-v6.5.1/configure.ac --- old/btrfs-progs-v6.5/configure.ac 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/configure.ac 2023-09-13 19:47:53.000000000 +0200 @@ -86,6 +86,7 @@ AX_GCC_BUILTIN([__builtin_add_overflow]) AX_GCC_BUILTIN([__builtin_sub_overflow]) AX_GCC_BUILTIN([__builtin_mul_overflow]) +AX_GCC_BUILTIN([__builtin_cpu_supports__pclmul]) AC_CHECK_HEADERS([linux/perf_event.h]) AC_CHECK_HEADERS([linux/hw_breakpoint.h]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/crypto/crc32c-pcl-intel-asm_64.S new/btrfs-progs-v6.5.1/crypto/crc32c-pcl-intel-asm_64.S --- old/btrfs-progs-v6.5/crypto/crc32c-pcl-intel-asm_64.S 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/crypto/crc32c-pcl-intel-asm_64.S 2023-09-13 19:47:53.000000000 +0200 @@ -321,10 +321,10 @@ .size crc_pcl, .-crc_pcl ###SYM_FUNC_END(crc_pcl) -.section .rodata, "a", @progbits ################################################################ ## jump table Table is 129 entries x 2 bytes each ################################################################ +.data .align 4 jump_table: i=0 @@ -340,6 +340,7 @@ ## PCLMULQDQ tables ## Table is 128 entries x 2 words (8 bytes) each ################################################################ +.section .rodata, "a", @progbits .align 8 K_table: .long 0x493c7d27, 0x00000001 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/crypto/crc32c.c new/btrfs-progs-v6.5.1/crypto/crc32c.c --- old/btrfs-progs-v6.5/crypto/crc32c.c 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/crypto/crc32c.c 2023-09-13 19:47:53.000000000 +0200 @@ -25,7 +25,7 @@ return crc_pcl(data, len, crc); } -#else +#endif /* * Based on a posting to lkml by Austin Zhang <[email protected]> @@ -86,8 +86,6 @@ return crc; } -#endif - void crc32c_init_accel(void) { /* @@ -96,14 +94,13 @@ */ if (0) { #ifdef __GLIBC__ - } else if (cpu_has_feature(CPU_FLAG_SSE42)) { + } else if (cpu_has_feature(CPU_FLAG_PCLMUL)) { /* printf("CRC32C: pcl\n"); */ crc_function = crc32c_pcl; -#else +#endif } else if (cpu_has_feature(CPU_FLAG_SSE42)) { /* printf("CRC32c: intel\n"); */ crc_function = crc32c_intel; -#endif } else { /* printf("CRC32c: fallback\n"); */ crc_function = __crc32c_le; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/crypto/hash-speedtest.c new/btrfs-progs-v6.5.1/crypto/hash-speedtest.c --- old/btrfs-progs-v6.5/crypto/hash-speedtest.c 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/crypto/hash-speedtest.c 2023-09-13 19:47:53.000000000 +0200 @@ -190,7 +190,7 @@ { .name = "CRC32C-ref", .digest = hash_crc32c, .digest_size = 4, .cpu_flag = CPU_FLAG_NONE }, { .name = "CRC32C-NI", .digest = hash_crc32c, .digest_size = 4, - .cpu_flag = CPU_FLAG_SSE42 }, + .cpu_flag = CPU_FLAG_PCLMUL }, { .name = "XXHASH", .digest = hash_xxhash, .digest_size = 8 }, { .name = "SHA256-ref", .digest = hash_sha256, .digest_size = 32, .cpu_flag = CPU_FLAG_NONE, .backend = CRYPTOPROVIDER_BUILTIN + 1 }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/crypto/hash-vectest.c new/btrfs-progs-v6.5.1/crypto/hash-vectest.c --- old/btrfs-progs-v6.5/crypto/hash-vectest.c 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/crypto/hash-vectest.c 2023-09-13 19:47:53.000000000 +0200 @@ -442,7 +442,7 @@ .digest_size = 4, .testvec = crc32c_tv, .count = ARRAY_SIZE(crc32c_tv), - .cpu_flag = CPU_FLAG_SSE42, + .cpu_flag = CPU_FLAG_PCLMUL, .hash = hash_crc32c }, { .name = "XXHASH", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/include/config.h.in new/btrfs-progs-v6.5.1/include/config.h.in --- old/btrfs-progs-v6.5/include/config.h.in 2023-05-17 13:17:08.000000000 +0200 +++ new/btrfs-progs-v6.5.1/include/config.h.in 2023-09-13 00:28:16.000000000 +0200 @@ -127,6 +127,10 @@ function */ #undef HAVE___BUILTIN_ADD_OVERFLOW +/* Define to 1 if the system has the `__builtin_cpu_supports__pclmul' built-in + function */ +#undef HAVE___BUILTIN_CPU_SUPPORTS__PCLMUL + /* Define to 1 if the system has the `__builtin_mul_overflow' built-in function */ #undef HAVE___BUILTIN_MUL_OVERFLOW diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/tests/cli-tests.sh new/btrfs-progs-v6.5.1/tests/cli-tests.sh --- old/btrfs-progs-v6.5/tests/cli-tests.sh 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/tests/cli-tests.sh 2023-09-13 19:47:53.000000000 +0200 @@ -77,3 +77,5 @@ fi cd "$TEST_TOP" done + +"$TEST_TOP/scan-results.sh" "$RESULTS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/tests/convert-tests.sh new/btrfs-progs-v6.5.1/tests/convert-tests.sh --- old/btrfs-progs-v6.5/tests/convert-tests.sh 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/tests/convert-tests.sh 2023-09-13 19:47:53.000000000 +0200 @@ -95,3 +95,5 @@ do run_one_test "$i" done + +"$TEST_TOP/scan-results.sh" "$RESULTS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/tests/fsck-tests.sh new/btrfs-progs-v6.5.1/tests/fsck-tests.sh --- old/btrfs-progs-v6.5/tests/fsck-tests.sh 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/tests/fsck-tests.sh 2023-09-13 19:47:53.000000000 +0200 @@ -112,3 +112,5 @@ do run_one_test "$i" done + +"$TEST_TOP/scan-results.sh" "$RESULTS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/tests/fuzz-tests.sh new/btrfs-progs-v6.5.1/tests/fuzz-tests.sh --- old/btrfs-progs-v6.5/tests/fuzz-tests.sh 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/tests/fuzz-tests.sh 2023-09-13 19:47:53.000000000 +0200 @@ -76,3 +76,5 @@ fi cd "$TEST_TOP" done + +"$TEST_TOP/scan-results.sh" "$RESULTS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/tests/ioctl-test.c new/btrfs-progs-v6.5.1/tests/ioctl-test.c --- old/btrfs-progs-v6.5/tests/ioctl-test.c 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/tests/ioctl-test.c 2023-09-13 19:47:53.000000000 +0200 @@ -192,7 +192,7 @@ static struct btrfs_ioctl_same_args used_same_args __attribute__((used)); static struct btrfs_ioctl_feature_flags used_feature_flags __attribute__((used)); -const char* value_to_string(unsigned long num) +static const char* value_to_string(unsigned long num) { #define ONE(x) case x: return #x; switch (num) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/tests/misc-tests.sh new/btrfs-progs-v6.5.1/tests/misc-tests.sh --- old/btrfs-progs-v6.5/tests/misc-tests.sh 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/tests/misc-tests.sh 2023-09-13 19:47:53.000000000 +0200 @@ -84,3 +84,5 @@ fi cd "$TEST_TOP" done + +"$TEST_TOP/scan-results.sh" "$RESULTS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/tests/mkfs-tests.sh new/btrfs-progs-v6.5.1/tests/mkfs-tests.sh --- old/btrfs-progs-v6.5/tests/mkfs-tests.sh 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/tests/mkfs-tests.sh 2023-09-13 19:47:53.000000000 +0200 @@ -79,3 +79,5 @@ fi cd "$TEST_TOP" done + +"$TEST_TOP/scan-results.sh" "$RESULTS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/tests/scan-results.sh new/btrfs-progs-v6.5.1/tests/scan-results.sh --- old/btrfs-progs-v6.5/tests/scan-results.sh 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/tests/scan-results.sh 2023-09-13 19:47:53.000000000 +0200 @@ -1,21 +1,39 @@ #!/bin/sh +# Look for some frequent error message templates in test logs +# +# Usage: $0 [test-log.txt] -# look for some error messages in all test logs +ret=0 -for i in *.txt; do - echo "Scanning $i" +scan_log() { + local file="$1" + + echo "Scanning $file" last= while read line; do case "$line" in - ===\ Entering*) last="$line" ;; - *Assertion*failed*) echo "ASSERTION FAILED: $last" ;; - *runtime\ error*) echo "RUNTIME ERROR (sanitizer): $last" ;; - *AddressSanitizer*heap-use-after-free*) echo "RUNTIME ERROR (use after free): $last" ;; - *LeakSanitizer:*leak*) echo "SANITIZER REPORT: memory leak: $last" ;; - *Warning:\ assertion*failed*) echo "ASSERTION WARNING: $last" ;; - *command\ not\ found*) echo "COMMAND NOT FOUND: $last" ;; - *extent\ buffer\ leak*) echo "EXTENT BUFFER LEAK: $last" ;; + ===\ START\ TEST*) last="$line" ;; + *Assertion*failed*) ret=1; echo "ASSERTION FAILED: $last" ;; + *runtime\ error*) ret=1; echo "RUNTIME ERROR (sanitizer): $last" ;; + *AddressSanitizer*heap-use-after-free*) ret=1; echo "RUNTIME ERROR (use after free): $last" ;; + *LeakSanitizer:*leak*) ret=1; echo "SANITIZER REPORT: memory leak: $last" ;; + *Warning:\ assertion*failed*) ret=1; echo "ASSERTION WARNING: $last" ;; + *command\ not\ found*) ret=1; echo "COMMAND NOT FOUND: $last" ;; + *extent\ buffer\ leak*) ret=1; echo "EXTENT BUFFER LEAK: $last" ;; *) : ;; esac - done < "$i" + done < "$file" +} + +# Scan only the given file +if [ -n "$1" ]; then + scan_log "$1" + exit "$ret" +fi + +# Scan all existing test logs +for file in *.txt; do + scan_log "$file" done + +exit "$ret" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/btrfs-progs-v6.5/tests/string-table-test.c new/btrfs-progs-v6.5.1/tests/string-table-test.c --- old/btrfs-progs-v6.5/tests/string-table-test.c 2023-09-01 14:41:37.000000000 +0200 +++ new/btrfs-progs-v6.5.1/tests/string-table-test.c 2023-09-13 19:47:53.000000000 +0200 @@ -19,7 +19,7 @@ #include "common/utils.h" #include "common/string-table.h" -void test_simple_create_free() +static void test_simple_create_free() { struct string_table *tab; @@ -38,7 +38,7 @@ table_free(tab); } -void test_simple_header() +static void test_simple_header() { struct string_table *tab; int i; @@ -68,7 +68,7 @@ table_free(tab); } -void test_simple_paginate() +static void test_simple_paginate() { struct string_table *tab; unsigned int page_size = 4;
