From f8a0b85e382ed0f76fd67f65ba5c5697a8468525 Mon Sep 17 00:00:00 2001 From: Goffredo Baroncelli Date: Wed, 17 Dec 2014 21:14:09 +0100 Subject: btrfs-progs: return the fsid from make_btrfs() The function make_btrfs() has as argument the fsid of the filesystem. If this fsid is empty or null make_btrfs() generates a new fsid. However If the buffer is valid (but the string is empty) the generated fsid is copied back to the caller. Signed-off-by: Goffredo Baroncelli Reviewed-by: Satoru Takeuchi Signed-off-by: David Sterba --- utils.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'utils.c') diff --git a/utils.c b/utils.c index ef27c51e..f34c27b7 100644 --- a/utils.c +++ b/utils.c @@ -169,6 +169,9 @@ int test_uuid_unique(char *fs_uuid) return unique; } +/* + * @fs_uuid - if NULL, generates a UUID, returns back the new filesystem UUID + */ int make_btrfs(int fd, const char *device, const char *label, char *fs_uuid, u64 blocks[7], u64 num_bytes, u32 nodesize, u32 sectorsize, u32 stripesize, u64 features) @@ -201,7 +204,7 @@ int make_btrfs(int fd, const char *device, const char *label, char *fs_uuid, memset(&super, 0, sizeof(super)); num_bytes = (num_bytes / sectorsize) * sectorsize; - if (fs_uuid) { + if (fs_uuid && *fs_uuid) { if (uuid_parse(fs_uuid, super.fsid) != 0) { fprintf(stderr, "could not parse UUID: %s\n", fs_uuid); ret = -EINVAL; @@ -214,6 +217,8 @@ int make_btrfs(int fd, const char *device, const char *label, char *fs_uuid, } } else { uuid_generate(super.fsid); + if (fs_uuid) + uuid_unparse(super.fsid, fs_uuid); } uuid_generate(super.dev_item.uuid); uuid_generate(chunk_tree_uuid); -- cgit v1.2.3