mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-25 11:37:56 +00:00
e77f4eb2a0
The disk_open() function searches for "the best partition" when slice and partition information is not provided as part of the device name. As of r345477 the slice and partition fields of a disk_devdesc are initialized to D_SLICEWILD and D_PARTWILD; in the past they were initialized to -1, which was sometimes interpreted as meaning 'wildcard' and sometimes as 'open the raw partition' depending on the context. So as an unintended side effect of r345477 it became basically impossible to ever open a disk or partition without doing the 'best partition' search. One visible effect of that was the inability to open the raw disk to read the partition table correctly in zfs_probe_dev(), leading to failures to find the zfs pool unless it was on the first partition. Now instead of always initializing slice and partition to wildcards, the disk_parsedev() function initializes them based on the presence of a path/file name following the device. If there is any path or filename following the ':' that ends the device name, then slice and partition are initialized to D_SLICEWILD and D_PARTWILD. If there is nothing after the ':' then it is considered to be a request to open the raw device or partition itself (not a file stored within it), and the fields are initialized to D_SLICENONE and D_PARTNONE. With this change in place, all the tests in src/tools/boot are succesful again, including the recently-added cases of booting from a zfs pool on a partition other than slice 1 of the device. PR: 236981 |
||
---|---|---|
.. | ||
bcache.c | ||
boot.c | ||
bootstrap.h | ||
commands.c | ||
console.c | ||
dev_net.c | ||
dev_net.h | ||
devopen.c | ||
disk.c | ||
disk.h | ||
help.common | ||
install.c | ||
interp_backslash.c | ||
interp_forth.c | ||
interp_lua.c | ||
interp_parse.c | ||
interp_simple.c | ||
interp.c | ||
isapnp.c | ||
isapnp.h | ||
load_elf32_obj.c | ||
load_elf32.c | ||
load_elf64_obj.c | ||
load_elf64.c | ||
load_elf_obj.c | ||
load_elf.c | ||
ls.c | ||
Makefile.depend | ||
md.c | ||
merge_help.awk | ||
metadata.c | ||
misc.c | ||
module.c | ||
newvers.sh | ||
part.c | ||
part.h | ||
paths.h | ||
pnp.c | ||
rbx.h | ||
reloc_elf32.c | ||
reloc_elf64.c | ||
reloc_elf.c | ||
self_reloc.c | ||
zfs_cmd.c |