platform/upstream/btrfs-progs.git
8 years agobtrfs-progs: dump-super: switch to getopt_long
David Sterba [Tue, 15 Mar 2016 15:31:58 +0000 (16:31 +0100)]
btrfs-progs: dump-super: switch to getopt_long

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix resource leak during device scanning
David Sterba [Tue, 15 Mar 2016 09:25:00 +0000 (10:25 +0100)]
btrfs-progs: fix resource leak during device scanning

The dev info is leaked each time we find a known filesystem.

Resolves-coverity-id: 1127098
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: utils: switch more error messages to common helpers
David Sterba [Mon, 14 Mar 2016 13:36:30 +0000 (14:36 +0100)]
btrfs-progs: utils: switch more error messages to common helpers

Functions relatd to device changes/status/open, mount checks.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: improve error messages after failed wiping
David Sterba [Mon, 14 Mar 2016 13:18:32 +0000 (14:18 +0100)]
btrfs-progs: improve error messages after failed wiping

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Introduce device delete by devid
Anand Jain [Mon, 14 Mar 2016 08:31:49 +0000 (16:31 +0800)]
btrfs-progs: Introduce device delete by devid

This patch introduces new option <devid> for the command

  btrfs device delete <device_path|devid>[..]  <mnt>

In a user reported issue on a 3-disk-RAID1, one disk failed with its
SB unreadable. Now with this patch user will have a choice to delete
the device using devid.

The other method we could do, is to match the input device_path
to the available device_paths with in the kernel. But that won't
work in all the cases, like what if user provided mapper path
when the path within the kernel is a non-mapper path.

This patch depends on the below kernel patch for the new feature to work,
however it will fail-back to the old interface for the kernel without the
patch

  Btrfs: Introduce device delete by devid

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: fix more typos and spelling errors
David Sterba [Mon, 14 Mar 2016 13:10:16 +0000 (14:10 +0100)]
btrfs-progs: docs: fix more typos and spelling errors

With help of ispell.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: fix spelling errors
Alexander Fougner [Sun, 13 Mar 2016 13:24:08 +0000 (14:24 +0100)]
btrfs-progs: docs: fix spelling errors

Signed-off-by: Alexander Fougner <fougner89@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Avoid interpreting options after "--" when getting unit mode
Satoru Takeuchi [Mon, 14 Mar 2016 00:02:34 +0000 (09:02 +0900)]
btrfs-progs: Avoid interpreting options after "--" when getting unit mode

* actual result

  ======================================
  # ./btrfs device usage -- -m /btrfs

  /dev/sdf1, ID: 1
     Device size:          95367.41MiB
     Data,single:          2056.00MiB
     Metadata,DUP:         2048.00MiB
     System,DUP:             16.00MiB
     Unallocated:          91247.41MiB
  ======================================

* expected result

  ======================================
  # ./btrfs device usage -- -m /btrfs

  ERROR: can't access '-m': No such file or directory
  ======================================

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Fix a regression that btrfs filesystem label doesn't work
Satoru Takeuchi [Mon, 14 Mar 2016 00:15:42 +0000 (09:15 +0900)]
btrfs-progs: Fix a regression that btrfs filesystem label doesn't work

The number of arguments which is allowed to pass became wrong
from the following commit.

commit 176aeca9a148c5e29de0 ("btrfs-progs: add getopt stubs where needed")

* actual result

  ===========================================================
  # ./btrfs prop get /btrfs label
  label=foo
  # ./btrfs fi label /btrfs
  btrfs filesystem label: too few arguments
  usage: btrfs filesystem label [<device>|<mount_point>] [<newlabel>]

      Get or change the label of a filesystem

      With one argument, get the label of filesystem on <device>.
      If <newlabel> is passed, set the filesystem label to <newlabel>.

  # ./btrfs fi label /btrfs bar
  foo
  # ./btrfs prop get /btrfs label
  label=foo
  ===========================================================

* expected result

  ===========================================================
  # ./btrfs prop get /btrfs label
  label=foo
  # ./btrfs fi label /btrfs
  foo
  # ./btrfs fi label /btrfs bar
  # ./btrfs prop get /btrfs label
  label=bar
  ===========================================================

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: print-tree: show the compression method string
Wang Xiaoguang [Fri, 11 Mar 2016 05:09:02 +0000 (13:09 +0800)]
btrfs-progs: print-tree: show the compression method string

