libbe.h revision f5e5a2c4965aa1013184568ca3140cdcba93e44b
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * CDDL HEADER START
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * The contents of this file are subject to the terms of the
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Common Development and Distribution License (the "License").
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * You may not use this file except in compliance with the License.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * or http://www.opensolaris.org/os/licensing.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * See the License for the specific language governing permissions
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * and limitations under the License.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * CDDL HEADER END
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Copyright 2016 Toomas Soome <tsoome@me.com>
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Copyright 2015 Gary Mills
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_ATTR_ORIG_BE_NAME "orig_be_name"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_ATTR_ORIG_BE_POOL "orig_be_pool"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_ATTR_ORIG_BE_ROOT "orig_be_root"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_ATTR_ZFS_PROPERTIES "zfs_properties"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_ATTR_SHARED_FS_NAMES "shared_fs_names"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_ATTR_SHARED_FS_NUM "shared_fs_num"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_ATTR_UNMOUNT_FLAGS "unmount_flags"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_ATTR_DESTROY_FLAGS "destroy_flags"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_ATTR_INSTALL_FLAGS "install_flags"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_ATTR_ACTIVE_ON_BOOT "active_boot"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_ATTR_GLOBAL_ACTIVE "global_active"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * libbe error codes
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * NOTE: there is a copy of this enum in beadm/messages.py. To keep these
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * in sync please make sure to add any new error messages at the end
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * of this enumeration.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_ACCESS = 4000, /* permission denied */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_ACTIVATE_CURR, /* Activation of current BE failed */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_CREATDS, /* dataset creation failed */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_CURR_BE_NOT_FOUND, /* Can't find current BE */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_DESTROY, /* failed to destroy BE or snapshot */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_INVALPROP, /* invalid property for dataset */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_INVALMOUNTPOINT, /* Unexpected mountpoint */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_NOTMOUNTED, /* File system not mounted */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_NONINHERIT, /* property is not inheritable for BE dataset */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_NXIO, /* No such device or address */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_NOTSUP, /* Operation not supported */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_UNAVAIL, /* The BE is currently unavailable */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_READONLYDS, /* read only dataset */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_READONLYPROP, /* read only property */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_UMOUNT_CURR_BE, /* Can't unmount current BE */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_UMOUNT_SHARED, /* unmount of shared File System failed */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_DESTROY_CURR_BE, /* Cannot destroy current BE */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_GEN_UUID, /* Failed to generate uuid */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_PARSE_UUID, /* Failed to parse uuid */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_ZONE_NO_PARENTBE, /* Zone root dataset has no parent uuid */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_ZONE_MULTIPLE_ACTIVE, /* Zone has multiple active roots */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_ZONE_NO_ACTIVE_ROOT, /* Zone has no active root for this BE */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_ZONE_ROOT_NOT_LEGACY, /* Zone root dataset mntpt is not legacy */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_NO_MOUNTED_ZONE, /* Zone not mounted in alternate BE */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_MOUNT_ZONEROOT, /* Failed to mount a zone root */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_UMOUNT_ZONEROOT, /* Failed to unmount a zone root */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_ZONES_UNMOUNT, /* Unable to unmount a zone. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_RENAME_ACTIVE, /* Renaming the active BE is not supported */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_NO_MENU, /* Missing boot menu file */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_BAD_MENU_PATH, /* Invalid path for menu.lst file */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_ZONE_SS_EXISTS, /* zone snapshot already exists */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_ADD_SPLASH_ICT, /* Add_splash_image ICT failed */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_BOOTFILE_INST, /* Error installing boot files */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis BE_ERR_EXTCMD /* External command error */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Data structures used to return the listing and information of BEs.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis time_t be_ds_creation; /* Date/time stamp when created */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis char *be_ds_plcy_type; /* cleanup policy type */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis uint64_t be_snapshot_space_used; /* bytes of disk space used */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis time_t be_snapshot_creation; /* Date/time stamp when created */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis char *be_snapshot_type; /* cleanup policy type */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis struct be_snapshot_list *be_next_snapshot;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis boolean_t be_mounted; /* is BE currently mounted */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis boolean_t be_active_on_boot; /* is this BE active on boot */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis boolean_t be_active; /* is this BE active currently */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis boolean_t be_global_active; /* is zone's BE associated with */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* an active global BE */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis char *be_policy_type; /* cleanup policy type */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis char *be_uuid_str; /* string representation of uuid */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis time_t be_node_creation; /* Date/time stamp when created */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis struct be_snapshot_list *be_node_snapshots;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* Flags used with mounting a BE */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* Flags used with unmounting a BE */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* Flags used with destroying a BE */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_DESTROY_FLAG_SNAPSHOTS 0x00000001
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_DESTROY_FLAG_FORCE_UNMOUNT 0x00000002
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* Flags for installboot */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_INSTALLBOOT_FLAG_NULL 0x00000000
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_INSTALLBOOT_FLAG_FORCE 0x00000002
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define BE_INSTALLBOOT_FLAG_VERBOSE 0x00000004
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* sort rules for be_sort() */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* for fastboot arguments */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * BE functions
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Functions for listing and getting information about existing BEs.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisint be_get_boot_args(char **, int);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Installboot support
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Library functions
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif /* _LIBBE_H */