Re: ZFS cache devs UNAVAIL

From: Andriy Gapon <avg_at_FreeBSD.org>
Date: Tue, 23 Oct 2012 23:23:27 +0300
on 23/10/2012 23:08 Andriy Gapon said the following:
> on 23/10/2012 20:56 Michael Schmiedgen said the following:
>> FreeBSD 10.0-CURRENT #0: Tue Oct 23 00:14:32 CEST 2012
>>     root_at_gizeh.smoke:/usr/obj/usr/src/sys/GIZEH amd64
> ...
>> vdev_geom_open_by_path:519[1]: guid mismatch for provider /dev/ada0p1:
>> 5267967234359339128 != 0.
> 
> Thank you for this valuable information.
> 
> Do you have a rough estimate of when you started to experience this issue?
> 
> Could you please also provide output of the following command captured right
> after a reboot and then after you re-add the cache disks?
> $ zdb -lll /dev/ada0p
> 
> 

I still would like to get the above information if possible.
But here is a patch that you can try:

--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
_at__at_ -270,14 +270,16 _at__at_ vdev_geom_read_config(struct g_consumer *cp, nvlist_t
**config)
 			continue;

 		if (nvlist_lookup_uint64(*config, ZPOOL_CONFIG_POOL_STATE,
-		    &state) != 0 || state >= POOL_STATE_DESTROYED) {
+		    &state) != 0 || state == POOL_STATE_DESTROYED ||
+		    state > POOL_STATE_L2CACHE) {
 			nvlist_free(*config);
 			*config = NULL;
 			continue;
 		}

-		if (nvlist_lookup_uint64(*config, ZPOOL_CONFIG_POOL_TXG,
-		    &txg) != 0 || txg == 0) {
+		if (state != POOL_STATE_SPARE && state != POOL_STATE_L2CACHE &&
+		    (nvlist_lookup_uint64(*config, ZPOOL_CONFIG_POOL_TXG,
+		    &txg) != 0 || txg == 0)) {
 			nvlist_free(*config);
 			*config = NULL;
 			continue;



I think that I introduced this bug because I used some old OpenSolaris code as
an inspiration and completely missed the new states.

-- 
Andriy Gapon
Received on Tue Oct 23 2012 - 18:23:32 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:31 UTC