[GFS2] Add an additional argument to gfs2_trans_add_bh()
[linux-2.6] / fs / gfs2 / jdata.h
1 /*
2  * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
3  * Copyright (C) 2004-2005 Red Hat, Inc.  All rights reserved.
4  *
5  * This copyrighted material is made available to anyone wishing to use,
6  * modify, copy, or redistribute it subject to the terms and conditions
7  * of the GNU General Public License v.2.
8  */
9
10 #ifndef __FILE_DOT_H__
11 #define __FILE_DOT_H__
12
13 int gfs2_jdata_get_buffer(struct gfs2_inode *ip, uint64_t block, int new,
14                           struct buffer_head **bhp);
15
16 typedef int (*read_copy_fn_t) (struct buffer_head *bh, char **buf,
17                                unsigned int offset, unsigned int size);
18 typedef int (*write_copy_fn_t) (struct gfs2_inode *ip,
19                                 struct buffer_head *bh, const char **buf,
20                                 unsigned int offset, unsigned int size);
21
22 int gfs2_copy2mem(struct buffer_head *bh, char **buf,
23                   unsigned int offset, unsigned int size);
24 int gfs2_copy2user(struct buffer_head *bh, char __user **buf,
25                    unsigned int offset, unsigned int size);
26 int gfs2_jdata_read(struct gfs2_inode *ip, char __user *buf,
27                     uint64_t offset, unsigned int size,
28                     read_copy_fn_t copy_fn);
29
30 int gfs2_copy_from_mem(struct gfs2_inode *ip,
31                        struct buffer_head *bh, const char **buf,
32                        unsigned int offset, unsigned int size);
33 int gfs2_copy_from_user(struct gfs2_inode *ip,
34                         struct buffer_head *bh, const char __user **buf,
35                         unsigned int offset, unsigned int size);
36 int gfs2_jdata_write(struct gfs2_inode *ip, const char __user *buf,
37                      uint64_t offset, unsigned int size,
38                      write_copy_fn_t copy_fn);
39
40 static inline int gfs2_jdata_read_mem(struct gfs2_inode *ip, char *buf,
41                                       uint64_t offset, unsigned int size)
42 {
43         return gfs2_jdata_read(ip, (__force char __user *)buf, offset, size, gfs2_copy2mem);
44 }
45
46 static inline int gfs2_jdata_write_mem(struct gfs2_inode *ip, const char *buf,
47                                        uint64_t offset, unsigned int size)
48 {
49         return gfs2_jdata_write(ip, (__force const char __user *)buf, offset, size, gfs2_copy_from_mem);
50 }
51
52 #endif /* __FILE_DOT_H__ */