summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorStephen Hanson <Stephen.Hanson@Sun.COM>2008-11-06 01:51:55 -0800
committerStephen Hanson <Stephen.Hanson@Sun.COM>2008-11-06 01:51:55 -0800
commit46b28a98f70a2da2a80c8dade6586885a4241f7f (patch)
tree96f325afe4fc3b7963b87ba991c5b0776fd5dfe7 /usr/src
parent12db04d32e66c3b1803eed1182611245893e23dd (diff)
downloadillumos-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.c30
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;