URL:
<https://savannah.gnu.org/bugs/?60739>
Summary: make it possible to use raw disk as grubenv
Project: GNU GRUB
Submitted by: vovcat
Submitted on: Sun 06 Jun 2021 05:37:26 PM UTC
Category: Filesystem
Severity: Major
Priority: 5 - Normal
Item Group: Feature Request
Status: None
Privacy: Public
Assigned to: None
Originator Name:
Originator Email:
Open/Closed: Open
Release:
Release: Git master
Discussion Lock: Any
Reproducibility: Every Time
Planned Release: None
_______________________________________________________
Details:
commit 80ffbb3265889af739659d365dd87f8022387104 (HEAD -> grub2-master)
Author: Volodymyr Prodan <[email protected]>
Date: Fri Jun 4 21:33:28 2021 +0300
Make grub_fs_blocklist_read() to call file->read_hook().
This makes it possible to use raw disk as grubenv, save_env -f
(hd0)1024+2
for example.
diff --git grub-core/kern/fs.c grub-core/kern/fs.c
index f90be6566..cf4289081 100644
--- grub-core/kern/fs.c
+++ grub-core/kern/fs.c
@@ -224,8 +224,11 @@ grub_fs_blocklist_read (grub_file_t file, char *buf,
grub_size_t len)
>> GRUB_DISK_SECTOR_BITS) > p->length - sector)
size = ((p->length - sector) << GRUB_DISK_SECTOR_BITS) - offset;
- if (grub_disk_read (file->device->disk, p->offset + sector, offset,
- size, buf) != GRUB_ERR_NONE)
+ file->device->disk->read_hook = file->read_hook;
+ file->device->disk->read_hook_data = file->read_hook_data;
+ grub_err_t err = grub_disk_read (file->device->disk, p->offset +
sector, offset, size, buf);
+ file->device->disk->read_hook = 0;
+ if (err != GRUB_ERR_NONE)
return -1;
ret += size;
_______________________________________________________
File Attachments:
-------------------------------------------------------
Date: Sun 06 Jun 2021 05:37:26 PM UTC Name: raw-disk-as-grubenv.patch Size:
1KiB By: vovcat
<http://savannah.gnu.org/bugs/download.php?file_id=51523>
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?60739>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/