summaryrefslogtreecommitdiffstats
path: root/fs/ceph/caps.c
diff options
context:
space:
mode:
authorWang Shilong <wangsl.fnst@cn.fujitsu.com>2013-12-11 19:29:51 +0800
committerChris Mason <clm@fb.com>2013-12-12 07:12:20 -0800
commitc974c4642fee8c58239c7753d0bf548b23799923 (patch)
treea671a832030045d977a38ec25a84044fcbca5d1e /fs/ceph/caps.c
parent639eefc8afd1b8b839b1fd5605378d869d3612a1 (diff)
downloadop-kernel-dev-c974c4642fee8c58239c7753d0bf548b23799923.zip
op-kernel-dev-c974c4642fee8c58239c7753d0bf548b23799923.tar.gz
Btrfs: fix an oops when doing balance relocation
I hit an oops when inserting reloc root into @reloc_root_tree(it can be easily triggered when forcing cow for relocation root) [ 866.494539] [<ffffffffa0499579>] btrfs_init_reloc_root+0x79/0xb0 [btrfs] [ 866.495321] [<ffffffffa044c240>] record_root_in_trans+0xb0/0x110 [btrfs] [ 866.496109] [<ffffffffa044d758>] btrfs_record_root_in_trans+0x48/0x80 [btrfs] [ 866.496908] [<ffffffffa0494da8>] select_reloc_root+0xa8/0x210 [btrfs] [ 866.497703] [<ffffffffa0495c8a>] do_relocation+0x16a/0x540 [btrfs] This is because reloc root inserted into @reloc_root_tree is not within one transaction,reloc root may be cowed and root block bytenr will be reused then oops happens.We should update reloc root in @reloc_root_tree when cow reloc root node, fix it. Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com> Reviewed-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/ceph/caps.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud