1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2000-2005 Silicon Graphics, Inc.
4  * All Rights Reserved.
5  */
6 #ifndef __XFS_SUPER_H__
7 #define __XFS_SUPER_H__
8 
9 #include <linux/exportfs.h>
10 
11 #ifdef CONFIG_XFS_QUOTA
12 extern int xfs_qm_init(void);
13 extern void xfs_qm_exit(void);
14 # define XFS_QUOTA_STRING	"quota, "
15 #else
16 # define xfs_qm_init()	(0)
17 # define xfs_qm_exit()	do { } while (0)
18 # define XFS_QUOTA_STRING
19 #endif
20 
21 #ifdef CONFIG_XFS_POSIX_ACL
22 # define XFS_ACL_STRING		"ACLs, "
23 # define set_posix_acl_flag(sb)	((sb)->s_flags |= SB_POSIXACL)
24 #else
25 # define XFS_ACL_STRING
26 # define set_posix_acl_flag(sb)	do { } while (0)
27 #endif
28 
29 #define XFS_SECURITY_STRING	"security attributes, "
30 
31 #ifdef CONFIG_XFS_RT
32 # define XFS_REALTIME_STRING	"realtime, "
33 #else
34 # define XFS_REALTIME_STRING
35 #endif
36 
37 #ifdef CONFIG_XFS_ONLINE_SCRUB
38 # define XFS_SCRUB_STRING	"scrub, "
39 #else
40 # define XFS_SCRUB_STRING
41 #endif
42 
43 #ifdef CONFIG_XFS_ONLINE_REPAIR
44 # define XFS_REPAIR_STRING	"repair, "
45 #else
46 # define XFS_REPAIR_STRING
47 #endif
48 
49 #ifdef CONFIG_XFS_WARN
50 # define XFS_WARN_STRING	"verbose warnings, "
51 #else
52 # define XFS_WARN_STRING
53 #endif
54 
55 #ifdef CONFIG_XFS_ASSERT_FATAL
56 # define XFS_ASSERT_FATAL_STRING	"fatal assert, "
57 #else
58 # define XFS_ASSERT_FATAL_STRING
59 #endif
60 
61 #ifdef DEBUG
62 # define XFS_DBG_STRING		"debug"
63 #else
64 # define XFS_DBG_STRING		"no debug"
65 #endif
66 
67 #define XFS_VERSION_STRING	"SGI XFS"
68 #define XFS_BUILD_OPTIONS	XFS_ACL_STRING \
69 				XFS_SECURITY_STRING \
70 				XFS_REALTIME_STRING \
71 				XFS_SCRUB_STRING \
72 				XFS_REPAIR_STRING \
73 				XFS_WARN_STRING \
74 				XFS_QUOTA_STRING \
75 				XFS_ASSERT_FATAL_STRING \
76 				XFS_DBG_STRING /* DBG must be last */
77 
78 #ifdef DEBUG
79 # define XFS_WQFLAGS(wqflags)	(WQ_SYSFS | (wqflags))
80 #else
81 # define XFS_WQFLAGS(wqflags)	(wqflags)
82 #endif
83 
84 struct xfs_inode;
85 struct xfs_mount;
86 struct xfs_buftarg;
87 struct block_device;
88 
89 extern void xfs_flush_inodes(struct xfs_mount *mp);
90 extern xfs_agnumber_t xfs_set_inode_alloc(struct xfs_mount *,
91 					   xfs_agnumber_t agcount);
92 
93 extern const struct export_operations xfs_export_operations;
94 extern const struct xattr_handler *xfs_xattr_handlers[];
95 extern const struct quotactl_ops xfs_quotactl_operations;
96 
97 extern void xfs_reinit_percpu_counters(struct xfs_mount *mp);
98 
99 extern struct workqueue_struct *xfs_discard_wq;
100 
101 #define XFS_M(sb)		((struct xfs_mount *)((sb)->s_fs_info))
102 
103 #endif	/* __XFS_SUPER_H__ */
104