]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Disk/UdfDxe/File.c
MdeModulePkg/UDF: Fix creation of UDF logical partition
[mirror_edk2.git] / MdeModulePkg / Universal / Disk / UdfDxe / File.c
index 01361141bbc3e707a0c9110c6123c8b18939a19a..6f07bf2066dced6e3836ecfa659b3e984c71f063 100644 (file)
@@ -131,7 +131,6 @@ Error_Alloc_Priv_File_Data:
   CleanupFileInformation (&PrivFsData->Root);\r
 \r
 Error_Find_Root_Dir:\r
-  CleanupVolumeInformation (&PrivFsData->Volume);\r
 \r
 Error_Read_Udf_Volume:\r
 Error_Invalid_Params:\r
@@ -427,8 +426,9 @@ UdfRead (
     if (EFI_ERROR (Status)) {\r
       goto Error_Find_Fe;\r
     }\r
+    ASSERT (NewFileEntryData != NULL);\r
 \r
-    if (IS_FE_SYMLINK (NewFileEntryData)) {\r
+    if (FE_ICB_FILE_TYPE (NewFileEntryData) == UdfFileEntrySymlink) {\r
       Status = ResolveSymlink (\r
         BlockIo,\r
         DiskIo,\r
@@ -528,7 +528,6 @@ UdfClose (
   EFI_TPL                     OldTpl;\r
   EFI_STATUS                  Status;\r
   PRIVATE_UDF_FILE_DATA       *PrivFileData;\r
-  PRIVATE_UDF_SIMPLE_FS_DATA  *PrivFsData;\r
 \r
   OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
 \r
@@ -541,8 +540,6 @@ UdfClose (
 \r
   PrivFileData = PRIVATE_UDF_FILE_DATA_FROM_THIS (This);\r
 \r
-  PrivFsData = PRIVATE_UDF_SIMPLE_FS_DATA_FROM_THIS (PrivFileData->SimpleFs);\r
-\r
   if (!PrivFileData->IsRootDirectory) {\r
     CleanupFileInformation (&PrivFileData->File);\r
 \r
@@ -551,10 +548,6 @@ UdfClose (
     }\r
   }\r
 \r
-  if (--PrivFsData->OpenFiles == 0) {\r
-    CleanupVolumeInformation (&PrivFsData->Volume);\r
-  }\r
-\r
   FreePool ((VOID *)PrivFileData);\r
 \r
 Exit:\r
@@ -651,7 +644,7 @@ UdfGetPosition (
   // As per UEFI spec, if the file handle is a directory, then the current file\r
   // position has no meaning and the operation is not supported.\r
   //\r
-  if (IS_FID_DIRECTORY_FILE (&PrivFileData->File.FileIdentifierDesc)) {\r
+  if (IS_FID_DIRECTORY_FILE (PrivFileData->File.FileIdentifierDesc)) {\r
     return  EFI_UNSUPPORTED;\r
   }\r
 \r
@@ -787,7 +780,7 @@ UdfGetInfo (
   } else if (CompareGuid (InformationType, &gEfiFileSystemInfoGuid)) {\r
     String = VolumeLabel;\r
 \r
-    FileSetDesc = PrivFsData->Volume.FileSetDescs[0];\r
+    FileSetDesc = &PrivFsData->Volume.FileSetDesc;\r
 \r
     OstaCompressed = &FileSetDesc->LogicalVolumeIdentifier[0];\r
 \r
@@ -805,7 +798,7 @@ UdfGetInfo (
       }\r
 \r
       if (Index < 128) {\r
-        *String |= *(UINT8 *)(OstaCompressed + Index);\r
+        *String |= (CHAR16)(*(UINT8 *)(OstaCompressed + Index));\r
       }\r
 \r
       //\r
@@ -846,7 +839,7 @@ UdfGetInfo (
     FileSystemInfo->Size        = FileSystemInfoLength;\r
     FileSystemInfo->ReadOnly    = TRUE;\r
     FileSystemInfo->BlockSize   =\r
-      LV_BLOCK_SIZE (&PrivFsData->Volume, UDF_DEFAULT_LV_NUM);\r
+      PrivFsData->Volume.LogicalVolDesc.LogicalBlockSize;\r
     FileSystemInfo->VolumeSize  = VolumeSize;\r
     FileSystemInfo->FreeSpace   = FreeSpaceSize;\r
 \r
@@ -860,7 +853,7 @@ UdfGetInfo (
 /**\r
   Set information about a file.\r
 \r
-  @param  File            Protocol instance pointer.\r
+  @param  This            Protocol instance pointer.\r
   @param  InformationType Type of information in Buffer.\r
   @param  BufferSize      Size of buffer.\r
   @param  Buffer          The data to write.\r