Whamcloud - gitweb
obdfs/flushd.c: removed iput() from dequeue routine, as we no longer remove
[fs/lustre-release.git] / lustre / include / linux / obd_ext2.h
1 #ifndef _OBD_EXT2
2 #define _OBD_EXT2
3
4 #define OBD_EXT2_RUNIT           _IOWR('f', 61, long)
5
6 #include <linux/iobuf.h>
7
8 struct ext2_obd {
9         struct super_block * ext2_sb;
10 };
11
12
13 /* development definitions */
14 extern struct obdfs_sb_info *obd_sbi;
15 extern struct file_operations *obd_fso;
16
17 /* ext2_obd.c */
18 extern struct obd_ops ext2_obd_ops;
19
20 /* balloc.c */
21 int ext2_new_block (const struct inode * inode, unsigned long goal,
22                    u32 * prealloc_count, u32 * prealloc_block, int * err);
23 void ext2_free_blocks (const struct inode * inode, unsigned long block,
24                       unsigned long count);
25 unsigned long ext2_count_free_blocks (struct super_block * sb);
26 int ext2_group_sparse(int group);
27 struct ext2_group_desc * ext2_get_group_desc(struct super_block * sb,
28                                              unsigned int block_group,
29                                              struct buffer_head ** bh);
30
31 /* bitmap.c */
32 unsigned long ext2_count_free(struct buffer_head * map, unsigned int numchars);
33
34 /* fsync.c */
35 int ext2_sync_file(struct file * file, struct dentry *dentry);
36
37 /* ialloc.c */
38 void ext2_free_inode (struct inode * inode);
39 struct inode * ext2_new_inode (const struct inode * dir, int mode,
40                                      int * err);
41 unsigned long ext2_count_free_inodes (struct super_block * sb);
42 void ext2_check_inodes_bitmap (struct super_block * sb);
43 int load_inode_bitmap (struct super_block * sb,
44                               unsigned int block_group);
45
46 /* inode.c */
47 inline long ext2_block_map (struct inode * inode, long block);
48
49
50 /* super.c */
51 #ifdef EXT2_OBD_DEBUG
52 #  undef ext2_debug
53 #  define ext2_debug(format, a...) CDEBUG(D_EXT2, format, ## a)
54 #  define ext2_error ext2_warning
55 #  define ext2_panic ext2_warning
56 #  define ext2_warning(sb, func, format, a...) CDEBUG(D_WARNING, format, ## a)
57 #else
58 #  undef ext2_debug
59 #  define ext2_debug(format, a...) {}
60 #  define ext2_error(sb, func, format, a...) printk(KERN_ERR "%s: " format, func, ## a);
61 #  define ext2_panic(sb, func, format, a...) printk(KERN_CRIT "%s: " format, func, ## a);
62 #  define ext2_warning(sb, func, format, a...) printk(KERN_WARNING "%s: " format, func, ## a);
63 #endif
64
65
66 int obd_remount (struct super_block * sb, int * flags, char * data);
67 struct super_block * ext2_read_super (struct super_block * sb, void * data,
68                                       int silent);
69
70 /* truncate.c */
71 void obd_truncate (struct inode * inode);
72
73 /* operations */
74 /* dir.c */
75 extern struct inode_operations ext2_dir_inode_operations;
76
77 /* file.c */
78 extern struct file_operations ext2_file_operations;
79 extern struct inode_operations ext2_file_inode_operations;
80
81 /* super.c */
82 extern struct super_operations ext2_sops;
83
84 static inline struct page *addr_to_page(char *buf)
85 {
86         unsigned long addr = (unsigned long)buf;
87         unsigned long map_nr;
88
89 #ifdef CONFIG_DISCONTIGMEM
90         if (addr == 0) return;
91 #endif
92         map_nr = MAP_NR(addr);
93         if (map_nr < max_mapnr)
94                 return mem_map + map_nr;
95         else 
96                 return 0;
97 }
98
99
100 #endif