diff options
Diffstat (limited to 'fs/ext3')
-rw-r--r-- | fs/ext3/balloc.c | 16 | ||||
-rw-r--r-- | fs/ext3/bitmap.c | 2 | ||||
-rw-r--r-- | fs/ext3/dir.c | 14 | ||||
-rw-r--r-- | fs/ext3/file.c | 2 | ||||
-rw-r--r-- | fs/ext3/fsync.c | 6 | ||||
-rw-r--r-- | fs/ext3/hash.c | 6 | ||||
-rw-r--r-- | fs/ext3/ialloc.c | 48 | ||||
-rw-r--r-- | fs/ext3/inode.c | 64 | ||||
-rw-r--r-- | fs/ext3/namei.c | 28 | ||||
-rw-r--r-- | fs/ext3/super.c | 24 |
10 files changed, 105 insertions, 105 deletions
diff --git a/fs/ext3/balloc.c b/fs/ext3/balloc.c index 063d994bda0b..e6b983707008 100644 --- a/fs/ext3/balloc.c +++ b/fs/ext3/balloc.c | |||
@@ -74,7 +74,7 @@ struct ext3_group_desc * ext3_get_group_desc(struct super_block * sb, | |||
74 | } | 74 | } |
75 | 75 | ||
76 | /* | 76 | /* |
77 | * Read the bitmap for a given block_group, reading into the specified | 77 | * Read the bitmap for a given block_group, reading into the specified |
78 | * slot in the superblock's bitmap cache. | 78 | * slot in the superblock's bitmap cache. |
79 | * | 79 | * |
80 | * Return buffer_head on success or NULL in case of failure. | 80 | * Return buffer_head on success or NULL in case of failure. |
@@ -419,8 +419,8 @@ do_more: | |||
419 | } | 419 | } |
420 | /* @@@ This prevents newly-allocated data from being | 420 | /* @@@ This prevents newly-allocated data from being |
421 | * freed and then reallocated within the same | 421 | * freed and then reallocated within the same |
422 | * transaction. | 422 | * transaction. |
423 | * | 423 | * |
424 | * Ideally we would want to allow that to happen, but to | 424 | * Ideally we would want to allow that to happen, but to |
425 | * do so requires making journal_forget() capable of | 425 | * do so requires making journal_forget() capable of |
426 | * revoking the queued write of a data block, which | 426 | * revoking the queued write of a data block, which |
@@ -433,7 +433,7 @@ do_more: | |||
433 | * safe not to set the allocation bit in the committed | 433 | * safe not to set the allocation bit in the committed |
434 | * bitmap, because we know that there is no outstanding | 434 | * bitmap, because we know that there is no outstanding |
435 | * activity on the buffer any more and so it is safe to | 435 | * activity on the buffer any more and so it is safe to |
436 | * reallocate it. | 436 | * reallocate it. |
437 | */ | 437 | */ |
438 | BUFFER_TRACE(bitmap_bh, "set in b_committed_data"); | 438 | BUFFER_TRACE(bitmap_bh, "set in b_committed_data"); |
439 | J_ASSERT_BH(bitmap_bh, | 439 | J_ASSERT_BH(bitmap_bh, |
@@ -518,7 +518,7 @@ void ext3_free_blocks(handle_t *handle, struct inode *inode, | |||
518 | * data would allow the old block to be overwritten before the | 518 | * data would allow the old block to be overwritten before the |
519 | * transaction committed (because we force data to disk before commit). | 519 | * transaction committed (because we force data to disk before commit). |
520 | * This would lead to corruption if we crashed between overwriting the | 520 | * This would lead to corruption if we crashed between overwriting the |
521 | * data and committing the delete. | 521 | * data and committing the delete. |
522 | * | 522 | * |
523 | * @@@ We may want to make this allocation behaviour conditional on | 523 | * @@@ We may want to make this allocation behaviour conditional on |
524 | * data-writes at some point, and disable it for metadata allocations or | 524 | * data-writes at some point, and disable it for metadata allocations or |
@@ -584,7 +584,7 @@ find_next_usable_block(ext3_grpblk_t start, struct buffer_head *bh, | |||
584 | 584 | ||
585 | if (start > 0) { | 585 | if (start > 0) { |
586 | /* | 586 | /* |
587 | * The goal was occupied; search forward for a free | 587 | * The goal was occupied; search forward for a free |
588 | * block within the next XX blocks. | 588 | * block within the next XX blocks. |
589 | * | 589 | * |
590 | * end_goal is more or less random, but it has to be | 590 | * end_goal is more or less random, but it has to be |
@@ -1194,7 +1194,7 @@ int ext3_should_retry_alloc(struct super_block *sb, int *retries) | |||
1194 | /* | 1194 | /* |
1195 | * ext3_new_block uses a goal block to assist allocation. If the goal is | 1195 | * ext3_new_block uses a goal block to assist allocation. If the goal is |
1196 | * free, or there is a free block within 32 blocks of the goal, that block | 1196 | * free, or there is a free block within 32 blocks of the goal, that block |
1197 | * is allocated. Otherwise a forward search is made for a free block; within | 1197 | * is allocated. Otherwise a forward search is made for a free block; within |
1198 | * each block group the search first looks for an entire free byte in the block | 1198 | * each block group the search first looks for an entire free byte in the block |
1199 | * bitmap, and then for any free bit if that fails. | 1199 | * bitmap, and then for any free bit if that fails. |
1200 | * This function also updates quota and i_blocks field. | 1200 | * This function also updates quota and i_blocks field. |
@@ -1303,7 +1303,7 @@ retry_alloc: | |||
1303 | smp_rmb(); | 1303 | smp_rmb(); |
1304 | 1304 | ||
1305 | /* | 1305 | /* |
1306 | * Now search the rest of the groups. We assume that | 1306 | * Now search the rest of the groups. We assume that |
1307 | * i and gdp correctly point to the last group visited. | 1307 | * i and gdp correctly point to the last group visited. |
1308 | */ | 1308 | */ |
1309 | for (bgi = 0; bgi < ngroups; bgi++) { | 1309 | for (bgi = 0; bgi < ngroups; bgi++) { |
diff --git a/fs/ext3/bitmap.c b/fs/ext3/bitmap.c index ce4f82b9e528..b9176eed98d1 100644 --- a/fs/ext3/bitmap.c +++ b/fs/ext3/bitmap.c | |||
@@ -20,7 +20,7 @@ unsigned long ext3_count_free (struct buffer_head * map, unsigned int numchars) | |||
20 | unsigned int i; | 20 | unsigned int i; |
21 | unsigned long sum = 0; | 21 | unsigned long sum = 0; |
22 | 22 | ||
23 | if (!map) | 23 | if (!map) |
24 | return (0); | 24 | return (0); |
25 | for (i = 0; i < numchars; i++) | 25 | for (i = 0; i < numchars; i++) |
26 | sum += nibblemap[map->b_data[i] & 0xf] + | 26 | sum += nibblemap[map->b_data[i] & 0xf] + |
diff --git a/fs/ext3/dir.c b/fs/ext3/dir.c index fbb0d4ed07d4..6f9e5a523c87 100644 --- a/fs/ext3/dir.c +++ b/fs/ext3/dir.c | |||
@@ -59,7 +59,7 @@ static unsigned char get_dtype(struct super_block *sb, int filetype) | |||
59 | 59 | ||
60 | return (ext3_filetype_table[filetype]); | 60 | return (ext3_filetype_table[filetype]); |
61 | } | 61 | } |
62 | 62 | ||
63 | 63 | ||
64 | int ext3_check_dir_entry (const char * function, struct inode * dir, | 64 | int ext3_check_dir_entry (const char * function, struct inode * dir, |
65 | struct ext3_dir_entry_2 * de, | 65 | struct ext3_dir_entry_2 * de, |
@@ -162,7 +162,7 @@ revalidate: | |||
162 | * to make sure. */ | 162 | * to make sure. */ |
163 | if (filp->f_version != inode->i_version) { | 163 | if (filp->f_version != inode->i_version) { |
164 | for (i = 0; i < sb->s_blocksize && i < offset; ) { | 164 | for (i = 0; i < sb->s_blocksize && i < offset; ) { |
165 | de = (struct ext3_dir_entry_2 *) | 165 | de = (struct ext3_dir_entry_2 *) |
166 | (bh->b_data + i); | 166 | (bh->b_data + i); |
167 | /* It's too expensive to do a full | 167 | /* It's too expensive to do a full |
168 | * dirent test each time round this | 168 | * dirent test each time round this |
@@ -181,7 +181,7 @@ revalidate: | |||
181 | filp->f_version = inode->i_version; | 181 | filp->f_version = inode->i_version; |
182 | } | 182 | } |
183 | 183 | ||
184 | while (!error && filp->f_pos < inode->i_size | 184 | while (!error && filp->f_pos < inode->i_size |
185 | && offset < sb->s_blocksize) { | 185 | && offset < sb->s_blocksize) { |
186 | de = (struct ext3_dir_entry_2 *) (bh->b_data + offset); | 186 | de = (struct ext3_dir_entry_2 *) (bh->b_data + offset); |
187 | if (!ext3_check_dir_entry ("ext3_readdir", inode, de, | 187 | if (!ext3_check_dir_entry ("ext3_readdir", inode, de, |
@@ -229,7 +229,7 @@ out: | |||
229 | /* | 229 | /* |
230 | * These functions convert from the major/minor hash to an f_pos | 230 | * These functions convert from the major/minor hash to an f_pos |
231 | * value. | 231 | * value. |
232 | * | 232 | * |
233 | * Currently we only use major hash numer. This is unfortunate, but | 233 | * Currently we only use major hash numer. This is unfortunate, but |
234 | * on 32-bit machines, the same VFS interface is used for lseek and | 234 | * on 32-bit machines, the same VFS interface is used for lseek and |
235 | * llseek, so if we use the 64 bit offset, then the 32-bit versions of | 235 | * llseek, so if we use the 64 bit offset, then the 32-bit versions of |
@@ -250,7 +250,7 @@ out: | |||
250 | struct fname { | 250 | struct fname { |
251 | __u32 hash; | 251 | __u32 hash; |
252 | __u32 minor_hash; | 252 | __u32 minor_hash; |
253 | struct rb_node rb_hash; | 253 | struct rb_node rb_hash; |
254 | struct fname *next; | 254 | struct fname *next; |
255 | __u32 inode; | 255 | __u32 inode; |
256 | __u8 name_len; | 256 | __u8 name_len; |
@@ -410,7 +410,7 @@ static int call_filldir(struct file * filp, void * dirent, | |||
410 | curr_pos = hash2pos(fname->hash, fname->minor_hash); | 410 | curr_pos = hash2pos(fname->hash, fname->minor_hash); |
411 | while (fname) { | 411 | while (fname) { |
412 | error = filldir(dirent, fname->name, | 412 | error = filldir(dirent, fname->name, |
413 | fname->name_len, curr_pos, | 413 | fname->name_len, curr_pos, |
414 | fname->inode, | 414 | fname->inode, |
415 | get_dtype(sb, fname->file_type)); | 415 | get_dtype(sb, fname->file_type)); |
416 | if (error) { | 416 | if (error) { |
@@ -465,7 +465,7 @@ static int ext3_dx_readdir(struct file * filp, | |||
465 | /* | 465 | /* |
466 | * Fill the rbtree if we have no more entries, | 466 | * Fill the rbtree if we have no more entries, |
467 | * or the inode has changed since we last read in the | 467 | * or the inode has changed since we last read in the |
468 | * cached entries. | 468 | * cached entries. |
469 | */ | 469 | */ |
470 | if ((!info->curr_node) || | 470 | if ((!info->curr_node) || |
471 | (filp->f_version != inode->i_version)) { | 471 | (filp->f_version != inode->i_version)) { |
diff --git a/fs/ext3/file.c b/fs/ext3/file.c index 1efefb630ea9..994efd189f4e 100644 --- a/fs/ext3/file.c +++ b/fs/ext3/file.c | |||
@@ -100,7 +100,7 @@ ext3_file_write(struct kiocb *iocb, const char __user *buf, size_t count, loff_t | |||
100 | 100 | ||
101 | force_commit: | 101 | force_commit: |
102 | err = ext3_force_commit(inode->i_sb); | 102 | err = ext3_force_commit(inode->i_sb); |
103 | if (err) | 103 | if (err) |
104 | return err; | 104 | return err; |
105 | return ret; | 105 | return ret; |
106 | } | 106 | } |
diff --git a/fs/ext3/fsync.c b/fs/ext3/fsync.c index 49382a208e05..dd1fd3c0fc05 100644 --- a/fs/ext3/fsync.c +++ b/fs/ext3/fsync.c | |||
@@ -8,14 +8,14 @@ | |||
8 | * Universite Pierre et Marie Curie (Paris VI) | 8 | * Universite Pierre et Marie Curie (Paris VI) |
9 | * from | 9 | * from |
10 | * linux/fs/minix/truncate.c Copyright (C) 1991, 1992 Linus Torvalds | 10 | * linux/fs/minix/truncate.c Copyright (C) 1991, 1992 Linus Torvalds |
11 | * | 11 | * |
12 | * ext3fs fsync primitive | 12 | * ext3fs fsync primitive |
13 | * | 13 | * |
14 | * Big-endian to little-endian byte-swapping/bitmaps by | 14 | * Big-endian to little-endian byte-swapping/bitmaps by |
15 | * David S. Miller (davem@caip.rutgers.edu), 1995 | 15 | * David S. Miller (davem@caip.rutgers.edu), 1995 |
16 | * | 16 | * |
17 | * Removed unnecessary code duplication for little endian machines | 17 | * Removed unnecessary code duplication for little endian machines |
18 | * and excessive __inline__s. | 18 | * and excessive __inline__s. |
19 | * Andi Kleen, 1997 | 19 | * Andi Kleen, 1997 |
20 | * | 20 | * |
21 | * Major simplications and cleanup - we only need to do the metadata, because | 21 | * Major simplications and cleanup - we only need to do the metadata, because |
diff --git a/fs/ext3/hash.c b/fs/ext3/hash.c index 5a2d1235ead0..7fa637cd322a 100644 --- a/fs/ext3/hash.c +++ b/fs/ext3/hash.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * Copyright (C) 2002 by Theodore Ts'o | 4 | * Copyright (C) 2002 by Theodore Ts'o |
5 | * | 5 | * |
6 | * This file is released under the GPL v2. | 6 | * This file is released under the GPL v2. |
7 | * | 7 | * |
8 | * This file may be redistributed under the terms of the GNU Public | 8 | * This file may be redistributed under the terms of the GNU Public |
9 | * License. | 9 | * License. |
10 | */ | 10 | */ |
@@ -80,11 +80,11 @@ static void str2hashbuf(const char *msg, int len, __u32 *buf, int num) | |||
80 | * Returns the hash of a filename. If len is 0 and name is NULL, then | 80 | * Returns the hash of a filename. If len is 0 and name is NULL, then |
81 | * this function can be used to test whether or not a hash version is | 81 | * this function can be used to test whether or not a hash version is |
82 | * supported. | 82 | * supported. |
83 | * | 83 | * |
84 | * The seed is an 4 longword (32 bits) "secret" which can be used to | 84 | * The seed is an 4 longword (32 bits) "secret" which can be used to |
85 | * uniquify a hash. If the seed is all zero's, then some default seed | 85 | * uniquify a hash. If the seed is all zero's, then some default seed |
86 | * may be used. | 86 | * may be used. |
87 | * | 87 | * |
88 | * A particular hash version specifies whether or not the seed is | 88 | * A particular hash version specifies whether or not the seed is |
89 | * represented, and whether or not the returned hash is 32 bits or 64 | 89 | * represented, and whether or not the returned hash is 32 bits or 64 |
90 | * bits. 32 bit hashes will return 0 for the minor hash. | 90 | * bits. 32 bit hashes will return 0 for the minor hash. |
diff --git a/fs/ext3/ialloc.c b/fs/ext3/ialloc.c index 36546ed36a14..5e288368499b 100644 --- a/fs/ext3/ialloc.c +++ b/fs/ext3/ialloc.c | |||
@@ -216,7 +216,7 @@ static int find_group_dir(struct super_block *sb, struct inode *parent) | |||
216 | continue; | 216 | continue; |
217 | if (le16_to_cpu(desc->bg_free_inodes_count) < avefreei) | 217 | if (le16_to_cpu(desc->bg_free_inodes_count) < avefreei) |
218 | continue; | 218 | continue; |
219 | if (!best_desc || | 219 | if (!best_desc || |
220 | (le16_to_cpu(desc->bg_free_blocks_count) > | 220 | (le16_to_cpu(desc->bg_free_blocks_count) > |
221 | le16_to_cpu(best_desc->bg_free_blocks_count))) { | 221 | le16_to_cpu(best_desc->bg_free_blocks_count))) { |
222 | best_group = group; | 222 | best_group = group; |
@@ -226,30 +226,30 @@ static int find_group_dir(struct super_block *sb, struct inode *parent) | |||
226 | return best_group; | 226 | return best_group; |
227 | } | 227 | } |
228 | 228 | ||
229 | /* | 229 | /* |
230 | * Orlov's allocator for directories. | 230 | * Orlov's allocator for directories. |
231 | * | 231 | * |
232 | * We always try to spread first-level directories. | 232 | * We always try to spread first-level directories. |
233 | * | 233 | * |
234 | * If there are blockgroups with both free inodes and free blocks counts | 234 | * If there are blockgroups with both free inodes and free blocks counts |
235 | * not worse than average we return one with smallest directory count. | 235 | * not worse than average we return one with smallest directory count. |
236 | * Otherwise we simply return a random group. | 236 | * Otherwise we simply return a random group. |
237 | * | 237 | * |
238 | * For the rest rules look so: | 238 | * For the rest rules look so: |
239 | * | 239 | * |
240 | * It's OK to put directory into a group unless | 240 | * It's OK to put directory into a group unless |
241 | * it has too many directories already (max_dirs) or | 241 | * it has too many directories already (max_dirs) or |
242 | * it has too few free inodes left (min_inodes) or | 242 | * it has too few free inodes left (min_inodes) or |
243 | * it has too few free blocks left (min_blocks) or | 243 | * it has too few free blocks left (min_blocks) or |
244 | * it's already running too large debt (max_debt). | 244 | * it's already running too large debt (max_debt). |
245 | * Parent's group is prefered, if it doesn't satisfy these | 245 | * Parent's group is prefered, if it doesn't satisfy these |
246 | * conditions we search cyclically through the rest. If none | 246 | * conditions we search cyclically through the rest. If none |
247 | * of the groups look good we just look for a group with more | 247 | * of the groups look good we just look for a group with more |
248 | * free inodes than average (starting at parent's group). | 248 | * free inodes than average (starting at parent's group). |
249 | * | 249 | * |
250 | * Debt is incremented each time we allocate a directory and decremented | 250 | * Debt is incremented each time we allocate a directory and decremented |
251 | * when we allocate an inode, within 0--255. | 251 | * when we allocate an inode, within 0--255. |
252 | */ | 252 | */ |
253 | 253 | ||
254 | #define INODE_COST 64 | 254 | #define INODE_COST 64 |
255 | #define BLOCK_COST 256 | 255 | #define BLOCK_COST 256 |
@@ -454,7 +454,7 @@ struct inode *ext3_new_inode(handle_t *handle, struct inode * dir, int mode) | |||
454 | group = find_group_dir(sb, dir); | 454 | group = find_group_dir(sb, dir); |
455 | else | 455 | else |
456 | group = find_group_orlov(sb, dir); | 456 | group = find_group_orlov(sb, dir); |
457 | } else | 457 | } else |
458 | group = find_group_other(sb, dir); | 458 | group = find_group_other(sb, dir); |
459 | 459 | ||
460 | err = -ENOSPC; | 460 | err = -ENOSPC; |
diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c index 84be02e93652..473d206b1d7e 100644 --- a/fs/ext3/inode.c +++ b/fs/ext3/inode.c | |||
@@ -55,7 +55,7 @@ static int ext3_inode_is_fast_symlink(struct inode *inode) | |||
55 | /* | 55 | /* |
56 | * The ext3 forget function must perform a revoke if we are freeing data | 56 | * The ext3 forget function must perform a revoke if we are freeing data |
57 | * which has been journaled. Metadata (eg. indirect blocks) must be | 57 | * which has been journaled. Metadata (eg. indirect blocks) must be |
58 | * revoked in all cases. | 58 | * revoked in all cases. |
59 | * | 59 | * |
60 | * "bh" may be NULL: a metadata block may have been freed from memory | 60 | * "bh" may be NULL: a metadata block may have been freed from memory |
61 | * but there may still be a record of it in the journal, and that record | 61 | * but there may still be a record of it in the journal, and that record |
@@ -105,7 +105,7 @@ int ext3_forget(handle_t *handle, int is_metadata, struct inode *inode, | |||
105 | * Work out how many blocks we need to proceed with the next chunk of a | 105 | * Work out how many blocks we need to proceed with the next chunk of a |
106 | * truncate transaction. | 106 | * truncate transaction. |
107 | */ | 107 | */ |
108 | static unsigned long blocks_for_truncate(struct inode *inode) | 108 | static unsigned long blocks_for_truncate(struct inode *inode) |
109 | { | 109 | { |
110 | unsigned long needed; | 110 | unsigned long needed; |
111 | 111 | ||
@@ -122,13 +122,13 @@ static unsigned long blocks_for_truncate(struct inode *inode) | |||
122 | 122 | ||
123 | /* But we need to bound the transaction so we don't overflow the | 123 | /* But we need to bound the transaction so we don't overflow the |
124 | * journal. */ | 124 | * journal. */ |
125 | if (needed > EXT3_MAX_TRANS_DATA) | 125 | if (needed > EXT3_MAX_TRANS_DATA) |
126 | needed = EXT3_MAX_TRANS_DATA; | 126 | needed = EXT3_MAX_TRANS_DATA; |
127 | 127 | ||
128 | return EXT3_DATA_TRANS_BLOCKS(inode->i_sb) + needed; | 128 | return EXT3_DATA_TRANS_BLOCKS(inode->i_sb) + needed; |
129 | } | 129 | } |
130 | 130 | ||
131 | /* | 131 | /* |
132 | * Truncate transactions can be complex and absolutely huge. So we need to | 132 | * Truncate transactions can be complex and absolutely huge. So we need to |
133 | * be able to restart the transaction at a conventient checkpoint to make | 133 | * be able to restart the transaction at a conventient checkpoint to make |
134 | * sure we don't overflow the journal. | 134 | * sure we don't overflow the journal. |
@@ -136,9 +136,9 @@ static unsigned long blocks_for_truncate(struct inode *inode) | |||
136 | * start_transaction gets us a new handle for a truncate transaction, | 136 | * start_transaction gets us a new handle for a truncate transaction, |
137 | * and extend_transaction tries to extend the existing one a bit. If | 137 | * and extend_transaction tries to extend the existing one a bit. If |
138 | * extend fails, we need to propagate the failure up and restart the | 138 | * extend fails, we need to propagate the failure up and restart the |
139 | * transaction in the top-level truncate loop. --sct | 139 | * transaction in the top-level truncate loop. --sct |
140 | */ | 140 | */ |
141 | static handle_t *start_transaction(struct inode *inode) | 141 | static handle_t *start_transaction(struct inode *inode) |
142 | { | 142 | { |
143 | handle_t *result; | 143 | handle_t *result; |
144 | 144 | ||
@@ -215,12 +215,12 @@ void ext3_delete_inode (struct inode * inode) | |||
215 | ext3_orphan_del(handle, inode); | 215 | ext3_orphan_del(handle, inode); |
216 | EXT3_I(inode)->i_dtime = get_seconds(); | 216 | EXT3_I(inode)->i_dtime = get_seconds(); |
217 | 217 | ||
218 | /* | 218 | /* |
219 | * One subtle ordering requirement: if anything has gone wrong | 219 | * One subtle ordering requirement: if anything has gone wrong |
220 | * (transaction abort, IO errors, whatever), then we can still | 220 | * (transaction abort, IO errors, whatever), then we can still |
221 | * do these next steps (the fs will already have been marked as | 221 | * do these next steps (the fs will already have been marked as |
222 | * having errors), but we can't free the inode if the mark_dirty | 222 | * having errors), but we can't free the inode if the mark_dirty |
223 | * fails. | 223 | * fails. |
224 | */ | 224 | */ |
225 | if (ext3_mark_inode_dirty(handle, inode)) | 225 | if (ext3_mark_inode_dirty(handle, inode)) |
226 | /* If that failed, just do the required in-core inode clear. */ | 226 | /* If that failed, just do the required in-core inode clear. */ |
@@ -398,7 +398,7 @@ no_block: | |||
398 | * + if there is a block to the left of our position - allocate near it. | 398 | * + if there is a block to the left of our position - allocate near it. |
399 | * + if pointer will live in indirect block - allocate near that block. | 399 | * + if pointer will live in indirect block - allocate near that block. |
400 | * + if pointer will live in inode - allocate in the same | 400 | * + if pointer will live in inode - allocate in the same |
401 | * cylinder group. | 401 | * cylinder group. |
402 | * | 402 | * |
403 | * In the latter case we colour the starting block by the callers PID to | 403 | * In the latter case we colour the starting block by the callers PID to |
404 | * prevent it from clashing with concurrent allocations for a different inode | 404 | * prevent it from clashing with concurrent allocations for a different inode |
@@ -744,7 +744,7 @@ static int ext3_splice_branch(handle_t *handle, struct inode *inode, | |||
744 | jbd_debug(5, "splicing indirect only\n"); | 744 | jbd_debug(5, "splicing indirect only\n"); |
745 | BUFFER_TRACE(where->bh, "call ext3_journal_dirty_metadata"); | 745 | BUFFER_TRACE(where->bh, "call ext3_journal_dirty_metadata"); |
746 | err = ext3_journal_dirty_metadata(handle, where->bh); | 746 | err = ext3_journal_dirty_metadata(handle, where->bh); |
747 | if (err) | 747 | if (err) |
748 | goto err_out; | 748 | goto err_out; |
749 | } else { | 749 | } else { |
750 | /* | 750 | /* |
@@ -1137,7 +1137,7 @@ static int walk_page_buffers( handle_t *handle, | |||
1137 | * So what we do is to rely on the fact that journal_stop/journal_start | 1137 | * So what we do is to rely on the fact that journal_stop/journal_start |
1138 | * will _not_ run commit under these circumstances because handle->h_ref | 1138 | * will _not_ run commit under these circumstances because handle->h_ref |
1139 | * is elevated. We'll still have enough credits for the tiny quotafile | 1139 | * is elevated. We'll still have enough credits for the tiny quotafile |
1140 | * write. | 1140 | * write. |
1141 | */ | 1141 | */ |
1142 | static int do_journal_get_write_access(handle_t *handle, | 1142 | static int do_journal_get_write_access(handle_t *handle, |
1143 | struct buffer_head *bh) | 1143 | struct buffer_head *bh) |
@@ -1282,7 +1282,7 @@ static int ext3_journalled_commit_write(struct file *file, | |||
1282 | if (inode->i_size > EXT3_I(inode)->i_disksize) { | 1282 | if (inode->i_size > EXT3_I(inode)->i_disksize) { |
1283 | EXT3_I(inode)->i_disksize = inode->i_size; | 1283 | EXT3_I(inode)->i_disksize = inode->i_size; |
1284 | ret2 = ext3_mark_inode_dirty(handle, inode); | 1284 | ret2 = ext3_mark_inode_dirty(handle, inode); |
1285 | if (!ret) | 1285 | if (!ret) |
1286 | ret = ret2; | 1286 | ret = ret2; |
1287 | } | 1287 | } |
1288 | ret2 = ext3_journal_stop(handle); | 1288 | ret2 = ext3_journal_stop(handle); |
@@ -1291,7 +1291,7 @@ static int ext3_journalled_commit_write(struct file *file, | |||
1291 | return ret; | 1291 | return ret; |
1292 | } | 1292 | } |
1293 | 1293 | ||
1294 | /* | 1294 | /* |
1295 | * bmap() is special. It gets used by applications such as lilo and by | 1295 | * bmap() is special. It gets used by applications such as lilo and by |
1296 | * the swapper to find the on-disk block of a specific piece of data. | 1296 | * the swapper to find the on-disk block of a specific piece of data. |
1297 | * | 1297 | * |
@@ -1300,10 +1300,10 @@ static int ext3_journalled_commit_write(struct file *file, | |||
1300 | * filesystem and enables swap, then they may get a nasty shock when the | 1300 | * filesystem and enables swap, then they may get a nasty shock when the |
1301 | * data getting swapped to that swapfile suddenly gets overwritten by | 1301 | * data getting swapped to that swapfile suddenly gets overwritten by |
1302 | * the original zero's written out previously to the journal and | 1302 | * the original zero's written out previously to the journal and |
1303 | * awaiting writeback in the kernel's buffer cache. | 1303 | * awaiting writeback in the kernel's buffer cache. |
1304 | * | 1304 | * |
1305 | * So, if we see any bmap calls here on a modified, data-journaled file, | 1305 | * So, if we see any bmap calls here on a modified, data-journaled file, |
1306 | * take extra steps to flush any blocks which might be in the cache. | 1306 | * take extra steps to flush any blocks which might be in the cache. |
1307 | */ | 1307 | */ |
1308 | static sector_t ext3_bmap(struct address_space *mapping, sector_t block) | 1308 | static sector_t ext3_bmap(struct address_space *mapping, sector_t block) |
1309 | { | 1309 | { |
@@ -1312,16 +1312,16 @@ static sector_t ext3_bmap(struct address_space *mapping, sector_t block) | |||
1312 | int err; | 1312 | int err; |
1313 | 1313 | ||
1314 | if (EXT3_I(inode)->i_state & EXT3_STATE_JDATA) { | 1314 | if (EXT3_I(inode)->i_state & EXT3_STATE_JDATA) { |
1315 | /* | 1315 | /* |
1316 | * This is a REALLY heavyweight approach, but the use of | 1316 | * This is a REALLY heavyweight approach, but the use of |
1317 | * bmap on dirty files is expected to be extremely rare: | 1317 | * bmap on dirty files is expected to be extremely rare: |
1318 | * only if we run lilo or swapon on a freshly made file | 1318 | * only if we run lilo or swapon on a freshly made file |
1319 | * do we expect this to happen. | 1319 | * do we expect this to happen. |
1320 | * | 1320 | * |
1321 | * (bmap requires CAP_SYS_RAWIO so this does not | 1321 | * (bmap requires CAP_SYS_RAWIO so this does not |
1322 | * represent an unprivileged user DOS attack --- we'd be | 1322 | * represent an unprivileged user DOS attack --- we'd be |
1323 | * in trouble if mortal users could trigger this path at | 1323 | * in trouble if mortal users could trigger this path at |
1324 | * will.) | 1324 | * will.) |
1325 | * | 1325 | * |
1326 | * NB. EXT3_STATE_JDATA is not set on files other than | 1326 | * NB. EXT3_STATE_JDATA is not set on files other than |
1327 | * regular files. If somebody wants to bmap a directory | 1327 | * regular files. If somebody wants to bmap a directory |
@@ -1457,7 +1457,7 @@ static int ext3_ordered_writepage(struct page *page, | |||
1457 | */ | 1457 | */ |
1458 | 1458 | ||
1459 | /* | 1459 | /* |
1460 | * And attach them to the current transaction. But only if | 1460 | * And attach them to the current transaction. But only if |
1461 | * block_write_full_page() succeeded. Otherwise they are unmapped, | 1461 | * block_write_full_page() succeeded. Otherwise they are unmapped, |
1462 | * and generally junk. | 1462 | * and generally junk. |
1463 | */ | 1463 | */ |
@@ -1644,7 +1644,7 @@ static ssize_t ext3_direct_IO(int rw, struct kiocb *iocb, | |||
1644 | } | 1644 | } |
1645 | } | 1645 | } |
1646 | 1646 | ||
1647 | ret = blockdev_direct_IO(rw, iocb, inode, inode->i_sb->s_bdev, iov, | 1647 | ret = blockdev_direct_IO(rw, iocb, inode, inode->i_sb->s_bdev, iov, |
1648 | offset, nr_segs, | 1648 | offset, nr_segs, |
1649 | ext3_get_block, NULL); | 1649 | ext3_get_block, NULL); |
1650 | 1650 | ||
@@ -2025,7 +2025,7 @@ static void ext3_free_data(handle_t *handle, struct inode *inode, | |||
2025 | __le32 *first, __le32 *last) | 2025 | __le32 *first, __le32 *last) |
2026 | { | 2026 | { |
2027 | ext3_fsblk_t block_to_free = 0; /* Starting block # of a run */ | 2027 | ext3_fsblk_t block_to_free = 0; /* Starting block # of a run */ |
2028 | unsigned long count = 0; /* Number of blocks in the run */ | 2028 | unsigned long count = 0; /* Number of blocks in the run */ |
2029 | __le32 *block_to_free_p = NULL; /* Pointer into inode/ind | 2029 | __le32 *block_to_free_p = NULL; /* Pointer into inode/ind |
2030 | corresponding to | 2030 | corresponding to |
2031 | block_to_free */ | 2031 | block_to_free */ |
@@ -2054,7 +2054,7 @@ static void ext3_free_data(handle_t *handle, struct inode *inode, | |||
2054 | } else if (nr == block_to_free + count) { | 2054 | } else if (nr == block_to_free + count) { |
2055 | count++; | 2055 | count++; |
2056 | } else { | 2056 | } else { |
2057 | ext3_clear_blocks(handle, inode, this_bh, | 2057 | ext3_clear_blocks(handle, inode, this_bh, |
2058 | block_to_free, | 2058 | block_to_free, |
2059 | count, block_to_free_p, p); | 2059 | count, block_to_free_p, p); |
2060 | block_to_free = nr; | 2060 | block_to_free = nr; |
@@ -2184,7 +2184,7 @@ static void ext3_free_branches(handle_t *handle, struct inode *inode, | |||
2184 | *p = 0; | 2184 | *p = 0; |
2185 | BUFFER_TRACE(parent_bh, | 2185 | BUFFER_TRACE(parent_bh, |
2186 | "call ext3_journal_dirty_metadata"); | 2186 | "call ext3_journal_dirty_metadata"); |
2187 | ext3_journal_dirty_metadata(handle, | 2187 | ext3_journal_dirty_metadata(handle, |
2188 | parent_bh); | 2188 | parent_bh); |
2189 | } | 2189 | } |
2190 | } | 2190 | } |
@@ -2704,7 +2704,7 @@ void ext3_read_inode(struct inode * inode) | |||
2704 | if (raw_inode->i_block[0]) | 2704 | if (raw_inode->i_block[0]) |
2705 | init_special_inode(inode, inode->i_mode, | 2705 | init_special_inode(inode, inode->i_mode, |
2706 | old_decode_dev(le32_to_cpu(raw_inode->i_block[0]))); | 2706 | old_decode_dev(le32_to_cpu(raw_inode->i_block[0]))); |
2707 | else | 2707 | else |
2708 | init_special_inode(inode, inode->i_mode, | 2708 | init_special_inode(inode, inode->i_mode, |
2709 | new_decode_dev(le32_to_cpu(raw_inode->i_block[1]))); | 2709 | new_decode_dev(le32_to_cpu(raw_inode->i_block[1]))); |
2710 | } | 2710 | } |
@@ -2724,8 +2724,8 @@ bad_inode: | |||
2724 | * | 2724 | * |
2725 | * The caller must have write access to iloc->bh. | 2725 | * The caller must have write access to iloc->bh. |
2726 | */ | 2726 | */ |
2727 | static int ext3_do_update_inode(handle_t *handle, | 2727 | static int ext3_do_update_inode(handle_t *handle, |
2728 | struct inode *inode, | 2728 | struct inode *inode, |
2729 | struct ext3_iloc *iloc) | 2729 | struct ext3_iloc *iloc) |
2730 | { | 2730 | { |
2731 | struct ext3_inode *raw_inode = ext3_raw_inode(iloc); | 2731 | struct ext3_inode *raw_inode = ext3_raw_inode(iloc); |
@@ -2900,7 +2900,7 @@ int ext3_write_inode(struct inode *inode, int wait) | |||
2900 | * commit will leave the blocks being flushed in an unused state on | 2900 | * commit will leave the blocks being flushed in an unused state on |
2901 | * disk. (On recovery, the inode will get truncated and the blocks will | 2901 | * disk. (On recovery, the inode will get truncated and the blocks will |
2902 | * be freed, so we have a strong guarantee that no future commit will | 2902 | * be freed, so we have a strong guarantee that no future commit will |
2903 | * leave these blocks visible to the user.) | 2903 | * leave these blocks visible to the user.) |
2904 | * | 2904 | * |
2905 | * Called with inode->sem down. | 2905 | * Called with inode->sem down. |
2906 | */ | 2906 | */ |
@@ -3043,13 +3043,13 @@ int ext3_mark_iloc_dirty(handle_t *handle, | |||
3043 | return err; | 3043 | return err; |
3044 | } | 3044 | } |
3045 | 3045 | ||
3046 | /* | 3046 | /* |
3047 | * On success, We end up with an outstanding reference count against | 3047 | * On success, We end up with an outstanding reference count against |
3048 | * iloc->bh. This _must_ be cleaned up later. | 3048 | * iloc->bh. This _must_ be cleaned up later. |
3049 | */ | 3049 | */ |
3050 | 3050 | ||
3051 | int | 3051 | int |
3052 | ext3_reserve_inode_write(handle_t *handle, struct inode *inode, | 3052 | ext3_reserve_inode_write(handle_t *handle, struct inode *inode, |
3053 | struct ext3_iloc *iloc) | 3053 | struct ext3_iloc *iloc) |
3054 | { | 3054 | { |
3055 | int err = 0; | 3055 | int err = 0; |
@@ -3139,7 +3139,7 @@ out: | |||
3139 | } | 3139 | } |
3140 | 3140 | ||
3141 | #if 0 | 3141 | #if 0 |
3142 | /* | 3142 | /* |
3143 | * Bind an inode's backing buffer_head into this transaction, to prevent | 3143 | * Bind an inode's backing buffer_head into this transaction, to prevent |
3144 | * it from being flushed to disk early. Unlike | 3144 | * it from being flushed to disk early. Unlike |
3145 | * ext3_reserve_inode_write, this leaves behind no bh reference and | 3145 | * ext3_reserve_inode_write, this leaves behind no bh reference and |
@@ -3157,7 +3157,7 @@ static int ext3_pin_inode(handle_t *handle, struct inode *inode) | |||
3157 | BUFFER_TRACE(iloc.bh, "get_write_access"); | 3157 | BUFFER_TRACE(iloc.bh, "get_write_access"); |
3158 | err = journal_get_write_access(handle, iloc.bh); | 3158 | err = journal_get_write_access(handle, iloc.bh); |
3159 | if (!err) | 3159 | if (!err) |
3160 | err = ext3_journal_dirty_metadata(handle, | 3160 | err = ext3_journal_dirty_metadata(handle, |
3161 | iloc.bh); | 3161 | iloc.bh); |
3162 | brelse(iloc.bh); | 3162 | brelse(iloc.bh); |
3163 | } | 3163 | } |
diff --git a/fs/ext3/namei.c b/fs/ext3/namei.c index 2aa7101b27cd..4123f5261bcd 100644 --- a/fs/ext3/namei.c +++ b/fs/ext3/namei.c | |||
@@ -76,7 +76,7 @@ static struct buffer_head *ext3_append(handle_t *handle, | |||
76 | #ifdef DX_DEBUG | 76 | #ifdef DX_DEBUG |
77 | #define dxtrace(command) command | 77 | #define dxtrace(command) command |
78 | #else | 78 | #else |
79 | #define dxtrace(command) | 79 | #define dxtrace(command) |
80 | #endif | 80 | #endif |
81 | 81 | ||
82 | struct fake_dirent | 82 | struct fake_dirent |
@@ -169,7 +169,7 @@ static struct ext3_dir_entry_2* dx_pack_dirents (char *base, int size); | |||
169 | static void dx_insert_block (struct dx_frame *frame, u32 hash, u32 block); | 169 | static void dx_insert_block (struct dx_frame *frame, u32 hash, u32 block); |
170 | static int ext3_htree_next_block(struct inode *dir, __u32 hash, | 170 | static int ext3_htree_next_block(struct inode *dir, __u32 hash, |
171 | struct dx_frame *frame, | 171 | struct dx_frame *frame, |
172 | struct dx_frame *frames, | 172 | struct dx_frame *frames, |
173 | __u32 *start_hash); | 173 | __u32 *start_hash); |
174 | static struct buffer_head * ext3_dx_find_entry(struct dentry *dentry, | 174 | static struct buffer_head * ext3_dx_find_entry(struct dentry *dentry, |
175 | struct ext3_dir_entry_2 **res_dir, int *err); | 175 | struct ext3_dir_entry_2 **res_dir, int *err); |
@@ -250,7 +250,7 @@ static void dx_show_index (char * label, struct dx_entry *entries) | |||
250 | } | 250 | } |
251 | 251 | ||
252 | struct stats | 252 | struct stats |
253 | { | 253 | { |
254 | unsigned names; | 254 | unsigned names; |
255 | unsigned space; | 255 | unsigned space; |
256 | unsigned bcount; | 256 | unsigned bcount; |
@@ -464,7 +464,7 @@ static void dx_release (struct dx_frame *frames) | |||
464 | */ | 464 | */ |
465 | static int ext3_htree_next_block(struct inode *dir, __u32 hash, | 465 | static int ext3_htree_next_block(struct inode *dir, __u32 hash, |
466 | struct dx_frame *frame, | 466 | struct dx_frame *frame, |
467 | struct dx_frame *frames, | 467 | struct dx_frame *frames, |
468 | __u32 *start_hash) | 468 | __u32 *start_hash) |
469 | { | 469 | { |
470 | struct dx_frame *p; | 470 | struct dx_frame *p; |
@@ -632,7 +632,7 @@ int ext3_htree_fill_tree(struct file *dir_file, __u32 start_hash, | |||
632 | } | 632 | } |
633 | count += ret; | 633 | count += ret; |
634 | hashval = ~0; | 634 | hashval = ~0; |
635 | ret = ext3_htree_next_block(dir, HASH_NB_ALWAYS, | 635 | ret = ext3_htree_next_block(dir, HASH_NB_ALWAYS, |
636 | frame, frames, &hashval); | 636 | frame, frames, &hashval); |
637 | *next_hash = hashval; | 637 | *next_hash = hashval; |
638 | if (ret < 0) { | 638 | if (ret < 0) { |
@@ -649,7 +649,7 @@ int ext3_htree_fill_tree(struct file *dir_file, __u32 start_hash, | |||
649 | break; | 649 | break; |
650 | } | 650 | } |
651 | dx_release(frames); | 651 | dx_release(frames); |
652 | dxtrace(printk("Fill tree: returned %d entries, next hash: %x\n", | 652 | dxtrace(printk("Fill tree: returned %d entries, next hash: %x\n", |
653 | count, *next_hash)); | 653 | count, *next_hash)); |
654 | return count; | 654 | return count; |
655 | errout: | 655 | errout: |
@@ -1050,7 +1050,7 @@ struct dentry *ext3_get_parent(struct dentry *child) | |||
1050 | parent = ERR_PTR(-ENOMEM); | 1050 | parent = ERR_PTR(-ENOMEM); |
1051 | } | 1051 | } |
1052 | return parent; | 1052 | return parent; |
1053 | } | 1053 | } |
1054 | 1054 | ||
1055 | #define S_SHIFT 12 | 1055 | #define S_SHIFT 12 |
1056 | static unsigned char ext3_type_by_mode[S_IFMT >> S_SHIFT] = { | 1056 | static unsigned char ext3_type_by_mode[S_IFMT >> S_SHIFT] = { |
@@ -1198,7 +1198,7 @@ errout: | |||
1198 | * add_dirent_to_buf will attempt search the directory block for | 1198 | * add_dirent_to_buf will attempt search the directory block for |
1199 | * space. It will return -ENOSPC if no space is available, and -EIO | 1199 | * space. It will return -ENOSPC if no space is available, and -EIO |
1200 | * and -EEXIST if directory entry already exists. | 1200 | * and -EEXIST if directory entry already exists. |
1201 | * | 1201 | * |
1202 | * NOTE! bh is NOT released in the case where ENOSPC is returned. In | 1202 | * NOTE! bh is NOT released in the case where ENOSPC is returned. In |
1203 | * all other cases bh is released. | 1203 | * all other cases bh is released. |
1204 | */ | 1204 | */ |
@@ -1572,7 +1572,7 @@ cleanup: | |||
1572 | * ext3_delete_entry deletes a directory entry by merging it with the | 1572 | * ext3_delete_entry deletes a directory entry by merging it with the |
1573 | * previous entry | 1573 | * previous entry |
1574 | */ | 1574 | */ |
1575 | static int ext3_delete_entry (handle_t *handle, | 1575 | static int ext3_delete_entry (handle_t *handle, |
1576 | struct inode * dir, | 1576 | struct inode * dir, |
1577 | struct ext3_dir_entry_2 * de_del, | 1577 | struct ext3_dir_entry_2 * de_del, |
1578 | struct buffer_head * bh) | 1578 | struct buffer_head * bh) |
@@ -1643,12 +1643,12 @@ static int ext3_add_nondir(handle_t *handle, | |||
1643 | * is so far negative - it has no inode. | 1643 | * is so far negative - it has no inode. |
1644 | * | 1644 | * |
1645 | * If the create succeeds, we fill in the inode information | 1645 | * If the create succeeds, we fill in the inode information |
1646 | * with d_instantiate(). | 1646 | * with d_instantiate(). |
1647 | */ | 1647 | */ |
1648 | static int ext3_create (struct inode * dir, struct dentry * dentry, int mode, | 1648 | static int ext3_create (struct inode * dir, struct dentry * dentry, int mode, |
1649 | struct nameidata *nd) | 1649 | struct nameidata *nd) |
1650 | { | 1650 | { |
1651 | handle_t *handle; | 1651 | handle_t *handle; |
1652 | struct inode * inode; | 1652 | struct inode * inode; |
1653 | int err, retries = 0; | 1653 | int err, retries = 0; |
1654 | 1654 | ||
@@ -1813,7 +1813,7 @@ static int empty_dir (struct inode * inode) | |||
1813 | de1 = (struct ext3_dir_entry_2 *) | 1813 | de1 = (struct ext3_dir_entry_2 *) |
1814 | ((char *) de + le16_to_cpu(de->rec_len)); | 1814 | ((char *) de + le16_to_cpu(de->rec_len)); |
1815 | if (le32_to_cpu(de->inode) != inode->i_ino || | 1815 | if (le32_to_cpu(de->inode) != inode->i_ino || |
1816 | !le32_to_cpu(de1->inode) || | 1816 | !le32_to_cpu(de1->inode) || |
1817 | strcmp (".", de->name) || | 1817 | strcmp (".", de->name) || |
1818 | strcmp ("..", de1->name)) { | 1818 | strcmp ("..", de1->name)) { |
1819 | ext3_warning (inode->i_sb, "empty_dir", | 1819 | ext3_warning (inode->i_sb, "empty_dir", |
@@ -1883,7 +1883,7 @@ int ext3_orphan_add(handle_t *handle, struct inode *inode) | |||
1883 | * being truncated, or files being unlinked. */ | 1883 | * being truncated, or files being unlinked. */ |
1884 | 1884 | ||
1885 | /* @@@ FIXME: Observation from aviro: | 1885 | /* @@@ FIXME: Observation from aviro: |
1886 | * I think I can trigger J_ASSERT in ext3_orphan_add(). We block | 1886 | * I think I can trigger J_ASSERT in ext3_orphan_add(). We block |
1887 | * here (on lock_super()), so race with ext3_link() which might bump | 1887 | * here (on lock_super()), so race with ext3_link() which might bump |
1888 | * ->i_nlink. For, say it, character device. Not a regular file, | 1888 | * ->i_nlink. For, say it, character device. Not a regular file, |
1889 | * not a directory, not a symlink and ->i_nlink > 0. | 1889 | * not a directory, not a symlink and ->i_nlink > 0. |
@@ -2393,4 +2393,4 @@ struct inode_operations ext3_special_inode_operations = { | |||
2393 | .removexattr = generic_removexattr, | 2393 | .removexattr = generic_removexattr, |
2394 | #endif | 2394 | #endif |
2395 | .permission = ext3_permission, | 2395 | .permission = ext3_permission, |
2396 | }; | 2396 | }; |
diff --git a/fs/ext3/super.c b/fs/ext3/super.c index 3559086eee5f..4b95bfe4c8f7 100644 --- a/fs/ext3/super.c +++ b/fs/ext3/super.c | |||
@@ -62,13 +62,13 @@ static void ext3_unlockfs(struct super_block *sb); | |||
62 | static void ext3_write_super (struct super_block * sb); | 62 | static void ext3_write_super (struct super_block * sb); |
63 | static void ext3_write_super_lockfs(struct super_block *sb); | 63 | static void ext3_write_super_lockfs(struct super_block *sb); |
64 | 64 | ||
65 | /* | 65 | /* |
66 | * Wrappers for journal_start/end. | 66 | * Wrappers for journal_start/end. |
67 | * | 67 | * |
68 | * The only special thing we need to do here is to make sure that all | 68 | * The only special thing we need to do here is to make sure that all |
69 | * journal_end calls result in the superblock being marked dirty, so | 69 | * journal_end calls result in the superblock being marked dirty, so |
70 | * that sync() will call the filesystem's write_super callback if | 70 | * that sync() will call the filesystem's write_super callback if |
71 | * appropriate. | 71 | * appropriate. |
72 | */ | 72 | */ |
73 | handle_t *ext3_journal_start_sb(struct super_block *sb, int nblocks) | 73 | handle_t *ext3_journal_start_sb(struct super_block *sb, int nblocks) |
74 | { | 74 | { |
@@ -90,11 +90,11 @@ handle_t *ext3_journal_start_sb(struct super_block *sb, int nblocks) | |||
90 | return journal_start(journal, nblocks); | 90 | return journal_start(journal, nblocks); |
91 | } | 91 | } |
92 | 92 | ||
93 | /* | 93 | /* |
94 | * The only special thing we need to do here is to make sure that all | 94 | * The only special thing we need to do here is to make sure that all |
95 | * journal_stop calls result in the superblock being marked dirty, so | 95 | * journal_stop calls result in the superblock being marked dirty, so |
96 | * that sync() will call the filesystem's write_super callback if | 96 | * that sync() will call the filesystem's write_super callback if |
97 | * appropriate. | 97 | * appropriate. |
98 | */ | 98 | */ |
99 | int __ext3_journal_stop(const char *where, handle_t *handle) | 99 | int __ext3_journal_stop(const char *where, handle_t *handle) |
100 | { | 100 | { |
@@ -369,7 +369,7 @@ static void dump_orphan_list(struct super_block *sb, struct ext3_sb_info *sbi) | |||
369 | { | 369 | { |
370 | struct list_head *l; | 370 | struct list_head *l; |
371 | 371 | ||
372 | printk(KERN_ERR "sb orphan head is %d\n", | 372 | printk(KERN_ERR "sb orphan head is %d\n", |
373 | le32_to_cpu(sbi->s_es->s_last_orphan)); | 373 | le32_to_cpu(sbi->s_es->s_last_orphan)); |
374 | 374 | ||
375 | printk(KERN_ERR "sb_info orphan list:\n"); | 375 | printk(KERN_ERR "sb_info orphan list:\n"); |
@@ -378,7 +378,7 @@ static void dump_orphan_list(struct super_block *sb, struct ext3_sb_info *sbi) | |||
378 | printk(KERN_ERR " " | 378 | printk(KERN_ERR " " |
379 | "inode %s:%ld at %p: mode %o, nlink %d, next %d\n", | 379 | "inode %s:%ld at %p: mode %o, nlink %d, next %d\n", |
380 | inode->i_sb->s_id, inode->i_ino, inode, | 380 | inode->i_sb->s_id, inode->i_ino, inode, |
381 | inode->i_mode, inode->i_nlink, | 381 | inode->i_mode, inode->i_nlink, |
382 | NEXT_ORPHAN(inode)); | 382 | NEXT_ORPHAN(inode)); |
383 | } | 383 | } |
384 | } | 384 | } |
@@ -475,7 +475,7 @@ static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags) | |||
475 | inode_init_once(&ei->vfs_inode); | 475 | inode_init_once(&ei->vfs_inode); |
476 | } | 476 | } |
477 | } | 477 | } |
478 | 478 | ||
479 | static int init_inodecache(void) | 479 | static int init_inodecache(void) |
480 | { | 480 | { |
481 | ext3_inode_cachep = kmem_cache_create("ext3_inode_cache", | 481 | ext3_inode_cachep = kmem_cache_create("ext3_inode_cache", |
@@ -1483,7 +1483,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent) | |||
1483 | (EXT3_HAS_COMPAT_FEATURE(sb, ~0U) || | 1483 | (EXT3_HAS_COMPAT_FEATURE(sb, ~0U) || |
1484 | EXT3_HAS_RO_COMPAT_FEATURE(sb, ~0U) || | 1484 | EXT3_HAS_RO_COMPAT_FEATURE(sb, ~0U) || |
1485 | EXT3_HAS_INCOMPAT_FEATURE(sb, ~0U))) | 1485 | EXT3_HAS_INCOMPAT_FEATURE(sb, ~0U))) |
1486 | printk(KERN_WARNING | 1486 | printk(KERN_WARNING |
1487 | "EXT3-fs warning: feature flags set on rev 0 fs, " | 1487 | "EXT3-fs warning: feature flags set on rev 0 fs, " |
1488 | "running e2fsck is recommended\n"); | 1488 | "running e2fsck is recommended\n"); |
1489 | /* | 1489 | /* |
@@ -1509,7 +1509,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent) | |||
1509 | 1509 | ||
1510 | if (blocksize < EXT3_MIN_BLOCK_SIZE || | 1510 | if (blocksize < EXT3_MIN_BLOCK_SIZE || |
1511 | blocksize > EXT3_MAX_BLOCK_SIZE) { | 1511 | blocksize > EXT3_MAX_BLOCK_SIZE) { |
1512 | printk(KERN_ERR | 1512 | printk(KERN_ERR |
1513 | "EXT3-fs: Unsupported filesystem blocksize %d on %s.\n", | 1513 | "EXT3-fs: Unsupported filesystem blocksize %d on %s.\n", |
1514 | blocksize, sb->s_id); | 1514 | blocksize, sb->s_id); |
1515 | goto failed_mount; | 1515 | goto failed_mount; |
@@ -1533,14 +1533,14 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent) | |||
1533 | offset = (sb_block * EXT3_MIN_BLOCK_SIZE) % blocksize; | 1533 | offset = (sb_block * EXT3_MIN_BLOCK_SIZE) % blocksize; |
1534 | bh = sb_bread(sb, logic_sb_block); | 1534 | bh = sb_bread(sb, logic_sb_block); |
1535 | if (!bh) { | 1535 | if (!bh) { |
1536 | printk(KERN_ERR | 1536 | printk(KERN_ERR |
1537 | "EXT3-fs: Can't read superblock on 2nd try.\n"); | 1537 | "EXT3-fs: Can't read superblock on 2nd try.\n"); |
1538 | goto failed_mount; | 1538 | goto failed_mount; |
1539 | } | 1539 | } |
1540 | es = (struct ext3_super_block *)(((char *)bh->b_data) + offset); | 1540 | es = (struct ext3_super_block *)(((char *)bh->b_data) + offset); |
1541 | sbi->s_es = es; | 1541 | sbi->s_es = es; |
1542 | if (es->s_magic != cpu_to_le16(EXT3_SUPER_MAGIC)) { | 1542 | if (es->s_magic != cpu_to_le16(EXT3_SUPER_MAGIC)) { |
1543 | printk (KERN_ERR | 1543 | printk (KERN_ERR |
1544 | "EXT3-fs: Magic mismatch, very weird !\n"); | 1544 | "EXT3-fs: Magic mismatch, very weird !\n"); |
1545 | goto failed_mount; | 1545 | goto failed_mount; |
1546 | } | 1546 | } |
@@ -1820,7 +1820,7 @@ out_fail: | |||
1820 | /* | 1820 | /* |
1821 | * Setup any per-fs journal parameters now. We'll do this both on | 1821 | * Setup any per-fs journal parameters now. We'll do this both on |
1822 | * initial mount, once the journal has been initialised but before we've | 1822 | * initial mount, once the journal has been initialised but before we've |
1823 | * done any recovery; and again on any subsequent remount. | 1823 | * done any recovery; and again on any subsequent remount. |
1824 | */ | 1824 | */ |
1825 | static void ext3_init_journal_params(struct super_block *sb, journal_t *journal) | 1825 | static void ext3_init_journal_params(struct super_block *sb, journal_t *journal) |
1826 | { | 1826 | { |