1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or https://opensource.org/licenses/CDDL-1.0. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright (c) 2018 by Delphix. All rights reserved. 23 */ 24 #ifndef _DMU_REDACT_H_ 25 #define _DMU_REDACT_H_ 26 27 #include <sys/spa.h> 28 #include <sys/dsl_bookmark.h> 29 30 #define REDACT_BLOCK_MAX_COUNT (1ULL << 48) 31 32 static inline uint64_t 33 redact_block_get_size(redact_block_phys_t *rbp) 34 { 35 return (BF64_GET_SB((rbp)->rbp_size_count, 48, 16, SPA_MINBLOCKSHIFT, 36 0)); 37 } 38 39 static inline void 40 redact_block_set_size(redact_block_phys_t *rbp, uint64_t size) 41 { 42 /* cppcheck-suppress syntaxError */ 43 BF64_SET_SB((rbp)->rbp_size_count, 48, 16, SPA_MINBLOCKSHIFT, 0, size); 44 } 45 46 static inline uint64_t 47 redact_block_get_count(redact_block_phys_t *rbp) 48 { 49 return (BF64_GET_SB((rbp)->rbp_size_count, 0, 48, 0, 1)); 50 } 51 52 static inline void 53 redact_block_set_count(redact_block_phys_t *rbp, uint64_t count) 54 { 55 /* cppcheck-suppress syntaxError */ 56 BF64_SET_SB((rbp)->rbp_size_count, 0, 48, 0, 1, count); 57 } 58 59 int dmu_redact_snap(const char *, nvlist_t *, const char *); 60 #endif /* _DMU_REDACT_H_ */ 61