1/*
2 * Copyright (c) 2000-2005 Silicon Graphics, Inc.
3 * All Rights Reserved.
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it would be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write the Free Software Foundation,
16 * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17 */
18#ifndef __XFS_SUPER_H__
19#define __XFS_SUPER_H__
20
21#ifdef CONFIG_XFS_DMAPI
22# define vfs_insertdmapi(vfs)	vfs_insertops(vfsp, &xfs_dmops)
23# define vfs_initdmapi()	dmapi_init()
24# define vfs_exitdmapi()	dmapi_uninit()
25#else
26# define vfs_insertdmapi(vfs)	do { } while (0)
27# define vfs_initdmapi()	do { } while (0)
28# define vfs_exitdmapi()	do { } while (0)
29#endif
30
31#ifdef CONFIG_XFS_QUOTA
32# define vfs_insertquota(vfs)	vfs_insertops(vfsp, &xfs_qmops)
33# define vfs_initquota()	xfs_qm_init()
34# define vfs_exitquota()	xfs_qm_exit()
35#else
36# define vfs_insertquota(vfs)	do { } while (0)
37# define vfs_initquota()	do { } while (0)
38# define vfs_exitquota()	do { } while (0)
39#endif
40
41#ifdef CONFIG_XFS_POSIX_ACL
42# define XFS_ACL_STRING		"ACLs, "
43# define set_posix_acl_flag(sb)	((sb)->s_flags |= MS_POSIXACL)
44#else
45# define XFS_ACL_STRING
46# define set_posix_acl_flag(sb)	do { } while (0)
47#endif
48
49#ifdef CONFIG_XFS_SECURITY
50# define XFS_SECURITY_STRING	"security attributes, "
51# define ENOSECURITY		0
52#else
53# define XFS_SECURITY_STRING
54# define ENOSECURITY		EOPNOTSUPP
55#endif
56
57#ifdef CONFIG_XFS_RT
58# define XFS_REALTIME_STRING	"realtime, "
59#else
60# define XFS_REALTIME_STRING
61#endif
62
63#if XFS_BIG_BLKNOS
64# if XFS_BIG_INUMS
65#  define XFS_BIGFS_STRING	"large block/inode numbers, "
66# else
67#  define XFS_BIGFS_STRING	"large block numbers, "
68# endif
69#else
70# define XFS_BIGFS_STRING
71#endif
72
73#ifdef CONFIG_XFS_TRACE
74# define XFS_TRACE_STRING	"tracing, "
75#else
76# define XFS_TRACE_STRING
77#endif
78
79#ifdef XFSDEBUG
80# define XFS_DBG_STRING		"debug"
81#else
82# define XFS_DBG_STRING		"no debug"
83#endif
84
85#define XFS_BUILD_OPTIONS	XFS_ACL_STRING \
86				XFS_SECURITY_STRING \
87				XFS_REALTIME_STRING \
88				XFS_BIGFS_STRING \
89				XFS_TRACE_STRING \
90				XFS_DBG_STRING /* DBG must be last */
91
92struct xfs_inode;
93struct xfs_mount;
94struct xfs_buftarg;
95
96extern __uint64_t xfs_max_file_offset(unsigned int);
97
98extern void xfs_initialize_vnode(bhv_desc_t *, xfs_vnode_t *, bhv_desc_t *, int);
99
100extern void xfs_flush_inode(struct xfs_inode *);
101extern void xfs_flush_device(struct xfs_inode *);
102
103extern int  xfs_blkdev_get(struct xfs_mount *, const char *,
104				struct block_device **);
105extern void xfs_blkdev_put(struct block_device *);
106extern void xfs_blkdev_issue_flush(struct xfs_buftarg *);
107
108extern struct export_operations xfs_export_operations;
109
110extern int init_xfs_fs(void);
111extern void exit_xfs_fs(void);
112
113#endif	/* __XFS_SUPER_H__ */
114