Default directory used for 'zpool import' broken (/dev/dsk)?

Andriy Gapon avg at FreeBSD.org
Mon May 14 16:40:13 UTC 2012


on 14/05/2012 19:11 Andriy Gapon said the following:
> on 14/05/2012 18:19 Fabian Keil said the following:
>> The following patch seems to work for me:
>>
>> ####
>> commit 7ec69700f2d6944a61f5c7a826e67f46fa160221
>> Author: Fabian Keil <fk at fabiankeil.de>
>> Date:   Mon May 12 16:53:56 2012 +0200
>>
>>     Default to searching vdevs in /dev. /dev/dsk doesn't exist on FreeBSD.
>>     
>>     Fixes import issues if no cachefile exists and -d isn't used:
>>     
>>     fk at r500 ~ $sudo zpool import wde2
>>     cannot open '/dev/dsk': must be an absolute path
> 
> Hah, so this hasn't been fixed actually.
> Thank you for the patch!
> 
>> diff --git a/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c b/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
>> index fe76250..5d1e454 100644
>> --- a/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
>> +++ b/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
>> @@ -1909,7 +1909,7 @@ zpool_do_import(int argc, char **argv)
>>  
>>  	if (searchdirs == NULL) {
>>  		searchdirs = safe_malloc(sizeof (char *));
>> -		searchdirs[0] = "/dev/dsk";
>> +		searchdirs[0] = "/dev";
>>  		nsearch = 1;
>>  	}
>> ####
>>
>> The cachefile part is speculation ...
> 
> 

Not sure if the following is also necessary, but it looks like it makes sense:

--- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c
+++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c
@@ -1145,7 +1145,7 @@ zpool_find_import_impl
 	char *end, **dir = iarg->path;
 	size_t pathleft;
 	nvlist_t *ret = NULL;
-	static char *default_dir = "/dev/dsk";
+	static char *default_dir = "/dev";
 	pool_list_t pools = { 0 };
 	pool_entry_t *pe, *penext;
 	vdev_entry_t *ve, *venext;

I am not sure if zpool_find_import_impl is ever called with empty/zero paths/path
in the importargs_t parameter.

-- 
Andriy Gapon


More information about the freebsd-current mailing list