summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* btrfs-progs: convert: move reiserfs struct definitions to headerDavid Sterba2017-09-08
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: convert: move and rename dev_t helpers to common fileDavid Sterba2017-09-08
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: convert: move acl helper to common source fileDavid Sterba2017-09-08
| | | | | | There were 2 copies of ext2_acl_count and acl_ea_size. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: convert: move duplicated acl code to common headerDavid Sterba2017-09-08
| | | | | | The ACL types and macros are same for both source filesystem. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: docs: update btrfs-convert regarding reiserfsDavid Sterba2017-09-08
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: add support for converting reiserfsJeff Mahoney2017-09-08
| | | | | | | | | | Many of the test cases for convert apply regardless of what the source file system is and using ext4 is sufficient. I've included several test cases that are reiserfs-specific. Signed-off-by: Jeff Mahoney <jeffm@suse.com> [ patch split from the previous one, minor cleanups in common.convert ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: convert: add support for converting reiserfsJeff Mahoney2017-09-08
| | | | | | | | | | | | | This patch adds support to convert reiserfs file systems in-place to btrfs. It will convert extended attribute files to btrfs extended attributes, translate ACLs, coalesce tails that consist of multiple items into one item, and convert tails that are too big into indirect files. This requires that libreiserfscore 3.6.27 be available. Signed-off-by: Jeff Mahoney <jeffm@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Use named constants for common sizesNikolay Borisov2017-09-08
| | | | | | | | | There multiple places where we use well-known sizes - 1,8,16,32 megabytes. We also have them defined as constants in the sizes.h header. So let's use them. No functional changes. Signed-off-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: mkfs: Replace number with enumGu Jinxiang2017-09-08
| | | | | | | | | For code maintainability and scalability, replace hardcoded constant with a meaningful enum. Signed-off-by: Gu Jinxiang <gujx@cn.fujitsu.com> [ add MKFS_ prefix ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: fix _is_file_or_command detectionDavid Sterba2017-08-25
| | | | | | | | type -p returns an empty string for nonexistent commands, but the -f test on an empty string does not behave the same on all shells. To be safe, use the quoted value. Signed-off-by: David Sterba <dsterba@suse.com>
* Btrfs progs v4.12.1David Sterba2017-08-25
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: update CHANGES for v4.12.1David Sterba2017-08-24
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: docs: add figure 1 to btrfs quota docMisono, Tomohiro2017-08-24
| | | | | | | | | | The document of btrfs quota is missing figure 1. I notice the body is copy of http://sensille.com/qgroups.pdf (which is linked from https://btrfs.wiki.kernel.org/index.php/Quota_support), and insert the figure. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: docs: add missing short option for qroup-reportMisono, Tomohiro2017-08-24
| | | | | | | | | | Usage info of "btrfs check" shows "-Q|--qgroup-report" (and first patch enables -Q), but the document only shows "--qgroup-report". Therefore add -Q to the doc. Signed-off-by: Tomohiro Misono <misono.tomohiro@jp.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: dump-super: add missing long option bytenr to getoptMisono, Tomohiro2017-08-24
| | | | | | | This fixes "btrfs inspect-internal dump-super --bytenr" Signed-off-by: Tomohiro Misono <misono.tomohiro@jp.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: recieve: add missing short option E to getoptMisono, Tomohiro2017-08-24
| | | | | | | This fixes "btrfs receive -E". Signed-off-by: Tomohiro Misono <misono.tomohiro@jp.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: check: add missing short options E and Q to getoptMisono, Tomohiro2017-08-24
| | | | | | | | | | I found some btrfs commands options are not working because of inappropriate getopt_long() setting. This fixes "btrfs check -Q/-E" Signed-off-by: Tomohiro Misono <misono.tomohiro@jp.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: move command definitions to commands.hDavid Sterba2017-08-24
| | | | | | | There are some trivial helpers, we can group the command declarations in one place. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: catch bad usage of run_mustfailDavid Sterba2017-08-24
| | | | | | | This function has an extra argument and can get forgotten, add a sanity check so the bad usage can be caught during development. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: scan results for commands not foundDavid Sterba2017-08-24
| | | | | | | In case of typos or messed up command execution, we'd like to be able to catch that. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: fsck-test: case for corrupted dir item nameSu Yue2017-08-24
| | | | | | | | | | In this test case, all name in dir_item, dir_index, inode_ref are corrupted to another one. btrfs check should report errors about the corrupted dir_item but btrfs can't repair the case now. Signed-off-by: Su Yue <suy.fnst@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: check: verify dir item name and hash in lowmem modeSu Yue2017-08-24
| | | | | | | | | | | | Although lowmem mode can detect name and hash mismatch in dir_item, it's done by checking inode_ref to expose such problem. This patch will enhance dir_item check, by also comparing name and hash when checking dir_items. Reported-by: Filippe LeMarchand <gasinvein@gmail.com> Signed-off-by: Su Yue <suy.fnst@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: check: verify name in dir_item for original modeSu Yue2017-08-24
| | | | | | | | | | | | | | | | | | | | | | | | In original mode, we don't check if the name in dir_item matches the hash in key.offset. In the following case, original mode will report nothing wrong while lowmem mode will detect the name and hash mismatch. ------ item 72 key (79177 DIR_ITEM 54846528) itemoff 12380 itemsize 88 location key (4222342 INODE_ITEM 0) type FILE transid 170929 data_len 0 name_len 14 name: deprecated.sxt location key (13590433 INODE_ITEM 0) type FILE transid 796448 data_len 0 name_len 14 name: deprecated.txt ------ In above case, hash of "deprecated.txt" matches with 54846528, while hash of "deprecated.sxt" should be 2008317993. Reported-by: Filippe LeMarchand <gasinvein@gmail.com> Signed-off-by: Su Yue <suy.fnst@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: fix typo in convert-tests/008-readonly-imageJeff Mahoney2017-08-24
| | | | | | | | The dd in convert-tests/008-readonly-image is expected to fail, so there being a typo in the file name has gone unnoticed. Signed-off-by: Jeff Mahoney <jeffm@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: convert: use search_cache_extent in migrate_one_reserved_rangeJeff Mahoney2017-08-24
| | | | | | | | | | | | | | | | | | | | | | | When we are looking for extents in migrate_one_reserved_range, it's likely that there will be multiple extents that fall into the 0-1MB range. If lookup_cache_extent is called with a range that covers multiple cache entries, it will return the first entry it encounters while searching from the top of the tree that happens to fall in that range. That means that we can end up skipping regions within that range, resulting in a file system image that can't be rolled back since it wasn't all migrated properly. This is reproducible using convert-tests/008-readonly-image. There was a range from 0-160kB, but the only entry that was returned began at ~ 280kB. The fix is to use search_cache_extent to iterate through multiple regions within that range. Signed-off-by: Jeff Mahoney <jeffm@suse.com> Reviewed-by: Qu Wenruo <quwenruo.btrfs@gmx.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: convert: add missing newlines for printfsJeff Mahoney2017-08-24
| | | | | | | | | There are two printfs with missing newlines that end up making the output wonky. Signed-off-by: Jeff Mahoney <jeffm@suse.com> Reviewed-by: Qu Wenruo <quwenruo.btrfs@gmx.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: convert: properly handle reserved ranges while iterating filesJeff Mahoney2017-08-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 522ef705e38 (btrfs-progs: convert: Introduce function to calculate the available space) changed how we handle migrating file data so that we never have btrfs space associated with the reserved ranges. This works pretty well and when we iterate over the file blocks, the associations are redirected to the migrated locations. This commit missed the case in block_iterate_proc where we just check for intersection with a superblock location before looking up a block group. intersect_with_sb checks to see if the range intersects with a stripe containing a superblock but, in fact, we've reserved the full 0-1MB range at the start of the disk. So a file block located at e.g. 160kB will fall in the reserved region but won't be excepted in block_iterate_block. We ultimately hit a BUG_ON when we fail to look up the block group for that location. This is reproducible using convert-tests/003-ext4-basic. The fix is to have intersect_with_sb and block_iterate_proc understand the full size of the reserved ranges. Since we use the range to determine the boundary for the block iterator, let's just return the boundary. 0 isn't a valid boundary and means that we proceed normally with block group lookup. Cc: Qu Wenruo <quwenruo.btrfs@gmx.com> Signed-off-by: Jeff Mahoney <jeffm@suse.com> Reviewed-by: Qu Wenruo <quwenruo.btrfs@gmx.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Use already defined BTRFS_BLOCK_GROUP_PROFILE_MASKNikolay Borisov2017-08-24
| | | | | | | Instead of opencoding it. No functional changes. Signed-off-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: mkfs: Make in-place exit to a common exit blockGu Jinxiang2017-08-24
| | | | | | | | Replace in-place exit with a common exit block in the main function. Signed-off-by: Gu Jinxiang <gujx@cn.fujitsu.com> [ update changelog ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: mkfs: delete un-used parameter fdGu Jinxiang2017-08-24
| | | | | | | | Parameter fd is not used in function make_image and traverse_directory of mkfs. Delete it. Signed-off-by: Gu Jinxiang <gujx@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Allow inspect dump-tree to show specified tree block even some ↵Qu Wenruo2017-08-24
| | | | | | | | | | | | | | | | | | | tree roots are corrupted For btrfs inspect-internal dump-tree, if we use "-b" parameter to show specified tree block, then we don't really need extra tree roots. Only chunk root is needed to build up the whole chunk mapping so we can read tree blocks. This patch will add __OPEN_CTREE_RETURN_CHUNK_ROOT flag when show speicifed tree block. So even root tree is corrupted, we can still use inspect-internal dump-tree to do some debugging. Reported-by: Zirconium Hacker <jared.e.vb@gmail.com> Signed-off-by: Qu Wenruo <quwenruo.btrfs@gmx.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Doc: Fix asciidoc grammar of btrfs-rescueQu Wenruo2017-08-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | Code block of kernel backtrace lacks leading change line, causing the following man page result: ------ One can determine whether zero-log is needed according to the kernel backtrace: ? replay_one_dir_item+0xb5/0xb5 [btrfs] ? walk_log_tree+0x9c/0x19d [btrfs] ? btrfs_read_fs_root_no_radix+0x169/0x1a1 [btrfs] ? btrfs_recover_log_trees+0x195/0x29c [btrfs] ? replay_one_dir_item+0xb5/0xb5 [btrfs] ? btree_read_extent_buffer_pages+0x76/0xbc [btrfs] ? open_ctree+0xff6/0x132c [btrfs] + If the errors are like above, then zero-log should be used to clear the log and the filesystem may be mounted normally again. The keywords ------ Not only "+" is rendered as is, but also wrong indent. Fix it by adding change line before code block. Signed-off-by: Qu Wenruo <quwenruo.btrfs@gmx.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Specify C standard to gnu90 explicitlyQu Wenruo2017-08-24
| | | | | | | | | | | | | | | | | | Different C compilers have different default language standard. This sometimes causes problem on different system. For distribution like CentOS/RHEL7, its gcc is still 4.8 and will report error for c90 style declaration, while most developers are using newer gcc which will just ignore it. This makes us hard to detect such language standard problem. This patch will specify standard to gnu90 explicitly to avoid such problem. Gnu90 is a good mix of c90 while provide a lot of useful gnu extension, and is supported by all modern gcc and clang. Reported-by: Marco Lorenzo Crociani <marcoc@prismatelecomtesting.com> Signed-off-by: Qu Wenruo <quwenruo.btrfs@gmx.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: kernel-lib: add generated tables.cDavid Sterba2017-08-24
| | | | | | | | | The contents of tables.c hasn't changed for more than 15 years, we don't expect any changes to current contents. New tables might be still added, in that case the file should be regenerated using the included mktables tool and updated. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: build: do not regenerate kernel-lib/tables.cDavid Sterba2017-08-24
| | | | | | | | | As reported in https://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg66765.html cross-compilation does not work very well with current tables.c. We can simpy keep the pergenerated file in the repository and update if needed. Signed-off-by: David Sterba <dsterba@suse.com>
* Btrfs progs v4.12David Sterba2017-07-28
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: update CHANGES for v4.12David Sterba2017-07-26
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: docs: update wording for compression mount optionsDavid Sterba2017-07-24
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: Use '-t btrfs' mount option in testsAdam Buchbinder2017-07-20
| | | | | | | | Without it, mount (at least from util-linux 2.20.1) tries (and fails) to mount some filesystems as NTFS. Signed-off-by: Adam Buchbinder <abuchbinder@google.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: use separate helper for mounting convert filesystemsDavid Sterba2017-07-20
| | | | | | | | We'll enforce the btrfs type for mount everwhere so we must provide a way to mount converted filesystems. Add a new helper that will try to mount the given type. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: enhance API to request type of the converted filesystemDavid Sterba2017-07-20
| | | | | | | We'll use mount -t $fstype later on, extend the API so we don't have to parse the type from other parameters. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: docs: adjust wording for subvol deleteDavid Sterba2017-07-20
| | | | | | Slightly update the text about deletion after the discussion on IRC. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: docs: enhance documentation of 'btrfs device ready'David Sterba2017-07-20
| | | | | | | | There were questions raised about the purpose of the 'dev ready' command. Link: https://marc.info/?l=linux-btrfs&m=149944574207325 Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: docs: move deprecated mount option to own sectionDavid Sterba2017-07-20
| | | | | | | | - alloc_start - recovery - subvolrootid Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: subvol show: add support to search subvolume by rootid or uuidAnand Jain2017-07-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unless the top level is mounted there is no way to know the details of all the subvolume. For example: mount -o subvol=sv1/newsv1 /dev/sdb /btrfs btrfs su list /btrfs ID 257 gen 12 top level 5 path sv1 ID 258 gen 9 top level 257 path sv1/snap ID 259 gen 11 top level 257 path sv1/newsv1 You can't subvol show for sv1 and sv1/snap as its paths aren't accessible to the user unless the its top level is mounted. This patch adds two new options to the existing btrfs subvol show cli. They are --rootid/-r or --uuid/-u, with this now the user will be able to look for a subvolume using the rootid OR the uuid. ./btrfs su show -r 257 /btrfs sv1 Name: sv1 UUID: 30129358-c69d-3e4a-a662-29509cc69c95 Parent UUID: - Received UUID: - Creation time: 2017-07-11 20:32:57 +0800 Subvolume ID: 257 Generation: 12 Gen at creation: 7 Parent ID: 5 Top level ID: 5 Flags: - Snapshot(s): sv1/snap Signed-off-by: Anand Jain <anand.jain@oracle.com> [ minor adjustments in the help text ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: build: Enable ThreadSanitizer, using D=tsanAdam Buchbinder2017-07-20
| | | | | | | | Tested with clang-3.9. We have to enable PIE, (https://clang.llvm.org/docs/ThreadSanitizer.html) Signed-off-by: Adam Buchbinder <abuchbinder@google.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Fix an infinite loop in btrfs_next_bgJustin Maggard2017-07-20
| | | | | | | | | | | | | I've run into a couple filesystems where btrfs-find-root would spin indefinitely. If the first cache extent start location is 0, we end up in an infinite loop in btrfs_next_bg(). Fix it by checking for that situation, and jumping to the next bg if necessary. Fixes: e2e0dae9 (btrfs-progs: volume: Fix a bug causing btrfs-find-root to skip first chunk) Signed-off-by: Justin Maggard <jmaggard@netgear.com> Signed-off-by: David Sterba <dsterba@suse.com>
* Btrfs-progs: fix infinite loop in find_free_extentLiu Bo2017-07-20
| | | | | | | | | | | If the found %ins is crossing a stripe len, ie. BTRFS_STRIPE_LEN, we'd search again with a stripe-aligned %search_start. The current code calculates %search_start by adding a wrong offset, in order to fix it, the start position of the block group should be taken, otherwise, it'll end up with looking at the same block group forever. Signed-off-by: Liu Bo <bo.li.liu@oracle.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Tighten integer types in print-treeAdam Buchbinder2017-07-20
| | | | | | | | | There are likely more places where the wrong size types are used, but these tripped Clang's warnings because they eventually get passed to printf. Signed-off-by: Adam Buchbinder <abuchbinder@google.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: Fix missing internal deps in check and misc testsAdam Buchbinder2017-07-20
| | | | | | | | | Doing a straight 'make test' would fail because some misc and fsck tests require particular tools to already be built. Add dependencies at the Makefile and shell-script level. Signed-off-by: Adam Buchbinder <abuchbinder@google.com> Signed-off-by: David Sterba <dsterba@suse.com>