diff options
author | Matthew Macy <[email protected]> | 2020-08-17 14:43:47 -0700 |
---|---|---|
committer | GitHub <[email protected]> | 2020-08-17 14:43:47 -0700 |
commit | 5f1984f2f83624b30dbdaa5d906a6253d78efb66 (patch) | |
tree | ad7d14b60650e78a348edfeb266ec8e78e6666fc | |
parent | 9352d8c00402d2b10c0a2f547445dadda3bb0062 (diff) |
FreeBSD: fallback to /boot/ to look for zpool.cache
Up until now zpool.cache has always lived in /boot on FreeBSD.
For the sake of compatibility fallback to /boot if zpool.cache
isn't found in /etc/zfs.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Matt Macy <[email protected]>
Closes #10720
-rw-r--r-- | include/sys/fs/zfs.h | 2 | ||||
-rw-r--r-- | module/zfs/spa_config.c | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/include/sys/fs/zfs.h b/include/sys/fs/zfs.h index 07c277622..001893b71 100644 --- a/include/sys/fs/zfs.h +++ b/include/sys/fs/zfs.h @@ -829,8 +829,8 @@ typedef struct zpool_load_policy { * The location of the pool configuration repository, shared between kernel and * userland. */ +#define ZPOOL_CACHE_BOOT "/boot/zfs/zpool.cache" #define ZPOOL_CACHE "/etc/zfs/zpool.cache" - /* * vdev states are ordered from least to most healthy. * A vdev that's CANT_OPEN or below is considered unusable. diff --git a/module/zfs/spa_config.c b/module/zfs/spa_config.c index b30c65e71..95dd19844 100644 --- a/module/zfs/spa_config.c +++ b/module/zfs/spa_config.c @@ -100,6 +100,10 @@ spa_config_load(void) err = zfs_file_open(pathname, O_RDONLY, 0, &fp); +#ifdef __FreeBSD__ + if (err) + err = zfs_file_open(ZPOOL_CACHE_BOOT, O_RDONLY, 0, &fp); +#endif kmem_free(pathname, MAXPATHLEN); if (err) |