mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-15 10:17:20 +00:00
fix a zfs boot regression introduced in r300117 by accident
There is no reason to return non-zero value from zfs_probe_partition() as that causes following partitions to not be probed for ZFS vdevs. A particular scenario that I encountered is a GPT partitioned disk where several partitions have freebsd-zfs type. A partition with a lower index is used as a cache (l2arc) vdev and in that case case zfs_probe() returned a non-zero status. That status was returned to ptable_iterate() and caused it to abort the iteration. Because of that the subsequent partitions were not probed and a root pool was not discovered resulting in a boot failure. While there fix the style for nearby return statements. Approved by: re (kib)
This commit is contained in:
parent
c7161c4adc
commit
dc87c22a61
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=301955
@ -450,7 +450,7 @@ zfs_probe_partition(void *arg, const char *partname,
|
||||
/* Probe only freebsd-zfs and freebsd partitions */
|
||||
if (part->type != PART_FREEBSD &&
|
||||
part->type != PART_FREEBSD_ZFS)
|
||||
return 0;
|
||||
return (0);
|
||||
|
||||
ppa = (struct zfs_probe_args *)arg;
|
||||
strncpy(devname, ppa->devname, strlen(ppa->devname) - 1);
|
||||
@ -458,10 +458,10 @@ zfs_probe_partition(void *arg, const char *partname,
|
||||
sprintf(devname, "%s%s:", devname, partname);
|
||||
pa.fd = open(devname, O_RDONLY);
|
||||
if (pa.fd == -1)
|
||||
return 0;
|
||||
return (0);
|
||||
ret = zfs_probe(pa.fd, ppa->pool_guid);
|
||||
if (ret == 0)
|
||||
return 0;
|
||||
return (0);
|
||||
/* Do we have BSD label here? */
|
||||
if (part->type == PART_FREEBSD) {
|
||||
pa.devname = devname;
|
||||
@ -470,12 +470,12 @@ zfs_probe_partition(void *arg, const char *partname,
|
||||
table = ptable_open(&pa, part->end - part->start + 1,
|
||||
ppa->secsz, zfs_diskread);
|
||||
if (table != NULL) {
|
||||
ret = ptable_iterate(table, &pa, zfs_probe_partition);
|
||||
ptable_iterate(table, &pa, zfs_probe_partition);
|
||||
ptable_close(table);
|
||||
}
|
||||
}
|
||||
close(pa.fd);
|
||||
return (ret);
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
|
Loading…
Reference in New Issue
Block a user