summaryrefslogtreecommitdiff
path: root/mkfs/rootdir.h
Commit message (Collapse)AuthorAge
* btrfs-progs: mkfs: Separate shrink from rootdirQu Wenruo2018-01-08
| | | | | | | | | | | | | Make --shrink a separate option for --rootdir, and change the default to off. The shrinking behaviour is not a commonly used feature but can be useful for creating minimal pre-filled images, in one step, without requiring to mount. Signed-off-by: Qu Wenruo <wqu@suse.com> [ update changelog and error messages ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: mkfs/rootdir: Shrink fs for rootdir optionQu Wenruo2018-01-08
| | | | | | | | | | Use the new dev extent based shrink method for rootdir option. This restores the original behaviour when --rootdir will create a minimal filesystem size. Signed-off-by: Qu Wenruo <wqu@suse.com> [ update changelog ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: mkfs/rootdir: Use over-reserve method to make size estimate easierQu Wenruo2018-01-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use an easier method to calculate the estimate device size for mkfs.btrfs --rootdir. The new method will over-estimate, but should ensure we won't encounter ENOSPC. It relies on the following data: 1) number of inodes -- for metadata chunk size 2) rounded up data size of each regular inode -- for data chunk size Total meta chunk size = round_up(nr_inode * (PATH_MAX * 3 + sectorsize), min_chunk_size) * profile_multiplier PATH_MAX is the maximum size possible for INODE_REF/DIR_INDEX/DIR_ITEM. Sectorsize is the maximum size possible for inline extent. min_chunk_size is 8M for SINGLE, and 32M for DUP, get from btrfs_alloc_chunk(). profile_multiplier is 1 for Single, 2 for DUP. Total data chunk size is much easier. Total data chunk size = round_up(total_data_usage, min_chunk_size) * profile_multiplier Total_data_usage is the sum of *rounded up* size of each regular inode use. min_chunk_size is 8M for SINGLE, 64M for DUP, get from btrfS_alloc_chunk(). Same profile_multiplier for meta. This over-estimate calculate is, of course inacurrate, but since we will later shrink the fs to its real usage, it doesn't matter much now. Signed-off-by: Qu Wenruo <wqu@suse.com> [ update comments ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: mkfs: move source dir size calculation to its own filesQu Wenruo2018-01-08
| | | | | | | | Also rename the function from size_sourcedir() to mkfs_size_dir(). Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: mkfs: move image creation of rootdir to its own filesQu Wenruo2018-01-08
In fact, --rootdir option is getting more and more independent from normal mkfs code. So move image creation function, make_image() and its related code to mkfs/rootdir.[ch], and rename the function to btrfs_mkfs_fill_dir(). Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>