From 5593300dc515bd101a388e88bd5ee99628940fce6ef8ebaf5660ad8b2c9fad59 Mon Sep 17 00:00:00 2001 From: David Sterba Date: Thu, 4 Jul 2013 13:43:42 +0000 Subject: [PATCH 1/5] Accepting request 182207 from home:dsterba:branches:filesystems - update to upstream master (f00dd8386a57d241d0f7c) OBS-URL: https://build.opensuse.org/request/show/182207 OBS-URL: https://build.opensuse.org/package/show/filesystems/btrfsprogs?expand=0&rev=129 --- ...e-btrfsck-a-hardlink-at-install-time.patch | 33 + ...AME-to-libbtrfs.so.0-instead-of-libb.patch | 27 + ...-btrfs-progs-ignore-a-option-in-mkfs.patch | 37 - 0102-Add-the-force-option.patch | 108 -- ...s-man-page-document-the-force-option.patch | 35 - ...-ENXIO-and-ENOMEDIUM-during-a-devs-s.patch | 42 - 0105-Regression-tests.patch | 275 ----- 0106-Fix-sub-snap-parameter-handling.patch | 84 -- 0107-Add-info-for-the-commands.patch | 474 --------- ...-footer-introduction-of-the-man-page.patch | 202 ---- ...-to-extract-the-info-for-the-help-fr.patch | 458 -------- ...makefile-for-generating-the-man-page.patch | 710 ------------- ...essages-from-the-info-in-the-comment.patch | 78 -- ...ile-for-generating-the-help-messages.patch | 53 - 0113-Btrfs-progs-add-restriper-commands.patch | 907 ---------------- ...ioctl-to-read-compressed-size-of-a-f.patch | 181 ---- ...-btrfs-progs-fixup-is_mounted-checks.patch | 85 -- ...an-option-for-specifying-the-root-to.patch | 95 -- ...-other-mirrors-if-decomression-fails.patch | 134 --- ...gs-try-other-mirrors-on-read-failure.patch | 40 - ...error-handling-for-failed-reads-in-r.patch | 54 - ...-Check-metadata-mirrors-in-find-root.patch | 55 - ...tput-directory-and-btrfs-local-path-.patch | 84 -- ...x-matching-of-paths-and-files-to-be-.patch | 130 --- ...find-root-dump-bytenr-for-every-slot.patch | 92 -- ...utility-to-dump-all-superblocks-foun.patch | 161 --- ...the-ability-to-use-the-earliest-supe.patch | 179 ---- ...oldest-super-for-btrfs-select-super..patch | 111 -- ...d-lzo-compression-support-to-restore.patch | 191 ---- ...regexec-to-only-work-if-we-actually-.patch | 31 - ...compilation-errors-with-btrfs-select.patch | 36 - ...restore-to-fall-back-to-the-broken-o.patch | 443 -------- ...t-bug-out-if-we-can-t-find-the-last-.patch | 32 - ...-find_and_setup_root-return-an-error.patch | 37 - ...fs-progs-check-return-value-properly.patch | 31 - ...ogs-give-restore-a-list-roots-option.patch | 180 ---- ...ix-compiler-warning-of-extent-tree.c.patch | 32 - ...nge-the-way-mkfs-picks-raid-profiles.patch | 130 --- ...-gracefully-on-error-from-open_ctree.patch | 45 - ...-bugfix-for-scrubbing-single-devices.patch | 32 - ...-find-root-spit-out-the-size-of-the-.patch | 34 - ...add-some-verbose-output-to-find-root.patch | 50 - ...restore-to-actually-use-the-root-loc.patch | 46 - ...ve-the-physical-disk-size-check-from.patch | 35 - ...error-output-and-dont-read-from-cach.patch | 34 - ...t-the-objectid-of-the-root-we-find-w.patch | 32 - ...-specifying-root-objectid-work-if-th.patch | 170 --- ...s-progs-don-t-free-the-existing-node.patch | 31 - ...tion-of-filesystem-larger-than-the-f.patch | 105 -- ...ved-extraneous-whitespace-from-mkfs-.patch | 47 - ...s-progs-document-rootdir-mkfs-switch.patch | 32 - ...n_ctree_fs_info-for-partial-FS-opens.patch | 409 -------- ...me-progress-Signed-off-by-Chris-Maso.patch | 34 - ...Allow-extent_buffers-to-use-more-ram.patch | 54 - ...on-t-BUG-on-corrupted-extent-records.patch | 32 - ...ock-add-e-option-to-corrupt-the-exte.patch | 194 ---- ...k-add-code-to-rebuild-extent-records.patch | 892 ---------------- ...ock-add-E-option-to-randomly-corrupt.patch | 277 ----- ...block-group-accounting-during-repair.patch | 393 ------- 0160-Turn-off-some-commands-in-Makefile.patch | 26 - ...t-btrfs-restore-and-btrfs-find-root-.patch | 78 -- ...e-to-dirty-all-block-groups-as-we-fi.patch | 43 - ...-csum-tree-to-replace-the-csum-root-.patch | 179 ---- ...e-we-fix-the-block-group-accounting-.patch | 93 -- ...xtents-from-the-fsck-reference-track.patch | 209 ---- ...ability-to-prune-corrupt-extent-allo.patch | 974 ------------------ ...artitions-scanning-for-btrfs_scan_fo.patch | 36 - ...ev-md-and-device-mapper-devices-last.patch | 93 -- ...y-code-to-handle-corrupted-block-gro.patch | 285 ----- ...-btrfs-map-logical-Fix-typo-in-usage.patch | 38 - ...fs-corrupt-block-fix-the-wrong-usage.patch | 48 - ...btrfsck-s-snapshot-wrong-unresolved-.patch | 116 --- ...st-size-of-filesystem-if-blockdevice.patch | 28 - ...-redundant-zeroing-in-__list_subvol_.patch | 31 - ...refactor-resolve_root-function-a-bit.patch | 89 -- ...ogs-bring-subvol-get-default-back-in.patch | 142 --- ...-print-tree.c-aware-of-free-space-ca.patch | 185 ---- ...ow-dup-for-data-chunks-in-mixed-mode.patch | 72 -- 0179-btrfs-progs-mkfs-rename-T-to-K.patch | 79 -- ...rogs-mkfs-allow-not-to-trim-a-device.patch | 152 --- ...onvert-set-label-or-copy-from-origin.patch | 107 -- ...-disallow-uneven-data-metadata-block.patch | 42 - 0184-btrfs-progs-get-default-man-page.patch | 36 - ...-btrfs-progs-Correct-xstrip-function.patch | 51 - ...-document-devid-parameter-for-resize.patch | 53 - ...trfs-progs-document-csize-in-manpage.patch | 41 - ...fs-progs-document-balance-in-manpage.patch | 126 --- ...gs-manpage-fix-markup-in-device-scan.patch | 26 - 0190-btrfs-progs-document-fi-df.patch | 55 - ...s-document-inspect-internal-commands.patch | 54 - ...progs-add-man-page-for-btrfs-convert.patch | 104 -- ...gs-tweak-order-of-devices-in-fi-show.patch | 28 - 80-btrfs.rules | 20 + ...mory-leak-in-find_and_setup_log_root.patch | 28 - boot-btrfs.sh | 3 +- ...progs-fix-open_ctree_usage_segfaults.patch | 248 ----- ...rogs-use-IEEE1541-suffixes-for-sizes.patch | 0 btrfs-progs-v0.19-118-gfdb6c04.tar.bz2 | 3 - btrfs-progs-v0.20-rc1-335-gf00dd83.tar.bz2 | 3 + btrfs-reorder-commands-help | 47 - btrfsprogs.changes | 4 + btrfsprogs.spec | 284 ++--- local-version-override.patch | 4 +- memleak-fix.diff | 10 - setup-btrfs.sh | 8 + 105 files changed, 162 insertions(+), 13264 deletions(-) create mode 100644 0010-Btrfs-progs-make-btrfsck-a-hardlink-at-install-time.patch create mode 100644 0012-libbtrfs-Set-SONAME-to-libbtrfs.so.0-instead-of-libb.patch delete mode 100644 0100-btrfs-progs-ignore-a-option-in-mkfs.patch delete mode 100644 0102-Add-the-force-option.patch delete mode 100644 0103-mkfs.btrfs-man-page-document-the-force-option.patch delete mode 100644 0104-Ignore-the-error-ENXIO-and-ENOMEDIUM-during-a-devs-s.patch delete mode 100644 0105-Regression-tests.patch delete mode 100644 0106-Fix-sub-snap-parameter-handling.patch delete mode 100644 0107-Add-info-for-the-commands.patch delete mode 100644 0108-Add-the-header-footer-introduction-of-the-man-page.patch delete mode 100644 0109-helpextract-tool-to-extract-the-info-for-the-help-fr.patch delete mode 100644 0110-Update-the-makefile-for-generating-the-man-page.patch delete mode 100644 0111-Show-the-help-messages-from-the-info-in-the-comment.patch delete mode 100644 0112-Update-the-makefile-for-generating-the-help-messages.patch delete mode 100644 0113-Btrfs-progs-add-restriper-commands.patch delete mode 100644 0114-btrfs-progs-Add-ioctl-to-read-compressed-size-of-a-f.patch delete mode 100644 0115-btrfs-progs-fixup-is_mounted-checks.patch delete mode 100644 0116-Btrfs-progs-add-an-option-for-specifying-the-root-to.patch delete mode 100644 0117-Btrfs-progs-try-other-mirrors-if-decomression-fails.patch delete mode 100644 0118-Btrfs-progs-try-other-mirrors-on-read-failure.patch delete mode 100644 0119-btrfs-progs-Fix-error-handling-for-failed-reads-in-r.patch delete mode 100644 0120-btrfs-progs-Check-metadata-mirrors-in-find-root.patch delete mode 100644 0121-restore-Split-output-directory-and-btrfs-local-path-.patch delete mode 100644 0122-restore-Add-regex-matching-of-paths-and-files-to-be-.patch delete mode 100644 0123-btrfs-progs-In-find-root-dump-bytenr-for-every-slot.patch delete mode 100644 0124-btrfs-progs-Add-utility-to-dump-all-superblocks-foun.patch delete mode 100644 0125-btrfs-progs-Add-the-ability-to-use-the-earliest-supe.patch delete mode 100644 0126-btrfs-progs-Use-oldest-super-for-btrfs-select-super..patch delete mode 100644 0127-btrfs-progs-add-lzo-compression-support-to-restore.patch delete mode 100644 0128-btrfs-progs-fix-regexec-to-only-work-if-we-actually-.patch delete mode 100644 0129-btrfs-progs-Fix-compilation-errors-with-btrfs-select.patch delete mode 100644 0130-Btrfs-progs-fix-restore-to-fall-back-to-the-broken-o.patch delete mode 100644 0131-Btrfs-progs-don-t-bug-out-if-we-can-t-find-the-last-.patch delete mode 100644 0132-Btrfs-progs-make-find_and_setup_root-return-an-error.patch delete mode 100644 0133-Btrfs-progs-check-return-value-properly.patch delete mode 100644 0134-Btrfs-progs-give-restore-a-list-roots-option.patch delete mode 100644 0135-Btrfs-progs-fix-compiler-warning-of-extent-tree.c.patch delete mode 100644 0136-Btrfs-progs-change-the-way-mkfs-picks-raid-profiles.patch delete mode 100644 0137-Btrfs-progs-fail-gracefully-on-error-from-open_ctree.patch delete mode 100644 0138-Btrfs-progs-bugfix-for-scrubbing-single-devices.patch delete mode 100644 0139-Btrfs-progs-make-find-root-spit-out-the-size-of-the-.patch delete mode 100644 0140-Btrfs-progs-add-some-verbose-output-to-find-root.patch delete mode 100644 0141-Btrfs-progs-fix-restore-to-actually-use-the-root-loc.patch delete mode 100644 0142-Btrfs-progs-remove-the-physical-disk-size-check-from.patch delete mode 100644 0143-Btrfs-progs-fix-error-output-and-dont-read-from-cach.patch delete mode 100644 0144-Btrfs-progs-print-the-objectid-of-the-root-we-find-w.patch delete mode 100644 0145-Btrfs-progs-make-specifying-root-objectid-work-if-th.patch delete mode 100644 0146-Btrfs-progs-don-t-free-the-existing-node.patch delete mode 100644 0147-mkfs-Handle-creation-of-filesystem-larger-than-the-f.patch delete mode 100644 0150-btrfs-progs-removed-extraneous-whitespace-from-mkfs-.patch delete mode 100644 0151-btrfs-progs-document-rootdir-mkfs-switch.patch delete mode 100644 0152-Add-open_ctree_fs_info-for-partial-FS-opens.patch delete mode 100644 0153-btrfsck-print-some-progress-Signed-off-by-Chris-Maso.patch delete mode 100644 0154-Allow-extent_buffers-to-use-more-ram.patch delete mode 100644 0155-btrfsck-don-t-BUG-on-corrupted-extent-records.patch delete mode 100644 0156-btrfs-corrupt-block-add-e-option-to-corrupt-the-exte.patch delete mode 100644 0157-btrfsck-add-code-to-rebuild-extent-records.patch delete mode 100644 0158-btrfs-corrupt-block-add-E-option-to-randomly-corrupt.patch delete mode 100644 0159-btrfsck-fix-block-group-accounting-during-repair.patch delete mode 100644 0160-Turn-off-some-commands-in-Makefile.patch delete mode 100644 0161-Fix-btrfs-convert-btrfs-restore-and-btrfs-find-root-.patch delete mode 100644 0162-btrfsck-make-sure-to-dirty-all-block-groups-as-we-fi.patch delete mode 100644 0163-btrfsck-add-init-csum-tree-to-replace-the-csum-root-.patch delete mode 100644 0164-btrfsck-make-sure-we-fix-the-block-group-accounting-.patch delete mode 100644 0165-btrfsck-remove-extents-from-the-fsck-reference-track.patch delete mode 100644 0166-Btrfsck-add-the-ability-to-prune-corrupt-extent-allo.patch delete mode 100644 0167-Btrfs-use-proc-partitions-scanning-for-btrfs_scan_fo.patch delete mode 100644 0168-Scan-dev-md-and-device-mapper-devices-last.patch delete mode 100644 0169-btrfsck-add-early-code-to-handle-corrupted-block-gro.patch delete mode 100644 0170-Btrfs-progs-btrfs-map-logical-Fix-typo-in-usage.patch delete mode 100644 0171-Btrfs-progs-btrfs-corrupt-block-fix-the-wrong-usage.patch delete mode 100644 0172-Btrfs-progs-fix-btrfsck-s-snapshot-wrong-unresolved-.patch delete mode 100644 0173-btrfs-progs-adjust-size-of-filesystem-if-blockdevice.patch delete mode 100644 0174-Btrfs-progs-nuke-redundant-zeroing-in-__list_subvol_.patch delete mode 100644 0175-Btrfs-progs-refactor-resolve_root-function-a-bit.patch delete mode 100644 0176-Btrfs-progs-bring-subvol-get-default-back-in.patch delete mode 100644 0177-Btrfs-progs-make-print-tree.c-aware-of-free-space-ca.patch delete mode 100644 0178-Btrfs-progs-allow-dup-for-data-chunks-in-mixed-mode.patch delete mode 100644 0179-btrfs-progs-mkfs-rename-T-to-K.patch delete mode 100644 0181-btrfs-progs-mkfs-allow-not-to-trim-a-device.patch delete mode 100644 0182-btrfs-progs-convert-set-label-or-copy-from-origin.patch delete mode 100644 0183-btrfs-progs-mkfs-disallow-uneven-data-metadata-block.patch delete mode 100644 0184-btrfs-progs-get-default-man-page.patch delete mode 100644 0185-btrfs-progs-Correct-xstrip-function.patch delete mode 100644 0186-btrfs-progs-document-devid-parameter-for-resize.patch delete mode 100644 0187-btrfs-progs-document-csize-in-manpage.patch delete mode 100644 0188-btrfs-progs-document-balance-in-manpage.patch delete mode 100644 0189-btrfs-progs-manpage-fix-markup-in-device-scan.patch delete mode 100644 0190-btrfs-progs-document-fi-df.patch delete mode 100644 0191-btrfs-progs-document-inspect-internal-commands.patch delete mode 100644 0192-btrfs-progs-add-man-page-for-btrfs-convert.patch delete mode 100644 0193-btrfs-progs-tweak-order-of-devices-in-fi-show.patch create mode 100644 80-btrfs.rules delete mode 100644 Plug-Memory-leak-in-find_and_setup_log_root.patch delete mode 100644 btrfs-progs-fix-open_ctree_usage_segfaults.patch rename 0180-btrfs-progs-use-IEEE1541-suffixes-for-sizes.patch => btrfs-progs-use-IEEE1541-suffixes-for-sizes.patch (100%) delete mode 100644 btrfs-progs-v0.19-118-gfdb6c04.tar.bz2 create mode 100644 btrfs-progs-v0.20-rc1-335-gf00dd83.tar.bz2 delete mode 100644 btrfs-reorder-commands-help delete mode 100644 memleak-fix.diff create mode 100644 setup-btrfs.sh diff --git a/0010-Btrfs-progs-make-btrfsck-a-hardlink-at-install-time.patch b/0010-Btrfs-progs-make-btrfsck-a-hardlink-at-install-time.patch new file mode 100644 index 0000000..e3de791 --- /dev/null +++ b/0010-Btrfs-progs-make-btrfsck-a-hardlink-at-install-time.patch @@ -0,0 +1,33 @@ +From 5ca1ded494d7d58b71877bf1f774ac313fabe35f Mon Sep 17 00:00:00 2001 +From: Eric Sandeen +Date: Thu, 2 May 2013 11:20:22 -0500 +Subject: [PATCH 10/48] Btrfs-progs: make btrfsck a hardlink at install time + +btrfsck gets hardlinked to btrfs during the build, but the +install phase simply copies them both to the destination without +preserving the link. + +Just force-link btrfsck in the destination again during install +so that the installed btrfsck is a link as well. + +Signed-off-by: Eric Sandeen +--- + Makefile | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Makefile b/Makefile +index da7438e..0f0b1ac 100644 +--- a/Makefile ++++ b/Makefile +@@ -193,6 +193,8 @@ clean : + install: $(libs) $(progs) install-man + $(INSTALL) -m755 -d $(DESTDIR)$(bindir) + $(INSTALL) $(progs) $(DESTDIR)$(bindir) ++ # btrfsck is a link to btrfs in the src tree, make it so for installed file as well ++ $(LN) -f $(DESTDIR)$(bindir)/btrfs $(DESTDIR)$(bindir)/btrfsck + $(INSTALL) -m755 -d $(DESTDIR)$(libdir) + $(INSTALL) $(libs) $(DESTDIR)$(libdir) + cp -a $(lib_links) $(DESTDIR)$(libdir) +-- +1.8.2 + diff --git a/0012-libbtrfs-Set-SONAME-to-libbtrfs.so.0-instead-of-libb.patch b/0012-libbtrfs-Set-SONAME-to-libbtrfs.so.0-instead-of-libb.patch new file mode 100644 index 0000000..097e460 --- /dev/null +++ b/0012-libbtrfs-Set-SONAME-to-libbtrfs.so.0-instead-of-libb.patch @@ -0,0 +1,27 @@ +From 86f2f0e7742ccbfaf62e2d6415bf170a85c71c0e Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Sun, 12 May 2013 16:33:44 +0100 +Subject: [PATCH 12/48] libbtrfs: Set SONAME to "libbtrfs.so.0" (instead of + "libbtrfs.so"). + +Signed-off-by: Richard W.M. Jones +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 0f0b1ac..7a49174 100644 +--- a/Makefile ++++ b/Makefile +@@ -100,7 +100,7 @@ version.h: + $(libs_shared): $(libbtrfs_objects) $(lib_links) send.h + @echo " [LD] $@" + $(Q)$(CC) $(CFLAGS) $(libbtrfs_objects) $(LDFLAGS) $(lib_LIBS) \ +- -shared -Wl,-soname,libbtrfs.so -o libbtrfs.so.0.1 ++ -shared -Wl,-soname,libbtrfs.so.0 -o libbtrfs.so.0.1 + + $(libs_static): $(libbtrfs_objects) + @echo " [AR] $@" +-- +1.8.2 + diff --git a/0100-btrfs-progs-ignore-a-option-in-mkfs.patch b/0100-btrfs-progs-ignore-a-option-in-mkfs.patch deleted file mode 100644 index c249b3c..0000000 --- a/0100-btrfs-progs-ignore-a-option-in-mkfs.patch +++ /dev/null @@ -1,37 +0,0 @@ -From a6aa706ee793b406761baeaa7cde78d1250f2d2b Mon Sep 17 00:00:00 2001 -From: David Sterba -Date: Wed, 12 Oct 2011 13:36:13 +0200 -Subject: [PATCH 01/35] btrfs-progs: ignore -a option in mkfs - -Let mkfs accept '-a' option and not complain. When a partition has non-zero -value in the fs_passno filed in /etc/fstab, the fsck is run but fails and boot -stops. As fsck does not break things currently, it's safe to ignore the option -and let the boot proceed. - -Reference: https://bugzilla.novell.com/show_bug.cgi?id=655906 - -Signed-off-by: David Sterba ---- - btrfsck.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -diff --git a/btrfsck.c b/btrfsck.c -index 3a23e66..509ab72 100644 ---- a/btrfsck.c -+++ b/btrfsck.c -@@ -2815,10 +2815,11 @@ int main(int ac, char **av) - - while(1) { - int c; -- c = getopt(ac, av, "s:"); -+ c = getopt(ac, av, "as:"); - if (c < 0) - break; - switch(c) { -+ case 'a': /* ignored */ break; - case 's': - num = atol(optarg); - bytenr = btrfs_sb_offset(num); --- -1.7.6.233.gd79bc - diff --git a/0102-Add-the-force-option.patch b/0102-Add-the-force-option.patch deleted file mode 100644 index 836479b..0000000 --- a/0102-Add-the-force-option.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 8456dc84b0c7548ca4f83c4e58e8e9dd443b7686 Mon Sep 17 00:00:00 2001 -From: Goffredo Baroncelli -Date: Mon, 3 Jan 2011 19:51:46 +0100 -Subject: [PATCH 03/35] Add the --force option. - -Add the --force option to not check if a device is already mounted. ---- - mkfs.c | 46 ++++++++++++++++++++++++++++------------------ - 1 files changed, 28 insertions(+), 18 deletions(-) - -diff --git a/mkfs.c b/mkfs.c -index e3ced19..be236d0 100644 ---- a/mkfs.c -+++ b/mkfs.c -@@ -303,6 +303,7 @@ static void print_usage(void) - fprintf(stderr, "\t -A --alloc-start the offset to start the FS\n"); - fprintf(stderr, "\t -b --byte-count total number of bytes in the FS\n"); - fprintf(stderr, "\t -d --data data profile, raid0, raid1, raid10 or single\n"); -+ fprintf(stderr, "\t -f --force don't check if a device is already mounted\n"); - fprintf(stderr, "\t -l --leafsize size of btree leaves\n"); - fprintf(stderr, "\t -L --label set a label\n"); - fprintf(stderr, "\t -m --metadata metadata profile, values like data profile\n"); -@@ -368,6 +369,7 @@ static struct option long_options[] = { - { "data", 1, NULL, 'd' }, - { "version", 0, NULL, 'V' }, - { "rootdir", 1, NULL, 'r' }, -+ { "force", 0, NULL, 'f' }, - { 0, 0, 0, 0} - }; - -@@ -1191,10 +1193,11 @@ int main(int ac, char **av) - u64 size_of_data = 0; - u64 source_dir_size = 0; - char *pretty_buf; -+ int force=0; - - while(1) { - int c; -- c = getopt_long(ac, av, "A:b:l:n:s:m:d:L:r:VM", long_options, -+ c = getopt_long(ac, av, "A:b:l:n:s:m:d:L:r:VMf", long_options, - &option_index); - if (c < 0) - break; -@@ -1240,6 +1243,8 @@ int main(int ac, char **av) - case 'r': - source_dir = optarg; - source_dir_set = 1; -+ case 'f': -+ force=1; - break; - default: - print_usage(); -@@ -1263,14 +1268,17 @@ int main(int ac, char **av) - - if (source_dir == 0) { - file = av[optind++]; -- ret = check_mounted(file); -- if (ret < 0) { -- fprintf(stderr, "error checking %s mount status\n", file); -- exit(1); -- } -- if (ret == 1) { -- fprintf(stderr, "%s is mounted\n", file); -- exit(1); -+ if(!force){ -+ ret = check_mounted(file); -+ if (ret < 0) { -+ fprintf(stderr, -+ "error checking %s mount status\n", file); -+ exit(1); -+ } -+ if (ret == 1) { -+ fprintf(stderr, "%s is mounted\n", file); -+ exit(1); -+ } - } - ac--; - fd = open(file, O_RDWR); -@@ -1353,15 +1361,17 @@ int main(int ac, char **av) - int old_mixed = mixed; - - file = av[optind++]; -- ret = check_mounted(file); -- if (ret < 0) { -- fprintf(stderr, "error checking %s mount status\n", -- file); -- exit(1); -- } -- if (ret == 1) { -- fprintf(stderr, "%s is mounted\n", file); -- exit(1); -+ if(!force){ -+ ret = check_mounted(file); -+ if (ret < 0) { -+ fprintf(stderr, "error checking %s" -+ " mount status\n",file); -+ exit(1); -+ } -+ if (ret == 1) { -+ fprintf(stderr, "%s is mounted\n", file); -+ exit(1); -+ } - } - fd = open(file, O_RDWR); - if (fd < 0) { --- -1.7.6.233.gd79bc - diff --git a/0103-mkfs.btrfs-man-page-document-the-force-option.patch b/0103-mkfs.btrfs-man-page-document-the-force-option.patch deleted file mode 100644 index ee2597a..0000000 --- a/0103-mkfs.btrfs-man-page-document-the-force-option.patch +++ /dev/null @@ -1,35 +0,0 @@ -From fdd55a58d661cede927b741e57abc4f564bb7bd6 Mon Sep 17 00:00:00 2001 -From: Goffredo Baroncelli -Date: Mon, 3 Jan 2011 19:53:05 +0100 -Subject: [PATCH 04/35] mkfs.btrfs man page: document the --force option. - -Add the --force option to not check if a device is already mounted. ---- - man/mkfs.btrfs.8.in | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -diff --git a/man/mkfs.btrfs.8.in b/man/mkfs.btrfs.8.in -index 432db1b..2610e9d 100644 ---- a/man/mkfs.btrfs.8.in -+++ b/man/mkfs.btrfs.8.in -@@ -6,6 +6,7 @@ mkfs.btrfs \- create an btrfs filesystem - [ \fB\-A\fP\fI alloc-start\fP ] - [ \fB\-b\fP\fI byte-count\fP ] - [ \fB \-d\fP\fI data-profile\fP ] -+[ \fB \-f\fP ] - [ \fB \-l\fP\fI leafsize\fP ] - [ \fB \-L\fP\fI label\fP ] - [ \fB \-m\fP\fI metadata profile\fP ] -@@ -35,6 +36,9 @@ mkfs.btrfs uses all the available storage for the filesystem. - Specify how the data must be spanned across the devices specified. Valid - values are raid0, raid1, raid10 or single. - .TP -+\fB\-f\fR, \fB\-\-force \fR -+Don't check if the device is already mounted. -+.TP - \fB\-l\fR, \fB\-\-leafsize \fIsize\fR - Specify the leaf size, the least data item in which btrfs stores data. The - default value is the page size. --- -1.7.6.233.gd79bc - diff --git a/0104-Ignore-the-error-ENXIO-and-ENOMEDIUM-during-a-devs-s.patch b/0104-Ignore-the-error-ENXIO-and-ENOMEDIUM-during-a-devs-s.patch deleted file mode 100644 index 5be45ce..0000000 --- a/0104-Ignore-the-error-ENXIO-and-ENOMEDIUM-during-a-devs-s.patch +++ /dev/null @@ -1,42 +0,0 @@ -From da911929cf232b81a4e2dcffbb26dc3cc6f222af Mon Sep 17 00:00:00 2001 -From: Goffredo Baroncelli -Date: Fri, 21 Oct 2011 19:00:28 +0200 -Subject: [PATCH 05/35] Ignore the error ENXIO and ENOMEDIUM during a devs - scan - -Ignore the error ENXIO (device don't exists) and ENOMEDIUM ( -No medium found -> like a cd tray empty) in the function -btrfs_scan_one_dir. -This avoids spurios errors due to an empty CD or a block device node -without a device (which is frequent in a static /dev). - - -Signed-off-by: Goffredo Baroncelli ---- - utils.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -diff --git a/utils.c b/utils.c -index 178d1b9..1c27e14 100644 ---- a/utils.c -+++ b/utils.c -@@ -1003,8 +1003,14 @@ again: - } - fd = open(fullpath, O_RDONLY); - if (fd < 0) { -- fprintf(stderr, "failed to read %s: %s\n", fullpath, -- strerror(errno)); -+ /* ignore the following errors: -+ ENXIO (device don't exists) -+ ENOMEDIUM (No medium found -> -+ like a cd tray empty) -+ */ -+ if(errno != ENXIO && errno != ENOMEDIUM) -+ fprintf(stderr, "failed to read %s: %s\n", -+ fullpath, strerror(errno)); - continue; - } - ret = btrfs_scan_one_device(fd, fullpath, &tmp_devices, --- -1.7.6.233.gd79bc - diff --git a/0105-Regression-tests.patch b/0105-Regression-tests.patch deleted file mode 100644 index 17a469b..0000000 --- a/0105-Regression-tests.patch +++ /dev/null @@ -1,275 +0,0 @@ -From 8ed24be618165f2f76851e007347408ab9013d30 Mon Sep 17 00:00:00 2001 -From: Hugo Mills -Date: Thu, 27 Oct 2011 22:14:26 +0100 -Subject: [PATCH 06/35] Regression tests - -Add a shell-script based test harness for performing regression tests -on btrfs tools. This is not intended as a test system for kernel -issues, but instead to put the userspace tools through their paces. - -Currently implemented tests are compilation of all tools, and checking -argument counting on "btrfs sub snap". Other tests will follow. - -Signed-off-by: Hugo Mills ---- - Makefile | 8 +++ - test/001u.sh | 23 ++++++++++ - test/002s.sh | 42 +++++++++++++++++ - test/functions.sh | 128 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - test/run-tests | 13 +++++ - 5 files changed, 214 insertions(+), 0 deletions(-) - create mode 100755 test/001u.sh - create mode 100755 test/002s.sh - create mode 100644 test/functions.sh - create mode 100755 test/run-tests - -diff --git a/Makefile b/Makefile -index 7a5e2c1..5f25d66 100644 ---- a/Makefile -+++ b/Makefile -@@ -113,4 +113,12 @@ install: $(progs) install-man - $(INSTALL) $(progs) $(DESTDIR)$(bindir) - if [ -e btrfs-convert ]; then $(INSTALL) btrfs-convert $(DESTDIR)$(bindir); fi - -+test: test-userspace test-root -+ -+test-userspace: -+ ./test/run-tests -+ -+test-root: -+ sudo ./test/run-tests -+ - -include .*.d -diff --git a/test/001u.sh b/test/001u.sh -new file mode 100755 -index 0000000..d2cadff ---- /dev/null -+++ b/test/001u.sh -@@ -0,0 +1,23 @@ -+#!/bin/bash -+ -+. test/functions.sh -+ -+unset BTRFS_TESTS_VOLUMES -+ -+announce compilation -+ -+export CC=gcc-4.6 -+catchclean -+make clean >/dev/null 2>&1 -+ -+catch make || fail Plain make failed -+#catch make dir-test || fail Failed to make dir-test -+catch make btrfs-zero-log || fail Failed to make btrfs-zero-log -+catch make btrfs-select-super || fail Failed to make btrfs-select-super -+catch make btrfstune || fail Failed to make btrfstune -+catch make btrfs-image || fail Failed to make btrfsimage -+catch make quick-test || fail Failed to make quick-test -+catch make convert || fail Failed to make btrfs-convert -+catch make ioctl-test || fail Failed to make ioctl-test -+ -+summarise -diff --git a/test/002s.sh b/test/002s.sh -new file mode 100755 -index 0000000..2c715b7 ---- /dev/null -+++ b/test/002s.sh -@@ -0,0 +1,42 @@ -+#!/bin/bash -+ -+. test/functions.sh -+ -+MNT=./test-mountpoint -+ -+function setup() { -+ setup_mkfs btrfs-tests $MNT -+ -+ ./btrfs subvolume create $MNT/source >/dev/null || return 1 -+ dd if=/dev/urandom of=$MNT/source/file1 \ -+ bs=1M count=1 >/dev/null 2>&1 || return 1 -+} -+ -+function teardown() { -+ teardown_rmfs $MNT -+} -+ -+announce snapshot -+catchclean -+ -+function test_ro() { -+ ./btrfs subvolume snapshot -r $MNT/source $MNT/destination -+ echo foo >$MNT/destination/foo.txt -+} -+ -+# Success modes -+catch ./btrfs subvolume snapshot $MNT/source $MNT/destination \ -+ || fail Failed to create rw snapshot -+catch ./btrfs subvolume snapshot -r $MNT/source $MNT/destination \ -+ || fail Failed to create ro snapshot -+catch test_ro && fail Failed to use read-only flag -+ -+# Failure modes -+catch ./btrfs subvolume snapshot \ -+ && fail Accepted incorrect parameters \(0 params\) -+catch ./btrfs subvolume snapshot $MNT/source \ -+ && fail Accepted incorrect parameters \(1 param\) -+catch ./btrfs subvolume snapshot -r $MNT/source \ -+ && fail Accepted incorrect parameters \(1 param, ro\) -+ -+summarise -diff --git a/test/functions.sh b/test/functions.sh -new file mode 100644 -index 0000000..ca89c67 ---- /dev/null -+++ b/test/functions.sh -@@ -0,0 +1,128 @@ -+BTRFS_TESTS_VOLUMES="test1.img test2.img test3.img test4.img" -+TESTS_RUN=0 -+TESTS_SUCCEEDED=0 -+ -+if [ -f .tests.conf ]; then -+ . .tests.conf -+fi -+ -+function announce() -+{ -+ echo --- $(basename $0) --- Testing "$@" -+} -+ -+function summarise() -+{ -+ echo === ${TESTS_RUN} tests run -+ echo === ${TESTS_SUCCEEDED} successes -+ echo === $((${TESTS_RUN}-${TESTS_SUCCEEDED})) failures -+} -+ -+function catchclean() -+{ -+ export SUITE=$(basename "$0" .sh) -+ rm -f ${SUITE}.out ${SUITE}.err -+ touch ${SUITE}.out ${SUITE}.err -+} -+ -+# Internal function: set up/check the test volumes as requested -+function local_setup() -+{ -+ # Set up for this test -+ VOLUMES= -+ for vol in $BTRFS_TESTS_VOLUMES; do -+ if [ ! -e $vol ]; then -+ dd if=/dev/zero of=$vol count=0 seek=4G bs=1 >/dev/null 2>&1 || return 1 -+ fi -+ if [ -f $vol ]; then -+ vol=$(losetup -f --show $vol) || return 1 -+ VOLUMES="$VOLUMES $vol" -+ elif [ -b $vol ]; then -+ VOLUMES="$VOLUMES $vol" -+ else -+ echo Don\'t know what to do with $vol -+ fi -+ done -+} -+ -+# Internal function: destroy test volumes if we created them -+function local_teardown() -+{ -+ for vol in $VOLUMES; do -+ if [ -b $vol ]; then -+ if losetup $vol >/dev/null 2>&1; then -+ file=$(losetup $vol | sed -e 's/^.* (\(.*\)).*$/\1/') -+ losetup -d $vol -+ rm $file -+ fi -+ fi -+ done -+ return 0 -+} -+ -+trap local_teardown EXIT -+ -+function catch() -+{ -+ TESTS_RUN=$((${TESTS_RUN}+1)) -+ -+ local_setup -+ if ! setup; then -+ teardown -+ local_teardown -+ return 1 -+ fi -+ -+ # Preemptively increase the success count: if we call fail, we'll -+ # decrease it again -+ TESTS_SUCCEEDED=$((${TESTS_SUCCEEDED}+1)) -+ -+ "$@" >>${SUITE}.out 2>>${SUITE}.err -+ rv=$? -+ -+ # Undo any setup we did earlier -+ teardown -+ local_teardown -+ -+ return ${rv} -+} -+ -+function fail() -+{ -+ echo "$@" -+ TESTS_SUCCEEDED=$((${TESTS_SUCCEEDED}-1)) -+ summarise -+ exit 1 -+} -+ -+function setup() -+{ -+ echo -n -+} -+ -+function teardown() -+{ -+ echo -n -+} -+ -+function setup_mkfs() -+{ -+ LABEL=$1 -+ MNT=$2 -+ -+ mkdir -p $MNT -+ ./mkfs.btrfs -L $LABEL $VOLUMES >/dev/null || return 1 -+ mount LABEL=$LABEL $MNT || return 1 -+} -+ -+function teardown_rmfs() -+{ -+ MNT=$1 -+ -+ sleeptime=1 -+ while ! umount $MNT 2>/dev/null; do -+ sleep ${sleeptime} -+ sleeptime=$((${sleeptime}+2)) -+ done -+ rmdir $MNT -+} -diff --git a/test/run-tests b/test/run-tests -new file mode 100755 -index 0000000..981fc22 ---- /dev/null -+++ b/test/run-tests -@@ -0,0 +1,13 @@ -+#!/bin/bash -+ -+testdir=$(dirname $0) -+ -+if [ $UID -eq 0 ]; then -+ type=s -+else -+ type=u -+fi -+ -+for test in ${testdir}/[0-9][0-9][0-9]${type}.sh; do -+ ${test} -+done --- -1.7.6.233.gd79bc - diff --git a/0106-Fix-sub-snap-parameter-handling.patch b/0106-Fix-sub-snap-parameter-handling.patch deleted file mode 100644 index a8fe3ad..0000000 --- a/0106-Fix-sub-snap-parameter-handling.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 33be6f1695e8bd450be2e22fbf88b826488186a1 Mon Sep 17 00:00:00 2001 -From: Hugo Mills -Date: Sun, 30 Oct 2011 20:17:07 +0000 -Subject: [PATCH 07/35] Fix sub snap parameter handling - -btrfs sub snap uses a local copy of optind, which causes the number of -parameters to be miscounted, preventing it from working properly. This -patch, originally from Arne Jansen , fixes it. - -Signed-off-by: Hugo Mills ---- - btrfs_cmds.c | 23 ++++++++++++----------- - 1 files changed, 12 insertions(+), 11 deletions(-) - -diff --git a/btrfs_cmds.c b/btrfs_cmds.c -index b59e9cb..9252ffa 100644 ---- a/btrfs_cmds.c -+++ b/btrfs_cmds.c -@@ -304,7 +304,8 @@ int do_subvol_list(int argc, char **argv) - int ret; - int print_parent = 0; - char *subvol; -- int optind = 1; -+ -+ optind = 1; - - while(1) { - int c = getopt(argc, argv, "p"); -@@ -312,7 +313,6 @@ int do_subvol_list(int argc, char **argv) - switch(c) { - case 'p': - print_parent = 1; -- optind++; - break; - } - } -@@ -347,11 +347,13 @@ int do_subvol_list(int argc, char **argv) - - int do_clone(int argc, char **argv) - { -- char *subvol, *dst; -- int res, fd, fddst, len, e, optind = 0, readonly = 0; -- char *newname; -- char *dstdir; -- struct btrfs_ioctl_vol_args_v2 args; -+ char *subvol, *dst; -+ int res, fd, fddst, len, e, readonly = 0; -+ char *newname; -+ char *dstdir; -+ struct btrfs_ioctl_vol_args_v2 args; -+ -+ optind = 1; - - memset(&args, 0, sizeof(args)); - -@@ -362,7 +364,6 @@ int do_clone(int argc, char **argv) - break; - switch (c) { - case 'r': -- optind++; - readonly = 1; - break; - default: -@@ -372,14 +373,14 @@ int do_clone(int argc, char **argv) - return 1; - } - } -- if (argc - optind != 3) { -+ if (argc - optind != 2) { - fprintf(stderr, "Invalid arguments for subvolume snapshot\n"); - free(argv); - return 1; - } - -- subvol = argv[optind+1]; -- dst = argv[optind+2]; -+ subvol = argv[optind]; -+ dst = argv[optind+1]; - - res = test_issubvolume(subvol); - if(res<0){ --- -1.7.6.233.gd79bc - diff --git a/0107-Add-info-for-the-commands.patch b/0107-Add-info-for-the-commands.patch deleted file mode 100644 index cc310dd..0000000 --- a/0107-Add-info-for-the-commands.patch +++ /dev/null @@ -1,474 +0,0 @@ -From 18254b66cf6ff7c9eff605ac7de9b4947d39a96f Mon Sep 17 00:00:00 2001 -From: Goffredo Baroncelli -Date: Sat, 16 Jul 2011 11:35:39 +0200 -Subject: [PATCH 08/35] Add info for the commands. - -Add info for every btrfs sub-commands in the sources. ---- - btrfs_cmds.c | 237 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - scrub.c | 79 +++++++++++++++++++ - 2 files changed, 316 insertions(+), 0 deletions(-) - -diff --git a/btrfs_cmds.c b/btrfs_cmds.c -index 9252ffa..1bfc669 100644 ---- a/btrfs_cmds.c -+++ b/btrfs_cmds.c -@@ -28,6 +28,7 @@ - #include - #include - #include -+#include - - #undef ULONG_MAX - -@@ -155,6 +156,42 @@ static int parse_compress_type(char *s) - }; - } - -+ -+/**** man: btrfs filesystem defragment -+ * -+ * \Bbtrfs\b \Bfilesystem defragment\b -c[zlib|lzo] [-l \Ilen\i] [-s \Istart\i] [-t \Isize\i] -[vf] <\Ifile\i>|<\Idir\i> [<\Ifile\i>|<\Idir\i>...] -+ * -+ * Defragment a file or a directory. -+ * -+ * Defragment file data and/or directory metadata. To defragment all files in a -+ * directory you have to specify each one on its own or use your shell -+ * wildcards. -+ * -+ * The start position and the number of bytes to deframention can be specified -+ * by \Istart\i and \Ilen\i. Any extent bigger than \Ithresh\i will be -+ * considered already defragged. Use 0 to take the kernel default, and use 1 -+ * to say eveery single extent must be rewritten. You can also turn on -+ * compression in defragment operations. -+ * -+ * \B-v\b be verbose -+ * -+ * \B-c\b compress file contents while defragmenting -+ * -+ * \B-f\b flush filesystem after defragmenting -+ * -+ * \B-s start\b defragment only from byte \Istart\i onward -+ * -+ * \B-l len\b defragment only up to \Ilen\i bytes -+ * -+ * \B-t size\b defragment only files at least \Isize\i bytes big -+ * -+ * NOTE: defragmenting with kernels up to 2.6.37 will unlink COW-ed copies of -+ * data, don't use it if you use snapshots, have de-duplicated your data or -+ * made copies with -+ * -+ * \Bcp --reflink\b. -+ ****/ -+ - int do_defrag(int ac, char **av) - { - int fd; -@@ -267,6 +304,16 @@ int do_defrag(int ac, char **av) - return errors + 20; - } - -+ -+/**** man: btrfs subvolume find-new -+ * -+ * \Bbtrfs\b \Bsubvolume find-new\b\I \i -+ * -+ * List the recently modified files in a filesystem. -+ * -+ * List the recently modified files in a subvolume, after \I\i ID. -+ ****/ -+ - int do_find_newer(int argc, char **argv) - { - int fd; -@@ -298,6 +345,25 @@ int do_find_newer(int argc, char **argv) - return 0; - } - -+ -+/**** man: btrfs subvolume list -+ * -+ * \Bbtrfs\b \Bsubvolume list\b\I [-p] \i -+ * -+ * List the snapshot/subvolume of a filesystem. -+ * -+ * List the subvolumes present in the filesystem \I\i. For every -+ * subvolume the following information is shown by default. -+ * ID top level path -+ * where path is the relative path of the subvolume to the \Itop level\i -+ * subvolume. -+ * The subvolume's ID may be used by the \Bsubvolume set-default\b command, or -+ * at mount time via the \Isubvol=\i option. -+ * If \I-p\i is given, then \Iparent \i is added to the output between ID -+ * and top level. The parent's ID may be used at mount time via the -+ * \Isubvolrootid=\i option. -+ ****/ -+ - int do_subvol_list(int argc, char **argv) - { - int fd; -@@ -345,6 +411,20 @@ int do_subvol_list(int argc, char **argv) - return 0; - } - -+ -+/**** man: btrfs subvolume snapshot -+ * -+ * \Bbtrfs\b \Bsubvolume snapshot\b\I [-r] [/]\i -+ * -+ * Create a writable/readonly snapshot of the subvolume with -+ * the name in the directory. -+ * -+ * Create a writable/readonly snapshot of the subvolume \I\i with the -+ * name \I\i in the \I\i directory. If \I\i is not a -+ * subvolume, \Bbtrfs\b returns an error. If \I-r\i is given, the snapshot -+ * will be readonly. -+ ****/ -+ - int do_clone(int argc, char **argv) - { - char *subvol, *dst; -@@ -463,6 +543,17 @@ int do_clone(int argc, char **argv) - - } - -+ -+/**** man: btrfs subvolume delete -+ * -+ * \Bbtrfs\b \Bsubvolume delete\b\I \i -+ * -+ * Delete the subvolume . -+ * -+ * Delete the subvolume \I\i. If \I\i is not a -+ * subvolume, \Bbtrfs\b returns an error. -+ ****/ -+ - int do_delete_subvolume(int argc, char **argv) - { - int res, fd, len, e; -@@ -525,6 +616,18 @@ int do_delete_subvolume(int argc, char **argv) - - } - -+ -+/**** man: btrfs subvolume create -+ * -+ * \Bbtrfs\b \Bsubvolume create\b\I [/]\i -+ * -+ * Create a subvolume in (or the current directory if -+ * not passed). -+ * -+ * Create a subvolume in \I\i (or in the current directory if -+ * \I\i is omitted). -+ ****/ -+ - int do_create_subvol(int argc, char **argv) - { - int res, fddst, len, e; -@@ -581,6 +684,16 @@ int do_create_subvol(int argc, char **argv) - - } - -+ -+/**** man: btrfs filesystem sync -+ * -+ * \Bbtrfs\b \Bfilesystem sync\b\I \i -+ * -+ * Force a sync on the filesystem . -+ * -+ * Force a sync for the filesystem identified by \I\i. -+ ****/ -+ - int do_fssync(int argc, char **argv) - { - int fd, res, e; -@@ -605,6 +718,21 @@ int do_fssync(int argc, char **argv) - return 0; - } - -+ -+/**** man: btrfs device scan -+ * -+ * \Bbtrfs\b \Bdevice scan\b \I[--all-devices| [...]\i -+ * -+ * Scan all device for or the passed device for a btrfs -+ * filesystem. -+ * -+ * If one or more devices are passed, these are scanned for a btrfs filesystem. -+ * If no devices are passed, \Bbtrfs\b scans all the block devices listed -+ * in the /proc/partitions file. -+ * Finally, if \B--all-devices\b is passed, all the devices under /dev are -+ * scanned. -+ ****/ -+ - int do_scan(int argc, char **argv) - { - int i, fd, e; -@@ -672,6 +800,32 @@ int do_scan(int argc, char **argv) - - } - -+ -+/**** man: btrfs filesystem resize -+ * -+ * \Bbtrfs\b \Bfilesystem resize\b\I [+/\-][gkm]|max \i -+ * -+ * Resize the file system. If 'max' is passed, the filesystem -+ * will occupe all available space on the device. -+ * -+ * Resize a filesystem identified by \I\i. -+ * The \I\i parameter specifies the new size of the filesystem. -+ * If the prefix \I+\i or \I\-\i is present the size is increased or decreased -+ * by the quantity \I\i. -+ * If no units are specified, the unit of the \I\i parameter defaults to -+ * bytes. Optionally, the size parameter may be suffixed by one of the following -+ * the units designators: 'K', 'M', or 'G', kilobytes, megabytes, or gigabytes, -+ * respectively. -+ * -+ * If 'max' is passed, the filesystem will occupy all available space on the -+ * volume(s). -+ * -+ * The \Bresize\b command \Bdoes not\b manipulate the size of underlying -+ * partition. If you wish to enlarge/reduce a filesystem, you must make sure -+ * you can expand the partition before enlarging the filesystem and shrink the -+ * partition after reducing the size of the filesystem. -+ ****/ -+ - int do_resize(int argc, char **argv) - { - -@@ -762,6 +916,20 @@ static void print_one_uuid(struct btrfs_fs_devices *fs_devices) - printf("\n"); - } - -+ -+/**** man: btrfs filesystem show -+ * -+ * \Bbtrfs\b \Bfilesystem show\b [--all-devices||