Fix svn check in bug that broke CWD. Update the connect disconnect support in device command to minimize operations.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10462 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
andrewfish
2010-05-07 16:45:48 +00:00
parent 0caa7ad507
commit 208a8330d0
3 changed files with 21 additions and 3 deletions

View File

@@ -207,13 +207,14 @@ EblDeviceCmd (
IN CHAR8 **Argv
)
{
EFI_STATUS Status;
UINTN Index;
UINTN CurrentRow;
UINTN Max;
EFI_OPEN_FILE *File;
CurrentRow = 0;
// Need to call here to make sure Device Counts are valid
EblUpdateDeviceLists ();
@@ -227,9 +228,15 @@ EblDeviceCmd (
if (File != NULL) {
if (File->FsBlockIoMedia->RemovableMedia) {
if (File->FsBlockIoMedia->MediaPresent) {
gBS->DisconnectController (File->EfiHandle, NULL, NULL);
// Probe to see if media is present
Status = File->FsBlockIo->ReadBlocks (File->FsBlockIo, File->FsBlockIo->Media->MediaId, (EFI_LBA)0, 0, NULL);
if (Status == EFI_NO_MEDIA) {
gBS->DisconnectController (File->EfiHandle, NULL, NULL);
}
} else {
// Probe for media insertion and connect partition and filesystem drivers if needed
gBS->ConnectController (File->EfiHandle, NULL, NULL, TRUE);
}
gBS->ConnectController (File->EfiHandle, NULL, NULL, TRUE);
}
EfiClose (File);
}