Blame view

fs/ufs/ufs.h 5.01 KB
b24413180   Greg Kroah-Hartman   License cleanup: ...
1
  /* SPDX-License-Identifier: GPL-2.0 */
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
2
3
  #ifndef _UFS_UFS_H
  #define _UFS_UFS_H 1
de771bdaa   Fabian Frederick   fs/ufs: use pr_fmt
4
5
6
7
8
  #ifdef pr_fmt
  #undef pr_fmt
  #endif
  
  #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  #define UFS_MAX_GROUP_LOADED 8
  #define UFS_CGNO_EMPTY ((unsigned)-1)
  
  struct ufs_sb_private_info;
  struct ufs_cg_private_info;
  struct ufs_csum;
  
  struct ufs_sb_info {
  	struct ufs_sb_private_info * s_uspi;
  	struct ufs_csum	* s_csp;
  	unsigned s_bytesex;
  	unsigned s_flags;
  	struct buffer_head ** s_ucg;
  	struct ufs_cg_private_info * s_ucpi[UFS_MAX_GROUP_LOADED];
  	unsigned s_cgno[UFS_MAX_GROUP_LOADED];
  	unsigned short s_cg_loaded;
  	unsigned s_mount_opt;
9e9ad5f40   Artem Bityutskiy   fs/ufs: get rid o...
26
27
28
29
  	struct super_block *sb;
  	int work_queued; /* non-zero if the delayed work is queued */
  	struct delayed_work sync_work; /* FS sync delayed work */
  	spinlock_t work_lock; /* protects sync_work and work_queued */
cdd9eefdf   Fabian Frederick   fs/ufs: restore s...
30
  	struct mutex s_lock;
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
31
32
33
34
35
  };
  
  struct ufs_inode_info {
  	union {
  		__fs32	i_data[15];
f33219b7a   Duane Griffin   ufs: don't trunca...
36
  		__u8	i_symlink[2 * 4 * 15];
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
37
38
39
40
41
42
43
44
45
  		__fs64	u2_i_data[15];
  	} i_u1;
  	__u32	i_flags;
  	__u32	i_shadow;
  	__u32	i_unused1;
  	__u32	i_unused2;
  	__u32	i_oeftflag;
  	__u16	i_osync;
  	__u64	i_lastfrag;
724bb09fd   Al Viro   ufs: don't use lo...
46
47
  	seqlock_t meta_lock;
  	struct mutex	truncate_mutex;
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
  	__u32   i_dir_start_lookup;
  	struct inode vfs_inode;
  };
  
  /* mount options */
  #define UFS_MOUNT_ONERROR		0x0000000F
  #define UFS_MOUNT_ONERROR_PANIC		0x00000001
  #define UFS_MOUNT_ONERROR_LOCK		0x00000002
  #define UFS_MOUNT_ONERROR_UMOUNT	0x00000004
  #define UFS_MOUNT_ONERROR_REPAIR	0x00000008
  
  #define UFS_MOUNT_UFSTYPE		0x0000FFF0
  #define UFS_MOUNT_UFSTYPE_OLD		0x00000010
  #define UFS_MOUNT_UFSTYPE_44BSD		0x00000020
  #define UFS_MOUNT_UFSTYPE_SUN		0x00000040
  #define UFS_MOUNT_UFSTYPE_NEXTSTEP	0x00000080
  #define UFS_MOUNT_UFSTYPE_NEXTSTEP_CD	0x00000100
  #define UFS_MOUNT_UFSTYPE_OPENSTEP	0x00000200
  #define UFS_MOUNT_UFSTYPE_SUNx86	0x00000400
  #define UFS_MOUNT_UFSTYPE_HP	        0x00000800
  #define UFS_MOUNT_UFSTYPE_UFS2		0x00001000
  #define UFS_MOUNT_UFSTYPE_SUNOS		0x00002000
  
  #define ufs_clear_opt(o,opt)	o &= ~UFS_MOUNT_##opt
  #define ufs_set_opt(o,opt)	o |= UFS_MOUNT_##opt
  #define ufs_test_opt(o,opt)	((o) & UFS_MOUNT_##opt)
  
  /*
   * Debug code
   */
  #ifdef CONFIG_UFS_DEBUG
  #	define UFSD(f, a...)	{					\
d4beaabd3   Fabian Frederick   fs/ufs: convert U...
80
  		pr_debug("UFSD (%s, %d): %s:",				\
9746077a7   Harvey Harrison   ufs: replace rema...
81
  			__FILE__, __LINE__, __func__);		\
