diff options
author | Joshua M. Clulow <josh@sysmgr.org> | 2022-11-08 12:54:43 -0800 |
---|---|---|
committer | Joshua M. Clulow <josh@sysmgr.org> | 2022-11-08 12:54:43 -0800 |
commit | b4fb003914e70b41d96dec8011864f6af1faf3ef (patch) | |
tree | f64867f9ae24b071f386b0c2fe24a47bd97bce79 /usr/src/uts/common/fs/zfs/spa.c | |
parent | 77c0a660417a046bfab6c8ef58d00c181c0264b3 (diff) | |
download | illumos-gate-b4fb003914e70b41d96dec8011864f6af1faf3ef.tar.gz |
14978 ZFS autoexpand property should work for root pools
Reviewed by: Andy Fiddaman <illumos@fiddaman.net>
Reviewed by: Toomas Soome <tsoome@me.com>
Approved by: Dan McDonald <danmcd@mnx.io>
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); } |