8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
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 2010 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
24 */
25 /*
26 * Copyright (c) 2012, Joyent, Inc. All rights reserved.
27 * Copyright (c) 2013, 2015 by Delphix. All rights reserved.
28 */
29
30 #ifndef _SYS_DMU_IMPL_H
31 #define _SYS_DMU_IMPL_H
32
33 #include <sys/txg_impl.h>
34 #include <sys/zio.h>
35 #include <sys/dnode.h>
36 #include <sys/zfs_context.h>
37 #include <sys/zfs_ioctl.h>
38
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42
43 /*
44 * This is the locking strategy for the DMU. Numbers in parenthesis are
45 * cases that use that lock order, referenced below:
46 *
47 * ARC is self-contained
281 PENDING_FREEOBJECTS
282 } dmu_pendop_t;
283
284 typedef struct dmu_sendarg {
285 list_node_t dsa_link;
286 dmu_replay_record_t *dsa_drr;
287 vnode_t *dsa_vp;
288 int dsa_outfd;
289 struct proc *dsa_proc;
290 offset_t *dsa_off;
291 objset_t *dsa_os;
292 zio_cksum_t dsa_zc;
293 uint64_t dsa_toguid;
294 int dsa_err;
295 dmu_pendop_t dsa_pending_op;
296 uint64_t dsa_featureflags;
297 uint64_t dsa_last_data_object;
298 uint64_t dsa_last_data_offset;
299 uint64_t dsa_resume_object;
300 uint64_t dsa_resume_offset;
301 } dmu_sendarg_t;
302
303 void dmu_object_zapify(objset_t *, uint64_t, dmu_object_type_t, dmu_tx_t *);
304 void dmu_object_free_zapified(objset_t *, uint64_t, dmu_tx_t *);
305 int dmu_buf_hold_noread(objset_t *, uint64_t, uint64_t,
306 void *, dmu_buf_t **);
307
308 #ifdef __cplusplus
309 }
310 #endif
311
312 #endif /* _SYS_DMU_IMPL_H */
|
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
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 2010 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
24 */
25 /*
26 * Copyright (c) 2012, Joyent, Inc. All rights reserved.
27 * Copyright (c) 2013, 2015 by Delphix. All rights reserved.
28 * Copyright 2015 RackTop Systems.
29 */
30
31 #ifndef _SYS_DMU_IMPL_H
32 #define _SYS_DMU_IMPL_H
33
34 #include <sys/txg_impl.h>
35 #include <sys/zio.h>
36 #include <sys/dnode.h>
37 #include <sys/zfs_context.h>
38 #include <sys/zfs_ioctl.h>
39
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43
44 /*
45 * This is the locking strategy for the DMU. Numbers in parenthesis are
46 * cases that use that lock order, referenced below:
47 *
48 * ARC is self-contained
282 PENDING_FREEOBJECTS
283 } dmu_pendop_t;
284
285 typedef struct dmu_sendarg {
286 list_node_t dsa_link;
287 dmu_replay_record_t *dsa_drr;
288 vnode_t *dsa_vp;
289 int dsa_outfd;
290 struct proc *dsa_proc;
291 offset_t *dsa_off;
292 objset_t *dsa_os;
293 zio_cksum_t dsa_zc;
294 uint64_t dsa_toguid;
295 int dsa_err;
296 dmu_pendop_t dsa_pending_op;
297 uint64_t dsa_featureflags;
298 uint64_t dsa_last_data_object;
299 uint64_t dsa_last_data_offset;
300 uint64_t dsa_resume_object;
301 uint64_t dsa_resume_offset;
302 boolean_t dsa_skip_free;
303 } dmu_sendarg_t;
304
305 void dmu_object_zapify(objset_t *, uint64_t, dmu_object_type_t, dmu_tx_t *);
306 void dmu_object_free_zapified(objset_t *, uint64_t, dmu_tx_t *);
307 int dmu_buf_hold_noread(objset_t *, uint64_t, uint64_t,
308 void *, dmu_buf_t **);
309
310 #ifdef __cplusplus
311 }
312 #endif
313
314 #endif /* _SYS_DMU_IMPL_H */
|