Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 31 Dec 2014 06:01:55 +0000
From:      Steven Hartland <steven@multiplay.co.uk>
To:        d@delphij.net, src-committers@freebsd.org, svn-src-all@freebsd.org,  svn-src-head@freebsd.org
Subject:   Re: svn commit: r276123 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Message-ID:  <54A39153.8040905@freebsd.org>
In-Reply-To: <54A35B88.9090102@delphij.net>
References:  <201412230931.sBN9VPMK017968@svn.freebsd.org> <54A35B88.9090102@delphij.net>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------020201040309020109020201
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit


On 31/12/2014 02:12, Xin Li wrote:
> On 12/23/14 01:31, Steven Hartland wrote:
>> Author: smh
>> Date: Tue Dec 23 09:31:24 2014
>> New Revision: 276123
>> URL: https://svnweb.freebsd.org/changeset/base/276123
>>
>> Log:
>>    Always sync the global ZFS config cache to reflect the new mosconfig
>>    
>>    This fixes out of date zpool.cache for root pools, which can cause issues
>>    such as confusion of zdb etc.
>>    
>>    MFC after:	1 month
>>
>> Modified:
>>    head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c
>>
>> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c
>> ==============================================================================
>> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c	Tue Dec 23 08:51:30 2014	(r276122)
>> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c	Tue Dec 23 09:31:24 2014	(r276123)
>> @@ -536,8 +536,7 @@ spa_config_update(spa_t *spa, int what)
>>   	/*
>>   	 * Update the global config cache to reflect the new mosconfig.
>>   	 */
>> -	if (!spa->spa_is_root)
>> -		spa_config_sync(spa, B_FALSE, what != SPA_CONFIG_UPDATE_POOL);
>> +	spa_config_sync(spa, B_FALSE, what != SPA_CONFIG_UPDATE_POOL);
>>   
>>   	if (what == SPA_CONFIG_UPDATE_POOL)
>>   		spa_config_update(spa, SPA_CONFIG_UPDATE_VDEVS);
> It seems like that this change breaks systems where not all pools are
> available (e.g. some of pools are encrypted) at boot time, by removing
> all these pools from the cache file.
>
> As a result, on the next boot, these pools would not be imported even
> when the devices are available (geli attached), and reverting this
> change would restore the system to its previous behavior.
>
> Perhaps it have exposed an existing bug?

I've managed to reproduce this here with mdX backed test pools, and 
looking into it this is due to spa_config_sync:

                         /*
                          * Skip over our own pool if we're about to remove
                          * ourselves from the spa namespace or any pool 
that
                          * is readonly. Since we cannot guarantee that a
                          * readonly pool would successfully import upon 
reboot,
                          * we don't allow them to be written to the 
cache file.
                          */
                         if ((spa == target && removing) ||
                             !spa_writeable(spa)) {
                                 continue;
                         }

This was added by upstream:
https://github.com/illumos/illumos-gate/commit/fb02ae025247e3b662600e5a9c1b4c33ecab7d72
https://www.illumos.org/issues/3639

It seems the desired behavior was to exclude read only pools, to prevent 
them being mounted writable on reboot, but the check is too wide and 
also excludes unavailable pools too.

The attached patch corrects the test to only check writable on active 
pools so I believe should fix the issue your seeing.

If you can test it and lmk that would be great.

     Regards
     Steve



--------------020201040309020109020201
Content-Type: text/plain; charset=windows-1252;
 name="spa_config.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="spa_config.patch"

SW5kZXg6IHN5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMv
c3BhX2NvbmZpZy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9jZGRsL2NvbnRyaWIvb3BlbnNv
bGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMvc3BhX2NvbmZpZy5jCShyZXZpc2lvbiAyNzYxMjMp
CisrKyBzeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL3Nw
YV9jb25maWcuYwkod29ya2luZyBjb3B5KQpAQCAtMjQxLDcgKzI0MSw4IEBAIHNwYV9jb25m
aWdfc3luYyhzcGFfdCAqdGFyZ2V0LCBib29sZWFuX3QgcmVtb3ZpbmcsCiAJCQkgKiB3ZSBk
b24ndCBhbGxvdyB0aGVtIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIGNhY2hlIGZpbGUuCiAJCQkg
Ki8KIAkJCWlmICgoc3BhID09IHRhcmdldCAmJiByZW1vdmluZykgfHwKLQkJCSAgICAhc3Bh
X3dyaXRlYWJsZShzcGEpKQorCQkJICAgIChzcGFfc3RhdGUoc3BhKSA9PSBQT09MX1NUQVRF
X0FDVElWRSAmJgorCQkJICAgICFzcGFfd3JpdGVhYmxlKHNwYSkpKQogCQkJCWNvbnRpbnVl
OwogCiAJCQltdXRleF9lbnRlcigmc3BhLT5zcGFfcHJvcHNfbG9jayk7Cg==
--------------020201040309020109020201--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?54A39153.8040905>