Satoru Takeuchi [Tue, 24 Jun 2014 07:30:21 +0000 (16:30 +0900)]
btrfs-progs: Avoid double-free of fs_devices->list
I found the following patch is insufficient.
===============================================================================
commit
6e6b32ddf58db54f714d0f263c2589f4859e8b5e
Author: Adam Buchbinder <abuchbinder@google.com>
Date: Fri Jun 13 16:43:56 2014 -0700
btrfs-progs: Fix a use-after-free in the volumes code.
===============================================================================
"btrfs filesystem show <dev>" with this patch causes segmentation fault
if "<dev>" is a not-mounted Btrfs filesystem.
===============================================================================
Label: none uuid: <cut here>
Total devices 1 FS bytes used 112.00KiB
devid 1 size 59.12GiB used 2.04GiB path /dev/sdd1
Segmentation fault (core dumped)
===============================================================================
It's due to double-free of fs_devices->list as follows.
===============================================================================
cmd_show
-> list_del(&fs_devices->list) # 1st one.
-> btrfs_close_devices(fs_devices)
-> list_del(&fs_devices->list) # <- 2nd one introduced at
6e6b32dd.
Double-free happens here.
===============================================================================
First list_del() can safely be removed because fs_devices->list will be
deleted by second one, soon.
Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Cc: Adam Buchbinder <abuchbinder@google.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Thu, 26 Jun 2014 02:53:06 +0000 (10:53 +0800)]
btrfs-progs: use BTRFS_SUPER_INFO_SIZE to replace raw 4096 in btrfs-image
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Thu, 26 Jun 2014 02:53:04 +0000 (10:53 +0800)]
btrfs-progs: cleanup possible silent failure in btrfs-image
If the malloc above fails, the btrfs-image will exit directly
without any error messages.
Now just return the ENOMEM errno and let the caller prompt the
error message.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Thu, 26 Jun 2014 02:53:02 +0000 (10:53 +0800)]
btrfs-progs: deal with malloc failure in btrfs-image
Handle the malloc failure for dump_worker in the same way as
the restore worker.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Wed, 25 Jun 2014 10:04:17 +0000 (18:04 +0800)]
btrfs-progs: replace BTRFS_NUM_MIRRORS with BTRFS_MAX_MIRRORS
The chunk-recover.c/BTRFS_NUM_MIRRORS in the userspace means
the same thing as ctree.h/BTRFS_MAX_MIRRORS in the kernelspace,
so to stay consistent with the kernelspace, just make this movement
in the userspace:
chunk-recover.c/BTRFS_NUM_MIRRORS
===>
ctree.h/BTRFS_MAX_MIRRORS
This provides convenience for future use.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Eric Sandeen [Thu, 26 Jun 2014 20:38:33 +0000 (15:38 -0500)]
btrfs-progs: add supported attr flags to btrfs(5)
The chattr(1) manpage suffers from the same problems mount(1)
had: many options listed, not kept up to date for various
filesystems.
I've submitted a manpage update for chattr(1) which says to
refer to filesystem-specific manpages for supported attributes;
this patch updates btrfs(5) to list the attributes supported
by btrfs.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
[added some asciidoc markups, adjusted formatting]
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Fri, 4 Jul 2014 07:29:17 +0000 (15:29 +0800)]
btrfs-progs: Add minimum device size check
Btrfs has global block reservation, so even mkfs.btrfs can execute
without problem, there is still a possibility that the filesystem can't
be mounted.
For example when mkfs.btrfs on a 8M file on x86_64 platform, kernel will
refuse to mount due to ENOSPC, since system block group takes 4M and
mixed block group takes 4M, and global block reservation will takes all
the 4M from mixed block group, which makes btrfs unable to create uuid
tree.
This patch will add minimum device size check before actually mkfs.
The minimum size calculation uses a simplified one:
minimum_size_for_each_dev = 2 * (system block group + global block rsv)
and global block rsv = leafsize << 10
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Hugo Mills [Mon, 5 May 2014 17:07:49 +0000 (18:07 +0100)]
btrfs-progs: check: Fix wrong level access
There's no reason to assume that the bad key order is in a leaf block,
so accessing level 0 of the path is going to be an error if it's actually
a node block that's bad.
Reported-by: Chris Mason <clm@fb.com>
Signed-off-by: Hugo Mills <hugo@carfax.org.uk>
Signed-off-by: David Sterba <dsterba@suse.cz>
Wang Shilong [Thu, 29 May 2014 10:01:44 +0000 (18:01 +0800)]
Btrfs-progs: fsck: add tests for extent tree rebuilding
We need test to verify extent tree rebuilding work, this test
create a strange filesystem with some snapshots, destroy
extent root node, and run fsck with "--init-extent-tree".
Since this tests need btrfs internal tool(btrfs-corrupt-block),so
i add this test into btrfs-progs.
Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Tue, 24 Jun 2014 03:16:45 +0000 (11:16 +0800)]
btrfs-progs: delete invalid output file when btrfs-image failed
When btrfs-image failed to create an image, the invalid output file
had better be deleted to prevent being used mistakenly in the future.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Tue, 24 Jun 2014 03:16:12 +0000 (11:16 +0800)]
btrfs-progs: deal with invalid option combinations for btrfs-image
For btrfs-image,
dump may not come with option '-o'
-r may not come with option '-c', '-s', '-w', dev_cnt != 1
-m may not come with dev_cnt < 2
All of the above should be regarded as invalid combinations,
and the usage will show up.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Thu, 19 Jun 2014 01:46:03 +0000 (09:46 +0800)]
btrfs-progs: update manpage for btrfs-image with -m option added
The btrfs-image support multiple devices with -m specified.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Thu, 19 Jun 2014 01:46:00 +0000 (09:46 +0800)]
btrfs-progs: cleanup duplicate assignment of variable leaf for btrfs-image
The value of variable leaf in while loop don't have to be set
for every round. Just move it outside.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Wang Shilong [Thu, 19 Jun 2014 01:27:09 +0000 (09:27 +0800)]
btrfs-progs: restore: document updates
Add some missing options, also improve some confusing
expressions.
Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Wang Shilong [Thu, 19 Jun 2014 01:27:08 +0000 (09:27 +0800)]
btrfs-progs: restore: don't allow users to specify -r and -f at the same time
These two options are used for same purpose, but they are exclusive with
each other. Make it clear to common users.
Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Wang Shilong [Thu, 19 Jun 2014 01:27:07 +0000 (09:27 +0800)]
btrfs-progs: restore: output resason why it fails to read root
Previously if restore could not read users specified fs root, it would
output following message:
Error reading root
With this patch, it will output message like:
Fail to read root 1000: No such file or directory
Signed-off-byr Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Wang Shilong [Thu, 19 Jun 2014 01:27:06 +0000 (09:27 +0800)]
btrfs-progs: restore: fix wrong return value if it fails to read specified fs root
Steps to reproduce:
# mkfs.btrfs -f /dev/sda9
# btrfs restore -f 1 -o /tmp /dev/sda9
# echo $?
Fix to return 1 in this failure path.
Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Wang Shilong [Thu, 19 Jun 2014 01:27:05 +0000 (09:27 +0800)]
btrfs-progs: restore: check if specified root is fs/file tree firstly
Steps to reproduce:
# mkfs.btrfs -f /dev/sda9
# mount /dev/sda9 /mnt
# dd if=/dev/zero of=/mnt/data bs=1M count=1
# btrfs restore -r /dev/sda9 -r 2 -o /tmp
If users don't input a valid fs/file root objectid, btrfs restore still
continue and don't restore anything, this is unfriendly, we could
check it firstly.
Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Wang Shilong [Thu, 19 Jun 2014 01:27:04 +0000 (09:27 +0800)]
Btrfs-progs: fsck: switch to is_fstree()
Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Vincent Stehlé [Wed, 18 Jun 2014 16:51:19 +0000 (18:51 +0200)]
btrfs-progs: restore: check lzo compress length
When things go wrong for lzo-compressed btrfs, feeding lzo1x_decompress_safe()
with corrupt data during restore can lead to crashes. Reduce the risk by adding
a check on the input length.
Signed-off-by: Vincent Stehlé <vincent.stehle@laposte.net>
Signed-off-by: David Sterba <dsterba@suse.cz>
Adam Buchbinder [Thu, 12 Jun 2014 22:57:33 +0000 (15:57 -0700)]
btrfs-progs: Properly size the leafsize field in the mdrestore_struct struct
It's 32 bits as defined in ctree.h, but the struct had it as 64 bits.
Found using MemorySanitizer.
Signed-off-by: Adam Buchbinder <abuchbinder@google.com>
Reviewed-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Adam Buchbinder [Thu, 12 Jun 2014 16:08:33 +0000 (09:08 -0700)]
btrfs-progs: Use sparse files for filesystem conversion tests
On my system, this brings the FS conversion test suite's runtime from over
ten seconds down to under two.
Thanks to Julien Muchembled for the suggestion.
Signed-off-by: Adam Buchbinder <abuchbinder@google.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Wed, 18 Jun 2014 05:28:22 +0000 (13:28 +0800)]
btrfs-progs: clean fsck noise for free inode generation 0
When we write a btrfs to full and then we have no space left for
free space cache.
The btrfs check will output msg as follows which is noise indeed:
# free space inode generation (0) did not match
free space cache generation (XXX)
When the free space cache is not written out normally,
the free inode generation will be 0.
In this condition, no noise should be outputed.
Also, check 0-sized inode eariler together with 0-generationed inode.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Fri, 13 Jun 2014 02:55:57 +0000 (10:55 +0800)]
btrfs-progs: Improve the parse_size() error message
When using parse_size(), even non-numeric value is passed, it will only
give error message "ERROR: size value is empty", which is quite
confusing for end users.
This patch will introduce more meaningful error message for the
following new cases
1) Invalid size string (non-numeric string)
2) Minus size value (like "-1K")
Also this patch will take full use of endptr returned by strtoll() to
reduce unneeded loop.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Thu, 5 Jun 2014 02:02:52 +0000 (10:02 +0800)]
btrfs-progs: show meaningful msgs for replace cmd upon raid56
This depends on the kernel patch:
[PATCH] btrfs:replace EINVAL with EOPNOTSUPP for dev_replace
This catches the EOPNOTSUPP and output msg that says dev_replace raid56
is not currently supported. Note that the msg will only be shown when
run dev_replace not in background.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Thu, 12 Jun 2014 02:25:00 +0000 (10:25 +0800)]
btrfs-progs: fix max mirror number error for chunk-recover
When run chunk-recover on a health btrfs(data profile raid0, with
plenty of data), the program has a chance to abort on the number
of mirrors of an extent.
According to the kernel code, the max mirror number of an extent
is 3 not 2:
ctree.h: BTRFS_MAX_MIRRORS 3
chunk-recover.c : BTRFS_NUM_MIRRORS 2
just change BTRFS_NUM_MIRRORS to 3, and everything goes well.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Thu, 12 Jun 2014 02:24:59 +0000 (10:24 +0800)]
btrfs-progs: fix missing parity stripe for raid6 in chunk-recover
When deal with the p & q stripes for data profile raid6, chunk-recover
forgets to insert them into the chunk record. Just insert them back
freely.
Also wrap the insert procedure into a new function, fill_chunk_up.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Adam Buchbinder [Wed, 21 May 2014 17:20:27 +0000 (10:20 -0700)]
btrfs-progs: Add some simple end-to-end tests for btrfs-convert
These use the system's mke2fs, and don't require loop devices
or root privileges.
They don't pick up anything with the default flags right now,
but they do pick up some sanitizer issues when the tools are
compiled with any of -fsanitize={address,memory,thread}.
Signed-off-by: Adam Buchbinder <abuchbinder@google.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Thu, 12 Jun 2014 07:12:32 +0000 (15:12 +0800)]
btrfs-progs: Add human readable flags output for chunk/block group type.
Current btrfs-debug-tree output chunk/block group type as numbers,
which makes it hard to understand and need to check the source to
understand the meaning.
This patch will convert numeric type output to human readable strings.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Thu, 12 Jun 2014 07:12:31 +0000 (15:12 +0800)]
btrfs-progs: Add human readable flags output string for extent flags.
Current btrfs-debug-tree outputs extent flags as numbers,
which makes it hard to understand and need to check the source to
understand the meaning.
This patch will convert numberic flags output to human readable strings.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Tue, 1 Apr 2014 10:01:10 +0000 (18:01 +0800)]
btrfs-progs: update manpage for btrfs resize support size unit t/p/e
btrfs resize now support size unit parse of k/m/g/t/p/e in kernel space,
adopt the changes in userspace manpage.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Adam Buchbinder [Fri, 13 Jun 2014 23:43:56 +0000 (16:43 -0700)]
btrfs-progs: Fix a use-after-free in the volumes code.
When a struct btrfs_fs_devices was being torn down by
btrfs_close_devices(), there was an invalidated pointer in the global
list fs_uuids which still pointed to it; if a device was closed and
then reopened (which btrfs-convert does), freed memory would be
accessed.
This was found using ThreadSanitizer (pretty much doing what
AddressSanitizer would, but not exiting after the first failure).
To reproduce, build with -fsanitize=thread and run 'make test'.
Representative output is below.
This change makes the current tests TSan-clean.
WARNING: ThreadSanitizer: heap-use-after-free (pid=29161)
Read of size 8 at 0x7d180000eee0 by main thread:
#0 memcmp ??:0
#1 find_fsid .../volumes.c:81
#2 device_list_add .../volumes.c:95
#3 btrfs_scan_one_device .../volumes.c:259
#4 btrfs_scan_fs_devices .../disk-io.c:1002
#5 __open_ctree_fd .../disk-io.c:1090
#6 open_ctree_fd .../disk-io.c:1191
#7 do_convert .../btrfs-convert.c:2317
#8 main .../btrfs-convert.c:2745
Previous write of size 8 at 0x7d180000eee0 by main thread:
#0 free ??:0
#1 btrfs_close_devices .../volumes.c:191
#2 close_ctree .../disk-io.c:1401
#3 do_convert .../btrfs-convert.c:2300
#4 main .../btrfs-convert.c:2745
Location is heap block of size 96 at 0x7d180000eee0 allocated by main thread:
#0 calloc ??:0 (exe+0x00000002acc6)
#1 device_list_add .../volumes.c:97
#2 btrfs_scan_one_device .../volumes.c:259
#3 btrfs_scan_fs_devices .../disk-io.c:1002
#4 __open_ctree_fd .../disk-io.c:1090
#5 open_ctree_fd .../disk-io.c:1191
#6 do_convert .../btrfs-convert.c:2256
#7 main .../btrfs-convert.c:2745
Signed-off-by: Adam Buchbinder <abuchbinder@google.com>
Reviewed-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Adam Buchbinder [Fri, 13 Jun 2014 21:18:50 +0000 (14:18 -0700)]
btrfs-progs: Fix undefined behavior in radix-tree.c.
When running with UndefinedBehaviorSanitizer, the tests produce the following
error:
radix-tree.c:836:30: runtime error: shift exponent
18446744073709551613
is too large for 64-bit type 'unsigned long'
(That's a negative shift exponent represented as an unsigned long.)
Even though the value is discarded in those cases, it's still undefined
behavior; see the C99 standard, section 6.5.7, paragraph three: "If the
value of the right operand is negative [...] the behavior is undefined."
Signed-off-by: Adam Buchbinder <abuchbinder@google.com>
Reviewed-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
David Sterba [Wed, 18 Jun 2014 15:17:38 +0000 (17:17 +0200)]
btrfs-progs: rename btrfs-mount.5 to btrfs.5
We'd like to keep the name of category 5 page same as the filesystem
to be consistent with the rest.
Signed-off-by: David Sterba <dsterba@suse.cz>
Eric Sandeen [Wed, 11 Jun 2014 22:14:55 +0000 (17:14 -0500)]
btrfs-progs: add mount options to btrfs-mount.5
This is a straight cut and paste from the util-linux
mount manpage into btrfs-mount.5
It's pretty much impossible for util-linux to keep up
with every filesystem out there, and Karel has more than
once expressed a wish that mount options move into fs-specific
manpages.
So, here we go.
The way btrfs asciidoc is generated, there's not a trivial
way to have both btrfs(5) and btrfs(8) so I named it btrfs-mount(5)
for now. A bit ick and I'm open to suggestions.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Thu, 12 Jun 2014 02:25:01 +0000 (10:25 +0800)]
btrfs-progs: cleanup unused assignment for chunk-recover
The 'num_unordered' will be recounted after 'goto out',
just remove it.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Jeff Mahoney [Wed, 4 Jun 2014 20:43:11 +0000 (16:43 -0400)]
btrfs-progs: canonicalize pathnames for device commands
mount(8) will canonicalize pathnames before passing them to the kernel.
Links to e.g. /dev/sda will be resolved to /dev/sda. Links to /dev/dm-#
will be resolved using the name of the device mapper table to
/dev/mapper/<name>.
Btrfs will use whatever name the user passes to it, regardless of whether
it is canonical or not. That means that if a 'btrfs device ready' is
issued on any device node pointing to the original device, it will adopt
the new name instead of the name that was used during mount.
Mounting using /dev/sdb2 will result in df:
/dev/sdb2
209715200 39328
207577088 1% /mnt
lrwxrwxrwx 1 root root 4 Jun 4 13:36 /dev/whatever-i-like -> sdb2
/dev/whatever-i-like
209715200 39328
207577088 1% /mnt
Likewise, mounting with /dev/mapper/whatever and using /dev/dm-0 with a
btrfs device command results in df showing /dev/dm-0. This can happen with
multipath devices with friendly names enabled and doing something like
'partprobe' which (at least with our version) ends up issuing a 'change'
uevent on the sysfs node. That *always* uses the dm-# name, and we get
confused users.
This patch does the same canonicalization of the paths that mount does
so that we don't end up having inconsistent names reported by ->show_devices
later.
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
[use PATH_MAX in canonicalize_dm_name]
Signed-off-by: David Sterba <dsterba@suse.cz>
Eric Sandeen [Fri, 30 May 2014 16:27:14 +0000 (11:27 -0500)]
btrfs-progs: make pretty Documentation/ build match the rest
This is the most important patch ever. ;)
I found this to be less aesthetically pleasing than it was before:
[CC] btrfstune.o
Making all in Documentation
ASCIIDOC btrfs-convert.xml
[LD] btrfstune
XMLTO btrfs-convert.8
[CC] btrfs-show-super.o
GZIP btrfs-convert.8.gz
[LD] btrfs-show-super
ASCIIDOC btrfs-debug-tree.xml
XMLTO btrfs-debug-tree.8
so I shortened the pretty-text to match what we had before.
Also, make clean "quiet" like it is in the top dir.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
[Changed to ASCII and XMLTO]
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Tue, 3 Jun 2014 06:20:08 +0000 (14:20 +0800)]
btrfs-progs: Documentation: Add filter section for btrfs-balance.
Man page for 'btrfs-balance' mentioned <filters> but does not explain
them, which make end users hard to use '-d', '-m' or '-s options.
This patch will use the explanations from
https://btrfs.wiki.kernel.org/index.php/Balance_Filters to enrich the
man page.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Thu, 8 May 2014 03:03:58 +0000 (11:03 +0800)]
btrfs-progs: update man page for btrfs-show-super
Add '-f' option for btrfs-show-super manpage,
This option implies that sys chunk array and backup roots info
will show up.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Wang Shilong [Wed, 28 May 2014 11:22:40 +0000 (19:22 +0800)]
Btrfs-progs: fsck: add an option to check data csums
This patch adds an option '--check-data-csum' to verify data checksums.
fsck won't check data csums unless users specify this option explictly.
Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Wang Shilong [Wed, 28 May 2014 11:20:41 +0000 (19:20 +0800)]
Btrfs-progs: fsck: fix wrong check for btrfs_read_fs_root()
When encountering a corrupted fs root node, fsck hit following message:
Check tree block failed, want=
29360128, have=0
Check tree block failed, want=
29360128, have=0
Check tree block failed, want=
29360128, have=0
Check tree block failed, want=
29360128, have=0
Check tree block failed, want=
29360128, have=0
read block failed check_tree_block
Checking filesystem on /dev/sda9
UUID:
0d295d80-bae2-45f2-a106-
120dbfd0e173
checking extents
Segmentation fault (core dumped)
This is because in btrfs_setup_all_roots(), we check
btrfs_read_fs_root() return value by verifing whether it is
NULL pointer, this is wrong since btrfs_read_fs_root() return
PTR_ERR(ret), fix it.
Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Wed, 28 May 2014 10:49:38 +0000 (18:49 +0800)]
btrfs-progs: fix blindly goto failure for chunk-recover
If the csum of one stripe is not able to judge the order of two
device extents, the stripe may happen to belong to the device extent
that is already kicked out as ordered.
Take this condition into consideration, don't report failure and
give more tries with the stripes following.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Wed, 28 May 2014 10:49:37 +0000 (18:49 +0800)]
btrfs-progs: fix uninitialized number count in chunk-recover
When count the number of unordered device extents in chunk-recover,
the counter should be reinitialized to be used.
Also, introduce a new function for the counting job.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Mark Fasheh [Wed, 7 May 2014 20:07:17 +0000 (13:07 -0700)]
btrfs-progs: add quota group verify code
This patch adds functionality (in qgroup-verify.c) to compute bytecounts in
subvolume quota groups. The original groups are read in and stored in memory
so that after we compute our own bytecounts, we can compare them with those
on disk. A print function is provided to do this comparison and show the
results on the console.
A 'qgroup check' pass is added to btrfsck. If any subvolume quota groups
differ from what we compute, the differences for them are printed. We also
provide an option '--qgroup-report' which will run only the quota check code
and print a report on all quota groups. Other than making it possible to
verify that our qgroup changes work correctly, this mode can also be used in
xfstests for automated checking after qgroup tests.
This patch does not address the following:
- compressed counts are identical to non compressed, because kernel doesn't
make the distinction yet. Adding the code to verify compressed counts
shouldn't be hard at all though once kernel can do this.
- It is only concerned with subvolume quota groups (like most of
btrfs-progs).
Signed-off-by: Mark Fasheh <mfasheh@suse.de>
Signed-off-by: David Sterba <dsterba@suse.cz>
Mark Fasheh [Wed, 7 May 2014 20:07:16 +0000 (13:07 -0700)]
btrfs-progs: import ulist
qgroup-verify.c wants this for walking root refs.
Signed-off-by: Mark Fasheh <mfasheh@suse.de>
Signed-off-by: David Sterba <dsterba@suse.cz>
Mark Fasheh [Wed, 7 May 2014 20:07:15 +0000 (13:07 -0700)]
btrfs-progs: print qgroup excl as unsigned
It's unsigned in the structure definition.
Signed-off-by: Mark Fasheh <mfasheh@suse.de>
Signed-off-by: David Sterba <dsterba@suse.cz>
Filipe David Borba Manana [Fri, 23 May 2014 19:14:56 +0000 (20:14 +0100)]
Btrfs-progs: receive, allow to continue after errors happen
Due to either bugs in send (kernel) that generate a command against
a wrong path for example, or transient errors on the receiving side,
we stopped processing the send stream immediately and exited with
an error.
It's often desirable to continue processing the send stream even if an
error happens while processing a single command from the send stream.
This change just adds a --max-errors <N> parameter, whose default value
is 1 (preserving current behaviour), that allows to tolerate N errors
before stopping. A value of 0 means to never stop no matter how many
errors we get into while processing the send stream. Regardless of its
value, errors are always printed to stderr when they happen, just like
before this change.
Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Adam Buchbinder [Mon, 19 May 2014 05:40:42 +0000 (22:40 -0700)]
btrfs-image: Fix a data race in build_chunk_tree.
A mdrestore_struct was being written to without its mutex being held.
This race was found with ThreadSanitizer; the relevant part of the report
looks like this:
WARNING: ThreadSanitizer: data race (pid=18828)
Write of size 8 at 0x7fffffc3d088 by main thread:
#0 build_chunk_tree .../btrfs-progs/btrfs-image.c:2233
#1 __restore_metadump .../btrfs-progs/btrfs-image.c:2294
#2 restore_metadump .../btrfs-progs/btrfs-image.c:2345
#3 main .../btrfs-progs/btrfs-image.c:2545
Previous read of size 8 at 0x7fffffc3d088 by thread T1 (mutexes: write M0):
#0 restore_worker .../btrfs-progs/btrfs-image.c:1636
Location is stack of main thread.
Mutex M0 created at:
#0 pthread_mutex_init ??:0
#1 mdrestore_init .../btrfs-progs/btrfs-image.c:1766
#2 __restore_metadump .../btrfs-progs/btrfs-image.c:2286
#3 restore_metadump .../btrfs-progs/btrfs-image.c:2345
#4 main .../btrfs-progs/btrfs-image.c:2545
Thread T1 (tid=18830, running) created by main thread at:
#0 pthread_create ??:0
#1 mdrestore_init .../btrfs-progs/btrfs-image.c:1784
#2 __restore_metadump .../btrfs-progs/btrfs-image.c:2286
#3 restore_metadump .../btrfs-progs/btrfs-image.c:2345
#4 main .../btrfs-progs/btrfs-image.c:2545
Signed-off-by: Adam Buchbinder <abuchbinder@google.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Eric Sandeen [Wed, 14 May 2014 17:39:07 +0000 (12:39 -0500)]
btrfs-progs: mkfs: allow UUID specification at mkfs time
Allow the specification of the filesystem UUID at mkfs time.
Non-unique unique IDs are rejected. This includes attempting
to re-mkfs with the same UUID; if you really want to do that,
you can mkfs with a new UUID, then re-mkfs with the one you
wanted.
(Implemented only for mkfs.btrfs, not btrfs-convert).
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
[converted help to asciidoc]
Signed-off-by: David Sterba <dsterba@suse.cz>
Christian Hesse [Tue, 3 Jun 2014 11:37:45 +0000 (13:37 +0200)]
btrfs-progs: fix compiler warning
gcc 4.9.0 gives a warning: format ‘%d’ expects argument of type ‘int’,
but argument 2 has type ‘u64’
Using %llu and casting to unsigned long long (same as bytenr) fixes this.
Signed-off-by: Christian Hesse <mail@eworm.de>
Signed-off-by: David Sterba <dsterba@suse.cz>
Eric Sandeen [Fri, 30 May 2014 16:29:19 +0000 (11:29 -0500)]
btrfs-progs: fix btrfs-fragments build
When I made all the btrfs-foo.c targets generic, I somehow
managed to break the libs definition for btrfs-fragments by
dropping the "s" off the end.
Fix that, although apparently nobody is building this tool. :)
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Fri, 30 May 2014 02:19:04 +0000 (10:19 +0800)]
btrfs-progs: Add dev uuid output for print_dev_item().
The original print_dev_item() only prints device id,total bytes and
bytes used.
When it comes to debug duplicated device id, dev uuid
is needed to distinguish different devices since device id is not
reliable.
(Although the current dev replace implement will reuse the dev uuid,
so not really helpful)
This patch adds dev uuid output for print_dev_item().
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Wed, 21 May 2014 08:03:57 +0000 (16:03 +0800)]
btrfs-progs: clarify manpage for btrfstune seeding option
The btrfstune -S option accepts a positive value to enable seeding,
and a zero to disable seeding, negtive is not allowed.
Add "positive, zero, negative" sentences to btrfstune manpage.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Eric Sandeen [Thu, 15 May 2014 17:14:40 +0000 (19:14 +0200)]
btrfs-progs: clarify mkfs.btrfs --alloc-start option
Fedora had a bug where a poor user thought that --alloc-start
meant that the filesystem would be created at that offset into
the device, rather than just starting allocations at that offset.
A subtle difference, but worth clarifying, because the manpage
is misleading on this point.
The original commit log for this option says:
Add mkfs.btrfs -A offset to control allocation start on devices
This is a utility option for the resizer, it makes sure to allocate
at offset bytes in the disk or higher. It ensures the resizer will have
something to move when testing it.
so allude to that intended use in the manpage.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
[converted to asciidoc]
Signed-off-by: David Sterba <dsterba@suse.cz>
Augusto Mecking Caringi [Sat, 31 May 2014 01:05:10 +0000 (22:05 -0300)]
btrfs-progs: Add information about libblkid requirement to INSTALL file
Signed-off-by: Augusto Mecking Caringi <augustocaringi@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
David Sterba [Mon, 5 May 2014 14:54:00 +0000 (16:54 +0200)]
btrfs-progs: doc: fix symlink target for btrfsck.8
The manpage of btrfsck.8 is supposed to link to btrfs-check.8 .
Reported-by: WorMzy Tykashi <wormzy.tykashi@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Christian Hesse [Tue, 3 Jun 2014 06:09:25 +0000 (08:09 +0200)]
btrfs-progs: fix build, manpage compression command
man pages for btrfs-progs are compressed by gzip by default. In Makefile
the variable GZIP is use, this evaluates to 'gzip gzip' on my system.
>From man gzip:
> The environment variable GZIP can hold a set of default options for
> gzip. These options are interpreted first and can be overwritten by
> explicit command line parameters.
So using any other variable name fixes this.
Signed-off-by: Christian Hesse <mail@eworm.de>
Signed-off-by: David Sterba <dsterba@suse.cz>
Filipe David Borba Manana [Fri, 23 May 2014 13:44:29 +0000 (14:44 +0100)]
Btrfs-progs: debug-tree, add option to dump a single tree
Very often while debugging filesystems with many subvolumes and/or
snapshots, specially when they are large, I want to see only the
content of one of the trees. So this change just adds an option
to btrfs-debug-tree to allow to specify the id of the tree we're
interesting in dumping to stdout.
Example: btrfs-debug-tree -t 257 /dev/sdc
Will only dump the tree of the first snapshot or subvolume that was
created.
Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Eric Sandeen [Wed, 14 May 2014 02:03:04 +0000 (21:03 -0500)]
btrfs-show-super: don't try to print not-superblocks
If we point btrfs-show-super at a not-btrfs-device and
try to print all superblocks, bad things are apt to happen:
superblock: bytenr=
274877906944, device=/dev/sdc2
---------------------------------------------------------
btrfs-show-super: ctree.h:1984: btrfs_super_csum_size: \
Assertion `!(t >= (sizeof(btrfs_csum_sizes) / sizeof((btrfs_csum_sizes)[0])))' failed.
csum 0xAborted
Don't try to print superblocks that don't look like superblocks,
and add an "-f" (force) option to try anyway, if the user
really wants to give it a shot.
Fix some spelling & capitalization while we're at it.
The manpage says that if any problem happens, 1 will
be returned, but that's already not true today LOL, so
I didn't bother to make it true when we detect bad
sb magic, either...
I figure it's worth continuing and trying all superblocks
in case just one has a corrupt magic.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
[renamed -f to -F due to clash with existing option, converted
relevant docs to asciidoc]
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Thu, 15 May 2014 01:29:09 +0000 (09:29 +0800)]
btrfs-progs: use check_argc_exact to check arg number of btrfs-rescue
The btrfs-rescue accepts exactly one arg for both
chunk-recover & super-recover, use check_argc_exact clearly.
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Fri, 16 May 2014 01:23:37 +0000 (09:23 +0800)]
btrfs-progs: add sys_chunk_array and backup roots info to show-super
Add sys chunk array and backup roots info if the new option '-f'
if specified.
This may be useful for debugging sys_chunk related issues.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Mon, 12 May 2014 01:39:42 +0000 (09:39 +0800)]
btrfs-progs: Remove unneeded assert in find_good_parent().
find_good_parent() uses assert to deal with the problem that clone
source's parent can't be found.
But in fact the assert is somewhat overkilled since subvol_uuid_search()
has enough error messages for debug and caller of find_good_parent() can
handle the problems in find_good_parent(), so the assert can be removed
without any problem.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Mon, 28 Apr 2014 08:37:30 +0000 (16:37 +0800)]
btrfs-progs: Replace the overkill assert with normal error message.
When 'btrfs replace status' encounters an unknown dev replace status, it
will cause an assert, which is somewhat overkilled and can be replaced
with a normal error message.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Mon, 28 Apr 2014 08:37:29 +0000 (16:37 +0800)]
btrfs-progs: Improve the errno string about open_path_or_dev_mnt()
open_path_or_dev_mnt() is used to on *mounted* btrfs device or mount
point, when a unmounted btrfs device is passed, errno is set to EINVAL to
info the caller.
If ignore the errno and just print "ERROR: can't access '%s'", end users
will get confused.
This patch will add check for open_path_or_dev_mnt() caller and print
more meaningful error message when a unmounted btrfs device path is
given.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Chris Mason [Fri, 30 May 2014 00:56:59 +0000 (20:56 -0400)]
v3.14.2
Signed-off-by: Chris Mason <clm@fb.com>
Chris Mason [Wed, 28 May 2014 21:01:39 +0000 (17:01 -0400)]
scrub: fix uninit return variable in scrub_progress_cycle
Signed-off-by: Chris Mason <clm@fb.com>
David Sterba [Mon, 19 May 2014 16:04:26 +0000 (18:04 +0200)]
btrfs-progs: doc: update the Availability section
Does not reflect the current state. The wiki contains more details on
the first page.
Signed-off-by: David Sterba <dsterba@suse.cz>
David Sterba [Mon, 19 May 2014 15:49:35 +0000 (17:49 +0200)]
btrfs-progs: doc: make all commands and subcommands bold
Italic format is used for parameters and values. also this makes the
text visually separated,
Signed-off-by: David Sterba <dsterba@suse.cz>
David Sterba [Mon, 19 May 2014 15:38:03 +0000 (17:38 +0200)]
btrfs-progs: doc: autoformat user-supplied arguments by sed
Convert all values enclosed between <...> to italic before it goes to
asciidoc processor.
Signed-off-by: David Sterba <dsterba@suse.cz>
David Sterba [Mon, 19 May 2014 15:18:24 +0000 (17:18 +0200)]
btrfs-progs: doc: remove text for unmerged features
The asciidoc conversion was done on a development branch and there are
portions of text that do not reflect the code.
Signed-off-by: David Sterba <dsterba@suse.cz>
David Sterba [Mon, 19 May 2014 15:08:56 +0000 (17:08 +0200)]
btrfs-progs: doc: fix argument notation and typos
All user-supplied values should be enclosed in <...> to distinguish
them from verbatim strings.
Signed-off-by: David Sterba <dsterba@suse.cz>
Holger Hoffstätte [Sat, 26 Apr 2014 09:41:04 +0000 (09:41 +0000)]
btrfs-progs: fix mkfs.btrfs segfault with --features option
The mkfs.btrfs --features long option takes an argument but does not
declare it. Consequently getopt does not allocate an argument, which
makes an unconditional strdup() crash during options parsing.
Fix by declaring the argument in the options alias array.
Signed-off-by: Holger Hoffstätte <holger.hoffstaette@googlemail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Rakesh Pandit [Fri, 25 Apr 2014 23:05:31 +0000 (02:05 +0300)]
Btrfs-progs: mkfs: remove ununsed parameters
Remove ununsed parameters since
71d6bd3c in create_raid_groups.
Signed-off-by: Rakesh Pandit <rakesh@tuxera.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Liu Bo [Fri, 25 Apr 2014 10:44:03 +0000 (18:44 +0800)]
Btrfs-progs: set string end sing '\0' for property
Set string "xattr_name" 's end with '\0' so that it won't be
violated in memory.
With this fix, xfstest/btrfs/048 can pass on my box.
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: Filipe Manana <fdmanana@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Thu, 24 Apr 2014 03:39:28 +0000 (11:39 +0800)]
btrfs-progs: prevent close_root if the root to close is potentially NULL
Originally only if 'block_only' is specified, the 'fs_root == NULL'
will be checked. But if 'block_only' is not specified and close_root
will be called blindly without checking 'fs_root == NULL', which is
unsafe.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
David Sterba [Fri, 11 Apr 2014 11:22:50 +0000 (13:22 +0200)]
btrfs-progs: move arg_strtou64 to a separate file for library
Linking with libbtrfs fails because arg_strtou64 is not defined and we
cannot just add utils.o to library objects because it's not
library-clean.
Reported-by: Arvin Schnell <aschnell@suse.com>
Reported-by: Anton Farygin <rider@altlinux.org>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Mon, 21 Apr 2014 12:13:32 +0000 (20:13 +0800)]
btrfs-progs: add dev maxs limit for btrfs_alloc_chunk in user space
For RAID0,5,6,10,
For system chunk, there shouldn't be too many stripes to
make a btrfs_chunk that exceeds BTRFS_SYSTEM_CHUNK_ARRAY_SIZE
For data/meta chunk, there shouldn't be too many stripes to
make a btrfs_chunk that exceeds a leaf.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Gui Hecheng [Mon, 21 Apr 2014 12:13:31 +0000 (20:13 +0800)]
btrfs-progs: fix wrong max system array size check in user space
For system chunk array,
We copy a "disk_key" and an chunk item each time,
so there should be enough space to hold both of them,
not only the chunk item.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Li Yang [Mon, 21 Apr 2014 09:38:08 +0000 (05:38 -0400)]
Btrfs-progs: mkfs: Remove 'zero_end =1' since it has been set to a value
In utils.c, zero_end is used as a parameter, should not force it to 1.
In mkfs.c, zero_end is set to 1 or 0(-b) at the beginning, should not
force it to 1 unconditionally.
Signed-off-by: Li Yang <liyang.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Rakesh Pandit [Sun, 20 Apr 2014 13:17:53 +0000 (16:17 +0300)]
Btrfs-progs: fsck: fix double free memory crash
Fix double free of memory if btrfs_open_devices fails:
*** Error in `btrfs': double free or corruption (fasttop): 0x000000000066e020 ***
Crash happened because when open failed on device inside
btrfs_open_devices it freed all memory by calling btrfs_close_devices but
inside disk-io.c we call btrfs_close_again it again.
Signed-off-by: Rakesh Pandit <rakesh@tuxera.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Rakesh Pandit [Sat, 19 Apr 2014 19:05:41 +0000 (22:05 +0300)]
Btrfs-progs: make smatch checker happy (trivial fixes)
It complains errno never gets assigned to zero in find-root and since
errno anyway is zero at program started up, lets remove it.
Check "copy is less then zero" isn't possible because strtoull used by
arg_strtou64 wouldn't return -ve number.
Trivial space fixes.
Signed-off-by: Rakesh Pandit <rakesh@tuxera.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Rakesh Pandit [Fri, 18 Apr 2014 23:14:14 +0000 (02:14 +0300)]
Btrfs-progs: receive: remove return type of close_inode_for_write
"close_inode_for_write" always returns 0, so just remove its return
value and remove dead checking in caller.
Signed-off-by: Rakesh Pandit <rakesh@tuxera.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Rakesh Pandit [Fri, 18 Apr 2014 23:13:55 +0000 (02:13 +0300)]
Btrfs-progs: fsck: while checking root refs print readable errors
Lets use "errors" instead of "error" because more then one ref errors
are possible. Also print error messages for unresolved refs in
check_root_refs.
Signed-off-by: Rakesh Pandit <rakesh@tuxera.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Filipe David Borba Manana [Tue, 15 Apr 2014 19:47:27 +0000 (20:47 +0100)]
Btrfs-progs: allow compression property gets for read-only subvolumes
Because the function open_file_or_dir() always opened the input file in
read/write mode (O_RDWR), we were not able to due a compression property
get against a file living in a read-only subvolume/snapshot.
Fix this by opening the file with O_RDONLY mode if we're doing a property
get.
Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Rakesh Pandit [Tue, 22 Apr 2014 13:30:27 +0000 (16:30 +0300)]
Btrfs-progs: fix check to test trim support
It was added in
25d82d22 but broke recently in
4724d7b0 while making
discard interruptible.
Signed-off-by: Rakesh Pandit <rakesh@tuxera.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Tue, 15 Apr 2014 09:22:24 +0000 (17:22 +0800)]
btrfs-progs: Fix the return value when executing 'btrfs prop get' on an uncompressed file
When executing 'btrfs prop get' on a file which is not compressed, return
value will always be 50 since prop_compress() return -ENOATTR.
But the codes have already check the errno to avoid unnecessary error
message, so the return value should also set to 0.
Signed-off-by: Qu Wenruo <quwenro@cn.fujitsu.com>
Reviewed-by: Filipe Manana <fdmanana@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Tue, 8 Apr 2014 09:16:02 +0000 (17:16 +0800)]
btrfs-progs: Fix the return value of btrfs_scan_kernel()
btrfs_scan_kernel() is only used in 'btrfs fi show' but returns wrong
return value. When search parameter is passed, it will never return 0
even the search can be matched.
This patch will change the whatever strange logic to a more easy to
understand one using 'found' var.
Reported-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Cc: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Rakesh Pandit [Wed, 26 Mar 2014 19:34:30 +0000 (21:34 +0200)]
Btrfs-progs: chunk_recovery: fix mem leak and pthread_cancel call
Free memory if open call fails. Prevent pthread_cancel on threads
which have already finished successfully. If all calls to
pthread_create and pthread_join are successful, we mistakenly call
pthread_cancel because cancel_from and cancel_to are both zero.
Make POSIX.1-2001 happy by supplying a non-NULL second argument to
pthread_setcanceltype.
Signed-off-by: Rakesh Pandit <rakesh@tuxera.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Rakesh Pandit [Tue, 25 Mar 2014 14:47:07 +0000 (16:47 +0200)]
Btrfs-progs: scrub: disable thread cancelability during mutex locks
scrub_progress_cycle thread runs in asynchronous type but locks mutex
while reading shared data. This patch disables cancelability for a
brief time while locks are on so as to make sure they are unlocked
before thread is canceled.
scrub_write_progress gets called from scrub_progress_cycle in
asynchronous thread but cancelability is disabled after mutex is
locked. This patch moves the call to set cancelability type before
mutex lock and makes corresponding changes to labels for error
handling.
Signed-off-by: Rakesh Pandit <rakesh@tuxera.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Rakesh Pandit [Mon, 24 Mar 2014 09:04:47 +0000 (11:04 +0200)]
Btrfs-progs: remove unsed pthread attribute objects
Threads always use default attributes in all tools, so pthread
attribute objects and their initializations are of no use. Just pass
NULL as attr attribute to pthread_create for default attributes.
Signed-off-by: Rakesh Pandit <rakesh@tuxera.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Rakesh Pandit [Fri, 21 Mar 2014 01:06:23 +0000 (03:06 +0200)]
Btrfs-progs: btrfs-image: don't call pthread_join on IDs not present
If pthread_create fails in mdrestore_init, then number of threads
created could be less then num of threads option. Hence pass number of
successful pthread_create calls to mdrestore_destroy, so that we don't
call pthread_join on IDs not present when pthread_create fails.
metadump_init already had this fixed, but repeats code from
metadump_destroy. Reuse metadump_destroy by passing number of threads
created (successful pthread_create calls) and save repeated cleaup
code. Had to move metadump_destroy before metadump_init for obvious
reasons.
Signed-off-by: Rakesh Pandit <rakesh@tuxera.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
David Sterba [Wed, 16 Apr 2014 16:33:44 +0000 (18:33 +0200)]
btrfs-progs: doc: link btrfsck to btrfs-check
The 'btrfsck' command has been deprecated in favor of 'btrfs check'. For
compatibility install a symlink to the btrfs-check.8 manpage.
Signed-off-by: David Sterba <dsterba@suse.cz>
David Sterba [Fri, 4 Apr 2014 14:36:40 +0000 (16:36 +0200)]
btrfs-progs: add separate make target to clean docs
Regenerating the asciidoc takes much longer now and makes quick build
tests long. There's separate clean-doc target for that and clean-all
that cleans docs and sources.
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Tue, 15 Apr 2014 07:04:51 +0000 (15:04 +0800)]
btrfs-progs: Add btrfs wiki reference to man pages.
Add btrfs wiki page reference to btrfs-check/btrfsck, btrfs-restore and
btrfs-device as supplement.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Tue, 15 Apr 2014 07:04:50 +0000 (15:04 +0800)]
btrfs-progs: Convert man page for btrfs-property.
Convert the man page for the newly added btrfs-property subcommand.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Tue, 15 Apr 2014 07:04:49 +0000 (15:04 +0800)]
btrfs-progs: Convert man page for btrfs-restore.
Convert man page for btrfs-restore, which I forgot to convert in the
previous patchset. :P
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Fri, 11 Apr 2014 02:43:53 +0000 (10:43 +0800)]
btrfs-progs: Add explain on btrfs-zero-log.
Add more explain on btrfs-zero-log about when to use it.
Reviewed-by: Marc MERLIN <marc@merlins.org>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Fri, 11 Apr 2014 02:43:52 +0000 (10:43 +0800)]
btrfs-progs: Add device management related paragraph.
Add device management related paragraph to better explain btrfs device
management.
Cc: Marc MERLIN <marc@merlins.org>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Qu Wenruo [Wed, 2 Apr 2014 08:29:38 +0000 (16:29 +0800)]
btrfs-progs: Switch to the new asciidoc Documentation.
Since all man page are converted to the new asciidoc, the old man page
can be removed.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>