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)
}
/* 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;
}