18c2aff776a775d34a4c9893a4c72e0434d68e36artem/***************************************************************************
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * hal-storage-zpool.c : ZFS pool methods
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Use is subject to license terms.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Licensed under the Academic Free License version 2.1
18c2aff776a775d34a4c9893a4c72e0434d68e36artem **************************************************************************/
92f381329ebf1c2209df9608670666b32b291e05artem#pragma ident "%Z%%M% %I% %E% SMI"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr, "This program should only be started by hald.\n");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr, "org.freedesktop.Hal.Device.Volume.UnknownFailure\n");
18c2aff776a775d34a4c9893a4c72e0434d68e36artemaudit_pool(const adt_export_data_t *imported_state, au_event_t event_id,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem int result, const char *auth_used, const char *pool, const char *device)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if ((event = adt_alloc_event(ah, event_id)) == NULL) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (result == 0) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (adt_put_event(event, ADT_SUCCESS, ADT_SUCCESS) != 0) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *invoked_by_uid, const char *invoked_by_syscon_name,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("invoked by system bus connection = %s\n", invoked_by_syscon_name);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem /* invoke eject command */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem audit_pool (adt_data, event_id, WEXITSTATUS(exit_status),
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("zpool error %d, stdout='%s', stderr='%s'\n", exit_status, sout, serr);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem invoked_by_uid = getenv ("HAL_METHOD_INVOKED_BY_UID");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem invoked_by_syscon_name = getenv ("HAL_METHOD_INVOKED_BY_SYSTEMBUS_CONNECTION_NAME");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if ((hal_ctx = libhal_ctx_init_direct (&error)) == NULL) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem /* should be a volume */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if ((volume = libhal_volume_from_udi (hal_ctx, udi)) == NULL) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if ((drive_udi = libhal_volume_get_storage_device_udi (volume)) == NULL ) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if ((drive = libhal_drive_from_udi (hal_ctx, drive_udi)) == NULL) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem (strcmp (libhal_volume_get_fstype (volume), "zfs") != 0)) {