ceph: do not use i_wrbuffer_ref as refcount for Fb cap
authorHenry C Chang <henry.cy.chang@gmail.com>
Wed, 11 May 2011 10:29:54 +0000 (10:29 +0000)
committerSage Weil <sage@newdream.net>
Wed, 11 May 2011 17:44:48 +0000 (10:44 -0700)
commitd3d0720d4a7a46e93e055e5b0f1a8bd612743ed6
tree39d657139336012f05d7573116a0ba2405e85de7
parenta26a185d27b49e1656b335ef8ad1a32f7a0e7d7f
ceph: do not use i_wrbuffer_ref as refcount for Fb cap

We increments i_wrbuffer_ref when taking the Fb cap. This breaks
the dirty page accounting and causes looping in
__ceph_do_pending_vmtruncate, and ceph client hangs.

This bug can be reproduced occasionally by running blogbench.

Add a new field i_wb_ref to inode and dedicate it to Fb reference
counting.

Signed-off-by: Henry C Chang <henry.cy.chang@gmail.com>
Signed-off-by: Sage Weil <sage@newdream.net>
fs/ceph/caps.c
fs/ceph/inode.c
fs/ceph/super.h