Actions
Bug #22546
closedclient: dirty caps may never get the chance to flush
% Done:
0%
Source:
Tags:
Backport:
luminous,jewel
Regression:
No
Severity:
2 - major
Reviewed:
Affected Versions:
ceph-qa-suite:
Component(FS):
Client
Labels (FS):
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
currently, we flush the caps in function Client::flush_caps_sync
but there is a bug in this funcion.
because the two list delayed_caps and cap_list shared the same inode item.
so one dirty inode should always exist in one of them, otherwise, the dirty caps would never be flushed.
but in this function, when we first pop an inode item out from the list "delayed_caps", and it was not added to cap_list
later maybe this inode got dirty caps again, and we call unmount/sync_fs -> flush_caps_sync.
this time that inode's dirty cap would not be flushed at all.
Actions