diff --git a/.gitignore b/.gitignore index 7e6c738..153727d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /btrfs-progs-v3.14.tar.xz /btrfs-progs-v3.14.1.tar.xz /btrfs-progs-v3.14.2.tar.xz +/btrfs-progs-v3.16.tar.xz diff --git a/btrfs-progs-3.14.2-mkfs-set-uuid.patch b/btrfs-progs-3.14.2-mkfs-set-uuid.patch deleted file mode 100644 index bc9c2b8..0000000 --- a/btrfs-progs-3.14.2-mkfs-set-uuid.patch +++ /dev/null @@ -1,221 +0,0 @@ -From: Eric Sandeen -Date: Wed, 14 May 2014 17:39:07 +0000 (-0500) -Subject: btrfs-progs: mkfs: allow UUID specification at mkfs time -X-Git-Url: http://repo.or.cz/w/btrfs-progs-unstable/devel.git/commitdiff_plain/a03901849f868c65f845325fcaeb3d25c6896759 - -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 -[converted help to asciidoc] -Signed-off-by: David Sterba ---- - -Index: btrfs-progs-v3.14.2/Documentation/mkfs.btrfs.txt -=================================================================== ---- btrfs-progs-v3.14.2.orig/Documentation/mkfs.btrfs.txt -+++ btrfs-progs-v3.14.2/Documentation/mkfs.btrfs.txt -@@ -21,6 +21,7 @@ $$[-s|--sectorsize ]$$ - $$[-r|--rootdir ]$$ - $$[-K|--nodiscard]$$ - $$[-O|--features [,...]]$$ -+$$[-U|--uuid ]$$ - $$[-h]$$ - $$[-V|--version]$$ - $$ [...]$$ -@@ -109,6 +110,10 @@ supported by old kernels. - To see all features run:::: - mkfs.btrfs -O list-all - -+-U|--uuid :: -+Create the filesystem with the specified UUID, which must not already exist on -+the system. -+ - -V|--version:: - Print the *mkfs.btrfs* version and exit. - -Index: btrfs-progs-v3.14.2/btrfs-convert.c -=================================================================== ---- btrfs-progs-v3.14.2.orig/btrfs-convert.c -+++ btrfs-progs-v3.14.2/btrfs-convert.c -@@ -2240,7 +2240,7 @@ static int do_convert(const char *devnam - goto fail; - } - ret = make_btrfs(fd, devname, ext2_fs->super->s_volume_name, -- blocks, total_bytes, blocksize, blocksize, -+ NULL, blocks, total_bytes, blocksize, blocksize, - blocksize, blocksize, 0); - if (ret) { - fprintf(stderr, "unable to create initial ctree: %s\n", -Index: btrfs-progs-v3.14.2/mkfs.c -=================================================================== ---- btrfs-progs-v3.14.2.orig/mkfs.c -+++ btrfs-progs-v3.14.2/mkfs.c -@@ -288,6 +288,7 @@ static void print_usage(void) - fprintf(stderr, "\t -r --rootdir the source directory\n"); - fprintf(stderr, "\t -K --nodiscard do not perform whole device TRIM\n"); - fprintf(stderr, "\t -O --features comma separated list of filesystem features\n"); -+ fprintf(stderr, "\t -U --uuid specify the filesystem UUID\n"); - fprintf(stderr, "\t -V --version print the mkfs.btrfs version and exit\n"); - fprintf(stderr, "%s\n", BTRFS_BUILD_VERSION); - exit(1); -@@ -351,6 +352,7 @@ static struct option long_options[] = { - { "rootdir", 1, NULL, 'r' }, - { "nodiscard", 0, NULL, 'K' }, - { "features", 1, NULL, 'O' }, -+ { "uuid", 0, NULL, 'U' }, - { NULL, 0, NULL, 0} - }; - -@@ -1273,11 +1275,12 @@ int main(int ac, char **av) - int dev_cnt = 0; - int saved_optind; - char estr[100]; -+ char *fs_uuid = NULL; - u64 features = DEFAULT_MKFS_FEATURES; - - while(1) { - int c; -- c = getopt_long(ac, av, "A:b:fl:n:s:m:d:L:O:r:VMK", -+ c = getopt_long(ac, av, "A:b:fl:n:s:m:d:L:O:r:U:VMK", - long_options, &option_index); - if (c < 0) - break; -@@ -1346,6 +1349,9 @@ int main(int ac, char **av) - source_dir = optarg; - source_dir_set = 1; - break; -+ case 'U': -+ fs_uuid = optarg; -+ break; - case 'K': - discard = 0; - break; -@@ -1368,6 +1374,20 @@ int main(int ac, char **av) - "The -r option is limited to a single device\n"); - exit(1); - } -+ -+ if (fs_uuid) { -+ uuid_t dummy_uuid; -+ -+ if (uuid_parse(fs_uuid, dummy_uuid) != 0) { -+ fprintf(stderr, "could not parse UUID: %s\n", fs_uuid); -+ exit(1); -+ } -+ if (!test_uuid_unique(fs_uuid)) { -+ fprintf(stderr, "non-unique UUID: %s\n", fs_uuid); -+ exit(1); -+ } -+ } -+ - while (dev_cnt-- > 0) { - file = av[optind++]; - if (is_block_device(file)) -@@ -1514,7 +1534,7 @@ int main(int ac, char **av) - - process_fs_features(features); - -- ret = make_btrfs(fd, file, label, blocks, dev_block_count, -+ ret = make_btrfs(fd, file, label, fs_uuid, blocks, dev_block_count, - nodesize, leafsize, - sectorsize, stripesize, features); - if (ret) { -Index: btrfs-progs-v3.14.2/utils.c -=================================================================== ---- btrfs-progs-v3.14.2.orig/utils.c -+++ btrfs-progs-v3.14.2/utils.c -@@ -93,12 +93,41 @@ static u64 reference_root_table[] = { - [6] = BTRFS_CSUM_TREE_OBJECTID, - }; - --int make_btrfs(int fd, const char *device, const char *label, -+int test_uuid_unique(char *fs_uuid) -+{ -+ int unique = 1; -+ blkid_dev_iterate iter = NULL; -+ blkid_dev dev = NULL; -+ blkid_cache cache = NULL; -+ -+ if (blkid_get_cache(&cache, 0) < 0) { -+ printf("ERROR: lblkid cache get failed\n"); -+ return 1; -+ } -+ blkid_probe_all(cache); -+ iter = blkid_dev_iterate_begin(cache); -+ blkid_dev_set_search(iter, "UUID", fs_uuid); -+ -+ while (blkid_dev_next(iter, &dev) == 0) { -+ dev = blkid_verify(cache, dev); -+ if (dev) { -+ unique = 0; -+ break; -+ } -+ } -+ -+ blkid_dev_iterate_end(iter); -+ blkid_put_cache(cache); -+ -+ return unique; -+} -+ -+int make_btrfs(int fd, const char *device, const char *label, char *fs_uuid, - u64 blocks[7], u64 num_bytes, u32 nodesize, - u32 leafsize, u32 sectorsize, u32 stripesize, u64 features) - { - struct btrfs_super_block super; -- struct extent_buffer *buf; -+ struct extent_buffer *buf = NULL; - struct btrfs_root_item root_item; - struct btrfs_disk_key disk_key; - struct btrfs_extent_item *extent_item; -@@ -125,7 +154,20 @@ int make_btrfs(int fd, const char *devic - memset(&super, 0, sizeof(super)); - - num_bytes = (num_bytes / sectorsize) * sectorsize; -- uuid_generate(super.fsid); -+ if (fs_uuid) { -+ if (uuid_parse(fs_uuid, super.fsid) != 0) { -+ fprintf(stderr, "could not parse UUID: %s\n", fs_uuid); -+ ret = -EINVAL; -+ goto out; -+ } -+ if (!test_uuid_unique(fs_uuid)) { -+ fprintf(stderr, "non-unique UUID: %s\n", fs_uuid); -+ ret = -EBUSY; -+ goto out; -+ } -+ } else { -+ uuid_generate(super.fsid); -+ } - uuid_generate(super.dev_item.uuid); - uuid_generate(chunk_tree_uuid); - -Index: btrfs-progs-v3.14.2/utils.h -=================================================================== ---- btrfs-progs-v3.14.2.orig/utils.h -+++ btrfs-progs-v3.14.2/utils.h -@@ -40,7 +40,7 @@ - #define BTRFS_UUID_UNPARSED_SIZE 37 - - int make_btrfs(int fd, const char *device, const char *label, -- u64 blocks[6], u64 num_bytes, u32 nodesize, -+ char *fs_uuid, u64 blocks[6], u64 num_bytes, u32 nodesize, - u32 leafsize, u32 sectorsize, u32 stripesize, u64 features); - int btrfs_make_root_dir(struct btrfs_trans_handle *trans, - struct btrfs_root *root, u64 objectid); -@@ -101,5 +101,5 @@ int get_btrfs_mount(const char *dev, cha - int find_mount_root(const char *path, char **mount_root); - int get_device_info(int fd, u64 devid, - struct btrfs_ioctl_dev_info_args *di_args); -- -+int test_uuid_unique(char *fs_uuid); - #endif diff --git a/btrfs-progs.spec b/btrfs-progs.spec index dada1b3..7b71486 100644 --- a/btrfs-progs.spec +++ b/btrfs-progs.spec @@ -1,6 +1,6 @@ Name: btrfs-progs -Version: 3.14.2 -Release: 4%{?dist} +Version: 3.16 +Release: 1%{?dist} Summary: Userspace programs for btrfs Group: System Environment/Base @@ -71,6 +71,7 @@ rm -rf $RPM_BUILD_ROOT %{_sbindir}/btrfs-zero-log %{_sbindir}/btrfs-find-root %{_sbindir}/btrfs-show-super +%{_mandir}/man5/*.gz %{_mandir}/man8/*.gz %files devel @@ -78,6 +79,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/libbtrfs.so %changelog +* Wed Aug 27 2014 Eric Sandeen 3.16-1 +- New upstream release + * Fri Aug 15 2014 Fedora Release Engineering - 3.14.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild diff --git a/sources b/sources index 7696a30..5a2cecd 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -18dadb86a668c3fe26b2bcb57bbdf59e btrfs-progs-v3.14.2.tar.xz +26035e2ff30513dfeeb2538cacf954b2 btrfs-progs-v3.16.tar.xz