xref: /dflybsd-src/usr.sbin/makefs/ffs/ufs_inode.h (revision 6bcbb70689f75becac690aa6759a3ab7b0800344)
15978408cSSascha Wildner /*	$NetBSD: ufs_inode.h,v 1.3 2003/08/07 11:25:34 agc Exp $	*/
25978408cSSascha Wildner /* From:  NetBSD: inode.h,v 1.27 2001/12/18 10:57:23 fvdl Exp $ */
35978408cSSascha Wildner 
45978408cSSascha Wildner /*-
55978408cSSascha Wildner  * SPDX-License-Identifier: BSD-3-Clause
65978408cSSascha Wildner  *
75978408cSSascha Wildner  * Copyright (c) 1982, 1989, 1993
85978408cSSascha Wildner  *	The Regents of the University of California.  All rights reserved.
95978408cSSascha Wildner  * (c) UNIX System Laboratories, Inc.
105978408cSSascha Wildner  * All or some portions of this file are derived from material licensed
115978408cSSascha Wildner  * to the University of California by American Telephone and Telegraph
125978408cSSascha Wildner  * Co. or Unix System Laboratories, Inc. and are reproduced herein with
135978408cSSascha Wildner  * the permission of UNIX System Laboratories, Inc.
145978408cSSascha Wildner  *
155978408cSSascha Wildner  * Redistribution and use in source and binary forms, with or without
165978408cSSascha Wildner  * modification, are permitted provided that the following conditions
175978408cSSascha Wildner  * are met:
185978408cSSascha Wildner  * 1. Redistributions of source code must retain the above copyright
195978408cSSascha Wildner  *    notice, this list of conditions and the following disclaimer.
205978408cSSascha Wildner  * 2. Redistributions in binary form must reproduce the above copyright
215978408cSSascha Wildner  *    notice, this list of conditions and the following disclaimer in the
225978408cSSascha Wildner  *    documentation and/or other materials provided with the distribution.
235978408cSSascha Wildner  * 3. Neither the name of the University nor the names of its contributors
245978408cSSascha Wildner  *    may be used to endorse or promote products derived from this software
255978408cSSascha Wildner  *    without specific prior written permission.
265978408cSSascha Wildner  *
275978408cSSascha Wildner  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
285978408cSSascha Wildner  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
295978408cSSascha Wildner  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
305978408cSSascha Wildner  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
315978408cSSascha Wildner  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
325978408cSSascha Wildner  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
335978408cSSascha Wildner  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
345978408cSSascha Wildner  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
355978408cSSascha Wildner  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
365978408cSSascha Wildner  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
375978408cSSascha Wildner  * SUCH DAMAGE.
385978408cSSascha Wildner  *
395978408cSSascha Wildner  *	@(#)inode.h	8.9 (Berkeley) 5/14/95
405978408cSSascha Wildner  * $FreeBSD: head/usr.sbin/makefs/ffs/ufs_inode.h 326025 2017-11-20 19:49:47Z pfg $
415978408cSSascha Wildner  */
425978408cSSascha Wildner 
435978408cSSascha Wildner union dinode {
445978408cSSascha Wildner 	struct ufs1_dinode ffs1_din;
45811c2036SSascha Wildner #ifndef __DragonFly__ /* XXX UFS2 */
465978408cSSascha Wildner 	struct ufs2_dinode ffs2_din;
47811c2036SSascha Wildner #endif
485978408cSSascha Wildner };
495978408cSSascha Wildner 
505978408cSSascha Wildner struct inode {
515978408cSSascha Wildner 	ino_t		i_number;	/* The identity of the inode. */
52*6bcbb706STomohiro Kusumi 	struct m_vnode	*i_devvp;	/* vnode pointer (contains fsopts) */
535978408cSSascha Wildner 	struct fs	*i_fs;		/* File system */
545978408cSSascha Wildner 	union dinode	i_din;
555978408cSSascha Wildner 	uint64_t	i_size;
565978408cSSascha Wildner };
575978408cSSascha Wildner 
585978408cSSascha Wildner #define	i_ffs1_atime		i_din.ffs1_din.di_atime
595978408cSSascha Wildner #define	i_ffs1_atimensec	i_din.ffs1_din.di_atimensec
605978408cSSascha Wildner #define	i_ffs1_blocks		i_din.ffs1_din.di_blocks
615978408cSSascha Wildner #define	i_ffs1_ctime		i_din.ffs1_din.di_ctime
625978408cSSascha Wildner #define	i_ffs1_ctimensec	i_din.ffs1_din.di_ctimensec
635978408cSSascha Wildner #define	i_ffs1_db		i_din.ffs1_din.di_db
645978408cSSascha Wildner #define	i_ffs1_flags		i_din.ffs1_din.di_flags
655978408cSSascha Wildner #define	i_ffs1_gen		i_din.ffs1_din.di_gen
665978408cSSascha Wildner #define	i_ffs11_gid		i_din.ffs1_din.di_gid
675978408cSSascha Wildner #define	i_ffs1_ib		i_din.ffs1_din.di_ib
685978408cSSascha Wildner #define	i_ffs1_mode		i_din.ffs1_din.di_mode
695978408cSSascha Wildner #define	i_ffs1_mtime		i_din.ffs1_din.di_mtime
705978408cSSascha Wildner #define	i_ffs1_mtimensec	i_din.ffs1_din.di_mtimensec
715978408cSSascha Wildner #define	i_ffs1_nlink		i_din.ffs1_din.di_nlink
725978408cSSascha Wildner #define	i_ffs1_rdev		i_din.ffs1_din.di_rdev
735978408cSSascha Wildner #define	i_ffs1_shortlink	i_din.ffs1_din.db
745978408cSSascha Wildner #define	i_ffs1_size		i_din.ffs1_din.di_size
755978408cSSascha Wildner #define	i_ffs1_uid		i_din.ffs1_din.di_uid
765978408cSSascha Wildner 
77811c2036SSascha Wildner #ifndef __DragonFly__ /* XXX UFS2 */
785978408cSSascha Wildner #define	i_ffs2_atime		i_din.ffs2_din.di_atime
795978408cSSascha Wildner #define	i_ffs2_atimensec	i_din.ffs2_din.di_atimensec
805978408cSSascha Wildner #define	i_ffs2_blocks		i_din.ffs2_din.di_blocks
815978408cSSascha Wildner #define	i_ffs2_ctime		i_din.ffs2_din.di_ctime
825978408cSSascha Wildner #define	i_ffs2_ctimensec	i_din.ffs2_din.di_ctimensec
835978408cSSascha Wildner #define	i_ffs2_birthtime	i_din.ffs2_din.di_birthtime
845978408cSSascha Wildner #define	i_ffs2_birthnsec	i_din.ffs2_din.di_birthnsec
855978408cSSascha Wildner #define	i_ffs2_db		i_din.ffs2_din.di_db
865978408cSSascha Wildner #define	i_ffs2_flags		i_din.ffs2_din.di_flags
875978408cSSascha Wildner #define	i_ffs2_gen		i_din.ffs2_din.di_gen
885978408cSSascha Wildner #define	i_ffs21_gid		i_din.ffs2_din.di_gid
895978408cSSascha Wildner #define	i_ffs2_ib		i_din.ffs2_din.di_ib
905978408cSSascha Wildner #define	i_ffs2_mode		i_din.ffs2_din.di_mode
915978408cSSascha Wildner #define	i_ffs2_mtime		i_din.ffs2_din.di_mtime
925978408cSSascha Wildner #define	i_ffs2_mtimensec	i_din.ffs2_din.di_mtimensec
935978408cSSascha Wildner #define	i_ffs2_nlink		i_din.ffs2_din.di_nlink
945978408cSSascha Wildner #define	i_ffs2_rdev		i_din.ffs2_din.di_rdev
955978408cSSascha Wildner #define	i_ffs2_shortlink	i_din.ffs2_din.db
965978408cSSascha Wildner #define	i_ffs2_size		i_din.ffs2_din.di_size
975978408cSSascha Wildner #define	i_ffs2_uid		i_din.ffs2_din.di_uid
98811c2036SSascha Wildner #endif
995978408cSSascha Wildner 
1005978408cSSascha Wildner #undef DIP
101811c2036SSascha Wildner #if 0 /* XXX UFS2 */
1025978408cSSascha Wildner #define DIP(ip, field) \
1035978408cSSascha Wildner         (((ip)->i_fs->fs_magic == FS_UFS1_MAGIC) ? \
1045978408cSSascha Wildner         (ip)->i_ffs1_##field : (ip)->i_ffs2_##field)
105811c2036SSascha Wildner #else
106811c2036SSascha Wildner #define DIP(ip, field) ((ip)->i_ffs1_##field)
107811c2036SSascha Wildner #endif
108