Bug #22546
client: 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.
Related issues
History
#1 Updated by dongdong tao over 6 years ago
#2 Updated by Jos Collin over 6 years ago
- Assignee set to dongdong tao
#3 Updated by Patrick Donnelly about 6 years ago
- Subject changed from dirty caps may never get the chance to flush to client: dirty caps may never get the chance to flush
- Status changed from New to Fix Under Review
- Backport set to luminous,jewel
- Component(FS) Client added
#4 Updated by Patrick Donnelly about 6 years ago
- Status changed from Fix Under Review to Pending Backport
#5 Updated by Nathan Cutler about 6 years ago
- Copied to Backport #22696: luminous: client: dirty caps may never get the chance to flush added
#6 Updated by Nathan Cutler about 6 years ago
- Copied to Backport #22697: jewel: client: dirty caps may never get the chance to flush added
#7 Updated by Patrick Donnelly over 5 years ago
- Status changed from Pending Backport to Resolved