summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* btrfs-progs: avoid double-free in __btrfs_map_blockEric Sandeen2013-02-27
| | | | | | | | | | __btrfs_map_block() can possibly do the goto again: loop after having allocated & freed the "multi" pointer. There are then a couple error conditions where it will attempt to again kfree the now non-NULL multi pointer. So before retrying, reset multi to NULL after we free it. Signed-off-by: Eric Sandeen <sandeen@redhat.com>
* btrfs-progs: btrfs_list_get_path_rootid error handlingEric Sandeen2013-02-27
| | | | | | | | | | | btrfs_list_get_path_rootid() tries to return a negative number on error, but it's a u64 function. Callers which test for a return < 0 will never see an error. Change the function to fill in the rootid via a pointer, and then return a simple int as error. Signed-off-by: Eric Sandeen <sandeen@redhat.com>
* btrfs-progs: Remove write-only var fdres in cmd_dev_stats()Eric Sandeen2013-02-27
| | | | | | | fdres is initialized to -1, then later tested, but never set. Just remove it. Signed-off-by: Eric Sandeen <sandeen@redhat.com>
* btrfs-progs: fix btrfs_get_subvol cut/paste errorEric Sandeen2013-02-27
| | | | | | | | | | | | | | | in btrfs_get_subvol(), there is a cut and paste error: if (ri->full_path) the_ri->full_path = strdup(ri->full_path); else the_ri->name = NULL; It should be setting the_ri->full_path to NULL here. Do it in a function instead of the cpoy & paste to avoid future errors. Signed-off-by: Eric Sandeen <sandeen@redhat.com>
* btrfs-progs: move btrfslabel.[c|h] stuff to utils.[c|h]Jeff Liu2013-02-26
| | | | | | | | | Clean btrfslabel.[c|h] out of the source tree and move those related functions to utils.[c|h]. CC: Gene Czarcinski <gene@czarc.net> Signed-off-by: Jie Liu <jeff.liu@oracle.com> Signed-off-by: David Sterba <dsterba@suse.cz>
* btrfs-progs: refactor check_label()Jeff Liu2013-02-26
| | | | | | | | | | | | | | | | Refactor check_label(). - Make it be static at first, this is a preparation step since we'll remove btrfslabel.[c|h] and move those functions from there to utils.[c|h], we can do pre-checking against the input label string with it. - Fix the label length check up from BTRFS_LABEL_SIZE to BTRFS_LABEL_SIZE - 1. - Kill the check of label contains an invalid character, see below commits for detail: 79e0e445fc2365e47fc7f060d5a4445d37e184b8 btrfs-progs: kill check for /'s in labels. Signed-off-by: Jie Liu <jeff.liu@oracle.com> CC: David Sterba <dsterba@suse.cz> CC: Gene Czarcinski <gene@czarc.net>
* Btrfs-progs: fix cmd_label_usage to reflect this change.Jeff Liu2013-02-26
| | | | | | | | Fix the command usage of "btrfs filesystem label" to reflect this change. i.e. so that we can get/set the label of a mounted filesystem against the mountpoint. Signed-off-by: Jie Liu <jeff.liu@oracle.com> Signed-off-by: Anand Jain <anand.jain@oracle.com>
* Btrfs-progs: Fix set_label_unmounted() with label length validationJeff Liu2013-02-26
| | | | | | | | | | Currently, we keeping silent if the label length is exceeding BTRFS_LABEL_SIZE - 1, and just truncating the characters beyond that. This patch make it return error and exit in this situation. Signed-off-by: Jie Liu <jeff.liu@oracle.com> Signed-off-by: Anand Jain <anand.jain@oracle.com>
* Btrfs-progs: Change the label of a mounted file systemJeff Liu2013-02-26
| | | | | | | | With this new ioctl(2), we can set/change the label for a mounted file system. It still does normal process for an umounted file system. Signed-off-by: Jie Liu <jeff.liu@oracle.com> Signed-off-by: Anand Jain <anand.jain@oracle.com>
* btrfsprogs: btrfstune support for extended inode refsMark Fasheh2013-02-21
| | | | | | | | This patch adds an option to btrfstune, '-r' which will enable the extended inode refs flag on the provided btrfs superblock. We don't have a disable option at the moment as that would require far more work. Signed-off-by: Mark Fasheh <mfasheh@suse.de>
* Btrfs-progs: fix segmentation fault of 'btrfs-debug-tree -e'Liu Bo2013-02-19
| | | | | | | | Due to some historical reasons, we remove 'printing leaf' part, which'd lead to 'Segmentation fault' of btrfs-debug-tree -e, this patch adds it back. Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
* btrfs-progs: require mkfs -f force option to overwrite filesystem or ↵Eric Sandeen2013-02-19
| | | | | | | | | | | | | | | | | | | | | | | | partition table The core of this is shamelessly stolen from xfsprogs. Use blkid to detect an existing filesystem or partition table on any of the target devices. If something is found, require the '-f' option to overwrite it, hopefully avoiding disaster due to mistyped devicenames, etc. # mkfs.btrfs /dev/sda1 WARNING! - Btrfs v0.20-rc1-59-gd00279c-dirty IS EXPERIMENTAL WARNING! - see http://btrfs.wiki.kernel.org before using /dev/sda1 appears to contain an existing filesystem (xfs). Use the -f option to force overwrite. # This does introduce a requirement on libblkid. Signed-off-by: Eric Sandeen <sandeen@redhat.com>
* btrfs-progs: Fix pointer math in __ino_to_path_fdMark Fasheh2013-02-19
| | | | | | | | | We are casting an array of u64 values into a char ** array so when we dereference this array (as a char **) on a 32 bit system we're then re-casting that back to a 32 bit value. This causes problems when we try to print those strings. Signed-off-by: Mark Fasheh <mfasheh@suse.de>
* Btrfs-progs: check out if the swap deviceTsutomu Itoh2013-02-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, the following commands succeed. # cat /proc/swaps Filename Type Size Used Priority /dev/sda3 partition 8388604 0 -1 /dev/sdc8 partition 9765884 0 -2 # mkfs.btrfs /dev/sdc8 WARNING! - Btrfs v0.20-rc1-165-g82ac345 IS EXPERIMENTAL WARNING! - see http://btrfs.wiki.kernel.org before using fs created label (null) on /dev/sdc8 nodesize 4096 leafsize 4096 sectorsize 4096 size 9.31GB Btrfs v0.20-rc1-165-g82ac345 # btrfs fi sh /dev/sdc8 Label: none uuid: fc0bdbd0-7eed-460f-b4e9-131273b66df2 Total devices 1 FS bytes used 28.00KB devid 1 size 9.31GB used 989.62MB path /dev/sdc8 Btrfs v0.20-rc1-165-g82ac345 # But we should check out the swap device. Fixed it. Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com> Tested-by: David Sterba <dsterba@suse.cz>
* btrfs-progs: make libbtrfs usable from C++Arvin Schnell2013-02-19
| | | | | | | | Please find attached a patch to make the new libbtrfs usable from C++ (at least for the parts snapper will likely need). Signed-off-by: Arvin Schnell <aschnell@suse.de> Signed-off-by: Mark Fasheh <mfasheh@suse.de>
* Btrfs-progs: make 0 a valid usage filter argumentIlya Dryomov2013-02-13
| | | | | | | | This is a progs counterpart to a "Btrfs: allow for selecting only completely empty chunks". usage=0 now means "select only only completely empty chunks and nothing else". Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
* btrfs-progs: add send-testMark Fasheh2013-02-13
| | | | | | | | send-test.c links against libbtrfs and uses the send functionality provided to decode and print a send stream to the console. Signed-off-by: Mark Fasheh <mfasheh@suse.de> Signed-off-by: David Sterba <dsterba@suse.cz>
* btrfs-progs: Add support for BTRFS_SEND_FLAG_NO_FILE_DATAMark Fasheh2013-02-12
| | | | | | | | | | | The flag and command are synced from kernel to user. Also, this patch adds a callback for the BTRFS_SEND_C_UPDATE_EXTENT in struct btrfs_send_ops. read_and_process_cmd() is updated to decode BTRFS_SEND_C_UPDATE_EXTENT and send the values through the right callback. I did not add a callback definition to cmds-receive.c as that code never uses BTRFS_SEND_FLAG_NO_FILE_DATA. Signed-off-by: Mark Fasheh <mfasheh@suse.de>
* Btrfs-progs: add restore command to btrfsIan Kumlien2013-02-12
| | | | | | | | Add 'btrfs restore' command which previously existed as a separate utility btrfs-restore. Signed-off-by: Ian Kumlien <pomac@demius.net> Signed-off-by: David Sterba <dsterba@suse.cz>
* Btrfs-progs: restore.c -> cmds-restore.cIan Kumlien2013-02-12
| | | | | | | The btrfs-restore functionality will be integrated in btrs as "btrfs restore" Signed-off-by: Ian Kumlien <pomac@demius.net>
* btrfs-progs: build btrsfck to keep compatibilityDavid Sterba2013-02-12
| | | | | | | The command 'btrfsck' is commonly used and we should build it by default. Signed-off-by: David Sterba <dsterba@suse.cz>
* Btrfs-progs: add btrfsck name detection to btrfsIlya Dryomov2013-02-12
| | | | | | | | | | This patch adds a busybox-style name detection for the name "btrfsck" to btrfs utility. The idea is to maintain backwards compatibility by linking btrfsck to btrfs and have btrfs invoke the check sub-command when called through the btrfsck link. This has been suggested on the mailing list and approved by Dave and Chris. Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
* Btrfs-progs: move crc32c optimization initIlya Dryomov2013-02-12
| | | | | | | Don't call crc32c_optimization_init() until we know that a command is actually going to be invoked. Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
* Btrfs-progs: add btrfsck functionality to btrfsIan Kumlien2013-02-12
| | | | | | | | This patch includes the functionality of btrfs, it's found as "btrfs check". Signed-off-by: Ian Kumlien <pomac@demius.net> Signed-off-by: David Sterba <dsterba@suse.cz>
* Btrfs-progs: Rename btrfsck.c -> cmds-check.cIan Kumlien2013-02-12
| | | | | | In preparation for merging btrfsck functionality in to btrfs. Signed-off-by: Ian Kumlien <pomac@demius.net>
* Btrfs-progs: -U_FORTIFY_SOURCE before -DIan Kumlien2013-02-12
| | | | | | | | | | My builds are cluttered with: <command-line>:0:0: warning: "_FORTIFY_SOURCE" redefined [enabled by default] Which makes it hard to tell if something breaks or not. Signed-off-by: Ian Kumlien <pomac@demius.net>
* Btrfs-progs: add static compile targetIan Kumlien2013-02-12
| | | | | | | | | | | | | | Sometimes, when you least expect it, a static binary is what you need to rescue your data... Or just get a good enough handle on things to make it work again ;) "make static" is a gift to you, dear user with filesystem problems! Anyway, on a more serious note, changed the cflags and ldflags so that we create a smaller binary, 1.1MB stripped on my 64 bit system (2.7MB with debug data) Signed-off-by: Ian Kumlien <pomac@demius.net>
* btrfs-progs: code cleanup for root-tree.c/btrfs_del_rootWang Sheng-Hui2013-02-07
| | | | | | | Remove the redundant if check on the condition ret > 0. Leave BUG_ON check here. Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
* Btrfs-progs: return an error if we can't find an fs rootJosef Bacik2013-02-07
| | | | | | | | | | | Instead of doing a BUG_ON() if we fail to find the last fs root just return an error so the callers can deal with it how they like. Also we need to actually return an error if we can't find the latest root so that the error handling works. With this btrfsck was able to deal with a file system that was missing a root item but still had extents that referred back to the root. Thanks, Signed-off-by: Josef Bacik <jbacik@fusionio.com>
* Btrfs-progs: fix double free of extent bufferJosef Bacik2013-02-07
| | | | | | | Noticed this while looking for an segfault related to our eb cache in btrfsck. We free the eb in out: so we don't need this extra free. Thanks, Signed-off-by: Josef Bacik <jbacik@fusionio.com>
* Btrfs-progs: handle errors reading fs rootsJosef Bacik2013-02-07
| | | | | | | | | | A user had a problem where btrfsck would bail out because it was finding extents for a snapshot that had been deleted but not entirely cleaned up. We can handle this case fine, we just need to report an error properly. This patch allowed btrfsck to continue and eventually fix his file system. Thanks, Signed-off-by: Josef Bacik <jbacik@fusionio.com>
* btrfs-progs: remove unused bit-radix.[ch] filesEric Sandeen2013-02-07
| | | | | | | fd53de4d Drop bit-radix.[ch] files removed the files from the Makefile, but not the files themselves. Signed-off-by: Eric Sandeen <sandeen@redhat.com>
* Btrfs-progs print more informative error when we fail to open a deviceEric Sandeen2013-02-06
| | | | | | | | | print more informative error when we fail to open a device If open() fails, we should let the user know why it failed. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Gene Czarcinski <gene@czarc.net>
* Merge branch 'cov-fixes-v1-integration-20130201' of ↵Chris Mason2013-02-06
|\ | | | | | | http://git.zabbo.net/cgit/btrfs-progs into merged
| * btrfs-progs: initialize pipefd[] for error pathEric Sandeen2013-02-05
| | | | | | | | | | | | | | | | | | | | | | Several goto out; paths will end up doing i.e. if (pipefd[0]) close(pipefd[0]); but we get there with uninitialized values in many cases. Signed-off-by: Eric Sandeen <sandeen@redhat.com>
| * btrfs-progs: fix overflows of ioctl name argsEric Sandeen2013-02-05
| | | | | | | | | | | | | | | | | | 3 places where we copy pathnames into ioctl arguments were not limited to the destination name size, and could overflow. Use the new strncpy_null() macro to make this safe. Signed-off-by: Eric Sandeen <sandeen@redhat.com>
| * btrfs-progs: simplify ioctl name copy and null terminationEric Sandeen2013-02-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the places where we copy a string into the name member of btrfs_ioctl_vol_args or btrfs_ioctl_vol_args_v2, we use strncopy (to not overflow the name array) and then set the last position to the null character. Howver, in both cases the arrays are defined with: char name[MAX+1]; hence the last array position is name[MAX]. In most cases, we now insert the null at name[MAX-1] which deprives us of one useful character. Even the above isn't consistent through the code, so make some helper code to make it simple, i.e. strncpy_null(dest, src) which automatically does the right thing based on the size of dest. Thanks to Zach Brown for the macro suggestion. Signed-off-by: Eric Sandeen <sandeen@redhat.com>
| * btrfs-progs: fix name lengths in cmd_subvol_createEric Sandeen2013-02-05
| | | | | | | | | | | | | | | | | | | | | | | | | | cmd_subvol_create() calls either BTRFS_IOC_SUBVOL_CREATE or BTRFS_IOC_SUBVOL_CREATE_V2 depending on whether or not inherit is set. However, these 2 ioctls have different args structures with different length name[] members. In the BTRFS_IOC_SUBVOL_CREATE case, the arg is btrfs_ioctl_vol_args, with a BTRFS_PATH_NAME_MAX length name, not a BTRFS_SUBVOL_NAME_MAX length name. Signed-off-by: Eric Sandeen <sandeen@redhat.com>
| * btrfs-progs: remove duplicate __setup_rootEric Sandeen2013-02-05
| | | | | | | | | | | | | | | | | | __setup_root() was present in find-root.c as well as disk-io.c. No need for the cut and paste, just use the one in disk-io.c Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Zach Brown <zab@redhat.com>
| * btrfs-progs: fix mdresotre typo in function namesEric Sandeen2013-02-05
| | | | | | | | | | | | | | | | "mdresotre" sounds like it might be French, but most likely it's a misspelling of mdrestore. Fix it. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Zach Brown <zab@redhat.com>
| * btrfs-progs: zero out inspect ioctl argsEric Sandeen2013-02-05
| | | | | | | | | | | | | | | | Mostly just to keep things like coverity happy about potentially uninitialized structure members, since it doesn't grok the ioctl. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Zach Brown <zab@redhat.com>
| * btrfs-progs: don't use closed fdEric Sandeen2013-02-05
| | | | | | | | | | | | | | | | | | | | In the case that btrfs scrub cancel is given a device name, we close the file handle, and then pass it to check_mounted_where() which eventually preads from that (now closed) fd. Fix the logic so that we close & re-open the discovered mountpoint properly. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Zach Brown <zab@redhat.com>
| * btrfs-progs: don't double-close prg_fdEric Sandeen2013-02-05
| | | | | | | | | | | | | | | | | | If scrub start discovers that scrub is already running, we need to set prg_fd to -1 before goto out, or we'll try to close it again in the error path. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Zach Brown <zab@redhat.com>
| * btrfs-progs: don't leak fds in logical resolveZach Brown2013-02-05
| | | | | | | | Signed-off-by: Zach Brown <zab@redhat.com>
| * btrfs-progs: close fd in inode resolveZach Brown2013-02-05
| | | | | | | | Signed-off-by: Zach Brown <zab@redhat.com>
| * btrfs-progs: don't leak multi-bio in find_root()Zach Brown2013-02-05
| | | | | | | | | | | | It wasn't freed if it didn't find metadata. Signed-off-by: Zach Brown <zab@redhat.com>
| * btrfs-progs: don't leak inherit on errorsZach Brown2013-02-05
| | | | | | | | | | | | A few paths returned errors before freeing their inherit allocation. Signed-off-by: Zach Brown <zab@redhat.com>
| * btrfs-progs: close ioctl fd in find newZach Brown2013-02-05
| | | | | | | | Signed-off-by: Zach Brown <zab@redhat.com>
| * btrfs-progs: don't leak fd in resizeZach Brown2013-02-05
| | | | | | | | | | | | | | Argument validation failed to close the fd that was opened. So check the arguments before opening anything. Signed-off-by: Zach Brown <zab@redhat.com>
| * btrfs-progs: free path before returningZach Brown2013-02-05
| | | | | | | | | | | | | | One of the return statements in search_dir() didn't free everything it was supposed to. Signed-off-by: Zach Brown <zab@redhat.com>