b24413180f560 (Greg Kroah-Hartman 2017-11-01 15:07:57 +0100 1) /* SPDX-License-Identifier: GPL-2.0 */
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 2) #include <linux/fs.h>
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 3) #include <linux/qnx4_fs.h>
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 4)
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 5) #define QNX4_DEBUG 0
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 6)
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 7) #if QNX4_DEBUG
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 8) #define QNX4DEBUG(X) printk X
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 9) #else
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 10) #define QNX4DEBUG(X) (void) 0
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 11) #endif
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 12)
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 13) struct qnx4_sb_info {
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 14) unsigned int Version; /* may be useful */
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 15) struct qnx4_inode_entry *BitMap; /* useful */
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 16) };
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 17)
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 18) struct qnx4_inode_info {
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 19) struct qnx4_inode_entry raw;
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 20) loff_t mmu_private;
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 21) struct inode vfs_inode;
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 22) };
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 23)
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 24) extern struct inode *qnx4_iget(struct super_block *, unsigned long);
00cd8dd3bf95f (Al Viro 2012-06-10 17:13:09 -0400 25) extern struct dentry *qnx4_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags);
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 26) extern unsigned long qnx4_count_free_blocks(struct super_block *sb);
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 27) extern unsigned long qnx4_block_map(struct inode *inode, long iblock);
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 28)
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 29) extern const struct inode_operations qnx4_dir_inode_operations;
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 30) extern const struct file_operations qnx4_dir_operations;
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 31) extern int qnx4_is_free(struct super_block *sb, long block);
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 32)
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 33) static inline struct qnx4_sb_info *qnx4_sb(struct super_block *sb)
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 34) {
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 35) return sb->s_fs_info;
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 36) }
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 37)
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 38) static inline struct qnx4_inode_info *qnx4_i(struct inode *inode)
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 39) {
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 40) return container_of(inode, struct qnx4_inode_info, vfs_inode);
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 41) }
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 42)
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 43) static inline struct qnx4_inode_entry *qnx4_raw_inode(struct inode *inode)
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 44) {
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 45) return &qnx4_i(inode)->raw;
964f5369667b3 (Al Viro 2009-06-07 09:47:13 -0400 46) }