FreeBSD ZFS
The Zettabyte File System

sys/zvol.h

Go to the documentation of this file.
00001 /*
00002  * CDDL HEADER START
00003  *
00004  * The contents of this file are subject to the terms of the
00005  * Common Development and Distribution License (the "License").
00006  * You may not use this file except in compliance with the License.
00007  *
00008  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
00009  * or http://www.opensolaris.org/os/licensing.
00010  * See the License for the specific language governing permissions
00011  * and limitations under the License.
00012  *
00013  * When distributing Covered Code, include this CDDL HEADER in each
00014  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
00015  * If applicable, add the following below this CDDL HEADER, with the
00016  * fields enclosed by brackets "[]" replaced with your own identifying
00017  * information: Portions Copyright [yyyy] [name of copyright owner]
00018  *
00019  * CDDL HEADER END
00020  */
00021 
00022 /*
00023  * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
00024  */
00025 
00026 #ifndef _SYS_ZVOL_H
00027 #define _SYS_ZVOL_H
00028 
00029 #include <sys/zfs_context.h>
00030 
00031 #ifdef  __cplusplus
00032 extern "C" {
00033 #endif
00034 
00035 #define ZVOL_OBJ                1ULL
00036 #define ZVOL_ZAP_OBJ            2ULL
00037 
00038 #ifdef _KERNEL
00039 extern int zvol_check_volsize(uint64_t volsize, uint64_t blocksize);
00040 extern int zvol_check_volblocksize(uint64_t volblocksize);
00041 extern int zvol_get_stats(objset_t *os, nvlist_t *nv);
00042 extern void zvol_create_cb(objset_t *os, void *arg, cred_t *cr, dmu_tx_t *tx);
00043 extern int zvol_create_minor(const char *);
00044 extern int zvol_remove_minor(const char *);
00045 extern void zvol_remove_minors(const char *);
00046 extern int zvol_set_volsize(const char *, major_t, uint64_t);
00047 
00048 #ifdef sun
00049 extern int zvol_open(dev_t *devp, int flag, int otyp, cred_t *cr);
00050 extern int zvol_dump(dev_t dev, caddr_t addr, daddr_t offset, int nblocks);
00051 extern int zvol_close(dev_t dev, int flag, int otyp, cred_t *cr);
00052 extern int zvol_strategy(buf_t *bp);
00053 extern int zvol_read(dev_t dev, uio_t *uiop, cred_t *cr);
00054 extern int zvol_write(dev_t dev, uio_t *uiop, cred_t *cr);
00055 extern int zvol_aread(dev_t dev, struct aio_req *aio, cred_t *cr);
00056 extern int zvol_awrite(dev_t dev, struct aio_req *aio, cred_t *cr);
00057 #endif  /* sun */
00058 extern int zvol_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *cr,
00059     int *rvalp);
00060 extern int zvol_busy(void);
00061 extern void zvol_init(void);
00062 extern void zvol_fini(void);
00063 
00064 #ifdef sun
00065 extern int zvol_get_volume_params(minor_t minor, uint64_t *blksize,
00066     uint64_t *max_xfer_len, void **minor_hdl, void **objset_hdl, void **zil_hdl,
00067     void **rl_hdl, void **bonus_hdl);
00068 extern uint64_t zvol_get_volume_size(void *minor_hdl);
00069 extern int zvol_get_volume_wce(void *minor_hdl);
00070 extern void zvol_log_write_minor(void *minor_hdl, dmu_tx_t *tx, offset_t off,
00071     ssize_t resid, boolean_t sync);
00072 #endif  /* sun */
00073 
00074 #ifdef __FreeBSD__
00075 extern int zvol_create_minors(const char *name);
00076 extern void zvol_rename_minors(const char *oldname, const char *newname);
00077 #endif
00078 
00079 #endif  /* _KERNEL */
00080 
00081 #ifdef  __cplusplus
00082 }
00083 #endif
00084 
00085 #endif  /* _SYS_ZVOL_H */
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines