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>
This commit is contained in:
@@ -355,6 +355,7 @@ struct inode *ceph_alloc_inode(struct super_block *sb)
|
||||
ci->i_rd_ref = 0;
|
||||
ci->i_rdcache_ref = 0;
|
||||
ci->i_wr_ref = 0;
|
||||
ci->i_wb_ref = 0;
|
||||
ci->i_wrbuffer_ref = 0;
|
||||
ci->i_wrbuffer_ref_head = 0;
|
||||
ci->i_shared_gen = 0;
|
||||
|
Reference in New Issue
Block a user