platform/upstream/btrfs-progs.git
8 years agobtrfs-progs: build: add support for debugging builds
David Sterba [Thu, 12 May 2016 12:13:30 +0000 (14:13 +0200)]
btrfs-progs: build: add support for debugging builds

Add an easy way to build a debugging version, without optimizations and
with debugging info by default. Any overrides can be done via
DEBUG_CFLAGS that are added on top of the defaults. Can be combined with
V, C or W options.

Usage:
  $ make D=1

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: typo review of strings and comments
Nicholas D Steeves [Wed, 11 May 2016 23:50:36 +0000 (19:50 -0400)]
btrfs-progs: typo review of strings and comments

Signed-off-by: Nicholas D Steeves <nsteeves@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: udev: add rules for dm devices
Jeff Mahoney [Mon, 9 May 2016 15:44:26 +0000 (11:44 -0400)]
btrfs-progs: udev: add rules for dm devices

Systemd's btrfs rule runs btrfs dev ready on each device
as it's discovered.  The btrfs command is executed as a builtin
command via an IMPORT{builtin} rule, which means it gets
executed at rule evaluation time, not rule execution time.  That
means that the device mapper links haven't been setup yet and the only
nodes that can be depended upon are /dev/dm-#.  That we see
/dev/mapper/name names in /proc/mounts is only because we replace the
device name we have cached with the one passed in via mount.  If
we have a multi-device file system and the primary device is removed,
the remaining devices will show /dev/dm-#.  In addition, if the
udev rule is executed again by someone generating a change event (e.g.
partprobe), the names are also replaced by the /dev/dm-# names.

This patch adds a new rule that adds a run rule that calls btrfs dev
ready again using the device mapper links once they're created.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: prop: remove conditions which never be satisfied
Satoru Takeuchi [Mon, 9 May 2016 07:52:11 +0000 (16:52 +0900)]
btrfs-progs: prop: remove conditions which never be satisfied

parse_args() always set at least one parameter, 'object', for
{get,list} subcommands. In addition, it always set all three
parameters, 'object', 'name', and 'value' for set subcommand.
So the following conditions can be removed.

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: prop: simplify parse_args()
Satoru Takeuchi [Mon, 9 May 2016 07:49:19 +0000 (16:49 +0900)]
btrfs-progs: prop: simplify parse_args()

Since <object> parameter is mandatory for all subcommands,
'object' is always set by parse_args()'s callers.
In addition, on setting '*name' and '*value', if 'optind < argc'
is satisfied here, they are always set by parse_args()'s callers.

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agoBtrfs progs v4.5.3
David Sterba [Wed, 11 May 2016 14:40:33 +0000 (16:40 +0200)]
Btrfs progs v4.5.3

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: update CHANGES for 4.5.3
David Sterba [Mon, 2 May 2016 13:32:02 +0000 (15:32 +0200)]
btrfs-progs: update CHANGES for 4.5.3

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: add fuzzed testing images, superblock and chunks
Liu Bo [Mon, 2 May 2016 18:18:55 +0000 (11:18 -0700)]
btrfs-progs: add fuzzed testing images, superblock and chunks

This adds 4 fuzz testing images, btrfsck either doesn't detect errors
in them or crashes immediately.

Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
Reported-by: Quentin Casasnovas <quentin.casasnovas@oracle.com>
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: replace printf with message helpers in check_super
Liu Bo [Wed, 11 May 2016 13:40:38 +0000 (15:40 +0200)]
btrfs-progs: replace printf with message helpers in check_super

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: add three more validation checks for superblock
Liu Bo [Wed, 11 May 2016 13:40:07 +0000 (15:40 +0200)]
btrfs-progs: add three more validation checks for superblock

This adds validation checks for super_total_bytes, super_bytes_used and
super_stripesize.

