]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
ceph-fuse: Delete inode's bufferhead was in Tx state would lead a assert fail 21954/head
authorYunfeiGuan <yunfeiguan@xtaotech.com>
Tue, 8 May 2018 11:35:32 +0000 (19:35 +0800)
committerPatrick Donnelly <pdonnell@redhat.com>
Fri, 11 May 2018 22:13:50 +0000 (15:13 -0700)
commitede7817a36e7b10f01f906000ce3ed621c0fc358
tree10b3647ce92558f264bae9d777bcb711bcb1a302
parentdcde71c18c91435f3f2f8666c206e849137b13f0
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)
src/client/Client.cc
src/osdc/ObjectCacher.cc