ZFS: fix adding vdevs to very large pools

r323791 changed the return value of zpool_read_label.  Error paths that
previously returned 0 began to return -1 instead.  However, not all error
paths initialized errno.  When adding vdevs to a very large pool, errno could
be prepopulated with ENOMEM, causing the operation to fail.  Fix the bug by
setting errno=ENOENT in the case that no ZFS label is found.

PR:		226096
Submitted by:	Nikita Kozlov
Reviewed by:	avg
MFC after:	3 weeks
Differential Revision:	https://reviews.freebsd.org/D13088
This commit is contained in:
Alan Somers 2018-03-02 21:26:48 +00:00
parent c505b59961
commit 50b779bdc9

View File

@ -923,6 +923,7 @@ zpool_read_label(int fd, nvlist_t **config)
free(label);
*config = NULL;
errno = ENOENT;
return (-1);
}