aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext2/ext2.h
diff options
context:
space:
mode:
authorMartin J. Bligh <mbligh@mbligh.org>2007-10-17 02:30:46 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-17 11:43:02 -0400
commita686cd898bd999fd026a51e90fb0a3410d258ddb (patch)
tree3f0a91a70fe1a3addf9e99f3babed9e9baba4b99 /fs/ext2/ext2.h
parent369f2389e7d03022abdd25e298bffb9613cd0e54 (diff)
ext2 reservations
Val's cross-port of the ext3 reservations code into ext2. [mbligh@mbligh.org: Small type error for printk [akpm@linux-foundation.org: fix types, sync with ext3] [mbligh@mbligh.org: Bring ext2 reservations code in line with latest ext3] [akpm@linux-foundation.org: kill noisy printk] [akpm@linux-foundation.org: remember to dirty the gdp's block] [akpm@linux-foundation.org: cross-port the missed 5dea5176e5c32ef9f0d1a41d28427b3bf6881b3a] [akpm@linux-foundation.org: cross-port e6022603b9aa7d61d20b392e69edcdbbc1789969] [akpm@linux-foundation.org: Port the omitted 08fb306fe63d98eb86e3b16f4cc21816fa47f18e] [akpm@linux-foundation.org: Backport the missed 20acaa18d0c002fec180956f87adeb3f11f635a6] [akpm@linux-foundation.org: fixes] [cmm@us.ibm.com: fix reservation extension] [bunk@stusta.de: make ext2_get_blocks() static] [hugh@veritas.com: fix hang] [hugh@veritas.com: ext2_new_blocks should reset the reservation window size] [hugh@veritas.com: ext2 balloc: fix off-by-one against rsv_end] [hugh@veritas.com: grp_goal 0 is a genuine goal (unlike -1), so ext2_try_to_allocate_with_rsv should treat it as such] [hugh@veritas.com: rbtree usage cleanup] [pbadari@us.ibm.com: Fix for ext2 reservation] [bunk@kernel.org: remove fs/ext2/balloc.c:reserve_blocks()] [hugh@veritas.com: ext2 balloc: use io_error label] Cc: "Martin J. Bligh" <mbligh@mbligh.org> Cc: Valerie Henson <val_henson@linux.intel.com> Cc: Mingming Cao <cmm@us.ibm.com> Cc: Mel Gorman <mel@csn.ul.ie> Cc: Hugh Dickins <hugh@veritas.com> Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Hugh Dickins <hugh@veritas.com> Signed-off-by: Badari Pulavarty <pbadari@us.ibm.com> Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/ext2/ext2.h')
-rw-r--r--fs/ext2/ext2.h36
1 files changed, 18 insertions, 18 deletions
diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
index a08052d2c008..7730388c4931 100644
--- a/fs/ext2/ext2.h
+++ b/fs/ext2/ext2.h
@@ -33,22 +33,9 @@ struct ext2_inode_info {
33 */ 33 */
34 __u32 i_block_group; 34 __u32 i_block_group;
35 35
36 /* 36 /* block reservation info */
37 * i_next_alloc_block is the logical (file-relative) number of the 37 struct ext2_block_alloc_info *i_block_alloc_info;
38 * most-recently-allocated block in this file. Yes, it is misnamed.
39 * We use this for detecting linearly ascending allocation requests.
40 */
41 __u32 i_next_alloc_block;
42 38
43 /*
44 * i_next_alloc_goal is the *physical* companion to i_next_alloc_block.
45 * it the the physical block number of the block which was most-recently
46 * allocated to this file. This give us the goal (target) for the next
47 * allocation when we detect linearly ascending requests.
48 */
49 __u32 i_next_alloc_goal;
50 __u32 i_prealloc_block;
51 __u32 i_prealloc_count;
52 __u32 i_dir_start_lookup; 39 __u32 i_dir_start_lookup;
53#ifdef CONFIG_EXT2_FS_XATTR 40#ifdef CONFIG_EXT2_FS_XATTR
54 /* 41 /*
@@ -65,7 +52,16 @@ struct ext2_inode_info {
65 struct posix_acl *i_default_acl; 52 struct posix_acl *i_default_acl;
66#endif 53#endif
67 rwlock_t i_meta_lock; 54 rwlock_t i_meta_lock;
55
56 /*
57 * truncate_mutex is for serialising ext2_truncate() against
58 * ext2_getblock(). It also protects the internals of the inode's
59 * reservation data structures: ext2_reserve_window and
60 * ext2_reserve_window_node.
61 */
62 struct mutex truncate_mutex;
68 struct inode vfs_inode; 63 struct inode vfs_inode;
64 struct list_head i_orphan; /* unlinked but open inodes */
69}; 65};
70 66
71/* 67/*
@@ -91,8 +87,9 @@ static inline struct ext2_inode_info *EXT2_I(struct inode *inode)
91/* balloc.c */ 87/* balloc.c */
92extern int ext2_bg_has_super(struct super_block *sb, int group); 88extern int ext2_bg_has_super(struct super_block *sb, int group);
93extern unsigned long ext2_bg_num_gdb(struct super_block *sb, int group); 89extern unsigned long ext2_bg_num_gdb(struct super_block *sb, int group);
94extern int ext2_new_block (struct inode *, unsigned long, 90extern ext2_fsblk_t ext2_new_block(struct inode *, unsigned long, int *);
95 __u32 *, __u32 *, int *); 91extern ext2_fsblk_t ext2_new_blocks(struct inode *, unsigned long,
92 unsigned long *, int *);
96extern void ext2_free_blocks (struct inode *, unsigned long, 93extern void ext2_free_blocks (struct inode *, unsigned long,
97 unsigned long); 94 unsigned long);
98extern unsigned long ext2_count_free_blocks (struct super_block *); 95extern unsigned long ext2_count_free_blocks (struct super_block *);
@@ -101,6 +98,10 @@ extern void ext2_check_blocks_bitmap (struct super_block *);
101extern struct ext2_group_desc * ext2_get_group_desc(struct super_block * sb, 98extern struct ext2_group_desc * ext2_get_group_desc(struct super_block * sb,
102 unsigned int block_group, 99 unsigned int block_group,
103 struct buffer_head ** bh); 100 struct buffer_head ** bh);
101extern void ext2_discard_reservation (struct inode *);
102extern int ext2_should_retry_alloc(struct super_block *sb, int *retries);
103extern void ext2_init_block_alloc_info(struct inode *);
104extern void ext2_rsv_window_add(struct super_block *sb, struct ext2_reserve_window_node *rsv);
104 105
105/* dir.c */ 106/* dir.c */
106extern int ext2_add_link (struct dentry *, struct inode *); 107extern int ext2_add_link (struct dentry *, struct inode *);
@@ -128,7 +129,6 @@ extern int ext2_write_inode (struct inode *, int);
128extern void ext2_put_inode (struct inode *); 129extern void ext2_put_inode (struct inode *);
129extern void ext2_delete_inode (struct inode *); 130extern void ext2_delete_inode (struct inode *);
130extern int ext2_sync_inode (struct inode *); 131extern int ext2_sync_inode (struct inode *);
131extern void ext2_discard_prealloc (struct inode *);
132extern int ext2_get_block(struct inode *, sector_t, struct buffer_head *, int); 132extern int ext2_get_block(struct inode *, sector_t, struct buffer_head *, int);
133extern void ext2_truncate (struct inode *); 133extern void ext2_truncate (struct inode *);
134extern int ext2_setattr (struct dentry *, struct iattr *); 134extern int ext2_setattr (struct dentry *, struct iattr *);