Signed-off-by: Wang Xiaoguang <wangxg.fnst@cn.fujitsu.com>
[ changed the format of unknown value ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Fix device scan to interpret its argument properly
Satoru Takeuchi [Fri, 11 Mar 2016 00:26:13 +0000 (09:26 +0900)]
btrfs-progs: Fix device scan to interpret its argument properly

Fix the following bug.

  ================================
  # btrfs device scan -- /dev/sdb
  ERROR: not a block device: --
  ================================

It should work as follow.

  ================================
  # ./btrfs device scan -- /dev/sdb
  Scanning for Btrfs filesystems in '/dev/sdb'
  ================================

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Dont' stop scanning of devices at first failed device
Yauhen Kharuzhy [Fri, 11 Mar 2016 00:04:35 +0000 (16:04 -0800)]
btrfs-progs: Dont' stop scanning of devices at first failed device

When 'btrfs device scan' command is invoked, it scans all devices,
check them for btrfs superblock and add devices with btrfs to a list.

Next, each device from the list is passed to kernel where it is handled
in the btrfs_scan_one_device() function. This function can, for example,
return -EBUSY when device contains superblock matched to existing and
mounted filesystem (if this device was pulled out from RAID and
connected again after some time).

btrfs tool stops device scan if any device has been failed to add, so
other existing devices with (possibly) valid FS will never be reached.

Fix this by remove stopping at any failure in the btrfs_register_all_devices(),
just return error count. btrfs_scan_one_device() reports any kind of
error already.

Signed-off-by: Yauhen Kharuzhy <yauhen.kharuzhy@zavadatar.com>
[ initialize err to 0 ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: remove btrfs-debug-tree manual page and point to inspect-internal
David Sterba [Thu, 10 Mar 2016 15:51:53 +0000 (16:51 +0100)]
btrfs-progs: remove btrfs-debug-tree manual page and point to inspect-internal

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: dump-tree: let --tree understand name of the tree
David Sterba [Thu, 10 Mar 2016 14:57:46 +0000 (15:57 +0100)]
btrfs-progs: dump-tree: let --tree understand name of the tree

For practical purposes teach -t about the human readable names of the
trees in addition to the numerical id. The name syntax is flexible.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: update dump-tree
David Sterba [Thu, 10 Mar 2016 14:18:01 +0000 (15:18 +0100)]
btrfs-progs: docs: update dump-tree

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: dump-tree: print version information earlier
David Sterba [Thu, 10 Mar 2016 14:02:18 +0000 (15:02 +0100)]
btrfs-progs: dump-tree: print version information earlier

The version information could be useful addition to the dump, print it
before we attempt to open the filesystem.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: dump-tree: print tree keys with -e
David Sterba [Thu, 10 Mar 2016 13:57:07 +0000 (14:57 +0100)]
btrfs-progs: dump-tree: print tree keys with -e

The incomplete tree description is printed with -e, glued to the leaf
information.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Describe device scan -d is a deprecated option in manpage
Satoru Takeuchi [Wed, 9 Mar 2016 23:08:31 +0000 (08:08 +0900)]
btrfs-progs: Describe device scan -d is a deprecated option in manpage

It's already marked as deprecated in cmd_device_scan_usage().

commit 5444864e5605 ("btrfs-progs: remove BTRFS_SCAN_PROC scan method")

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Replace hardcoded PAGE_CACHE_SIZE with sectorsize.
Feifei Xu [Thu, 10 Mar 2016 08:43:20 +0000 (16:43 +0800)]
btrfs-progs: Replace hardcoded PAGE_CACHE_SIZE with sectorsize.

PAGE_CACHE_SIZE is hardcoded to 4K in cmds-restore.c. Correct
value should be sector size. Fix this through replacing
hardcoded 4K to sectorsize.

Signed-off-by: Feifei Xu <xufeifei@linux.vnet.ibm.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check: unify naming of long option values
David Sterba [Wed, 9 Mar 2016 13:57:27 +0000 (14:57 +0100)]
btrfs-progs: check: unify naming of long option values

We use GETOP_VAL_ .

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: update check options
David Sterba [Wed, 9 Mar 2016 13:55:11 +0000 (14:55 +0100)]
btrfs-progs: docs: update check options

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check: drop short option for --chunk-tree
David Sterba [Wed, 9 Mar 2016 13:48:44 +0000 (14:48 +0100)]
btrfs-progs: check: drop short option for --chunk-tree

The need to specify the chunk root is not that common, we will reserve
the short option -c for later use.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Add new option for specify chunk root bytenr
Lu Fengqi [Mon, 7 Mar 2016 04:57:41 +0000 (12:57 +0800)]
btrfs-progs: Add new option for specify chunk root bytenr

Add new btrfsck option, '--chunk-root', to specify chunk root bytenr.
And allow open_ctree_fs_info() function accept chunk_root_bytenr to
override the bytenr in superblock. This will be mainly used when chunk
tree corruption.

Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix broken 'device scan' arguments parsing
Yauhen Kharuzhy [Wed, 9 Mar 2016 01:19:40 +0000 (17:19 -0800)]
btrfs-progs: fix broken 'device scan' arguments parsing

Commit 52179e4fea41e55f31c92cd033a0b53a5107b4f4 'btrfs-progs: unify argc
min/max checking' breaks 'btrfs device scan' command when no argument
was given. Fix this.

Signed-off-by: Yauhen Kharuzhy <yauhen.kharuzhy@zavadatar.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: unify argc min/max checking, a few more
David Sterba [Wed, 9 Mar 2016 13:29:29 +0000 (14:29 +0100)]
btrfs-progs: unify argc min/max checking, a few more

We don't want to modify argc.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: util: Fix a wrong unit of pretty_size
Qu Wenruo [Wed, 9 Mar 2016 02:10:55 +0000 (10:10 +0800)]
btrfs-progs: util: Fix a wrong unit of pretty_size

If parameter for pretty_size is smaller than default base(1024),
pretty_size() will output wrong unit.
For example, pretty_size(1008) will output '0.98B' not '1008B' or
'0.98KiB'.

The cause is, for default base and auto-detect unit, base will be 1024
but num_divs is still 0, last result will still be divided by base,
causing the bug.

Fix it by checking num_divs in default case, and if num_divs is 0,
change base to 1.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: add image for bko#96971 (bad checksum type)
David Sterba [Tue, 8 Mar 2016 14:43:13 +0000 (15:43 +0100)]
btrfs-progs: tests: add image for bko#96971 (bad checksum type)

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: libbtrfs: remove max/min macros from API
Ondrej Kozina [Fri, 4 Mar 2016 13:46:11 +0000 (14:46 +0100)]
btrfs-progs: libbtrfs: remove max/min macros from API

kerncompat.h header file is part of libbtrfs API. min/max macros cause
conflict while building projects dependant on libbtrfs. Moving those
macros to btrfs-progs internal header file fixes the conflict.

Signed-off-by: Ondrej Kozina <okozina@redhat.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: convert: document -O|--features flag
Vytas Dauksa [Wed, 2 Mar 2016 16:00:28 +0000 (16:00 +0000)]
btrfs-progs: convert: document -O|--features flag

Copy-pasted description found at mkfs.btrfs. I did not bother with
feature list as it seemed to be incomplete.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: don't print message for a missing device
David Sterba [Thu, 3 Mar 2016 10:33:04 +0000 (11:33 +0100)]
btrfs-progs: don't print message for a missing device

The message

"warning devid %llu not found already\n",

does not seem to be too useful, it appears during several commands and
sometimes repeatedly.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: restore: update error messages
David Sterba [Wed, 2 Mar 2016 14:47:49 +0000 (15:47 +0100)]
btrfs-progs: restore: update error messages

Switch to common helpers, message wording changed.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: switch more error messages to common helpers
David Sterba [Wed, 2 Mar 2016 14:47:19 +0000 (15:47 +0100)]
btrfs-progs: switch more error messages to common helpers

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: fix misc/005-long-device-name-for-ssd
David Sterba [Tue, 1 Mar 2016 17:44:56 +0000 (18:44 +0100)]
btrfs-progs: tests: fix misc/005-long-device-name-for-ssd

We use a device mapper device on top of a loop device, the change in
rotational status does not always propagate if change it at the loop
device sysfs node.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: inspect: remove unnecessary helpers
David Sterba [Tue, 1 Mar 2016 15:34:26 +0000 (16:34 +0100)]
btrfs-progs: inspect: remove unnecessary helpers

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: unify argc min/max checking
David Sterba [Tue, 1 Mar 2016 15:29:16 +0000 (16:29 +0100)]
btrfs-progs: unify argc min/max checking

We don't want to modify argc.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: unify naming of argc and argv
David Sterba [Tue, 1 Mar 2016 15:28:11 +0000 (16:28 +0100)]
btrfs-progs: unify naming of argc and argv

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: rename commandline helpers
David Sterba [Tue, 1 Mar 2016 15:06:27 +0000 (16:06 +0100)]
btrfs-progs: rename commandline helpers

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: add getopt stubs where needed
David Sterba [Tue, 1 Mar 2016 15:02:08 +0000 (16:02 +0100)]
btrfs-progs: add getopt stubs where needed

Commands that do not take any options do not use getopt, which means the
standard option separator "--" does not work. Update all command
handlers that need it, argv needs to be referenced using the optind that
is correctly pointed after the separator.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: add note about resizing to max after device replace
Alexander Fougner [Sun, 28 Feb 2016 21:11:54 +0000 (22:11 +0100)]
btrfs-progs: docs: add note about resizing to max after device replace

Signed-off-by: Alexander Fougner <fougner89@gmail.com>
[ formatting adjustments ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fi du: add long options for units
David Sterba [Wed, 24 Feb 2016 15:19:16 +0000 (16:19 +0100)]
btrfs-progs: fi du: add long options for units

Drop -h, add just the common long options for now.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fi du: switch to u64
David Sterba [Wed, 24 Feb 2016 15:04:07 +0000 (16:04 +0100)]
btrfs-progs: fi du: switch to u64

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fi du: Calculate space shared by each directory arguments file set
Mark Fasheh [Wed, 20 Jan 2016 21:49:27 +0000 (13:49 -0800)]
btrfs-progs: fi du: Calculate space shared by each directory arguments file set

Here we define each file set as those found by a recursive search of a
single directory argument to btrfs fi du.

This isn't as simple as adding up shared extents - they may be shared with
each other, and may also overlap. This patch uses an interval tree to store
shared extents we find while fiemapping files. After collecting them, a 'set
shared' count is calculated by summing (without overlap) each shared region
discovered. This is then displayed to the user as 'set shared'.

Signed-off-by: Mark Fasheh <mfasheh@suse.de>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: filesystem: add 'du' command
Mark Fasheh [Wed, 20 Jan 2016 21:49:26 +0000 (13:49 -0800)]
btrfs-progs: filesystem: add 'du' command

'btrfs du' differs from regular du in that it will work to resolve which
blocks are shared between files in its list. This gives the user a more
accurate bytecount from which they can make decisions regarding management
of their file space.

We still print a total number of bytes counted (like regular du), but also
print the number of bytes which were found to have been shared amongst the
file set provided. From there it becomes trivial to calculate how much space
is exclusively owned.

Signed-off-by: Mark Fasheh <mfasheh@suse.de>
[ rename files to reflect the filesystem command group, add GPL v2
  file headers ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: build: extend per-binary objects
David Sterba [Wed, 24 Feb 2016 12:57:12 +0000 (13:57 +0100)]
btrfs-progs: build: extend per-binary objects

The standalone utilities could share object files with the main utility,
add a way to specify additional object files in a similar way to the
extra libs. The variable name must match the binary plus _objects
suffix and  s/-/_/ .

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: update docs for inspect-internal dump-super
Alexander Fougner [Wed, 24 Feb 2016 10:52:34 +0000 (11:52 +0100)]
btrfs-progs: update docs for inspect-internal dump-super

Signed-off-by: Alexander Fougner <fougner89@gmail.com>
[ minor formatting updates ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: introduce inspect-internal dump-super
Alexander Fougner [Wed, 24 Feb 2016 10:52:33 +0000 (11:52 +0100)]
btrfs-progs: introduce inspect-internal dump-super

The long-term plan is to merge the features of standalone tools
into the btrfs binary, reducing the number of shipped binaries.

Signed-off-by: Alexander Fougner <fougner89@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: update docs and completion for inspect-internal dump-tree
Alexander Fougner [Mon, 22 Feb 2016 14:49:50 +0000 (15:49 +0100)]
btrfs-progs: update docs and completion for inspect-internal dump-tree

Signed-off-by: Alexander Fougner <fougner89@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: copy functionality of btrfs-debug-tree to inspect-internal subcommand
Alexander Fougner [Mon, 22 Feb 2016 14:49:49 +0000 (15:49 +0100)]
btrfs-progs: copy functionality of btrfs-debug-tree to inspect-internal subcommand

The long-term plan is to merge the features of standalone tools
into the btrfs binary, reducing the number of shipped binaries.

Signed-off-by: Alexander Fougner <fougner89@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agoBtrfs progs v4.4.1
David Sterba [Fri, 26 Feb 2016 17:22:09 +0000 (18:22 +0100)]
Btrfs progs v4.4.1

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Import interval tree implemenation from Linux v4.0-rc7.
Mark Fasheh [Wed, 20 Jan 2016 21:49:25 +0000 (13:49 -0800)]
btrfs-progs: Import interval tree implemenation from Linux v4.0-rc7.

While I had the chance, I compared the rbtre code in btrfs-progs to that of
the latest kernel.  No new bug fixes need importing, however rbtree.h and
rbtree_augmented.h get documentation updates

Signed-off-by: Mark Fasheh <mfasheh@suse.de>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: misc-test: Add regression test for find-root gives empty result
Qu Wenruo [Mon, 22 Feb 2016 06:59:57 +0000 (14:59 +0800)]
btrfs-progs: misc-test: Add regression test for find-root gives empty result

Add regression test for btrfs-find-root gives empty result even the fs
is OK.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
[ enhanced test ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: find-root: Allow btrfs-find-root to search chunk root even chunk root...
Qu Wenruo [Mon, 22 Feb 2016 06:59:56 +0000 (14:59 +0800)]
btrfs-progs: find-root: Allow btrfs-find-root to search chunk root even chunk root is corrupted

Since now open_ctree_fs_info() can even return a valid fs_info with only
system chunk mapping from super block, use this ability to do chunk root
search for heavily damanged fs.

As an fast alternative for time consuming and buggy chunk-recovery.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Add support for tree block operations on fs_info without roots
Qu Wenruo [Mon, 22 Feb 2016 06:59:55 +0000 (14:59 +0800)]
btrfs-progs: Add support for tree block operations on fs_info without roots

Since open_ctree_fs_info() now may return a fs_info even without any
roots, modify functions like read_tree_block() to operate with such
fs_info.

This provides the basis for btrfs-find-root to operate on chunk tree
with corrupted fs.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
[ coding style adjustments, unified declarations ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Allow open_ctree to return fs_info even chunk tree is corrupted
Qu Wenruo [Mon, 22 Feb 2016 06:59:54 +0000 (14:59 +0800)]
btrfs-progs: Allow open_ctree to return fs_info even chunk tree is corrupted

Current open_ctree_fs_info() won't return anything if chunk tree root is
corrupted.
This makes some function, like btrfs-find-root, unable to find any older
chunk tree root, even it is possible to use system_chunk_array in super
block.

And at least two users in mail list has reported such heavily chunk
corruption.
Although we have 'btrfs rescue chunk-recovery' but it's too time
consuming and sometimes not able to cope with a specific filesystem
corruption.

This patch adds a new open ctree flag,
OPEN_CTREE_IGNORE_CHUNK_TREE_ERROR, allowing fs_info to be returned from
open_ctree_fs_info() even there is no valid tree root in it.

Also adds a new close_ctree() variant, close_ctree_fs_info() to handle
possible fs_info without any root.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
[ adjusted error messages ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: volume: Fix a bug causing btrfs-find-root to skip first chunk
Qu Wenruo [Mon, 22 Feb 2016 06:59:53 +0000 (14:59 +0800)]
btrfs-progs: volume: Fix a bug causing btrfs-find-root to skip first chunk

There is a small bug from 2011, where btrfs_next_bg (formally
btrfs_next_metadata) function will always skip the first chunk.

That's OK for that time, as there is always 3 empty temporary chunks.
But now, we may ended up with only one metadata or system chunk, with
empty chunk auto-remove from kernel or new mkfs.btrfs.

So fix it by checking the initial value so btrfs_next_bg() will return
the first chunk if its *logical parameter is 0.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix symlink creation multiple times
Hongxu Jia [Fri, 19 Feb 2016 02:14:34 +0000 (21:14 -0500)]
btrfs-progs: fix symlink creation multiple times

The rule to create symlink in Makefile caused parallel issue:
$ make -j 40 DESTDIR=/image install BUILD_VERBOSE=1
...
  1     [LN]     libbtrfs.so.0
  2     [LN]     libbtrfs.so
  3 ln -s -f libbtrfs.so.0.1 libbtrfs.so.0
  4 ln -s -f libbtrfs.so.0.1 libbtrfs.so.0
  5 ln -s -f libbtrfs.so.0.1 libbtrfs.so
  6 ln -s -f libbtrfs.so.0.1 libbtrfs.so
...

It failed occasionally:
...
|symlinkat: couldn't stat 'git/libbtrfs.so' even though symlink
creation succeeded (No such file or directory).
|ln: failed to create symbolic link 'libbtrfs.so': No such file or directory
...

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: use common variables and helpers
David Sterba [Thu, 11 Feb 2016 18:26:26 +0000 (19:26 +0100)]
btrfs-progs: tests: use common variables and helpers

Use TEST_DEV and the associated helpers to manage the tested image.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: store checksums in /tmp
David Sterba [Thu, 11 Feb 2016 18:21:24 +0000 (19:21 +0100)]
btrfs-progs: tests: store checksums in /tmp

We don't want to store the checksum on filesystem that we're converting.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: do checksum verification with convert-tests
Lakshmipathi.G [Mon, 25 Jan 2016 16:08:33 +0000 (21:38 +0530)]
btrfs-progs: tests: do checksum verification with convert-tests

Signed-off-by: Lakshmipathi.G <Lakshmipathi.G@giis.co.in>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: write down the meaning of BTRFS_ARG_BLKDEV
Satoru Takeuchi [Fri, 5 Feb 2016 08:07:34 +0000 (17:07 +0900)]
btrfs-progs: write down the meaning of BTRFS_ARG_BLKDEV

Although BTRFS_ARG_BLKDEV can be returned from check_arg_type(),
it's not explained the meaning.

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: describe btrfs-send requires read-only subvolume
Satoru Takeuchi [Thu, 4 Feb 2016 05:02:14 +0000 (14:02 +0900)]
btrfs-progs: describe btrfs-send requires read-only subvolume

Both man btrfs-send(8) and usage message don't describe
btrfs-send needs read-only snapshot as its argument.

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Fix self-reference of man btrfs-subvolume
Satoru Takeuchi [Thu, 4 Feb 2016 01:51:23 +0000 (10:51 +0900)]
btrfs-progs: Fix self-reference of man btrfs-subvolume

btrfs-subvolume(8) is mentioned at "SEE ALSO" section of itself.

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: doc: fix size suffix in mkfs.btrfs
Tsutomu Itoh [Thu, 28 Jan 2016 08:00:33 +0000 (17:00 +0900)]
btrfs-progs: doc: fix size suffix in mkfs.btrfs

There is no petabyte in the explanation of the suffix of
the size parameter. So, it's added.

Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: doc: fix typo of some documents
Tsutomu Itoh [Thu, 28 Jan 2016 08:00:24 +0000 (17:00 +0900)]
btrfs-progs: doc: fix typo of some documents

Some typos are corrected.

Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix compat_ro mask for free space tree
David Sterba [Mon, 25 Jan 2016 14:35:30 +0000 (15:35 +0100)]
btrfs-progs: fix compat_ro mask for free space tree

The BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE bit is supposed to be in the
COMPAT_RO_SUPP bitmask.

Reported-by: Holger Hoffstätte <holger.hoffstaette@googlemail.com>
Reported-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Makefile.in: Simplify/correct install-static
Mike Gilbert [Thu, 21 Jan 2016 15:59:32 +0000 (10:59 -0500)]
btrfs-progs: Makefile.in: Simplify/correct install-static

install -D does not create the last component, so this failed if
$(DESTDIR)$(bindir) did not already exist.

There's no need for a loop here since install accepts multiple source
arguments.

Signed-off-by: Mike Gilbert <floppym@gentoo.org>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agoBtrfs progs v4.4
David Sterba [Mon, 18 Jan 2016 12:56:35 +0000 (13:56 +0100)]
Btrfs progs v4.4

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: update balance manual page
David Sterba [Fri, 15 Jan 2016 14:17:46 +0000 (15:17 +0100)]
btrfs-progs: docs: update balance manual page

Make the new balance filters' syntax more explicit. Other rewording and
reformatting.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: debug-tree: tweak tree node checks
David Sterba [Fri, 15 Jan 2016 13:00:41 +0000 (14:00 +0100)]
btrfs-progs: debug-tree: tweak tree node checks

The tree root and chunk root base pointers are verified in open_ctree so
we don't get NULL here. We still check the node pointers to get better
error message.

Resolves-coverity-id: 1348450
Resolves-coverity-id: 1348451
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix static build
Noah Massey [Fri, 15 Jan 2016 12:31:01 +0000 (13:31 +0100)]
btrfs-progs: fix static build

Change in "btrfs-progs: introduce helper for parsing args without
options" added a dependency on help.o that was duplicated for the static
build.

Signed-off-by: Noah Massey <noah.massey@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Use AC_CHECK_TOOL to find AR
Mike Gilbert [Thu, 14 Jan 2016 10:18:03 +0000 (05:18 -0500)]
btrfs-progs: Use AC_CHECK_TOOL to find AR

AC_CHECK_TOOL takes the --host option into account for cross-compiling.

Signed-off-by: Mike Gilbert <floppym@gentoo.org>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agoBtrfs progs v4.4-rc1
David Sterba [Thu, 14 Jan 2016 10:16:27 +0000 (11:16 +0100)]
Btrfs progs v4.4-rc1

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: subvol show: use clean_args_no_options instead of opencoding
David Sterba [Thu, 14 Jan 2016 09:37:02 +0000 (10:37 +0100)]
btrfs-progs: subvol show: use clean_args_no_options instead of opencoding

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: introduce helper for parsing args without options
David Sterba [Thu, 14 Jan 2016 09:30:35 +0000 (10:30 +0100)]
btrfs-progs: introduce helper for parsing args without options

All commands should support the "--" option separator. This is
transparently handled by getopt, but we don't use that everywhere.
Introduce a helper for commands that take no options (just the path).
The object file dependencies need to be adjusted a bit.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: move prefixcmp to utils
David Sterba [Thu, 14 Jan 2016 09:29:13 +0000 (10:29 +0100)]
btrfs-progs: move prefixcmp to utils

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: receive: don't leak open find handle
David Sterba [Thu, 14 Jan 2016 08:40:24 +0000 (09:40 +0100)]
btrfs-progs: receive: don't leak open find handle

Resolves-coverity-id: 1348121
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: also check filesystem type in test_issubvolume
David Sterba [Wed, 13 Jan 2016 17:44:59 +0000 (18:44 +0100)]
btrfs-progs: also check filesystem type in test_issubvolume

A subvolume is a directory with inode number 256 on a btrfs filesytem.
Add the missing check to test_issubvolume for completeness, otherwise we
always do that in btrfs_open_dir.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: more verbose errors from test_issubvolume
David Sterba [Wed, 13 Jan 2016 17:14:32 +0000 (18:14 +0100)]
btrfs-progs: more verbose errors from test_issubvolume

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: let test_issubvolume return the exact error
David Sterba [Wed, 13 Jan 2016 16:45:39 +0000 (17:45 +0100)]
btrfs-progs: let test_issubvolume return the exact error

Return any error from stat, minor cleanups.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: use symbolic name for subvolume inode number in test_issubvolume
David Sterba [Wed, 13 Jan 2016 17:08:34 +0000 (18:08 +0100)]
btrfs-progs: use symbolic name for subvolume inode number in test_issubvolume

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: handle errors from test_isdir
David Sterba [Wed, 13 Jan 2016 17:04:22 +0000 (18:04 +0100)]
btrfs-progs: handle errors from test_isdir

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: let test_isdir return the exact error
David Sterba [Wed, 13 Jan 2016 16:45:39 +0000 (17:45 +0100)]
btrfs-progs: let test_isdir return the exact error

Return any error from stat, normalize the return value in case the path
is a directory.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: debug-tree: teach -t option about the chunk and root trees
David Sterba [Wed, 13 Jan 2016 15:05:56 +0000 (16:05 +0100)]
btrfs-progs: debug-tree: teach -t option about the chunk and root trees

A user on IRC wanted to dump the chunk tree using the -t option. As the
-t option enumerates only trees pointed by the tree_root, the chunk tree
is skipped. Similar for th tree of tree roots.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: subvol show: handle options by getopt
David Sterba [Wed, 13 Jan 2016 14:38:28 +0000 (15:38 +0100)]
btrfs-progs: subvol show: handle options by getopt

The subvolume show command does not take any optios but at least it
should honor "--", as reported.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=110181
Reported-by: <moviuro+kernel@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fi usage: support mixed blockgroups
David Sterba [Wed, 13 Jan 2016 11:59:42 +0000 (12:59 +0100)]
btrfs-progs: fi usage: support mixed blockgroups

Properly account the duplicated block groups and global reserve.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=110111
Reported-by: Chris Murphy <bugzilla@colorremedies.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: enhance btrfs-filesystem manual page
David Sterba [Tue, 12 Jan 2016 17:42:49 +0000 (18:42 +0100)]
btrfs-progs: docs: enhance btrfs-filesystem manual page

Wording, formatting, explanations, examples.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: add missing prerequisites
David Sterba [Tue, 12 Jan 2016 14:16:11 +0000 (15:16 +0100)]
btrfs-progs: tests: add missing prerequisites

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-porgs: fi usage: rename variable to avoid shadowing
David Sterba [Tue, 12 Jan 2016 13:34:41 +0000 (14:34 +0100)]
btrfs-porgs: fi usage: rename variable to avoid shadowing

Reported by gcc -Wshadow .

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-porgs: check: rename variable to avoid shadowing
David Sterba [Tue, 12 Jan 2016 13:34:41 +0000 (14:34 +0100)]
btrfs-porgs: check: rename variable to avoid shadowing

Reported by gcc -Wshadow .

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-porgs: qgroup: rename variable to avoid shadowing
David Sterba [Tue, 12 Jan 2016 13:34:41 +0000 (14:34 +0100)]
btrfs-porgs: qgroup: rename variable to avoid shadowing

Reported by gcc -Wshadow .

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: add function attributes for the printf-like
David Sterba [Tue, 12 Jan 2016 13:25:23 +0000 (14:25 +0100)]
btrfs-progs: add function attributes for the printf-like

Reported by gcc -Wsuggest-attribute=format .

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: build: fix builds with extra warnings, W=1
David Sterba [Tue, 12 Jan 2016 13:18:24 +0000 (14:18 +0100)]
btrfs-progs: build: fix builds with extra warnings, W=1

Wrong variable name used in the main makefile.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check for negative return value from ioctl
David Sterba [Tue, 12 Jan 2016 12:35:50 +0000 (13:35 +0100)]
btrfs-progs: check for negative return value from ioctl

Handle only negative values returned by ioctl syscalls, with exception
of the device remove. It returns positive values that are handled later.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: remove unnecessary errno temp variables
David Sterba [Tue, 12 Jan 2016 10:20:18 +0000 (11:20 +0100)]
btrfs-progs: remove unnecessary errno temp variables

We can read errno directly if it's not clobbered by any intermediate
calls.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: free-space-tree: minor message adjustments
David Sterba [Mon, 11 Jan 2016 15:44:44 +0000 (16:44 +0100)]
btrfs-progs: free-space-tree: minor message adjustments

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfsprogs: corrupt-blocks: include limits.h to define PATH_MAX
Khem Raj [Sun, 10 Jan 2016 03:04:23 +0000 (19:04 -0800)]
btrfsprogs: corrupt-blocks: include limits.h to define PATH_MAX

limits.h is needed for PATH_MAX definition

Fixes
| btrfs-corrupt-block.c: In function 'corrupt_dir_item':
| btrfs-corrupt-block.c:478:12: error: 'PATH_MAX' undeclared (first use in this function)
|   char name[PATH_MAX];

Signed-off-by: Khem Raj <raj.khem@gmail.com>
[ minor changelog edits ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: document new mount option fragment
David Sterba [Mon, 11 Jan 2016 15:28:14 +0000 (16:28 +0100)]
btrfs-progs: docs: document new mount option fragment

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: sort mount options alphabetically
David Sterba [Mon, 11 Jan 2016 15:12:28 +0000 (16:12 +0100)]
btrfs-progs: docs: sort mount options alphabetically

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check the free space tree in btrfsck
Omar Sandoval [Wed, 30 Sep 2015 03:51:45 +0000 (20:51 -0700)]
btrfs-progs: check the free space tree in btrfsck

This reuses the existing code for checking the free space cache, we just
need to load the free space tree. While we do that, we check a couple of
invariants on the free space tree itself. This requires pulling in some
code from the kernel to exclude the super stripes.

Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: add basic awareness of the free space tree
Omar Sandoval [Wed, 30 Sep 2015 03:51:44 +0000 (20:51 -0700)]
btrfs-progs: add basic awareness of the free space tree

To start, let's tell btrfs-progs to read the free space root and how to
print the on-disk format of the free space tree. However, we're not
adding the FREE_SPACE_TREE read-only compat bit to the set of supported
bits because progs doesn't know how to keep the free space tree
consistent.

Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>