diff options
author | Stephen Hanson <Stephen.Hanson@Sun.COM> | 2008-11-06 01:51:55 -0800 |
---|---|---|
committer | Stephen Hanson <Stephen.Hanson@Sun.COM> | 2008-11-06 01:51:55 -0800 |
commit | 46b28a98f70a2da2a80c8dade6586885a4241f7f (patch) | |
tree | 96f325afe4fc3b7963b87ba991c5b0776fd5dfe7 /usr/src | |
parent | 12db04d32e66c3b1803eed1182611245893e23dd (diff) | |
download | illumos-joyent-46b28a98f70a2da2a80c8dade6586885a4241f7f.tar.gz |
6767911 zfs scheme needs an fmd_fmri_replaced() interface
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/cmd/fm/schemes/zfs/scheme.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/usr/src/cmd/fm/schemes/zfs/scheme.c b/usr/src/cmd/fm/schemes/zfs/scheme.c index 25258871b9..ffa8ebf7f5 100644 --- a/usr/src/cmd/fm/schemes/zfs/scheme.c +++ b/usr/src/cmd/fm/schemes/zfs/scheme.c @@ -23,8 +23,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include <fm/fmd_fmri.h> #include <strings.h> #include <libzfs.h> @@ -160,6 +158,34 @@ fmd_fmri_present(nvlist_t *nvl) } int +fmd_fmri_replaced(nvlist_t *nvl) +{ + uint64_t pool_guid, vdev_guid; + cbdata_t cb; + int ret; + + (void) nvlist_lookup_uint64(nvl, FM_FMRI_ZFS_POOL, &pool_guid); + + cb.cb_guid = pool_guid; + cb.cb_pool = NULL; + + if (zpool_iter(g_zfs, find_pool, &cb) != 1) + return (FMD_OBJ_STATE_NOT_PRESENT); + + if (nvlist_lookup_uint64(nvl, FM_FMRI_ZFS_VDEV, &vdev_guid) != 0) { + zpool_close(cb.cb_pool); + return (FMD_OBJ_STATE_STILL_PRESENT); + } + + ret = (find_vdev(cb.cb_pool, vdev_guid) != NULL) ? + FMD_OBJ_STATE_STILL_PRESENT : FMD_OBJ_STATE_NOT_PRESENT; + + zpool_close(cb.cb_pool); + + return (ret); +} + +int fmd_fmri_unusable(nvlist_t *nvl) { uint64_t pool_guid, vdev_guid; |