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 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 2007 Sun Microsystems, Inc.  All rights reserved.
23 * Use is subject to license terms.
24 * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
25 */
26
27/*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
28/*	  All Rights Reserved	*/
29
30/*
31 * University Copyright- Copyright (c) 1982, 1986, 1988
32 * The Regents of the University of California
33 * All Rights Reserved
34 *
35 * University Acknowledgment- Portions of this document are derived from
36 * software developed by the University of California, Berkeley, and its
37 * contributors.
38 */
39
40/*
41 * Copyright (c) 2013 by Delphix. All rights reserved.
42 */
43
44#ifndef _SYS_FILIO_H
45#define	_SYS_FILIO_H
46
47/*
48 * General file ioctl definitions.
49 */
50
51#include <sys/ioccom.h>
52
53#ifdef	__cplusplus
54extern "C" {
55#endif
56
57#define	FIOCLEX		_IO('f', 1)		/* set exclusive use on fd */
58#define	FIONCLEX	_IO('f', 2)		/* remove exclusive use */
59/* another local */
60#define	FIONREAD	_IOR('f', 127, int)	/* get # bytes to read */
61#define	FIONBIO		_IOW('f', 126, int)	/* set/clear non-blocking i/o */
62#define	FIOASYNC	_IOW('f', 125, int)	/* set/clear async i/o */
63#define	FIOSETOWN	_IOW('f', 124, int)	/* set owner */
64#define	FIOGETOWN	_IOR('f', 123, int)	/* get owner */
65
66/*
67 * ioctl's for Online: DiskSuite.
68 * WARNING - the support for these ioctls may be withdrawn
69 * in future OS releases.
70 */
71#define	_FIOLFS		_IO('f', 64)		/* file system lock */
72#define	_FIOLFSS	_IO('f', 65)		/* file system lock status */
73#define	_FIOFFS		_IO('f', 66)		/* file system flush */
74#define	_FIOAI		_FIOOBSOLETE67		/* get allocation info is */
75#define	_FIOOBSOLETE67	_IO('f', 67)		/* obsolete and unsupported */
76#define	_FIOSATIME	_IO('f', 68)		/* set atime */
77#define	_FIOSDIO	_IO('f', 69)		/* set delayed io */
78#define	_FIOGDIO	_IO('f', 70)		/* get delayed io */
79#define	_FIOIO		_IO('f', 71)		/* inode open */
80#define	_FIOISLOG	_IO('f', 72)		/* disksuite/ufs protocol */
81#define	_FIOISLOGOK	_IO('f', 73)		/* disksuite/ufs protocol */
82#define	_FIOLOGRESET	_IO('f', 74)		/* disksuite/ufs protocol */
83
84/*
85 * Contract-private ioctl()
86 */
87#define	_FIOISBUSY	_IO('f', 75)		/* networker/ufs protocol */
88#define	_FIODIRECTIO	_IO('f', 76)		/* directio */
89#define	_FIOTUNE	_IO('f', 77)		/* tuning */
90
91/*
92 * Internal Logging UFS
93 */
94#define	_FIOLOGENABLE	_IO('f', 87)		/* logging/ufs protocol */
95#define	_FIOLOGDISABLE	_IO('f', 88)		/* logging/ufs protocol */
96
97/*
98 * File system snapshot ioctls (see sys/fs/ufs_snap.h)
99 * (there is another snapshot ioctl, _FIOSNAPSHOTCREATE_MULTI,
100 * defined farther down in this file.)
101 */
102#define	_FIOSNAPSHOTCREATE	_IO('f', 89)	/* create a snapshot */
103#define	_FIOSNAPSHOTDELETE	_IO('f', 90)	/* delete a snapshot */
104
105/*
106 * Return the current superblock of size SBSIZE
107 */
108#define	_FIOGETSUPERBLOCK	_IO('f', 91)
109
110/*
111 * Contract private ioctl
112 */
113#define	_FIOGETMAXPHYS		_IO('f', 92)
114
115/*
116 * TSufs support
117 */
118#define	_FIO_SET_LUFS_DEBUG	_IO('f', 93) /* set lufs_debug */
119#define	_FIO_SET_LUFS_ERROR	_IO('f', 94) /* set a lufs error */
120#define	_FIO_GET_TOP_STATS	_IO('f', 95) /* get lufs tranaction stats */
121
122/*
123 * create a snapshot with multiple backing files
124 */
125#define	_FIOSNAPSHOTCREATE_MULTI	_IO('f', 96)
126
127/*
128 * handle lseek SEEK_DATA and SEEK_HOLE for holey file knowledge
129 */
130#define	_FIO_SEEK_DATA		_IO('f', 97) /* SEEK_DATA */
131#define	_FIO_SEEK_HOLE		_IO('f', 98) /* SEEK_HOLE */
132
133/*
134 * boot archive compression
135 */
136#define	_FIO_COMPRESSED		_IO('f', 99) /* mark file as compressed */
137
138/*
139 * Expose fill information through ioctl
140 */
141#define	_FIO_COUNT_FILLED	_IO('f', 100)	/* count holes in a file */
142
143#ifdef	__cplusplus
144}
145#endif
146
147#endif	/* _SYS_FILIO_H */
148