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 <kreij...@inwind.it>
---
 utils.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/utils.c b/utils.c
index 3f50e4d..15127db 100644
--- a/utils.c
+++ b/utils.c
@@ -203,7 +203,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;
@@ -216,6 +216,11 @@ int make_btrfs(int fd, const char *device, const char 
*label, char *fs_uuid,
                }
        } else {
                uuid_generate(super.fsid);
+               /* 
+                * if the fs_uuid is a valid pointer, return the generated uuid
+                */
+               if (fs_uuid)
+                       uuid_unparse(super.fsid, fs_uuid);
        }
        uuid_generate(super.dev_item.uuid);
        uuid_generate(chunk_tree_uuid);
-- 
2.1.3

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to