186714001SSerapheim Dimitropoulos /*
286714001SSerapheim Dimitropoulos  * CDDL HEADER START
386714001SSerapheim Dimitropoulos  *
486714001SSerapheim Dimitropoulos  * The contents of this file are subject to the terms of the
586714001SSerapheim Dimitropoulos  * Common Development and Distribution License (the "License").
686714001SSerapheim Dimitropoulos  * You may not use this file except in compliance with the License.
786714001SSerapheim Dimitropoulos  *
886714001SSerapheim Dimitropoulos  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
986714001SSerapheim Dimitropoulos  * or http://www.opensolaris.org/os/licensing.
1086714001SSerapheim Dimitropoulos  * See the License for the specific language governing permissions
1186714001SSerapheim Dimitropoulos  * and limitations under the License.
1286714001SSerapheim Dimitropoulos  *
1386714001SSerapheim Dimitropoulos  * When distributing Covered Code, include this CDDL HEADER in each
1486714001SSerapheim Dimitropoulos  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1586714001SSerapheim Dimitropoulos  * If applicable, add the following below this CDDL HEADER, with the
1686714001SSerapheim Dimitropoulos  * fields enclosed by brackets "[]" replaced with your own identifying
1786714001SSerapheim Dimitropoulos  * information: Portions Copyright [yyyy] [name of copyright owner]
1886714001SSerapheim Dimitropoulos  *
1986714001SSerapheim Dimitropoulos  * CDDL HEADER END
2086714001SSerapheim Dimitropoulos  */
2186714001SSerapheim Dimitropoulos 
2286714001SSerapheim Dimitropoulos /*
2386714001SSerapheim Dimitropoulos  * Copyright (c) 2017 by Delphix. All rights reserved.
2486714001SSerapheim Dimitropoulos  */
2586714001SSerapheim Dimitropoulos 
2686714001SSerapheim Dimitropoulos #ifndef _SYS_SPA_CHECKPOINT_H
2786714001SSerapheim Dimitropoulos #define	_SYS_SPA_CHECKPOINT_H
2886714001SSerapheim Dimitropoulos 
2986714001SSerapheim Dimitropoulos #include <sys/zthr.h>
3086714001SSerapheim Dimitropoulos 
3186714001SSerapheim Dimitropoulos typedef struct spa_checkpoint_info {
3286714001SSerapheim Dimitropoulos 	uint64_t sci_timestamp; /* when checkpointed uberblock was synced  */
3386714001SSerapheim Dimitropoulos 	uint64_t sci_dspace;    /* disk space used by checkpoint in bytes */
3486714001SSerapheim Dimitropoulos } spa_checkpoint_info_t;
3586714001SSerapheim Dimitropoulos 
3686714001SSerapheim Dimitropoulos int spa_checkpoint(const char *);
3786714001SSerapheim Dimitropoulos int spa_checkpoint_discard(const char *);
3886714001SSerapheim Dimitropoulos 
3986714001SSerapheim Dimitropoulos boolean_t spa_checkpoint_discard_thread_check(void *, zthr_t *);
40*6a316e1fSSerapheim Dimitropoulos void spa_checkpoint_discard_thread(void *, zthr_t *);
4186714001SSerapheim Dimitropoulos 
4286714001SSerapheim Dimitropoulos int spa_checkpoint_get_stats(spa_t *, pool_checkpoint_stat_t *);
4386714001SSerapheim Dimitropoulos 
4486714001SSerapheim Dimitropoulos #endif /* _SYS_SPA_CHECKPOINT_H */
45