diff options
Diffstat (limited to 'fs/ext4/ext4.h')
| -rw-r--r-- | fs/ext4/ext4.h | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 22833691e98c..ca9fda64dd4f 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h | |||
| @@ -168,7 +168,20 @@ struct mpage_da_data { | |||
| 168 | int pages_written; | 168 | int pages_written; |
| 169 | int retval; | 169 | int retval; |
| 170 | }; | 170 | }; |
| 171 | #define EXT4_IO_UNWRITTEN 0x1 | 171 | |
| 172 | /* | ||
| 173 | * Flags for ext4_io_end->flags | ||
| 174 | */ | ||
| 175 | #define EXT4_IO_END_UNWRITTEN 0x0001 | ||
| 176 | #define EXT4_IO_END_ERROR 0x0002 | ||
| 177 | |||
| 178 | struct ext4_io_page { | ||
| 179 | struct page *p_page; | ||
| 180 | int p_count; | ||
| 181 | }; | ||
| 182 | |||
| 183 | #define MAX_IO_PAGES 128 | ||
| 184 | |||
| 172 | typedef struct ext4_io_end { | 185 | typedef struct ext4_io_end { |
| 173 | struct list_head list; /* per-file finished IO list */ | 186 | struct list_head list; /* per-file finished IO list */ |
| 174 | struct inode *inode; /* file being written to */ | 187 | struct inode *inode; /* file being written to */ |
| @@ -179,8 +192,18 @@ typedef struct ext4_io_end { | |||
| 179 | struct work_struct work; /* data work queue */ | 192 | struct work_struct work; /* data work queue */ |
| 180 | struct kiocb *iocb; /* iocb struct for AIO */ | 193 | struct kiocb *iocb; /* iocb struct for AIO */ |
| 181 | int result; /* error value for AIO */ | 194 | int result; /* error value for AIO */ |
| 195 | int num_io_pages; | ||
| 196 | struct ext4_io_page *pages[MAX_IO_PAGES]; | ||
| 182 | } ext4_io_end_t; | 197 | } ext4_io_end_t; |
| 183 | 198 | ||
| 199 | struct ext4_io_submit { | ||
| 200 | int io_op; | ||
| 201 | struct bio *io_bio; | ||
| 202 | ext4_io_end_t *io_end; | ||
| 203 | struct ext4_io_page *io_page; | ||
| 204 | sector_t io_next_block; | ||
| 205 | }; | ||
| 206 | |||
| 184 | /* | 207 | /* |
| 185 | * Special inodes numbers | 208 | * Special inodes numbers |
| 186 | */ | 209 | */ |
| @@ -2044,6 +2067,17 @@ extern int ext4_move_extents(struct file *o_filp, struct file *d_filp, | |||
| 2044 | __u64 start_orig, __u64 start_donor, | 2067 | __u64 start_orig, __u64 start_donor, |
| 2045 | __u64 len, __u64 *moved_len); | 2068 | __u64 len, __u64 *moved_len); |
| 2046 | 2069 | ||
| 2070 | /* page-io.c */ | ||
| 2071 | extern int __init init_ext4_pageio(void); | ||
| 2072 | extern void exit_ext4_pageio(void); | ||
| 2073 | extern void ext4_free_io_end(ext4_io_end_t *io); | ||
| 2074 | extern ext4_io_end_t *ext4_init_io_end(struct inode *inode, gfp_t flags); | ||
| 2075 | extern int ext4_end_io_nolock(ext4_io_end_t *io); | ||
| 2076 | extern void ext4_io_submit(struct ext4_io_submit *io); | ||
| 2077 | extern int ext4_bio_write_page(struct ext4_io_submit *io, | ||
| 2078 | struct page *page, | ||
| 2079 | int len, | ||
| 2080 | struct writeback_control *wbc); | ||
| 2047 | 2081 | ||
| 2048 | /* BH_Uninit flag: blocks are allocated but uninitialized on disk */ | 2082 | /* BH_Uninit flag: blocks are allocated but uninitialized on disk */ |
| 2049 | enum ext4_state_bits { | 2083 | enum ext4_state_bits { |