d4beaabd3   Fabian Frederick   fs/ufs: convert U...
82
  		pr_debug(f, ## a);					\
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
  	}
  #else
  #	define UFSD(f, a...)	/**/
  #endif
  
  /* balloc.c */
  extern void ufs_free_fragments (struct inode *, u64, unsigned);
  extern void ufs_free_blocks (struct inode *, u64, unsigned);
  extern u64 ufs_new_fragments(struct inode *, void *, u64, u64,
  			     unsigned, int *, struct page *);
  
  /* cylinder.c */
  extern struct ufs_cg_private_info * ufs_load_cylinder (struct super_block *, unsigned);
  extern void ufs_put_cylinder (struct super_block *, unsigned);
  
  /* dir.c */
  extern const struct inode_operations ufs_dir_inode_operations;
  extern int ufs_add_link (struct dentry *, struct inode *);
89031bc79   Al Viro   sanitize const/si...
101
  extern ino_t ufs_inode_by_name(struct inode *, const struct qstr *);
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
102
  extern int ufs_make_empty(struct inode *, struct inode *);
89031bc79   Al Viro   sanitize const/si...
103
  extern struct ufs_dir_entry *ufs_find_entry(struct inode *, const struct qstr *, struct page **);
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
104
105
106
107
  extern int ufs_delete_entry(struct inode *, struct ufs_dir_entry *, struct page *);
  extern int ufs_empty_dir (struct inode *);
  extern struct ufs_dir_entry *ufs_dotdot(struct inode *, struct page **);
  extern void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de,
70d45cdb6   Al Viro   ufs: don't touch ...
108
  			 struct page *page, struct inode *inode, bool update_times);
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
109
110
111
112
  
  /* file.c */
  extern const struct inode_operations ufs_file_inode_operations;
  extern const struct file_operations ufs_file_operations;
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
113
114
115
116
  extern const struct address_space_operations ufs_aops;
  
  /* ialloc.c */
  extern void ufs_free_inode (struct inode *inode);
6a9a06d9c   Al Viro   ufs: propagate um...
117
  extern struct inode * ufs_new_inode (struct inode *, umode_t);
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
118
119
  
  /* inode.c */
b55c460da   David Howells   iget: stop UFS fr...
120
  extern struct inode *ufs_iget(struct super_block *, unsigned long);
a9185b41a   Christoph Hellwig   pass writeback_co...
121
  extern int ufs_write_inode (struct inode *, struct writeback_control *);
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
122
  extern int ufs_sync_inode (struct inode *);
58e8268c7   Al Viro   switch ufs to ->e...
123
  extern void ufs_evict_inode (struct inode *);
010d331fc   Al Viro   ufs: move truncat...
124
  extern int ufs_setattr(struct dentry *dentry, struct iattr *attr);
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
125
126
127
128
129
  
  /* namei.c */
  extern const struct file_operations ufs_dir_operations;
  
  /* super.c */
b9075fa96   Joe Perches   treewide: use __p...
130
131
132
133
134
135
  extern __printf(3, 4)
  void ufs_warning(struct super_block *, const char *, const char *, ...);
  extern __printf(3, 4)
  void ufs_error(struct super_block *, const char *, const char *, ...);
  extern __printf(3, 4)
  void ufs_panic(struct super_block *, const char *, const char *, ...);
9e9ad5f40   Artem Bityutskiy   fs/ufs: get rid o...
136
  void ufs_mark_sb_dirty(struct super_block *sb);
bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
137

bcd6d4ecf   Christoph Hellwig   ufs: move non-lay...
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
  static inline struct ufs_sb_info *UFS_SB(struct super_block *sb)
  {
  	return sb->s_fs_info;
  }
  
  static inline struct ufs_inode_info *UFS_I(struct inode *inode)
  {
  	return container_of(inode, struct ufs_inode_info, vfs_inode);
  }
  
  /*
   * Give cylinder group number for a file system block.
   * Give cylinder group block number for a file system block.
   */
  /* #define	ufs_dtog(d)	((d) / uspi->s_fpg) */
  static inline u64 ufs_dtog(struct ufs_sb_private_info * uspi, u64 b)
  {
  	do_div(b, uspi->s_fpg);
  	return b;
  }
  /* #define	ufs_dtogd(d)	((d) % uspi->s_fpg) */
  static inline u32 ufs_dtogd(struct ufs_sb_private_info * uspi, u64 b)
  {
  	return do_div(b, uspi->s_fpg);
  }
  
  #endif /* _UFS_UFS_H */