diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/buffer_head.h | 9 | ||||
| -rw-r--r-- | include/linux/fs.h | 27 |
2 files changed, 35 insertions, 1 deletions
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index 05e5f5996216..1b9ba193b789 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h | |||
| @@ -203,6 +203,9 @@ int block_write_full_page_endio(struct page *page, get_block_t *get_block, | |||
| 203 | int block_read_full_page(struct page*, get_block_t*); | 203 | int block_read_full_page(struct page*, get_block_t*); |
| 204 | int block_is_partially_uptodate(struct page *page, read_descriptor_t *desc, | 204 | int block_is_partially_uptodate(struct page *page, read_descriptor_t *desc, |
| 205 | unsigned long from); | 205 | unsigned long from); |
| 206 | int block_write_begin_newtrunc(struct file *, struct address_space *, | ||
| 207 | loff_t, unsigned, unsigned, | ||
| 208 | struct page **, void **, get_block_t*); | ||
| 206 | int block_write_begin(struct file *, struct address_space *, | 209 | int block_write_begin(struct file *, struct address_space *, |
| 207 | loff_t, unsigned, unsigned, | 210 | loff_t, unsigned, unsigned, |
| 208 | struct page **, void **, get_block_t*); | 211 | struct page **, void **, get_block_t*); |
| @@ -214,6 +217,9 @@ int generic_write_end(struct file *, struct address_space *, | |||
| 214 | struct page *, void *); | 217 | struct page *, void *); |
| 215 | void page_zero_new_buffers(struct page *page, unsigned from, unsigned to); | 218 | void page_zero_new_buffers(struct page *page, unsigned from, unsigned to); |
| 216 | int block_prepare_write(struct page*, unsigned, unsigned, get_block_t*); | 219 | int block_prepare_write(struct page*, unsigned, unsigned, get_block_t*); |
| 220 | int cont_write_begin_newtrunc(struct file *, struct address_space *, loff_t, | ||
| 221 | unsigned, unsigned, struct page **, void **, | ||
| 222 | get_block_t *, loff_t *); | ||
| 217 | int cont_write_begin(struct file *, struct address_space *, loff_t, | 223 | int cont_write_begin(struct file *, struct address_space *, loff_t, |
| 218 | unsigned, unsigned, struct page **, void **, | 224 | unsigned, unsigned, struct page **, void **, |
| 219 | get_block_t *, loff_t *); | 225 | get_block_t *, loff_t *); |
| @@ -225,6 +231,9 @@ void block_sync_page(struct page *); | |||
| 225 | sector_t generic_block_bmap(struct address_space *, sector_t, get_block_t *); | 231 | sector_t generic_block_bmap(struct address_space *, sector_t, get_block_t *); |
| 226 | int block_truncate_page(struct address_space *, loff_t, get_block_t *); | 232 | int block_truncate_page(struct address_space *, loff_t, get_block_t *); |
| 227 | int file_fsync(struct file *, int); | 233 | int file_fsync(struct file *, int); |
| 234 | int nobh_write_begin_newtrunc(struct file *, struct address_space *, | ||
| 235 | loff_t, unsigned, unsigned, | ||
| 236 | struct page **, void **, get_block_t*); | ||
| 228 | int nobh_write_begin(struct file *, struct address_space *, | 237 | int nobh_write_begin(struct file *, struct address_space *, |
| 229 | loff_t, unsigned, unsigned, | 238 | loff_t, unsigned, unsigned, |
| 230 | struct page **, void **, get_block_t*); | 239 | struct page **, void **, get_block_t*); |
diff --git a/include/linux/fs.h b/include/linux/fs.h index acf6c52a50dd..3428393942a6 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -2257,6 +2257,10 @@ typedef void (dio_submit_t)(int rw, struct bio *bio, struct inode *inode, | |||
| 2257 | loff_t file_offset); | 2257 | loff_t file_offset); |
| 2258 | void dio_end_io(struct bio *bio, int error); | 2258 | void dio_end_io(struct bio *bio, int error); |
| 2259 | 2259 | ||
| 2260 | ssize_t __blockdev_direct_IO_newtrunc(int rw, struct kiocb *iocb, struct inode *inode, | ||
| 2261 | struct block_device *bdev, const struct iovec *iov, loff_t offset, | ||
| 2262 | unsigned long nr_segs, get_block_t get_block, dio_iodone_t end_io, | ||
| 2263 | dio_submit_t submit_io, int lock_type); | ||
| 2260 | ssize_t __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode, | 2264 | ssize_t __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode, |
| 2261 | struct block_device *bdev, const struct iovec *iov, loff_t offset, | 2265 | struct block_device *bdev, const struct iovec *iov, loff_t offset, |
| 2262 | unsigned long nr_segs, get_block_t get_block, dio_iodone_t end_io, | 2266 | unsigned long nr_segs, get_block_t get_block, dio_iodone_t end_io, |
| @@ -2270,6 +2274,24 @@ enum { | |||
| 2270 | DIO_SKIP_HOLES = 0x02, | 2274 | DIO_SKIP_HOLES = 0x02, |
| 2271 | }; | 2275 | }; |
| 2272 | 2276 | ||
| 2277 | static inline ssize_t blockdev_direct_IO_newtrunc(int rw, struct kiocb *iocb, | ||
| 2278 | struct inode *inode, struct block_device *bdev, const struct iovec *iov, | ||
| 2279 | loff_t offset, unsigned long nr_segs, get_block_t get_block, | ||
| 2280 | dio_iodone_t end_io) | ||
| 2281 | { | ||
| 2282 | return __blockdev_direct_IO_newtrunc(rw, iocb, inode, bdev, iov, offset, | ||
| 2283 | nr_segs, get_block, end_io, NULL, | ||
| 2284 | DIO_LOCKING | DIO_SKIP_HOLES); | ||
| 2285 | } | ||
| 2286 | |||
| 2287 | static inline ssize_t blockdev_direct_IO_no_locking_newtrunc(int rw, struct kiocb *iocb, | ||
| 2288 | struct inode *inode, struct block_device *bdev, const struct iovec *iov, | ||
| 2289 | loff_t offset, unsigned long nr_segs, get_block_t get_block, | ||
| 2290 | dio_iodone_t end_io) | ||
| 2291 | { | ||
| 2292 | return __blockdev_direct_IO_newtrunc(rw, iocb, inode, bdev, iov, offset, | ||
| 2293 | nr_segs, get_block, end_io, NULL, 0); | ||
| 2294 | } | ||
| 2273 | static inline ssize_t blockdev_direct_IO(int rw, struct kiocb *iocb, | 2295 | static inline ssize_t blockdev_direct_IO(int rw, struct kiocb *iocb, |
| 2274 | struct inode *inode, struct block_device *bdev, const struct iovec *iov, | 2296 | struct inode *inode, struct block_device *bdev, const struct iovec *iov, |
| 2275 | loff_t offset, unsigned long nr_segs, get_block_t get_block, | 2297 | loff_t offset, unsigned long nr_segs, get_block_t get_block, |
| @@ -2342,12 +2364,14 @@ extern int dcache_dir_open(struct inode *, struct file *); | |||
| 2342 | extern int dcache_dir_close(struct inode *, struct file *); | 2364 | extern int dcache_dir_close(struct inode *, struct file *); |
| 2343 | extern loff_t dcache_dir_lseek(struct file *, loff_t, int); | 2365 | extern loff_t dcache_dir_lseek(struct file *, loff_t, int); |
| 2344 | extern int dcache_readdir(struct file *, void *, filldir_t); | 2366 | extern int dcache_readdir(struct file *, void *, filldir_t); |
| 2367 | extern int simple_setattr(struct dentry *, struct iattr *); | ||
| 2345 | extern int simple_getattr(struct vfsmount *, struct dentry *, struct kstat *); | 2368 | extern int simple_getattr(struct vfsmount *, struct dentry *, struct kstat *); |
| 2346 | extern int simple_statfs(struct dentry *, struct kstatfs *); | 2369 | extern int simple_statfs(struct dentry *, struct kstatfs *); |
| 2347 | extern int simple_link(struct dentry *, struct inode *, struct dentry *); | 2370 | extern int simple_link(struct dentry *, struct inode *, struct dentry *); |
| 2348 | extern int simple_unlink(struct inode *, struct dentry *); | 2371 | extern int simple_unlink(struct inode *, struct dentry *); |
| 2349 | extern int simple_rmdir(struct inode *, struct dentry *); | 2372 | extern int simple_rmdir(struct inode *, struct dentry *); |
| 2350 | extern int simple_rename(struct inode *, struct dentry *, struct inode *, struct dentry *); | 2373 | extern int simple_rename(struct inode *, struct dentry *, struct inode *, struct dentry *); |
| 2374 | extern int simple_setsize(struct inode *, loff_t); | ||
| 2351 | extern int noop_fsync(struct file *, int); | 2375 | extern int noop_fsync(struct file *, int); |
| 2352 | extern int simple_empty(struct dentry *); | 2376 | extern int simple_empty(struct dentry *); |
| 2353 | extern int simple_readpage(struct file *file, struct page *page); | 2377 | extern int simple_readpage(struct file *file, struct page *page); |
| @@ -2384,7 +2408,8 @@ extern int buffer_migrate_page(struct address_space *, | |||
| 2384 | 2408 | ||
| 2385 | extern int inode_change_ok(const struct inode *, struct iattr *); | 2409 | extern int inode_change_ok(const struct inode *, struct iattr *); |
| 2386 | extern int inode_newsize_ok(const struct inode *, loff_t offset); | 2410 | extern int inode_newsize_ok(const struct inode *, loff_t offset); |
| 2387 | extern int __must_check inode_setattr(struct inode *, struct iattr *); | 2411 | extern int __must_check inode_setattr(struct inode *, const struct iattr *); |
| 2412 | extern void generic_setattr(struct inode *inode, const struct iattr *attr); | ||
| 2388 | 2413 | ||
| 2389 | extern void file_update_time(struct file *file); | 2414 | extern void file_update_time(struct file *file); |
| 2390 | 2415 | ||