Since these checks are made after superblock finishes checksum

 checking, this also adds a notice of "superblock checksum matches but..".

Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
Reported-by: Quentin Casasnovas <quentin.casasnovas@oracle.com>
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
[ adjusted message wording ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: add validation checks for chunk loading
Liu Bo [Mon, 2 May 2016 18:18:53 +0000 (11:18 -0700)]
btrfs-progs: add validation checks for chunk loading

To survive fuzz filesystem images, we need various validation checks to
make btrfsck detect any invalid value inside chunks including those in
 sys_array.

Note that these checks may not be sufficient to cover all corner cases,
we may need to add more later.

This also refractor previous various checks into a helper function so
that we can add more checks into it in the future.

Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
Reported-by: Quentin Casasnovas <quentin.casasnovas@oracle.com>
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: prop: convert error messages to use error()
Satoru Takeuchi [Mon, 9 May 2016 07:20:01 +0000 (16:20 +0900)]
btrfs-progs: prop: convert error messages to use error()

props.c uses 'fprintf(stderr, "ERROR: ...")' as its error messages,
however we have generic error() function.

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: clarify why mkfs selects single for SSDs
David Sterba [Fri, 6 May 2016 15:56:51 +0000 (17:56 +0200)]
btrfs-progs: docs: clarify why mkfs selects single for SSDs

The section raised some user questions on IRC.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: update btrfs-check
David Sterba [Fri, 6 May 2016 12:45:57 +0000 (14:45 +0200)]
btrfs-progs: docs: update btrfs-check

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: update btrfs-select-super
David Sterba [Fri, 6 May 2016 11:28:17 +0000 (13:28 +0200)]
btrfs-progs: docs: update btrfs-select-super

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: update btrfs-receive
David Sterba [Fri, 6 May 2016 11:12:42 +0000 (13:12 +0200)]
btrfs-progs: docs: update btrfs-receive

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: update btrfs-send
David Sterba [Fri, 6 May 2016 10:59:47 +0000 (12:59 +0200)]
btrfs-progs: docs: update btrfs-send

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: update btrfs-scrub
David Sterba [Fri, 6 May 2016 10:42:21 +0000 (12:42 +0200)]
btrfs-progs: docs: update btrfs-scrub

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: update btrfs-man5
David Sterba [Fri, 6 May 2016 10:27:31 +0000 (12:27 +0200)]
btrfs-progs: docs: update btrfs-man5

Wording, added new options.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Adjust timing of safety delay countdown
Noah Massey [Wed, 4 May 2016 19:43:26 +0000 (15:43 -0400)]
btrfs-progs: Adjust timing of safety delay countdown

When printing the countdown in the safety delay, the number should
correspond to the number of seconds remaining to wait at the time the
delay is printed.

In other words, there should be a one second sleep after printing '1'.

Signed-off-by: Noah Massey <noah.massey@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: subvolume sync: fix handling of -s option
Marek Rusinowski [Wed, 4 May 2016 13:36:35 +0000 (15:36 +0200)]
btrfs-progs: subvolume sync: fix handling of -s option

Setting check interval for subvolume sync resulted
in picking wrong element from argv for it's value:

  $ btrfs subvolume sync -s 10 ./dir
  ERROR: invalid sleep interval ./dir
  $ btrfs subvolume sync ./dir -s 10
  Segmentation fault

Signed-off-by: Marek Rusinowski <marekrusinowski@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix incorrect flag check while recovering super
Liu Bo [Mon, 2 May 2016 18:13:20 +0000 (11:13 -0700)]
btrfs-progs: fix incorrect flag check while recovering super

The flag OPEN_CTREE_RECOVER_SUPER is set when it's going to recover
any bad superblock copy, the current code doesn't match that.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: use ioctl search headers everywhere
David Sterba [Tue, 3 May 2016 14:20:52 +0000 (16:20 +0200)]
btrfs-progs: use ioctl search headers everywhere

Generated by following semantic patch and manually tweaked.

<SmPL>
@@
struct btrfs_ioctl_search_header *SH;
@@
(
- SH->objectid
+ btrfs_search_header_objectid(SH)
|
- SH->offset
+ btrfs_search_header_offset(SH)
|
- SH->transid
+ btrfs_search_header_transid(SH)
|
- SH->len
+ btrfs_search_header_len(SH)
|
- SH->type
+ btrfs_search_header_type(SH)
)
</SmPL>

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=112131
Reported-and-tested-by: Anatoly Pugachev <matorola@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: add getters for ioctl search_header
David Sterba [Tue, 3 May 2016 14:00:05 +0000 (16:00 +0200)]
btrfs-progs: add getters for ioctl search_header

The search header is usually accessed in an unaligned way, we could
trigger errors (SIGBUS) on architectures that do not support that.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: kerncompat: introduce get_unaligned helpers
David Sterba [Tue, 3 May 2016 13:59:45 +0000 (15:59 +0200)]
btrfs-progs: kerncompat: introduce get_unaligned helpers

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fi du: switch to negative error codes
David Sterba [Mon, 2 May 2016 16:29:26 +0000 (18:29 +0200)]
btrfs-progs: fi du: switch to negative error codes

We're using the kernel-style negative error numbers.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check: fix found bytes accounting error
Qu Wenruo [Tue, 26 Apr 2016 02:49:49 +0000 (10:49 +0800)]
btrfs-progs: check: fix found bytes accounting error

In the new add_extent_rec_nolookup() function, we add bytes_used to
update found bytes accounting.

However there is a typo that we used tmpl->nr, which should be rec->nr.
This will make us to add 1 for data backref, instead the correct size.

Reported-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check: check stripe crossing against nodesize
David Sterba [Mon, 4 Apr 2016 11:15:46 +0000 (13:15 +0200)]
btrfs-progs: check: check stripe crossing against nodesize

The extent record's max_size might be 0 and the stripe crossing check
will report a false positive, should use the filesyste nodesize. There's
a global fs_info available.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check: refactor add_extent_rec, reduce argument count
David Sterba [Fri, 1 Apr 2016 15:46:10 +0000 (17:46 +0200)]
btrfs-progs: check: refactor add_extent_rec, reduce argument count

Similar to add_extent_rec_nolookup, pass the arguments via a temporary
structure. In case the extent is found, some of the values are not
assigned directly so the semantics is preserved.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check: reduce size of extent_record
David Sterba [Fri, 1 Apr 2016 15:08:51 +0000 (17:08 +0200)]
btrfs-progs: check: reduce size of extent_record

There are just 3 values of flag_block_full_backref, we can utilize a
bitfield and save 8 bytes (192 now).

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check: simplify assignments in add_extent_rec_nolookup
David Sterba [Fri, 1 Apr 2016 14:07:56 +0000 (16:07 +0200)]
btrfs-progs: check: simplify assignments in add_extent_rec_nolookup

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check: pass a template to add_extent_rec_nolookup
David Sterba [Fri, 1 Apr 2016 13:47:01 +0000 (15:47 +0200)]
btrfs-progs: check: pass a template to add_extent_rec_nolookup

Reduce number of parameters that just fill the extent_record from a
temporary template that's supposed to be zeroed and filled by the
callers.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agoBtrfs progs v4.5.2
David Sterba [Mon, 2 May 2016 13:34:39 +0000 (15:34 +0200)]
Btrfs progs v4.5.2

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: update CHANGES for 4.5.2
David Sterba [Mon, 2 May 2016 13:32:02 +0000 (15:32 +0200)]
btrfs-progs: update CHANGES for 4.5.2

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: handle memory allocation error in cmd_device_stats
David Sterba [Mon, 2 May 2016 13:03:24 +0000 (15:03 +0200)]
btrfs-progs: handle memory allocation error in cmd_device_stats

Resolves-coverity-id: 1359012
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: add 002-balance-full-no-filters
David Sterba [Mon, 2 May 2016 12:59:48 +0000 (14:59 +0200)]
btrfs-progs: tests: add 002-balance-full-no-filters

Coverage of new balance option --full-balance.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Restrict e2fsprogs version for convert
Qu Wenruo [Thu, 14 Apr 2016 06:24:34 +0000 (14:24 +0800)]
btrfs-progs: Restrict e2fsprogs version for convert

We want to support version 1.41 due to longterm and enterprise distros,
make the check explicit.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: add safety delay before starting full balance
David Sterba [Mon, 2 May 2016 08:26:29 +0000 (10:26 +0200)]
btrfs-progs: add safety delay before starting full balance

A short delay with a warning before starting a full balance should
improve usability. We have been getting reports from people who run full
balance after following some random advice and then get surprised by the
performance impact.

The countdown is done even when run from scripts, but as the whole
balance takes significanly more time, this shouldn't be an issue.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: add CHANGES 3.12 - 4.5.1
David Sterba [Mon, 25 Apr 2016 13:10:57 +0000 (15:10 +0200)]
btrfs-progs: add CHANGES 3.12 - 4.5.1

The changes are posted to the mailinglist and to the wiki, but for
packaging reasons it's good to have them locally in the git as well.

The initial conversion from wiki was done by Nick, then adjusted by me.

Reported-by: Nicholas D Steeves <nsteeves@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Read qgroup status for qgroup verify
Qu Wenruo [Mon, 18 Apr 2016 02:27:09 +0000 (10:27 +0800)]
btrfs-progs: Read qgroup status for qgroup verify

Read qgroup status for its flags like QGROUP_STATUS_FLAG_RESCAN and
QGROUP_STATUS_FLAG_INCONSISTENT.

This will help to avoid false alert for case like qgroup rescan is still
running when un-mounted.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Fix an extent buffer leak in qgroups check
Qu Wenruo [Mon, 18 Apr 2016 02:27:08 +0000 (10:27 +0800)]
btrfs-progs: Fix an extent buffer leak in qgroups check

Qgroup verify codes will read fs root to check if the subvolume exists.
But it forgot to free the extent buffer read out, only freeing the
memory.

Fix it by also freeing the extent buffers.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Fix return value bug of qgroups check
Qu Wenruo [Mon, 18 Apr 2016 02:27:07 +0000 (10:27 +0800)]
btrfs-progs: Fix return value bug of qgroups check

Before this patch, although btrfsck will check qgroups if quota is
enabled, it always return 0 even qgroup numbers are corrupted.

Fix it by allowing return value from report_qgroups function (formally
defined as print_qgroup_difference).

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: prop: remove an unnecessary condition on parse_args
Satoru Takeuchi [Wed, 20 Apr 2016 06:32:48 +0000 (15:32 +0900)]
btrfs-progs: prop: remove an unnecessary condition on parse_args

>From commit c742debab11f ('btrfs-progs: fix a regression that
"property" with -t option doesn't work'), the number of arguments
is checked strictly. So the following condition never be
satisfied.

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: "device ready" accepts just one device
Satoru Takeuchi [Mon, 14 Mar 2016 00:27:22 +0000 (09:27 +0900)]
btrfs-progs: "device ready" accepts just one device

* actual result

  =======================================
  # ./btrfs device ready /dev/sdb foo
  #
  =======================================

* expecting result

  =======================================
  # ./btrfs device ready /dev/sdb foo
  btrfs device ready: too many arguments
  usage: btrfs device ready <device>

      Check device to see if it has all of its devices in cache for mounting

  #
  =======================================

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Check if the FSID was seen by comparing full UUID
Yauhen Kharuzhy [Thu, 14 Apr 2016 22:21:11 +0000 (15:21 -0700)]
btrfs-progs: Check if the FSID was seen by comparing full UUID

is_seen_fsid() uses simple hash to check if FS was seen before at
walking on FS list in 'filesystem show' command: hash key is first byte
of the UUID. This function doesn't check full UUID then, so, if there
are two FS with same first byte in UUIDs exist, only one will be shown:

root@test:~# btrfs fi show
Label: 'System'  uuid: 688cb918-7bac-4c8e-9b11-8d047eb14cf4
        Total devices 2 FS bytes used 1.76GiB
        devid    1 size 3.46TiB used 4.01GiB path /dev/sda2
        devid    2 size 6.91TiB used 4.01GiB path /dev/sdb2

Global spare

root@test:~# grep btrfs /proc/mounts
/dev/sda2 / btrfs rw,relatime,space_cache,subvolid=256,subvol=/root 0 0
/dev/sdc /media/688cb918-7bac-4c8e-9b11-8d047eb14cf4 btrfs rw,relatime,space_cache,subvolid=5,subvol=/ 0 0

root@test:~# btrfs fi show --all-devices
Label: 'System'  uuid: 688cb918-7bac-4c8e-9b11-8d047eb14cf4
        Total devices 2 FS bytes used 1.76GiB
        devid    1 size 3.46TiB used 4.03GiB path /dev/sda2
        devid    2 size 6.91TiB used 4.01GiB path /dev/sdb2

Label: 'test'  uuid: 683b1a80-ca7f-4c4d-b87b-7155401a4d18
        Total devices 7 FS bytes used 2.06MiB
        devid    1 size 7.28TiB used 1.57GiB path /dev/sdc
        devid    2 size 7.28TiB used 1.57GiB path /dev/sdd
        devid    3 size 7.28TiB used 1.57GiB path /dev/sde
        devid    4 size 7.28TiB used 1.57GiB path /dev/sdf
        devid    5 size 7.28TiB used 1.57GiB path /dev/sdg
        devid    6 size 7.28TiB used 1.57GiB path /dev/sdh
        devid    7 size 7.28TiB used 1.57GiB path /dev/sdi

To resolve this collision, search for full FSID in the list of seen
filesystems.

Signed-off-by: Yauhen Kharuzhy <yauhen.kharuzhy@zavadatar.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: convert: fix typo in original image subvolume name
David Sterba [Mon, 11 Apr 2016 15:41:01 +0000 (17:41 +0200)]
btrfs-progs: convert: fix typo in original image subvolume name

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: device stats: Print devid instead of null
Patrik Lundquist [Tue, 5 Apr 2016 15:27:43 +0000 (17:27 +0200)]
btrfs-progs: device stats: Print devid instead of null

Print e.g. "[devid:4].write_io_errs   6" instead of
"[(null)].write_io_errs   6" when device is missing.

Signed-off-by: Patrik Lundquist <patrik.lundquist@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix re-declared get_device_info()
Anand Jain [Tue, 5 Apr 2016 07:36:01 +0000 (15:36 +0800)]
btrfs-progs: fix re-declared get_device_info()

The other get_device_info() is in the same file, 4 lines above.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check: use add_extent_rec_nolookup after lookups
David Sterba [Fri, 1 Apr 2016 12:45:33 +0000 (14:45 +0200)]
btrfs-progs: check: use add_extent_rec_nolookup after lookups

The lookup was duplicated, use the helper that does not do it.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check: refactor add_extent_rec, separate lookup
David Sterba [Fri, 1 Apr 2016 12:42:42 +0000 (14:42 +0200)]
btrfs-progs: check: refactor add_extent_rec, separate lookup

Separate the part of add_extent_rec that comes after the lookup does not
succeed, there are callers interested in just this.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check: cleanup, move structure definitions to the beginning
David Sterba [Fri, 1 Apr 2016 12:19:09 +0000 (14:19 +0200)]
btrfs-progs: check: cleanup, move structure definitions to the beginning

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: deprecate and stop using btrfs_level_size
David Sterba [Fri, 1 Apr 2016 11:17:44 +0000 (13:17 +0200)]
btrfs-progs: deprecate and stop using btrfs_level_size

Size of a b-tree node is always nodesize, regardless of the level.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: replace leafsize with nodesize
David Sterba [Fri, 1 Apr 2016 10:57:11 +0000 (12:57 +0200)]
btrfs-progs: replace leafsize with nodesize

Nodesize is used in kernel, the values are always equal. We have to keep
leafsize in headers, similarly the tree setting functions still take and
set leafsize, but it's effectively a no-op.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fi sync: make it silent by default
David Sterba [Thu, 31 Mar 2016 16:58:39 +0000 (18:58 +0200)]
btrfs-progs: fi sync: make it silent by default

Report only errors returned by the ioctl.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fsck: Fix a false metadata extent warning
Qu Wenruo [Thu, 31 Mar 2016 02:19:34 +0000 (10:19 +0800)]
btrfs-progs: fsck: Fix a false metadata extent warning

At least 2 user from mail list reported btrfsck reported false alert of
"bad metadata [XXXX,YYYY) crossing stripe boundary".

While the reported number are all inside the same 64K boundary.
After some check, all the false alert have the same bytenr feature,
which can be divided by stripe size (64K).

The result seems to be initial 'max_size' can be 0, causing 'start' +
'max_size' - 1, to cross the stripe boundary.

Fix it by always update extent_record->cross_stripe when the
extent_record is updated, to avoid temporary false alert to be reported.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: update docs and completion for tree-stats
Alexander Fougner [Fri, 11 Mar 2016 11:49:46 +0000 (12:49 +0100)]
btrfs-progs: update docs and completion for tree-stats

Signed-off-by: Alexander Fougner <fougner89@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: copy btrfs-calc-size to inspect-internal tree-stats
Alexander Fougner [Fri, 11 Mar 2016 11:49:45 +0000 (12:49 +0100)]
btrfs-progs: copy btrfs-calc-size to inspect-internal tree-stats

Signed-off-by: Alexander Fougner <fougner89@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: add support for command line coverage tests
David Sterba [Sun, 20 Mar 2016 14:34:10 +0000 (15:34 +0100)]
btrfs-progs: tests: add support for command line coverage tests

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agoBtrfs progs v4.5.1
David Sterba [Thu, 31 Mar 2016 15:10:28 +0000 (17:10 +0200)]
Btrfs progs v4.5.1

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix unknown type name 'u64' in gccgo
Julio Montes [Tue, 29 Mar 2016 21:34:48 +0000 (15:34 -0600)]
btrfs-progs: fix unknown type name 'u64' in gccgo

Signed-off-by: Julio Montes <imc.coder@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: update mkfs page for dup on multidev fs
David Sterba [Wed, 30 Mar 2016 14:56:32 +0000 (16:56 +0200)]
btrfs-progs: docs: update mkfs page for dup on multidev fs

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: update 001-basic-profiles, dup on multidev fs
David Sterba [Wed, 30 Mar 2016 14:18:49 +0000 (16:18 +0200)]
btrfs-progs: tests: update 001-basic-profiles, dup on multidev fs

Testcase for "btrfs-progs: mkfs: fix an error when using DUP on multidev
fs"

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: mkfs: fix an error when using DUP on multidev fs
Satoru Takeuchi [Fri, 25 Mar 2016 01:55:34 +0000 (10:55 +0900)]
btrfs-progs: mkfs: fix an error when using DUP on multidev fs

To accept DUP on multidev fs, in addition to the following
commit, we need to mark DUP as an allowed data/metadata
profile.

commit 42f1279bf8e9 ("btrfs-progs: mkfs: allow DUP on multidev fs, only warn")

* actual result

  =============================================
  # ./mkfs.btrfs -f -m DUP -d DUP /dev/sdb1 /dev/sdb2
  btrfs-progs v4.5-24-ga35b7e6
  See http://btrfs.wiki.kernel.org for more information.

  WARNING: DUP is not recommended on filesystem with multiple devices
  ERROR: unable to create FS with metadata profile DUP (have 2 devices but 1 devices are required)
  =============================================

* expected result

  =============================================
  # ./mkfs.btrfs -f -m dup -d dup /dev/sdb1 /dev/sdb2
  WARNING: DUP is not recommended on filesystem with multiple devices
  btrfs-progs v4.5-25-g1a10a3c
  See http://btrfs.wiki.kernel.org for more information.

  Label:              (null)
  UUID:               010d72ff-c87c-4516-8916-5e635719d110
  Node size:          16384
  Sector size:        4096
  Filesystem size:    28.87GiB
  Block group profiles:
    Data:             DUP               1.01GiB
    Metadata:         DUP               1.01GiB
    System:           DUP              12.00MiB
  SSD detected:       no
  Incompat features:  extref, skinny-metadata
  Number of devices:  2
  Devices:
     ID        SIZE  PATH
      1   953.00MiB  /dev/sdb1
      2    27.94GiB  /dev/sdb2

  ==================================================

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix fd leak in get_subvol_info
David Sterba [Thu, 24 Mar 2016 18:31:33 +0000 (19:31 +0100)]
btrfs-progs: fix fd leak in get_subvol_info

A typo, introduced in "btrfs-progs: create get_subvol_info()".

Resolves-coverity-id: 1357106
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: use safe copy for label buffer everywhere
David Sterba [Thu, 24 Mar 2016 18:19:31 +0000 (19:19 +0100)]
btrfs-progs: use safe copy for label buffer everywhere

There's a mix of opencoded strncpy + null termination, strncpy, memcppy
without termination etc. Unify them and use the helper.

Resolves-coverity-id: 1357105
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: rename __strncpy__null to __strncpy_null
David Sterba [Thu, 24 Mar 2016 18:17:53 +0000 (19:17 +0100)]
btrfs-progs: rename __strncpy__null  to __strncpy_null

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: mkfs: allow DUP on multidev fs, only warn
David Sterba [Wed, 16 Mar 2016 17:08:33 +0000 (18:08 +0100)]
btrfs-progs: mkfs: allow DUP on multidev fs, only warn

The DUP profile can work on multiple filesystems, the limitation is
rather artificial. Let the user make the decision and print a warning.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: make error message from add_clone_source more generic
David Sterba [Thu, 24 Mar 2016 14:26:05 +0000 (15:26 +0100)]
btrfs-progs: make error message from add_clone_source more generic

Do not hardcode the error message.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: send: fix handling of multiple snapshots
Tsutomu Itoh [Thu, 24 Mar 2016 07:47:28 +0000 (16:47 +0900)]
btrfs-progs: send: fix handling of multiple snapshots

We cannot send multiple snapshots at once.

[before fix]
# btrfs send ./snap[12] > snap12.data
At subvol ./snap1
At subvol ./snap2
ERROR: parent determination failed for 0
#

[after fix]
# btrfs send ./snap[12] > snap12.data
At subvol ./snap1
At subvol ./snap2
#

Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: add misc 014-filesystem-label
David Sterba [Tue, 22 Mar 2016 18:01:39 +0000 (19:01 +0100)]
btrfs-progs: tests: add misc 014-filesystem-label

Test various label lengths on a mounted filesystem.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: introduce mustfail helper
David Sterba [Tue, 22 Mar 2016 17:47:18 +0000 (18:47 +0100)]
btrfs-progs: tests: introduce mustfail helper

Invalid syntax, expected failure on corrupted data etc. Failure is
success.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix build of standalone utilities after clean
David Sterba [Tue, 22 Mar 2016 17:29:24 +0000 (18:29 +0100)]
btrfs-progs: fix build of standalone utilities after clean

$ make clean
$ make btrfs-debug-tree

will fail because the dependency from $(btrfs_debug_tree_objects) is
missing. The variable standalone_deps magically collects all the deps
and will build them in advance. The simple fix to use the existing
substitution based on $@ does not work for pattern rules, as Noah found
out.

Reported-by: Noah Massey <noah.massey@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cleanup block group helpers types
David Sterba [Tue, 22 Mar 2016 16:01:20 +0000 (17:01 +0100)]
btrfs-progs: cleanup block group helpers types

Use const char and remove stray prototypes.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: utils: make more arguments const
David Sterba [Tue, 22 Mar 2016 15:56:33 +0000 (16:56 +0100)]
btrfs-progs: utils: make more arguments const

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: rename get_subvol_name() to subvol_strip_mountpoint()
Anand Jain [Mon, 21 Mar 2016 07:21:05 +0000 (15:21 +0800)]
btrfs-progs: rename get_subvol_name() to subvol_strip_mountpoint()

Signed-off-by: Anand Jain <anand.jain@oracle.com>
[ renamed from subvol_minus_mnt to subvol_strip_mountpoint ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: create get_subvol_info()
Anand Jain [Mon, 21 Mar 2016 07:21:04 +0000 (15:21 +0800)]
btrfs-progs: create get_subvol_info()

get_subvol_info() is useful as we are adding more features around
subvolume. This function was inline with the function
cmd_subvol_show().

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: move get_subvol_name() to utils.c
Anand Jain [Mon, 21 Mar 2016 07:21:03 +0000 (15:21 +0800)]
btrfs-progs: move get_subvol_name() to utils.c

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: remove duplicate function __is_subvol()
Anand Jain [Mon, 21 Mar 2016 07:21:02 +0000 (15:21 +0800)]
btrfs-progs: remove duplicate function __is_subvol()

The function test_issubvolume() provides the same check, and
has better logic.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: move test_issubvolume() to utils.c
Anand Jain [Mon, 21 Mar 2016 07:21:01 +0000 (15:21 +0800)]
btrfs-progs: move test_issubvolume() to utils.c

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: rearrange subvolume functions together
Anand Jain [Mon, 21 Mar 2016 07:21:00 +0000 (15:21 +0800)]
btrfs-progs: rearrange subvolume functions together

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: utils: make sure set_label_mounted uses correct length buffers
Petros Angelatos [Tue, 22 Mar 2016 10:40:29 +0000 (03:40 -0700)]
btrfs-progs: utils: make sure set_label_mounted uses correct length buffers

When `btrfs filesystem label /foo bar` command is invoked, it will pass
the buffer allocated in the argv array directly to set_label_mounted()
and then to the BTRFS_IOC_SET_FSLABEL ioctl.

However, the kernel code handling the ioctl will always try to copy
BTRFS_LABEL_SIZE bytes[1] from the userland pointer. Under certain
conditions and when the label is small enough, the command will fail
with:

    [root@localhost /]# btrfs filesystem label /mnt f
    ERROR: unable to set label Bad address

Fix this by making sure we pass a BTRFS_LABEL_SIZE sized buffer to the
ioctl containing the desired label.

[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/fs/btrfs/ioctl.c?id=refs/tags/v4.5#n5231

Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fragments: fix build
David Sterba [Tue, 22 Mar 2016 15:06:31 +0000 (16:06 +0100)]
btrfs-progs: fragments: fix build

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix fi du so it works in more cases
Austin S. Hemmelgarn [Mon, 21 Mar 2016 12:23:11 +0000 (08:23 -0400)]
btrfs-progs: fix fi du so it works in more cases

Currently, btrfs fi du uses open_file_or_dir(), which tries to open
it's argument with O_RDWR.  Because of POSIX semantics, this fails for
non-root users when the file is read-only or is an executable that
is being run currently, or for all users (including root) when the
filesystem is read-only.  This results in a somewhat confusing 'Unknown
error -1' message when trying to check such files.  Switch to using
open_file_or_dir3() with O_RDONLY passed in the flags, as this avoids
the limitations listed above, and we have no need to write to the files
anyway (and thus shouldn't be opening them writable).

Signed-off-by: Austin S. Hemmelgarn <ahferroin7@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: build: fix static standalone utilities
Noah Massey [Mon, 21 Mar 2016 14:16:07 +0000 (10:16 -0400)]
btrfs-progs: build: fix static standalone utilities

commit b5e7979 "btrfs-progs: build: extend per-binary objects" allows
the standalone utilities to link against object files shared with the
main binary. However, the btrfs-*.static targets need to be adjusted
to build against the static versions of the common files.

Signed-off-by: Noah Massey <noah.massey@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agoBtrfs progs v4.5
David Sterba [Sun, 20 Mar 2016 22:59:05 +0000 (23:59 +0100)]
Btrfs progs v4.5

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: enumerate RWX in convert tests
David Sterba [Fri, 18 Mar 2016 16:11:25 +0000 (17:11 +0100)]
btrfs-progs: tests: enumerate RWX in convert tests

Generating all valid combinations takes too much time.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: populate fs with small dataset for convert tests
Lakshmipathi.G [Tue, 8 Mar 2016 15:00:06 +0000 (20:30 +0530)]
btrfs-progs: tests: populate fs with small dataset for convert tests

Signed-off-by: Lakshmipathi.G <Lakshmipathi.G@giis.co.in>
[ minor tweaks ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: switch to common message helpers in open_ctree_fs_info
David Sterba [Fri, 18 Mar 2016 15:34:33 +0000 (16:34 +0100)]
btrfs-progs: switch to common message helpers in open_ctree_fs_info

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: handle stat errors in open_ctree_fs_info
David Sterba [Fri, 18 Mar 2016 15:07:09 +0000 (16:07 +0100)]
btrfs-progs: handle stat errors in open_ctree_fs_info

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: add stat check in open_ctree_fs_info
Austin S. Hemmelgarn [Fri, 18 Mar 2016 14:03:42 +0000 (10:03 -0400)]
btrfs-progs: add stat check in open_ctree_fs_info

Currently, open_ctree_fs_info will open whatever path you pass it and try
to interpret it as a BTRFS filesystem.  While this is not nessecarily
dangerous (except possibly if done on a character device), it does
result in some rather cryptic and non-sensical error messages when
trying to run certain commands in ways they weren't intended to be run.
Add a check using stat(2) to verify that the path we've been passed is
in fact a regular file or a block device, or a symlink pointing to a
regular file or block device.

This causes the following commands to provide a helpful error message
when run on a FIFO, directory, character device, or socket:
    * btrfs check
    * btrfs restore
    * btrfs-image
    * btrfs-find-root
    * btrfs inspect-internal dump-tree

stat(2) is used instead of lstat(2), as stat(2) follows symlinks just
like open(2) does, which means we check the same inode that open(2)
opens, and thus don't need special handling for symlinks.

Signed-off-by: Austin S. Hemmelgarn <ahferroin7@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fi du: fix incorrect column order
Alexander Fougner [Fri, 18 Mar 2016 11:08:24 +0000 (12:08 +0100)]
btrfs-progs: fi du: fix incorrect column order

Signed-off-by: Alexander Fougner <fougner89@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: qgroup assign: handle --no-rescan option
Satoru Takeuchi [Fri, 18 Mar 2016 01:36:29 +0000 (10:36 +0900)]
btrfs-progs: qgroup assign: handle --no-rescan option

* actual result

   ==================================================
   # btrfs qgroup assign --no-rescan 0/260 1/261 /btrfs
   btrfs qgroup assign: unrecognized option '--no-rescan'
   usage: btrfs qgroup assign [options] <src> <dst> <path>

       Assign SRC as the child qgroup of DST

       --rescan       schedule qutoa rescan if needed
       --no-rescan

   ==================================================

* expected result

   ==================================================
   # ./btrfs qgroup assign --no-rescan 0/260 1/261 /btrfs
   #
   ==================================================

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: qgroup assign: can't handle options
Satoru Takeuchi [Fri, 18 Mar 2016 01:35:15 +0000 (10:35 +0900)]
btrfs-progs: qgroup assign: can't handle options

"qgroup assign" is considered as working without any options
from the following commit.

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

However, we can pass options to this command.

* actual result

   ==================================================
   # ./btrfs qgroup assign --rescan 0/260 1/261 /btrfs
   btrfs qgroup assign: unrecognized option '--rescan'
   usage: btrfs qgroup assign [options] <src> <dst> <path>

       Assign SRC as the child qgroup of DST

       --rescan       schedule qutoa rescan if needed
       --no-rescan

   ==================================================

* expected result

   ==================================================
   # ./btrfs qgroup assign --rescan 0/260 1/261 /btrfs
   #
   ==================================================

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: inspect subvolid-resolve: fix argument parsing
Satoru Takeuchi [Fri, 18 Mar 2016 01:31:32 +0000 (10:31 +0900)]
btrfs-progs: inspect subvolid-resolve: fix argument parsing

"inspect-internal subvolid-resolve" doesn't work from the following commit.

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

It's because 1st argument, subvolid, is also used for the pathname of
filesystem. 2nd argument should be used for this purpose instead.

* actual result

   ==================================================
   # ./btrfs inspect-internal subvolid-resolve 260 /btrfs
   ERROR: cannot access '260': No such file or directory
   ==================================================

* expected result

   ==================================================
   # btrfs inspect-internal subvolid-resolve 260 /btrfs
   snap
   ==================================================

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: qgroup create/destroy: fix argument parsing
Satoru Takeuchi [Fri, 18 Mar 2016 01:29:50 +0000 (10:29 +0900)]
btrfs-progs: qgroup create/destroy: fix argument parsing

"qgroup create/destroy" don't work from the following commit.

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

* actual result

   ==================================================
   # ./btrfs qgroup create 1 /btrfs/sub
   btrfs qgroup create: too few arguments
   usage: btrfs qgroup create <qgroupid> <path>

       Create a subvolume quota group.
   ==================================================
   # btrfs qgroup create 1 /btrfs/sub
   # ./btrfs qgroup destroy 1 /btrfs/sub
   btrfs qgroup destroy: too few arguments
   usage: btrfs qgroup destroy <qgroupid> <path>

       Destroy a quota group.

   ==================================================

* expected result

   ==================================================
   # btrfs qgroup create 1 /btrfs/sub
   # btrfs qgroup destroy 1 /btrfs/sub/
   ==================================================

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: subvol get-default: fix argument parsing
Satoru Takeuchi [Fri, 18 Mar 2016 01:26:15 +0000 (10:26 +0900)]
btrfs-progs: subvol get-default: fix argument parsing

"sub get-default" does't work since the following commit.

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

* actual result

   ==================================================
   # ./btrfs sub get-default /btrfs
   btrfs subvolume get-default: too few arguments
   usage: btrfs subvolume get-default <path>

       Get the default subvolume of a filesystem
   ==================================================

* expected result

   ==================================================
   # btrfs sub get-default /btrfs
   ID 5 (FS_TREE)
   ==================================================

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: man5, add space_cache=v2
David Sterba [Thu, 17 Mar 2016 13:49:32 +0000 (14:49 +0100)]
btrfs-progs: docs: man5, add space_cache=v2

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: add 013-subvolume-sync-crash
David Sterba [Thu, 17 Mar 2016 13:22:24 +0000 (14:22 +0100)]
btrfs-progs: tests: add 013-subvolume-sync-crash

Test for "btrfs-progs: subvol sync: fix memory corruption, undersized
array", a lot of deleted subvolumes in the 'subvol sync' will not fit
into the array, should result in a glibc report.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: subvol sync: fix memory corruption, undersized array
David Sterba [Thu, 17 Mar 2016 10:41:18 +0000 (11:41 +0100)]
btrfs-progs: subvol sync: fix memory corruption, undersized array

The subvol sync command crashed randomly at the end with

*** glibc detected *** btrfs: double free or corruption (out): 0x00000000006ab040 ***

This is caused by running out of the ids array in case there are more
than 128 subvolumes. The array is increased in steps but does not
account the size of the item, so there was room for 1024 / 8 = 128
subvolume ids.

Fixes: c9f885ec8963 ("btrfs-progs: subvol: let sync check only current deletions")
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agoBtrfs progs v4.5-rc1
David Sterba [Wed, 16 Mar 2016 18:07:12 +0000 (19:07 +0100)]
Btrfs progs v4.5-rc1

Signed-off-by: David Sterba <dsterba@suse.com>