1 #ifndef _EXT4_JBD2_H
2 #define _EXT4_JBD2_H
3 
4 /*
5  * Wrapper functions with which ext4 calls into JBD.
6  */
7 void ext4_journal_abort_handle(const char *caller, unsigned int line,
8 			       const char *err_fn, struct buffer_head *bh,
9 			       handle_t *handle, int err);
10 
11 int __ext4_handle_dirty_super(const char *where, unsigned int line,
12 			      handle_t *handle, struct super_block *sb);
13 
14 int __ext4_journal_get_write_access(const char *where, unsigned int line,
15 				    void *icb, handle_t *handle, struct buffer_head *bh);
16 
17 int __ext4_forget(const char *where, unsigned int line, void *icb, handle_t *handle,
18 		  int is_metadata, struct inode *inode,
19 		  struct buffer_head *bh, ext4_fsblk_t blocknr);
20 
21 int __ext4_journal_get_create_access(const char *where, unsigned int line,
22 				void *icb, handle_t *handle, struct buffer_head *bh);
23 
24 int __ext4_handle_dirty_metadata(const char *where, unsigned int line,
25 				 void *icb, handle_t *handle, struct inode *inode,
26 				 struct buffer_head *bh);
27 
28 #define ext4_journal_get_write_access(handle, icb, bh) \
29 	__ext4_journal_get_write_access("", __LINE__, (icb), (handle), (bh))
30 #define ext4_forget(handle, icb, is_metadata, inode, bh, block_nr) \
31 	__ext4_forget("", __LINE__, (icb), (handle), (is_metadata), (inode), \
32 		      (bh), (block_nr))
33 #define ext4_journal_get_create_access(handle, icb, bh) \
34 	__ext4_journal_get_create_access("", __LINE__, (icb), (handle), (bh))
35 #define ext4_handle_dirty_metadata(handle, icb, inode, bh) \
36 	__ext4_handle_dirty_metadata("", __LINE__, (icb), (handle), (inode), \
37 				     (bh))
38 
39 handle_t *__ext4_journal_start_sb(void *icb, struct super_block *sb, unsigned int line,
40 				  int type, int blocks, int rsv_blocks);
41 int __ext4_journal_stop(const char *where, unsigned int line, void *icb, handle_t *handle);
42 
43 #define ext4_journal_start_sb(icb, sb, type, nblocks)			\
44 	__ext4_journal_start_sb((icb), (sb), __LINE__, (type), (nblocks), 0)
45 
46 #define ext4_journal_start(icb, inode, type, nblocks)			\
47 	__ext4_journal_start((icb), (inode), __LINE__, (type), (nblocks), 0)
48 
49 static inline handle_t *__ext4_journal_start(void *icb, struct inode *inode,
50 					     unsigned int line, int type,
51 					     int blocks, int rsv_blocks)
52 {
53 	return __ext4_journal_start_sb(icb, inode->i_sb, line, type, blocks,
54 				       rsv_blocks);
55 }
56 
57 #define ext4_journal_stop(icb, handle) \
58 	__ext4_journal_stop("", __LINE__, (icb), (handle))
59 
60 static inline int ext4_journal_extend(void *icb, handle_t *handle, int nblocks)
61 {
62 	return 0;
63 }
64 
65 #endif
66