From 1611bb7b4fb06cfe43730222e40ef6a109138f12 Mon Sep 17 00:00:00 2001 From: Dan Swartzendruber Date: Thu, 9 Oct 2014 16:45:46 -0400 Subject: [PATCH] Set zfs_autoimport_disable default value to 1 When loading the ZFS kernel modules they should not populate the spa namespace using the cache file. This behavior isn't consistent with other Linux kernel modules and we need to move away from it. Removing this makes the whole startup process predictable with four basic steps which are driven by the init system. 1) modprobe 2) zpool import 3) zfs mount 4) zfs share This change also helps lay the groundwork for eventually removing the kobj_* compatibility code on the kernel side. It may need to be preserved in userspace because libzfs_init() depends on it. This is why the conditional must be wrapped with an #ifdef _KERNEL. Signed-off-by: Dan Swartzendruber Signed-off-by: Brian Behlendorf Closes #2820 --- module/zfs/spa_config.c | 4 +++- scripts/zconfig.sh | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/module/zfs/spa_config.c b/module/zfs/spa_config.c index ed2344cf3..624bcb788 100644 --- a/module/zfs/spa_config.c +++ b/module/zfs/spa_config.c @@ -64,7 +64,7 @@ static uint64_t spa_config_generation = 1; * userland pools when doing testing. */ char *spa_config_path = ZPOOL_CACHE; -int zfs_autoimport_disable = 0; +int zfs_autoimport_disable = 1; /* * Called when the module is first loaded, this routine loads the configuration @@ -81,8 +81,10 @@ spa_config_load(void) struct _buf *file; uint64_t fsize; +#ifdef _KERNEL if (zfs_autoimport_disable) return; +#endif /* * Open the configuration file. diff --git a/scripts/zconfig.sh b/scripts/zconfig.sh index d6695be72..45ccf62ed 100755 --- a/scripts/zconfig.sh +++ b/scripts/zconfig.sh @@ -96,6 +96,7 @@ test_1() { # Unload/load the module stack and verify the pool persists. ${ZFS_SH} -u || fail 4 ${ZFS_SH} zfs="spa_config_path=${TMP_CACHE}" || fail 5 + ${ZPOOL} import -c ${TMP_CACHE} ${POOL_NAME} || fail 5 ${ZPOOL} status ${POOL_NAME} >${TMP_FILE2} || fail 6 cmp ${TMP_FILE1} ${TMP_FILE2} || fail 7 @@ -126,8 +127,7 @@ test_2() { ${ZFS_SH} -u || fail 4 rm -f ${TMP_CACHE} || fail 5 ${ZFS_SH} zfs="spa_config_path=${TMP_CACHE}" || fail 6 - ${ZPOOL} import | grep ${POOL_NAME} >/dev/null || fail 7 - ${ZPOOL} import -f ${POOL_NAME} || fail 8 + ${ZPOOL} import -d /dev ${POOL_NAME} || fail 8 ${ZPOOL} status ${POOL_NAME} >${TMP_FILE2} || fail 9 cmp ${TMP_FILE1} ${TMP_FILE2} || fail 10 @@ -266,6 +266,7 @@ test_4() { # Load the modules, list the pools to ensure they are opened ${ZFS_SH} zfs="spa_config_path=${TMP_CACHE}" || fail 10 + ${ZPOOL} import -c ${TMP_CACHE} ${POOL_NAME} || fail 10 ${ZPOOL} list &>/dev/null # Verify the devices were created -- 2.40.0