Annotation of sys/ufs/ufs/ufsmount.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: ufsmount.h,v 1.12 2006/10/29 00:53:37 thib Exp $ */
2: /* $NetBSD: ufsmount.h,v 1.4 1994/12/21 20:00:23 mycroft Exp $ */
3:
4: /*
5: * Copyright (c) 1982, 1986, 1989, 1993
6: * The Regents of the University of California. All rights reserved.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions
10: * are met:
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: * 3. Neither the name of the University nor the names of its contributors
17: * may be used to endorse or promote products derived from this software
18: * without specific prior written permission.
19: *
20: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30: * SUCH DAMAGE.
31: *
32: * @(#)ufsmount.h 8.4 (Berkeley) 10/27/94
33: */
34:
35: struct buf;
36: struct inode;
37: struct nameidata;
38: struct timeval;
39: struct ucred;
40: struct uio;
41: struct vnode;
42: struct netexport;
43:
44: /* This structure describes the UFS specific mount structure data. */
45: struct ufsmount {
46: struct mount *um_mountp; /* filesystem vfs structure */
47: dev_t um_dev; /* device mounted */
48: struct vnode *um_devvp; /* block device mounted vnode */
49: u_long um_fstype; /* type of file system */
50:
51: union { /* pointer to superblock */
52: struct fs *fs; /* FFS */
53: struct m_ext2fs *e2fs; /* EXT2FS */
54: } ufsmount_u;
55: #define um_fs ufsmount_u.fs
56: #define um_e2fs ufsmount_u.e2fs
57: #define um_e2fsb ufsmount_u.e2fs->s_es
58:
59: struct vnode *um_quotas[MAXQUOTAS]; /* pointer to quota files */
60: struct ucred *um_cred[MAXQUOTAS]; /* quota file access cred */
61: u_long um_nindir; /* indirect ptrs per block */
62: u_long um_bptrtodb; /* indir ptr to disk block */
63: u_long um_seqinc; /* inc between seq blocks */
64: time_t um_btime[MAXQUOTAS]; /* block quota time limit */
65: time_t um_itime[MAXQUOTAS]; /* inode quota time limit */
66: char um_qflags[MAXQUOTAS]; /* quota specific flags */
67: struct netexport um_export; /* export information */
68: u_int64_t um_savedmaxfilesize; /* XXX - limit maxfilesize */
69: };
70:
71: /*
72: * Filesystem types
73: */
74: #define UM_UFS1 1
75: #define UM_UFS2 2
76: #define UM_EXT2FS 3
77:
78: /*
79: * Flags describing the state of quotas.
80: */
81: #define QTF_OPENING 0x01 /* Q_QUOTAON in progress */
82: #define QTF_CLOSING 0x02 /* Q_QUOTAOFF in progress */
83:
84: /* Convert mount ptr to ufsmount ptr. */
85: #define VFSTOUFS(mp) ((struct ufsmount *)((mp)->mnt_data))
86:
87: /*
88: * Macros to access file system parameters in the ufsmount structure.
89: * Used by ufs_bmap.
90: */
91: #define MNINDIR(ump) ((ump)->um_nindir)
92: #define blkptrtodb(ump, b) ((b) << (ump)->um_bptrtodb)
93: #define is_sequential(ump, a, b) ((b) == (a) + ump->um_seqinc)
CVSweb