diff options
Diffstat (limited to 'usr/src/uts/common/fs/zfs/spa.c')
-rw-r--r-- | usr/src/uts/common/fs/zfs/spa.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/usr/src/uts/common/fs/zfs/spa.c b/usr/src/uts/common/fs/zfs/spa.c index 70d690d587..d390e39195 100644 --- a/usr/src/uts/common/fs/zfs/spa.c +++ b/usr/src/uts/common/fs/zfs/spa.c @@ -32,6 +32,7 @@ * Copyright (c) 2017, Intel Corporation. * Copyright 2020 Joshua M. Clulow <josh@sysmgr.org> * Copyright 2021 OmniOS Community Edition (OmniOSce) Association. + * Copyright 2022 Oxide Computer Company */ /* @@ -5593,6 +5594,12 @@ spa_import_rootpool(char *devpath, char *devid, uint64_t pool_guid, goto out; } + /* + * The root disk may have been expanded while the system was offline. + * Kick off an async task to check for and handle expansion. + */ + spa_async_request(spa, SPA_ASYNC_AUTOEXPAND); + error = 0; out: spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); @@ -7517,8 +7524,6 @@ spa_async_probe(spa_t *spa, vdev_t *vd) static void spa_async_autoexpand(spa_t *spa, vdev_t *vd) { - sysevent_id_t eid; - nvlist_t *attr; char *physpath; if (!spa->spa_autoexpand) @@ -7535,13 +7540,8 @@ spa_async_autoexpand(spa_t *spa, vdev_t *vd) physpath = kmem_zalloc(MAXPATHLEN, KM_SLEEP); (void) snprintf(physpath, MAXPATHLEN, "/devices%s", vd->vdev_physpath); - VERIFY(nvlist_alloc(&attr, NV_UNIQUE_NAME, KM_SLEEP) == 0); - VERIFY(nvlist_add_string(attr, DEV_PHYS_PATH, physpath) == 0); - - (void) ddi_log_sysevent(zfs_dip, SUNW_VENDOR, EC_DEV_STATUS, - ESC_DEV_DLE, attr, &eid, DDI_SLEEP); + zfs_post_dle_sysevent(physpath); - nvlist_free(attr); kmem_free(physpath, MAXPATHLEN); } |