diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-10 14:26:52 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-10 14:26:52 -0400 |
commit | 5f248c9c251c60af3403902b26e08de43964ea0b (patch) | |
tree | 6d3328e72a7e4015a64017eb30be18095c6a3c64 /include | |
parent | f6cec0ae58c17522a7bc4e2f39dae19f199ab534 (diff) | |
parent | dca332528bc69e05f67161e1ed59929633d5e63d (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)
no need for list_for_each_entry_safe()/resetting with superblock list
Fix sget() race with failing mount
vfs: don't hold s_umount over close_bdev_exclusive() call
sysv: do not mark superblock dirty on remount
sysv: do not mark superblock dirty on mount
btrfs: remove junk sb_dirt change
BFS: clean up the superblock usage
AFFS: wait for sb synchronization when needed
AFFS: clean up dirty flag usage
cifs: truncate fallout
mbcache: fix shrinker function return value
mbcache: Remove unused features
add f_flags to struct statfs(64)
pass a struct path to vfs_statfs
update VFS documentation for method changes.
All filesystems that need invalidate_inode_buffers() are doing that explicitly
convert remaining ->clear_inode() to ->evict_inode()
Make ->drop_inode() just return whether inode needs to be dropped
fs/inode.c:clear_inode() is gone
fs/inode.c:evict() doesn't care about delete vs. non-delete paths now
...
Fix up trivial conflicts in fs/nilfs2/super.c
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-generic/statfs.h | 9 | ||||
-rw-r--r-- | include/linux/buffer_head.h | 20 | ||||
-rw-r--r-- | include/linux/dcache.h | 1 | ||||
-rw-r--r-- | include/linux/ext3_fs.h | 2 | ||||
-rw-r--r-- | include/linux/fs.h | 66 | ||||
-rw-r--r-- | include/linux/mbcache.h | 20 | ||||
-rw-r--r-- | include/linux/mm.h | 1 | ||||
-rw-r--r-- | include/linux/reiserfs_fs.h | 2 | ||||
-rw-r--r-- | include/linux/reiserfs_fs_i.h | 4 | ||||
-rw-r--r-- | include/linux/statfs.h | 25 |
10 files changed, 62 insertions, 88 deletions
diff --git a/include/asm-generic/statfs.h b/include/asm-generic/statfs.h index 3b4fb3e52f0d..0fd28e028de1 100644 --- a/include/asm-generic/statfs.h +++ b/include/asm-generic/statfs.h | |||
@@ -33,7 +33,8 @@ struct statfs { | |||
33 | __kernel_fsid_t f_fsid; | 33 | __kernel_fsid_t f_fsid; |
34 | __statfs_word f_namelen; | 34 | __statfs_word f_namelen; |
35 | __statfs_word f_frsize; | 35 | __statfs_word f_frsize; |
36 | __statfs_word f_spare[5]; | 36 | __statfs_word f_flags; |
37 | __statfs_word f_spare[4]; | ||
37 | }; | 38 | }; |
38 | 39 | ||
39 | /* | 40 | /* |
@@ -55,7 +56,8 @@ struct statfs64 { | |||
55 | __kernel_fsid_t f_fsid; | 56 | __kernel_fsid_t f_fsid; |
56 | __statfs_word f_namelen; | 57 | __statfs_word f_namelen; |
57 | __statfs_word f_frsize; | 58 | __statfs_word f_frsize; |
58 | __statfs_word f_spare[5]; | 59 | __statfs_word f_flags; |
60 | __statfs_word f_spare[4]; | ||
59 | } ARCH_PACK_STATFS64; | 61 | } ARCH_PACK_STATFS64; |
60 | 62 | ||
61 | /* | 63 | /* |
@@ -77,7 +79,8 @@ struct compat_statfs64 { | |||
77 | __kernel_fsid_t f_fsid; | 79 | __kernel_fsid_t f_fsid; |
78 | __u32 f_namelen; | 80 | __u32 f_namelen; |
79 | __u32 f_frsize; | 81 | __u32 f_frsize; |
80 | __u32 f_spare[5]; | 82 | __u32 f_flags; |
83 | __u32 f_spare[4]; | ||
81 | } ARCH_PACK_COMPAT_STATFS64; | 84 | } ARCH_PACK_COMPAT_STATFS64; |
82 | 85 | ||
83 | #endif | 86 | #endif |
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index 2ce51fac7d3d..43e649a72529 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h | |||
@@ -203,12 +203,10 @@ 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 *, | 206 | int block_write_begin(struct address_space *mapping, loff_t pos, unsigned len, |
207 | loff_t, unsigned, unsigned, | 207 | unsigned flags, struct page **pagep, get_block_t *get_block); |
208 | struct page **, void **, get_block_t*); | 208 | int __block_write_begin(struct page *page, loff_t pos, unsigned len, |
209 | int block_write_begin(struct file *, struct address_space *, | 209 | get_block_t *get_block); |
210 | loff_t, unsigned, unsigned, | ||
211 | struct page **, void **, get_block_t*); | ||
212 | int block_write_end(struct file *, struct address_space *, | 210 | int block_write_end(struct file *, struct address_space *, |
213 | loff_t, unsigned, unsigned, | 211 | loff_t, unsigned, unsigned, |
214 | struct page *, void *); | 212 | struct page *, void *); |
@@ -217,9 +215,6 @@ int generic_write_end(struct file *, struct address_space *, | |||
217 | struct page *, void *); | 215 | struct page *, void *); |
218 | void page_zero_new_buffers(struct page *page, unsigned from, unsigned to); | 216 | void page_zero_new_buffers(struct page *page, unsigned from, unsigned to); |
219 | int block_prepare_write(struct page*, unsigned, unsigned, get_block_t*); | 217 | 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 *); | ||
223 | int cont_write_begin(struct file *, struct address_space *, loff_t, | 218 | int cont_write_begin(struct file *, struct address_space *, loff_t, |
224 | unsigned, unsigned, struct page **, void **, | 219 | unsigned, unsigned, struct page **, void **, |
225 | get_block_t *, loff_t *); | 220 | get_block_t *, loff_t *); |
@@ -230,12 +225,7 @@ int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf, | |||
230 | void block_sync_page(struct page *); | 225 | void block_sync_page(struct page *); |
231 | sector_t generic_block_bmap(struct address_space *, sector_t, get_block_t *); | 226 | sector_t generic_block_bmap(struct address_space *, sector_t, get_block_t *); |
232 | int block_truncate_page(struct address_space *, loff_t, get_block_t *); | 227 | int block_truncate_page(struct address_space *, loff_t, get_block_t *); |
233 | int file_fsync(struct file *, int); | 228 | int nobh_write_begin(struct address_space *, loff_t, unsigned, unsigned, |
234 | int nobh_write_begin_newtrunc(struct file *, struct address_space *, | ||
235 | loff_t, unsigned, unsigned, | ||
236 | struct page **, void **, get_block_t*); | ||
237 | int nobh_write_begin(struct file *, struct address_space *, | ||
238 | loff_t, unsigned, unsigned, | ||
239 | struct page **, void **, get_block_t*); | 229 | struct page **, void **, get_block_t*); |
240 | int nobh_write_end(struct file *, struct address_space *, | 230 | int nobh_write_end(struct file *, struct address_space *, |
241 | loff_t, unsigned, unsigned, | 231 | loff_t, unsigned, unsigned, |
diff --git a/include/linux/dcache.h b/include/linux/dcache.h index eebb617c17d8..d23be0386e2d 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h | |||
@@ -315,6 +315,7 @@ extern char *dynamic_dname(struct dentry *, char *, int, const char *, ...); | |||
315 | 315 | ||
316 | extern char *__d_path(const struct path *path, struct path *root, char *, int); | 316 | extern char *__d_path(const struct path *path, struct path *root, char *, int); |
317 | extern char *d_path(const struct path *, char *, int); | 317 | extern char *d_path(const struct path *, char *, int); |
318 | extern char *__dentry_path(struct dentry *, char *, int); | ||
318 | extern char *dentry_path(struct dentry *, char *, int); | 319 | extern char *dentry_path(struct dentry *, char *, int); |
319 | 320 | ||
320 | /* Allocation counts.. */ | 321 | /* Allocation counts.. */ |
diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h index 3d3a9915dde2..6ce1bca01724 100644 --- a/include/linux/ext3_fs.h +++ b/include/linux/ext3_fs.h | |||
@@ -895,7 +895,7 @@ int ext3_get_blocks_handle(handle_t *handle, struct inode *inode, | |||
895 | extern struct inode *ext3_iget(struct super_block *, unsigned long); | 895 | extern struct inode *ext3_iget(struct super_block *, unsigned long); |
896 | extern int ext3_write_inode (struct inode *, struct writeback_control *); | 896 | extern int ext3_write_inode (struct inode *, struct writeback_control *); |
897 | extern int ext3_setattr (struct dentry *, struct iattr *); | 897 | extern int ext3_setattr (struct dentry *, struct iattr *); |
898 | extern void ext3_delete_inode (struct inode *); | 898 | extern void ext3_evict_inode (struct inode *); |
899 | extern int ext3_sync_inode (handle_t *, struct inode *); | 899 | extern int ext3_sync_inode (handle_t *, struct inode *); |
900 | extern void ext3_discard_reservation (struct inode *); | 900 | extern void ext3_discard_reservation (struct inode *); |
901 | extern void ext3_dirty_inode(struct inode *); | 901 | extern void ext3_dirty_inode(struct inode *); |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 488efec09d14..9e221016a6a9 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -210,6 +210,7 @@ struct inodes_stat_t { | |||
210 | #define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */ | 210 | #define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */ |
211 | #define MS_I_VERSION (1<<23) /* Update inode I_version field */ | 211 | #define MS_I_VERSION (1<<23) /* Update inode I_version field */ |
212 | #define MS_STRICTATIME (1<<24) /* Always perform atime updates */ | 212 | #define MS_STRICTATIME (1<<24) /* Always perform atime updates */ |
213 | #define MS_BORN (1<<29) | ||
213 | #define MS_ACTIVE (1<<30) | 214 | #define MS_ACTIVE (1<<30) |
214 | #define MS_NOUSER (1<<31) | 215 | #define MS_NOUSER (1<<31) |
215 | 216 | ||
@@ -1564,8 +1565,8 @@ struct super_operations { | |||
1564 | 1565 | ||
1565 | void (*dirty_inode) (struct inode *); | 1566 | void (*dirty_inode) (struct inode *); |
1566 | int (*write_inode) (struct inode *, struct writeback_control *wbc); | 1567 | int (*write_inode) (struct inode *, struct writeback_control *wbc); |
1567 | void (*drop_inode) (struct inode *); | 1568 | int (*drop_inode) (struct inode *); |
1568 | void (*delete_inode) (struct inode *); | 1569 | void (*evict_inode) (struct inode *); |
1569 | void (*put_super) (struct super_block *); | 1570 | void (*put_super) (struct super_block *); |
1570 | void (*write_super) (struct super_block *); | 1571 | void (*write_super) (struct super_block *); |
1571 | int (*sync_fs)(struct super_block *sb, int wait); | 1572 | int (*sync_fs)(struct super_block *sb, int wait); |
@@ -1573,7 +1574,6 @@ struct super_operations { | |||
1573 | int (*unfreeze_fs) (struct super_block *); | 1574 | int (*unfreeze_fs) (struct super_block *); |
1574 | int (*statfs) (struct dentry *, struct kstatfs *); | 1575 | int (*statfs) (struct dentry *, struct kstatfs *); |
1575 | int (*remount_fs) (struct super_block *, int *, char *); | 1576 | int (*remount_fs) (struct super_block *, int *, char *); |
1576 | void (*clear_inode) (struct inode *); | ||
1577 | void (*umount_begin) (struct super_block *); | 1577 | void (*umount_begin) (struct super_block *); |
1578 | 1578 | ||
1579 | int (*show_options)(struct seq_file *, struct vfsmount *); | 1579 | int (*show_options)(struct seq_file *, struct vfsmount *); |
@@ -1618,8 +1618,8 @@ struct super_operations { | |||
1618 | * I_FREEING Set when inode is about to be freed but still has dirty | 1618 | * I_FREEING Set when inode is about to be freed but still has dirty |
1619 | * pages or buffers attached or the inode itself is still | 1619 | * pages or buffers attached or the inode itself is still |
1620 | * dirty. | 1620 | * dirty. |
1621 | * I_CLEAR Set by clear_inode(). In this state the inode is clean | 1621 | * I_CLEAR Added by end_writeback(). In this state the inode is clean |
1622 | * and can be destroyed. | 1622 | * and can be destroyed. Inode keeps I_FREEING. |
1623 | * | 1623 | * |
1624 | * Inodes that are I_WILL_FREE, I_FREEING or I_CLEAR are | 1624 | * Inodes that are I_WILL_FREE, I_FREEING or I_CLEAR are |
1625 | * prohibited for many purposes. iget() must wait for | 1625 | * prohibited for many purposes. iget() must wait for |
@@ -1816,7 +1816,8 @@ extern struct vfsmount *collect_mounts(struct path *); | |||
1816 | extern void drop_collected_mounts(struct vfsmount *); | 1816 | extern void drop_collected_mounts(struct vfsmount *); |
1817 | extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *, | 1817 | extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *, |
1818 | struct vfsmount *); | 1818 | struct vfsmount *); |
1819 | extern int vfs_statfs(struct dentry *, struct kstatfs *); | 1819 | extern int vfs_statfs(struct path *, struct kstatfs *); |
1820 | extern int statfs_by_dentry(struct dentry *, struct kstatfs *); | ||
1820 | extern int freeze_super(struct super_block *super); | 1821 | extern int freeze_super(struct super_block *super); |
1821 | extern int thaw_super(struct super_block *super); | 1822 | extern int thaw_super(struct super_block *super); |
1822 | 1823 | ||
@@ -2166,9 +2167,8 @@ extern void iput(struct inode *); | |||
2166 | extern struct inode * igrab(struct inode *); | 2167 | extern struct inode * igrab(struct inode *); |
2167 | extern ino_t iunique(struct super_block *, ino_t); | 2168 | extern ino_t iunique(struct super_block *, ino_t); |
2168 | extern int inode_needs_sync(struct inode *inode); | 2169 | extern int inode_needs_sync(struct inode *inode); |
2169 | extern void generic_delete_inode(struct inode *inode); | 2170 | extern int generic_delete_inode(struct inode *inode); |
2170 | extern void generic_drop_inode(struct inode *inode); | 2171 | extern int generic_drop_inode(struct inode *inode); |
2171 | extern int generic_detach_inode(struct inode *inode); | ||
2172 | 2172 | ||
2173 | extern struct inode *ilookup5_nowait(struct super_block *sb, | 2173 | extern struct inode *ilookup5_nowait(struct super_block *sb, |
2174 | unsigned long hashval, int (*test)(struct inode *, void *), | 2174 | unsigned long hashval, int (*test)(struct inode *, void *), |
@@ -2185,7 +2185,7 @@ extern void unlock_new_inode(struct inode *); | |||
2185 | 2185 | ||
2186 | extern void __iget(struct inode * inode); | 2186 | extern void __iget(struct inode * inode); |
2187 | extern void iget_failed(struct inode *); | 2187 | extern void iget_failed(struct inode *); |
2188 | extern void clear_inode(struct inode *); | 2188 | extern void end_writeback(struct inode *); |
2189 | extern void destroy_inode(struct inode *); | 2189 | extern void destroy_inode(struct inode *); |
2190 | extern void __destroy_inode(struct inode *); | 2190 | extern void __destroy_inode(struct inode *); |
2191 | extern struct inode *new_inode(struct super_block *); | 2191 | extern struct inode *new_inode(struct super_block *); |
@@ -2271,16 +2271,6 @@ static inline int xip_truncate_page(struct address_space *mapping, loff_t from) | |||
2271 | struct bio; | 2271 | struct bio; |
2272 | typedef void (dio_submit_t)(int rw, struct bio *bio, struct inode *inode, | 2272 | typedef void (dio_submit_t)(int rw, struct bio *bio, struct inode *inode, |
2273 | loff_t file_offset); | 2273 | loff_t file_offset); |
2274 | void dio_end_io(struct bio *bio, int error); | ||
2275 | |||
2276 | ssize_t __blockdev_direct_IO_newtrunc(int rw, struct kiocb *iocb, struct inode *inode, | ||
2277 | struct block_device *bdev, const struct iovec *iov, loff_t offset, | ||
2278 | unsigned long nr_segs, get_block_t get_block, dio_iodone_t end_io, | ||
2279 | dio_submit_t submit_io, int lock_type); | ||
2280 | ssize_t __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode, | ||
2281 | struct block_device *bdev, const struct iovec *iov, loff_t offset, | ||
2282 | unsigned long nr_segs, get_block_t get_block, dio_iodone_t end_io, | ||
2283 | dio_submit_t submit_io, int lock_type); | ||
2284 | 2274 | ||
2285 | enum { | 2275 | enum { |
2286 | /* need locking between buffered and direct access */ | 2276 | /* need locking between buffered and direct access */ |
@@ -2290,24 +2280,13 @@ enum { | |||
2290 | DIO_SKIP_HOLES = 0x02, | 2280 | DIO_SKIP_HOLES = 0x02, |
2291 | }; | 2281 | }; |
2292 | 2282 | ||
2293 | static inline ssize_t blockdev_direct_IO_newtrunc(int rw, struct kiocb *iocb, | 2283 | void dio_end_io(struct bio *bio, int error); |
2294 | struct inode *inode, struct block_device *bdev, const struct iovec *iov, | 2284 | |
2295 | loff_t offset, unsigned long nr_segs, get_block_t get_block, | 2285 | ssize_t __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode, |
2296 | dio_iodone_t end_io) | 2286 | struct block_device *bdev, const struct iovec *iov, loff_t offset, |
2297 | { | 2287 | unsigned long nr_segs, get_block_t get_block, dio_iodone_t end_io, |
2298 | return __blockdev_direct_IO_newtrunc(rw, iocb, inode, bdev, iov, offset, | 2288 | dio_submit_t submit_io, int flags); |
2299 | nr_segs, get_block, end_io, NULL, | ||
2300 | DIO_LOCKING | DIO_SKIP_HOLES); | ||
2301 | } | ||
2302 | 2289 | ||
2303 | static inline ssize_t blockdev_direct_IO_no_locking_newtrunc(int rw, struct kiocb *iocb, | ||
2304 | struct inode *inode, struct block_device *bdev, const struct iovec *iov, | ||
2305 | loff_t offset, unsigned long nr_segs, get_block_t get_block, | ||
2306 | dio_iodone_t end_io) | ||
2307 | { | ||
2308 | return __blockdev_direct_IO_newtrunc(rw, iocb, inode, bdev, iov, offset, | ||
2309 | nr_segs, get_block, end_io, NULL, 0); | ||
2310 | } | ||
2311 | static inline ssize_t blockdev_direct_IO(int rw, struct kiocb *iocb, | 2290 | static inline ssize_t blockdev_direct_IO(int rw, struct kiocb *iocb, |
2312 | struct inode *inode, struct block_device *bdev, const struct iovec *iov, | 2291 | struct inode *inode, struct block_device *bdev, const struct iovec *iov, |
2313 | loff_t offset, unsigned long nr_segs, get_block_t get_block, | 2292 | loff_t offset, unsigned long nr_segs, get_block_t get_block, |
@@ -2317,15 +2296,6 @@ static inline ssize_t blockdev_direct_IO(int rw, struct kiocb *iocb, | |||
2317 | nr_segs, get_block, end_io, NULL, | 2296 | nr_segs, get_block, end_io, NULL, |
2318 | DIO_LOCKING | DIO_SKIP_HOLES); | 2297 | DIO_LOCKING | DIO_SKIP_HOLES); |
2319 | } | 2298 | } |
2320 | |||
2321 | static inline ssize_t blockdev_direct_IO_no_locking(int rw, struct kiocb *iocb, | ||
2322 | struct inode *inode, struct block_device *bdev, const struct iovec *iov, | ||
2323 | loff_t offset, unsigned long nr_segs, get_block_t get_block, | ||
2324 | dio_iodone_t end_io) | ||
2325 | { | ||
2326 | return __blockdev_direct_IO(rw, iocb, inode, bdev, iov, offset, | ||
2327 | nr_segs, get_block, end_io, NULL, 0); | ||
2328 | } | ||
2329 | #endif | 2299 | #endif |
2330 | 2300 | ||
2331 | extern const struct file_operations generic_ro_fops; | 2301 | extern const struct file_operations generic_ro_fops; |
@@ -2387,7 +2357,6 @@ extern int simple_link(struct dentry *, struct inode *, struct dentry *); | |||
2387 | extern int simple_unlink(struct inode *, struct dentry *); | 2357 | extern int simple_unlink(struct inode *, struct dentry *); |
2388 | extern int simple_rmdir(struct inode *, struct dentry *); | 2358 | extern int simple_rmdir(struct inode *, struct dentry *); |
2389 | extern int simple_rename(struct inode *, struct dentry *, struct inode *, struct dentry *); | 2359 | extern int simple_rename(struct inode *, struct dentry *, struct inode *, struct dentry *); |
2390 | extern int simple_setsize(struct inode *, loff_t); | ||
2391 | extern int noop_fsync(struct file *, int); | 2360 | extern int noop_fsync(struct file *, int); |
2392 | extern int simple_empty(struct dentry *); | 2361 | extern int simple_empty(struct dentry *); |
2393 | extern int simple_readpage(struct file *file, struct page *page); | 2362 | extern int simple_readpage(struct file *file, struct page *page); |
@@ -2424,8 +2393,7 @@ extern int buffer_migrate_page(struct address_space *, | |||
2424 | 2393 | ||
2425 | extern int inode_change_ok(const struct inode *, struct iattr *); | 2394 | extern int inode_change_ok(const struct inode *, struct iattr *); |
2426 | extern int inode_newsize_ok(const struct inode *, loff_t offset); | 2395 | extern int inode_newsize_ok(const struct inode *, loff_t offset); |
2427 | extern int __must_check inode_setattr(struct inode *, const struct iattr *); | 2396 | extern void setattr_copy(struct inode *inode, const struct iattr *attr); |
2428 | extern void generic_setattr(struct inode *inode, const struct iattr *attr); | ||
2429 | 2397 | ||
2430 | extern void file_update_time(struct file *file); | 2398 | extern void file_update_time(struct file *file); |
2431 | 2399 | ||
diff --git a/include/linux/mbcache.h b/include/linux/mbcache.h index a09b84e4fdb4..54cbbac1e71d 100644 --- a/include/linux/mbcache.h +++ b/include/linux/mbcache.h | |||
@@ -4,9 +4,6 @@ | |||
4 | (C) 2001 by Andreas Gruenbacher, <a.gruenbacher@computer.org> | 4 | (C) 2001 by Andreas Gruenbacher, <a.gruenbacher@computer.org> |
5 | */ | 5 | */ |
6 | 6 | ||
7 | /* Hardwire the number of additional indexes */ | ||
8 | #define MB_CACHE_INDEXES_COUNT 1 | ||
9 | |||
10 | struct mb_cache_entry { | 7 | struct mb_cache_entry { |
11 | struct list_head e_lru_list; | 8 | struct list_head e_lru_list; |
12 | struct mb_cache *e_cache; | 9 | struct mb_cache *e_cache; |
@@ -18,17 +15,12 @@ struct mb_cache_entry { | |||
18 | struct { | 15 | struct { |
19 | struct list_head o_list; | 16 | struct list_head o_list; |
20 | unsigned int o_key; | 17 | unsigned int o_key; |
21 | } e_indexes[0]; | 18 | } e_index; |
22 | }; | ||
23 | |||
24 | struct mb_cache_op { | ||
25 | int (*free)(struct mb_cache_entry *, gfp_t); | ||
26 | }; | 19 | }; |
27 | 20 | ||
28 | /* Functions on caches */ | 21 | /* Functions on caches */ |
29 | 22 | ||
30 | struct mb_cache * mb_cache_create(const char *, struct mb_cache_op *, size_t, | 23 | struct mb_cache *mb_cache_create(const char *, int); |
31 | int, int); | ||
32 | void mb_cache_shrink(struct block_device *); | 24 | void mb_cache_shrink(struct block_device *); |
33 | void mb_cache_destroy(struct mb_cache *); | 25 | void mb_cache_destroy(struct mb_cache *); |
34 | 26 | ||
@@ -36,17 +28,15 @@ void mb_cache_destroy(struct mb_cache *); | |||
36 | 28 | ||
37 | struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *, gfp_t); | 29 | struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *, gfp_t); |
38 | int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *, | 30 | int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *, |
39 | sector_t, unsigned int[]); | 31 | sector_t, unsigned int); |
40 | void mb_cache_entry_release(struct mb_cache_entry *); | 32 | void mb_cache_entry_release(struct mb_cache_entry *); |
41 | void mb_cache_entry_free(struct mb_cache_entry *); | 33 | void mb_cache_entry_free(struct mb_cache_entry *); |
42 | struct mb_cache_entry *mb_cache_entry_get(struct mb_cache *, | 34 | struct mb_cache_entry *mb_cache_entry_get(struct mb_cache *, |
43 | struct block_device *, | 35 | struct block_device *, |
44 | sector_t); | 36 | sector_t); |
45 | #if !defined(MB_CACHE_INDEXES_COUNT) || (MB_CACHE_INDEXES_COUNT > 0) | 37 | struct mb_cache_entry *mb_cache_entry_find_first(struct mb_cache *cache, |
46 | struct mb_cache_entry *mb_cache_entry_find_first(struct mb_cache *cache, int, | ||
47 | struct block_device *, | 38 | struct block_device *, |
48 | unsigned int); | 39 | unsigned int); |
49 | struct mb_cache_entry *mb_cache_entry_find_next(struct mb_cache_entry *, int, | 40 | struct mb_cache_entry *mb_cache_entry_find_next(struct mb_cache_entry *, |
50 | struct block_device *, | 41 | struct block_device *, |
51 | unsigned int); | 42 | unsigned int); |
52 | #endif | ||
diff --git a/include/linux/mm.h b/include/linux/mm.h index 7a9ab7db1975..709f6728fc90 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -815,6 +815,7 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping, | |||
815 | } | 815 | } |
816 | 816 | ||
817 | extern void truncate_pagecache(struct inode *inode, loff_t old, loff_t new); | 817 | extern void truncate_pagecache(struct inode *inode, loff_t old, loff_t new); |
818 | extern void truncate_setsize(struct inode *inode, loff_t newsize); | ||
818 | extern int vmtruncate(struct inode *inode, loff_t offset); | 819 | extern int vmtruncate(struct inode *inode, loff_t offset); |
819 | extern int vmtruncate_range(struct inode *inode, loff_t offset, loff_t end); | 820 | extern int vmtruncate_range(struct inode *inode, loff_t offset, loff_t end); |
820 | 821 | ||
diff --git a/include/linux/reiserfs_fs.h b/include/linux/reiserfs_fs.h index ba394163dea1..91a4177e60ce 100644 --- a/include/linux/reiserfs_fs.h +++ b/include/linux/reiserfs_fs.h | |||
@@ -2033,7 +2033,7 @@ void reiserfs_read_locked_inode(struct inode *inode, | |||
2033 | struct reiserfs_iget_args *args); | 2033 | struct reiserfs_iget_args *args); |
2034 | int reiserfs_find_actor(struct inode *inode, void *p); | 2034 | int reiserfs_find_actor(struct inode *inode, void *p); |
2035 | int reiserfs_init_locked_inode(struct inode *inode, void *p); | 2035 | int reiserfs_init_locked_inode(struct inode *inode, void *p); |
2036 | void reiserfs_delete_inode(struct inode *inode); | 2036 | void reiserfs_evict_inode(struct inode *inode); |
2037 | int reiserfs_write_inode(struct inode *inode, struct writeback_control *wbc); | 2037 | int reiserfs_write_inode(struct inode *inode, struct writeback_control *wbc); |
2038 | int reiserfs_get_block(struct inode *inode, sector_t block, | 2038 | int reiserfs_get_block(struct inode *inode, sector_t block, |
2039 | struct buffer_head *bh_result, int create); | 2039 | struct buffer_head *bh_result, int create); |
diff --git a/include/linux/reiserfs_fs_i.h b/include/linux/reiserfs_fs_i.h index 89f4d3abbf5a..97959bdfe214 100644 --- a/include/linux/reiserfs_fs_i.h +++ b/include/linux/reiserfs_fs_i.h | |||
@@ -25,7 +25,6 @@ typedef enum { | |||
25 | i_link_saved_truncate_mask = 0x0020, | 25 | i_link_saved_truncate_mask = 0x0020, |
26 | i_has_xattr_dir = 0x0040, | 26 | i_has_xattr_dir = 0x0040, |
27 | i_data_log = 0x0080, | 27 | i_data_log = 0x0080, |
28 | i_ever_mapped = 0x0100 | ||
29 | } reiserfs_inode_flags; | 28 | } reiserfs_inode_flags; |
30 | 29 | ||
31 | struct reiserfs_inode_info { | 30 | struct reiserfs_inode_info { |
@@ -53,7 +52,8 @@ struct reiserfs_inode_info { | |||
53 | ** flushed */ | 52 | ** flushed */ |
54 | unsigned int i_trans_id; | 53 | unsigned int i_trans_id; |
55 | struct reiserfs_journal_list *i_jl; | 54 | struct reiserfs_journal_list *i_jl; |
56 | struct mutex i_mmap; | 55 | atomic_t openers; |
56 | struct mutex tailpack; | ||
57 | #ifdef CONFIG_REISERFS_FS_XATTR | 57 | #ifdef CONFIG_REISERFS_FS_XATTR |
58 | struct rw_semaphore i_xattr_sem; | 58 | struct rw_semaphore i_xattr_sem; |
59 | #endif | 59 | #endif |
diff --git a/include/linux/statfs.h b/include/linux/statfs.h index b34cc829f98d..0166d320a75d 100644 --- a/include/linux/statfs.h +++ b/include/linux/statfs.h | |||
@@ -2,7 +2,6 @@ | |||
2 | #define _LINUX_STATFS_H | 2 | #define _LINUX_STATFS_H |
3 | 3 | ||
4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
5 | |||
6 | #include <asm/statfs.h> | 5 | #include <asm/statfs.h> |
7 | 6 | ||
8 | struct kstatfs { | 7 | struct kstatfs { |
@@ -16,7 +15,29 @@ struct kstatfs { | |||
16 | __kernel_fsid_t f_fsid; | 15 | __kernel_fsid_t f_fsid; |
17 | long f_namelen; | 16 | long f_namelen; |
18 | long f_frsize; | 17 | long f_frsize; |
19 | long f_spare[5]; | 18 | long f_flags; |
19 | long f_spare[4]; | ||
20 | }; | 20 | }; |
21 | 21 | ||
22 | /* | ||
23 | * Definitions for the flag in f_flag. | ||
24 | * | ||
25 | * Generally these flags are equivalent to the MS_ flags used in the mount | ||
26 | * ABI. The exception is ST_VALID which has the same value as MS_REMOUNT | ||
27 | * which doesn't make any sense for statfs. | ||
28 | */ | ||
29 | #define ST_RDONLY 0x0001 /* mount read-only */ | ||
30 | #define ST_NOSUID 0x0002 /* ignore suid and sgid bits */ | ||
31 | #define ST_NODEV 0x0004 /* disallow access to device special files */ | ||
32 | #define ST_NOEXEC 0x0008 /* disallow program execution */ | ||
33 | #define ST_SYNCHRONOUS 0x0010 /* writes are synced at once */ | ||
34 | #define ST_VALID 0x0020 /* f_flags support is implemented */ | ||
35 | #define ST_MANDLOCK 0x0040 /* allow mandatory locks on an FS */ | ||
36 | /* 0x0080 used for ST_WRITE in glibc */ | ||
37 | /* 0x0100 used for ST_APPEND in glibc */ | ||
38 | /* 0x0200 used for ST_IMMUTABLE in glibc */ | ||
39 | #define ST_NOATIME 0x0400 /* do not update access times */ | ||
40 | #define ST_NODIRATIME 0x0800 /* do not update directory access times */ | ||
41 | #define ST_RELATIME 0x1000 /* update atime relative to mtime/ctime */ | ||
42 | |||
22 | #endif | 43 | #endif |