diff options
Diffstat (limited to 'fs/ocfs2/buffer_head_io.h')
-rw-r--r-- | fs/ocfs2/buffer_head_io.h | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/fs/ocfs2/buffer_head_io.h b/fs/ocfs2/buffer_head_io.h index 75e1dcb1ade7..c75d682dadd8 100644 --- a/fs/ocfs2/buffer_head_io.h +++ b/fs/ocfs2/buffer_head_io.h | |||
@@ -31,21 +31,24 @@ | |||
31 | void ocfs2_end_buffer_io_sync(struct buffer_head *bh, | 31 | void ocfs2_end_buffer_io_sync(struct buffer_head *bh, |
32 | int uptodate); | 32 | int uptodate); |
33 | 33 | ||
34 | static inline int ocfs2_read_block(struct inode *inode, | ||
35 | u64 off, | ||
36 | struct buffer_head **bh); | ||
37 | |||
38 | int ocfs2_write_block(struct ocfs2_super *osb, | 34 | int ocfs2_write_block(struct ocfs2_super *osb, |
39 | struct buffer_head *bh, | 35 | struct buffer_head *bh, |
40 | struct inode *inode); | 36 | struct inode *inode); |
41 | int ocfs2_read_blocks(struct inode *inode, | ||
42 | u64 block, | ||
43 | int nr, | ||
44 | struct buffer_head *bhs[], | ||
45 | int flags); | ||
46 | int ocfs2_read_blocks_sync(struct ocfs2_super *osb, u64 block, | 37 | int ocfs2_read_blocks_sync(struct ocfs2_super *osb, u64 block, |
47 | unsigned int nr, struct buffer_head *bhs[]); | 38 | unsigned int nr, struct buffer_head *bhs[]); |
48 | 39 | ||
40 | /* | ||
41 | * If not NULL, validate() will be called on a buffer that is freshly | ||
42 | * read from disk. It will not be called if the buffer was in cache. | ||
43 | * Note that if validate() is being used for this buffer, it needs to | ||
44 | * be set even for a READAHEAD call, as it marks the buffer for later | ||
45 | * validation. | ||
46 | */ | ||
47 | int ocfs2_read_blocks(struct inode *inode, u64 block, int nr, | ||
48 | struct buffer_head *bhs[], int flags, | ||
49 | int (*validate)(struct super_block *sb, | ||
50 | struct buffer_head *bh)); | ||
51 | |||
49 | int ocfs2_write_super_or_backup(struct ocfs2_super *osb, | 52 | int ocfs2_write_super_or_backup(struct ocfs2_super *osb, |
50 | struct buffer_head *bh); | 53 | struct buffer_head *bh); |
51 | 54 | ||
@@ -53,7 +56,9 @@ int ocfs2_write_super_or_backup(struct ocfs2_super *osb, | |||
53 | #define OCFS2_BH_READAHEAD 8 | 56 | #define OCFS2_BH_READAHEAD 8 |
54 | 57 | ||
55 | static inline int ocfs2_read_block(struct inode *inode, u64 off, | 58 | static inline int ocfs2_read_block(struct inode *inode, u64 off, |
56 | struct buffer_head **bh) | 59 | struct buffer_head **bh, |
60 | int (*validate)(struct super_block *sb, | ||
61 | struct buffer_head *bh)) | ||
57 | { | 62 | { |
58 | int status = 0; | 63 | int status = 0; |
59 | 64 | ||
@@ -63,7 +68,7 @@ static inline int ocfs2_read_block(struct inode *inode, u64 off, | |||
63 | goto bail; | 68 | goto bail; |
64 | } | 69 | } |
65 | 70 | ||
66 | status = ocfs2_read_blocks(inode, off, 1, bh, 0); | 71 | status = ocfs2_read_blocks(inode, off, 1, bh, 0, validate); |
67 | 72 | ||
68 | bail: | 73 | bail: |
69 | return status; | 74 | return status; |