loader ptblread() is broken with >512B sectors
The loader strategy() function is assuming 512B blocks, so we need to adjust ptblread() for other sector sizes. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D12847
This commit is contained in:
parent
939d033cab
commit
24b4ce2fe0
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=325248
@ -88,6 +88,12 @@ ptblread(void *d, void *buf, size_t blocks, uint64_t offset)
|
||||
dev = (struct disk_devdesc *)d;
|
||||
od = (struct open_disk *)dev->d_opendata;
|
||||
|
||||
/*
|
||||
* The strategy function assumes the offset is in units of 512 byte
|
||||
* sectors. For larger sector sizes, we need to adjust the offset to
|
||||
* match the actual sector size.
|
||||
*/
|
||||
offset *= (od->sectorsize / 512);
|
||||
/*
|
||||
* As the GPT backup partition is located at the end of the disk,
|
||||
* to avoid reading past disk end, flag bcache not to use RA.
|
||||
|
Loading…
Reference in New Issue
Block a user