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 <vov...@gmail.com> 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/