Jan Schmidt [Tue, 6 Nov 2012 20:47:07 +0000 (21:47 +0100)]
Btrfs-progs: correcting misnamed parameter options for btrfs send
Unfortunately, the command line options for btrfs send were misnamed. The
-i option should not be used to give "clone sources", we'll be using -c
instead.
Compatibily note: -i option was broken anyway, which makes it less critical
renaming it. For potential users of the old option style, we emit a fatal
warning if the -i option is used.
Signed-off-by: Jan Schmidt <list.btrfs@jan-o-sch.net>
Arvin Schnell [Sun, 20 Jan 2013 21:04:18 +0000 (16:04 -0500)]
btrfs-progs: initialize data before send ioctl
Likely not strictly needed but I noticed valgrind complaining about
uninitialised memory in the ioctl call.
Signed-off-by: Arvin Schnell <aschnell@suse.de>
Wang Shilong [Sun, 20 Jan 2013 21:04:16 +0000 (16:04 -0500)]
Btrfs-progs: check the relation of two group by real level numbers
Comparing qgroupid is not good way to check the relationship of two groups,
the right way is to compare the real level numbers.
Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Gene Czarcinski <gene@czarc.net>
Wang Shilong [Sun, 20 Jan 2013 21:04:15 +0000 (16:04 -0500)]
Btrfs-progs: clean up reduplicate parse_qgroupid() and replace atoi with strtoull
1. parse_qgroupid() is implemented twice, clean up the reduplicate code.
2. atoi() can not detect errors, so use strtoull() instead of it.
Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Gene Czarcinski <gene@czarc.net>
Wang Shilong [Sun, 20 Jan 2013 21:04:14 +0000 (16:04 -0500)]
Btrfs-progs: fix arg parsing for btrfs qgroup limit commands
We can use this command in two ways.
1. btrfs qgroup limit size qgroupid path
2. btrfs qgroup limit size path
Before applying this patch, we differentiate them by check the parsing result
of the second argument. It is not so good because it may make some mistakes,
For example:
btrfs qgroup limit 1M 123456
^ It is a subvolume name.
In fact, we can differentiate them just by the number of arguments, so fix it
by this way.
Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Gene Czarcinski <gene@czarc.net>
Ulrik [Sun, 20 Jan 2013 21:04:08 +0000 (16:04 -0500)]
Btrfs-progs: correct btrfs receive usage string
Fix the usage string to specify the correct '-f' option for input file,
not '-i'.
Signed-off-by: Ulrik Sverdrup <ulrik.sverdrup@gmail.com>
Signed-off-by: Gene Czarcinski <gene@czarc.net>
Nirbheek Chauhan [Sun, 20 Jan 2013 21:04:07 +0000 (16:04 -0500)]
Btrfs-progs: fix resolving of loop devices
The LOOP_GET_STATUS ioctl truncates filenames to 64 characters. We should get
the backing file for a given loop device from /sys/. This is how losetup does it
as well.
Signed-off-by: Nirbheek Chauhan <nirbheek.chauhan@collabora.co.uk>
Signed-off-by: Gene Czarcinski <gene@czarc.net>
Tested-By: Hector Oron <hector.oron@collabora.co.uk>
Danny Kukawka [Mon, 21 Jan 2013 15:57:25 +0000 (16:57 +0100)]
btrfs-progs: Handle errors returned from open_ctree
Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
Signed-off-by: David Sterba <dsterba@suse.cz>
Wang Sheng-Hui [Thu, 16 Aug 2012 12:15:56 +0000 (20:15 +0800)]
btrfs-progs: add malloc check in transaction.h/btrfs_start_transaction
For malloc may fail, we should check it before assign
values to the struct btrfs_trans_handle *h.
Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
Arne Jansen [Tue, 29 Nov 2011 07:40:28 +0000 (08:40 +0100)]
Btrfs-progs: bugfix for scrubbing single devices
Scrub can be invoked to scrub only a single device of a (mounted) filesystem.
The code determines whether the given path is a mountpoint of a filesystem
by issueing a btrfs-specific ioctl to it. Only in case of EINVAL it assumed
it may be a device, all other errnos just caused it fail, but some devices
(correctly) return ENOTTY. This patch adds this to the error check.
Signed-off-by: Arne Jansen <sensille@gmx.net>
Goffredo Baroncelli [Fri, 21 Oct 2011 17:00:28 +0000 (19:00 +0200)]
Ignore the error ENXIO and ENOMEDIUM during a devs scan
Ignore the error ENXIO (device don't exists) and ENOMEDIUM (
No medium found -> like a cd tray empty) in the function
btrfs_scan_one_dir.
This avoids spurios errors due to an empty CD or a block device node
without a device (which is frequent in a static /dev).
Signed-off-by: Goffredo Baroncelli <kreijack@inwind.it>
David Sterba [Wed, 12 Oct 2011 11:36:13 +0000 (13:36 +0200)]
btrfs-progs: ignore -a option in mkfs
Let mkfs accept '-a' option and not complain. When a partition has non-zero
value in the fs_passno filed in /etc/fstab, the fsck is run but fails and boot
stops. As fsck does not break things currently, it's safe to ignore the option
and let the boot proceed.
Reference: https://bugzilla.novell.com/show_bug.cgi?id=655906
Signed-off-by: David Sterba <dsterba@suse.cz>
Simon Xu [Wed, 9 Jan 2013 10:32:44 +0000 (18:32 +0800)]
btrfs-progs: remove '-h' from btrfs man page
Remove '-h' from btrfs man page as it's not supported by the btrfs utility.
Signed-off-by: Simon Xu <xu.simon@oracle.com>
Simon Xu [Wed, 9 Jan 2013 07:31:07 +0000 (15:31 +0800)]
btrfs-progs: remove "device show" from btrfs man page
Remove "device show" from btrfs man page as it's not supported by the
btrfs utility.
Signed-off-by: Simon Xu <xu.simon@oracle.com>
Lluis Batlle i Rossell [Fri, 30 Nov 2012 10:08:39 +0000 (11:08 +0100)]
btrfs-progs: Fix getopt on arm platforms
There, 'char' is unsigned, so once assigned '-1' from getopt, it gets
the value 255. Then, it compared to '-1' gives false.
Signed-off-by: Lluis Batlle i Rossell <viric@viric.name>
Wang Sheng-Hui [Tue, 20 Nov 2012 06:26:46 +0000 (14:26 +0800)]
btrfs-progs: print the right mount checking info in restore.c
The mount status is checked against the arg <device> (argv[optind]),
not the <directory>. Correct the info printed on <device> mounted.
Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
Zach Brown [Thu, 15 Nov 2012 22:24:03 +0000 (14:24 -0800)]
btrfs-progs: fix 32bit int/pointer cast warnings
This uses uintptr_t to cast pointers to u64 ioctl arguments to silence
some 32bit build warnings:
cmds-inspect.c: In function ‘__ino_to_path_fd’:
cmds-inspect.c:47:15: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
cmds-inspect.c: In function ‘cmd_logical_resolve’:
cmds-inspect.c:171:15: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
Signed-off-by: Zach Brown <zab@redhat.com>
Kenji Okimoto [Thu, 15 Nov 2012 04:47:52 +0000 (13:47 +0900)]
btrfs-progs: plug memory leaks in btrfs_scan_one_dir() reported by cppcheck.
[utils.c:983]: (error) Memory leak: fullpath
Signed-off-by: Kenji Okimoto <okimoto@clear-code.com>
Kenji Okimoto [Thu, 15 Nov 2012 04:47:51 +0000 (13:47 +0900)]
btrfs-progs: check malloc() result
Signed-off-by: Kenji Okimoto <okimoto@clear-code.com>
Kenji Okimoto [Thu, 15 Nov 2012 04:47:50 +0000 (13:47 +0900)]
btrfs-progs: plug a memory leak reported by cppcheck
[src/btrfs/disk-io.c:462]: (error) Memory leak: log_root
Signed-off-by: Kenji Okimoto <okimoto@clear-code.com>
Wang Sheng-Hui [Wed, 14 Nov 2012 07:46:21 +0000 (15:46 +0800)]
btrfs-progs: update usage description for debug-tree.c
There are more options than "-e" only.
Update the description for the usage.
Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
Goffredo Baroncelli [Mon, 29 Oct 2012 17:53:19 +0000 (18:53 +0100)]
parse_size(): add new suffixes
Add new suffixes in parse_size() function. New suffixes are: T as
terabyte, P as petabyte, E as exabyte. Note these units are
multiply of 2 .
Signed-off-by: Goffredo Baroncelli <kreijack@inwind.it>
Goffredo Baroncelli [Mon, 29 Oct 2012 17:53:18 +0000 (18:53 +0100)]
parse_size(): replace atoll() with strtoull()
Replace the function atoll with strtoull(); Check that the suffix for the
parse_size() input is of only one character.
Signed-off-by: Goffredo Baroncelli <kreijack@inwind.it>
Goffredo Baroncelli [Mon, 29 Oct 2012 17:53:17 +0000 (18:53 +0100)]
Move parse_size() to utils.[hc]
Move the function from cmds-filesystem.c and mkfs.c to utils.c
Signed-off-by: Goffredo Baroncelli <kreijack@inwind.it>
David Sterba [Thu, 25 Oct 2012 15:27:57 +0000 (17:27 +0200)]
btrfs-progs: do not send stream into a terminal
Signed-off-by: David Sterba <dsterba@suse.cz>
Alex Lyakas [Wed, 17 Oct 2012 13:53:58 +0000 (15:53 +0200)]
btrfs-progs: Receive: preserve ownership for symlinks, by using 'lchown'
Signed-off-by: Alex Lyakas <alex.btrfs@zadarastorage.com>
Arne Jansen [Sun, 21 Oct 2012 14:34:33 +0000 (16:34 +0200)]
Btrfs-progs: fix unaligned accesses
There are some unaligned accesses in progs that cause malfunction or
crashes on ARM.
This patch fixes the ones we stumbled upon.
Signed-off-by: Arne Jansen <sensille@gmx.net>
Wang Sheng-Hui [Tue, 16 Oct 2012 07:29:15 +0000 (15:29 +0800)]
btrfs-progs: add -V description in print_usage
mkfs supports the option -V/--version.
Add its description to print_usage().
Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
Sergei Trofimovich [Thu, 11 Oct 2012 08:43:48 +0000 (11:43 +0300)]
version.sh: fix version when built from tarball
[from 0.20-rc1 tarball]
Before the patch:
$ ./btrfs --version
Btrfs Btrfs v0.19
After the patch:
$ ./btrfs --version
Btrfs v0.20-rc1
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Wade Cline [Thu, 20 Sep 2012 21:26:28 +0000 (14:26 -0700)]
Btrfs-progs: Fix compiler warnings on PPC64
The kernel uses unsigned long long for u64, but PPC64 uses unsigned
long by default. This results in compilation warnings such as:
print-tree.c:333: warning: format '%llu' expects type 'long long
unsigned int', but argument 4 has type 'u64'
To fix this, the macro __KERNEL__ needs to be defined before including
the file <asm/types.h>. This can be done by defining the macro in
"kerncompat.h" and making it the first included file in the relevant
header files; this fixes the compiler warnings on PPC64.
Reviewed-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Wade Cline <clinew@linux.vnet.ibm.com>
Chris Mason [Fri, 5 Oct 2012 00:35:31 +0000 (20:35 -0400)]
Cast args to min to fix compiler warnings
Liu Bo [Fri, 31 Aug 2012 05:40:44 +0000 (05:40 +0000)]
Btrfs-progs: add options to change bufsize in logical to inode translation
Add an option 's' to set bufsize in logical to inode transition, then we are able
to read all the refs to the logical address.
Meanwhile, set a max value 64k for the bufsize.
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Goffredo Baroncelli [Tue, 4 Sep 2012 17:59:26 +0000 (19:59 +0200)]
Correct un-initialized fsid variable
David Sterba [Fri, 7 Sep 2012 15:02:16 +0000 (09:02 -0600)]
btrfs-progs: pretty print key in extent_item
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Anand Jain [Fri, 21 Sep 2012 06:54:08 +0000 (00:54 -0600)]
Btrfs-progs: btrfs subvolume delete could delete subvolumes
With this user will be able to provide more than one subvolume
to delete.
eg: btrfs subvolume delete <subvol1> <subvol2>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Anand Jain [Fri, 21 Sep 2012 07:00:15 +0000 (01:00 -0600)]
Btrfs-progs: correct the mkfs.btrfs man page
Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Zhi Yong Wu [Tue, 25 Sep 2012 02:02:16 +0000 (20:02 -0600)]
btrfs-progs: Fix up memory leakage
Some code pathes forget to free memory on exit.
Changelog from v1:
Fix the variable is used uncorrectly. [Ram Pai]
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Zhi Yong Wu [Tue, 25 Sep 2012 02:02:15 +0000 (20:02 -0600)]
btrfs-progs: Close file descriptor on exit
Need to close fd on exit.
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Robin Dong [Fri, 28 Sep 2012 03:02:39 +0000 (21:02 -0600)]
btrfs-progs: limit the max value of leafsize and nodesize
Using mkfs.btrfs like:
mkfs.btrfs -l 131072 /dev/sda
will return no error, but after mount it, the dmesg will report:
BTRFS: couldn't mount because metadata blocksize (131072) was too large
The leafsize and nodesize are equal at present, so we just use one function
"check_leaf_or_node_size" to limit leaf and node size below BTRFS_MAX_METADATA_BLOCKSIZE.
Signed-off-by: Robin Dong <sanbai@taobao.com>
Reviewed-by: David Sterba <dave@jikos.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Goffredo Baroncelli [Mon, 1 Oct 2012 20:11:27 +0000 (14:11 -0600)]
pretty_sizes() returns incorrect values
pretty_sizes() returns incorrect values if the argument is < 1024.
pretty_sizes(0) -> 0.00 OK
pretty_sizes(102) -> 0.10 WRONG
pretty_sizes(1023) -> 1.00 WRONG
pretty_sizes(1024) -> 1.00KB OK
Signed-off-by: Goffredo Baroncelli <kreijack@inwind.it>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Wang Shilong [Thu, 27 Sep 2012 17:33:01 +0000 (01:33 +0800)]
Btrfs-Progs: update '-s' option without a argument.
Since '--sort' options was given ,and we can list snapshots in generation
order by --sort=+/-gen to replace '-s [0|1]' totally.
Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujistsu.com>
Wang Shilong [Thu, 27 Sep 2012 17:25:00 +0000 (01:25 +0800)]
Btrfs-progs: introduces '-a' option into subvolume list command
We list the subvolumes under current directory according to the input
subvolume.
However, if we still want to list all the subvolumes in the tree, we
can use '-a' option to help us.
There may be two kinds of path: absolute path , relative path .
The absolute path is beginning with "<FS_TREE>"
The relative path is under current path that you input.
Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
Wang Shilong [Thu, 27 Sep 2012 17:04:20 +0000 (01:04 +0800)]
Btrfs-Progs: fix subvolumes's some full_path invaild problems.
In the privous way, we list all the subvolumes in the filesystem default.
But if a subvolume mounts on another directory, some result's full_path
may be invaild.
According to this, we try to list subvolumes under directoy only by default.
In this way, all the subvolume can be arrived by the full_path.
Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
Miao Xie [Thu, 20 Sep 2012 11:04:22 +0000 (19:04 +0800)]
Btrfs-progs: introduce '-t' option into subvolume list command
This patch introduces '-t' option into subvolume list command. By this
option, we can output the result as a table.
Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
wangshilong [Wed, 19 Sep 2012 09:21:51 +0000 (17:21 +0800)]
Btrfs-progs: introduce -g -c --sort options into btrfs subvol list command
This patch introduces '-g' '-c' '--sort' options
The option '-g' can help you filter the subvolumes by the generation, you may
use it just like:
btrfs subvol list -g +/-value <path>
'+' means the generation of the subvolumes should >= the value you specified.
'-' means the generation should <= the value
If you don't input either '+' nor '-', this command will list the subvolumes
that their generation equals to the value.
However if you want to find gengeration between value1 and value2
you may use the above like:
btrfs sub list -g -value1 -g +value2 <path>
The option '-c' can help you filter the subvolumes by the ogeneration, you may
use it just like:
btrfs subvol list -c +/-value <path>
The usage is the same to '-g'
You might want to list subvolumes in order of some items, such as root id, gen
and so on, you can use '--sort'. Now you can sort the subvolumes by root id,
gen, ogen and path.
For example:
If you want to list subvolumes in order of rootid, you can use the option like
that:
btrfs sub list --sort=+/-rooid <path>
Here, '+' means the result is sorted by ascending order. '-' is by descending
order. If you don't specify either '+' nor '-', the result is sorted by
default - ascending order.
If you want to combine sort items, you do it like that:
btrfs sub list --sort=-rootid,+path,ogen,gen <path>
Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Zhou Bo [Wed, 8 Aug 2012 08:54:54 +0000 (16:54 +0800)]
Btrfs-progs: update the manpage entries for the btrfs subvolume list
This patch adds the introduction of the new option '-r' into the man page of
'btrfs subvolume list' command.
Signed-off-by: Zhou Bo <zhoub-fnst@cn.fujitsu.com>
Miao Xie [Tue, 18 Sep 2012 09:14:37 +0000 (17:14 +0800)]
Btrfs-progs: enhance btrfs subvol list only to show read-only snapshots
We want 'btrfs subvolume list' only to list readonly subvolumes, this patch set
introduces a new option 'r' to implement it.
You can use the command like that:
btrfs subvolume list -r <path>
Original-Signed-off-by: Zhou Bo <zhoub-fnst@cn.fujitsu.com>
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Miao Xie [Tue, 18 Sep 2012 06:51:49 +0000 (14:51 +0800)]
Btrfs-progs: restructure list_subvolumes
The current code of list_subvols() has very bad scalability, if we want to
add new filter conditions or new sort methods, we have to modify lots of code.
Beside that, the most code of list_snapshots() is similar to list_subvols(),
So I restructure list_subvols(), and split the subvolume filter function,
the subvolume sort function and the output function from list_subvols().
In order to implement it, we defined some importtant structures:
struct btrfs_list_filter {
btrfs_list_filter_func filter_func;
void *data;
};
struct btrfs_list_comparer {
btrfs_list_comp_func comp_func;
int is_descending;
};
struct {
char *name;
char *column_name;
int need_print;
} btrfs_list_columns[];
If we want to add a new filter condition, we can choose a suitable filter
function, or implement a new filter function[1], and add it into a set of
the filters, and then pass the filter set into list_subvols(). We also can
mix several filters (just add those filters into the set, and pass the set
into list_subvols()) if the users specify two or more filter conditions.
The subvolume sort function is similar to the subvolume filter function. The
differentiation is the order of comparers in the array which is passed into
list_subvols() show us the priority of the sort methods.
The output function is different with the above two functions, we define a
array to manage all the columns that can be outputed, and use a member variant
(->need_print) to control the output of the relative column. Some columns are
outputed by default. But we can change it according to the requirement of the
users.
After appling this patch, we needn't implement a independent list_snapshots()
function, just pass a filter function which is used to identify the snapshot
into list_subvols().
[1]: If we implement new filter functions or compare functions, we must add
them into the array all_filter_funcs or the array all_comp_funcs, and modify
the relative enum variants(btrfs_list_filter_enum, btrfs_list_comp_enum).
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Miao Xie [Sat, 1 Sep 2012 08:45:30 +0000 (16:45 +0800)]
Btrfs-progs: fix wrong way to check if the root item contains otime and uuid
Now we check if the root item contains otime and uuid or not by comparing
->generation_v2 and ->generation of the btrfs_root_item structure, it is
wrong because it is possbile that ->generation may equal to the first
variant of the next item. We fix this problem by check the size of btrfs_root_item,
if it is larger than the original one, the new btrfs_root_item contains otime
and uuid. we needn't worry the case that the new filesystem is mounted on the
old kernel. because the otime and uuid are not changed on the old kernel, we can
get the correct result even on the kernel.
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Miao Xie [Sat, 1 Sep 2012 08:30:35 +0000 (16:30 +0800)]
Btrfs-progs: fix wrong usage of btrfs subvolume list command
Since the uuid output function has been implemented, we should update
the usage to tell the users.
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Miao Xie [Sat, 1 Sep 2012 07:31:55 +0000 (15:31 +0800)]
Btrfs-progs: fix compile warning of implicit declaration of "list_snapshots"
This patch fixes the following warning:
cmds-subvolume.c:283:3: warning: implicit declaration of function "list_snapshots"
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Zhou Bo [Wed, 8 Aug 2012 08:54:48 +0000 (16:54 +0800)]
Btrfs-progs: move the function declarations to a new head file
Move the function declarations to a new head file.
Signed-off-by: Zhou Bo <zhoub-fnst@cn.fujitsu.com>
Anand Jain [Wed, 15 Aug 2012 08:29:53 +0000 (16:29 +0800)]
Btrfs-progs: seg fault in get_label_unmounted
btrfs f l /
No valid Btrfs found on /
Segmentation fault (core dumped)
open_ctree can return NULL, we need to check that.
Signed-off-by: Anand Jain <anand.jain@oracle.com>
Anand Jain [Tue, 14 Aug 2012 06:04:06 +0000 (14:04 +0800)]
Btrfs-progs: add -u to show subvol uuid
Applications would need to know the uuid to manage the configurations
associated with the subvol and snapshots
Signed-off-by: Anand Jain <anand.jain@oracle.com>
Anand Jain [Fri, 3 Aug 2012 09:48:57 +0000 (17:48 +0800)]
Btrfs-progs: add otime to the snapshot list
Reviewed-by: Alexander Block <ablock84@googlemail.com>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
Liu Bo [Fri, 3 Aug 2012 09:48:56 +0000 (17:48 +0800)]
Btrfs-progs: list snapshots by generation
The idea is that we usually use snapshot to backup/restore our data, and the
common way can be a cron script which makes lots of snapshots, so we can end
up with spending some time to find the latest snapshot to restore.
This adds a feature for 'btrfs subvolume list' to let it list snapshots by their
_created_ generation.
What we need to do is just to list them in descending order and get the latest
snapshot. What's more, we can find the oldest snapshot as well by listing
snapshots in ascending order.
Signed-off-by: Liu Bo <liubo2009@cn.fujitsu.com>
Liu Bo [Fri, 3 Aug 2012 09:48:55 +0000 (17:48 +0800)]
Btrfs-progs: show generation in command btrfs subvol list
This adds the ability to show root's modification generation when we use
btrfs subvol list.
NOTE:
Like file's atime and ctime, root's generation also has 'creation generation'
and 'modification generation'.
The generation that we're going to show is 'modification generation', and the
next patch is going to show 'creation generation'.
Signed-off-by: Liu Bo <liubo2009@cn.fujitsu.com>
Liu Bo [Fri, 3 Aug 2012 09:48:51 +0000 (17:48 +0800)]
Btrfs-progs: search subvolumes with proper objectid
Btrfs's subvolume/snapshot is limited to
[BTRFS_FIRST_FREE_OBJECTID, BTRFS_LAST_FREE_OBJECTID], so just apply the range.
Signed-off-by: Liu Bo <liubo2009@cn.fujitsu.com>
Miao Xie [Tue, 21 Aug 2012 06:16:27 +0000 (14:16 +0800)]
Btrfs-progs: fix wrong return value of check_owner_ref()
If we find the block by seach corresponding fs tree, we should return 0,
and tell the caller we pass the check.
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Miao Xie [Fri, 10 Aug 2012 08:14:02 +0000 (16:14 +0800)]
Btrfs-progs: fix unresolved ref root message
btrfsck misinformed "unresolved ref root" message when there were several
snapshots in the file system. The patch(commit
cfdd42686c70) tried to fix
this bug, but didn't fix it completely. If the metadata was stored in a
shared leaf of the tree, the problem would happen again. This patch fixes
it by another way, we don't check the relationship of the trees when we
traverse the fs/file tree, we just do the check when we merge the snapshot
records to the root cache.
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Miao Xie [Fri, 10 Aug 2012 05:12:16 +0000 (13:12 +0800)]
Btrfs-progs: fix wrong leaf when checking the trees relationship
The variant named 'leaf' in is_child_root() still hold old result after
we get the next leaf, it make btrfsck returns the wrong result, such as
"unresolved ref root ..", fix it.
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Miao Xie [Fri, 10 Aug 2012 02:46:16 +0000 (10:46 +0800)]
Btrfs-progs: fix several complie warning
This patch fixed the following warning:
cmds-send.c:464:6: warning: ‘ret' may be used uninitialized in this function [-Wuninitialized]
crc32c.c:121:1: warning: control reaches end of non-void function [-Wreturn-type]
send-utils.c:69:11: warning: ‘comp' may be used uninitialized in this function [-Wuninitialized]
send-utils.c:126:6: warning: ‘comp' may be used uninitialized in this function [-Wuninitialized]
send-utils.c:99:22: warning: ‘entry' may be used uninitialized in this function [-Wuninitialized]
btrfs.c:261:2: warning: implicit declaration of function ‘crc32c_optimization_init' [-Wimplicit-function-declaration]
btrfs.c:105:2: warning: ‘cmd' may be used uninitialized in this function [-Wuninitialized]
restore.c:435:12: warning: ignoring return value of ‘ftruncate', declared with attribute warn_unused_result [-Wunused-result]
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Tsutomu Itoh [Wed, 12 Sep 2012 04:30:19 +0000 (13:30 +0900)]
Btrfs-progs: fix arguments check of qgroup limit
Segmentation fault occurred in the following command.
# btrfs qgroup limit
Segmentation fault
So, we should check a minimum number of arguments.
Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Josef Bacik [Fri, 27 Jul 2012 12:37:55 +0000 (08:37 -0400)]
Btrfs-progs: only enforce a maximum size if we specify one
My patch
04609add88ef8428d725de6ef60f46a3ff0dbc8e
introduced a regression where if you mkfs'ed a group of disks with different
sizes it limited the disks to the size of the first one that is specified.
This was not the intent of my patch, I only want it to limit the size based
on the -b option, so I've reworked the code to pass in a max block count and
that fixes the issue. Thanks,
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
David Sterba [Tue, 17 Jul 2012 10:41:13 +0000 (12:41 +0200)]
btrfs-progs: fsck: understand the -s option
Short options have to be repeated at the getopt_long call.
Signed-off-by: David Sterba <dsterba@suse.cz>
David Sterba [Tue, 17 Jul 2012 10:18:10 +0000 (12:18 +0200)]
btrfs-progs: mkfs: create root directory with 755 permissions
That's what all other mkfs do and there's no reason for 0555.
Signed-off-by: David Sterba <dsterba@suse.cz>
David Sterba [Tue, 17 Jul 2012 10:30:16 +0000 (12:30 +0200)]
btrfs-progs: mkfs: rename nodiscard option to K
The original patch named the option -T, mkfs.xfs uses -K let's keep it
same.
Signed-off-by: David Sterba <dsterba@suse.cz>
Arne Jansen [Tue, 7 Aug 2012 10:37:54 +0000 (12:37 +0200)]
Btrfs progs: quota groups support
Signed-off-by: Jan Schmidt <list.btrfs@jan-o-sch.net>
Signed-off-by: Arne Jansen <sensille@gmx.net>
Jan Schmidt [Mon, 20 Aug 2012 11:40:18 +0000 (13:40 +0200)]
Btrfs-progs: replace find_mount_root from send code
find_mount_root had the problem that it tried to conclude from a file system
path to a mount point, taking the fsid as an indicator. This only works if
no two subvolumes (sharing the same btrfs fsid) are mounted in the same
hierarchy.
Now instead, we're parsing /etc/mtab and look for the longest match.
Signed-off-by: Jan Schmidt <list.btrfs@jan-o-sch.net>
Chris Mason [Thu, 9 Aug 2012 16:48:29 +0000 (12:48 -0400)]
Allow relative paths for btrfs send
The initial btrfs send code was easily confused by relative paths and by
anything that wasn't in the root of the FS. This fixes it to take
relative paths.
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Wed, 25 Jul 2012 19:02:07 +0000 (15:02 -0400)]
Use intel hardware crc32c where available
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Tue, 24 Jul 2012 16:17:42 +0000 (12:17 -0400)]
Switch to -O1 for optimizations to enable FORTIFY_SOURCE
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Alexander Block [Wed, 25 Jul 2012 21:08:25 +0000 (23:08 +0200)]
Btrfs-progs: add btrfs send/receive commands
Add user space commands for btrfs send/receive.
Signed-off-by: Alexander Block <ablock84@googlemail.com>
Reviewed-by: David Sterba <dave@jikos.cz>
Reviewed-by: Arne Jansen <sensille@gmx.net>
Reviewed-by: Jan Schmidt <list.btrfs@jan-o-sch.net>
Reviewed-by: Alex Lyakas <alex.bolshoy.btrfs@gmail.com>
Alexander Block [Wed, 20 Jun 2012 16:44:04 +0000 (18:44 +0200)]
Btrfs-progs: update ioctl.h to support btrfs send ioctl
Add btrfs_ioctl_send_args and BTRFS_IOC_SEND to ioctl.h
Signed-off-by: Alexander Block <ablock84@googlemail.com>
Alexander Block [Wed, 25 Jul 2012 16:01:24 +0000 (18:01 +0200)]
Btrfs-progs: update btrfs-progs for subvol uuid+times support
Update ctree.h and ioctl.h for the new uuid+times for subvolumes.
Signed-off-by: Alexander Block <ablock84@googlemail.com>
Alexander Block [Wed, 20 Jun 2012 16:43:23 +0000 (18:43 +0200)]
Btrfs-progs: print inode transid and dir item data field in debug-tree
Add printing of inode transid and dir item data field.
Signed-off-by: Alexander Block <ablock84@googlemail.com>
Alexander Block [Wed, 20 Jun 2012 16:42:19 +0000 (18:42 +0200)]
Btrfs-progs: update ioctl.h to support clone range ioctl
Added missing btrfs_ioctl_clone_range_args and BTRFS_IOC_CLONE_RANGE
to ioctl.h
Signed-off-by: Alexander Block <ablock84@googlemail.com>
Alexander Block [Mon, 25 Jun 2012 23:13:31 +0000 (01:13 +0200)]
Btrfs-progs: add BTRFS_IOC_SUBVOL_GET/SETFLAGS to ioctl.h
Btrfs send/receive and btrfs props needs this ioctl. This patch
requires a recent kernel with the "Btrfs: use _IOR for
BTRFS_IOC_SUBVOL_GETFLAGS" patch applied.
Signed-off-by: Alexander Block <ablock84@googlemail.com>
David Sterba [Fri, 6 Jul 2012 14:11:10 +0000 (10:11 -0400)]
btrfs-progs: mkfs: add option to skip trim
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Thu, 5 Jul 2012 18:58:51 +0000 (14:58 -0400)]
Btrfs: fix off by one in null termination
A recent commit was null terminating the root listing
strings one byte too short.
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Thu, 5 Jul 2012 15:35:42 +0000 (11:35 -0400)]
Merge branch 'for-chris' of git://github.com/idryomov/btrfs-progs into 0.20
Miao Xie [Thu, 23 Feb 2012 07:51:09 +0000 (15:51 +0800)]
Btrfs-progs, btrfs-map-logical: Fix typo in usage
The right option is 'o' not 'c'. And this tool is used for the block devices
on which there is a btrfs file system, so change "mount_point" to "device".
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Miao Xie [Thu, 23 Feb 2012 07:52:05 +0000 (15:52 +0800)]
Btrfs-progs, btrfs-corrupt-block: fix the wrong usage
The old usage is a copy of btrfs-map-logical, it's wrong, fix it.
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Akira Fujita [Fri, 16 Dec 2011 08:46:48 +0000 (17:46 +0900)]
Btrfs-progs: Fix manual of btrfs command
Usage of balancing btrfs is "btrfs filesystem balance",
not "btrfs device balance". And remove unneeded
usage of "btrfs filesystem defrag".
Also fix some typos and over 80 columns.
Signed-off-by: Akira Fujita <a-fujita@rs.jp.nec.com>
Phillip Susi [Mon, 9 Jan 2012 15:18:56 +0000 (10:18 -0500)]
btrfs-progs: document --rootdir mkfs switch
Signed-off-by: Phillip Susi <psusi@cfl.rr.com>
Phillip Susi [Mon, 9 Jan 2012 15:18:55 +0000 (10:18 -0500)]
btrfs-progs: removed extraneous whitespace from mkfs man page
There were extra spaces around some of the arguments in the man
page for mkfs.
Signed-off-by: Phillip Susi <psusi@cfl.rr.com>
Goffredo Baroncelli [Tue, 5 Jun 2012 17:26:34 +0000 (19:26 +0200)]
scrub_fs_info( ) file handle leaking
The function scrub_fs_info( ) closes and reopen a file handle
passed as argument, when a caller uses the file handle even after the
call.
The function scrub_fs_info( ) is updated to remove the file handle
argument, and instead uses a private own file handle.
The callers are updated to not pass the argument.
Shawn Bohrer [Sat, 26 May 2012 17:57:55 +0000 (12:57 -0500)]
btrfs-progs: Update resize documentation
The btrfs filesystem resize command defaults to only resizing the
filesystem for devid 1, and must have a devid passed in to resize the
filesystem for the other devices in the filesystem.
Additionally the documentation lacked information on how to actually
resize the underlying partition so this provides a little more detail.
Signed-off-by: Shawn Bohrer <shawn.bohrer@gmail.com>
Chris Samuel [Fri, 11 May 2012 12:55:17 +0000 (22:55 +1000)]
Fix "set-dafault" typo in cmds-subvolume.c
Andrei Popa reported that there were two typos of default as dafault,
this patch fixes those two typos up.
Signed-off-by: Chris Samuel <chris@csamuel.org>
Hubert Kario [Mon, 30 Apr 2012 23:54:08 +0000 (01:54 +0200)]
man: fix btrfs man page formatting
Signed-off-by: Hubert Kario <kario@wit.edu.pl>
Josef Bacik [Wed, 28 Mar 2012 18:20:52 +0000 (14:20 -0400)]
btrfs-progs: enforce block count on all devices in mkfs
I had a test that creates a 7gig raid1 device but it was ending up wonky
because the second device that gets added is the full size of the disk
instead of the limited size. So enforce the limited size on all disks
passed in at mkfs time, otherwise our threshold calculations end up wonky
when doing chunk allocations. Thanks,
Signed-off-by: Josef Bacik <josef@redhat.com>
Miao Xie [Thu, 23 Feb 2012 07:52:58 +0000 (15:52 +0800)]
Btrfs-progs: fix btrfsck's snapshot wrong "unresolved refs"
If the fs/file tree is not the parent of the snapshot, it is reasonable
that we can not find the relative reference and back reference. But btrfsck
doesn't consider this case, and reports "unresolved refs" message, it's wrong,
fix it.
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Jan Kara [Fri, 10 Feb 2012 10:49:19 +0000 (11:49 +0100)]
mkfs: Handle creation of filesystem larger than the first device
On Wed 08-02-12 22:05:26, Phillip Susi wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 02/08/2012 06:20 PM, Jan Kara wrote:
> > Thanks for your reply. I admit I was not sure what exactly size argument
> > should be. So after looking into the code for a while I figured it should
> > be a total size of the filesystem - or differently it should be size of
> > virtual block address space in the filesystem. Thus when filesystem has
> > more devices (or admin wants to add more devices later), it can be larger
> > than the first device. But I'm not really a btrfs developper so I might be
> > wrong and of course feel free to fix the issue as you deem fit.
>
> The size of the fs is the total size of the individual disks. When you
> limit the size, you limit the size of a disk, not the whole fs. IIRC,
> mkfs initializes the fs on the first disk, which is why it was using that
> size as the size of the whole fs, and then adds the other disks after (
> which then add their size to the total fs size ).
OK, I missed that btrfs_add_to_fsid() increases total size of the
filesystem. So now I agree with you. New patch is attached. Thanks for your
review.
> It might be nice if
> mkfs could take sizes for each disk, but it only seems to take one size
> for the initial disk.
Yes, but I don't see a realistic usecase so I don't think it's really
worth the work.
Honza
--
Jan Kara <jack@suse.cz>
SUSE Labs, CR
>From
e5f46872232520310c56327593c02ef6a7f5ea33 Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Fri, 10 Feb 2012 11:44:44 +0100
Subject: [PATCH] mkfs: Handle creation of filesystem larger than the first device
mkfs does not properly check requested size of the filesystem. Thus if the
requested size is larger than the first device, it happily creates larger
filesystem than a device it resides on which results in 'attemp to access
beyond end of device' messages from the kernel. So verify specified filesystem
size against the size of the first device.
CC: David Sterba <dsterba@suse.cz>
Signed-off-by: Jan Kara <jack@suse.cz>
Hubert Kario [Sun, 19 Feb 2012 20:11:46 +0000 (21:11 +0100)]
Fix segmentation fault when opening invalid file system
Signed-off-by: Hubert Kario <kario@wit.edu.pl>
Josef Bacik [Wed, 25 Apr 2012 18:22:32 +0000 (14:22 -0400)]
Btrfs-progs: make btrfs filesystem show <uuid> actually work
The btrfs filesystem show command is only actually searching for labels,
it's not searching for UUID's at all. This patch fixes that problem.
Thanks,
Signed-off-by: Josef Bacik <josef@redhat.com>
Jim Meyering [Fri, 20 Apr 2012 19:27:26 +0000 (21:27 +0200)]
mkfs: avoid heap-buffer-read-underrun for zero-length "size" arg
* mkfs.c (parse_size): ./mkfs.btrfs -A '' would read and possibly
write the byte before beginning of strdup'd heap buffer. All other
size-accepting options were similarly affected.
Reviewed-by: Josef Bacik <josef@redhat.com>
Jim Meyering [Fri, 20 Apr 2012 19:27:25 +0000 (21:27 +0200)]
avoid several strncpy-induced buffer overruns
* restore.c (main): Ensure strncpy-copied dir_name is NUL-terminated.
* btrfsctl.c (main): Likewise, for a command-line argument.
* utils.c (multiple functions): Likewise.
* btrfs-list.c (add_root): Likewise.
* btrfslabel.c (change_label_unmounted): Likewise.
* cmds-device.c (cmd_add_dev, cmd_rm_dev, cmd_scan_dev): Likewise.
* cmds-filesystem.c (cmd_resize): Likewise.
* cmds-subvolume.c (cmd_subvol_create, cmd_subvol_delete, cmd_snapshot):
Likewise.
Reviewed-by: Josef Bacik <josef@redhat.com>
Jim Meyering [Fri, 20 Apr 2012 19:27:24 +0000 (21:27 +0200)]
restore: don't corrupt stack for a zero-length command-line argument
Given a zero-length directory name, the trailing-slash removal
code would test dir_name[-1], and if it were found to be a slash,
would set it to '\0'.
Reviewed-by: Josef Bacik <josef@redhat.com>
Jim Meyering [Fri, 20 Apr 2012 19:27:23 +0000 (21:27 +0200)]
mkfs: use strdup in place of strlen,malloc,strcpy sequence
* mkfs.c (traverse_directory): No semantic change.
Reviewed-by: Josef Bacik <josef@redhat.com>
Jim Meyering [Wed, 11 Apr 2012 14:42:50 +0000 (16:42 +0200)]
btrfs_scan_one_dir: avoid use-after-free on error path
If we iterate the "goto again" loop, we've called "closedir(dirp)",
yet at the top of the loop, upon malloc failure we "goto fail",
where we test dirp and if non-NULL, call closedir(dirp) again.
* utils.c (btrfs_scan_one_dir): Clear "dirp" after closedir to avoid
use-after-free upon failed fullpath = malloc(...
Signed-off-by: Jim Meyering <meyering@redhat.com>