Actions
Bug #38383
closedcompare-and-write skips compare after copyup without object map
% Done:
0%
Source:
Tags:
Backport:
luminous,mimic
Regression:
No
Severity:
3 - minor
Reviewed:
Description
With object map disabled, a copyup turns compare-and-write into an ordinary write. This is because ObjectOperation::cmpext() claims the passed buffer:
... ObjectCompareAndWriteRequest::add_write_ops(), m_cmp_bl is claimed ... [stat,set-alloc-hint object_size 4194304 write_size 4194304,cmpext 512~96,write 512~512] ... copyup, is_post_copyup_write_required() -> true ... ... ObjectCompareAndWriteRequest::add_write_ops(), m_cmp_bl is empty ... [stat,set-alloc-hint object_size 4194304 write_size 4194304,cmpext 512~0,write 512~512]
Since there is no data to compare with, nothing is read and cmpext returns success.
This doesn't happen when object map is enabled because we go straight to the copyup step in that case.
Actions