On 05.02.2016 17:56, Andrei Borzenkov wrote: > Map EFI_NO_MEDIA to GRUB_ERR_OUT_OF_RANGE that is ignored by diskfilter. This > actually matches pretty close (we obviously attempt to read outside of media) > and avoids adding more error codes. > > This affects only internally initiated scans. If read/write from removable is > explicitly requested, we still return an error and text explanation is more > clear for user than generic error. > > Reported and tested by Andreas Loew <andreas.l...@gmx.net> > I feel like we should be fixing diskfilter. Consider another case: dead disk dangling on cable and returning mostly I/O errors > --- > 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..ea75344 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 `%s'", > disk->name)); > + 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 `%s'", > disk->name)); > + 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); >
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel