diff options
author | Martin J. Bligh <mbligh@mbligh.org> | 2007-10-17 02:30:46 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-17 11:43:02 -0400 |
commit | a686cd898bd999fd026a51e90fb0a3410d258ddb (patch) | |
tree | 3f0a91a70fe1a3addf9e99f3babed9e9baba4b99 /fs/ext2/ext2.h | |
parent | 369f2389e7d03022abdd25e298bffb9613cd0e54 (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.h | 36 |
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 */ |
92 | extern int ext2_bg_has_super(struct super_block *sb, int group); | 88 | extern int ext2_bg_has_super(struct super_block *sb, int group); |
93 | extern unsigned long ext2_bg_num_gdb(struct super_block *sb, int group); | 89 | extern unsigned long ext2_bg_num_gdb(struct super_block *sb, int group); |
94 | extern int ext2_new_block (struct inode *, unsigned long, | 90 | extern ext2_fsblk_t ext2_new_block(struct inode *, unsigned long, int *); |
95 | __u32 *, __u32 *, int *); | 91 | extern ext2_fsblk_t ext2_new_blocks(struct inode *, unsigned long, |
92 | unsigned long *, int *); | ||
96 | extern void ext2_free_blocks (struct inode *, unsigned long, | 93 | extern void ext2_free_blocks (struct inode *, unsigned long, |
97 | unsigned long); | 94 | unsigned long); |
98 | extern unsigned long ext2_count_free_blocks (struct super_block *); | 95 | extern unsigned long ext2_count_free_blocks (struct super_block *); |
@@ -101,6 +98,10 @@ extern void ext2_check_blocks_bitmap (struct super_block *); | |||
101 | extern struct ext2_group_desc * ext2_get_group_desc(struct super_block * sb, | 98 | extern 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); |
101 | extern void ext2_discard_reservation (struct inode *); | ||
102 | extern int ext2_should_retry_alloc(struct super_block *sb, int *retries); | ||
103 | extern void ext2_init_block_alloc_info(struct inode *); | ||
104 | extern void ext2_rsv_window_add(struct super_block *sb, struct ext2_reserve_window_node *rsv); | ||
104 | 105 | ||
105 | /* dir.c */ | 106 | /* dir.c */ |
106 | extern int ext2_add_link (struct dentry *, struct inode *); | 107 | extern int ext2_add_link (struct dentry *, struct inode *); |
@@ -128,7 +129,6 @@ extern int ext2_write_inode (struct inode *, int); | |||
128 | extern void ext2_put_inode (struct inode *); | 129 | extern void ext2_put_inode (struct inode *); |
129 | extern void ext2_delete_inode (struct inode *); | 130 | extern void ext2_delete_inode (struct inode *); |
130 | extern int ext2_sync_inode (struct inode *); | 131 | extern int ext2_sync_inode (struct inode *); |
131 | extern void ext2_discard_prealloc (struct inode *); | ||
132 | extern int ext2_get_block(struct inode *, sector_t, struct buffer_head *, int); | 132 | extern int ext2_get_block(struct inode *, sector_t, struct buffer_head *, int); |
133 | extern void ext2_truncate (struct inode *); | 133 | extern void ext2_truncate (struct inode *); |
134 | extern int ext2_setattr (struct dentry *, struct iattr *); | 134 | extern int ext2_setattr (struct dentry *, struct iattr *); |