diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/btrfs/ctree.c | 10 | ||||
| -rw-r--r-- | fs/btrfs/disk-io.c | 4 | ||||
| -rw-r--r-- | fs/btrfs/extent-tree.c | 4 | ||||
| -rw-r--r-- | fs/btrfs/locking.c | 6 | ||||
| -rw-r--r-- | fs/btrfs/locking.h | 2 | ||||
| -rw-r--r-- | fs/devpts/inode.c | 5 | ||||
| -rw-r--r-- | fs/ext4/ialloc.c | 8 | ||||
| -rw-r--r-- | fs/squashfs/block.c | 13 | ||||
| -rw-r--r-- | fs/squashfs/cache.c | 4 | ||||
| -rw-r--r-- | fs/squashfs/inode.c | 6 | ||||
| -rw-r--r-- | fs/squashfs/squashfs.h | 2 | ||||
| -rw-r--r-- | fs/squashfs/super.c | 2 |
12 files changed, 37 insertions, 29 deletions
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index 42491d728e99..37f31b5529aa 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c | |||
| @@ -277,7 +277,7 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans, | |||
| 277 | if (*cow_ret == buf) | 277 | if (*cow_ret == buf) |
| 278 | unlock_orig = 1; | 278 | unlock_orig = 1; |
| 279 | 279 | ||
| 280 | WARN_ON(!btrfs_tree_locked(buf)); | 280 | btrfs_assert_tree_locked(buf); |
| 281 | 281 | ||
| 282 | if (parent) | 282 | if (parent) |
| 283 | parent_start = parent->start; | 283 | parent_start = parent->start; |
| @@ -2365,7 +2365,7 @@ static int push_leaf_right(struct btrfs_trans_handle *trans, struct btrfs_root | |||
| 2365 | if (slot >= btrfs_header_nritems(upper) - 1) | 2365 | if (slot >= btrfs_header_nritems(upper) - 1) |
| 2366 | return 1; | 2366 | return 1; |
| 2367 | 2367 | ||
| 2368 | WARN_ON(!btrfs_tree_locked(path->nodes[1])); | 2368 | btrfs_assert_tree_locked(path->nodes[1]); |
| 2369 | 2369 | ||
| 2370 | right = read_node_slot(root, upper, slot + 1); | 2370 | right = read_node_slot(root, upper, slot + 1); |
| 2371 | btrfs_tree_lock(right); | 2371 | btrfs_tree_lock(right); |
| @@ -2562,7 +2562,7 @@ static int push_leaf_left(struct btrfs_trans_handle *trans, struct btrfs_root | |||
| 2562 | if (right_nritems == 0) | 2562 | if (right_nritems == 0) |
| 2563 | return 1; | 2563 | return 1; |
| 2564 | 2564 | ||
| 2565 | WARN_ON(!btrfs_tree_locked(path->nodes[1])); | 2565 | btrfs_assert_tree_locked(path->nodes[1]); |
| 2566 | 2566 | ||
| 2567 | left = read_node_slot(root, path->nodes[1], slot - 1); | 2567 | left = read_node_slot(root, path->nodes[1], slot - 1); |
| 2568 | btrfs_tree_lock(left); | 2568 | btrfs_tree_lock(left); |
| @@ -4101,7 +4101,7 @@ int btrfs_next_leaf(struct btrfs_root *root, struct btrfs_path *path) | |||
| 4101 | 4101 | ||
| 4102 | next = read_node_slot(root, c, slot); | 4102 | next = read_node_slot(root, c, slot); |
| 4103 | if (!path->skip_locking) { | 4103 | if (!path->skip_locking) { |
| 4104 | WARN_ON(!btrfs_tree_locked(c)); | 4104 | btrfs_assert_tree_locked(c); |
| 4105 | btrfs_tree_lock(next); | 4105 | btrfs_tree_lock(next); |
| 4106 | btrfs_set_lock_blocking(next); | 4106 | btrfs_set_lock_blocking(next); |
| 4107 | } | 4107 | } |
| @@ -4126,7 +4126,7 @@ int btrfs_next_leaf(struct btrfs_root *root, struct btrfs_path *path) | |||
| 4126 | reada_for_search(root, path, level, slot, 0); | 4126 | reada_for_search(root, path, level, slot, 0); |
| 4127 | next = read_node_slot(root, next, 0); | 4127 | next = read_node_slot(root, next, 0); |
| 4128 | if (!path->skip_locking) { | 4128 | if (!path->skip_locking) { |
| 4129 | WARN_ON(!btrfs_tree_locked(path->nodes[level])); | 4129 | btrfs_assert_tree_locked(path->nodes[level]); |
| 4130 | btrfs_tree_lock(next); | 4130 | btrfs_tree_lock(next); |
| 4131 | btrfs_set_lock_blocking(next); | 4131 | btrfs_set_lock_blocking(next); |
| 4132 | } | 4132 | } |
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index adda739a0215..3e18175248e0 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
| @@ -857,7 +857,7 @@ int clean_tree_block(struct btrfs_trans_handle *trans, struct btrfs_root *root, | |||
| 857 | struct inode *btree_inode = root->fs_info->btree_inode; | 857 | struct inode *btree_inode = root->fs_info->btree_inode; |
| 858 | if (btrfs_header_generation(buf) == | 858 | if (btrfs_header_generation(buf) == |
| 859 | root->fs_info->running_transaction->transid) { | 859 | root->fs_info->running_transaction->transid) { |
| 860 | WARN_ON(!btrfs_tree_locked(buf)); | 860 | btrfs_assert_tree_locked(buf); |
| 861 | 861 | ||
| 862 | /* ugh, clear_extent_buffer_dirty can be expensive */ | 862 | /* ugh, clear_extent_buffer_dirty can be expensive */ |
| 863 | btrfs_set_lock_blocking(buf); | 863 | btrfs_set_lock_blocking(buf); |
| @@ -2361,7 +2361,7 @@ void btrfs_mark_buffer_dirty(struct extent_buffer *buf) | |||
| 2361 | 2361 | ||
| 2362 | btrfs_set_lock_blocking(buf); | 2362 | btrfs_set_lock_blocking(buf); |
| 2363 | 2363 | ||
| 2364 | WARN_ON(!btrfs_tree_locked(buf)); | 2364 | btrfs_assert_tree_locked(buf); |
| 2365 | if (transid != root->fs_info->generation) { | 2365 | if (transid != root->fs_info->generation) { |
| 2366 | printk(KERN_CRIT "btrfs transid mismatch buffer %llu, " | 2366 | printk(KERN_CRIT "btrfs transid mismatch buffer %llu, " |
| 2367 | "found %llu running %llu\n", | 2367 | "found %llu running %llu\n", |
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 6b5966aacf44..9abf81f71c46 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
| @@ -4418,13 +4418,13 @@ int btrfs_drop_subtree(struct btrfs_trans_handle *trans, | |||
| 4418 | path = btrfs_alloc_path(); | 4418 | path = btrfs_alloc_path(); |
| 4419 | BUG_ON(!path); | 4419 | BUG_ON(!path); |
| 4420 | 4420 | ||
| 4421 | BUG_ON(!btrfs_tree_locked(parent)); | 4421 | btrfs_assert_tree_locked(parent); |
| 4422 | parent_level = btrfs_header_level(parent); | 4422 | parent_level = btrfs_header_level(parent); |
| 4423 | extent_buffer_get(parent); | 4423 | extent_buffer_get(parent); |
| 4424 | path->nodes[parent_level] = parent; | 4424 | path->nodes[parent_level] = parent; |
| 4425 | path->slots[parent_level] = btrfs_header_nritems(parent); | 4425 | path->slots[parent_level] = btrfs_header_nritems(parent); |
| 4426 | 4426 | ||
| 4427 | BUG_ON(!btrfs_tree_locked(node)); | 4427 | btrfs_assert_tree_locked(node); |
| 4428 | level = btrfs_header_level(node); | 4428 | level = btrfs_header_level(node); |
| 4429 | extent_buffer_get(node); | 4429 | extent_buffer_get(node); |
| 4430 | path->nodes[level] = node; | 4430 | path->nodes[level] = node; |
diff --git a/fs/btrfs/locking.c b/fs/btrfs/locking.c index 85506c4a3af7..47b0a88c12a2 100644 --- a/fs/btrfs/locking.c +++ b/fs/btrfs/locking.c | |||
| @@ -220,8 +220,8 @@ int btrfs_tree_unlock(struct extent_buffer *eb) | |||
| 220 | return 0; | 220 | return 0; |
| 221 | } | 221 | } |
| 222 | 222 | ||
| 223 | int btrfs_tree_locked(struct extent_buffer *eb) | 223 | void btrfs_assert_tree_locked(struct extent_buffer *eb) |
| 224 | { | 224 | { |
| 225 | return test_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags) || | 225 | if (!test_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags)) |
| 226 | spin_is_locked(&eb->lock); | 226 | assert_spin_locked(&eb->lock); |
| 227 | } | 227 | } |
diff --git a/fs/btrfs/locking.h b/fs/btrfs/locking.h index 6bb0afbff928..6c4ce457168c 100644 --- a/fs/btrfs/locking.h +++ b/fs/btrfs/locking.h | |||
| @@ -21,11 +21,11 @@ | |||
| 21 | 21 | ||
| 22 | int btrfs_tree_lock(struct extent_buffer *eb); | 22 | int btrfs_tree_lock(struct extent_buffer *eb); |
| 23 | int btrfs_tree_unlock(struct extent_buffer *eb); | 23 | int btrfs_tree_unlock(struct extent_buffer *eb); |
| 24 | int btrfs_tree_locked(struct extent_buffer *eb); | ||
| 25 | 24 | ||
| 26 | int btrfs_try_tree_lock(struct extent_buffer *eb); | 25 | int btrfs_try_tree_lock(struct extent_buffer *eb); |
| 27 | int btrfs_try_spin_lock(struct extent_buffer *eb); | 26 | int btrfs_try_spin_lock(struct extent_buffer *eb); |
| 28 | 27 | ||
| 29 | void btrfs_set_lock_blocking(struct extent_buffer *eb); | 28 | void btrfs_set_lock_blocking(struct extent_buffer *eb); |
| 30 | void btrfs_clear_lock_blocking(struct extent_buffer *eb); | 29 | void btrfs_clear_lock_blocking(struct extent_buffer *eb); |
| 30 | void btrfs_assert_tree_locked(struct extent_buffer *eb); | ||
| 31 | #endif | 31 | #endif |
diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c index 5f3231b9633f..bff4052b05e7 100644 --- a/fs/devpts/inode.c +++ b/fs/devpts/inode.c | |||
| @@ -198,9 +198,6 @@ static int mknod_ptmx(struct super_block *sb) | |||
| 198 | 198 | ||
| 199 | fsi->ptmx_dentry = dentry; | 199 | fsi->ptmx_dentry = dentry; |
| 200 | rc = 0; | 200 | rc = 0; |
| 201 | |||
| 202 | printk(KERN_DEBUG "Created ptmx node in devpts ino %lu\n", | ||
| 203 | inode->i_ino); | ||
| 204 | out: | 201 | out: |
| 205 | mutex_unlock(&root->d_inode->i_mutex); | 202 | mutex_unlock(&root->d_inode->i_mutex); |
| 206 | return rc; | 203 | return rc; |
| @@ -369,8 +366,6 @@ static int new_pts_mount(struct file_system_type *fs_type, int flags, | |||
| 369 | struct pts_fs_info *fsi; | 366 | struct pts_fs_info *fsi; |
| 370 | struct pts_mount_opts *opts; | 367 | struct pts_mount_opts *opts; |
| 371 | 368 | ||
| 372 | printk(KERN_NOTICE "devpts: newinstance mount\n"); | ||
| 373 | |||
| 374 | err = get_sb_nodev(fs_type, flags, data, devpts_fill_super, mnt); | 369 | err = get_sb_nodev(fs_type, flags, data, devpts_fill_super, mnt); |
| 375 | if (err) | 370 | if (err) |
| 376 | return err; | 371 | return err; |
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index f18a919be70b..627f8c3337a3 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c | |||
| @@ -188,7 +188,7 @@ void ext4_free_inode(handle_t *handle, struct inode *inode) | |||
| 188 | struct ext4_group_desc *gdp; | 188 | struct ext4_group_desc *gdp; |
| 189 | struct ext4_super_block *es; | 189 | struct ext4_super_block *es; |
| 190 | struct ext4_sb_info *sbi; | 190 | struct ext4_sb_info *sbi; |
| 191 | int fatal = 0, err, count; | 191 | int fatal = 0, err, count, cleared; |
| 192 | ext4_group_t flex_group; | 192 | ext4_group_t flex_group; |
| 193 | 193 | ||
| 194 | if (atomic_read(&inode->i_count) > 1) { | 194 | if (atomic_read(&inode->i_count) > 1) { |
| @@ -248,8 +248,10 @@ void ext4_free_inode(handle_t *handle, struct inode *inode) | |||
| 248 | goto error_return; | 248 | goto error_return; |
| 249 | 249 | ||
| 250 | /* Ok, now we can actually update the inode bitmaps.. */ | 250 | /* Ok, now we can actually update the inode bitmaps.. */ |
| 251 | if (!ext4_clear_bit_atomic(sb_bgl_lock(sbi, block_group), | 251 | spin_lock(sb_bgl_lock(sbi, block_group)); |
| 252 | bit, bitmap_bh->b_data)) | 252 | cleared = ext4_clear_bit(bit, bitmap_bh->b_data); |
| 253 | spin_unlock(sb_bgl_lock(sbi, block_group)); | ||
| 254 | if (!cleared) | ||
| 253 | ext4_error(sb, "ext4_free_inode", | 255 | ext4_error(sb, "ext4_free_inode", |
| 254 | "bit already cleared for inode %lu", ino); | 256 | "bit already cleared for inode %lu", ino); |
| 255 | else { | 257 | else { |
diff --git a/fs/squashfs/block.c b/fs/squashfs/block.c index c837dfc2b3c6..321728f48f2d 100644 --- a/fs/squashfs/block.c +++ b/fs/squashfs/block.c | |||
| @@ -80,7 +80,7 @@ static struct buffer_head *get_block_length(struct super_block *sb, | |||
| 80 | * generated a larger block - this does occasionally happen with zlib). | 80 | * generated a larger block - this does occasionally happen with zlib). |
| 81 | */ | 81 | */ |
| 82 | int squashfs_read_data(struct super_block *sb, void **buffer, u64 index, | 82 | int squashfs_read_data(struct super_block *sb, void **buffer, u64 index, |
| 83 | int length, u64 *next_index, int srclength) | 83 | int length, u64 *next_index, int srclength, int pages) |
| 84 | { | 84 | { |
| 85 | struct squashfs_sb_info *msblk = sb->s_fs_info; | 85 | struct squashfs_sb_info *msblk = sb->s_fs_info; |
| 86 | struct buffer_head **bh; | 86 | struct buffer_head **bh; |
| @@ -185,6 +185,14 @@ int squashfs_read_data(struct super_block *sb, void **buffer, u64 index, | |||
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | if (msblk->stream.avail_out == 0) { | 187 | if (msblk->stream.avail_out == 0) { |
| 188 | if (page == pages) { | ||
| 189 | ERROR("zlib_inflate tried to " | ||
| 190 | "decompress too much data, " | ||
| 191 | "expected %d bytes. Zlib " | ||
| 192 | "data probably corrupt\n", | ||
| 193 | srclength); | ||
| 194 | goto release_mutex; | ||
| 195 | } | ||
| 188 | msblk->stream.next_out = buffer[page++]; | 196 | msblk->stream.next_out = buffer[page++]; |
| 189 | msblk->stream.avail_out = PAGE_CACHE_SIZE; | 197 | msblk->stream.avail_out = PAGE_CACHE_SIZE; |
| 190 | } | 198 | } |
| @@ -268,7 +276,8 @@ block_release: | |||
| 268 | put_bh(bh[k]); | 276 | put_bh(bh[k]); |
| 269 | 277 | ||
| 270 | read_failure: | 278 | read_failure: |
| 271 | ERROR("sb_bread failed reading block 0x%llx\n", cur_index); | 279 | ERROR("squashfs_read_data failed to read block 0x%llx\n", |
| 280 | (unsigned long long) index); | ||
| 272 | kfree(bh); | 281 | kfree(bh); |
| 273 | return -EIO; | 282 | return -EIO; |
| 274 | } | 283 | } |
diff --git a/fs/squashfs/cache.c b/fs/squashfs/cache.c index f29eda16d25e..1c4739e33af6 100644 --- a/fs/squashfs/cache.c +++ b/fs/squashfs/cache.c | |||
| @@ -119,7 +119,7 @@ struct squashfs_cache_entry *squashfs_cache_get(struct super_block *sb, | |||
| 119 | 119 | ||
| 120 | entry->length = squashfs_read_data(sb, entry->data, | 120 | entry->length = squashfs_read_data(sb, entry->data, |
| 121 | block, length, &entry->next_index, | 121 | block, length, &entry->next_index, |
| 122 | cache->block_size); | 122 | cache->block_size, cache->pages); |
| 123 | 123 | ||
| 124 | spin_lock(&cache->lock); | 124 | spin_lock(&cache->lock); |
| 125 | 125 | ||
| @@ -406,7 +406,7 @@ int squashfs_read_table(struct super_block *sb, void *buffer, u64 block, | |||
| 406 | for (i = 0; i < pages; i++, buffer += PAGE_CACHE_SIZE) | 406 | for (i = 0; i < pages; i++, buffer += PAGE_CACHE_SIZE) |
| 407 | data[i] = buffer; | 407 | data[i] = buffer; |
| 408 | res = squashfs_read_data(sb, data, block, length | | 408 | res = squashfs_read_data(sb, data, block, length | |
| 409 | SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, length); | 409 | SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, length, pages); |
| 410 | kfree(data); | 410 | kfree(data); |
| 411 | return res; | 411 | return res; |
| 412 | } | 412 | } |
diff --git a/fs/squashfs/inode.c b/fs/squashfs/inode.c index 7a63398bb855..9101dbde39ec 100644 --- a/fs/squashfs/inode.c +++ b/fs/squashfs/inode.c | |||
| @@ -133,7 +133,8 @@ int squashfs_read_inode(struct inode *inode, long long ino) | |||
| 133 | type = le16_to_cpu(sqshb_ino->inode_type); | 133 | type = le16_to_cpu(sqshb_ino->inode_type); |
| 134 | switch (type) { | 134 | switch (type) { |
| 135 | case SQUASHFS_REG_TYPE: { | 135 | case SQUASHFS_REG_TYPE: { |
| 136 | unsigned int frag_offset, frag_size, frag; | 136 | unsigned int frag_offset, frag; |
| 137 | int frag_size; | ||
| 137 | u64 frag_blk; | 138 | u64 frag_blk; |
| 138 | struct squashfs_reg_inode *sqsh_ino = &squashfs_ino.reg; | 139 | struct squashfs_reg_inode *sqsh_ino = &squashfs_ino.reg; |
| 139 | 140 | ||
| @@ -175,7 +176,8 @@ int squashfs_read_inode(struct inode *inode, long long ino) | |||
| 175 | break; | 176 | break; |
| 176 | } | 177 | } |
| 177 | case SQUASHFS_LREG_TYPE: { | 178 | case SQUASHFS_LREG_TYPE: { |
| 178 | unsigned int frag_offset, frag_size, frag; | 179 | unsigned int frag_offset, frag; |
| 180 | int frag_size; | ||
| 179 | u64 frag_blk; | 181 | u64 frag_blk; |
| 180 | struct squashfs_lreg_inode *sqsh_ino = &squashfs_ino.lreg; | 182 | struct squashfs_lreg_inode *sqsh_ino = &squashfs_ino.lreg; |
| 181 | 183 | ||
diff --git a/fs/squashfs/squashfs.h b/fs/squashfs/squashfs.h index 6b2515d027d5..0e9feb6adf7e 100644 --- a/fs/squashfs/squashfs.h +++ b/fs/squashfs/squashfs.h | |||
| @@ -34,7 +34,7 @@ static inline struct squashfs_inode_info *squashfs_i(struct inode *inode) | |||
| 34 | 34 | ||
| 35 | /* block.c */ | 35 | /* block.c */ |
| 36 | extern int squashfs_read_data(struct super_block *, void **, u64, int, u64 *, | 36 | extern int squashfs_read_data(struct super_block *, void **, u64, int, u64 *, |
| 37 | int); | 37 | int, int); |
| 38 | 38 | ||
| 39 | /* cache.c */ | 39 | /* cache.c */ |
| 40 | extern struct squashfs_cache *squashfs_cache_init(char *, int, int); | 40 | extern struct squashfs_cache *squashfs_cache_init(char *, int, int); |
diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c index 071df5b5b491..681ec0d83799 100644 --- a/fs/squashfs/super.c +++ b/fs/squashfs/super.c | |||
| @@ -389,7 +389,7 @@ static int __init init_squashfs_fs(void) | |||
| 389 | return err; | 389 | return err; |
| 390 | } | 390 | } |
| 391 | 391 | ||
| 392 | printk(KERN_INFO "squashfs: version 4.0 (2009/01/03) " | 392 | printk(KERN_INFO "squashfs: version 4.0 (2009/01/31) " |
| 393 | "Phillip Lougher\n"); | 393 | "Phillip Lougher\n"); |
| 394 | 394 | ||
| 395 | return 0; | 395 | return 0; |
