On Thu, November 16, 2017 5:47 am, Hao Wu wrote:
> In order to create all of the children (El Torito standard and UDF) for
> a CD/DVD media in an entry of the PartitionDriverBindingStart(), this
> commit merges the discovery of the El Torito feature
> (PartitionInstallElToritoChildHandles) into function
> PartitionInstallUdfChildHandles.
>
> Cc: Paulo Alcantara <[email protected]>
> Cc: Ruiyu Ni <[email protected]>
> Cc: Star Zeng <[email protected]>
> Cc: Eric Dong <[email protected]>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Hao Wu <[email protected]>
> ---
>  MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c |  7 +++--
>  MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c       | 27
> ++++++++++++++++++--
>  2 files changed, 28 insertions(+), 6 deletions(-)

Reviewed-by: Paulo Alcantara <[email protected]>

Thanks!
Paulo

>
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c
> b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c
> index f6030e0897..603abfe55a 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c
> @@ -43,7 +43,6 @@ EFI_DRIVER_BINDING_PROTOCOL gPartitionDriverBinding = {
>  //
>  PARTITION_DETECT_ROUTINE mPartitionDetectRoutineTable[] = {
>    PartitionInstallGptChildHandles,
> -  PartitionInstallElToritoChildHandles,
>    PartitionInstallMbrChildHandles,
>    PartitionInstallUdfChildHandles,
>    NULL
> @@ -306,9 +305,9 @@ PartitionDriverBindingStart (
>    if (BlockIo->Media->MediaPresent ||
>        (BlockIo->Media->RemovableMedia &&
> !BlockIo->Media->LogicalPartition)) {
>      //
> -    // Try for GPT, then El Torito, then UDF, and then legacy MBR
> partition
> -    // types. If the media supports a given partition type install child
> handles
> -    // to represent the partitions described by the media.
> +    // Try for GPT, then legacy MBR partition types, and then UDF and El
> Torito.
> +    // If the media supports a given partition type install child handles
> to
> +    // represent the partitions described by the media.
>      //
>      Routine = &mPartitionDetectRoutineTable[0];
>      while (*Routine != NULL) {
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c
> b/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c
> index 7eee748958..5aac5640f6 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c
> @@ -688,8 +688,10 @@ PartitionInstallUdfChildHandles (
>    EFI_PARTITION_INFO_PROTOCOL  PartitionInfo;
>    EFI_LBA                      StartingLBA;
>    EFI_LBA                      EndingLBA;
> +  BOOLEAN                      ChildCreated;
>
>    Media = BlockIo->Media;
> +  ChildCreated = FALSE;
>
>    //
>    // Check if UDF logical block size is multiple of underlying device
> block size
> @@ -704,11 +706,29 @@ PartitionInstallUdfChildHandles (
>    }
>
>    //
> +  // Detect El Torito feature first.
> +  // And always continue to search for UDF.
> +  //
> +  Status = PartitionInstallElToritoChildHandles (
> +             This,
> +             Handle,
> +             DiskIo,
> +             DiskIo2,
> +             BlockIo,
> +             BlockIo2,
> +             DevicePath
> +             );
> +  if (!EFI_ERROR (Status)) {
> +    DEBUG ((DEBUG_INFO, "PartitionDxe: El Torito standard found on handle
> 0x%p.\n", Handle));
> +    ChildCreated = TRUE;
> +  }
> +
> +  //
>    // Search for an UDF file system on block device
>    //
>    Status = FindUdfFileSystem (BlockIo, DiskIo, &StartingLBA, &EndingLBA);
>    if (EFI_ERROR (Status)) {
> -    return EFI_NOT_FOUND;
> +    return (ChildCreated ? EFI_SUCCESS : EFI_NOT_FOUND);
>    }
>
>    //
> @@ -735,6 +755,9 @@ PartitionInstallUdfChildHandles (
>      EndingLBA,
>      Media->BlockSize
>      );
> +  if (EFI_ERROR (Status)) {
> +    return (ChildCreated ? EFI_SUCCESS : Status);
> +  }
>
> -  return Status;
> +  return EFI_SUCCESS;
>  }
> --
> 2.12.0.windows.1
>
>


-- 
Paulo Alcantara, HP Inc.
Speaking for myself only.
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to