[FREELDR] Diverse enhancements.
[reactos.git] / boot / freeldr / freeldr / lib / fs / btrfs.c
index 1258454..0912471 100644 (file)
@@ -1229,7 +1229,7 @@ const DEVVTBL *BtrFsMount(ULONG DeviceId)
     struct btrfs_path path;
     struct btrfs_root_item fs_root_item;
 
-    TRACE("Enter BtrFsMount(), sizeof %d %d\n", sizeof(struct BTRFS_INFO), sizeof(struct btrfs_super_block));
+    TRACE("Enter BtrFsMount(%lu)\n", DeviceId);
 
     BtrFsInfo = FrLdrTempAlloc(sizeof(struct BTRFS_INFO), TAG_BTRFS_INFO);
     if (!BtrFsInfo)
@@ -1244,38 +1244,36 @@ const DEVVTBL *BtrFsMount(ULONG DeviceId)
     }
 
     /* Check if SuperBlock is valid. If yes, return BTRFS function table */
-    if (BtrFsInfo->SuperBlock.magic == BTRFS_MAGIC_N)
+    if (BtrFsInfo->SuperBlock.magic != BTRFS_MAGIC_N)
     {
-        BtrFsInfo->DeviceId = DeviceId;
-        TRACE("BtrFsMount() superblock magic ok\n");
-
-        btrfs_init_crc32c();
-
-        btrfs_read_sys_chunk_array();
-        btrfs_read_chunk_tree();
-
-        /* setup roots */
-        fs_root_item.bytenr = BtrFsInfo->SuperBlock.root;
-        fs_root_item.level = BtrFsInfo->SuperBlock.root_level;
+        FrLdrTempFree(BtrFsInfo, TAG_BTRFS_INFO);
+        return NULL;
+    }
 
-        init_path(&path);
-        if (!BtrFsSearchTreeType(&fs_root_item, BTRFS_FS_TREE_OBJECTID, BTRFS_ROOT_ITEM_KEY, &path))
-        {
-            FrLdrTempFree(BtrFsInfo, TAG_BTRFS_INFO);
-            free_path(&path);
-            return NULL;
-        }
+    BtrFsInfo->DeviceId = DeviceId;
+    TRACE("BtrFsMount(%lu) superblock magic ok\n", DeviceId);
 
-        BtrFsInfo->FsRoot = *(struct btrfs_root_item *) path_current_data(&path);
+    btrfs_init_crc32c();
 
-        free_path(&path);
+    btrfs_read_sys_chunk_array();
+    btrfs_read_chunk_tree();
 
-        TRACE("BtrFsMount success\n");
+    /* setup roots */
+    fs_root_item.bytenr = BtrFsInfo->SuperBlock.root;
+    fs_root_item.level = BtrFsInfo->SuperBlock.root_level;
 
-        return &BtrFsFuncTable;
-    }
-    else
+    init_path(&path);
+    if (!BtrFsSearchTreeType(&fs_root_item, BTRFS_FS_TREE_OBJECTID, BTRFS_ROOT_ITEM_KEY, &path))
     {
+        FrLdrTempFree(BtrFsInfo, TAG_BTRFS_INFO);
+        free_path(&path);
         return NULL;
     }
+
+    BtrFsInfo->FsRoot = *(struct btrfs_root_item *) path_current_data(&path);
+
+    free_path(&path);
+
+    TRACE("BtrFsMount(%lu) success\n", DeviceId);
+    return &BtrFsFuncTable;
 }