Changeset View
Changeset View
Standalone View
Standalone View
sys/boot/common/ufsread.c
Show First 20 Lines • Show All 181 Lines • ▼ Show 20 Lines | #endif | ||||
size_t n, nb, size, off, vboff; | size_t n, nb, size, off, vboff; | ||||
ufs_lbn_t lbn; | ufs_lbn_t lbn; | ||||
ufs2_daddr_t addr2, vbaddr; | ufs2_daddr_t addr2, vbaddr; | ||||
static ufs2_daddr_t blkmap, indmap; | static ufs2_daddr_t blkmap, indmap; | ||||
u_int u; | u_int u; | ||||
blkbuf = dmadat->blkbuf; | blkbuf = dmadat->blkbuf; | ||||
indbuf = dmadat->indbuf; | indbuf = dmadat->indbuf; | ||||
if (!dsk_meta) { | |||||
/* | |||||
* Force probe if inode is zero to ensure we have a valid fs, otherwise | |||||
* when probing multiple paritions, reads from subsequent parititions | |||||
* will incorrectly succeed. | |||||
*/ | |||||
if (!dsk_meta || inode == 0) { | |||||
inomap = 0; | inomap = 0; | ||||
dsk_meta = 0; | |||||
for (n = 0; sblock_try[n] != -1; n++) { | for (n = 0; sblock_try[n] != -1; n++) { | ||||
if (dskread(dmadat->sbbuf, sblock_try[n] / DEV_BSIZE, | if (dskread(dmadat->sbbuf, sblock_try[n] / DEV_BSIZE, | ||||
SBLOCKSIZE / DEV_BSIZE)) | SBLOCKSIZE / DEV_BSIZE)) | ||||
return -1; | return -1; | ||||
memcpy(&fs, dmadat->sbbuf, sizeof(struct fs)); | memcpy(&fs, dmadat->sbbuf, sizeof(struct fs)); | ||||
if (( | if (( | ||||
#if defined(UFS1_ONLY) | #if defined(UFS1_ONLY) | ||||
fs.fs_magic == FS_UFS1_MAGIC | fs.fs_magic == FS_UFS1_MAGIC | ||||
▲ Show 20 Lines • Show All 104 Lines • Show Last 20 Lines |