ceph-fuse: Delete inode's bufferhead was in Tx state would lead a assert fail
Prematurely delted the bh which was in Tx state may lead the object can't
be closed before its writer of this bh callback. Thus if inode's ref call
put_inode decrease ref to zero and release inode's oset.An assert fail occur
beacuse the oset can't be emptied.
If gather.has_subs() is true, we can't call flush_set_callback() because
this would cause a double drop of FILE_CACHE | FILE_BUFFER.
Fixes:http://tracker.ceph.com/issues/23837
Signed-off-by: Guan yunfei <yunfei.guan@xtaotech.com>
(cherry picked from commit
07e3bceea78dc8ecd76abb1cafca5c9d1fde521e)