mirror of
https://github.com/ceph/ceph
synced 2025-02-23 02:57:21 +00:00
rgw: do not ignore EEXIST in RGWPutObj::execute
The existing logic appears able to cause propagation of a failed exclusive create to the client, when it should instead have been retried, due to disagreement about the logical write offset. (The value of ofs here could be > 0 due to the operation of a stacked write filter [e.g., compressor], when the RADOS write offset was 0 and hence an exclusive write that should be retried). Rationale for fix by Casey. http://tracker.ceph.com/issues/22790 Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
This commit is contained in:
parent
3e8ddaf301
commit
7c18258e54
@ -3635,7 +3635,7 @@ void RGWPutObj::execute()
|
||||
|
||||
op_ret = put_data_and_throttle(filter, data, ofs, need_to_wait);
|
||||
if (op_ret < 0) {
|
||||
if (!need_to_wait || op_ret != -EEXIST) {
|
||||
if (op_ret != -EEXIST) {
|
||||
ldpp_dout(this, 20) << "processor->thottle_data() returned ret="
|
||||
<< op_ret << dendl;
|
||||
goto done;
|
||||
|
Loading…
Reference in New Issue
Block a user