03.02.2016 03:16, Andreas Loew пишет:
> 
> which then is followed by debug messages "opening hd0", "scanning for
> DISKFILTER devices on hd0" and finally "reading <num> sectors at the
> sector <sector> from hd0"

OK, that helps, thanks. Could you test attached patch?

From: Andrei Borzenkov <[email protected]>
Subject: [PATCH] efidisk: map EFI_NO_MEDIA to GRUB_ERR_OUT_OF_RANGE

This prevents errors from diskfilter for removable devices during
device scan. Write case is added for consistency.

If read/write from removable is explicitly requested, we still return
an error and text string is more clear for user than generic error.

Reported-By: Andreas Loew <[email protected]>

---
 grub-core/disk/efi/efidisk.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/grub-core/disk/efi/efidisk.c b/grub-core/disk/efi/efidisk.c
index 1c00e3e..8b11f4f 100644
--- a/grub-core/disk/efi/efidisk.c
+++ b/grub-core/disk/efi/efidisk.c
@@ -547,7 +547,9 @@ grub_efidisk_read (struct grub_disk *disk, grub_disk_addr_t sector,
 
   status = grub_efidisk_readwrite (disk, sector, size, buf, 0);
 
-  if (status != GRUB_EFI_SUCCESS)
+  if (status == GRUB_EFI_NO_MEDIA)
+    return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("no media in the device"));
+  else if (status != GRUB_EFI_SUCCESS)
     return grub_error (GRUB_ERR_READ_ERROR,
 		       N_("failure reading sector 0x%llx from `%s'"),
 		       (unsigned long long) sector,
@@ -568,7 +570,9 @@ grub_efidisk_write (struct grub_disk *disk, grub_disk_addr_t sector,
 
   status = grub_efidisk_readwrite (disk, sector, size, (char *) buf, 1);
 
-  if (status != GRUB_EFI_SUCCESS)
+  if (status == GRUB_EFI_NO_MEDIA)
+    return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("no media in the device"));
+  else if (status != GRUB_EFI_SUCCESS)
     return grub_error (GRUB_ERR_WRITE_ERROR,
 		       N_("failure writing sector 0x%llx to `%s'"),
 		       (unsigned long long) sector, disk->name);
-- 
tg: (67dba97..) u/efi-no-media (depends on: master)
_______________________________________________
Help-grub mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-grub

Reply via email to