linux-bl808/fs/btrfs
Miao Xie ba38eb4de3 Btrfs: fix no reserved space for writing out inode cache
I-node cache forgets to reserve the space when writing out it. And when
we do some stress test, such as synctest, it will trigger WARN_ON() in
use_block_rsv().

WARNING: at fs/btrfs/extent-tree.c:5718 btrfs_alloc_free_block+0xbf/0x281 [btrfs]()
...
Call Trace:
 [<ffffffff8104df86>] warn_slowpath_common+0x80/0x98
 [<ffffffff8104dfb3>] warn_slowpath_null+0x15/0x17
 [<ffffffffa0369c60>] btrfs_alloc_free_block+0xbf/0x281 [btrfs]
 [<ffffffff810cbcb8>] ? __set_page_dirty_nobuffers+0xfe/0x108
 [<ffffffffa035c040>] __btrfs_cow_block+0x118/0x3b5 [btrfs]
 [<ffffffffa035c7ba>] btrfs_cow_block+0x103/0x14e [btrfs]
 [<ffffffffa035e4c4>] btrfs_search_slot+0x249/0x6a4 [btrfs]
 [<ffffffffa036d086>] btrfs_lookup_inode+0x2a/0x8a [btrfs]
 [<ffffffffa03788b7>] btrfs_update_inode+0xaa/0x141 [btrfs]
 [<ffffffffa036d7ec>] btrfs_save_ino_cache+0xea/0x202 [btrfs]
 [<ffffffffa03a761e>] ? btrfs_update_reloc_root+0x17e/0x197 [btrfs]
 [<ffffffffa0373867>] commit_fs_roots+0xaa/0x158 [btrfs]
 [<ffffffffa03746a6>] btrfs_commit_transaction+0x405/0x731 [btrfs]
 [<ffffffff810690df>] ? wake_up_bit+0x25/0x25
 [<ffffffffa039d652>] ? btrfs_log_dentry_safe+0x43/0x51 [btrfs]
 [<ffffffffa0381c5f>] btrfs_sync_file+0x16a/0x198 [btrfs]
 [<ffffffff81122806>] ? mntput+0x21/0x23
 [<ffffffff8112d150>] vfs_fsync_range+0x18/0x21
 [<ffffffff8112d170>] vfs_fsync+0x17/0x19
 [<ffffffff8112d316>] do_fsync+0x29/0x3e
 [<ffffffff8112d348>] sys_fsync+0xb/0xf
 [<ffffffff81468352>] system_call_fastpath+0x16/0x1b

Sometimes it causes BUG_ON() in the reservation code of the delayed inode
is triggered.

So we must reserve enough space for inode cache.

Note: If we can not reserve the enough space for inode cache, we will
give up writing out it.

Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2011-11-10 20:45:04 -05:00
..
acl.c
async-thread.c
async-thread.h
backref.c Btrfs: fix the new inspection ioctls for 32 bit compat 2011-11-06 03:08:49 -05:00
backref.h
btrfs_inode.h Btrfs: fix our reservations for updating an inode when completing io 2011-11-08 15:47:34 -05:00
compat.h
compression.c btrfs: separate superblock items out of fs_info 2011-11-06 03:04:01 -05:00
compression.h
ctree.c
ctree.h Merge branch 'for-chris' of git://github.com/sensille/linux into integration 2011-11-06 03:05:08 -05:00
delayed-inode.c Btrfs: tweak the delayed inode reservations again 2011-11-10 20:39:08 -05:00
delayed-inode.h
delayed-ref.c
delayed-ref.h
dir-item.c
disk-io.c Btrfs: close devices on all error paths in open_ctree() 2011-11-09 22:53:38 +02:00
disk-io.h Merge branch 'for-chris' of git://github.com/sensille/linux into integration 2011-11-06 03:05:08 -05:00
export.c
export.h
extent-tree.c Btrfs: fix our reservations for updating an inode when completing io 2011-11-08 15:47:34 -05:00
extent_io.c Merge git://git.jan-o-sch.net/btrfs-unstable into integration 2011-11-06 03:07:10 -05:00
extent_io.h Merge git://git.jan-o-sch.net/btrfs-unstable into integration 2011-11-06 03:07:10 -05:00
extent_map.c
extent_map.h
file-item.c btrfs: separate superblock items out of fs_info 2011-11-06 03:04:01 -05:00
file.c
free-space-cache.c Btrfs: use the global reserve when truncating the free space cache inode 2011-11-06 03:03:50 -05:00
free-space-cache.h
hash.h
inode-item.c
inode-map.c Btrfs: fix no reserved space for writing out inode cache 2011-11-10 20:45:04 -05:00
inode-map.h
inode.c Btrfs: tweak the delayed inode reservations again 2011-11-10 20:39:08 -05:00
ioctl.c Btrfs: fix the new inspection ioctls for 32 bit compat 2011-11-06 03:08:49 -05:00
ioctl.h Btrfs: fix the new inspection ioctls for 32 bit compat 2011-11-06 03:08:49 -05:00
Kconfig
locking.c
locking.h
lzo.c
Makefile Merge git://git.jan-o-sch.net/btrfs-unstable into integration 2011-11-06 03:07:10 -05:00
ordered-data.c
ordered-data.h
orphan.c
print-tree.c
print-tree.h
reada.c Btrfs: rename btrfs_bio multi -> bbio for consistency 2011-11-06 03:11:21 -05:00
relocation.c
root-tree.c
scrub.c Btrfs: fix a potential btrfs_bio leak on scrub fixups 2011-11-06 03:11:29 -05:00
struct-funcs.c
super.c Btrfs: rework error handling in btrfs_mount() 2011-11-09 22:53:39 +02:00
sysfs.c
transaction.c Btrfs: fix race during transaction joins 2011-11-06 03:26:19 -05:00
transaction.h
tree-defrag.c
tree-log.c btrfs: separate superblock items out of fs_info 2011-11-06 03:04:01 -05:00
tree-log.h
version.h
volumes.c Btrfs: fix nocow when deleting the item 2011-11-10 20:45:04 -05:00
volumes.h Merge git://git.jan-o-sch.net/btrfs-unstable into integration 2011-11-06 03:07:10 -05:00
xattr.c
xattr.h
zlib.c